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X2lkZW50dAcAAABfYWN0aXZldAQAAABuYW1ldAgAAABLZXlFcnJvcnQEAAAAX3N5c3QGAAAAc3RkZXJydAUAAAB3cml0ZSgFAAAAUh4AAAB0BgAAAGZvcm1hdHQEAAAAYXJnc3QFAAAAaWRlbnRSIwAAACgAAAAAKAAAAABzUAAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvdGhyZWFkaW5nLnB5dAUAAABfbm90ZT8AAABzEgAAAAABCQEKAwkBAwERAQ0BDgEQAU4oBQAAAHQIAAAAX19uYW1lX190CgAAAF9fbW9kdWxlX19SGwAAAFIgAAAAUisAAAAoAAAAACgAAAAAKAAAAABzUAAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvdGhyZWFkaW5nLnB5UhoAAAA4AAAAcwQAAAAGAgwFYwEAAAABAAAAAQAAAEMAAABzCgAAAHwAAGEAAGQBAFMoAgAAAHO4AAAAU2V0IGEgcHJvZmlsZSBmdW5jdGlvbiBmb3IgYWxsIHRocmVhZHMgc3RhcnRlZCBmcm9tIHRoZSB0aHJlYWRpbmcgbW9kdWxlLgoKICAgIFRoZSBmdW5jIHdpbGwgYmUgcGFzc2VkIHRvIHN5cy5zZXRwcm9maWxlKCkgZm9yIGVhY2ggdGhyZWFkLCBiZWZvcmUgaXRzCiAgICBydW4oKSBtZXRob2QgaXMgY2FsbGVkLgoKICAgIE4oAQAAAHQNAAAAX3Byb2ZpbGVfaG9vaygBAAAAdAQAAABmdW5jKAAAAAAoAAAAAHNQAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy90aHJlYWRpbmcucHlSEQAAAFkAAABzAgAAAAAIYwEAAAABAAAAAQAAAEMAAABzCgAAAHwAAGEAAGQBAFMoAgAAAHO0AAAAU2V0IGEgdHJhY2UgZnVuY3Rpb24gZm9yIGFsbCB0aHJlYWRzIHN0YXJ0ZWQgZnJvbSB0aGUgdGhyZWFkaW5nIG1vZHVs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AABzlgAAAHQAAIMAAH0CAHwAAGoBAHwCAGsCAHI/AHwAAGoCAGQBABd8AABfAgB8AABqAwBkAgB8AAB8AQCDAwABZAEAU3wAAGoEAGoFAHwBAIMBAH0DAHwDAHJ/AHwCAHwAAF8BAGQBAHwAAF8CAHwAAGoDAGQDAHwAAHwBAIMDAAFuEwB8AABqAwBkBAB8AAB8AQCDAwABfAMAUygFAAAAc+4DAABBY3F1aXJlIGEgbG9jaywgYmxvY2tpbmcgb3Igbm9uLWJsb2NraW5nLgoKICAgICAgICBXaGVuIGludm9rZWQgd2l0aG91dCBhcmd1bWVudHM6IGlmIHRoaXMgdGhyZWFkIGFscmVhZHkgb3ducyB0aGUgbG9jaywKICAgICAgICBpbmNyZW1lbnQgdGhlIHJlY3Vyc2lvbiBsZXZlbCBieSBvbmUsIGFuZCByZXR1cm4gaW1tZWRpYXRlbHkuIE90aGVyd2lzZSwKICAgICAgICBpZiBhbm90aGVyIHRocmVhZCBvd25zIHRoZSBsb2NrLCBibG9jayB1bnRpbCB0aGUgbG9jayBpcyB1bmxvY2tlZC4gT25jZQogICAgICAgIHRoZSBsb2NrIGlzIHVubG9ja2VkIChub3Qgb3duZWQgYnkgYW55IHRocmVhZCksIHRoZW4gZ3JhYiBvd25lcnNoaXAsIHNldAogICAgICAgIHRoZSByZWN1cnNpb24gbGV2ZWwgdG8gb25lLCBhbmQgcmV0dXJuLiBJZiBtb3JlIHRoYW4gb25lIHRocmVhZCBpcwogICAgICAgIGJsb2NrZWQgd2FpdGluZyB1bnRpbCB0aGUgbG9jayBpcyB1bmxvY2tlZCwgb25seSBvbmUgYXQgYSB0aW1lIHdpbGwgYmUKICAgICAgICBhYmxlIHRvIGdyYWIgb3duZXJzaGlwIG9mIHRoZSBsb2NrLiBUaGVyZSBpcyBubyByZXR1cm4gdmFsdWUgaW4gdGhpcwogICAgICAgIGNhc2UuCgogICAgICAgIFdoZW4gaW52b2tlZCB3aXRoIHRoZSBibG9ja2luZyBhcmd1bWVudCBzZXQgdG8gdHJ1ZSwgZG8gdGhlIHNhbWUgdGhpbmcKICAgICAgICBhcyB3aGVuIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cywgYW5kIHJldHVybiB0cnVlLgoKICAgICAgICBXaGVuIGludm9rZWQgd2l0aCB0aGUgYmxvY2tpbmcgYXJndW1lbnQgc2V0IHRvIGZhbHNlLCBkbyBub3QgYmxvY2suIElmIGEKICAgICAgICBjYWxsIHdpdGhvdXQgYW4gYXJndW1lbnQgd291bGQgYmxvY2ssIHJldHVybiBmYWxzZSBpbW1lZGlhdGVseTsKICAgICAgICBvdGhlcndpc2UsIGRvIHRoZSBzYW1lIHRoaW5nIGFzIHdoZW4gY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzLCBhbmQKICAgICAgICByZXR1cm4gdHJ1ZS4KCiAgICAgICAgaQEAAABzIQAAACVzLmFjcXVpcmUoJXMpOiByZWN1cnNpdmUgc3VjY2Vzc3MfAAAAJXMuYWNxdWlyZSglcyk6IGluaXRpYWwgc3VjY2Vzc3MXAAAAJXMuYWNxdWlyZSglcyk6IGZhaWx1cmUoBgAAAFIhAAAAUjUAAABSNgAAAFIrAAAAUjQAAAB0BwAAAGFjcXVpcmUoBAAAAFIeAAAAdAgAAABibG9ja2luZ3QCAAAAbWV0AgAAAHJjKAAAAAAoAAAAAHNQAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy90aHJlYWRpbmcucHlSOgAAAJIAAABzGAAAAAAVCQEPARACEwEEARIBBgEJAQkCFgMTAWMBAAAAAgAAAAMAAABDAAAAc3gAAAB8AABqAAB0AQCDAABrAwByIQB0AgBkAQCDAQCCAQBuAAB8AABqAwBkAgAYBHwAAF8DAH0BAHwBAHNkAGQFAHwAAF8AAHwAAGoFAGoGAIMAAAF8AABqBwBkAwB8AACDAgABbhAAfAAAagcAZAQAfAAAgwIAAWQFAFMoBgAAAHNtAgAAUmVsZWFzZSBhIGxvY2ssIGRlY3JlbWVudGluZyB0aGUgcmVjdXJzaW9uIGxldmVsLgoKICAgICAgICBJZiBhZnRlciB0aGUgZGVjcmVtZW50IGl0IGlzIHplcm8sIHJlc2V0IHRoZSBsb2NrIHRvIHVubG9ja2VkIChub3Qgb3duZWQKICAgICAgICBieSBhbnkgdGhyZWFkKSwgYW5kIGlmIGFueSBvdGhlciB0aHJlYWRzIGFyZSBibG9ja2VkIHdhaXRpbmcgZm9yIHRoZQogICAgICAgIGxvY2sgdG8gYmVjb21lIHVubG9ja2VkLCBhbGxvdyBleGFjdGx5IG9uZSBvZiB0aGVtIHRvIHByb2NlZWQuIElmIGFmdGVyCiAgICAgICAgdGhlIGRlY3JlbWVudCB0aGUgcmVjdXJzaW9uIGxldmVsIGlzIHN0aWxsIG5vbnplcm8sIHRoZSBsb2NrIHJlbWFpbnMKICAgICAgICBsb2NrZWQgYW5kIG93bmVkIGJ5IHRoZSBjYWxsaW5nIHRocmVhZC4KCiAgICAgICAgT25seSBjYWxsIHRoaXMgbWV0aG9kIHdoZW4gdGhlIGNhbGxpbmcgdGhyZWFkIG93bnMgdGhlIGxvY2suIEEKICAgICAgICBSdW50aW1lRXJyb3IgaXMgcmFpc2VkIGlmIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSBsb2NrIGlzCiAgICAgICAgdW5sb2NrZWQuCgogICAgICAgIFRoZXJlIGlzIG5vIHJldHVybiB2YWx1ZS4KCiAgICAgICAgcx8AAABjYW5ub3QgcmVsZWFzZSB1bi1hY3F1aXJlZCBsb2NraQEAAABzGwAAACVzLnJlbGVhc2UoKTogZmluYWwgcmVsZWFzZXMfAAAAJXMucmVsZWFzZSgpOiBub24tZmluYWwgcmVsZWFzZU4oCAAAAFI1AAAAUiEAAAB0DAAAAFJ1bnRpbWVFcnJvclI2AAAAUhsAAABSNAAAAHQHAAAAcmVsZWFzZVIrAAAAKAIAAABSHgAAAHQFAAAAY291bnQoAAAAACgAAAAAc1AAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3RocmVhZGluZy5weVI/AAAAugAAAHMQAAAAABASAQ8BFAEGAQkBDQITA2MEAAAABAAAAAEAAABDAAAAcw4AAAB8AABqAACDAAABZAAAUygBAAAATigBAAAAUj8AAAAoBAAAAFIeAAAAdAEAAAB0dAEAAAB2dAIAAAB0YigAAAAAKAAAAABzUAAAAC9idWlsZGJvdC90bXAvYnVpbGRo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b2NrIGFuZCByZXR1cm5zLgoKICAgICAgICBXaGVuIHRoZSB0aW1lb3V0IGFyZ3VtZW50IGlzIHByZXNlbnQgYW5kIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYQogICAgICAgIGZsb2F0aW5nIHBvaW50IG51bWJlciBzcGVjaWZ5aW5nIGEgdGltZW91dCBmb3IgdGhlIG9wZXJhdGlvbiBpbiBzZWNvbmRzCiAgICAgICAgKG9yIGZyYWN0aW9ucyB0aGVyZW9mKS4KCiAgICAgICAgV2hlbiB0aGUgdW5kZXJseWluZyBsb2NrIGlzIGFuIFJMb2NrLCBpdCBpcyBub3QgcmVsZWFzZWQgdXNpbmcgaXRzCiAgICAgICAgcmVsZWFzZSgpIG1ldGhvZCwgc2luY2UgdGhpcyBtYXkgbm90IGFjdHVhbGx5IHVubG9jayB0aGUgbG9jayB3aGVuIGl0CiAgICAgICAgd2FzIGFjcXVpcmVkIG11bHRpcGxlIHRpbWVzIHJlY3Vyc2l2ZWx5LiBJbnN0ZWFkLCBhbiBpbnRlcm5hbCBpbnRlcmZhY2UKICAgICAgICBvZiB0aGUgUkxvY2sgY2xhc3MgaXMgdXNlZCwgd2hpY2ggcmVhbGx5IHVubG9ja3MgaXQgZXZlbiB3aGVuIGl0IGhhcwogICAgICAgIGJlZW4gcmVjdXJzaXZlbHkgYWNxdWlyZWQgc2V2ZXJhbCB0aW1lcy4gQW5vdGhlciBpbnRlcm5hbCBpbnRlcmZhY2UgaXMKICAgICAgICB0aGVuIHVzZWQgdG8gcmVzdG9yZSB0aGUgcmVjdXJzaW9uIGxldmVsIHdoZW4gdGhlIGxvY2sgaXMgcmVhY3F1aXJlZC4KCiAgICAgICAgcx8AAABjYW5ub3Qgd2FpdCBvbiB1bi1hY3F1aXJlZCBsb2NrcxEAAAAlcy53YWl0KCk6IGdvdCBpdGf8qfHSTWJAP2kAAAAAaQIAAABnmpmZmZmZqT9zFgAAACVzLndhaXQoJXMpOiB0aW1lZCBvdXRzEwAAACVzLndhaXQoJXMpOiBnb3QgaXROKBAAAABSSAAAAFI+AAAAUjMAAABSOgAAAFJOAAAAdAYAAABhcHBlbmRSRwAAAFIbAAAAUisAAAB0BQAAAF90aW1lUlMAAAB0AwAAAG1pbnQG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CQMJAwkJDEAMGwkJYwAAAAACAAAAAwAAAE8AAABzDQAAAHQAAHwAAHwBAI4AAFMoAQAAAHNPAQAAQSBmYWN0b3J5IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIG5ldyBzZW1hcGhvcmUuCgogICAgU2VtYXBob3JlcyBtYW5hZ2UgYSBjb3VudGVyIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIHJlbGVhc2UoKSBjYWxscyBtaW51cwogICAgdGhlIG51bWJlciBvZiBhY3F1aXJlKCkgY2FsbHMsIHBsdXMgYW4gaW5pdGlhbCB2YWx1ZS4gVGhlIGFjcXVpcmUoKSBtZXRob2QKICAgIGJsb2NrcyBpZiBuZWNlc3NhcnkgdW50aWwgaXQgY2FuIHJldHVybiB3aXRob3V0IG1ha2luZyB0aGUgY291bnRlcgogICAgbmVnYXRpdmUuIElmIG5vdCBnaXZlbiwgdmFsdWUgZGVmYXVsdHMgdG8gMS4KCiAgICAoAQAAAHQKAAAAX1NlbWFwaG9yZSgCAAAAUikAAABSMgAAACgAAAAAKAAAAABzUAAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvdGhyZWFkaW5nLnB5Ug0AAACbAQAAcwIAAAAACVJpAAAAYwAAAAAAAAAAAwAAAEIAAABzQQAAAGUAAFoBAGQAAFoCAGQBAGQGAGQCAIQCAFoEAGQBAGQDAIQBAFoFAGUFAFoGAGQEAIQAAFoHAGQFAIQAAFoIAFJTKAcAAABzIgEAAFNlbWFwaG9yZXMgbWFuYWdlIGEgY291bnRlciByZXByZXNlbnRpbmcgdGhlIG51bWJlciBvZiByZWxlYXNlKCkgY2FsbHMKICAgICAgIG1pbnVzIHRoZSBudW1iZXIgb2YgYWNxdWlyZSgpIGNhbGxzLCBwbHVzIGFuIGluaXRpYWwgdmFsdWUuIFRoZSBhY3F1aXJlKCkKICAgICAgIG1ldGhvZCBibG9ja3MgaWYgbmVjZXNzYXJ5IHVudGlsIGl0IGNhbiByZXR1cm4gd2l0aG91dCBtYWtpbmcgdGhlIGNvdW50ZXIKICAgICAgIG5lZ2F0aXZlLiBJZiBub3QgZ2l2ZW4sIHZhbHVlIGRlZmF1bHRzIHRvIDEuCgogICAgaQEAAABjAwAAAAMAAAADAAAAQwAAAHNKAAAAfAEAZAEAawAAchsAdAAAZAIAgwEAggEAbgAAdAEAagIAfAAAfAIAgwIAAXQDAHQEAIMAAIMBAHwAAF8FAHwBAHwAAF8GAGQAAFMoAwAAAE5pAAAAAHMkAAAAc2VtYXBob3JlIGluaXRpYWwgdmFsdWUgbXVzdCBiZSA+PSAwKAcAAABSWQAAAFIaAAAAUiAAAABSBgAAAFILAAAAdBAAAABfU2VtYXBob3JlX19jb25kdBEAAABfU2VtYXBob3JlX192YWx1ZSgDAAAAUh4AAAB0BQAAAHZhbHVlUh8AAAAoAAAAACgAAAAAc1AAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3RocmVhZGluZy5weVIgAAAAsAEAAHMKAAAAAAEMAQ8BEAESAWMCAAAAAwAAAAkAAABDAAAAc4wAAAB0AAB9AgB8AABqAQCPdwABeG8AfAAAagIAZAEAawIAclUAfAEAcywAUG4AAHwAAGoDAGQCAHwAAHwBAHwAAGoCAIMEAAF8AABqAQBqBACDAAABcRMAV3wAAGoCAGQDABh8AABfAgB8AABqAwBkBAB8AAB8AABqAgCDAwABdAUAfQIAV2QFAFFYfAIAUygGAAAAcwAEAABBY3F1aXJlIGEgc2VtYXBob3JlLCBkZWNyZW1lbnRpbmcgdGhlIGludGVybmFsIGNvdW50ZXIgYnkgb25lLgoKICAgICAgICBXaGVuIGludm9rZWQgd2l0aG91dCBhcmd1bWVudHM6IGlmIHRoZSBpbnRlcm5hbCBjb3VudGVyIGlzIGxhcmdlciB0aGFuCiAgICAgICAgemVybyBvbiBlbnRyeSwgZGVjcmVtZW50IGl0IGJ5IG9uZSBhbmQgcmV0dXJuIGltbWVkaWF0ZWx5LiBJZiBpdCBpcyB6ZXJvCiAgICAgICAgb24gZW50cnksIGJsb2NrLCB3YWl0aW5nIHVudGlsIHNvbWUgb3RoZXIgdGhyZWFkIGhhcyBjYWxsZWQgcmVsZWFzZSgpIHRvCiAgICAgICAgbWFrZSBpdCBsYXJnZXIgdGhhbiB6ZXJvLiBUaGlzIGlzIGRvbmUgd2l0aCBwcm9wZXIgaW50ZXJsb2NraW5nIHNvIHRoYXQKICAgICAgICBpZiBtdWx0aXBsZSBhY3F1aXJlKCkgY2FsbHMgYXJlIGJsb2NrZWQsIHJlbGVhc2UoKSB3aWxsIHdha2UgZXhhY3RseSBvbmUKICAgICAgICBvZiB0aGVtIHVwLiBUaGUgaW1wbGVtZW50YXRpb24gbWF5IHBpY2sgb25lIGF0IHJhbmRvbSwgc28gdGhlIG9yZGVyIGluCiAgICAgICAgd2hpY2ggYmxvY2tlZCB0aHJlYWRzIGFyZSBhd2FrZW5lZCBzaG91bGQgbm90IGJlIHJlbGllZCBvbi4gVGhlcmUgaXMgbm8KICAgICAgICByZXR1cm4gdmFsdWUgaW4gdGhpcyBjYXNlLgoKICAgICAgICBXaGVuIGludm9rZWQgd2l0aCBibG9ja2luZyBzZXQgdG8gdHJ1ZSwgZG8gdGhlIHNhbWUgdGhpbmcgYXMgd2hlbiBjYWxsZWQKICAgICAgICB3aXRob3V0IGFyZ3VtZW50cywgYW5kIHJldHVybiB0cnVlLgoKICAgICAgICBXaGVuIGludm9rZWQgd2l0aCBibG9ja2luZyBzZXQgdG8gZmFsc2UsIGRvIG5vdCBibG9jay4gSWYgYSBjYWxsIHdpdGhvdXQKICAgICAgICBhbiBhcmd1bWVudCB3b3VsZCBibG9jaywgcmV0dXJuIGZhbHNlIGltbWVkaWF0ZWx5OyBvdGhlcndpc2UsIGRvIHRoZQogICAgICAgIHNhbWUgdGhpbmcgYXMgd2hlbiBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMsIGFuZCByZXR1cm4gdHJ1ZS4KCiAgICAgICAgaQAAAABzKQAAACVzLmFjcXVpcmUoJXMpOiBibG9ja2VkIHdhaXRpbmcsIHZhbHVlPSVzaQEAAABzHQAAACVzLmFjcXVpcmU6IHN1Y2Nlc3MsIHZhbHVlPSVzTigGAAAAUlIAAABSagAAAFJrAAAAUisAAABSYQAAAFJTAAAAKAMAAABSHgAAAFI7AAAAUj0AAAAoAAAAACgAAAAAc1AAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3RocmVhZGluZy5weVI6AAAAtwEAAHMaAAAAABQGAQoBEgEGAQQCCQEQARECEAIJAQ0BDAFjAQAAAAEAAAAIAAAAQwAAAHNHAAAAfAAAagAAjzgAAXwAAGoBAGQBABd8AABfAQB8AABqAgBkAgB8AAB8AABqAQCDAwABfAAAagAAagMAgwAAAVdkAwBRWGQDAFMoBAAAAHPXAAAAUmVsZWFzZSBhIHNlbWFwaG9yZSwgaW5jcmVtZW50aW5nIHRoZSBpbnRlcm5hbCBjb3VudGVyIGJ5IG9uZS4KCiAgICAgICAgV2hlbiB0aGUgY291bnRlciBpcyB6ZXJvIG9uIGVudHJ5IGFuZCBhbm90aGVyIHRocmVhZCBpcyB3YWl0aW5nIGZvciBpdAogICAgICAgIHRvIGJlY29tZSBsYXJnZXIgdGhhbiB6ZXJvIGFnYWluLCB3YWtlIHVwIHRoYXQgdGhyZWFkLgoKICAgICAgICBpAQAAAHMdAAAAJXMucmVsZWFzZTogc3VjY2VzcywgdmFsdWU9JXNOKAQAAABSagAAAFJrAAAAUisAAABSZgAAACgBAAAAUh4AAAAoAAAAACgAAAAAc1AAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3RocmVhZGluZy5weVI/AAAA3gEAAHMKAAAAAAcKARACCQENAWMEAAAABAAAAAEAAABDAAAAcw4AAAB8AABqAACDAAABZAAAUygBAAAATigBAAAAUj8AAAAoBAAAAFIeAAAAUkEAAABSQgAAAFJDAAAAKAAAAAAoAAAAAHNQAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy90aHJlYWRpbmcucHlSRAAAAOwBAABzAgAAAAABTigJAAAAUiwAAABSLQAAAFJJAAAAUhsAAABSIAAAAFI6AAAAUkoAAABSPwAAAFJEAAAAKAAAAAAoAAAAACgAAAAAc1AAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3RocmVhZGluZy5weVJpAAAApgEAAHMMAAAABgYGBA8HDCUGAgkOYwAAAAACAAAAAwAAAE8AAABzDQAAAHQAAHwAAHwBAI4AAFMoAQAAAHPCAgAAQSBmYWN0b3J5IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIG5ldyBib3VuZGVkIHNlbWFwaG9yZS4KCiAgICBBIGJvdW5kZWQgc2VtYXBob3JlIGNoZWNrcyB0byBtYWtlIHN1cmUgaXRzIGN1cnJlbnQgdmFsdWUgZG9lc24ndCBleGNlZWQgaXRzCiAgICBpbml0aWFsIHZhbHVlLiBJZiBpdCBkb2VzLCBWYWx1ZUVycm9yIGlzIHJhaXNlZC4gSW4gbW9zdCBzaXR1YXRpb25zCiAgICBzZW1hcGhvcmVzIGFyZSB1c2VkIHRvIGd1YXJkIHJlc291cmNlcyB3aXRoIGxpbWl0ZWQgY2FwYWNpdHkuCgogICAgSWYgdGhlIHNlbWFwaG9yZSBpcyByZWxlYXNlZCB0b28gbWFueSB0aW1lcyBpdCdzIGEgc2lnbiBvZiBhIGJ1Zy4gSWYgbm90CiAgICBnaXZlbiwgdmFsdWUgZGVmYXVsdHMgdG8gMS4KCiAgICBMaWtlIHJlZ3VsYXIgc2VtYXBob3JlcywgYm91bmRlZCBzZW1hcGhvcmVzIG1hbmFnZSBhIGNvdW50ZXIgcmVwcmVzZW50aW5nCiAgICB0aGUgbnVtYmVyIG9mIHJlbGVhc2UoKSBjYWxscyBtaW51cyB0aGUgbnVtYmVyIG9mIGFjcXVpcmUoKSBjYWxscywgcGx1cyBhbgogICAgaW5pdGlhbCB2YWx1ZS4gVGhlIGFjcXVpcmUoKSBtZXRob2QgYmxvY2tzIGlmIG5lY2Vzc2FyeSB1bnRpbCBpdCBjYW4gcmV0dXJuCiAgICB3aXRob3V0IG1ha2luZyB0aGUgY291bnRlciBuZWdhdGl2ZS4gSWYgbm90IGdpdmVuLCB2YWx1ZSBkZWZhdWx0cyB0byAxLgoKICAgICgBAAAAdBEAAABfQm91bmRlZFNlbWFwaG9yZSgCAAAAUikAAABSMgAAACgAAAAAKAAAAABzUAAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVp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ZXMgdGhlIGNvbnN0cnVjdG9yLCBpdCBtdXN0IG1ha2Ugc3VyZSB0byBpbnZva2UKICAgICAgICB0aGUgYmFzZSBjbGFzcyBjb25zdHJ1Y3RvciAoVGhyZWFkLl9faW5pdF9fKCkpIGJlZm9yZSBkb2luZyBhbnl0aGluZwogICAgICAgIGVsc2UgdG8gdGhlIHRocmVhZC4KCnMjAAAAZ3JvdXAgYXJndW1lbnQgbXVzdCBiZSBOb25lIGZvciBub3dOKBkAAABSGwAAAHQOAAAAQXNzZXJ0aW9uRXJyb3JSGgAAAFIgAAAAdA8AAABfVGhyZWFkX190YXJnZXR0AwAAAHN0clJ5AAAAdA0AAABfVGhyZWFkX19uYW1ldA0AAABfVGhyZWFkX19hcmdzdA8AAABfVGhyZWFkX19rd2FyZ3N0CwAAAF9zZXRfZGFlbW9udBEAAABfVGhyZWFkX19kYWVtb25pY3QOAAAAX1RocmVhZF9faWRlbnRSCgAAAHQQAAAAX1RocmVhZF9fc3RhcnRlZFJSAAAAdBAAAABfVGhyZWFkX19zdG9wcGVkUgYAAABSCwAAAHQOAAAAX1RocmVhZF9fYmxvY2tSUwAAAHQUAAAAX1RocmVhZF9faW5pdGlhbGl6ZWRSJQAAAFImAAAAdA8AAABfVGhyZWFkX19zdGRlcnIoBwAAAFIeAAAAdAUAAABncm91cHQGAAAAdGFyZ2V0UiMAAABSKQAAAFIyAAAAUh8AAAAoAAAAACgAAAAAc1AAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3RocmVhZGluZy5weVIgAAAAjgIAAHMeAAAAABcYARABDAEJAQkBGAEJAQkBDwEJAQwBCQESAQkDYwEAAAABAAAAAwAAAEMAAABzMAAAAHQAAHwAAGQBAIMCAHIfAHwAAGoBAGoCAIMAAAFuAAB8AABqAwBqBACDAAABZAAAUygCAAAATlKFAAAAKAUAAAB0BwAAAGhhc2F0dHJShQAAAFIgAAAAUoMAAABScgAAACgBAAAAUh4AAAAoAAAAACgAAAAAc1AAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4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aGUgdGhyZWFkIHRlcm1pbmF0ZXMuCgogICAgICAgIFRoaXMgYmxvY2tzIHRoZSBjYWxsaW5nIHRocmVhZCB1bnRpbCB0aGUgdGhyZWFkIHdob3NlIGpvaW4oKSBtZXRob2QgaXMKICAgICAgICBjYWxsZWQgdGVybWluYXRlcyAtLSBlaXRoZXIgbm9ybWFsbHkgb3IgdGhyb3VnaCBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uCiAgICAgICAgb3IgdW50aWwgdGhlIG9wdGlvbmFsIHRpbWVvdXQgb2NjdXJzLgoKICAgICAgICBXaGVuIHRoZSB0aW1lb3V0IGFyZ3VtZW50IGlzIHByZXNlbnQgYW5kIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYQogICAgICAgIGZsb2F0aW5nIHBvaW50IG51bWJlciBzcGVjaWZ5aW5nIGEgdGltZW91dCBmb3IgdGhlIG9wZXJhdGlvbiBpbiBzZWNvbmRzCiAgICAgICAgKG9yIGZyYWN0aW9ucyB0aGVyZW9mKS4gQXMgam9pbigpIGFsd2F5cyByZXR1cm5zIE5vbmUsIHlvdSBtdXN0IGNhbGwKICAgICAgICBpc0FsaXZlKCkgYWZ0ZXIgam9pbigpIHRvIGRlY2lkZSB3aGV0aGVyIGEgdGltZW91dCBoYXBwZW5lZCAtLSBpZiB0aGUKICAgICAgICB0aHJlYWQgaXMgc3RpbGwgYWxpdmUsIHRoZSBqb2luKCkgY2FsbCB0aW1lZCBvdXQuCgogICAgICAgIFdoZW4gdGhlIHRpbWVvdXQgYXJndW1lbnQgaXMgbm90IHByZXNlbnQgb3IgTm9uZSwgdGhlIG9wZXJhdGlvbiB3aWxsCiAgICAgICAgYmxvY2sgdW50aWwgdGhlIHRocmVhZCB0ZXJtaW5hdGVzLgoKICAgICAgICBBIHRocmVhZCBjYW4gYmUgam9pbigpZWQgbWFueSB0aW1lcy4KCiAgICAgICAgam9pbigpIHJhaXNlcyBhIFJ1bnRpbWVFcnJvciBpZiBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gam9pbiB0aGUgY3VycmVudAogICAgICAgIHRocmVhZCBhcyB0aGF0IHdvdWxkIGNhdXNlIGEgZGVhZGxvY2suIEl0IGlzIGFsc28gYW4gZXJyb3IgdG8gam9pbigpIGEKICAgICAgICB0aHJlYWQgYmVmb3JlIGl0IGhhcyBiZWVuIHN0YXJ0ZWQgYW5kIGF0dGVtcHRzIHRvIGRvIHNvIHJhaXNlcyB0aGUgc2FtZQogICAgICAgIGV4Y2VwdGlvbi4KCiAgICAgICAgcxwAAABUaHJlYWQuX19pbml0X18oKSBub3QgY2FsbGVkcycAAABjYW5ub3Qgam9pbiB0aHJlYWQgYmVmb3JlIGl0IGlzIHN0YXJ0ZWRzGgAAAGNhbm5vdCBqb2luIGN1cnJlbnQgdGhyZWFkcyUAAAAlcy5qb2luKCk6IHdhaXRpbmcgdW50aWwgdGhyZWFkIHN0b3BzcxkAAAAlcy5qb2luKCk6IHRocmVhZCBzdG9wcGVkaQAAAABzFAAAACVzLmpvaW4oKTogdGltZWQgb3V0TigNAAAAUoYAAABSPgAAAFKDAAAAUnYAAABSCAAAAFKEAAAAUisAAABShQAAAFI6AAAAUhsAAABSYQAAAFJVAAAAUj8AAAAoBAAAAFIeAAAAUloAAAB0CAAAAGRlYWRsaW5lUl4AAAAoAAAAACgAAAAAc1AAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3RocmVhZGluZy5weXQEAAAAam9pbo0DAABzLgAAAAAYCQEPAQ8BDwEPAQ8DCQETAQ0BAwEMAQwBEQITAg0BDAENAQwCEAEEARQDFAJjAQAAAAEAAAACAAAAQwAAAHMcAAAAfAAAagAAcxUAdAEAZAEAgwEAggEAfAAAagIAUygCAAAAc7gAAABBIHN0cmluZyB1c2VkIGZvciBpZGVudGlmaWNhdGlvbiBwdXJwb3NlcyBvbmx5LgoKICAgICAgICBJdCBoYXMgbm8gc2VtYW50aWNzLiBNdWx0aXBsZSB0aHJlYWRzIG1heSBiZSBnaXZlbiB0aGUgc2FtZSBuYW1lLiBUaGUKICAgICAgICBpbml0aWFsIG5hbWUgaXMgc2V0IGJ5IHRoZSBjb25zdHJ1Y3Rvci4KCiAgICAgICAgcxwAAABUaHJlYWQuX19pbml0X18oKSBub3QgY2FsbGVkKAMAAABShgAAAFJ6AAAAUn0AAAAoAQAAAFIeAAAAKAAAAAAoAAAAAHNQAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy90aHJlYWRpbmcucHlSIwAAAMUDAABzBAAAAAAIFQFjAgAAAAIAAAACAAAAQwAAAHMoAAAAfAAAagAAcxUAdAEAZAEAgwEAggEAdAIAfAEAgwEAfAAAXwMAZAAAUygCAAAATnMcAAAAVGhyZWFkLl9faW5pdF9fKCkgbm90IGNhbGxlZCgEAAAAUoYAAABSegAAAFJ8AAAAUn0AAAAoAgAAAFIeAAAAUiMAAAAoAAAAACgAAAAAc1AAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3RocmVhZGluZy5weVIjAAAA0AMAAHMEAAAAAAIVAWMBAAAAAQAAAAIAAABDAAAAcxwAAAB8AABqAABzFQB0AQBkAQCDAQCCAQB8AABqAgBTKAIAAABzOwEAAFRocmVhZCBpZGVudGlmaWVyIG9mIHRoaXMgdGhyZWFkIG9yIE5vbmUgaWYgaXQgaGFzIG5vdCBiZWVuIHN0YXJ0ZWQuCgogICAgICAgIFRoaXMgaXMgYSBub256ZXJvIGludGVnZXIuIFNlZSB0aGUgdGhyZWFkLmdldF9pZGVudCgpIGZ1bmN0aW9uLiBUaHJlYWQKICAgICAgICBpZGVudGlmaWVycyBtYXkgYmUgcmVjeWNsZWQgd2hlbiBhIHRocmVhZCBleGl0cyBhbmQgYW5vdGhlciB0aHJlYWQgaXMKICAgICAgICBjcmVhdGVkLiBUaGUgaWRlbnRpZmllciBpcyBhdmFpbGFibGUgZXZlbiBhZnRlciB0aGUgdGhyZWFkIGhhcyBleGl0ZWQuCgogICAgICAgIHMcAAAAVGhyZWFkLl9faW5pdF9fKCkgbm90IGNhbGxlZCgDAAAAUoYAAABSegAAAFKCAAAAKAEAAABSHgAAACgAAAAAKAAAAABzUAAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvdGhy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AgAAAHOSAAAAUmV0dXJuIHRoZSBudW1iZXIgb2YgVGhyZWFkIG9iamVjdHMgY3VycmVudGx5IGFsaXZlLgoKICAgIFRoZSByZXR1cm5lZCBjb3VudCBpcyBlcXVhbCB0byB0aGUgbGVuZ3RoIG9mIHRoZSBsaXN0IHJldHVybmVkIGJ5CiAgICBlbnVtZXJhdGUoKS4KCiAgICBOKAQAAABSkQAAAFJQAAAAUiIAAABSkgAAACgAAAAAKAAAAAAoAAAAAHNQAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy90aHJlYWRpbmcucHlSBAAAAI0EAABzBAAAAAAHBwFjAAAAAAAAAAACAAAAQwAAAHMUAAAAdAAAagEAgwAAdAIAagEAgwAAF1MoAQAAAE4oAwAAAFIiAAAAdAYAAAB2YWx1ZXNSkgAAACgAAAAAKAAAAAAoAAAAAHNQAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy90aHJlYWRpbmcucHl0CgAAAF9lbnVtZXJhdGWZBAAAcwIAAAAAAmMAAAAAAAAAAAYAAABDAAAAcyUAAAB0AACPGQABdAEAagIAgwAAdAMAagIAgwAAF1NXZAEAUVhkAQBTKAIAAABz/QAAAFJldHVybiBhIGxpc3Qgb2YgYWxsIFRocmVhZCBvYmplY3RzIGN1cnJlbnRseSBhbGl2ZS4KCiAgICBUaGUgbGlzdCBpbmNsdWRlcyBkYWVtb25pYyB0aHJlYWRzLCBkdW1teSB0aHJlYWQgb2JqZWN0cyBjcmVhdGVkIGJ5CiAgICBjdXJyZW50X3RocmVhZCgpLCBhbmQgdGhlIG1haW4gdGhyZWFkLiBJdCBleGNsdWRlcyB0ZXJtaW5hdGVkIHRocmVhZHMgYW5kCiAgICB0aHJlYWRzIHRoYXQgaGF2ZSBub3QgeWV0IGJlZW4gc3RhcnRlZC4KCiAgICBOKAQAAABSkQAAAFIiAAAAUsYAAABSkgAAACgAAAAAKAAAAAAoAAAAAHNQAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9w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