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QWRhcHRlcnQGAAAATk9UU0VUdAsAAABOdWxsSGFuZGxlcnQNAAAAU3RyZWFtSGFuZGxlcnQEAAAAV0FSTnQHAAAAV0FSTklOR3QMAAAAYWRkTGV2ZWxOYW1ldAsAAABiYXNpY0NvbmZpZ3QPAAAAY2FwdHVyZVdhcm5pbmdzdAgAAABjcml0aWNhbHQFAAAAZGVidWd0BwAAAGRpc2FibGV0BQAAAGVycm9ydAkAAABleGNlcHRpb250BQAAAGZhdGFsdAwAAABnZXRMZXZlbE5hbWV0CQAAAGdldExvZ2dlcnQOAAAAZ2V0TG9nZ2VyQ2xhc3N0BAAAAGluZm90AwAAAGxvZ3QNAAAAbWFrZUxvZ1JlY29yZHQOAAAAc2V0TG9nZ2VyQ2xhc3N0BAAAAHdhcm50BwAAAHdhcm5pbmdzJgAAAFZpbmF5IFNhamlwIDx2aW5heV9zYWppcEByZWQtZG92ZS5jb20+dAoAAABwcm9kdWN0aW9ucwcAAAAwLjUuMS4ycxAAAAAwNyBGZWJydWFyeSAyMDEwdAYAAABmcm96ZW5zEwAAAGxvZ2dpbmclc19faW5pdF9fJXNp/P///3MEAAAALnB5Y3MEAAAALnB5b3MDAAAALnB5YwAAAAAAAAAAAwAAAEMAAABzKQAAAHkKAHQAAIIBAFduGAABAQF0AQBqAgCDAABkAQAZagMAagQAU1hkAgBTKAMAAABzNQAAAFJldHVybiB0aGUgZnJhbWUgb2JqZWN0IGZvciB0aGUgY2FsbGVyJ3Mgc3RhY2sgZnJhbWUuaQIAAABOKAUAAAB0CQAAAEV4Y2VwdGlvbnQDAAAAc3lzdAgAAABleGNfaW5mb3QIAAAAdGJfZnJhbWV0BgAAAGZfYmFjaygAAAAAKAAAAAAoAAAAAHNXAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9sb2dnaW5nL19faW5pdF9fLnB5dAwAAABjdXJyZW50ZnJhbWVKAAAAcwgAAAAAAgMBCgEDAXQJAAAAX2dldGZyYW1lYwAAAAAAAAAAAgAAAEMAAABzDQAAAHQAAGoBAGQBAIMBAFMoAgAAAE5pAwAAACgCAAAAUigAAABSLQAAACgAAAAAKAAAAAAoAAAAAHNXAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9sb2dnaW5nL19faW5pdF9fLnB5dAgAAAA8bGFtYmRhPlEAAABzAAAAAGkBAAAAaTIAAABpKAAAAGkeAAAAaRQAAABpCgAAAGkAAAAAYwEAAAABAAAABAAAAEMAAABzFAAAAHQAAGoBAHwAAGQBAHwAABaDAgBTKAIAAABzDwIAAAogICAgUmV0dXJuIHRoZSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIGxvZ2dpbmcgbGV2ZWwgJ2xldmVsJy4KCiAgICBJZiB0aGUgbGV2ZWwgaXMgb25lIG9mIHRoZSBwcmVkZWZpbmVkIGxldmVscyAoQ1JJVElDQUwsIEVSUk9SLCBXQVJOSU5HLAogICAgSU5GTywgREVCVUcpIHRoZW4geW91IGdldCB0aGUgY29ycmVzcG9uZGluZyBzdHJpbmcuIElmIHlvdSBoYXZlCiAgICBhc3NvY2lhdGVkIGxldmVscyB3aXRoIG5hbWVzIHVzaW5nIGFkZExldmVsTmFtZSB0aGVuIHRoZSBuYW1lIHlvdSBoYXZlCiAgICBhc3NvY2lhdGVkIHdpdGggJ2xldmVsJyBpcyByZXR1cm5lZC4KCiAgICBJZiBhIG51bWVyaWMgdmFsdWUgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIGRlZmluZWQgbGV2ZWxzIGlzIHBhc3NlZAogICAgaW4sIHRoZSBjb3JyZXNwb25kaW5nIHN0cmluZyByZXByZXNlbnRhdGlvbiBpcyByZXR1cm5lZC4KCiAgICBPdGhlcndpc2UsIHRoZSBzdHJpbmcgIkxldmVsICVzIiAlIGxldmVsIGlzIHJldHVybmVkLgogICAgcwgAAABMZXZlbCAlcygCAAAAdAsAAABfbGV2ZWxOYW1lc3QDAAAAZ2V0KAEAAAB0BQAAAGxldmVsKAAAAAAoAAAAAHNXAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9sb2dnaW5nL19faW5pdF9fLnB5UhwAAACZAAAAcwIAAAAADmMCAAAAAgAAAAQAAABDAAAAcy4AAAB0AACDAAABehgAfAEAdAEAfAAAPHwAAHQBAHwBADxXZAEAdAIAgwAAAVhkAQBTKAIAAABzeQAAAAogICAgQXNzb2NpYXRlICdsZXZlbE5hbWUnIHdpdGggJ2xldmVsJy4KCiAgICBUaGlzIGlzIHVzZWQgd2hlbiBjb252ZXJ0aW5nIGxldmVscyB0byB0ZXh0IGR1cmluZyBtZXNzYWdlIGZvcm1hdHRpbmcuCiAgICBOKAMAAAB0DAAAAF9hY3F1aXJlTG9ja1IvAAAAdAwAAABfcmVsZWFzZUxvY2soAgAAAFIxAAAAdAkAAABsZXZlbE5hbWUoAAAAACgAAAAAc1cAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2xvZ2dpbmcvX19pbml0X18ucHlSEwAAAKkAAABzCgAAAAAGBwEDAQoBDgJjAQAAAAIAAAAEAAAAQwAAAHNwAAAAdAAAfAAAdAEAdAIAZgIAgwIAch4AfAAAfQEAbk4AdAMAfAAAgwEAfAAAawIAclwAfAAAdAQAawcAck8AdAUAZAEAfAAAFoMBAIIBAG4AAHQEAHwAABl9AQBuEAB0BgBkAgB8AAAWgwEAggEAfAEAUygDAAAATnMRAAAAVW5rbm93biBsZXZlbDogJXJzKgAAAExldmVsIG5vdCBhbiBpbnRlZ2VyIG9yIGEgdmFsaWQgc3RyaW5nOiAlcigHAAAAdAoAAABpc2luc3RhbmNldAMAAABpbnR0BAAAAGxvbmd0AwAAAHN0clIvAAAAdAoAAABWYWx1ZUVycm9ydAkAAABUeXBlRXJyb3IoAgAAAFIxAAAAdAIAAABydigAAAAAKAAAAABzVwAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvbG9nZ2luZy9fX2luaXRfXy5weXQLAAAAX2NoZWNrTGV2ZWy2AAAAcxAAAAAAARUBCQESAQwBEwENAhABYwAAAAAAAAAAAQAAAEMAAABzFwAAAHQAAHITAHQAAGoBAIMAAAFuAABkAQBTKAIAAABzgAAAAAogICAgQWNxdWlyZSB0aGUgbW9kdWxlLWxldmVsIGxvY2sgZm9yIHNlcmlhbGl6aW5nIGFjY2VzcyB0byBzaGFyZWQgZGF0YS4KCiAgICBUaGlzIHNob3VsZCBiZSByZWxlYXNlZCB3aXRoIF9yZWxlYXNlTG9jaygpLgogICAgTigCAAAAdAUAAABfbG9ja3QHAAAAYWNxdWlyZSgAAAAAKAAAAAAoAAAAAHNXAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9sb2dnaW5nL19faW5pdF9fLnB5UjIAAADSAAAAcwQAAAAABgYBYwAAAAAAAAAAAQAAAEMAAABzFwAAAHQAAHITAHQAAGoBAIMAAAFuAABkAQBTKAIAAABzSwAAAAogICAgUmVsZWFzZSB0aGUgbW9kdWxlLWxldmVsIGxvY2sgYWNxdWlyZWQgYnkgY2FsbGluZyBfYWNxdWlyZUxvY2soKS4KICAgIE4oAgAAAFI9AAAAdAcAAAByZWxlYXNlKAAAAAAoAAAAACgAAAAAc1cAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2xvZ2dpbmcvX19pbml0X18ucHlSMwAAANsAAABzBAAAAAAEBgFjAAAAAAAAAAACAAAAQgAAAHMsAAAAZQAAWgEAZAAAWgIAZAQAZAEAhAEAWgQAZAIAhAAAWgUAZAMAhAAAWgYAUlMoBQAAAHMRAgAACiAgICBBIExvZ1JlY29yZCBpbnN0YW5jZSByZXByZXNlbnRzIGFuIGV2ZW50IGJlaW5nIGxvZ2dlZC4KCiAgICBMb2dSZWNvcmQgaW5zdGFuY2VzIGFyZSBjcmVhdGVkIGV2ZXJ5IHRpbWUgc29tZXRoaW5nIGlzIGxvZ2dlZC4gVGhleQogICAgY29udGFpbiBhbGwgdGhlIGluZm9ybWF0aW9uIHBlcnRpbmVudCB0byB0aGUgZXZlbnQgYmVpbmcgbG9nZ2VkLiBUaGUKICAgIG1haW4gaW5mb3JtYXRpb24gcGFzc2VkIGluIGlzIGluIG1zZyBhbmQgYXJncywgd2hpY2ggYXJlIGNvbWJpbmVkCiAgICB1c2luZyBzdHIobXNnKSAlIGFyZ3MgdG8gY3JlYXRlIHRoZSBtZXNzYWdlIGZpZWxkIG9mIHRoZSByZWNvcmQuIFRoZQogICAgcmVjb3JkIGFsc28gaW5jbHVkZXMgaW5mb3JtYXRpb24gc3VjaCBhcyB3aGVuIHRoZSByZWNvcmQgd2FzIGNyZWF0ZWQsCiAgICB0aGUgc291cmNlIGxpbmUgd2hlcmUgdGhlIGxvZ2dpbmcgY2FsbCB3YXMgbWFkZSwgYW5kIGFueSBleGNlcHRpb24KICAgIGluZm9ybWF0aW9uIHRvIGJlIGxvZ2dlZC4KICAgIGMJAAAACwAAAAoAAABDAAAAcyICAAB0AABqAACDAAB9CQB8AQB8AABfAQB8BQB8AABfAgB8BgByYAB0AwB8BgCDAQBkAQBrAgByYAB0BAB8BgBkAgAZdAUAgwIAcmAAfAYAZAIAGXJgAHwGAGQCABl9BgBuAAB8BgB8AABfBgB0BwB8AgCDAQB8AABfCAB8AgB8AABfCQB8AwB8AABfCgB5NQB0CwBqDABqDQB8AwCDAQB8AABfDgB0CwBqDABqDwB8AABqDgCDAQBkAgAZfAAAXxAAV24sAAR0EQB0EgB0EwBmAwBrCgBy7QABAQF8AwB8AABfDgBkAwB8AABfEABuAQBYfAcAfAAAXxQAZAgAfAAAXxYAfAQAfAAAXxcAfAgAfAAAXxgAfAkAfAAAXxkAfAkAdBoAfAkAgwEAGGQEABR8AABfGwB8AABqGQB0HAAYZAQAFHwAAF8dAHQeAHJ2AXQfAHJ2AXQfAGogAIMAAHwAAF8fAHQhAGoiAIMAAGoBAHwAAF8jAG4SAGQIAHwAAF8fAGQIAHwAAF8jAHQkAHOaAWQIAHwAAF8lAG5UAGQFAHwAAF8lAHQmAGonAGooAGQGAIMBAH0KAHwKAGQIAGsJAHLuAXkWAHwKAGopAIMAAGoBAHwAAF8lAFdx7gEEdCoAawoAcuoBAQEBce4BWG4AAHQrAHIVAnQsAHQLAGQHAIMCAHIVAnQLAGotAIMAAHwAAF8uAG4JAGQIAHwAAF8uAGQIAFMoCQAAAHNLAAAACiAgICAgICAgSW5pdGlhbGl6ZSBhIGxvZ2dpbmcgcmVjb3JkIHdpdGggaW50ZXJlc3RpbmcgaW5mb3JtYXRpb24uCiAgICAgICAgaQEAAABpAAAAAHMOAAAAVW5rbm93biBtb2R1bGVp6AMAAHQLAAAATWFpblByb2Nlc3N0DwAAAG11bHRpcHJvY2Vzc2luZ3QGAAAAZ2V0cGlkTigvAAAAdAQAAAB0aW1ldAQAAABuYW1ldAMAAABtc2d0AwAAAGxlblI1AAAAdAQAAABkaWN0dAQAAABhcmdzUhwAAAB0CQAAAGxldmVsbmFtZXQHAAAAbGV2ZWxub3QIAAAAcGF0aG5hbWV0AgAAAG9zdAQAAABwYXRodAgAAABiYXNlbmFtZXQIAAAAZmlsZW5hbWV0CAAAAHNwbGl0ZXh0dAYAAABtb2R1bGVSOgAAAFI5AAAAdA4AAABBdHRyaWJ1dGVFcnJvclIpAAAAdAQAAABOb25ldAgAAABleGNfdGV4dHQGAAAAbGluZW5vdAgAAABmdW5jTmFtZXQHAAAAY3JlYXRlZFI3AAAAdAUAAABtc2Vjc3QKAAAAX3N0YXJ0VGltZXQPAAAAcmVsYXRpdmVDcmVhdGVkdAoAAABsb2dUaHJlYWRzdAYAAAB0aHJlYWR0CQAAAGdldF9pZGVudHQJAAAAdGhyZWFkaW5ndA4AAABjdXJyZW50X3RocmVhZHQKAAAAdGhyZWFkTmFtZXQSAAAAbG9nTXVsdGlwcm9jZXNzaW5ndAsAAABwcm9jZXNzTmFtZVIoAAAAdAcAAABtb2R1bGVzUjAAAAB0DwAAAGN1cnJlbnRfcHJvY2Vzc3QNAAAAU3RhbmRhcmRFcnJvcnQMAAAAbG9nUHJvY2Vzc2VzdAcAAABoYXNhdHRyUkIAAAB0BwAAAHByb2Nlc3MoCwAAAHQEAAAAc2VsZlJEAAAAUjEAAABSSwAAAFJVAAAAUkUAAABSSAAAAFIpAAAAdAQAAABmdW5jdAIAAABjdHQCAAAAbXAoAAAAACgAAAAAc1cAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2xvZ2dpbmcvX19pbml0X18ucHl0CAAAAF9faW5pdF9f8gAAAHNOAAAAAAUMAQkBCQ41AQ0BCQEPAQkBCQEDARUBIAEWAQkBDQEJAQkBCQEJAQkBFwEUAQwBDwEVAgkB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bnN0cnVjdGVkLiBUaGV5IGFyZQogICAgcmVzcG9uc2libGUgZm9yIGNvbnZlcnRpbmcgYSBMb2dSZWNvcmQgdG8gKHVzdWFsbHkpIGEgc3RyaW5nIHdoaWNoIGNhbgogICAgYmUgaW50ZXJwcmV0ZWQgYnkgZWl0aGVyIGEgaHVtYW4gb3IgYW4gZXh0ZXJuYWwgc3lzdGVtLiBUaGUgYmFzZSBGb3JtYXR0ZXIKICAgIGFsbG93cyBhIGZvcm1hdHRpbmcgc3RyaW5nIHRvIGJlIHNwZWNpZmllZC4gSWYgbm9uZSBpcyBzdXBwbGllZCwgdGhlCiAgICBkZWZhdWx0IHZhbHVlIG9mICIlcyhtZXNzYWdlKVxuIiBpcyB1c2VkLgoKICAgIFRoZSBGb3JtYXR0ZXIgY2FuIGJlIGluaXRpYWxpemVkIHdpdGggYSBmb3JtYXQgc3RyaW5nIHdoaWNoIG1ha2VzIHVzZSBvZgogICAga25vd2xlZGdlIG9mIHRoZSBMb2dSZWNvcmQgYXR0cmlidXRlcyAtIGUuZy4gdGhlIGRlZmF1bHQgdmFsdWUgbWVudGlvbmVkCiAgICBhYm92ZSBtYWtlcyB1c2Ugb2YgdGhlIGZhY3QgdGhhdCB0aGUgdXNlcidzIG1lc3NhZ2UgYW5kIGFyZ3VtZW50cyBhcmUgcHJlLQogICAgZm9ybWF0dGVkIGludG8gYSBMb2dSZWNvcmQncyBtZXNzYWdlIGF0dHJpYnV0ZS4gQ3VycmVudGx5LCB0aGUgdXNlZnVsCiAgICBhdHRyaWJ1dGVzIGluIGEgTG9nUmVjb3JkIGFyZSBkZXNjcmliZWQgYnk6CgogICAgJShuYW1lKXMgICAgICAgICAgICBOYW1lIG9mIHRoZSBsb2dnZXIgKGxvZ2dpbmcgY2hhbm5lbCkKICAgICUobGV2ZWxubylzICAgICAgICAgTnVtZXJpYyBsb2dnaW5nIGxldmVsIGZvciB0aGUgbWVzc2FnZSAoREVCVUcsIElORk8sCiAgICAgICAgICAgICAgICAgICAgICAgIFdBUk5JTkcsIEVSUk9SLCBDUklUSUNBTCkKICAgICUobGV2ZWxuYW1lKXMgICAgICAgVGV4dCBsb2dnaW5nIGxldmVsIGZvciB0aGUgbWVzc2FnZSAoIkRFQlVHIiwgIklORk8iLAogICAgICAgICAgICAgICAgICAgICAgICAiV0FSTklORyIsICJFUlJPUiIsICJDUklUSUNBTCIpCiAgICAlKHBhdGhuYW1lKXMgICAgICAgIEZ1bGwgcGF0aG5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHdoZXJlIHRoZSBsb2dnaW5nCiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwgd2FzIGlzc3VlZCAoaWYgYXZhaWxhYmxlKQogICAgJShmaWxlbmFtZSlzICAgICAgICBGaWxlbmFtZSBwb3J0aW9uIG9mIHBhdGhuYW1lCiAgICAlKG1vZHVsZSlzICAgICAgICAgIE1vZHVsZSAobmFtZSBwb3J0aW9uIG9mIGZpbGVuYW1lKQogICAgJShsaW5lbm8pZCAgICAgICAgICBTb3VyY2UgbGluZSBudW1iZXIgd2hlcmUgdGhlIGxvZ2dpbmcgY2FsbCB3YXMgaXNzdWVkCiAgICAgICAgICAgICAgICAgICAgICAgIChpZiBhdmFpbGFibGUpCiAgICAlKGZ1bmNOYW1lKXMgICAgICAgIEZ1bmN0aW9uIG5hbWUKICAgICUoY3JlYXRlZClmICAgICAgICAgVGltZSB3aGVuIHRoZSBMb2dSZWNvcmQgd2FzIGNyZWF0ZWQgKHRpbWUudGltZSgpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSkKICAgICUoYXNjdGltZSlzICAgICAgICAgVGV4dHVhbCB0aW1lIHdoZW4gdGhlIExvZ1JlY29yZCB3YXMgY3JlYXRlZAogICAgJShtc2VjcylkICAgICAgICAgICBNaWxsaXNlY29uZCBwb3J0aW9uIG9mIHRoZSBjcmVhdGlvbiB0aW1lCiAgICAlKHJlbGF0aXZlQ3JlYXRlZClkIFRpbWUgaW4gbWlsbGlzZWNvbmRzIHdoZW4gdGhlIExvZ1JlY29yZCB3YXMgY3JlYXRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmUgdG8gdGhlIHRpbWUgdGhlIGxvZ2dpbmcgbW9kdWxlIHdhcyBsb2FkZWQKICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGljYWxseSBhdCBhcHBsaWNhdGlvbiBzdGFydHVwIHRpbWUpCiAgICAlKHRocmVhZClkICAgICAgICAgIFRocmVhZCBJRCAoaWYgYXZhaWxhYmxlKQogICAgJSh0aHJlYWROYW1lKXMgICAgICBUaHJlYWQgbmFtZSAoaWYgYXZhaWxhYmxlKQogICAgJShwcm9jZXNzKWQgICAgICAgICBQcm9jZXNzIElEIChpZiBhdmFpbGFibGUpCiAgICAlKG1lc3NhZ2UpcyAgICAgICAgIFRoZSByZXN1bHQgb2YgcmVjb3JkLmdldE1lc3NhZ2UoKSwgY29tcHV0ZWQganVzdCBhcwogICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVjb3JkIGlzIGVtaXR0ZWQKICAgIGMDAAAAAwAAAAIAAABDAAAAcygAAAB8AQByEgB8AQB8AABfAABuCQBkAQB8AABfAAB8AgB8AABfAQBkAgBTKAMAAABzOAEAAAogICAgICAgIEluaXRpYWxpemUgdGhlIGZvcm1hdHRlciB3aXRoIHNwZWNpZmllZCBmb3JtYXQgc3RyaW5ncy4KCiAgICAgICAgSW5pdGlhbGl6ZSB0aGUgZm9ybWF0dGVyIGVpdGhlciB3aXRoIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZywgb3IgYQogICAgICAgIGRlZmF1bHQgYXMgZGVzY3JpYmVkIGFib3ZlLiBBbGxvdyBmb3Igc3BlY2lhbGl6ZWQgZGF0ZSBmb3JtYXR0aW5nIHdpdGgKICAgICAgICB0aGUgb3B0aW9uYWwgZGF0ZWZtdCBhcmd1bWVudCAoaWYgb21pdHRlZCwgeW91IGdldCB0aGUgSVNPODYwMSBmb3JtYXQpLgogICAgICAgIHMLAAAAJShtZXNzYWdlKXNOKAIAAAB0BAAAAF9mbXR0BwAAAGRhdGVmbXQoAwAAAFJpAAAAdAMAAABmbXRSegAAACgAAAAAKAAAAABzVwAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvbG9nZ2luZy9fX2luaXRfXy5weVJtAAAAhgEAAHMIAAAAAAgGAQwCCQFjAwAAAAYAAAADAAAAQwAAAHNWAAAAfAAAagAAfAEAagEAgwEAfQMAfAIAci0AdAIAagMAfAIAfAMAgwIAfQQAbiUAdAIAagMAZAEAfAMAgwIAfQUAZAIAfAUAfAEAagQAZgIAFn0EAHwEAFMoAwAAAHMOBAAACiAgICAgICAgUmV0dXJuIHRoZSBjcmVhdGlvbiB0aW1lIG9mIHRoZSBzcGVjaWZpZWQgTG9nUmVjb3JkIGFzIGZvcm1hdHRlZCB0ZXh0LgoKICAgICAgICBUaGlzIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIGZyb20gZm9ybWF0KCkgYnkgYSBmb3JtYXR0ZXIgd2hpY2gKICAgICAgICB3YW50cyB0byBtYWtlIHVzZSBvZiBhIGZvcm1hdHRlZCB0aW1lLiBUaGlzIG1ldGhvZCBjYW4gYmUgb3ZlcnJpZGRlbgogICAgICAgIGluIGZvcm1hdHRlcnMgdG8gcHJvdmlkZSBmb3IgYW55IHNwZWNpZmljIHJlcXVpcmVtZW50LCBidXQgdGhlCiAgICAgICAgYmFzaWMgYmVoYXZpb3VyIGlzIGFzIGZvbGxvd3M6IGlmIGRhdGVmbXQgKGEgc3RyaW5nKSBpcyBzcGVjaWZpZWQsCiAgICAgICAgaXQgaXMgdXNlZCB3aXRoIHRpbWUuc3RyZnRpbWUoKSB0byBmb3JtYXQgdGhlIGNyZWF0aW9uIHRpbWUgb2YgdGhlCiAgICAgICAgcmVjb3JkLiBPdGhlcndpc2UsIHRoZSBJU084NjAxIGZvcm1hdCBpcyB1c2VkLiBUaGUgcmVzdWx0aW5nCiAgICAgICAgc3RyaW5nIGlzIHJldHVybmVkLiBUaGlzIGZ1bmN0aW9uIHVzZXMgYSB1c2VyLWNvbmZpZ3VyYWJsZSBmdW5jdGlvbgogICAgICAgIHRvIGNvbnZlcnQgdGhlIGNyZWF0aW9uIHRpbWUgdG8gYSB0dXBsZS4gQnkgZGVmYXVsdCwgdGltZS5sb2NhbHRpbWUoKQogICAgICAgIGlzIHVzZWQ7IHRvIGNoYW5nZSB0aGlzIGZvciBhIHBhcnRpY3VsYXIgZm9ybWF0dGVyIGluc3RhbmNlLCBzZXQgdGhlCiAgICAgICAgJ2NvbnZlcnRlcicgYXR0cmlidXRlIHRvIGEgZnVuY3Rpb24gd2l0aCB0aGUgc2Ft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cGVyYXRpb24gd2hpY2ggeWllbGRzIHRoZSByZXR1cm5lZCBzdHJpbmcuCiAgICAgICAgQmVmb3JlIGZvcm1hdHRpbmcgdGhlIGRpY3Rpb25hcnksIGEgY291cGxlIG9mIHByZXBhcmF0b3J5IHN0ZXBzCiAgICAgICAgYXJlIGNhcnJpZWQgb3V0LiBUaGUgbWVzc2FnZSBhdHRyaWJ1dGUgb2YgdGhlIHJlY29yZCBpcyBjb21wdXRlZAogICAgICAgIHVzaW5nIExvZ1JlY29yZC5nZXRNZXNzYWdlKCkuIElmIHRoZSBmb3JtYXR0aW5nIHN0cmluZyB1c2VzIHRoZQogICAgICAgIHRpbWUgKGFzIGRldGVybWluZWQgYnkgYSBjYWxsIHRvIHVzZXNUaW1lKCksIGZvcm1hdFRpbWUoKSBpcwogICAgICAgIGNhbGxlZCB0byBmb3JtYXQgdGhlIGV2ZW50IHRpbWUuIElmIHRoZXJlIGlzIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiwKICAgICAgICBpdCBpcyBmb3JtYXR0ZWQgdXNpbmcgZm9ybWF0RXhjZXB0aW9uKCkgYW5kIGFwcGVuZGVkIHRvIHRoZSBtZXNzYWdlLgogICAgICAgIGn/////cwEAAAAKdAcAAAByZXBsYWNlKA8AAABScgAAAHQHAAAAbWVzc2FnZVKMAAAAUoEAAABSegAAAHQHAAAAYXNjdGltZVJ5AAAAUncAAABSKQAAAFJUAAAAUooAAABScQAAAHQGAAAAZGVjb2RlUigAAAB0FQAAAGdldGZpbGVzeXN0ZW1lbmNvZGluZygDAAAAUmkAAABSfgAAAFJ/AAAAKAAAAAAoAAAAAHNXAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9sb2dnaW5nL19faW5pdF9fLnB5dAYAAABmb3JtYXTDAQAAcyAAAAAADQ8BDAEbARABCQMJARsBCQEQAQ0BAwERAQ0HFQERAU4oDAAAAFJzAAAAUnQAAABSdQAAAFJDAAAAdAkAAABsb2NhbHRpbWVSfAAAAFJTAAAAUm0AAABSgQAAAFKKAAAAUowAAABSkgAAACgAAAAAKAAAAAAoAAAAAHNX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c/YBAAAKICAgIEZpbHRlciBpbnN0YW5jZXMgYXJlIHVzZWQgdG8gcGVyZm9ybSBhcmJpdHJhcnkgZmlsdGVyaW5nIG9mIExvZ1JlY29yZHMuCgogICAgTG9nZ2VycyBhbmQgSGFuZGxlcnMgY2FuIG9wdGlvbmFsbHkgdXNlIEZpbHRlciBpbnN0YW5jZXMgdG8gZmlsdGVyCiAgICByZWNvcmRzIGFzIGRlc2lyZWQuIFRoZSBiYXNlIGZpbHRlciBjbGFzcyBvbmx5IGFsbG93cyBldmVudHMgd2hpY2ggYXJlCiAgICBiZWxvdyBhIGNlcnRhaW4gcG9pbnQgaW4gdGhlIGxvZ2dlciBoaWVyYXJjaHkuIEZvciBleGFtcGxlLCBhIGZpbHRlcgogICAgaW5pdGlhbGl6ZWQgd2l0aCAiQS5CIiB3aWxsIGFsbG93IGV2ZW50cyBsb2dnZWQgYnkgbG9nZ2VycyAiQS5CIiwKICAgICJBLkIuQyIsICJBLkIuQy5EIiwgIkEuQi5EIiBldGMuIGJ1dCBub3QgIkEuQkIiLCAiQi5BLkIiIGV0Yy4gSWYKICAgIGluaXRpYWxpemVkIHdpdGggdGhlIGVtcHR5IHN0cmluZywgYWxsIGV2ZW50cyBhcmUgcGFzc2VkLgogICAgUnYAAABjAgAAAAIAAAACAAAAQwAAAHMcAAAAfAEAfAAAXwAAdAEAfAEAgwEAfAAAXwIAZAEAUygCAAAAc+YAAAAKICAgICAgICBJbml0aWFsaXplIGEgZmlsdGVyLgoKICAgICAgICBJbml0aWFsaXplIHdpdGggdGhlIG5hbWUgb2YgdGhlIGxvZ2dlciB3aGljaCwgdG9nZXRoZXIgd2l0aCBpdHMKICAgICAgICBjaGlsZHJlbiwgd2lsbCBoYXZlIGl0cyBldmVudHMgYWxsb3dlZCB0aHJvdWdoIHRoZSBmaWx0ZXIuIElmIG5vCiAgICAgICAgbmFtZSBpcyBzcGVjaWZpZWQsIGFsbG93IGV2ZXJ5IGV2ZW50LgogICAgICAgIE4oAwAAAFJEAAAAUkYAAAB0BAAAAG5sZW4oAgAAAFJpAAAAUkQAAAAoAAAAACgAAAAAc1cAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xp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dGV2ZXIgaXQgdGFrZXMgdG8gYWN0dWFsbHkgbG9nIHRoZSBzcGVjaWZpZWQgbG9nZ2luZyByZWNvcmQuCgogICAgICAgIFRoaXMgdmVyc2lvbiBpcyBpbnRlbmRlZCB0byBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzIGFuZCBzbwogICAgICAgIHJhaXNlcyBhIE5vdEltcGxlbWVudGVkRXJyb3IuCiAgICAgICAgcy4AAABlbWl0IG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgSGFuZGxlciBzdWJjbGFzc2VzTigBAAAAdBMAAABOb3RJbXBsZW1lbnRlZEVycm9yKAIAAABSaQAAAFJ+AAAAKAAAAAAoAAAAAHNXAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9sb2dnaW5nL19faW5pdF9fLnB5dAQAAABlbWl01gIAAHMCAAAAAAdjAgAAAAMAAAAEAAAAQwAAAHNFAAAAfAAAagAAfAEAgwEAfQIAfAIAckEAfAAAagEAgwAAAXoRAHwAAGoCAHwBAIMBAAFXZAEAfAAAagMAgwAAAVhuAAB8AgBTKAIAAABzPAEAAAogICAgICAgIENvbmRpdGlvbmFsbHkgZW1pdCB0aGUgc3BlY2lmaWVkIGxvZ2dpbmcgcmVjb3JkLgoKICAgICAgICBFbWlzc2lvbiBkZXBlbmRzIG9uIGZpbHRlcnMgd2hpY2ggbWF5IGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgaGFuZGxlci4KICAgICAgICBXcmFwIHRoZSBhY3R1YWwgZW1pc3Npb24gb2YgdGhlIHJlY29yZCB3aXRoIGFjcXVpc2l0aW9uL3JlbGVhc2Ugb2YKICAgICAgICB0aGUgSS9PIHRocmVhZCBsb2NrLiBSZXR1cm5zIHdoZXRoZXIgdGhlIGZpbHRlciBwYXNzZWQgdGhlIHJlY29yZCBmb3IKICAgICAgICBlbWlzc2lvbi4KICAgICAgICBOKAQAAABSmwAAAFI+AAAAUrQAAABSPwAAACgDAAAAUmkAAABSfgAAAFI7AAAAKAAAAAAoAAAAAHNXAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3Qv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IGEgbG9nZ2VyLiBUaGUgY2xhc3Mgc2hvdWxkCiAgICBkZWZpbmUgX19pbml0X18oKSBzdWNoIHRoYXQgb25seSBhIG5hbWUgYXJndW1lbnQgaXMgcmVxdWlyZWQsIGFuZCB0aGUKICAgIF9faW5pdF9fKCkgc2hvdWxkIGNhbGwgTG9nZ2VyLl9faW5pdF9fKCkKICAgIHMoAAAAbG9nZ2VyIG5vdCBkZXJpdmVkIGZyb20gbG9nZ2luZy5Mb2dnZXI6IE4oBQAAAFIMAAAAdAoAAABpc3N1YmNsYXNzUjoAAABScwAAAHQMAAAAX2xvZ2dlckNsYXNzKAEAAAB0BQAAAGtsYXNzKAAAAAAoAAAAAHNXAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9sb2dnaW5nL19faW5pdF9fLnB5UiIAAADMAwAAcwoAAAAABgwBDwEGARMCYwAAAAAAAAAAAQAAAEMAAABzBAAAAHQAAFMoAQAAAHNCAAAACiAgICBSZXR1cm4gdGhlIGNsYXNzIHRvIGJlIHVzZWQgd2hlbiBpbnN0YW50aWF0aW5nIGEgbG9nZ2VyLgogICAgKAEAAABS1AAAACgAAAAAKAAAAAAoAAAAAHNXAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9sb2dnaW5nL19faW5pdF9fLnB5Uh4AAADZAwAAcwIAAAAABXQHAAAATWFuYWdlcmMAAAAAAAAAAAEAAABCAAAAczsAAABlAABaAQBkAABaAgBkAQCEAABaAwBkAgCEAABaBABkAwCEAABaBQBkBACEAABaBgBkBQCEAABaBwBSUygGAAAAc3QAAAAKICAgIFRoZXJlIGlzIFt1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlc10ganVzdCBvbmUgTWFuYWdlciBpbnN0YW5jZSwgd2hpY2gKICAgIGhvbGRzIHRoZSBoaWVyYXJjaHkgb2YgbG9nZ2Vycy4KICAgIGMCAAAAAgAAAAIAAABDAAAAczEAAAB8AQB8AABfAABkAQB8AABfAQBkAQB8AABfAgBpAAB8AABf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ZCBpcyB1cCB0byB0aGUgYXBwbGljYXRpb24gZGV2ZWxvcGVyLiBTaW5jZSBhbgogICAgYXBwbGljYXRpb24gY2FuIGhhdmUgYW55IG51bWJlciBvZiBhcmVhcywgbG9nZ2luZyBjaGFubmVscyBhcmUgaWRlbnRpZmllZAogICAgYnkgYSB1bmlxdWUgc3RyaW5nLiBBcHBsaWNhdGlvbiBhcmVhcyBjYW4gYmUgbmVzdGVkIChlLmcuIGFuIGFyZWEKICAgIG9mICJpbnB1dCBwcm9jZXNzaW5nIiBtaWdodCBpbmNsdWRlIHN1Yi1hcmVhcyAicmVhZCBDU1YgZmlsZXMiLCAicmVhZAogICAgWExTIGZpbGVzIiBhbmQgInJlYWQgR251bWVyaWMgZmlsZXMiKS4gVG8gY2F0ZXIgZm9yIHRoaXMgbmF0dXJhbCBuZXN0aW5nLAogICAgY2hhbm5lbCBuYW1lcyBhcmUgb3JnYW5pemVkIGludG8gYSBuYW1lc3BhY2UgaGllcmFyY2h5IHdoZXJlIGxldmVscyBhcmUKICAgIHNlcGFyYXRlZCBieSBwZXJpb2RzLCBtdWNoIGxpa2UgdGhlIEphdmEgb3IgUHl0aG9uIHBhY2thZ2UgbmFtZXNwYWNlLiBTbwogICAgaW4gdGhlIGluc3RhbmNlIGdpdmVuIGFib3ZlLCBjaGFubmVsIG5hbWVzIG1pZ2h0IGJlICJpbnB1dCIgZm9yIHRoZSB1cHBlcgogICAgbGV2ZWwsIGFuZCAiaW5wdXQuY3N2IiwgImlucHV0LnhscyIgYW5kICJpbnB1dC5nbnUiIGZvciB0aGUgc3ViLWxldmVscy4KICAgIFRoZXJlIGlzIG5vIGFyYml0cmFyeSBsaW1pdCB0byB0aGUgZGVwdGggb2YgbmVzdGluZy4KICAgIGMDAAAAAwAAAAIAAABDAAAAc00AAAB0AABqAQB8AACDAQABfAEAfAAAXwIAdAMAfAIAgwEAfAAAXwQAZAMAfAAAXwYAZAEAfAAAXwcAZwAAfAAAXwgAZAIAfAAAXwkAZAMAUygEAAAAc0oAAAAKICAgICAgICBJbml0aWFsaXplIHRoZSBsb2dnZXIgd2l0aCBhIG5hbWUgYW5kIGFuIG9wdGlvbmFsIGxldmVsLgogICAgICAgIGkB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dG9yIHNpZ25hdHVyZSBhbGxvd3MKICAgICAgICBlYXN5IHN0YWNraW5nIG9mIExvZ2dlckFkYXB0ZXJzLCBpZiBzbyBkZXNpcmVkLgoKICAgICAgICBZb3UgY2FuIGVmZmVjdGl2ZWx5IHBhc3Mga2V5d29yZCBhcmd1bWVudHMgYXMgc2hvd24gaW4gdGhlCiAgICAgICAgZm9sbG93aW5nIGV4YW1wbGU6CgogICAgICAgIGFkYXB0ZXIgPSBMb2dnZXJBZGFwdGVyKHNvbWVMb2dnZXIsIGRpY3QocDE9djEsIHAyPSJ2MiIpKQogICAgICAgIE4oAgAAAFICAQAAUvkAAAAoAwAAAFJpAAAAUgIBAABS+QAAACgAAAAAKAAAAABzVwAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvbG9nZ2luZy9fX2luaXRfXy5weVJtAAAAbQUAAHMEAAAAAAsJAWMDAAAAAwAAAAMAAABDAAAAcxcAAAB8AABqAAB8AgBkAQA8fAEAfAIAZgIAUygCAAAAc6IBAAAKICAgICAgICBQcm9jZXNzIHRoZSBsb2dnaW5nIG1lc3NhZ2UgYW5kIGtleXdvcmQgYXJndW1lbnRzIHBhc3NlZCBpbiB0bwogICAgICAgIGEgbG9nZ2luZyBjYWxsIHRvIGluc2VydCBjb250ZXh0dWFsIGluZm9ybWF0aW9uLiBZb3UgY2FuIGVpdGhlcgogICAgICAgIG1hbmlwdWxhdGUgdGhlIG1lc3NhZ2UgaXRzZWxmLCB0aGUga2V5d29yZCBhcmdzIG9yIGJvdGguIFJldHVybgogICAgICAgIHRoZSBtZXNzYWdlIGFuZCBrd2FyZ3MgbW9kaWZpZWQgKG9yIG5vdCkgdG8gc3VpdCB5b3VyIG5lZWRzLgoKICAgICAgICBOb3JtYWxseSwgeW91J2xsIG9ubHkgbmVlZCB0byBvdmVycmlkZSB0aGlzIG9uZSBtZXRob2QgaW4gYQogICAgICAgIExvZ2dlckFkYXB0ZXIgc3ViY2xhc3MgZm9yIHlvdXIgc3BlY2lmaWMgbmVlZHMuCiAgICAgICAgUvkAAAAoAQAAAFL5AAAAKAMAAABSaQAA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CwB8AwCDAQABfAAAagQAZAgAgwEAfQgAfAgAZAkAawkAcu4AdAIAagwAfAgAgwEAAXHuAG4AAFdkCQB0DQCDAAABWGQJAFMoCgAAAHP9BQAACiAgICBEbyBiYXNpYyBjb25maWd1cmF0aW9uIGZvciB0aGUgbG9nZ2luZyBzeXN0ZW0uCgogICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcgaWYgdGhlIHJvb3QgbG9nZ2VyIGFscmVhZHkgaGFzIGhhbmRsZXJzCiAgICBjb25maWd1cmVkLiBJdCBpcyBhIGNvbnZlbmllbmNlIG1ldGhvZCBpbnRlbmRlZCBmb3IgdXNlIGJ5IHNpbXBsZSBzY3JpcHRzCiAgICB0byBkbyBvbmUtc2hvdCBjb25maWd1cmF0aW9uIG9mIHRoZSBsb2dnaW5nIHBhY2thZ2UuCgogICAgVGhlIGRlZmF1bHQgYmVoYXZpb3VyIGlzIHRvIGNyZWF0ZSBhIFN0cmVhbUhhbmRsZXIgd2hpY2ggd3JpdGVzIHRvCiAgICBzeXMuc3RkZXJyLCBzZXQgYSBmb3JtYXR0ZXIgdXNpbmcgdGhlIEJBU0lDX0ZPUk1BVCBmb3JtYXQgc3RyaW5nLCBhbmQKICAgIGFkZCB0aGUgaGFuZGxlciB0byB0aGUgcm9vdCBsb2dnZXIuCgogICAgQSBudW1iZXIgb2Ygb3B0aW9uYWwga2V5d29yZCBhcmd1bWVudHMgbWF5IGJlIHNwZWNpZmllZCwgd2hpY2ggY2FuIGFsdGVyCiAgICB0aGUgZGVmYXVsdCBiZWhhdmlvdXIuCgogICAgZmlsZW5hbWUgIFNwZWNpZmllcyB0aGF0IGEgRmlsZUhhbmRsZXIgYmUgY3JlYXRlZCwgdXNpbmcgdGhlIHNwZWNpZmllZAogICAgICAgICAgICAgIGZpbGVuYW1lLCByYXRoZXIgdGhhbiBhIFN0cmVhbUhhbmRsZXIuCiAgICBmaWxlbW9kZSAgU3BlY2lmaWVzIHRoZSBtb2RlIHRvIG9wZW4gdGhlIGZpbGUsIGlmIGZpbGVuYW1lIGlzIHNwZWNpZmllZAogICAgICAgICAgICAgIChpZiBmaWxlbW9kZSBpcyB1bnNwZWNpZmllZCwgaXQgZGVmYXVsdHMgdG8gJ2EnKS4K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AAcUAwMBCQEGAQMAAwEKAQoBDgETBQgCEgEDAQYBYwAAAAAAAAAAAQAAAEIAAABzKQAAAGUAAFoBAGQAAFoCAGQBAIQAAFoDAGQCAIQAAFoEAGQDAIQAAFoFAFJTKAQAAABz2QEAAAogICAgVGhpcyBoYW5kbGVyIGRvZXMgbm90aGluZy4gSXQncyBpbnRlbmRlZCB0byBiZSB1c2VkIHRvIGF2b2lkIHRoZQogICAgIk5vIGhhbmRsZXJzIGNvdWxkIGJlIGZvdW5kIGZvciBsb2dnZXIgWFhYIiBvbmUtb2ZmIHdhcm5pbmcuIFRoaXMgaXMKICAgIGltcG9ydGFudCBmb3IgbGlicmFyeSBjb2RlLCB3aGljaCBtYXkgY29udGFpbiBjb2RlIHRvIGxvZyBldmVudHMuIElmIGEgdXNlcgogICAgb2YgdGhlIGxpYnJhcnkgZG9lcyBub3QgY29uZmlndXJlIGxvZ2dpbmcsIHRoZSBvbmUtb2ZmIHdhcm5pbmcgbWlnaHQgYmUKICAgIHByb2R1Y2VkOyB0byBhdm9pZCB0aGlzLCB0aGUgbGlicmFyeSBkZXZlbG9wZXIgc2ltcGx5IG5lZWRzIHRvIGluc3RhbnRpYXRlCiAgICBhIE51bGxIYW5kbGVyIGFuZCBhZGQgaXQgdG8gdGhlIHRvcC1sZXZlbCBsb2dnZXIgb2YgdGhlIGxpYnJhcnkgbW9kdWxlIG9yCiAgICBwYWNrYWdlLgogICAgYwIAAAACAAAAAQAAAEMAAABzBAAAAGQAAFMoAQAAAE4oAAAAACgCAAAAUmkAAABSfgAAACgAAAAAKAAAAABzVwAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvbG9nZ2luZy9fX2luaXRfXy5weVK1AAAAkQYAAHMCAAAAAAFjAgAAAAIAAAABAAAAQwAAAHMEAAAAZAAAUygBAAAATigAAAAAKAIAAABSaQAAAFJ+AAAAKAAAAAAoAAAAAHNXAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9sb2dnaW5nL19faW5pdF9fLnB5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