YQ0NCgAAAABGGnxj8jgBAOMAAAAAAAAAAAAAAAAAAAAACgAAAEAAAABzdgoAAGQAZAFsAFoAZABkAWwBWgFkAGQBbAJaAWQAZAFsA1oDZABkAWwEWgRkAGQBbAVaBWQAZAFsBloHZABkAWwIWghnAGQCogFaCWQDWgplC1oMZQ2DAFoOZQ5mAWQEZAWEAVoPZQVqEGQGawVydmQHZAiEAFoRbhxlBWoQZAlrBXKKZApkCIQAWhFuCGQLZAiEAFoRZMVkDGQNhAFaEmUIahNaE2UIoBRkDqEBWhVlCKAUZA+hAVoWZQigFGQQoQFaF2UIahRkEWQDZBKNAloYZQhqFGQTZANkFI0CWhllBWoQZBVrBXL0ZABkFmwIbRpaGgEAbiJHAGQXZBiEAGQYZQuDA1obRwBkGWQahABkGmUbZBuNA1oaZQhqHFocZR1lCGQcgwKQAXJEZQVqEGQBZB2FAhkAZB5rBZABckRlCGoeWh5uIkcAZB9kIIQAZCBlCGofZANkIY0EWiBlIGQcZCJkI40CWh5lBWoQZBVrBZABcnplCGohWiFuCGQkZCWEAFohZCZkJ4QAWiJlHWUIZCiDApABcp5lCGojWiNuIkcAZClkKoQAZCplCGofZANkIY0EWiRlJGQoZCtkI40CWiNlCGolWiVlHWUIZCyDApABcuZlCGomWiZlCGonWidlCGooWihuLGUBoCllA6AqZQFqKWUroQKhAVosZC1kLoQAWiZkL2QshABaJ2QwZDGEAFooZQhqLVotZQhqLlouZQhqL1ovZQhqMFowZQhqMVoxZQhqMloyZQhqM1ozZQhqNFo0ZQhqNVo1ZR1lCGQygwKQAnJcZQhqNlo2bhJlCKA3ZQFqNmUWZRdmAqECWjZlCGo4WjhlCGo5WjllCGo6WjplCGo7WjtlCGo8WjxlCGo9Wj1nAGQzogFaPmQ0ZDWEAFo/ZDZkN4QAWkBkOGQ5hABaQWUdZQhkOoMCkAJyxmUIakJaQm4sZDtkPIQAWkNHAGQ9ZD6EAGQ+ZQBqRIMDWkVHAGQ/ZDqEAGQ6ZUVkG40DWkJlHWUIZECDApADcgZlCGpGWkZuCGRBZECEAFpGZUZaR2UdZQhkQoMCkANyJmUIakhaSG4UZUZHAGRDZEKEAGRCZUKDA4MBWkhlHWUIZESDApADclplCGpJWkllCGpKWkplCGpLWktuemRFZEaEAFpMZEdkSIQAWk1kSWVNX05kA2RKnAFkS2RMhAJaT2RNZU9fTkcAZE5kT4QAZE9lC4MDWkplSmRQZStmAWkAgwNaSWVQZUlfUWRRZUlfUmUdZQhkT4MCkANyxmUIakplSmYCWlNuBmVKZgFaU2RSZFOEAFpLZR1lCGRUgwKQA3LoZQhqVFpUbghkVWRUhABaVGUdZQhkRIMCkARyBGUIalVaVW4iZABkAWwDWgNkAGQBbAZaBmRWZFeEAFpWZMZkWWRahAFaVWUdZQhkW4MCkARyQGUIaldaV2UIalhaWG4kRwBkXGRdhABkXWUIallkA2QhjQRaWEcAZF5kW4QAZFuDAlpXZQVqEGQBZB2FAhkAZAZrBZAEcoZlCGpaWlplCGpbWltuaHoQZABkX2wIbVxaXAEAVwBuGgQAZV2QBHmwAQABAAEAZQhqWVpcWQBuAjAAehBkAGRgbAhtXlpfAQBXAG4aBABlXZAEedwBAAEAAQBlCGpZWl9ZAG4CMABkYWRihABaWmRjZGSEAFpbZR1lCGRlgwKQBXICZQhqYFpgblplBWoQZAFkHYUCGQBkCWsFkAVyOkcAZGZkZ4QAZGdlCGofZANkIY0EWmFlYWRoZGWEAIMBWmBuIkcAZGlkZ4QAZGdlCGofZANkIY0EWmFlYWRlZGpkI40CWmBHAGRrZGyEAGRsgwJaYkcAZG1kboQAZG5lCGoUZWJkA2QhjQVaFGUdZQhkb4MCkAVynGUIamNaY2UIamRaZG4uRwBkcGRxhABkcYMCWmVHAGRyZG+EAGRvZWWDA1pjRwBkc2R0hABkdGVlgwNaZGUdZQhkdYMCkAVy8EcAZHZkdYQAZHVlCGpmZWJkA2QhjQVaZm4SRwBkd2R1hABkdWVnZWKDBFpmZR1lCGR4gwKQBnMeRwBkeWR6hABkemVngwNaaGUIamlke2R8hACDAVpqZR1lCGR4gwKQBnJGZQhqa1prZQhqaFpobkRlBWoQZAFkHYUCGQBkCWsFkAZyaGVhZH1keIQAgwFaa24iRwBkfmR/hABkf2UIah9kA2QhjQRabGVsZHhkgGQjjQJaa2UdZQhkgYMCkAZynmUIam1abW5aZQVqEGQBZB2FAhkAZAlrBZAGctZHAGSCZIOEAGSDZQhqH2QDZCGNBFpuZW5khGSBhACDAVptbiJHAGSFZIOEAGSDZQhqH2QDZCGNBFpuZW5kgWSGZCONAlptRwBkh2SIhABkiGUIam9kA2QhjQRaH2UdZQhkiYMCkAdyImUIanBacG4MZR9kimSJhACDAVpwZR1lCGSLgwKQB3JCZQhqcVpxbgxlH2SMZIuEAIMBWnFlHWUIZI2DApAHcmJlCGpyWnJuDGUfZI5kjYQAgwFacmUdZQhkRIMCkAdyiGUIanNac2UIanRadG5yZQVqEGQBZB2FAhkAZAlrBZAHcsxHAGSPZJCEAGSQZQhqH2QDZCGNBFp1ZXVkkWREhACDAVpzZXVkkmSThACDAVp0bi5HAGSUZJWEAGSVZQhqH2QDZCGNBFp2ZXZkRGSWZCONAlpzZXZkk2SXZCONAlp0ZR1lCGSYgwKQCHIOZQhqd1p3bpZlBWoQZAFkHYUCGQBkCWsFkAhyZEcAZJlkmoQAZJplCGofZANkIY0EWnhHAGSbZJyEAGScZQhqWWQDZCGNBFp5ZXhknWSYhACDAVp3ZJ5kn4QAWnpuQEcAZKBknIQAZJxlCGpZZANkIY0EWnlHAGShZKKEAGSiZQhqH2QDZCGNBFp7ZXtkmGSjZCONAlp3ZKRkn4QAWnplHWUIZKWDApAIcspHAGSmZKWEAGSlZQhqfGViZANkIY0FWnxuEEcAZKdkpYQAZKVlYoMDWnxlHWUIZKiDApAIcu5lCGp9Wn1uEGUVZRVkqZwCZKpkqIQEWn1lHWUIZKuDApAJchJlCGp+Wn5uEGVyZXJkrJwCZK1kq4QEWn5lHWUIZK6DApAJcjZlCGp/Wn9uWmQDZFhkWGSvZLCcBGWAZYBlgGUIaoFlCGqCZQhqLWUIahoZAGUIaoNksWUIahpmAhkAZgIZAGSxZgIZAGUIahplCGqDZRVnAWUVZgIZAGSynAZks2SuhAZaf2UdZQhktIMCkAlypGUIaoRahG4qZQhqFGS1ZQhqg2SxZQhqGmYCGQBkto0CWoVlhWWFZKycAmS3ZLSEBFqEZR1lCGSlgwKQCXPmZRJlCF8SZQ9lCF8PZQVqEGQVawWQCXL6ZQhqhlqGbnhkuGS5hABah2THZLpku4QBWohlCGqJWopli2gAZLyjAYMBWoxHAGS9ZL6EAGS+ZQuDA1qNZMhkv2TAhAFahmUIaoZqUmWGX1JlC6COZY1kwGSvaQChBFqPZQVqEGTBawWQCnJkZMJlhl9OZMNkxIQAWpBlkGWGX5FkAVMAKcnpAAAAAE4pONoDQW552ghDbGFzc1ZhctoLQ29uY2F0ZW5hdGXaBUZpbmFs2g1MaXRlcmFsU3RyaW5n2glQYXJhbVNwZWPaDVBhcmFtU3BlY0FyZ3PaD1BhcmFtU3BlY0t3YXJnc9oEU2VsZtoEVHlwZdoHVHlwZVZhctoMVHlwZVZhclR1cGxl2gZVbnBhY2vaCUF3YWl0YWJsZdoNQXN5bmNJdGVyYXRvctoNQXN5bmNJdGVyYWJsZdoJQ29yb3V0aW5l2g5Bc3luY0dlbmVyYXRvctoTQXN5bmNDb250ZXh0TWFuYWdlctoIQ2hhaW5NYXDaDkNvbnRleHRNYW5hZ2Vy2gdDb3VudGVy2gVEZXF1ZdoLRGVmYXVsdERpY3TaCk5hbWVkVHVwbGXaC09yZGVyZWREaWN02glUeXBlZERpY3TaDVN1cHBvcnRzSW5kZXjaCUFubm90YXRlZNoMYXNzZXJ0X25ldmVy2gthc3NlcnRfdHlwZdoPY2xlYXJfb3ZlcmxvYWRz2hNkYXRhY2xhc3NfdHJhbnNmb3Jt2g1nZXRfb3ZlcmxvYWRz2gVmaW5hbNoIZ2V0X2FyZ3PaCmdldF9vcmlnaW7aDmdldF90eXBlX2hpbnRz2gZJbnRWYXLaDGlzX3R5cGVkZGljdNoHTGl0ZXJhbNoHTmV3VHlwZdoIb3ZlcmxvYWTaCG92ZXJyaWRl2ghQcm90b2NvbNoLcmV2ZWFsX3R5cGXaB3J1bnRpbWXaEXJ1bnRpbWVfY2hlY2thYmxl2gRUZXh02glUeXBlQWxpYXPaCVR5cGVHdWFyZNoNVFlQRV9DSEVDS0lOR9oFTmV2ZXLaCE5vUmV0dXJu2ghSZXF1aXJlZNoLTm90UmVxdWlyZWRUYwMAAAAAAAAAAAAAAAUAAAAJAAAAQwAAAHPGAAAAfAJzEnQAfACbAGQBnQKDAYIBfAJ0AXUAckJ0AnwAZAKDAnIqfABqA3M4dAB8AJsAZAGdAoMBggF0BHwAagODAX0CdAR8AYMBfQN8A3wCawNywnQCfABkAoMCcpZkA2QEhAB8AGoDRACDAX0BdAVkBWQGhAB8AUQAgwGDAX0EfARkB2sEcpZ8A3wCfAQYAGsFcpZkCFMAdABkCXwDfAJrBHKmZApuAmQLmwBkDHwA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YWNjZXB0cyBvbmx5IGEgc2luZ2xlIHR5cGUuqQRyVAAAANoLX3R5cGVfY2hlY2tyiAAAAHJVAAAAqQNycwAAAHJOAAAA2gRpdGVtcjsAAAByOwAAAHJAAAAA2gtfX2dldGl0ZW1fX8YAAABzCAAAAAABBgEK/wQCehZfRmluYWxGb3JtLl9fZ2V0aXRlbV9fTqkFcnkAAAByegAAAHJ7AAAAcncAAAByjwAAAHI7AAAAcjsAAAByOwAAAHJAAAAAcoUAAADBAAAAcwQAAAAIAggDcoUAAAApAdoFX3Jvb3RhVwIAAEEgc3BlY2lhbCB0eXBpbmcgY29uc3RydWN0IHRvIGluZGljYXRlIHRoYXQgYSBuYW1lCiAgICAgICAgICAgICAgICAgICAgICAgY2Fubm90IGJlIHJlLWFzc2lnbmVkIG9yIG92ZXJyaWRkZW4gaW4gYSBzdWJjbGFzcy4KICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZToKCiAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BWF9TSVpFOiBGaW5hbCA9IDkwMDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFYX1NJWkUgKz0gMSAgIyBFcnJvciByZXBvcnRlZCBieSB0eXBlIGNoZWNrZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzIENvbm5lY3Rpb246CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FT1VUOiBGaW5hbFtpbnRdID0gMTAKICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgRmFzdENvbm5lY3RvcihDb25uZWN0aW9uKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVPVVQgPSAxICAjIEVycm9yIHJlcG9ydGVkIGJ5IHR5cGUgY2hlY2tlcgoKICAgICAgICAgICAgICAgICAgICAgICBUaGVyZSBpcyBubyBydW50aW1lIGNoZWNraW5nIG9mIHRoZXNlIHByb3BlcnRpZXMuKQHaA2RvY2MBAAAAAAAAAAAAAAABAAAACQAAAEMAAABzJgAAAHoKZAF8AF8AVwBuFgQAdAF0AmYCeSABAAEAAQBZAG4CMAB8AFMAKQJh+AIAAFRoaXMgZGVjb3JhdG9yIGNhbiBiZSB1c2VkIHRvIGluZGljYXRlIHRvIHR5cGUgY2hlY2tlcnMgdGhhdAogICAgICAgIHRoZSBkZWNvcmF0ZWQgbWV0aG9kIGNhbm5vdCBiZSBvdmVycmlkZGVuLCBhbmQgZGVjb3JhdGVkIGNsYXNzCiAgICAgICAgY2Fubm90IGJlIHN1YmNsYXNzZWQuIEZvciBleGFtcGxlOgoKICAgICAgICAgICAgY2xhc3MgQmFzZToKICAgICAgICAgICAgICAgIEBmaW5hbAogICAgICAgICAgICAgICAgZGVmIGRvbmUoc2VsZikgLT4gTm9uZToKICAgICAgICAgICAgICAgICAgICAuLi4KICAgICAgICAgICAgY2xhc3MgU3ViKEJhc2UpOgogICAgICAgICAgICAgICAgZGVmIGRvbmUoc2VsZikgLT4gTm9uZTogICMgRXJyb3IgcmVwb3J0ZWQgYnkgdHlwZSBjaGVja2VyCiAgICAgICAgICAgICAgICAgICAgLi4uCiAgICAgICAgICAgIEBmaW5hbAogICAgICAgICAgICBjbGFzcyBMZWFmOgogICAgICAgICAgICAgICAgLi4uCiAgICAgICAgICAgIGNsYXNzIE90aGVyKExlYWYpOiAgIyBFcnJvciByZXBvcnRlZCBieSB0eXBlIGNoZWNrZXIKICAgICAgICAgICAgICAgIC4uLgoKICAgICAgICBUaGVyZSBpcyBubyBydW50aW1lIGNoZWNraW5nIG9mIHRoZXNlIHByb3BlcnRpZXMuIFRoZSBkZWNvcmF0b3IKICAgICAgICBzZXRzIHRoZSBgYF9fZmluYWxfX2BgIGF0dHJpYnV0ZSB0byBgYFRydWVgYCBvbiB0aGUgZGVjb3JhdGVkIG9iamVjdAogICAgICAgIHRvIGFsbG93IHJ1bnRpbWUgaW50cm9zcGVjdGlvbi4KICAgICAgICBUKQNaCV9fZmluYWxfX9oOQXR0cmlidXRlRXJyb3JySAAAACkB2gFmcjsAAAByOwAAAHJAAAAAciQAAADgAAAAcwoAAAAAFgIBCgEQBAYBciQAAABjAQAAAAAAAAAAAAAAAQAAAAMAAABDAAAAcwoAAAB0AKABfAChAVMAckMAAAAp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cHRpb25hbFt0XSBpZiBhCiAgICAgICAgZGVmYXVsdCB2YWx1ZSBlcXVhbCB0byBOb25lIGlzIHNldCBhbmQgcmVjdXJzaXZlbHkgcmVwbGFjZXMgYWxsCiAgICAgICAgJ0Fubm90YXRlZFtULCAuLi5dJywgJ1JlcXVpcmVkW1RdJyBvciAnTm90UmVxdWlyZWRbVF0nIHdpdGggJ1QnCiAgICAgICAgKHVubGVzcyAnaW5jbHVkZV9leHRyYXM9VHJ1ZScpLgoKICAgICAgICBUaGUgYXJndW1lbnQgbWF5IGJlIGEgbW9kdWxlLCBjbGFzcywgbWV0aG9kLCBvciBmdW5jdGlvbi4gVGhlIGFubm90YXRpb25zCiAgICAgICAgYXJlIHJldHVybmVkIGFzIGEgZGljdGlvbmFyeS4gRm9yIGNsYXNzZXMsIGFubm90YXRpb25zIGluY2x1ZGUgYWxzbwogICAgICAgIGluaGVyaXRlZCBtZW1iZXJzLgoKICAgICAgICBUeXBlRXJyb3IgaXMgcmFpc2VkIGlmIHRoZSBhcmd1bWVudCBpcyBub3Qgb2YgYSB0eXBlIHRoYXQgY2FuIGNvbnRhaW4KICAgICAgICBhbm5vdGF0aW9ucywgYW5kIGFuIGVtcHR5IGRpY3Rpb25hcnkgaXMgcmV0dXJuZWQgaWYgbm8gYW5ub3RhdGlvbnMgYXJlCiAgICAgICAgcHJlc2VudC4KCiAgICAgICAgQkVXQVJFIC0tIHRoZSBiZWhhdmlvciBvZiBnbG9iYWxucyBhbmQgbG9jYWxucyBpcyBjb3VudGVyaW50dWl0aXZlCiAgICAgICAgKHVubGVzcyB5b3UgYXJlIGZhbWlsaWFyIHdpdGggaG93IGV2YWwoKSBhbmQgZXhlYygpIHdvcmspLiAgVGhlCiAgICAgICAgc2VhcmNoIG9yZGVyIGlzIGxvY2FscyBmaXJzdCwgdGhlbiBnbG9iYWxzLgoKICAgICAgICAtIElmIG5vIGRpY3QgYXJndW1lbnRzIGFyZSBwYXNzZWQsIGFuIGF0dGVtcHQgaXMgbWFkZSB0byB1c2UgdGhlCiAgICAgICAgICBnbG9iYWxzIGZyb20gb2JqIChvciB0aGUgcmVzcGVjdGl2ZSBtb2R1bGUncyBnbG9iYWxzIGZvciBjbGFzc2VzKSwKICAgICAgICAgIGFuZCB0aGVzZSBhcmUgYWxzbyB1c2VkIGFzIHRoZSBsb2NhbHMuICBJZiB0aGUgb2JqZWN0IGRvZXMgbm90IGFwcGVhcgogICAgICAgICAgdG8gaGF2ZSBnbG9iYWxzLCBhbiBlbXB0eSBkaWN0aW9uYXJ5IGlzIHVzZWQuCgogICAgICAgIC0gSWYgb25lIGRpY3QgYXJndW1lbnQgaXMgcGFzc2VkLCBpdCBpcyB1c2VkIGZvciBib3RoIGdsb2JhbHMgYW5kCiAgICAgICAgICBsb2NhbHMuCgogICAgICAgIC0gSWYgdHdvIGRpY3QgYXJndW1lbnRzIGFyZSBwYXNzZWQsIHRoZXkgc3BlY2lmeSBnbG9iYWxzIGFuZAogICAgICAgICAgbG9jYWxzLCByZXNwZWN0aXZlbHkuCiAgICAgICAgch4AAABUKQPaCGdsb2JhbG5z2gdsb2NhbG5z2g5pbmNsdWRlX2V4dHJhcykCci8BAAByMAEAAGMBAAAAAAAAAAAAAAADAAAABQAAAFMAAABzGgAAAGkAfABdElwCfQF9AnwBdAB8AoMBkwJxBFMAcjsAAAByJQEAACkDcj4AAADaAWtyWgAAAHI7AAAAcjsAAAByQAAAAHIXAQAAqAMAAHJCAAAAeiJnZXRfdHlwZV9oaW50cy48bG9jYWxzPi48ZGljdGNvbXA+KQRySgAAAHJUAAAAcicAAAByGwEAACkFcnQAAAByLwEAAHIwAQAAcjEBAADaBGhpbnRyOwAAAHI7AAAAckAAAAByJwAAAIADAABzEAAAAAAgCgEEAQj/CAQQAQQBBAFyJwAAAHIeAAAAYwAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAHNIAAAAZQBaAWQAWgJkAVoDhwBmAWQCZAOECFoEZARkBYQAWgVkBmQHhABaBmQIZAmEAFoHZApkC4QAWghkDGQNhABaCYcABABaClMAKQ5yKQEAAGFLAQAAUnVudGltZSByZXByZXNlbnRhdGlvbiBvZiBhbiBhbm5vdGF0ZWQgdHlwZS4KCiAgICAgICAgQXQgaXRzIGNvcmUgJ0Fubm90YXRlZFt0LCBkZWMxLCBkZWMyLCAuLi5dJyBpcyBhbiBhbGlhcyBmb3IgdGhlIHR5cGUgJ3QnCiAgICAgICAgd2l0aCBleHRyYSBhbm5vdGF0aW9ucy4gVGhlIGFsaWFzIGJlaGF2ZXMgbGlrZSBhIG5vcm1hbCB0eXBpbmcgYWxpYXMsCiAgICAgICAgaW5zdGFudGlhdGluZyBpcyB0aGUgc2FtZSBhcyBpbnN0YW50aWF0aW5nIHRoZSB1bmRlcmx5aW5nIHR5cGUsIGJpbmRpbmcKICAgICAgICBpdCB0byB0eXBlcyBpcyBhbHNvIHRoZSBzYW1lLgogICAgICAgIGMDAAAAAAAAAAAAAAADAAAABAAAAAMAAABzMgAAAHQAfAF0AYMCchp8AWoCfAIXAH0CfAFqA30BdASDAKAFfAF8AaECAQB8AnwAXwJkAFMAckMAAAApBnJEAAAAcikBAADaDF9fbWV0YWRhdGFfX3K2AAAAcnAAAAByuQAAACkDcnMAAADaBm9yaWdpbtoIbWV0YWRhdGFydQAAAHI7AAAAckAAAAByuQAAALsDAABzCgAAAAABCgEKAQYBDgF6GF9Bbm5vdGF0ZWRBbGlhcy5fX2luaXRfX2MCAAAAAAAAAAAAAAADAAAAAwAAAEMAAABzJAAAAHQAfAGDAWQBawJzEEoAggF8AWQCGQB9AnQBfAJ8AGoCgwJTACkDTnLjAAAAcgEAAAApA3JLAAAAcikBAAByNAEAACkDcnMAAABy5QAAANoIbmV3X3R5cGVyOwAAAHI7AAAAckAAAAByKgEAAMIDAABzBgAAAAABEAEIAXoZX0Fubm90YXRlZEFsaWFzLmNvcHlfd2l0aGMBAAAAAAAAAAAAAAABAAAABwAAAEMAAABzLAAAAGQBdACgAXwAagKhAZsAZAJkAqADZANkBIQAfABqBEQAgwGhAZsAZAWdBVMAKQZOehx0eXBpbmdfZXh0ZW5zaW9ucy5Bbm5vdGF0ZWRbcsoAAABjAQAAAAAAAAAAAAAAAgAAAAMAAABzAAAAcxYAAAB8AF0OfQF0AHwBgwFWAAEAcQJkAFMAckMAAAApAXL3AAAAcicBAAByOwAAAHI7AAAAckAAAAByRQAAAMkDAAByQgAAAHorX0Fubm90YXRlZEFsaWFzLl9fcmVwcl9fLjxsb2NhbHM+LjxnZW5leHByPnLRAAAAKQVyVAAAANoKX3R5cGVfcmVwcnK2AAAActIAAAByNAEAAHJ4AAAAcjsAAAByOwAAAHJAAAAAcncAAADHAwAAcwYAAAAAARABFP96GF9Bbm5vdGF0ZWRBbGlhcy5fX3JlcHJfX2MBAAAAAAAAAAAAAAABAAAABAAAAEMAAABzGAAAAHQAagF0AnwAagNmAXwAagQXAGYCZgJTAHJDAAAAKQVyLAEAANoHZ2V0aXRlbXIeAAAAcrYAAAByNAEAAHJ4AAAAcjsAAAByOwAAAHJAAAAA2gpfX3JlZHVjZV9fywMAAHMGAAAAAAEEAQ7/ehpfQW5ub3RhdGVkQWxpYXMuX19yZWR1Y2VfX2MCAAAAAAAAAAAAAAACAAAAAwAAAEMAAABzKgAAAHQAfAF0AYMCcw50AlMAfABqA3wBagNrA3IeZAFTAHwAagR8AWoEawJTACkCTkYpBXJEAAAAcikBAABy7AAAAHK2AAAAcjQBAACpAnJzAAAAcvEAAAByOwAAAHI7AAAAckAAAADaBl9fZXFfX9ADAABzCgAAAAABCgEEAQwBBAF6Fl9Bbm5vdGF0ZWRBbGlhcy5fX2VxX19jAQAAAAAAAAAAAAAAAQAAAAMAAABDAAAAcxAAAAB0AHwAagF8AGoCZgKDAVMAckMAAAApA9oEaGFzaHK2AAAAcjQBAAByeAAAAHI7AAAAcjsAAAByQAAAANoIX19oYXNoX1/XAwAAcwIAAAAAAXoYX0Fubm90YXRlZEFsaWFzLl9faGFzaF9fKQtyeQAAAHJ6AAAAcnsAAABygQAAAHK5AAAAcioBAABydwAAAHI6AQAAcjwBAAByPgEAAHJ8AAAAcjsAAAByOwAAAHJ1AAAAckAAAAByKQEAALMDAABzDgAAAAgBBAcMBwgFCAQIBQgHcikBAABjAAAAAAAAAAAAAAAAAAAAAAMAAABAAAAAczIAAABlAFoBZABaAmQBWgNkAloEZANkBIQAWgVlBmoHZAVkBoQAgwFaCGQHZAiEAFoJZAlTACkKch4AAABhoQQAAEFkZCBjb250ZXh0IHNwZWNpZmljIG1ldGFkYXRhIHRvIGEgdHlwZS4KCiAgICAgICAgRXhhbXBsZTogQW5ub3RhdGVkW2ludCwgcnVudGltZV9jaGVjay5VbnNpZ25lZF0gaW5kaWNhdGVzIHRvIHRoZQogICAgICAgIGh5cG90aGV0aWNhbCBydW50aW1lX2NoZWNrIG1vZHVsZSB0aGF0IHRoaXMgdHlwZSBpcyBhbiB1bnNpZ25lZCBpbnQuCiAgICAgICAgRXZlcnkgb3RoZXIgY29uc3VtZXIgb2YgdGhpcyB0eXBlIGNhbiBpZ25vcmUgdGhpcyBtZXRhZGF0YSBhbmQgdHJlYXQKICAgICAgICB0aGlzIHR5cGUgYXMgaW50LgoKICAgICAgICBUaGUgZmlyc3QgYXJndW1lbnQgdG8gQW5ub3RhdGVkIG11c3QgYmUgYSB2YWxpZCB0eXBlIChhbmQgd2lsbCBiZSBpbgogICAgICAgIHRoZSBfX29yaWdpbl9fIGZpZWxkKSwgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIGtlcHQgYXMgYSB0dXBsZSBpbgogICAgICAgIHRoZSBfX2V4dHJhX18gZmllbGQuCgogICAgICAgIERldGFpbHM6CgogICAgICAgIC0gSXQncyBhbiBlcnJvciB0byBjYWxsIGBBbm5vdGF0ZWRgIHdpdGggbGVzcyB0aGFuIHR3byBhcmd1bWVudHMuCiAgICAgICAgLSBOZXN0ZWQgQW5ub3RhdGVkIGFyZSBmbGF0dGVuZWQ6OgoKICAgICAgICAgICAgQW5ub3RhdGVkW0Fubm90YXRlZFtULCBBbm4xLCBBbm4yXSwgQW5uM10gPT0gQW5ub3RhdGVkW1QsIEFubjEsIEFubjIsIEFubjNdCgogICAgICAgIC0gSW5zdGFudGlhdGluZyBhbiBhbm5vdGF0ZWQgdHlwZSBpcyBlcXVpdmFsZW50IHRvIGluc3RhbnRpYXRpbmcgdGhlCiAgICAgICAgdW5kZXJseWluZyB0eXBlOjoKCiAgICAgICAgICAgIEFubm90YXRlZFtDLCBBbm4xXSg1KSA9PSBDKDUpCgogICAgICAgIC0gQW5ub3RhdGVkIGNhbiBiZSB1c2VkIGFzIGEgZ2VuZXJpYyB0eXBlIGFsaWFzOjoKCiAgICAgICAgICAgIE9wdGltaXplZCA9IEFubm90YXRlZFtULCBydW50aW1lLk9wdGltaXplKCldCiAgICAgICAgICAgIE9wdGltaXplZFtpbnRdID09IEFubm90YXRlZFtpbnQsIHJ1bnRpbWUuT3B0aW1pemUoKV0KCiAgICAgICAgICAgIE9wdGltaXplZExp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c3BlY2lmaWNhdGlvbiB2YXJpYWJsZXMgZXhpc3QgcHJpbWFyaWx5IGZvciB0aGUgYmVuZWZpdCBvZiBzdGF0aWMKICAgICAgICB0eXBlIGNoZWNrZXJzLiAgVGhleSBhcmUgdXNlZCB0byBmb3J3YXJkIHRoZSBwYXJhbWV0ZXIgdHlwZXMgb2Ygb25lCiAgICAgICAgY2FsbGFibGUgdG8gYW5vdGhlciBjYWxsYWJsZSwgYSBwYXR0ZXJuIGNvbW1vbmx5IGZvdW5kIGluIGhpZ2hlciBvcmRlcgogICAgICAgIGZ1bmN0aW9ucyBhbmQgZGVjb3JhdG9ycy4gIFRoZXkgYXJlIG9ubHkgdmFsaWQgd2hlbiB1c2VkIGluIGBgQ29uY2F0ZW5hdGVgYCwKICAgICAgICBvciBzIHRoZSBmaXJzdCBhcmd1bWVudCB0byBgYENhbGxhYmxlYGAuIEluIFB5dGhvbiAzLjEwIGFuZCBoaWdoZXIsCiAgICAgICAgdGhleSBhcmUgYWxzbyBzdXBwb3J0ZWQgaW4gdXNlci1kZWZpbmVkIEdlbmVyaWNzIGF0IHJ1bnRpbWUuCiAgICAgICAgU2VlIGNsYXNzIEdlbmVyaWMgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gZ2VuZXJpYyB0eXBlcy4gIEFuCiAgICAgICAgZXhhbXBsZSBmb3IgYW5ub3RhdGluZyBhIGRlY29yYXRvcjo6CgogICAgICAgICAgIFQgPSBUeXBlVmFyKCdUJykKICAgICAgICAgICBQID0gUGFyYW1TcGVjKCdQJykKCiAgICAgICAgICAgZGVmIGFkZF9sb2dnaW5nKGY6IENhbGxhYmxlW1AsIFRdKSAtPiBDYWxsYWJsZVtQLCBUXToKICAgICAgICAgICAgICAgJycnQSB0eXBlLXNhZmUgZGVjb3JhdG9yIHRvIGFkZCBsb2dnaW5nIHRvIGEgZnVuY3Rpb24uJycnCiAgICAgICAgICAgICAgIGRlZiBpbm5lcigqYXJnczogUC5hcmdzLCAqKmt3YXJnczogUC5rd2FyZ3MpIC0+IFQ6CiAgICAgICAgICAgICAgICAgICBsb2dnaW5nLmluZm8oZid7Zi5fX25hbWVfX30gd2FzIGNhbGxlZCcpCiAgICAgICAgICAg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ICAgICBgYFR5cGVHdWFyZGBgIGFpbXMgdG8gYmVuZWZpdCAqdHlwZSBuYXJyb3dpbmcqIC0tIGEgdGVjaG5pcXVlIHVzZWQgYnkgc3RhdGljCiAgICAgICAgdHlwZSBjaGVja2VycyB0byBkZXRlcm1pbmUgYSBtb3JlIHByZWNpc2UgdHlwZSBvZiBhbiBleHByZXNzaW9uIHdpdGhpbiBhCiAgICAgICAgcHJvZ3JhbSdzIGNvZGUgZmxvdy4gIFVzdWFsbHkgdHlwZSBuYXJyb3dpbmcgaXMgZG9uZSBieSBhbmFseXppbmcKICAgICAgICBjb25kaXRpb25hbCBjb2RlIGZsb3cgYW5kIGFwcGx5aW5nIHRoZSBuYXJyb3dpbmcgdG8gYSBibG9jayBvZiBjb2RlLiAgVGhlCiAgICAgICAgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBoZXJlIGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyBhICJ0eXBlIGd1YXJkIi4KCiAgICAgICAgU29tZXRpbWVzIGl0IHdvdWxkIGJlIGNvbnZlbmllbnQgdG8gdXNlIGEgdXNlci1kZWZpbmVkIGJvb2xlYW4gZnVuY3Rpb24KICAgICAgICBhcyBhIHR5cGUgZ3VhcmQuICBTdWNoIGEgZnVuY3Rpb24gc2hvdWxkIHVzZSBgYFR5cGVHdWFyZFsuLi5dYGAgYXMgaXRzCiAgICAgICAgcmV0dXJuIHR5cGUgdG8gYWxlcnQgc3RhdGljIHR5cGUgY2hlY2tlcnMgdG8gdGhpcyBpbnRlbnRpb24uCgogICAgICAgIFVzaW5nICBgYC0+IFR5cGVHdWFyZGBgIHRlbGxzIHRoZSBzdGF0aWMgdHlwZSBjaGVja2VyIHRoYXQgZm9yIGEgZ2l2ZW4KICAgICAgICBmdW5jdGlvbjoKCiAgICAgICAgMS4gVGhlIHJldHVybiB2YWx1ZSBpcyBhIGJvb2xlYW4uCiAgICAgICAgMi4gSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBgYFRydWVgYCwgdGhlIHR5cGUgb2YgaXRzIGFyZ3VtZW50CiAgICAgICAgaXMgdGhlIHR5cGUgaW5zaWRlIGBgVHlwZUd1YXJkYGAuCgogICAgICAgIEZvciBleGFtcGxlOjoKCiAgICAgICAgICAgIGRlZiBpc19zdHIodmFsOiBVbmlvbltzdHIsIGZsb2F0XSk6CiAgICAgICAgICAgICAgICAjICJpc2luc3RhbmNlIiB0eXBlIGd1YXJkCiAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbCwgc3RyKToKICAgICAgICAgICAgICAgICAgICAjIFR5cGUgb2YgYGB2YWxgYCBpcyBuYXJyb3dlZCB0byBgYHN0cmBgCiAgICAgICAgICAgICAgICAgICAgLi4uCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICMgRWxzZSwgdHlwZSBvZiBgYHZhbGBgIGlzIG5hcnJvd2VkIHRvIGBgZmxvYXRgYC4KICAgICAgICAgICAgICAgICAgICAuLi4KCiAgICAgICAgU3RyaWN0IHR5cGUgbmFycm93aW5nIGlzIG5vdCBlbmZvcmNlZCAtLSBgYFR5cGVCYGAgbmVlZCBub3QgYmUgYSBuYXJyb3dlcgogICAgICAgIGZvcm0gb2YgYGBUeXBlQWBgIChpdCBjYW4gZXZlbiBiZSBhIHdpZGVyIGZvcm0pIGFuZCB0aGlzIG1heSBsZWFkIHRvCiAgICAgICAgdHlwZS11bnNhZmUgcmVzdWx0cy4gIFRoZSBtYWluIHJlYXNvbiBpcyB0byBhbGxvdyBmb3IgdGhpbmdzIGxpa2UKICAgICAgICBuYXJyb3dpbmcgYGBMaXN0W29iamVjdF1gYCB0byBgYExpc3Rbc3RyXWBgIGV2ZW4gdGhvdWdoIHRoZSBsYXR0ZXIgaXMgbm90CiAgICAgICAgYSBzdWJ0eXBlIG9mIHRoZSBmb3JtZXIsIHNpbmNlIGBgTGlzdGBgIGlzIGludmFyaWFudC4gIFRoZSByZXNwb25zaWJpbGl0eSBvZgogICAgICAgIHdyaXRpbmcgdHlwZS1zYWZlIHR5cGUgZ3VhcmRzIGlzIGxlZnQgdG8gdGhlIHVzZXIuCgogICAgICAgIGBgVHlwZUd1YXJkYGAgYWxzbyB3b3JrcyB3aXRoIHR5cGUgdmFyaWFibGVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZQogICAgICAgIFBFUCA2NDcgKFVzZXIt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ICAgICAgICAgICAgICAgICAgICBjYXNlIGludCgpOgogICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiSXQncyBhbiBpbnQiKQogICAgICAgICAgICAgICAgICAgIGNhc2Ugc3RyKCk6CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJJdCdzIGEgc3RyIikKICAgICAgICAgICAgICAgICAgICBjYXNlIF86CiAgICAgICAgICAgICAgICAgICAgICAgIG5ldmVyX2NhbGxfbWUoYXJnKSAgIyBvaywgYXJnIGlzIG9mIHR5cGUgTmV2ZXIKCiAgICAgICAgckkBAABOcj8BAABygAEAAHI7AAAAcjsAAAByQAAAAHI2AAAAigYAAHMCAAAAABhjAAAAAAAAAAAAAAAAAAAAAAIAAABAAAAAcxQAAABlAFoBZABaAmQBZAKEAFoDZANTACkE2hZfRXh0ZW5zaW9uc1NwZWNpYWxGb3JtYwEAAAAAAAAAAAAAAAEAAAACAAAAQwAAAHMKAAAAZAF8AGoAFwBTAHKGAAAAcocAAAByeAAAAHI7AAAAcjsAAAByQAAAAHJ3AAAAqgYAAHMCAAAAAAF6H19FeHRlbnNpb25zU3BlY2lhbEZvcm0uX19yZXByX19OckgBAAByOwAAAHI7AAAAcjsAAAByQAAAAHKBAQAAqQYAAHMCAAAACAFygQEAAGMCAAAAAAAAAAAAAAADAAAABQAAAEMAAABzIgAAAHQAoAF8AXwAagKbAGQBnQKhAn0CdACgA3wAfAJmAaECUwApAuHqAQAAQSBzcGVjaWFsIHR5cGluZyBjb25zdHJ1Y3QgdG8gbWFyayBhIGtleSBvZiBhIHRvdGFsPUZhbHNlIFR5cGVkRGljdAogICAgICAgIGFzIHJlcXVpcmVkLiBGb3IgZXhhbXBsZToKCiAgICAgICAgICAgIGNsYXNzIE1vdmllKFR5cGVkRGljdCwgdG90YWw9RmFsc2UpOgogICAgICAgICAgICAgICAgdGl0bGU6IFJlcXVpcmVkW3N0cl0KICAgICAgICAgICAgICAgIHllYXI6IGludAoKICAgICAgICAgICAgbSA9IE1vdmllKAogICAgICAgICAgICAgICAgdGl0bGU9J1RoZSBNYXRyaXgnLCAgIyB0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YGAsCiAgICAgICAgd2hlcmUgYGBUMWBgIGFuZCBgYFQyYGAgYXJlIHR5cGUgdmFyaWFibGVzLiBUbyB1c2UgdGhlc2UgdHlwZSB2YXJpYWJsZXMKICAgICAgICBhcyB0eXBlIHBhcmFtZXRlcnMgb2YgYGBBcnJheWBgLCB3ZSBtdXN0ICp1bnBhY2sqIHRoZSB0eXBlIHZhcmlhYmxlIHR1cGxlIHVzaW5nCiAgICAgICAgdGhlIHN0YXIgb3BlcmF0b3I6IGBgKlRzYGAuIFRoZSBzaWduYXR1cmUgb2YgYGBBcnJheWBgIHRoZW4gYmVoYXZlcwogICAgICAgIGFzIGlmIHdlIGhhZCBzaW1wbHkgd3JpdHRlbiBgYGNsYXNzIEFycmF5KEdlbmVyaWNbVDEsIFQyXSk6IC4uLmBgLgogICAgICAgIEluIGNvbnRyYXN0IHRvIGBgR2VuZXJpY1tUMSwgVDJdYGAsIGhvd2V2ZXIsIGBgR2VuZXJpY1sqU2hhcGVdYGAgYWxsb3dzCiAgICAgICAgdXMgdG8gcGFyYW1ldGVyaXNlIHRoZSBjbGFzcyB3aXRoIGFuICphcmJpdHJhcnkqIG51bWJlciBvZiB0eXBlIHBhcmFtZXRlcnMuCgogICAgICAgIFR5cGUgdmFyaWFibGUgdHVwbGVzIGNhbiBiZSB1c2VkIGFueXdoZXJlIGEgbm9ybWFsIGBgVHlwZVZhcmBgIGNhbi4KICAgICAgICBUaGlzIGluY2x1ZGVzIGNsYXNzIGRlZmluaXRpb25zLCBhcyBzaG93biBhYm92ZSwgYXMgd2VsbCBhcyBmdW5jdGlvbgogICAgICAgIHNpZ25hdHVyZXMgYW5kIHZhcmlhYmxlIGFubm90YXRpb25zOjoKCiAgICAgICAgICAgIGNsYXNzIEFycmF5KEdlbmVyaWNbKlRzXSk6CgogICAgICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNoYXBlOiBUdXBsZVsqVHNdKToKICAgICAgICAgICAgICAgICAgICBzZWxmLl9zaGFwZTogVHVwbGVbKlRzXSA9IHNoYXBlCgogICAgICAgICAgICAgICAgZGVmIGdldF9zaGFwZShzZWxmKSAtPiBUdXBsZVsqVHNdOgogICAgICAgICAgICAg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biB0aGlzIGV4YW1wbGUKICAgICAgICB3aWxsIHByb2R1Y2Ugb3V0cHV0IHNpbWlsYXIgdG8gJ1JldmVhbGVkIHR5cGUgaXMgImJ1aWx0aW5zLmludCInLgoKICAgICAgICBBdCBydW50aW1lLCB0aGUgZnVuY3Rpb24gcHJpbnRzIHRoZSBydW50aW1lIHR5cGUgb2YgdGhlCiAgICAgICAgYXJndW1lbnQgYW5kIHJldHVybnMgaXQgdW5jaGFuZ2VkLgoKICAgICAgICB6EFJ1bnRpbWUgdHlwZSBpcyApAdoEZmlsZSkF2gVwcmludHLYAAAAcnkAAABy7QAAANoGc3RkZXJyKQFylAEAAHI7AAAAcjsAAAByQAAAAHIvAAAAngcAAHMEAAAAABAaAXIfAAAAKQLaBV9fYXJncvsAAABjAQAAAAAAAAAAAAAAAQAAAAIAAABDAAAAcwwAAAB0AGQBgwGCAWQCUwApA2ExAgAAQXNzZXJ0IHRvIHRoZSB0eXBlIGNoZWNrZXIgdGhhdCBhIGxpbmUgb2YgY29kZSBpcyB1bnJlYWNoYWJsZS4KCiAgICAgICAgRXhhbXBsZTo6CgogICAgICAgICAgICBkZWYgaW50X29yX3N0cihhcmc6IGludCB8IHN0cikgLT4gTm9uZToKICAgICAgICAgICAgICAgIG1hdGNoIGFyZzoKICAgICAgICAgICAgICAgICAgICBjYXNlIGludCgpOgogICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiSXQncyBhbiBpbnQiKQogICAgICAgICAgICAgICAgICAgIGNhc2Ugc3RyKCk6CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJJdCdzIGEgc3RyIikKICAgICAgICAgICAgICAgICAgICBjYXNlIF86CiAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF9uZXZlcihhcmcpCgogICAgICAgIElmIGEgdHlwZSBjaGVja2VyIGZpbmRzIHRoYXQgYSBjYWxsIHRvIGFzc2VydF9uZXZlcigpIGlzCiAgICAgICAgcmVhY2hhYmxlLCBpdCB3aWxsIGVtaXQgYW4gZXJyb3IuCgogICAgICAgIEF0IHJ1bnRpbWUsIHRoaXMgdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGVuIGNhbGxlZC4KCiAgICAgICAgeh9FeHBlY3RlZCBjb2RlIHRvIGJlIHVucmVhY2hhYmxlTikB2g5Bc3NlcnRpb25FcnJvcqkBcpgBAAByOwAAAHI7AAAAckAAAAByHwAAALUHAABzAgAAAAAUciIAAAByOwAAACkE2gplcV9kZWZhdWx02g1vcmRlcl9kZWZhdWx02g9rd19vbmx5X2RlZmF1bHTaEGZpZWxkX3NwZWNpZmllcnMuKQZymwEAAHKcAQAAcp0BAAByngEAAHKAAAAAcvsAAABjAAAAAAAAAAAEAAAABgAAAAUAAAALAAAAcxgAAACHAIcBhwKHA4cEZgVkAWQChAh9BXwFUwApA2EgCAAARGVjb3JhdG9yIHRoYXQgbWFya3MgYSBmdW5jdGlvbiwgY2xhc3MsIG9yIG1ldGFjbGFzcyBhcyBwcm92aWRpbmcKICAgICAgICBkYXRhY2xhc3MtbGlrZSBiZWhhdmlvci4KCiAgICAgICAgRXhhbXBsZToKCiAgICAgICAgICAgIGZyb20gcGlwLl92ZW5kb3IudHlwaW5nX2V4dGVuc2lvbnMgaW1wb3J0IGRhdGFjbGFzc190cmFuc2Zvcm0KCiAgICAgICAgICAgIF9UID0gVHlwZVZhcigiX1QiKQoKICAgICAgICAgICAgIyBVc2VkIG9uIGEgZGVjb3JhdG9yIGZ1bmN0aW9uCiAgICAgICAgICAgIEBkYXRhY2xhc3NfdHJhbnNmb3JtKCkKICAgICAgICAgICAgZGVmIGNyZWF0ZV9tb2RlbChjbHM6IHR5cGVbX1RdKSAtPiB0eXBlW19UXToKICAgICAgICAgICAgICAgIC4uLgogICAgICAgICAgICAgICAgcmV0dXJuIGNscwoKICAgICAgICAgICAgQGNyZWF0ZV9tb2RlbAogICAgICAgICAgICBjbGFzcyBDdXN0b21lck1vZGVsOgogICAgICAgICAgICAgICAgaWQ6IGludAogICAgICAgICAgICAgICAgbmFtZTogc3RyCgogICAgICAgICAgICAjIFVzZWQgb24gYSBiYXNlIGNsYXNzCiAgICAgICAgICAgIEBkYXRhY2xhc3NfdHJhbnNmb3JtKCkKICAgICAgICAgICAgY2xhc3MgTW9kZWxCYXNlOiAuLi4KCiAgICAgICAgICAgIGNsYXNzIEN1c3RvbWVyTW9kZWwoTW9kZWxCYXNlKToKICAgICAgICAgICAgICAgIGlkOiBpbnQKICAgICAgICAgICAgICAgIG5hbWU6IHN0cgoKICAgICAgICAgICAgIyBVc2VkIG9uIGEgbWV0YWNsYXNzCiAgICAgICAgICAgIEBkYXRhY2xhc3NfdHJhbnNmb3JtKCkKICAgICAgICAgICAgY2xhc3MgTW9kZWxNZXRhKHR5cGUpOiAuLi4KCiAgICAgICAgICAgIGNsYXNzIE1vZGVsQmFzZShtZXRhY2xhc3M9TW9kZWxNZXRhKTogLi4uCgogICAgICAgICAgICBjbGFzcyBDdXN0b21lck1vZGVsKE1vZGVsQmFzZSk6CiAgICAgICAgICAgICAgICBpZDogaW50CiAgICAgICAgICAgICAgICBuYW1lOiBzdHIKCiAgICAgICAgRWFjaCBvZiB0aGUgYGBDdXN0b21lck1vZGVsYGAgY2xhc3NlcyBkZWZpbmVkIGluIHRoaXMgZXhhbXBsZSB3aWxsIG5vdwogICAgICAgIGJlaGF2ZSBzaW1pbGFybHkgdG8gYSBkYXRhY2xhc3MgY3JlYXRlZCB3aXRoIHRoZSBgYEBkYXRhY2xhc3Nlcy5kYXRhY2xhc3NgYAogICAgICAgIGRlY29yYXRvci4gRm9yIGV4YW1wbGUsIHRoZSB0eXBlIGNoZWNrZXIgd2lsbCBzeW50aGVzaXplIGFuIGBgX19pbml0X19gYAogICAgICAgIG1ldGhvZC4KCiAgICAgICAgVGhlIGFyZ3VtZW50cyB0byB0aGlzIGRlY29yYXRvciBjYW4gYmUgdXNlZCB0byBjdXN0b21pemUgdGhpcyBiZWhhdmlvcjoKICAgICAgICAtIGBgZXFfZGVmYXVsdGBgIGluZGljYXRlcyB3aGV0aGVyIHRoZSBgYGVxYGAgcGFyYW1ldGVyIGlzIGFzc3VtZWQgdG8gYmUKICAgICAgICAgIFRydWUgb3IgRmFsc2UgaWYgaXQgaXMgb21pdHRlZCBieSB0aGUgY2FsbGVyLgogICAgICAgIC0gYGBvcmRlcl9kZWZhdWx0YGAgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGBgb3JkZXJgYCBwYXJhbWV0ZXIgaXMKICAgICAgICAgIGFzc3VtZWQgdG8gYmUgVHJ1ZSBvciBGYWxzZSBpZiBpdCBpcyBvbWl0dGVkIGJ5IHRoZSBjYWxsZXIuCiAgICAgICAgLSBgYGt3X29ubHlfZGVmYXVsdGBgIGluZGljYXRlcyB3aGV0aGVyIHRoZSBgYGt3X29ubHlgYCBwYXJhbWV0ZXIgaXMKICAgICAgICAgIGFzc3VtZWQgdG8gYmUgVHJ1ZSBvciBGYWxzZSBpZiBpdCBpcyBvbWl0dGVkIGJ5IHRoZSBjYWxsZXIuCiAgICAgICAgLSBgYGZpZWxkX3NwZWNpZmllcnNgYCBzcGVjaWZpZXMgYSBzdGF0aWMgbGlzdCBvZiBzdXBwb3J0ZWQgY2xhc3NlcwogICAgICAgICAgb3IgZnVuY3Rpb25zIHRoYXQgZGVzY3JpYmUgZmllbGRzLCBzaW1pbGFyIHRvIGBgZGF0YWNsYXNzZXMuZmllbGQoKWBgLgoKICAgICAgICBBdCBydW50aW1lLCB0aGlzIGRlY29yYXRvciByZWNvcmRzIGl0cyBhcmd1bWVudHMgaW4gdGhlCiAgICAgICAgYGBfX2RhdGFjbGFzc190cmFuc2Zvcm1fX2BgIGF0dHJpYnV0ZSBvbiB0aGUgZGVjb3JhdGVkIG9iamVjdC4KCiAgICAgICAgU2VlIFBFUCA2ODEgZm9yIGRldGFpbHMuCgogICAgICAgIGMBAAAAAAAAAAAAAAABAAAABgAAABMAAABzFgAAAIgAiASIAogBiANkAZwFfABfAHwAUwApAk4pBXKbAQAAcpwBAABynQEAAHKeAQAAcoAAAAApAVoXX19kYXRhY2xhc3NfdHJhbnNmb3JtX18pAVoJY2xzX29yX2ZuqQVymwEAAHKeAQAAcp0BAABygAAAAHKcAQAAcjsAAAByQAAAANoJZGVjb3JhdG9yFQgAAHMOAAAAAAICAQIBAgECAQL7CAd6JmRhdGFjbGFzc190cmFuc2Zvcm0uPGxvY2Fscz4uZGVjb3JhdG9ycjsAAAApBnKbAQAAcpwBAABynQEAAHKeAQAAcoAAAAByoAEAAHI7AAAAcp8BAAByQAAAAHIiAAAAzwcAAHMEAAAAAEYUCXItAAAA2gJfRikBck4BAABjAQAAAAAAAAAAAAAAAQAAAAEAAABDAAAAcwQAAAB8AFMAKQFhiwIAAEluZGljYXRlIHRoYXQgYSBtZXRob2QgaXMgaW50ZW5kZWQgdG8gb3ZlcnJpZGUgYSBtZXRob2QgaW4gYSBiYXNlIGNsYXNzLgoKICAgICAgICBVc2FnZToKCiAgICAgICAgICAgIGNsYXNzIEJhc2U6CiAgICAgICAgICAgICAgICBkZWYgbWV0aG9kKHNlbGYpIC0+IE5vbmU6IC4uLgogICAgICAgICAgICAgICAgICAgIHBhc3MKCiAgICAgICAgICAgIGNsYXNzIENoaWxkKEJhc2UpOgogICAgICAgICAgICAgICAgQG92ZXJyaWRlCiAgICAgICAgICAgICAgICBkZWYgbWV0aG9kKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgc3VwZXIoKS5tZXRob2QoKQoKICAgICAgICBXaGVuIHRoaXMgZGVjb3JhdG9yIGlzIGFwcGxpZWQgdG8gYSBtZXRob2QsIHRoZSB0eXBlIGNoZWNrZXIgd2lsbAogICAgICAgIHZhbGlkYXRlIHRoYXQgaXQgb3ZlcnJpZGVzIGEgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSBvbiBhIGJhc2UgY2xhc3MuCiAgICAgICAgVGhpcyBoZWxwcyBwcmV2ZW50IGJ1Z3MgdGhhdCBtYXkgb2NjdXIgd2hlbiBhIGJhc2UgY2xhc3MgaXMgY2hhbmdlZAogICAgICAgIHdpdGhvdXQgYW4gZXF1aXZhbGVudCBjaGFuZ2UgdG8gYSBjaGlsZCBjbGFzcy4KCiAgICAgICAgU2VlIFBFUCA2OTggZm9yIGRldGFpbHMuCgogICAgICAgIHI7AAAAcpoBAAByOwAAAHI7AAAAckAAAAByLQAAACYIAABzAgAAAAAWYwAAAAAAAAAAAAAAAAAAAAAJAAAAQwAAAHM0AAAAehZ0AKABZAGhAWoCoANkAmQDoQJXAFMABAB0BHQFZgJ5LgEAAQABAFkAZABTADAAZABTACkETnKDAAAAcnkAAAByCQEAACkGcu0AAABy7gAAAHLvAAAAcusAAABykwAAAHL/AAAAcjsAAAByOwAAAHI7AAAAckAAAADaB19jYWxsZXJRCAAAcwgAAAAAAQIBFgEQAXKiAQAAYwQAAAAAAAAAAAAAAAcAAAAGAAAAQwAAAHNQAAAAZAFkAoQAfAFEAIMBfQRkA2QEhAB8AUQAgwF9BXQAagF8AHwEfAN8AmQFjQR9BnwFBAB8Bl8CfAZqA18CdARqBWQGawByTHwFfAZfBnwGUwApB05jAQAAAAAAAAAAAAAAAwAAAAQAAABTAAAAcxQAAABnAHwAXQxcAn0BfQJ8AZECcQRTAHI7AAAAcjsAAACpA3I+AAAAchUBAAByWgAAAHI7AAAAcjsAAAByQAAAAHJBAAAAWAgAAHJCAAAAeiFfbWFrZV9ubXR1cGxlLjxsb2NhbHM+LjxsaXN0Y29tcD5jAQAAAAAAAAAAAAAAAwAAAAkAAABTAAAAcyYAAABpAHwAXR5cAn0BfQJ8AXQAoAF8AmQAfAGbAGQBnQOhApMCcQRTACkCegZmaWVsZCB6GiBhbm5vdGF0aW9uIG11c3QgYmUgYSB0eXBlcuAAAAByowEAAHI7AAAAcjsAAAByQAAAAHIXAQAAWQgAAHMEAAAABgEG/3ohX21ha2Vfbm10dXBsZS48bG9jYWxzPi48ZGljdGNvbXA+qQLaCGRlZmF1bHRz2gZtb2R1bGVyXAAAACkHckMBAADaCm5hbWVkdHVwbGVyrQAAAHJ9AAAAcu0AAADaDHZlcnNpb25faW5mb1oMX2ZpZWxkX3R5cGVzKQdylQAAAHJlAAAAcqYBAABypQEAAHIQAQAAcsIAAADaBm5tX3RwbHI7AAAAcjsAAAByQAAAANoNX21ha2Vfbm10dXBsZVcIAABzFgAAAAABDgEGAQL/BgIIAQT/BgIOAwoBBgFyqgEAAD4DAAAAcnkAAAByegAAAHKtAAAAYwAAAAAAAAAAAAAAAAAAAAACAAAAQAAAAHMUAAAAZQBaAWQAWgJkAWQChABaA2QDUwApBNoPX05hbWVkVHVwbGVNZXRhYwQAAAAAAAAAAAAAAAsAAAAKAAAAAwAAAHNKAQAAdAB8AnYAcwxKAIIBfAJEAF0efQR8BHQAdQFyEHwEdAFqAnUBchB0A2QBgwGCAXEQdARkAmQDhAB8AkQAgwGDAX0CiACgBWQEaQChAn0FZwB9BnwFRABdTH0HfAeIAHYAcm58BqAGfAehAQEAcVZ8BnJWdANkBXwHmwBkBnQHfAaDAWQHawRyjGQIbgJkCZsAZApkC6AIfAahAZsAnQaDAYIBcVZ0CXwBfAWgCqEAhwBmAWQMZA2ECHwGRACDAYgAZA4ZAGQPjQR9CHwCfAhfC3QBagJ8AnYAcu50AWoCagxqDX0JdA58CYMBfAhfDIgARABdPn0KfAp0D3YAkAFyDnQQZBB8ChcAgwGCAXHyfAp0EXYBcvJ8CnwIahJ2AXLydBN8CHwKiAB8ChkAgwMBAHHydAFqAnwCdgCQAXJGfAigFKEAAQB8CFMAKRFOejNjYW4gb25seSBpbmhlcml0IGZyb20gYSBOYW1lZFR1cGxlIHR5cGUgYW5kIEdlbmVyaWNjAQAAAAAAAAAAAAAAAgAAAAMAAABzAAAAcx4AAAB8AF0WfQF8AXQAdQByEnQBbgJ8AVYAAQBxAmQAUwByQwAAACkC2gtfTmFtZWRUdXBsZXJkAAAAchQBAAByOwAAAHI7AAAAckAAAAByRQAAAG4IAAByQgAAAHoqX05hbWVkVHVwbGVNZXRhLl9fbmV3X18uPGxvY2Fscz4uPGdlbmV4cHI+cq0AAAB6HU5vbi1kZWZhdWx0IG5hbWVkdHVwbGUgZmllbGQgehwgY2Fubm90IGZvbGxvdyBkZWZhdWx0IGZpZWxkcuMAAADaAXPaAPoBIHLKAAAAYwEAAAAAAAAAAAAAAAIAAAAEAAAAEwAAAHMUAAAAZwB8AF0MfQGIAHwBGQCRAnEEUwByOwAAAHI7AAAAKQJyPgAAAHIVAQAAqQFyEQEAAHI7AAAAckAAAAByQQAAAHsIAAByQgAAAHorX05hbWVkVHVwbGVNZXRhLl9fbmV3X18uPGxvY2Fscz4uPGxpc3Rjb21wPnJ6AAAAcqQBAAB6JkNhbm5vdCBvdmVyd3JpdGUgTmFtZWRUdXBsZSBhdHRyaWJ1dGUgKRVyrAEAAHJUAAAAcqwAAABySAAAAHJkAAAAcusAAAByYgAAAHJLAAAActIAAAByqgEAAHIbAQAAcvMAAABy5wAAAHKYAAAA2gtjbGFzc21ldGhvZNodX3Byb2hpYml0ZWRfbmFtZWR0dXBsZV9maWVsZHNykwAAANoaX3NwZWNpYWxfbmFtZWR0dXBsZV9maWVsZHNyCAEAANoHc2V0YXR0cnL5AAAAKQtyTQAAAHIPAQAAchMBAAByEQEAAHLBAAAAcmUAAADaDWRlZmF1bHRfbmFtZXPaCmZpZWxkX25hbWVyqQEAAFoNY2xhc3NfZ2V0aXRlbdoDa2V5cjsAAABysAEAAHJAAAAAcn0AAABoCAAAc0YAAAAAAQwBCAESAQIBAv8GAhIBDAEEAQgBCAEMAQQBCgIS/gQDCP0KBAIBCAEQAQb9BgUGAQoBCgEKAggBCgEOARIBEgEMAQgBehdfTmFtZWRUdXBsZU1ldGEuX19uZXdfX04pBHJ5AAAAcnoAAAByewAAAHJ9AAAAcjsAAAByOwAAAHI7AAAAckAAAAByqwEAAGcIAABzAgAAAAgBcqsBAABjAgAAAAAAAAAAAAAAAwAAAAUAAABLAAAAcy4AAAB8AWQAdQByEnwCoAChAH0Bbgx8AnIedAFkAYMBggF0AnwAfAF0A4MAZAKNA1MAKQNOeklFaXRoZXIgbGlzdCBvZiBmaWVsZHMgb3Iga2V5d29yZHMgY2FuIGJlIHByb3ZpZGVkIHRvIE5hbWVkVHVwbGUsIG5vdCBib3RoKQFypgEAACkEchsBAABySAAAAHKqAQAAcqIBAAApA1oKX190eXBlbmFtZVoIX19maWVsZHNygAAAAHI7AAAAcjsAAAByQAAAAHIaAAAAjAgAAHMKAAAAAAEIAQoBBAEIAnIaAAAAKQJyUgAAAOkIAAAAeiQodHlwZW5hbWUsIGZpZWxkcz1Ob25lLCAvLCAqKmt3YXJncyljAQAAAAAAAAAAAAAAAQAAAAIAAABDAAAAcxIAAAB0AHwAdgBzDEoAggF0AWYBUwByQwAAACkCchoAAAByrAEAACkBchMBAAByOwAAAHI7AAAAckAAAADaF19uYW1lZHR1cGxlX21yb19lbnRyaWVznQgAAHMEAAAAAAEMAXK5AQAAKQFOKQNOTkYpAXI7AAAAKQFOKZJy6QAAAHJDAQAA2g9jb2xsZWN0aW9ucy5hYmNy6gAAAHIsAQAAcu0AAAByZQAAAHJWAAAAclQAAADaB19fYWxsX19aB1BFUF81NjBy2AAAAFoLR2VuZXJpY01ldGFy9QAAAHJJAAAAclEAAAByqAEAAHJbAAAAcmYAAAByNwAAAHIMAAAAcmcAAAByaAAAAHJpAAAAcmoAAABybAAAAHICAAAAcm8AAAByAwAAAHJKAAAAcgUAAABydwEAAHKFAAAAciQAAAByKAAAAHIqAAAAcpYAAABynQAAAHIsAAAAciMAAAByIQAAANoLZGVmYXVsdGRpY3TaB3BhcnRpYWxyAgEAAHKaAAAAcgsAAAByDwAAAHISAAAAchEAAAByEAAAAHIYAAAAchYAAAByFAAAAHIZAAAAchsAAADaBl9hbGlhc3IXAAAAchUAAAByEwAAAHIrAAAAcjIAAAByNQAAAHL2AAAAcsQAAAByyQAAAHLXAAAAci4AAABy2gAAANoHQUJDTWV0YXLbAAAAcjEAAAByMAAAAHIdAAAAchwAAAByDgEAAHIpAAAAcgABAAByBAEAANoSX190ZXh0X3NpZ25hdHVyZV9fchIBAAByeQAAAHJ6AAAAcoEAAAByIwEAAHIgAAAAcicAAAByJgEAAHIeAAAAcikBAAByVQAAAHImAAAAciUAAAByQQEAANoLSW1wb3J0RXJyb3JyVwAAAHJCAQAAcjMAAAByRgEAAHJKAQAAcggAAAByCQAAAHJVAQAAcgcAAABynwAAAHJtAQAAcvoAAABycAEAAHIEAAAAcnMBAAByNAAAAHJ0AQAA2gZfRmluYWxyBgAAAHIKAAAAcjYAAAByOAAAAHI5AAAAcoEBAAByhAEAAHIOAAAAcoUBAAByhwEAAHI8AAAAco0BAAByDQAAAHIvAAAAch8AAAByIgAAAHJhAQAAcuQAAAByfQEAAHKjAAAAci0AAAByoQEAAHIaAAAAcqIBAAByqgEAANoLX3Byb2hpYml0ZWRysgEAAHIdAQAAcrMBAAByqwEAAHJ9AAAAcqwBAAByuQEAAHJ6AQAAcjsAAAByOwAAAHI7AAAAckAAAADaCDxtb2R1bGU+AQAAAHMsAgAACAEIAQgBCAEIAQgBCAEIAwhFBAEEBQYDDBUKAQoECgEKAwgEChUGBAoBCgEKAQ4BDgMKAQ4DEAsSDwYEIAEIAxYKBAEC/wYPDAEIBQggCAUMAQgDFggEAQL/Bg8GAwwBBgEGAQgDBAEM/wQECCgICwgGBgYGAQYBBgEGAQYBBgEGAQYDDAEIAxICBgEGAQYBBgEGAQYDCAYIEwgECCkMAQgECAQSEhJ/AAQMAQgDCBAEBAwBCAMCARIIDAgGAQYBCAIICwgGBgIOLAYDED8OAQYCAv8EHgwBDAIGAggODAEIAwgQDAEIAggBCAMIGAosDAEGAwgDFicOPRQBBgEIAwICEAEOAQwBAgIQAQ4BDAIIGAgYDAEIAhQBFgQCAQwOFgQEAQL/Bg0OEBgXDAEGAQgDDgoQFxAYDAMaFxJmDAIQIQQBCg4MAQYBCAIUAQIBDA4WBwIBAgEC/gYODAEIAhQBFgQCAQwvFgoCAQIBAv4GLxYrDAEIAgIBChMMAQgCAgEKEQwBCAICAQoaDAEGAQgBFAEWBAIBChMCAQwRFgkCAQIBAv4GEQIBAgEC/gYQDAEIARQBFgQWAwIBCg4KBBYDFgkCAQIBAv4GDQgEDAMaEBBRDAEIAhAUDAEIAhAXDAEIBAIBAgECBAL4BAICAQIBAgEEASABAv8C/wIEBAEO9gxSDAEIAhoCECAMAQYBBgYMAQgCCAYKDQYBDAIQJQoICgEQBQwBBgIIBA==