Mw0NCitAfmNhFwAA4wAAAAAAAAAAAAAAAAQAAABAAAAAcz4AAABkAGQBbABtAVoBAQBkAmQDbAJtA1oDAQBkAmQEbARtBVoFAQBkBWcBWgZHAGQGZAWEAGQFZQeDA1oIZAdTACkI6QAAAAApAdoPYWJzb2x1dGVfaW1wb3J06QEAAAApAdoZZW5jb2RlX211bHRpcGFydF9mb3JtZGF0YSkB2gl1cmxlbmNvZGXaDlJlcXVlc3RNZXRob2RzYwAAAAAAAAAAAAAAAAQAAABAAAAAc04AAABlAFoBZABaAmQBWgNkAmQDZARkBWgEWgRkEmQHZAiEAVoFZBNkCmQLhAFaBmQUZAxkDYQBWgdkFWQOZA+EAVoIZBZkEGQRhAFaCWQGUwApF3IGAAAAYbcDAAAKICAgIENvbnZlbmllbmNlIG1peGluIGZvciBjbGFzc2VzIHdobyBpbXBsZW1lbnQgYSA6bWV0aDpgdXJsb3BlbmAgbWV0aG9kLCBzdWNoCiAgICBhcyA6Y2xhc3M6YHVybGxpYjMuSFRUUENvbm5lY3Rpb25Qb29sYCBhbmQKICAgIDpjbGFzczpgdXJsbGliMy5Qb29sTWFuYWdlcmAuCgogICAgUHJvdmlkZXMgYmVoYXZpb3IgZm9yIG1ha2luZyBjb21tb24gdHlwZXMgb2YgSFRUUCByZXF1ZXN0IG1ldGhvZHMgYW5kCiAgICBkZWNpZGVzIHdoaWNoIHR5cGUgb2YgcmVxdWVzdCBmaWVsZCBlbmNvZGluZyB0byB1c2UuCgogICAgU3BlY2lmaWNhbGx5LAoKICAgIDptZXRoOmAucmVxdWVzdF9lbmNvZGVfdXJsYCBpcyBmb3Igc2VuZGluZyByZXF1ZXN0cyB3aG9zZSBmaWVsZHMgYXJlCiAgICBlbmNvZGVkIGluIHRoZSBVUkwgKHN1Y2ggYXMgR0VULCBIRUFELCBERUxFVEUpLgoKICAgIDptZXRoOmAucmVxdWVzdF9lbmNvZGVfYm9keWAgaXMgZm9yIHNlbmRpbmcgcmVxdWVzdHMgd2hvc2UgZmllbGRzIGFyZQogICAgZW5jb2RlZCBpbiB0aGUgKmJvZHkqIG9mIHRoZSByZXF1ZXN0IHVzaW5nIG11bHRpcGFydCBvciB3d3ctZm9ybS11cmxlbmNvZGVkCiAgICAoc3VjaCBhcyBmb3IgUE9TVCwgUFVULCBQQVRDSCkuCgogICAgOm1ldGg6YC5yZXF1ZXN0YCBpcyBmb3IgbWFraW5nIGFueSBraW5kIG9mIHJlcXVlc3QsIGl0IHdpbGwgbG9vayB1cCB0aGUKICAgIGFwcHJvcHJpYXRlIGVuY29kaW5nIGZvcm1hdCBhbmQgdXNlIG9uZSBvZiB0aGUgYWJvdmUgdHdvIG1ldGhvZHMgdG8gbWFrZQogICAgdGhlIHJlcXVlc3QuCgogICAgSW5pdGlhbGl6ZXIgcGFyYW1ldGVyczoKCiAgICA6cGFyYW0gaGVhZGVyczoKICAgICAgICBIZWFkZXJzIHRvIGluY2x1ZGUgd2l0aCBhbGwgcmVxdWVzdHMsIHVubGVzcyBvdGhlciBoZWFkZXJzIGFyZSBnaXZlbgogICAgICAgIGV4cGxpY2l0bHkuCiAgICDaBkRFTEVURdoDR0VU2gRIRUFE2gdPUFRJT05TTmMCAAAAAAAAAAIAAAACAAAAQwAAAHMOAAAAfAFwBmkAfABfAGQAUwApAU4pAdoHaGVhZGVycykC2gRzZWxmcgsAAACpAHINAAAA+owvaG9tZS91ZXRsaHIvRG9jdW1lbnRzL1Nlcm1vUGxvdF9iYWNrZW5kL2RyYWZ0X1NSQU1fYmxhY2tib3gvVUVUUlZfRVNvQ192Mi92ZW52L2xpYjY0L3B5dGhvbjMuNi9zaXRlLXBhY2thZ2VzL3BpcC9fdmVuZG9yL3VybGxpYjMvcmVxdWVzdC5wedoIX19pbml0X18oAAAAcwIAAAAAAXoXUmVxdWVzdE1ldGhvZHMuX19pbml0X19UYwcAAAAAAAAACAAAAAIAAABLAAAAcwwAAAB0AGQBgwGCAWQAUwApAk56TUNsYXNzZXMgZXh0ZW5kaW5nIFJlcXVlc3RNZXRob2RzIG11c3QgaW1wbGVtZW50IHRoZWlyIG93biBgYHVybG9wZW5gYCBtZXRob2QuKQHaE05vdEltcGxlbWVudGVkRXJyb3IpCHIMAAAA2gZtZXRob2TaA3VybNoEYm9keXILAAAA2hBlbmNvZGVfbXVsdGlwYXJ02hJtdWx0aXBhcnRfYm91bmRhcnnaAmt3cg0AAAByDQAAAHIOAAAA2gd1cmxvcGVuKwAAAHMEAAAAAAoC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Y29kZWAgaXMgdXNlZCB3aXRoIHRoZQogICAgICAgICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnIGNvbnRlbnQgdHlwZS4KCiAgICAgICAgTXVsdGlwYXJ0IGVuY29kaW5nIG11c3QgYmUgdXNlZCB3aGVuIHBvc3RpbmcgZmlsZXMsIGFuZCBpdCdzIHJlYXNvbmFibHkKICAgICAgICBzYWZlIHRvIHVzZSBpdCBpbiBvdGhlciB0aW1lcyB0b28uIEhvd2V2ZXIsIGl0IG1heSBicmVhayByZXF1ZXN0CiAgICAgICAgc2lnbmluZywgc3VjaCBhcyB3aXRoIE9BdXRoLgoKICAgICAgICBTdXBwb3J0cyBhbiBvcHRpb25hbCBgYGZpZWxkc2BgIHBhcmFtZXRlciBvZiBrZXkvdmFsdWUgc3RyaW5ncyBBTkQKICAgICAgICBrZXkvZmlsZXR1cGxlLiBBIGZpbGV0dXBsZSBpcyBhIChmaWxlbmFtZSwgZGF0YSwgTUlNRSB0eXBlKSB0dXBsZSB3aGVyZQogICAgICAgIHRoZSBNSU1FIHR5cGUgaXMgb3B0aW9uYWwuIEZvciBleGFtcGxlOjoKCiAgICAgICAgICAgIGZpZWxkcyA9IHsKICAgICAgICAgICAgICAgICdmb28nOiAnYmFyJywKICAgICAgICAgICAgICAgICdmYWtlZmlsZSc6ICgnZm9vZmlsZS50eHQnLCAnY29udGVudHMgb2YgZm9vZmlsZScpLAogICAgICAgICAgICAgICAgJ3JlYWxmaWxlJzogKCdiYXJmaWxlLnR4dCcsIG9wZW4oJ3JlYWxmaWxlJykucmVhZCgpKSwKICAgICAgICAgICAgICAgICd0eXBlZGZpbGUnOiAoJ2JhemZpbGUuYmluJywgb3BlbignYmF6ZmlsZScpLnJlYWQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltYWdlL2pwZWcnKSwKICAgICAgICAgICAgICAgICdub25hbWVmaWxlJzogJ2NvbnRlbnRzIG9mIG5vbmFtZWZpbGUgZmllbGQnLAogICAgICAgICAgICB9CgogICAgICAgIFdoZW4gdXBsb2FkaW5nIGEgZmlsZSwgcHJvdmlkaW5nIGEgZmlsZW5hbWUgKHRoZSBmaXJzdCBwYXJhbWV0ZXIgb2YgdGhlCiAgICAgICAgdHVwbGUpIGlzIG9wdGlvbmFsIGJ1dCByZWNvbW1lbmRlZCB0byBiZXN0IG1pbWljIGJlaGF2aW9yIG9mIGJyb3dzZXJzLgoKICAgICAgICBOb3RlIHRoYXQgaWYgYGBoZWFkZXJzYGAgYXJlIHN1cHBsaWVkLCB0aGUgJ0NvbnRlbnQtVHlwZScgaGVhZGVyIHdpbGwKICAgICAgICBiZSBvdmVyd3JpdHRlbiBiZWNhdXNlIGl0IGRlcGVuZHMgb24gdGhlIGR5bmFtaWMgcmFuZG9tIGJvdW5kYXJ5IHN0cmluZwogICAgICAgIHdoaWNoIGlzIHVzZWQgdG8gY29tcG9zZSB0aGUgYm9keSBvZiB0aGUgcmVxdWVzdC4gVGhlIHJhbmRvbSBib3VuZGFyeQogICAgICAgIHN0cmluZyBjYW4gYmUgZXhwbGljaXRseSBzZXQgd2l0aCB0aGUgYGBtdWx0aXBhcnRfYm91bmRhcnlgYCBwYXJhbWV0ZXIuCiAgICAgICAgTnILAAAAchMAAAB6RnJlcXVlc3QgZ290IHZhbHVlcyBmb3IgYm90aCAnZmllbGRzJyBhbmQgJ2JvZHknLCBjYW4gb25seSBzcGVjaWZ5IG9uZS4pAdoIYm91bmRhcnl6IWFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZHoMQ29udGVudC1UeXBlKQZyCwAAANoJVHlwZUVycm9ycgQAAAByBQAAAHIgAAAAchcAAAApC3IMAAAAchEAAAByEgAAAHIYAAAAcgsAAAByFAAAAHIVAAAAch0AAAByIQAAAHITAAAAWgxjb250ZW50X3R5cGVyDQAAAHINAAAAcg4AAAByHAAAAGIAAABzIgAAAAAtCAEGAggCBAEIAQIBBgMEAQIBEAQGAQgDCAEMAg4BCgJ6IlJlcXVlc3RNZXRob2RzLnJlcXVlc3RfZW5jb2RlX2JvZHkpAU4pBE5OVE4pAk5OKQJOTikETk5UTikK2ghfX25hbWVfX9oKX19tb2R1bGVfX9oMX19xdWFsbmFtZV9f2gdfX2RvY19fchoAAAByDwAAAHIXAAAAch4AAAByGwAAAHIcAAAAcg0AAAByDQAAAHINAAAAcg4AAAByBgAAAAkAAABzGgAAAAgbBAIMAgoHAAEAAQABCggKGAoUAAEAAQABTikJ2gpfX2Z1dHVyZV9fcgIAAADaCGZpbGVwb3N0cgQAAABaH3BhY2thZ2VzLnNpeC5tb3Zlcy51cmxsaWIucGFyc2VyBQAAANoHX19hbGxfX9oGb2JqZWN0cgYAAAByDQAAAHINAAAAcg0AAAByDgAAANoIPG1vZHVsZT4BAAAAcwgAAAAMAgwBDAIGAw==