bw0NCgAAAACnNI1j3j8AAOMAAAAAAAAAAAAAAAAAAAAAEgAAAEAAAABz9gMAAGQAZAFsAFoAZABkAWwBWgFkAGQBbAJaA2QAZAJsBG0FWgUBAGQAZANsBm0GWgcBAGQEZAVsCG0JWgkBAGQEZAZsCG0KWgoBAGQEZAdsCG0LWgsBAGQEZAhsCG0MWgwBAGQEZAlsCG0NWg0BAGQEZApsCG0OWg4BAGQEZAtsD20QWhABAGQEZAxsEW0SWhIBAGUDahNkDWUDahRkDmUDahVmAhkAZA+NAloWZQNqE2QQZQNqF2UDahRkDmUDahVmAhkAZQpmAhkAZA+NAloYZBFlFmQSZRZmBGQTZBSEBFoZZBFlFmQSZRZmBGQVZBaEBFoaCRdkRmQYZQNqG2QZZRxkEmQaZgZkG2QchAVaHWQBZB2cAWQeZR5kH2UDah9lHhkAZBJkGmYGZCBkIYQGWiBlA2oTZCJlCmQPjQJaIWUDaiJkI2UDahRkDmUDahVmAhkAZBJlCmYEZCRkJYQEgwFaI2UDaiIJAWRHZCZlA2ofZR4ZAGQnZQNqFWQSZQNqFGQOZQpmAhkAZgZkKGQlhAWDAVojZQNqIgkBCQ5kSGQmZQNqH2UeGQBkKWUDahtlIRkAZCdlA2oVZBJlA2oUZA5lIWYCGQBmCGQqZCWEBYMBWiMJAQkBZElkJmUDahdlHmUDahRkDmUDahVmAhkAZAFmAxkAZCllA2ofZQNqG2UKGQAZAGQnZQNqFWQSZQNqF2UKZQNqFGQOZQpmAhkAZgIZAGYIZCtkJYQFWiNlA2oiZCNlA2oUZA5lA2oVZgIZAGQSZQxmBGQsZC2EBIMBWiRlA2oiCQFkR2QmZQNqH2UeGQBkJ2UDahVkEmUDahRlFmcBZQxmAhkAZgZkLmQthAWDAVokCQFkR2QmZQNqF2UeZQNqFGQOZQNqFWYCGQBkAWYDGQBkJ2UDahVkEmUDahdlDGUDahRlFmcBZQxmAhkAZgIZAGYGZC9kLYQFWiRkEWUYZDBlDmQSZAFmBmQxZDKEBFolZDNlHmQnZQNqFWQSZQNqFGUYZwFlGGYCGQBmBmQ0ZDWEBFomZDNlHmQnZQNqFWQSZQNqFGUYZwFlGGYCGQBmBmQ2ZDeEBFonZDNlHmQ4ZQNqFWQSZQNqFGUYZwFlGGYCGQBmBmQ5ZDqEBFooZDNlHmQ4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CgogICAgVGhlIG5hbWUgb2YgdGhlIGNvbW1hbmQgZGVmYXVsdHMgdG8gdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIHdpdGgKICAgIHVuZGVyc2NvcmVzIHJlcGxhY2VkIGJ5IGRhc2hlcy4gIElmIHlvdSB3YW50IHRvIGNoYW5nZSB0aGF0LCB5b3UgY2FuCiAgICBwYXNzIHRoZSBpbnRlbmRlZCBuYW1lIGFzIHRoZSBmaXJzdCBhcmd1bWVudC4KCiAgICBBbGwga2V5d29yZCBhcmd1bWVudHMgYXJlIGZvcndhcmRlZCB0byB0aGUgdW5kZXJseWluZyBjb21tYW5kIGNsYXNzLgogICAgRm9yIHRoZSBgYHBhcmFtc2BgIGFyZ3VtZW50LCBhbnkgZGVjb3JhdGVkIHBhcmFtcyBhcmUgYXBwZW5kZWQgdG8KICAgIHRoZSBlbmQgb2YgdGhlIGxpc3QuCgogICAgT25jZSBkZWNvcmF0ZWQgdGhlIGZ1bmN0aW9uIHR1cm5zIGludG8gYSA6Y2xhc3M6YENvbW1hbmRgIGluc3RhbmNlCiAgICB0aGF0IGNhbiBiZSBpbnZva2VkIGFzIGEgY29tbWFuZCBsaW5lIHV0aWxpdHkgb3IgYmUgYXR0YWNoZWQgdG8gYQogICAgY29tbWFuZCA6Y2xhc3M6YEdyb3VwYC4KCiAgICA6cGFyYW0gbmFtZTogdGhlIG5hbWUgb2YgdGhlIGNvbW1hbmQuICBUaGlzIGRlZmF1bHRzIHRvIHRoZSBmdW5jdGlvbgogICAgICAgICAgICAgICAgIG5hbWUgd2l0aCB1bmRlcnNjb3JlcyByZXBsYWNlZCBieSBkYXNoZXMuCiAgICA6cGFyYW0gY2xzOiB0aGUgY29tbWFuZCBjbGFzcyB0byBpbnN0YW50aWF0ZS4gIFRoaXMgZGVmYXVsdHMgdG8KICAgICAgICAgICAgICAgIDpjbGFzczpgQ29tbWFuZGAuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiA4LjEKICAgICAgICBUaGlzIGRlY29yYXRvciBjYW4gYmUgYXBwbGllZCB3aXRob3V0IHBhcmVudGhlc2VzLgoKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogOC4xCiAgICAgICAgVGhlIGBg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CiAgICBpbnNwZWN0aW5nIHRoZSBzdGFjayBmcmFtZXMuIFRoaXMgd2lsbCBiZSB1c2VkIHRvIGRldGVjdCB0aGUKICAgIHZlcnNpb24sIHNvIGl0IG11c3QgbWF0Y2ggdGhlIG5hbWUgb2YgdGhlIGluc3RhbGxlZCBwYWNrYWdlLgoKICAgIDpwYXJhbSB2ZXJzaW9uOiBUaGUgdmVyc2lvbiBudW1iZXIgdG8gc2hvdy4gSWYgbm90IHByb3ZpZGVkLCBDbGljawogICAgICAgIHdpbGwgdHJ5IHRvIGRldGVjdCBpdC4KICAgIDpwYXJhbSBwYXJhbV9kZWNsczogT25lIG9yIG1vcmUgb3B0aW9uIG5hbWVzLiBEZWZhdWx0cyB0byB0aGUgc2luZ2xlCiAgICAgICAgdmFsdWUgYGAiLS12ZXJzaW9uImBgLgogICAgOnBhcmFtIHBhY2thZ2VfbmFtZTogVGhlIHBhY2thZ2UgbmFtZSB0byBkZXRlY3QgdGhlIHZlcnNpb24gZnJvbS4gSWYKICAgICAgICBub3QgcHJvdmlkZWQsIENsaWNrIHdpbGwgdHJ5IHRvIGRldGVjdCBpdC4KICAgIDpwYXJhbSBwcm9nX25hbWU6IFRoZSBuYW1lIG9mIHRoZSBDTEkgdG8gc2hvdyBpbiB0aGUgbWVzc2FnZS4gSWYgbm90CiAgICAgICAgcHJvdmlkZWQsIGl0IHdpbGwgYmUgZGV0ZWN0ZWQgZnJvbSB0aGUgY29tbWFuZC4KICAgIDpwYXJhbSBtZXNzYWdlOiBUaGUgbWVzc2FnZSB0byBzaG93LiBUaGUgdmFsdWVzIGBgJShwcm9nKXNgYCwKICAgICAgICBgYCUocGFja2FnZSlzYGAsIGFuZCBgYCUodmVyc2lvbilzYGAgYXJlIGF2YWlsYWJsZS4gRGVmYXVsdHMgdG8KICAgICAgICBgYCIlKHByb2cpcywgdmVyc2lvbiAlKHZlcnNpb24pcyJgYC4KICAgIDpwYXJhbSBrd2FyZ3M6IEV4dHJhIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIDpmdW5jOmBvcHRpb25gLgogICAgOnJhaXNlIFJ1bnRpbWVFcnJvcjogYGB2ZXJzaW9uYGAgY291bGQgbm90IGJlIGRldGVjdGVkLgoKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogOC4wCiAgICAgICAgQWRkIHRoZSBgYHBhY2thZ2VfbmFtZWBgIHBhcmFtZXRlciwgYW5kIHRoZSBgYCUocGFja2FnZSlzYGAKICAgICAgICB2YWx1ZSBmb3IgbWVzc2FnZXMuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiA4LjAKICAgICAgICBVc2UgOm1vZDpgaW1wb3J0bGliLm1ldGFkYXRhYCBpbnN0ZWFkIG9mIGBgcGtnX3Jlc291cmNlc2BgLiBUaGUKICAgICAgICB2ZXJzaW9uIGlzIGRldGVjdGVkIGJhc2VkIG9uIHRoZSBwYWNrYWdlIG5hbWUsIG5vdCB0aGUgZW50cnkKICAgICAgICBwb2ludCBuYW1lLiBUaGUgUHl0aG9uIHBhY2thZ2UgbmFtZSBtdXN0IG1hdGNoIHRoZSBpbnN0YWxsZWQKICAgICAgICBwYWNrYWdlIG5hbWUsIG9yIGJlIHBhc3NlZCB3aXRoIGBgcGFja2FnZV9uYW1lPWBgLgogICAgTnodJShwcm9nKXMsIHZlcnNpb24gJSh2ZXJzaW9uKXNyKQAAANoIX19tYWluX1/aC19fcGFja2FnZV9f2gEucgEAAAByLAAAAHJaAAAAcmkAAAByEgAAAGMDAAAAAAAAAAAAAAAEAAAACAAAABMAAABz0gAAAHwCcgV8AGoAcgdkAFMAiAJkAHUAchB8AKABoQBqAokCiANkAHUAckaIAWQAdQFyRnoIZAFkAmwDbQR9AwEAVwBuDQQAdAV5LQEAAQABAGQBZABsBn0DWQBuAXcAegd8A6AHiAGhAYkDVwBuEAQAfANqCHlFAQABAAEAdAmIAZsCZAOdAoMBZACCAncAiANkAHUAclJ0CWQEiAGbAmQFnQODAYIBdAp0C6AMdA2IAKECiAKIAYgDZAacAxYAfABqDmQHjQIBAHwAoA+hAAEAZABTACkITnIBAAAAKQHaCG1ldGFkYXRhejYgaXMgbm90IGluc3RhbGxlZC4gVHJ5IHBhc3NpbmcgJ3BhY2thZ2VfbmFtZScgaW5zdGVhZC56JENvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIHZlcnNpb24gZm9yIHoPIGF1dG9tYXRpY2FsbHkuKQPaBHByb2faB3BhY2thZ2VyeQAAAKkB2gVjb2xvcikQ2hFyZXNpbGllbnRfcGFyc2luZ9oJZmluZF9yb2902glpbmZvX25hbWXaCWltcG9ydGxpYnJ9AAAA2gtJbXBvcnRFcnJvctoSaW1wb3J0bGliX21ldGFkYXRhcnkAAADaFFBhY2thZ2VOb3RGb3VuZEVycm9ycigAAAByDQAAAHIdAAAAch4AAADaA3N0cnKBAAAA2gRleGl0KQRyLAAAAHJaAAAAcmkAAAByfQAAAKkEcngAAABydgAAAHJ3AAAAcnkAAAByGQAAAHIaAAAAckUAAACjAQAAczwAAAAKAQQBCAUKARACAgMQAQwBDAIC/gIEDgEOAQIBCAEC/wIDAv0C/wgGAgEKAQT/AgQKAQoBAv8EAgb9DAV6IHZlcnNpb25fb3B0aW9uLjxsb2NhbHM+LmNhbGxiYWNrKQF6CS0tdmVyc2lvbnJsAAAAVHJtAAAARtoIaXNfZWFnZXJyQgAAAHoaU2hvdyB0aGUgdmVyc2lvbiBhbmQgZXhpdC5yRQAAACkMckMAAADaB2luc3BlY3TaDGN1cnJlbnRmcmFtZdoGZl9iYWNr2glmX2dsb2JhbHNyTQAAANoJcGFydGl0aW9ucgcAAAByCgAAAHJvAAAAcnAAAAByaAAAACkKcnkAAABydgAAAHJ3AAAAcngAAAByXgAAAHIXAAAA2gVmcmFtZXKPAAAAcpAAAAByRQAAAHIZAAAAcosAAAByGgAAANoOdmVyc2lvbl9vcHRpb25jAQAAcywAAAAILAgBEAIIARIBEgECAwgCCgEIAgoBBAIOASQCBCcEAQwCDAEMARABCAEOAXKTAAAAYwAAAAAAAAAAAAAAAAMAAAAIAAAATwAAAHNsAAAAZAF0AGQCdAFkA3QCZARkBWYIZAZkB4QEfQJ8AHMRZAh9AHwBoANkCWQKoQIBAHwBoANkC2QMoQIBAHwBoANkDWQKoQIBAHwBoANkDnQEZA+DAaECAQB8AnwBZBA8AHQFfABpAHwBpAGOAVMAKRFhmwEAAEFkZCBhIGBgLS1oZWxwYGAgb3B0aW9uIHdoaWNoIGltbWVkaWF0ZWx5IHByaW50cyB0aGUgaGVscCBwYWdlCiAgICBhbmQgZXhpdHMgdGhlIHByb2dyYW0uCgogICAgVGhpcyBpcyB1c3VhbGx5IHVubmVjZXNzYXJ5LCBhcyB0aGUgYGAtLWhlbHBgYCBvcHRpb24gaXMgYWRkZWQgdG8KICAgIGVhY2ggY29tbWFuZCBhdXRvbWF0aWNhbGx5IHVubGVzcyBgYGFkZF9oZWxwX29wdGlvbj1GYWxzZWBgIGlzCiAgICBwYXNzZWQuCgogICAgOnBhcmFtIHBhcmFtX2RlY2xzOiBPbmUgb3IgbW9yZSBvcHRpb24gbmFtZXMuIERlZmF1bHRzIHRvIHRoZSBzaW5nbGUKICAgICAgICB2YWx1ZSBgYCItLWhlbHAiYGAuCiAgICA6cGFyYW0ga3dhcmdzOiBFeHRyYSBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byA6ZnVuYzpgb3B0aW9uYC4KICAgIHIsAAAAcloAAAByaQAAAHISAAAATmMDAAAAAAAAAAAAAAADAAAABAAAAFMAAABzLAAAAHwCcgV8AGoAcgdkAFMAdAF8AKACoQB8AGoDZAGNAgEAfACgBKEAAQBkAFMAKQJOcoAAAAApBXKCAAAAcg0AAADaCGdldF9oZWxwcoEAAAByigAAAHJrAAAAchkAAAByGQAAAHIaAAAAckUAAADiAQAAcwgAAAAKAQQBEgIMAXodaGVscF9vcHRpb24uPGxvY2Fscz4uY2FsbGJhY2spAXoGLS1oZWxwcmwAAABUcm0AAABGcowAAAByQgAAAHobU2hvdyB0aGlzIG1lc3NhZ2UgYW5kIGV4aXQuckUAAAApBnIHAAAAcgoAAABybwAAAHJwAAAAckMAAAByaAAAAHJxAAAAchkAAAByGQAAAHIaAAAA2gtoZWxwX29wdGlvbtUBAABzEgAAABoNBAcEAQwCDAEMARABCAEOAXKVAAAAKQFGchQAAAApAk4uKQJOTiksco0AAADaBXR5cGVz2gZ0eXBpbmdyHQAAANoJZnVuY3Rvb2xzcgIAAAByAwAAAHJDAAAA2gRjb3JlcgUAAAByBgAAAHIHAAAAcggAAAByCQAAAHIKAAAA2gdnbG9iYWxzcgwAAADaBXV0aWxzcg0AAADaB1R5cGVWYXJyVQAAAHJWAAAAcg4AAADaBVVuaW9uchAAAAByIAAAAHIiAAAA2gRUeXBlcm8AAAByLwAAAHKJAAAA2ghPcHRpb25hbHI1AAAAcjYAAADaCG92ZXJsb2FkcjoAAAByWAAAAHJdAAAAcmQAAAByaAAAAHJyAAAAcnUAAABykwAAAHKVAAAAchkAAAByGQAAAHIZAAAAchoAAADaCDxtb2R1bGU+AQAAAHPyAAAACAAIAQgBDAEMAQwCDAEMAQwBDAEMAQwBDAEaAiQBEgMSCwINBP8EAQL/AgEC/wICCv4CMQb/AgEC/wgBAv8CAgr+DiEEAwIBDgEC/wICDP4EBgICBP8IAQL/BAIC/gwDDP0EBwICAgEE/ggBAv8IAgL+BAMC/QwEDPwCCQIBBP4aAQL/DgIC/gQDAv0WBAr8BE4CAQ4BAv8CAgz+BAYCAgT/CAEC/wQCAv4OAwz9AggE/xoBAv8EAQL/GAIK/hYUJAokEyQVJBgCEgL/AgMCAQIBBvsIAQL/AgIC/ggDAv0IBAL8CAUC+wQGAvoOBwr5KHI=