YQ0NCgAAAABKGnxjp1oAAOMAAAAAAAAAAAAAAAAAAAAABAAAAEAAAABzVgEAAGQAWgBkAWQCbAFaAmQBZAJsA1oDZAFkAmwEWgRkAWQCbAVaBWQBZAJsBloHZAFkAmwIWghkAWQCbAlaCWQBZANsCm0LWgsBAGQBZARsDG0NWg0BAGQBZAVsAm0OWg4BAGQBZAZsD20QWhABAGQHZAhsEW0SWhIBAGQHZAlsE20UWhQBAGQHZApsE20VWhUBAGUHahZyrmQHZAtsF20YWhgBAGQHZAxsF20ZWhkBAGUaZQdqG2UaGQBkDZwCZA5kD4QEWhxHAGQQZBGEAGQRgwJaHUcAZBJkE4QAZBNlHYMDWh5HAGQUZBWEAGQVZR2DA1ofRwBkFmQXhABkF2UdgwNaIEcAZBhkGYQAZBllHYMDWiFHAGQaZBuEAGQbZR2DA1oiRwBkHGQdhABkHWUdgwNaI0cAZB5kH4QAZB9lEIMDWiRHAGQgZCGEAGQhZR2DA1olZAJTACkiektBUEkgYW5kIGltcGxlbWVudGF0aW9ucyBmb3IgbG9hZGluZyB0ZW1wbGF0ZXMgZnJvbSBkaWZmZXJlbnQgZGF0YQpzb3VyY2VzLgrpAAAAAE4pAdoDYWJjKQHaBHNoYTEpAdoNaW1wb3J0X21vZHVsZSkB2gpNb2R1bGVUeXBl6QEAAAApAdoQVGVtcGxhdGVOb3RGb3VuZCkB2gxpbnRlcm5hbGNvZGUpAdoOb3Blbl9pZl9leGlzdHMpAdoLRW52aXJvbm1lbnQpAdoIVGVtcGxhdGWpAtoIdGVtcGxhdGXaBnJldHVybmMBAAAAAAAAAAAAAAADAAAABAAAAEMAAABzZAAAAGcAfQF8AKAAZAGhAUQAXVB9AnQBagJqA3wCdgBzPnQBagJqBHIydAFqAmoEfAJ2AHM+fAJ0AWoCagVrAnJIdAZ8AIMBggFxDnwCcg58AmQCawNyDnwBoAd8AqEBAQBxDnwBUwApA3qJU3BsaXQgYSBwYXRoIGludG8gc2VnbWVudHMgYW5kIHBlcmZvcm0gYSBzYW5pdHkgY2hlY2suICBJZiBpdCBkZXRlY3RzCiAgICAnLi4nIGluIHRoZSBwYXRoIGl0IHdpbGwgcmFpc2UgYSBgVGVtcGxhdGVOb3RGb3VuZGAgZXJyb3IuCiAgICD6AS/aAS4pCNoFc3BsaXTaAm9z2gRwYXRo2gNzZXDaBmFsdHNlcNoGcGFyZGlycgcAAADaBmFwcGVuZCkDcg0AAADaBnBpZWNlc1oFcGllY2WpAHIZAAAA+ksvaG9tZS9obmkvVG9wbWV0YWxTZS1EUFMvdmVudi9saWIvcHl0aG9uMy45L3NpdGUtcGFja2FnZXMvamluamEyL2xvYWRlcnMucHnaE3NwbGl0X3RlbXBsYXRlX3BhdGgZAAAAcxwAAAAABAQBDgIK/wICBv4CAgr+AgMK/QIFCgEMAQwBchsAAABjAAAAAAAAAAAAAAAAAAAAAAkAAABAAAAAc4gAAABlAFoBZABaAmQBWgNkAloEZANlBWUGagdlBWUGaghlBRkAZQZqCGUGaglnAGUKZgIZABkAZgMZAGQEnANkBWQGhARaC2UGagxlBRkAZAecAWQIZAmEBFoNZQ5kD2QDZQVlBmoIZQZqD2UFZQZqEGYCGQAZAGQLZAycBGQNZA6EBYMBWhFkClMAKRDaCkJhc2VMb2FkZXJhvQMAAEJhc2VjbGFzcyBmb3IgYWxsIGxvYWRlcnMuICBTdWJjbGFzcyB0aGlzIGFuZCBvdmVycmlkZSBgZ2V0X3NvdXJjZWAgdG8KICAgIGltcGxlbWVudCBhIGN1c3RvbSBsb2FkaW5nIG1lY2hhbmlzbS4gIFRoZSBlbnZpcm9ubWVudCBwcm92aWRlcyBhCiAgICBgZ2V0X3RlbXBsYXRlYCBtZXRob2QgdGhhdCBjYWxscyB0aGUgbG9hZGVyJ3MgYGxvYWRgIG1ldGhvZCB0byBnZXQgdGhlCiAgICA6Y2xhc3M6YFRlbXBsYXRlYCBvYmplY3QuCgogICAgQSB2ZXJ5IGJhc2ljIGV4YW1wbGUgZm9yIGEgbG9hZGVyIHRoYXQgbG9va3MgdXAgdGVtcGxhdGVzIG9uIHRoZSBmaWxlCiAgICBzeXN0ZW0gY291bGQgbG9vayBsaWtlIHRoaXM6OgoKICAgICAgICBmcm9tIGppbmphMiBpbXBvcnQgQmFzZUxvYWRlciwgVGVtcGxhdGVOb3RGb3VuZAogICAgICAgIGZyb20gb3MucGF0aCBpbXBvcnQgam9pbiwgZXhpc3RzLCBnZXRtdGltZQoKICAgICAgICBjbGFzcyBNeUxvYWRlcihCYXNl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YCBwYWNrYWdlLgoKICAgIC4uIGNvZGUtYmxvY2s6OiBweXRob24KCiAgICAgICAgbG9hZGVyID0gUGFja2FnZUxvYWRlcigicHJvamVjdC51aSIsICJwYWdlcyIpCgogICAgT25seSBwYWNrYWdlcyBpbnN0YWxsZWQgYXMgZGlyZWN0b3JpZXMgKHN0YW5kYXJkIHBpcCBiZWhhdmlvcikgb3IKICAgIHppcC9lZ2cgZmlsZXMgKGxlc3MgY29tbW9uKSBhcmUgc3VwcG9ydGVkLiBUaGUgUHl0aG9uIEFQSSBmb3IKICAgIGludHJvc3BlY3RpbmcgZGF0YSBpbiBwYWNrYWdlcyBpcyB0b28gbGltaXRlZCB0byBzdXBwb3J0IG90aGVyCiAgICBpbnN0YWxsYXRpb24gbWV0aG9kcyB0aGUgd2F5IHRoaXMgbG9hZGVyIHJlcXVpcmVzLgoKICAgIFRoZXJlIGlzIGxpbWl0ZWQgc3VwcG9ydCBmb3IgOnBlcDpgNDIwYCBuYW1lc3BhY2UgcGFja2FnZXMuIFRoZQogICAgdGVtcGxhdGUgZGlyZWN0b3J5IGlzIGFzc3VtZWQgdG8gb25seSBiZSBpbiBvbmUgbmFtZXNwYWNlCiAgICBjb250cmlidXRvci4gWmlwIGZpbGVzIGNvbnRyaWJ1dGluZyB0byBhIG5hbWVzcGFjZSBhcmUgbm90CiAgICBzdXBwb3J0ZWQuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjAKICAgICAgICBObyBsb25nZXIgdXNlcyBgYHNldHVwdG9vbHNgYCBhcyBhIGRlcGVuZGVuY3kuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjAKICAgICAgICBMaW1pdGVkIFBFUCA0MjAgbmFtZXNwYWNlIHBhY2thZ2Ugc3VwcG9ydC4KICAgINoJdGVtcGxhdGVzckEAAAByNwAAAE4pBNoMcGFja2FnZV9uYW1l2gxwYWNrYWdlX3BhdGhyQwAAAHIOAAAAYwQAAAAAAAAAAAAAAAoAAAAFAAAAQwAAAHN4AQAAdABqAaACfAKhAaADdABqAWoEoQF9AnwCdABqAWoFawJyKGQBfQJuKHwCZABkAoUCGQB0AGoBagV0AGoBagQXAGsCclB8AmQCZACFAhkA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