Mw0NCgdae2OOlQEA4wAAAAAAAAAAAAAAAF4AAABAAAAAc0wIAABkAFoAZAFkAmwBbQJaAgEAZAFkA2wDWgNkAWQDbARaBGQBZANsBVoFZAFkA2wGWgZkAWQDbAdaB2QBZANsCFoIZAFkA2wJWglkAWQDbApaCmQBZANsC1oLZAFkA2wMWgxkAWQDbA1aDWQBZANsDloOZAFkA2wPWg9kAWQDbBBaEGQBZANsEVoRZAFkA2wSWhJkAWQDbBNaFGQBZANsFVoVZAFkA2wWWhZkAWQDbBdaF2QBZANsGFoYZAFkA2wZWhlkAWQEbA5tGloaAQB5DGQBZANsG1obVwBuHAQAZRxrCnL0AQABAAEAZAFkA2wdWhtZAG4CWABkAWQFbB5tH1ofAQBkAWQGbCBtIVohbSJaIm0jWiMBAGQBZAdsBG0kWiQBAHkcZAFkCGwEbSVaJW0mWiZtJ1onAQBkCVooVwBuGgQAZRxrCpABclgBAAEAAQBkClooWQBuAlgAZAFkC2wEbSlaKgEAZAFkDGwrbSxaLG0tWi0BAHkUZAFkA2wuai9aMGUwajEBAFcAbhoEAGUcawqQAXKkAQABAAEAZANaMFkAbgJYAGQNZA5sMm0zWjMBAGQBZA9sHm00WjQBAGQBZBBsHm01WjUBAGU2ZBGDAQEAZTZkEoMBAQBlNmQTgwEBAGU2ZBSDAQEAZPhlA2o3BAADAGsAkAJvAGT5awBuBAIAAQCQAnIQZThkFoMBggFlH2o5kAJyIGQDWjpkA1o7ZANaPGQDWj1kA1o+ZANaP2QDWkBkA1pBZANaQmQDWkNkA1pEZANaRWQDWkZkA1pHZANaSGQDWklkA1pKZANaS2QDWkxHAGQXZBiEAGQYZU2DA1pOZBlkGoQAWk9pAFpQZBtkHIQAWlFkHWQehABaUmQfZCCEAFpTZCFkIoQAWlRkI2QkhABaVWQlZCaEAFpWZCdkKIQAWldkKWQqhAAEAFpYWllkK2QshABaWmQtZC5kL2QwZDFkMmQzZDRkNWQ2ZDdkOGQ5ZDpkO2Q8ZD1kPmQ/ZEBkQWRCZENkRGRFZEZkR2RIZElkSmRLZExkGGRNZBpkTmRPZFBkUWRSZFNkVGRVZFZkV2RYZFlkWmRbZFxkXWReZF9kYGRhZGJkY2RkZGVkZmRnZGhkaWRqZGtkbGRtZG5kb2RwZ0ZaW0cAZHFkSIQAZEhlXIMDWl1HAGRyZEmEAGRJZV2DA1peRwBkc2R0hABkdGVegwNaX0cAZHVkSoQAZEplXYMDWmBHAGR2ZEuEAGRLZV2DA1phaQBaYmUDamNkA2QVhQIZAFpkZBVaZWR3WmZkDVpnZAFaaGT6WmlkeGRshABaamR5ZC+EAFprZwBmAWR6ZHuEAVpsZHxkfYQAWm1kfmR/hABabmUHam9kgIMBWnBlB2pvZIGDAVpxZW5acmSCZFGEAFpzZINkLoQAWnRldFp1ZIRkMIQAWnZkhWQxhABad2T7ZIZkMoQBWnhkh2QzhABaeUcAZIhkX4QAZF+DAlp6RwBkiWRghABkYGV6gwNae0cAZIpkQ4QAZENlfIMDWn1HAGSLZIyEAGSMZX6DA1p/RwBkjWRChABkQmV8gwNagGWAWoFHAGSOZEyEAGRMZTiDA1qCRwBkj2REhABkRIMCWoNkkGRBhABahGSRZE6EAFqFZJJkT4QAWoZkk2RUhABah2SUZFWEAFqIZJVkVoQAWolk/GSWZFeEAVqKRwBkl2RmhABkZoMCWotlamV8ZYuDAgEARwBkmGRnhABkZ2WLgwNajEcAZJlkaIQAZGhljIMDWo1ljWqOgwABAEcAZJpkZIQAZGRli4MDWo9lj4MAWpBHAGSbZJyEAGScZX6DA1qRRwBknWSehABknmWRgwNakkcAZJ9kaYQAZGlljIMDWpNlamUKapRlk4MCAQBHAGSgZGGEAGRhZY+DA1qVRwBkoWRihABkYmWNgwNalkcAZKJkY4QAZGNlk4MDWpdlUWSjaQBkpI0CAQBkpWRqhABamGT9ZKZkPoQBWplk/mSnZKiEAVqaZZhlCmqUZZqDAgEAZP9kqWSqhAFam2WYZXxlm4MCAQBkq2SshABanJABZABkrWSuhAFanWSvZLCEAFqeRwBksWSyhABksoMCWp9ks2S0hABaoGS1ZLaEAFqhZLdkuIQAWqJkuWS6hABao2WYZQ5qpGWdgwIBAGWlZTBku4MCkAZybmWYZTBqpmWdgwIBAGVRZKNpAGS8jQIBAGVRZKNpAGS9jQIBAGS+ZGuEAFqnZL9kwIQAWqhkwWTChABaqWTDZDuEAFqqkAFkAWTEZG2EAVqrZMVkxoQAWqxlp2UOaqRlrIMCAQBlp2UKapRlrIMCAQBlpWUwZLuDApAGcuplp2UwaqZlrIMCAQBkx2TIhABarWWnZXxlrYMCAQBkyWRZhABarmkAZgFkymTLhAFar2TMZM2EAFqwZM5kz4QAWrFk0GTRhABasmTSZFKEAFqzZQdqb2TTgwFqtFq1ZQdqb2TUZQdqtmUHardCAIMCarRauEcAZNVkR4QAZEdlfIMDWrlk1mTXhABaumTYZNmEAFq7RwBk2mRFhABkRWV8gwNavEcAZNtk3IQAZNxlvIMDWr1HAGTdZN6EAGTeZbyDA1q+ZbxlvWW+ZN+cA1q/ZOBk4YQAWsBHAGTiZOOEAGTjZcGDA1rCZORkTYQAWsNHAGTlZEaEAGRGZTVqxGrFgwNaxWTmZOeEAFrGZOhk6YQAWsdk6mRYhABayGTrZOyEAFrJZO1kU4QAWspk7mTvhABay2ULasxk8GVOZAlk8Y0DAQBk8mTzhABazWXNZc6DAGYBZPRk9YQBgwFaz2XNZPZk94QAgwFa0GQDUwAoAgEAAGFaAgAAClBhY2thZ2UgcmVzb3VyY2UgQVBJCi0tLS0tLS0tLS0tLS0tLS0tLS0tCgpBIHJlc291cmNlIGlzIGEgbG9naWNhbCBmaWxlIGNvbnRhaW5lZCB3aXRoaW4gYSBwYWNrYWdlLCBvciBhIGxvZ2ljYWwKc3ViZGlyZWN0b3J5IHRoZXJlb2YuICBUaGUgcGFja2FnZSByZXNvdXJjZSBBUEkgZXhwZWN0cyByZXNvdXJjZSBuYW1lcwp0byBoYXZlIHRoZWlyIHBhdGggcGFydHMgc2VwYXJhdGVkIHdpdGggYGAvYGAsICpub3QqIHdoYXRldmVyIHRoZSBsb2NhbApwYXRoIHNlcGFyYXRvciBpcy4gIERvIG5vdCB1c2Ugb3MucGF0aCBvcGVyYXRpb25zIHRvIG1hbmlwdWxhdGUgcmVzb3VyY2UKbmFtZXMgYmVpbmcgcGFzc2VkIGludG8gdGhlIEFQSS4KClRoZSBwYWNrYWdlIHJlc291cmNlIEFQSSBpcyBkZXNpZ25lZCB0byB3b3JrIHdpdGggbm9ybWFsIGZpbGVzeXN0ZW0gcGFja2FnZXMsCi5lZ2cgZmlsZXMsIGFuZCB1bnBhY2tlZCAuZWdnIGZpbGVzLiAgSXQgY2FuIGFsc28gd29yayBpbiBhIGxpbWl0ZWQgd2F5IHdpdGgKLnppcCBmaWxlcyBhbmQgd2l0aCBjdXN0b20gUEVQIDMwMiBsb2FkZXJzIHRoYXQgc3VwcG9ydCB0aGUgYGBnZXRfZGF0YSgpYGAKbWV0aG9kLgrpAAAAACkB2g9hYnNvbHV0ZV9pbXBvcnROKQHaDGdldF9pbXBvcnRlcikB2gNzaXgpA9oGdXJsbGli2gNtYXDaBmZpbHRlcikB2gV1dGltZSkD2gVta2RpctoGcmVuYW1l2gZ1bmxpbmtURikB2gRvcGVuKQLaBWlzZGly2gVzcGxpdOkBAAAAKQHaCnB5MzFjb21wYXQpAdoHYXBwZGlycykB2glwYWNrYWdpbmd6JnBrZ19yZXNvdXJjZXMuZXh0ZXJuLnBhY2thZ2luZy52ZXJzaW9ueilwa2dfcmVzb3VyY2VzLmV4dGVybi5wYWNrYWdpbmcuc3BlY2lmaWVyc3orcGtnX3Jlc291cmNlcy5leHRlcm4ucGFja2FnaW5nLnJlcXVpcmVtZW50c3omcGtnX3Jlc291cmNlcy5leHRlcm4ucGFja2FnaW5nLm1hcmtlcnPpAwAAAHofUHl0aG9uIDMuMyBvciBsYXRlciBpcyByZXF1aXJlZGMAAAAAAAAAAAAAAAABAAAAQAAAAHMQAAAAZQBaAWQAWgJkAVoDZAJTACkD2g1QRVA0NDBXYXJuaW5nemEKICAgIFVzZWQgd2hlbiB0aGVyZSBpcyBhbiBpc3N1ZSB3aXRoIGEgdmVyc2lvbiBvciBzcGVjaWZpZXIgbm90IGNvbXBseWluZyB3aXRoCiAgICBQRVAgNDQwLgogICAgTikE2ghfX25hbWVfX9oKX19tb2R1bGVfX9oMX19xdWFsbmFtZV9f2gdfX2RvY19fqQByGQAAAHIZAAAA+jwvdG1wL3BpcC1idWlsZC16aG8xODI4bC9zZXR1cHRvb2xzL3BrZ19yZXNvdXJjZXMvX19pbml0X18ucHlyFAAAAG4AAABzAgAAAAgEchQAAABjAQAAAAAAAAABAAAACwAAAEMAAABzMgAAAHkMdABqAWoCfACDAVMABAB0AGoBagNrCnIsAQABAAEAdABqAWoEfACDAVMAWABkAFMAKQFOKQVyEgAAANoHdmVyc2lvbtoHVmVyc2lvbtoOSW52YWxpZFZlcnNpb27aDUxlZ2FjeVZlcnNpb24pAdoBdnIZAAAA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ZnVuY3Rpb24gc2hvdWxkIGJlIGV4dGVuZGVkIGFjY29yZGluZ2x5LgogICAgTtoGZGFyd2luegxtYWNvc3gtJXMtJXPaAS7pAgAAAHITAAAAKQnaEmdldF9idWlsZF9wbGF0Zm9ybdoSbWFjb3NWZXJzaW9uU3RyaW5n2gVtYXRjaNoDc3lz2ghwbGF0Zm9ybdoEam9pbtoMX21hY29zeF92ZXJz2gVncm91cNoKVmFsdWVFcnJvcikC2gRwbGF02gFtchkAAAByGQAAAHIaAAAA2hZnZXRfc3VwcG9ydGVkX3BsYXRmb3JtpwAAAHMQAAAAAA0GAQoBEgECASYBDgIGAXJKAAAA2gdyZXF1aXJl2gpydW5fc2NyaXB02gxnZXRfcHJvdmlkZXLaEGdldF9kaXN0cmlidXRpb27aEGxvYWRfZW50cnlfcG9pbnTaDWdldF9lbnRyeV9tYXDaDmdldF9lbnRyeV9pbmZv2hFpdGVyX2VudHJ5X3BvaW50c9oPcmVzb3VyY2Vfc3RyaW5n2g9yZXNvdXJjZV9zdHJlYW3aEXJlc291cmNlX2ZpbGVuYW1l2hByZXNvdXJjZV9saXN0ZGly2g9yZXNvdXJjZV9leGlzdHPaDnJlc291cmNlX2lzZGly2hFkZWNsYXJlX25hbWVzcGFjZdoLd29ya2luZ19zZXTaF2FkZF9hY3RpdmF0aW9uX2xpc3RlbmVy2hJmaW5kX2Rpc3RyaWJ1dGlvbnPaE3NldF9leHRyYWN0aW9uX3BhdGjaEWNsZWFudXBfcmVzb3VyY2Vz2hFnZXRfZGVmYXVsdF9jYWNoZdoLRW52aXJvbm1lbnTaCldvcmtpbmdTZXTaD1Jlc291cmNlTWFuYWdlctoMRGlzdHJpYnV0aW9u2gtSZXF1aXJlbWVudNoKRW50cnlQb2ludNoPUmVzb2x1dGlvbkVycm9y2g9WZXJzaW9uQ29uZmxpY3TaFERpc3RyaWJ1dGlvbk5vdEZvdW5k2gxVbmtub3duRXh0cmHaD0V4dHJhY3Rpb25FcnJvctoScGFyc2VfcmVxdWlyZW1lbnRz2glzYWZlX25hbWXaDHNhZmVfdmVyc2lvbtoMZ2V0X3BsYXRmb3Jt2hRjb21wYXRpYmxlX3BsYXRmb3Jtc9oLeWllbGRfbGluZXPaDnNwbGl0X3NlY3Rpb25z2gpzYWZlX2V4dHJh2gt0b19maWxlbmFtZdoOaW52YWxpZF9tYXJrZXLaD2V2YWx1YXRlX21hcmtlctoQZW5zdXJlX2RpcmVjdG9yedoObm9ybWFsaXplX3BhdGjaCEVHR19ESVNU2gtCSU5BUllfRElTVNoLU09VUkNFX0RJU1TaDUNIRUNLT1VUX0RJU1TaDERFVkVMT1BfRElTVNoRSU1ldGFkYXRhUHJvdmlkZXLaEUlSZXNvdXJjZVByb3ZpZGVy2gxGaWxlTWV0YWRhdGHaDFBhdGhNZXRhZGF0YdoLRWdnTWV0YWRhdGHaDUVtcHR5UHJvdmlkZXLaDmVtcHR5X3Byb3ZpZGVy2gxOdWxsUHJvdmlkZXLaC0VnZ1Byb3ZpZGVy2g9EZWZhdWx0UHJvdmlkZXLaC1ppcFByb3ZpZGVy2g9yZWdpc3Rlcl9maW5kZXLaGnJlZ2lzdGVyX25hbWVzcGFjZV9oYW5kbGVy2hRyZWdpc3Rlcl9sb2FkZXJfdHlwZdoYZml4dXBfbmFtZXNwYWNlX3BhY2thZ2VzcgMAAADaCHJ1bl9tYWlu2hZBdmFpbGFibGVEaXN0cmlidXRpb25zYwAAAAAAAAAAAAAAAAIAAABAAAAAcxgAAABlAFoBZABaAmQBWgNkAmQDhABaBGQEUwApBXJmAAAAei5BYnN0cmFjdCBiYXNlIGZvciBkZXBlbmRlbmN5IHJlc29sdXRpb24gZXJyb3JzYwEAAAAAAAAAAQAAAAMAAABDAAAAcxIAAAB8AGoAagF0AnwAagODARcAUwApAU4pBNoJX19jbGFzc19fchUAAADaBHJlcHJyOgAAACkB2gRzZWxmchkAAAByGQAAAHIaAAAA2ghfX3JlcHJfX/EAAABzAgAAAAABehhSZXNvbHV0aW9uRXJyb3IuX19yZXByX19OKQVyFQAAAHIWAAAAchcAAAByGAAAAHKRAAAAchkAAAByGQAAAHIZAAAAchoAAAByZgAAAO4AAABzBAAAAAgBBAJjAAAAAAAAAAAAAAAAAwAAAEAAAABzPAAAAGUAWgFkAFoCZAFaA2QCWgRlBWQDZASEAIMBWgZlBWQFZAaEAIMBWgdkB2QIhABaCGQJZAqEAFoJZAtTACkMcmcAAAB6qgogICAgQW4gYWxyZWFkeS1pbnN0YWxsZWQgdmVy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GQAAAHIZAAAAchoAAADaFWdldF9yZXNvdXJjZV9maWxlbmFtZQMCAABzAAAAAHonSVJlc291cmNlUHJvdmlkZXIuZ2V0X3Jlc291cmNlX2ZpbGVuYW1lYwIAAAAAAAAAAgAAAAEAAABDAAAAcwQAAABkAVMAKQJ6aVJldHVybiBhIHJlYWRhYmxlIGZpbGUtbGlrZSBvYmplY3QgZm9yIGByZXNvdXJjZV9uYW1lYAoKICAgICAgICBgbWFuYWdlcmAgbXVzdCBiZSBhbiBgYElSZXNvdXJjZU1hbmFnZXJgYE5yGQAAACkCcuEAAABy4gAAAHIZAAAAchkAAAByGgAAANoTZ2V0X3Jlc291cmNlX3N0cmVhbQgCAABzAAAAAHolSVJlc291cmNlUHJvdmlkZXIuZ2V0X3Jlc291cmNlX3N0cmVhbWMCAAAAAAAAAAIAAAABAAAAQwAAAHMEAAAAZAFTACkCem1SZXR1cm4gYSBzdHJpbmcgY29udGFpbmluZyB0aGUgY29udGVudHMgb2YgYHJlc291cmNlX25hbWVgCgogICAgICAgIGBtYW5hZ2VyYCBtdXN0IGJlIGFuIGBgSVJlc291cmNlTWFuYWdlcmBgTnIZAAAAKQJy4QAAAHLiAAAAchkAAAByGQAAAHIaAAAA2hNnZXRfcmVzb3VyY2Vfc3RyaW5nDQIAAHMAAAAAeiVJUmVzb3VyY2VQcm92aWRlci5nZXRfcmVzb3VyY2Vfc3RyaW5nYwEAAAAAAAAAAQAAAAEAAABDAAAAcwQAAABkAVMAKQJ6LERvZXMgdGhlIHBhY2thZ2UgY29udGFpbiB0aGUgbmFtZWQgcmVzb3VyY2U/TnIZAAAAKQFy4gAAAHIZAAAAchkAAAByGgAAANoMaGFzX3Jlc291cmNlEgIAAHMAAAAAeh5JUmVzb3VyY2VQcm92aWRlci5oYXNfcmVzb3VyY2VjAQAAAAAAAAABAAAAAQAAAEMAAABzBAAAAGQBUwApAno+SXMgdGhlIG5hbWVkIHJlc291cmNlIGEgZGlyZWN0b3J5PyAgKGxpa2UgYGBvcy5wYXRoLmlzZGlyKClgYClOchkAAAApAXLiAAAAchkAAAByGQAAAHIaAAAAclgAAAAVAgAAcwAAAAB6IElSZXNvdXJjZVByb3ZpZGVyLnJlc291cmNl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BYMCc1pxMnwHagd8C2oIgwF9DHwMZAFrCJABcgp8AGoJagd8C2oIgwF9DHwMZAFrCHOUfAx8C2sHb5B8BJABcgB8AH0NfAJkAWsIcsR8DGQBawhytHQKfABqC4MBfQJuEHQKZwCDAX0CdAxnAIMBfQ18AmoNfAt8DXwDfARkBI0EBAB9DHwHfAtqCDwAfAxkAWsIkAFyAHwKagd8C2QBgwJ9DnQOfAt8DoMCggF8CGoPfAyDAQEAfAx8C2sHkAFyLHwKfAsZAH0PdBB8DHwLgwJqEXwPgwGCAXwMahJ8C2oTgwFkAWQBZAeFAxkAfRB8AWoUfBCDAQEAeCh8EEQAXSB9EXwKfBEZAGoVfAtqFoMBAQB8C2oTfAl8ETwAkAFxUlcAZAV8BnwLPABxMlcAfAhTACkIYc4EAABMaXN0IGFsbCBkaXN0cmlidXRpb25zIG5lZWRlZCB0byAocmVjdXJzaXZlbHkpIG1lZXQgYHJlcXVpcmVtZW50c2AKCiAgICAgICAgYHJlcXVpcmVtZW50c2AgbXVzdCBiZSBhIHNlcXVlbmNlIG9mIGBgUmVxdWlyZW1lbnRgYCBvYmplY3RzLiAgYGVudmAsCiAgICAgICAgaWYgc3VwcGxpZWQsIHNob3VsZCBiZSBhbiBgYEVudmlyb25tZW50YGAgaW5zdGFuY2UuICBJZgogICAgICAgIG5vdCBzdXBwbGllZCwgaXQgZGVmYXVsdHMgdG8gYWxsIGRpc3RyaWJ1dGlvbnMgYXZhaWxhYmxlIHdpdGhpbiBhbnkKICAgICAgICBlbnRyeSBvciBkaXN0cmlidXRpb24gaW4gdGhlIHdvcmtpbmcgc2V0LiAgYGluc3RhbGxlcmAsIGlmIHN1cHBsaWVkLAogICAgICAgIHdpbGwgYmUgaW52b2tlZCB3aXRoIGVhY2ggcmVxdWlyZW1lbnQgdGhhdCBjYW5ub3QgYmUgbWV0IGJ5IGFuCiAgICAgICAgYWxyZWFkeS1pbnN0YWxsZWQgZGlzdHJpYnV0aW9uOyBpdCBzaG91bGQgcmV0dXJuIGEgYGBEaXN0cmlidXRpb25gYCBvcgogICAgICAgIGBgTm9uZWBgLgoKICAgICAgICBVbmxlc3MgYHJlcGxhY2VfY29uZmxpY3Rpbmc9VHJ1ZWAsIHJhaXNlcyBhIFZlcnNpb25Db25mbGljdCBleGNlcHRpb24KICAgICAgICBpZgogICAgICAgIGFueSByZXF1aXJlbWVudHMgYXJlIGZvdW5kIG9uIHRoZSBwYXRoIHRoYXQgaGF2ZSB0aGUgY29ycmVjdCBuYW1lIGJ1dAogICAgICAgIHRoZSB3cm9uZyB2ZXJzaW9uLiAgT3RoZXJ3aXNlLCBpZiBhbiBgaW5zdGFsbGVyYCBpcyBzdXBwbGllZCBpdCB3aWxsIGJlCiAgICAgICAgaW52b2tlZCB0byBvYnRhaW4gdGhlIGNvcnJlY3QgdmVyc2lvbiBvZiB0aGUgcmVxdWlyZW1lbnQgYW5kIGFjdGl2YXRlCiAgICAgICAgaXQuCgogICAgICAgIGBleHRyYXNgIGlzIGEgbGlzdCBvZiB0aGUgZXh0cmFzIHRvIGJlIHVzZWQgd2l0aCB0aGVzZSByZXF1aXJlbWVudHMuCiAgICAgICAgVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBleHRyYSByZXF1aXJlbWVudHMgbWF5IGxvb2sgbGlrZSBgbXlfcmVxOwogICAgICAgIGV4dHJhID0gIm15X2V4dHJhImAsIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBiZSBpbnRlcnByZXRlZCBhcyBhIHB1cmVseQogICAgICAgIG9wdGlvbmFsIHJlcXVpcmVtZW50LiAgSW5zdGVhZCwgd2Ugd2FudCB0byBiZSBhYmxlIHRvIGFzc2VydCB0aGF0IHRoZXNlCiAgICAgICAgcmVxdWlyZW1lbnRzIGFyZSB0cnVseSByZXF1aXJlZC4KICAgICAgICBOcg8AAAByAQAAACkB2hNyZXBsYWNlX2NvbmZsaWN0aW5nVOn/////cgkBAAApF9oEbGlzdNoKX1JlcUV4dHJhc9oLY29sbGVjdGlvbnPaC2RlZmF1bHRkaWN02gNzZXTaA3BvcNoMbWFya2Vyc19wYXNzcr4AAAByNQAAAHLpAAAAcmAAAABy5wAAAHJhAAAA2gpiZXN0X21hdGNocmgAAABytwAAAHJnAAAAcpoAAABy/gAAANoGZXh0cmFz2gZleHRlbmRy9gAAANoMcHJvamVjdF9uYW1lKRJykAAAANoMcmVxdWlyZW1lbnRz2gNlbnbaCWluc3RhbGxlcnIIAQAAchIBAADaCXByb2Nlc3NlZNoEYmVzdNoLdG9fYWN0aXZhdGXaCnJlcV9leHRyYXNymQAAAHKTAAAAcpIAAABy8wAAAHKcAAAA2g1kZXBlbmRlbnRfcmVx2hBuZXdfcmVxdWlyZW1lbnRz2g9uZXdfcmVxdWlyZW1lbnRyGQAAAHIZAAAAchoAAABy9QAAAL8CAABzTgAAAAAbEgIEAgQBBAIGBAoCCgIKAQgCAgIMAQICDAEKAg4BFgEEAQgBCAEMBQgBCAEEAQYBEgIKAQwBCgEKAQoCCAEQAxYBCgMKARABEAIMA3oSV29ya2luZ1NldC5yZXNvbHZlYwUAAAAAAAAADwAAABIAAABDAAAAcwIBAAB0AHwBgwF9BXwFagGDAAEAaQB9BmkAfQd8AmQBawhyNHQCfABqA4MBfQh8CHwBNwB9CG4IfAJ8ARcAfQh8AGoEZwCDAX0JdAB0BXwJagZ8AIMCgwEBAHiSfAVEAF2KfQp4hHwBfAoZAEQAXXh9C3wLageDAGcBfQx5EnwJagh8DHwIfAODA30NVwBuNAQAdAlrCnK+AQB9DgEAehh8DnwGfAs8AHwEcqx3am4CUABXAFkAZAFkAX0Ofg5YAHFqWAB0AHQFfAlqBnwNgwKDAQEAfAdqCnQLagx8DYMBgwEBAFAAcWpXAHFcVwB0AHwHgwF9B3wHagGDAAEAfAd8BmYCUwApAmFzBgAARmluZCBhbGwgYWN0aXZhdGFibGUgZGlzdHJpYnV0aW9ucyBpbiBgcGx1Z2luX2VudmAKCiAgICAgICAgRXhhbXBsZSB1c2FnZTo6CgogICAgICAgICAgICBkaXN0cmlidXRpb25zLCBlcnJvcnMgPSB3b3JraW5nX3NldC5maW5kX3BsdWdpbnMoCiAgICAgICAgICAgICAgICBFbnZpcm9ubWVudChwbHVnaW5fZGlybGlzdCkKICAgICAgICAgICAgKQogICAgICAgICAgICAjIGFkZCBwbHVnaW5zK2xpYnMgdG8gc3lzLnBhdGgKICAgICAgICAgICAgbWFwKHdvcmtpbmdfc2V0LmFkZCwgZGlzdHJpYnV0aW9ucykKICAgICAgICAgICAgIyBkaXNwbGF5IGVycm9ycwogICAgICAgICAgICBwcmludCgnQ291bGQgbm90IGxvYWQnLCBlcnJvcnMpCgogICAgICAgIFRoZSBgcGx1Z2luX2VudmAgc2hvdWxkIGJlIGFuIGBgRW52aXJvbm1lbnRgYCBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zCiAgICAgICAgb25seSBkaXN0cmlidXRpb25zIHRoYXQgYXJlIGluIHRoZSBwcm9qZWN0J3MgInBsdWdpbiBkaXJlY3RvcnkiIG9yCiAgICAgICAgZGlyZWN0b3JpZXMuIFRoZSBgZnVsbF9lbnZgLCBpZiBzdXBwbGllZCwgc2hvdWxkIGJlIGFuIGBgRW52aXJvbm1lbnRgYAogICAgICAgIGNvbnRhaW5zIGFsbCBjdXJyZW50bHktYXZhaWxhYmxlIGRpc3RyaWJ1dGlvbnMuICBJZiBgZnVsbF9lbnZgIGlzIG5vdAogICAgICAgIHN1cHBsaWVkLCBvbmUgaXMgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIGBgV29ya2luZ1NldGBgIHRoaXMKICAgICAgICBtZXRob2QgaXMgY2FsbGVkIG9uLCB3aGljaCB3aWxsIHR5cGljYWxseSBtZWFuIHRoYXQgZXZlcnkgZGlyZWN0b3J5IG9uCiAgICAgICAgYGBzeXMucGF0aGBgIHdpbGwgYmUgc2Nhbm5lZCBmb3IgZGlzdHJpYnV0aW9ucy4KCiAgICAgICAgYGluc3RhbGxlcmAgaXMgYSBzdGFuZGFyZCBpbnN0YWxsZXIgY2FsbGJhY2sgYXMgdXNlZCBieSB0aGUKICAgICAgICBgYHJlc29sdmUoKWBgIG1ldGhvZC4gVGhlIGBmYWxsYmFja2AgZmxhZyBpbmRpY2F0ZXMgd2hldGhlciB3ZSBzaG91bGQKICAgICAgICBhdHRlbXB0IHRvIHJlc29sdmUgb2xkZXIgdmVyc2lvbnMgb2YgYSBwbHVnaW4gaWYgdGhlIG5ld2VzdCB2ZXJzaW9uCiAgICAgICAgY2Fubm90IGJlIHJlc29sdmVkLgoKICAgICAgICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgMi10dXBsZTogKGBkaXN0cmlidXRpb25zYCwgYGVycm9yX2luZm9gKSwgd2hlcmUKICAgICAgICBgZGlzdHJpYnV0aW9uc2AgaXMgYSBsaXN0IG9mIHRoZSBkaXN0cmlidXRpb25zIGZvdW5kIGluIGBwbHVnaW5fZW52YAogICAgICAgIHRoYXQgd2VyZSBsb2FkYWJsZSwgYWxvbmcgd2l0aCBhbnkgb3RoZXIgZGlzdHJpYnV0aW9ucyB0aGF0IGFyZSBuZWVkZWQKICAgICAgICB0byByZXNvbHZlIHRoZWlyIGRlcGVuZGVuY2llcy4gIGBlcnJvcl9pbmZvYCBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZwogICAgICAgIHVubG9hZGFibGUgcGx1Z2luIGRpc3RyaWJ1dGlvbnMgdG8gYW4gZXhjZXB0aW9uIGluc3RhbmNlIGRlc2NyaWJpbmcgdGhlCiAgICAgICAgZXJyb3IgdGhhdCBvY2N1cnJlZC4gVXN1YWxseSB0aGlzIHdpbGwgYmUgYSBgYERpc3RyaWJ1dGlvbk5vdEZvdW5kYGAgb3IKICAgICAgICBgYFZlcnNpb25Db25mbGljdGBgIGluc3RhbmNlLgogICAgICAgIE4pDXIKAQAA2gRzb3J0cmAAAABy5wAAAHKOAAAAcgYAAABy9gAAANoOYXNfcmVxdWlyZW1lbnRy9QAAAHJmAAAAciIAAAByJAAAAHIlAAAAKQ9ykAAAANoKcGx1Z2luX2VudtoIZnVsbF9lbnZyFwEAANoIZmFsbGJhY2vaD3BsdWdpbl9wcm9qZWN0c9oKZXJyb3JfaW5mb9oNZGlzdHJpYnV0aW9uc3IWAQAA2gpzaGFkb3dfc2V0chQBAABykgAAAHKTAAAA2glyZXNvbHZlZXNyHwAAAHIZAAAAchkAAAByGgAAANoMZmluZF9wbHVnaW5zGwMAAHM0AAAAACQIAggCBAEEAggBCgEKAggCCgIQAgoCDgIKAgIBEgIQAggBBAIEAxQDEAEQAwoCCAEIAnoXV29ya2luZ1NldC5maW5kX3BsdWdpbnNjAQAAAAAAAAAEAAAAAwAAAEcAAABzKgAAAHwAagB0AXwBgwGDAX0CeBZ8AkQAXQ59A3wAagJ8A4MBAQBxFFcAfAJTACkBYb4BAABFbnN1cmUgdGhhdCBkaXN0cmlidXRpb25zIG1hdGNoaW5nIGByZXF1aXJlbWVudHNgIGFyZSBhY3RpdmF0ZWQKCiAgICAgICAgYHJlcXVpcmVtZW50c2AgbXVzdCBiZSBhIHN0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fAFkARcAZgJ8Ap4CjgB9BHkMdAV8BIMBAQBXAG4cBAB0BmsKckwBAAEAAQB8AGoHgwABAFkAbgJYAHwAagh8A4MBAQBkAnwAagl8BDwAfARTACkDYa4CAABSZXR1cm4gYWJzb2x1dGUgbG9jYXRpb24gaW4gY2FjaGUgZm9yIGBhcmNoaXZlX25hbWVgIGFuZCBgbmFtZXNgCgogICAgICAgIFRoZSBwYXJlbnQgZGlyZWN0b3J5IG9mIHRoZSByZXN1bHRpbmcgcGF0aCB3aWxsIGJlIGNyZWF0ZWQgaWYgaXQgZG9lcwogICAgICAgIG5vdCBhbHJlYWR5IGV4aXN0LiAgYGFyY2hpdmVfbmFtZWAgc2hvdWxkIGJlIHRoZSBiYXNlIGZpbGVuYW1lIG9mIHRoZQogICAgICAgIGVuY2xvc2luZyBlZ2cgKHdoaWNoIG1heSBub3QgYmUgdGhlIG5hbWUgb2YgdGhlIGVuY2xvc2luZyB6aXBmaWxlISksCiAgICAgICAgaW5jbHVkaW5nIGl0cyAiLmVnZyIgZXh0ZW5zaW9uLiAgYG5hbWVzYCwgaWYgcHJvdmlkZWQsIHNob3VsZCBiZSBhCiAgICAgICAgc2VxdWVuY2Ugb2YgcGF0aCBuYW1lIHBhcnRzICJ1bmRlciIgdGhlIGVnZydzIGV4dHJhY3Rpb24gbG9jYXRpb24uCgogICAgICAgIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSByZXNvdXJjZSBwcm92aWRlcnMgdGhhdCBuZWVkIHRvCiAgICAgICAgb2J0YWluIGFuIGV4dHJhY3Rpb24gbG9jYXRpb24sIGFuZCBvbmx5IGZvciBuYW1lcyB0aGV5IGludGVuZCB0bwogICAgICAgIGV4dHJhY3QsIGFzIGl0IHRyYWNrcyB0aGUgZ2VuZXJhdGVkIG5hbWVzIGZvciBwb3NzaWJsZSBjbGVhbnVwIGxhdGVyLgogICAgICAgIHoELXRtcHIPAAAAKQpyUQEAAHJfAAAAcrIAAAByswAAAHJEAAAA2hhfYnlwYXNzX2Vuc3VyZV9kaXJlY3RvcnnaCUV4Y2VwdGlvbnJaAQAA2hxfd2Fybl91bnNhZmVfZXh0cmFjdGlvbl9wYXRock4BAAApBXKQAAAA2gxhcmNoaXZlX25hbWXaBW5hbWVz2gxleHRyYWN0X3BhdGjaC3RhcmdldF9wYXRochkAAAByGQAAAHIaAAAA2g5nZXRfY2FjaGVfcGF0aJ4EAABzEgAAAAANDAEYAQIBDAEOAQ4CCgIKAXoeUmVzb3VyY2VNYW5hZ2VyLmdldF9jYWNoZV9wYXRoYwEAAAAAAAAAAwAAAAMAAABDAAAAc1gAAAB0AGoBZAFrAnIgfABqAnQAagNkAhkAgwEMAHIgZANTAHQAagR8AIMBagV9AXwBdARqBkAAc0B8AXQEagdAAHJUZAR8ABYAfQJ0CGoJfAJ0CoMCAQBkA1MAKQVhTgEAAAogICAgICAgIElmIHRoZSBkZWZhdWx0IGV4dHJhY3Rpb24gcGF0aCBpcyBvdmVycmlkZGVuIGFuZCBzZXQgdG8gYW4gaW5zZWN1cmUKICAgICAgICBsb2NhdGlvbiwgc3VjaCBhcyAvdG1wLCBpdCBvcGVucyB1cCBhbiBvcHBvcnR1bml0eSBmb3IgYW4gYXR0YWNrZXIgdG8KICAgICAgICByZXBsYWNlIGFuIGV4dHJhY3RlZCBmaWxlIHdpdGggYW4gdW5hdXRob3JpemVkIHBheWxvYWQuIFdhcm4gdGhlIHVzZXIKICAgICAgICBpZiBhIGtub3duIGluc2VjdXJlIGxvY2F0aW9uIGlzIHVzZWQuCgogICAgICAgIFNlZSBEaXN0cmlidXRlICMzNzUgZm9yIG1vcmUgZGV0YWlscy4KICAgICAgICDaAm502gZ3aW5kaXJOesslcyBpcyB3cml0YWJsZSBieSBncm91cC9vdGhlcnMgYW5kIHZ1bG5lcmFibGUgdG8gYXR0YWNrIHdoZW4gdXNlZCB3aXRoIGdldF9yZXNvdXJjZV9maWxlbmFtZS4gQ29uc2lkZXIgYSBtb3JlIHNlY3VyZSBsb2NhdGlvbiAoc2V0IHdpdGggLnNldF9leHRyYWN0aW9uX3BhdGggb3IgdGhlIFBZVEhPTl9FR0dfQ0FDSEUgZW52aXJvbm1lbnQgdmFyaWFibGUpLikLcrIAAABy1wAAAHLFAAAA2gdlbnZpcm9u2gRzdGF02gdzdF9tb2Rl2gdTX0lXT1RI2gdTX0lXR1JQ2gh3YXJuaW5nc9oEd2FybtoLVXNlcldhcm5pbmcpA3KzAAAA2gRtb2Rl2gNtc2dyGQAAAHIZAAAAchoAAAByXQEAALcEAABzDgAAAAAKHAQEAQwBFAICBAYCeixSZXNvdXJjZU1hbmFnZXIuX3dhcm5fdW5zYWZlX2V4dHJhY3Rpb25fcGF0aGMDAAAAAAAAAAQAAAADAAAAQwAAAHMuAAAAdABqAWQBawJyKnQAagJ8AYMBagNkAkIAZANAAH0DdABqBHwBfAODAgEAZARTACkFYTQCAABQZXJmb3JtIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBwb3N0cHJvY2Vzc2luZyBvZiBgdGVtcG5hbWVgCgogICAgICAgIFRoaXMgaXMgd2hlcmUgTWFjIGhlYWRlciByZXdyaXRlcyBzaG91bGQgYmUgZG9uZTsgb3RoZXIgcGxhdGZvcm1zIGRvbid0CiAgICAgICAgaGF2ZSBhbnl0aGluZyBzcGVjaWFsIHRoZXkgc2hvdWxkIGRvLgoKICAgICAgICBSZXNvdXJjZSBwcm92aWRlcnMgc2hvdWxkIGNhbGwgdGhpcyBtZXRob2QgT05MWSBhZnRlciBzdWNjZXNzZnVsbHkKICAgICAgICBleHRyYWN0aW5nIGEgY29tcHJlc3NlZCByZXNvdXJjZS4gIFRoZXkgbXVzdCBOT1QgY2FsbCBpdCBvbiByZXNvdXJjZXMKICAgICAgICB0aGF0IGFyZSBhbHJlYWR5IGluIHRoZSBmaWxlc3lzdGVtLgoKICAgICAgICBgdGVtcG5hbWVgIGlzIHRoZSBjdXJyZW50ICh0ZW1wb3JhcnkpIG5hbWUgb2YgdGhlIGZpbGUsIGFuZCBgZmlsZW5hbWVgCiAgICAgICAgaXMgdGhlIG5hbWUgaXQgd2lsbCBiZSByZW5hbWVkIHRvIGJ5IHRoZSBjYWxsZXIgYWZ0ZXIgdGhpcyByb3V0aW5lCiAgICAgICAgcmV0dXJucy4KICAgICAgICDaBXBvc2l4aW0BAABp/w8AAE4pBXKyAAAActcAAAByZgEAAHJnAQAA2gVjaG1vZCkEcpAAAADaCHRlbXBuYW1l2ghmaWxlbmFtZXJtAQAAchkAAAByGQAAAHIaAAAA2gtwb3N0cHJvY2Vzc9EEAABzBgAAAAAPCgIUAXobUmVzb3VyY2VNYW5hZ2VyLnBvc3Rwcm9jZXNzYwIAAAAAAAAAAgAAAAIAAABDAAAAcxgAAAB8AGoAcg50AWQBgwGCAXwBfABfAmQCUwApA2HSAwAAU2V0IHRoZSBiYXNlIHBhdGggd2hlcmUgcmVzb3VyY2VzIHdpbGwgYmUgZXh0cmFjdGVkIHRvLCBpZiBuZWVkZWQuCgogICAgICAgIElmIHlvdSBkbyBub3QgY2FsbCB0aGlzIHJvdXRpbmUgYmVmb3JlIGFueSBleHRyYWN0aW9ucyB0YWtlIHBsYWNlLCB0aGUKICAgICAgICBwYXRoIGRlZmF1bHRzIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgYGBnZXRfZGVmYXVsdF9jYWNoZSgpYGAuICAoV2hpY2gKICAgICAgICBpcyBiYXNlZCBvbiB0aGUgYGBQWVRIT05fRUdHX0NBQ0hFYGAgZW52aXJvbm1lbnQgdmFyaWFibGUsIHdpdGggdmFyaW91cwogICAgICAgIHBsYXRmb3JtLXNwZWNpZmljIGZhbGxiYWNrcy4gIFNlZSB0aGF0IHJvdXRpbmUncyBkb2N1bWVudGF0aW9uIGZvciBtb3JlCiAgICAgICAgZGV0YWlscy4pCgogICAgICAgIFJlc291cmNlcyBhcmUgZXh0cmFjdGVkIHRvIHN1YmRpcmVjdG9yaWVzIG9mIHRoaXMgcGF0aCBiYXNlZCB1cG9uCiAgICAgICAgaW5mb3JtYXRpb24gZ2l2ZW4gYnkgdGhlIGBgSVJlc291cmNlUHJvdmlkZXJgYC4gIFlvdSBtYXkgc2V0IHRoaXMgdG8gYQogICAgICAgIHRlbXBvcmFyeSBkaXJlY3RvcnksIGJ1dCB0aGVuIHlvdSBtdXN0IGNhbGwgYGBjbGVhbnVwX3Jlc291cmNlcygpYGAgdG8KICAgICAgICBkZWxldGUgdGhlIGV4dHJhY3RlZCBmaWxlcyB3aGVuIGRvbmUuICBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdAogICAgICAgIGBgY2xlYW51cF9yZXNvdXJjZXMoKWBgIHdpbGwgYmUgYWJsZSB0byByZW1vdmUgYWxsIGV4dHJhY3RlZCBmaWxlcy4KCiAgICAgICAgKE5vdGU6IHlvdSBtYXkgbm90IGNoYW5nZSB0aGUgZXh0cmFjdGlvbiBwYXRoIGZvciBhIGdpdmVuIHJlc291cmNlCiAgICAgICAgbWFuYWdlciBvbmNlIHJlc291cmNlcyBoYXZlIGJlZW4gZXh0cmFjdGVkLCB1bmxlc3MgeW91IGZpcnN0IGNhbGwKICAgICAgICBgYGNsZWFudXBfcmVzb3VyY2VzKClgYC4pCiAgICAgICAgejVDYW4ndCBjaGFuZ2UgZXh0cmFjdGlvbiBwYXRoLCBmaWxlcyBhbHJlYWR5IGV4dHJhY3RlZE4pA3JOAQAAckcAAAByUQEAACkCcpAAAAByswAAAHIZAAAAchkAAAByGgAAAHJdAAAA5QQAAHMIAAAAABMGAQIBBgN6I1Jlc291cmNlTWFuYWdlci5zZXRfZXh0cmFjdGlvbl9wYXRoRmMCAAAAAAAAAAIAAAABAAAAQwAAAHMEAAAAZAFTACkCYUICAAAKICAgICAgICBEZWxldGUgYWxsIGV4dHJhY3RlZCByZXNvdXJjZSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMsIHJldHVybmluZyBhIGxpc3QKICAgICAgICBvZiB0aGUgZmlsZSBhbmQgZGlyZWN0b3J5IG5hbWVzIHRoYXQgY291bGQgbm90IGJlIHN1Y2Nlc3NmdWxseSByZW1vdmVkLgogICAgICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgaGF2ZSBhbnkgY29uY3VycmVuY3kgcHJvdGVjdGlvbiwgc28gaXQgc2hvdWxkCiAgICAgICAgZ2VuZXJhbGx5IG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlIGV4dHJhY3Rpb24gcGF0aCBpcyBhIHRlbXBvcmFyeQogICAgICAgIGRpcmVjdG9yeSBleGNsdXNpdmUgdG8gYSBzaW5nbGUgcHJvY2Vzcy4gIFRoaXMgbWV0aG9kIGlzIG5vdAogICAgICAgIGF1dG9tYXRpY2FsbHkgY2FsbGVkOyB5b3UgbXVzdCBjYWxsIGl0IGV4cGxpY2l0bHkgb3IgcmVnaXN0ZXIgaXQgYXMgYW4KICAgICAgICBgYGF0ZXhpdGBgIGZ1bmN0aW9uIGlmIHlvdSB3aXNoIHRvIGVuc3VyZSBjbGVhbnVwIG9mIGEgdGVtcG9yYXJ5CiAgICAgICAgZGlyZWN0b3J5IHVzZWQgZm9yIGV4dHJhY3Rpb25zLgog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AAAAAAAAAAAAAgAAAEAAAABzGAAAAGUAWgFkAFoCZAFaA2QCZAOEAFoEZARTACkFcoAAAABhcwIAAE1ldGFkYXRhIHByb3ZpZGVyIGZvciBlZ2cgZGlyZWN0b3JpZXMKCiAgICBVc2FnZTo6CgogICAgICAgICMgRGV2ZWxvcG1lbnQgZWdnczoKCiAgICAgICAgZWdnX2luZm8gPSAiL3BhdGgvdG8vUGFja2FnZU5hbWUuZWdnLWluZm8iCiAgICAgICAgYmFzZV9kaXIgPSBvcy5wYXRoLmRpcm5hbWUoZWdnX2luZm8pCiAgICAgICAgbWV0YWRhdGEgPSBQYXRoTWV0YWRhdGEoYmFzZV9kaXIsIGVnZ19pbmZvKQogICAgICAgIGRpc3RfbmFtZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShlZ2dfaW5mbykpWzBdCiAgICAgICAgZGlzdCA9IERpc3RyaWJ1dGlvbihiYXNlZGlyLCBwcm9qZWN0X25hbWU9ZGlzdF9uYW1lLCBtZXRhZGF0YT1tZXRhZGF0YSkKCiAgICAgICAgIyBVbnBhY2tlZCBlZ2cgZGlyZWN0b3JpZXM6CgogICAgICAgIGVnZ19wYXRoID0gIi9wYXRoL3RvL1BhY2thZ2VOYW1lLXZlci1weXZlci1ldGMuZWdnIgogICAgICAgIG1ldGFkYXRhID0gUGF0aE1ldGFkYXRhKGVnZ19wYXRoLCBvcy5wYXRoLmpvaW4oZWdnX3BhdGgsJ0VHRy1JTkZPJykpCiAgICAgICAgZGlzdCA9IERpc3RyaWJ1dGlvbi5mcm9tX2ZpbGVuYW1lKGVnZ19wYXRoLCBtZXRhZGF0YT1tZXRhZGF0YSkKICAgIGMDAAAAAAAAAAMAAAACAAAAQwAAAHMQAAAAfAF8AF8AfAJ8AF8BZABTACkBTikCcoUBAAByiwEAACkDcpAAAAByswAAAHKLAQAAchkAAAByGQAAAHIaAAAAcu0AAAAjBwAAcwQAAAAAAQYBehVQYXRoTWV0YWRhdGEuX19pbml0X19OKQVyFQAAAHIWAAAAchcAAAByGAAAAHLtAAAAchkAAAByGQAAAHIZAAAAchoAAABygAAAAA8HAABzBAAAAAgSBAJjAAAAAAAAAAAAAAAAAgAAAEAA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AAAAcigAAAByLgAAAHIwAAAAcjMAAAByNwAAAHI4AAAAcjkAAADaCl9zZ2V0X25vbmXaCl9zc2V0X25vbmVySgAAANoHX19hbGxfX3JcAQAAcmYAAAByZwAAAHKYAAAAcmgAAAByaQAAAHKfAAAAchsAAAByTQEAAHJ4AAAAcnkAAAByegAAAHJ7AAAAcnwAAAByigAAAHJNAAAAckUAAABywAAAAHI/AAAAcpYBAAByQAAAAHLLAAAAcm4AAABybwAAAHJMAAAAcowAAAByTgAAAHJPAAAAclAAAAByUQAAAHJ9AAAAcn4AAAByuwIAAHJhAAAAciQAAAByCwEAAHJgAAAAco0AAAByagAAAHJiAAAAcl8AAABybAAAAHJtAAAAcnIAAABycwAAAHJ0AAAAcnUAAAByhAAAAHKFAAAAcoYAAABysQEAAHKCAAAAcoMAAABysgEAAHK7AQAAcocAAAByBAIAAHJ/AAAAcoAAAABygQAAAHKIAAAAclwAAAByAgIAAHIIAgAAchECAAByGgIAAHISAgAAch8CAAByFQIAAHIdAgAAcjACAAByHgIAANoLSW1wSW1wb3J0ZXJytQAAAHIzAgAAcokAAAByQAIAAHI9AgAAclkAAAByiwAAAHJSAgAAclMCAABydwAAAHITAgAAcqUBAAByFAIAAHI7AgAAcnAAAAByQQAAAHJdAgAA2gdWRVJCT1NF2gpJR05PUkVDQVNFcogCAAByZQAAAHJ9AgAAcoECAAByYwAAAHK9AgAAcr8CAAByhwIAAHK1AgAAckcAAAByzwIAAHJrAAAAchUBAAByZAAAAHLcAgAAcqoAAABydgAAAHJbAQAAcnEAAABy3gEAANoOZmlsdGVyd2FybmluZ3Ny7AIAAHIhAAAAcu4CAABy7wIAAHIZAAAAchkAAAByGQAAAHIaAAAA2gg8bW9kdWxlPhAAAABz4AEAAAQCDAIIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQwCAgEMAQ4CDgIMARQDDAECARQBCAEQAgoCDAEQAgIBCgIKARABCgIMAQwBDAEIAQgBCAEIAx4BCAIIAgQBBAQEAQQBBAEEAQQBBAEEAQQBBAEEAQQBBAEEAQQBBAEEAQQDEAcIBwQDCAUICAgHCAQIBQgECAQMAwgaCAEGAQIBBgEGAwYBBgECAwYBBgMGAQQDAgMIAQgBCAMEAwoDBgEIAQgBBgEEAwgEEAcQIBANEBsQBAQCDgEEAQQBBAEEAQQDCAoIDQwQCAQIGAoBCgIEAwguCAoEAwgLCAUKBQgFDhcQHBB/AH8AfwAGEBQQfwAUBAMQEA5/ADUIDAgICAwICQgICA4KDw5kCgMQFhAbCAMQEQYDEBsQFBB/AC0MAxAnEBkQDwwDCAoKBwobDAMKBAoDCBoMIAgRDhEIFQgPCAsIDgwCDAEMAgwBDAMIEggaCCEIIQwMCA0MAQwCDAEMAwgECgMIBQwICAcICggICA4MAQQJAgEQBBB/AAUICQgNEH8AfwB/AAwQExAzAgECAQgECA0QBQgWFDYICggICAYICggaCA8QBAgFAgEQCw==