A/MNCi9c/FVjAAAAAAAAAAAFAAAAQAAAAHOWAgAAZAAAWgAAZAEAWgEAZAIAWgIAZAMAWgMAZQIAZQMAF1oEAGUCAFoFAGUDAFoGAGUFAGUGABdaBwBkBABaCABlCABkBQAXZAYAF1oJAGQHAFoKAGQIAFoLAGUIAGUEABdlCwAXZQEAF1oMAGUNAGUOAGUPAGQJAIMBAIMCAFoQAGURAGQKAIMBAGoSAGUQAIMBAFoTAFsQAGQOAGQLAIQBAFoVAGQOAGEWAGQMAIQAAFoXAGQNAGQOAGwYAFoZAGQPAGQ0AGQQAIQAAIMAAFlaGgBkEQBlGwBmAQBkEgCEAACDAABZWhwAZBMAZDUAZBQAhAAAgwAAWVodAGUeAFofAGUeAFogAGUeAFohAGUeAFoiAGQVAIQAAFojAGQWAIQAAFokAGQXAIQAAFolAGQOAGQYAIQBAFomAGQOAGQZAIQBAFonAGQOAGQaAIQBAFooAGQOAGQNAGQbAIQCAFopAGUpAFoqAGQOAGQNAGQcAIQCAForAGQdAGQeAIQBAFoSAGUSAFosAGQfAIQAAFotAGQgAIQAAFouAGQhAIQAAFovAGQiAIQAAFowAGQjAIQAAFoxAGUyAFozAGU0AFo1AGU2AFo3AGQkAIQAAFo4AGQlAGQmAIQBAFo5AGQlAGQnAIQBAFo6AGQoAIQAAFo7AGQpAIQAAFo8AGQqAIQAAFo9AGQrAIQAAFo+AGQsAGQtAIQBAFo/AGQKAGQuAIQBAFpAAGQvAIQAAFpBAGQNAGQwAIQBAFpCAHkwAGQNAGQxAGxDAG0XAFoXAG0CAFoCAG0DAFoDAG0BAFoBAAFlAgBlAwAXWgQAV24RAARlRABrCgByewIBAQFuAQBYZDIAZUUAZgEAZDMAhAAAgwAAWVpGAGQOAFMoNgAAAHP6AwAAQSBjb2xsZWN0aW9uIG9mIHN0cmluZyBvcGVyYXRpb25zIChtb3N0IGFyZSBubyBsb25nZXIgdXNlZCkuCgpXYXJuaW5nOiBtb3N0IG9mIHRoZSBjb2RlIHlvdSBzZWUgaGVyZSBpc24ndCBub3JtYWxseSB1c2VkIG5vd2FkYXlzLgpCZWdpbm5pbmcgd2l0aCBQeXRob24gMS42LCBtYW55IG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgYXMKbWV0aG9kcyBvbiB0aGUgc3RhbmRhcmQgc3RyaW5nIG9iamVjdC4gVGhleSB1c2VkIHRvIGJlIGltcGxlbWVudGVkIGJ5CmEgYnVpbHQtaW4gbW9kdWxlIGNhbGxlZCBzdHJvcCwgYnV0IHN0cm9wIGlzIG5vdyBvYnNvbGV0ZSBpdHNlbGYuCgpQdWJsaWMgbW9kdWxlIHZhcmlhYmxlczoKCndoaXRlc3BhY2UgLS0gYSBzdHJpbmcgY29udGFpbmluZyBhbGwgY2hhcmFjdGVycyBjb25zaWRlcmVkIHdoaXRlc3BhY2UKbG93ZXJjYXNlIC0tIGEgc3RyaW5nIGNvbnRhaW5pbmcgYWxsIGNoYXJhY3RlcnMgY29uc2lkZXJlZCBsb3dlcmNhc2UgbGV0dGVycwp1cHBlcmNhc2UgLS0gYSBzdHJpbmcgY29udGFpbmluZyBhbGwgY2hhcmFjdGVycyBjb25zaWRlcmVkIHVwcGVyY2FzZSBsZXR0ZXJzCmxldHRlcnMgLS0gYSBzdHJpbmcgY29udGFpbmluZyBhbGwgY2hhcmFjdGVycyBjb25zaWRlcmVkIGxldHRlcnMKZGlnaXRzIC0tIGEgc3RyaW5nIGNvbnRhaW5pbmcgYWxsIGNoYXJhY3RlcnMgY29uc2lkZXJlZCBkZWNpbWFsIGRpZ2l0cwpoZXhkaWdpdHMgLS0gYSBzdHJpbmcgY29udGFpbmluZyBhbGwgY2hhcmFjdGVycyBjb25zaWRlcmVkIGhleGFkZWNpbWFsIGRpZ2l0cwpvY3RkaWdpdHMgLS0gYSBzdHJpbmcgY29udGFpbmluZyBhbGwgY2hhcmFjdGVycyBjb25zaWRlcmVkIG9jdGFsIGRpZ2l0cwpwdW5jdHVhdGlvbiAtLSBhIHN0cmluZyBjb250YWluaW5nIGFsbCBjaGFyYWN0ZXJzIGNvbnNpZGVyZWQgcHVuY3R1YXRpb24KcHJpbnRhYmxlIC0tIGEgc3RyaW5nIGNvbnRhaW5pbmcgYWxsIGNoYXJhY3RlcnMgY29uc2lkZXJlZCBwcmludGFibGUKCnMGAAAAIAkKDQsMdBoAAABhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5enQaAAAAQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVp0CgAAADAx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dC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3N0cmluZy5weVI6AAAAfAAAAHMQAAAABgEGAQYCBgEGAgkFCQwJGmMBAAAAAQAAAAEAAABDAAAAcwoAAAB8AABqAACDAABTKAEAAABzUwAAAGxvd2VyKHMpIC0+IHN0cmluZwoKICAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyBzIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuCgogICAgKAEAAAB0BQAAAGxvd2VyKAEAAABSDQAAACgAAAAAKAAAAABzTQAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvc3RyaW5nLnB5UlcAAADcAAAAcwIAAAAABmMBAAAAAQAAAAEAAABDAAAAcwoAAAB8AABqAACDAABTKAEAAABzUwAAAHVwcGVyKHMpIC0+IHN0cmluZwoKICAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyBzIGNvbnZlcnRlZCB0byB1cHBlcmNhc2UuCgogICAgKAEAAAB0BQAAAHVwcGVyKAEAAABSDQAAACgAAAAAKAAAAABzTQAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvc3RyaW5nLnB5UlgAAADlAAAAcwIAAAAABmMBAAAAAQAAAAEAAABDAAAAcwoAAAB8AABqAACDAABTKAEAAABzhAAAAHN3YXBjYXNlKHMpIC0+IHN0cmluZwoKICAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyBzIHdpdGggdXBwZXIgY2FzZSBjaGFyYWN0ZXJzCiAgICBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlIGFuZCB2aWNlIHZlcnNhLgoKICAgICgBAAAAdAgAAABzd2FwY2FzZSgBAAAAUg0AAAAoAAAAACgAAAAAc00AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3N0cmluZy5weVJZAAAA7gAAAHMCAAAAAAdjAgAAAAIAAAACAAAAQwAAAHMNAAAAfAAAagAAfAEAgwEAUygBAAAAcwgBAABzdHJpcChzIFssY2hhcnNdKSAtPiBzdHJpbmcKCiAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgcyB3aXRoIGxlYWRpbmcgYW5kIHRyYWlsaW5nCiAgICB3aGl0ZXNwYWNlIHJlbW92ZWQuCiAgICBJZiBjaGFycyBpcyBnaXZlbiBhbmQgbm90IE5vbmUsIHJlbW92ZSBjaGFyYWN0ZXJzIGluIGNoYXJzIGluc3RlYWQuCiAgICBJZiBjaGFycyBpcyB1bmljb2RlLCBTIHdpbGwgYmUgY29udmVydGVkIHRvIHVuaWNvZGUgYmVmb3JlIHN0cmlwcGluZy4KCiAgICAoAQAAAHQFAAAAc3RyaXAoAgAAAFINAAAAdAUAAABjaGFycygAAAAAKAAAAABzTQAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvc3RyaW5nLnB5UloAAAD4AAAAcwIAAAAACWMCAAAAAgAAAAIAAABDAAAAcw0AAAB8AABqAAB8AQCDAQBTKAEAAABzrgAAAGxzdHJpcChzIFssY2hhcnNdKSAtPiBzdHJpbmcKCiAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgcyB3aXRoIGxlYWRpbmcgd2hpdGVzcGFjZSByZW1vdmVkLgogICAgSWYgY2hhcnMgaXMgZ2l2ZW4gYW5kIG5vdCBOb25lLCByZW1vdmUgY2hhcmFjdGVycyBpbiBjaGFycyBpbnN0ZWFkLgoKICAgICgBAAAAdAYAAABsc3RyaXAoAgAAAFINAAAAUlsAAAAoAAAAACgAAAAAc00AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3N0cmluZy5weVJcAAAABAEAAHMCAAAAAAdjAgAAAAIAAAACAAAAQwAAAHMNAAAAfAAAagAAfAEAgwEAUygBAAAAc68AAAByc3RyaXAocyBbLGNoYXJzXSkgLT4gc3RyaW5nCgogICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHMgd2l0aCB0cmFpbGluZyB3aGl0ZXNwYWNlIHJlbW92ZWQuCiAgICBJZiBjaGFycyBpcyBnaXZlbiBhbmQgbm90IE5vbmUsIHJlbW92ZSBjaGFyYWN0ZXJzIGluIGNoYXJzIGluc3RlYWQuCgogICAgKAEAAAB0BgAAAHJzdHJpcCgCAAAAUg0AAABSWwAAACgAAAAAKAAAAABzTQAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvc3RyaW5nLnB5Ul0AAAAOAQAAcwIAAAAAB2MDAAAAAwAAAAMAAABDAAAAcxAAAAB8AABqAAB8AQB8AgCDAgBTKAEAAABzcgEAAHNwbGl0KHMgWyxzZXAgWyxtYXhzcGxpdF1dKSAtPiBsaXN0IG9mIHN0cmluZ3MKCiAgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nIHMsIHVzaW5nIHNlcCBhcyB0aGUKICAgIGRlbGltaXRlciBzdHJpbmcuICBJZiBtYXhzcGxpdCBpcyBnaXZlbiwgc3BsaXRzIGF0IG5vIG1vcmUgdGhhbgogICAgbWF4c3BsaXQgcGxhY2VzIChyZXN1bHRpbmcgaW4gYXQgbW9zdCBtYXhzcGxpdCsxIHdvcmRzKS4gIElmIHNlcAogICAgaXMgbm90IHNwZWNpZmllZCBvciBpcyBOb25lLCBhbnkgd2hpdGVzcGFjZSBzdHJpbmcgaXMgYSBzZXBhcmF0b3IuCgogICAgKHNwbGl0IGFuZCBzcGxpdGZpZWxkcyBhcmUgc3lub255bW91cykKCiAgICAoAQAAAFIMAAAAKAMAAABSDQAAAFIOAAAAdAgAAABtYXhzcGxpdCgAAAAAKAAAAABzTQAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvc3RyaW5nLnB5UgwAAAAZAQAAcwIAAAAAC2MDAAAAAwAAAAMAAABDAAAAcxAAAAB8AABqAAB8AQB8AgCDAgBTKAEAAABzVwEAAHJzcGxpdChzIFssc2VwIFssbWF4c3BsaXRdXSkgLT4gbGlzdCBvZiBzdHJpbmdzCgogICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZyBzLCB1c2luZyBzZXAgYXMgdGhlCiAgICBkZWxpbWl0ZXIgc3RyaW5nLCBzdGFydGluZyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgYW5kIHdvcmtpbmcKICAgIHRvIHRoZSBmcm9udC4gIElmIG1heHNwbGl0IGlzIGdpdmVuLCBhdCBtb3N0IG1heHNwbGl0IHNwbGl0cyBhcmUKICAgIGRvbmUuIElmIHNlcCBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzIE5vbmUsIGFueSB3aGl0ZXNwYWNlIHN0cmluZwogICAgaXMgYSBzZXBhcmF0b3IuCiAgICAoAQAAAHQGAAAAcnNwbGl0KAMAAABSDQAAAFIOAAAAUl4AAAAoAAAAACgAAAAAc00AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3N0cmluZy5weVJfAAAAKAEAAHMCAAAAAAlSBwAAAGMCAAAAAgAAAAIAAABDAAAAcw0AAAB8AQBqAAB8AACDAQBTKAEAAABz1gAAAGpvaW4obGlzdCBbLHNlcF0pIC0+IHN0cmluZwoKICAgIFJldHVybiBhIHN0cmluZyBjb21wb3NlZCBvZiB0aGUgd29yZHMgaW4gbGlzdCwgd2l0aAogICAgaW50ZXJ2ZW5pbmcgb2NjdXJyZW5jZXMgb2Ygc2VwLiAgVGhlIGRlZmF1bHQgc2VwYXJhdG9yIGlzIGEKICAgIHNpbmdsZSBzcGFjZS4KCiAgICAoam9pbmZpZWxkcyBhbmQgam9pbiBhcmUgc3lub255bW91cykKCiAgICAoAQAAAFILAAAAKAIAAAB0BQAAAHdvcmRzUg4AAAAoAAAAACgAAAAAc00AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3N0cmluZy5weVILAAAANAEAAHMCAAAAAApjAQAAAAIAAAACAAAARwAAAHMNAAAAfAAAagAAfAEAjAAAUygBAAAAc3AAAABpbmRleChzLCBzdWIgWyxzdGFydCBbLGVuZF1dKSAtPiBpbnQKCiAgICBMaWtlIGZpbmQgYnV0IHJhaXNlcyBWYWx1ZUVycm9yIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3QgZm91bmQuCgogICAgKAEAAAB0BQAAAGluZGV4KAIAAABSDQAAAFJQAAAAKAAAAAAoAAAAAHNNAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9zdHJpbmcucHlSYQAAAEIBAABzAgAAAAAGYwEAAAACAAAAAgAAAEcAAABzDQAAAHwAAGoAAHwBAIwAAFMoAQAAAHNyAAAAcmluZGV4KHMsIHN1YiBbLHN0YXJ0IFssZW5kXV0pIC0+IGludAoKICAgIExpa2UgcmZpbmQgYnV0IHJhaXNlcyBWYWx1ZUVycm9yIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3QgZm91bmQuCgogICAgKAEAAAB0BgAAAHJpbmRleCgCAAAAUg0AAABSUAAAACgAAAAAKAAAAABzTQAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvc3RyaW5nLnB5UmIAAABLAQAAcwIAAAAABmMBAAAAAgAAAAIAAABHAAAAcw0AAAB8AABqAAB8AQCMAABTKAEAAABzyAAAAGNvdW50KHMsIHN1YlssIHN0YXJ0WyxlbmRdXSkgLT4gaW50CgogICAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nIHN1YiBpbiBzdHJpbmcKICAgIHNbc3RhcnQ6ZW5kXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZQogICAgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uCgogICAgKAEAAAB0BQAAAGNvdW50KAIAAABSDQAAAFJQAAAAKAAAAAAoAAAAAHNNAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9zdHJpbmcucHlSYwAAAFQBAABzAgAAAAAIYwEAAAACAAAAAgAAAEcAAABzDQAAAHwAAGoAAHwBAIwAAFMoAQAAAHMDAQAAZmluZChzLCBzdWIgWyxzdGFydCBbLGVuZF1dKSAtPiBpbgoKICAgIFJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIHMgd2hlcmUgc3Vic3RyaW5nIHN1YiBpcyBmb3VuZCwKICAgIHN1Y2ggdGhhdCBzdWIgaXMgY29udGFpbmVkIHdpdGhpbiBzW3N0YXJ0LGVuZF0uICBPcHRpb25hbAogICAgYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLgoKICAgIFJldHVybiAtMSBvbiBmYWlsdXJlLgoKICAgICgBAAAAdAQAAABmaW5kKAIAAABSDQAAAFJQAAAAKAAAAAAoAAAAAHNNAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9zdHJpbmcucHlSZAAAAF8BAABzAgAAAAAKYwEAAAACAAAAAgAAAEcAAABzDQAAAHwAAGoAAHwBAIwAAFMoAQAAAHMGAQAAcmZpbmQocywgc3ViIFssc3RhcnQgWyxlbmRdXSkgLT4gaW50CgogICAgUmV0dXJuIHRoZSBoaWdoZXN0IGluZGV4IGluIHMgd2hlcmUgc3Vic3RyaW5nIHN1YiBpcyBmb3VuZCwKICAgIHN1Y2ggdGhhdCBzdWIgaXMgY29udGFpbmVkIHdpdGhpbiBzW3N0YXJ0LGVuZF0uICBPcHRpb25hbAogICAgYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLgoKICAgIFJldHVybiAtMSBvbiBmYWlsdXJlLgoKICAgICgBAAAAdAUAAAByZmluZCgCAAAAUg0AAABSUAAAACgAAAAAKAAAAABzTQAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvc3RyaW5nLnB5UmUAAABsAQAAcwIAAAAACmMBAAAAAQAAAAIAAABDAAAAcwoAAAB0AAB8AACDAQBTKAEAAABzWQAAAGF0b2YocykgLT4gZmxvYXQKCiAgICBSZXR1cm4gdGhlIGZsb2F0aW5nIHBvaW50IG51bWJlciByZXByZXNlbnRlZCBieSB0aGUgc3RyaW5nIHMuCgogICAgKAEAAAB0BgAAAF9mbG9hdCgBAAAAUg0AAAAoAAAAACgAAAAAc00AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3N0cmluZy5weXQEAAAAYXRvZn4BAABzAgAAAAAGaQoAAABjAgAAAAIAAAADAAAAQwAAAHMNAAAAdAAAfAAAfAEAgwIAUygBAAAAc3MBAABhdG9pKHMgWyxiYXNlXSkgLT4gaW50CgogICAgUmV0dXJuIHRoZSBpbnRlZ2VyIHJlcHJlc2VudGVkIGJ5IHRoZSBzdHJpbmcgcyBpbiB0aGUgZ2l2ZW4KICAgIGJhc2UsIHdoaWNoIGRlZmF1bHRzIHRvIDEwLiAgVGhlIHN0cmluZyBzIG11c3QgY29uc2lzdCBvZiBvbmUKICAgIG9yIG1vcmUgZGlnaXRzLCBwb3NzaWJseSBwcmVjZWRlZCBieSBhIHNpZ24uICBJZiBiYXNlIGlzIDAsIGl0CiAgICBpcyBjaG9zZW4gZnJvbSB0aGUgbGVhZGluZyBjaGFyYWN0ZXJzIG9mIHMsIDAgZm9yIG9jdGFsLCAweCBvcgogICAgMFggZm9yIGhleGFkZWNpbWFsLiAgSWYgYmFzZSBpcyAxNiwgYSBwcmVjZWRpbmcgMHggb3IgMFggaXMKICAgIGFjY2VwdGVkLgoKICAgICgBAAAAdAQAAABfaW50KAIAAABSDQAAAHQEAAAAYmFzZSgAAAAAKAAAAABzTQAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvc3RyaW5nLnB5dAQAAABhdG9piAEAAHMCAAAAAAtjAgAAAAIAAAADAAAAQwAAAHMNAAAAdAAAfAAAfAEAgwIAUygBAAAAc7MBAABhdG9sKHMgWyxiYXNlXSkgLT4gbG9uZwoKICAgIFJldHVybiB0aGUgbG9uZyBpbnRlZ2VyIHJlcHJlc2VudGVkIGJ5IHRoZSBzdHJpbmcgcyBpbiB0aGUKICAgIGdpdmVuIGJhc2UsIHdoaWNoIGRlZmF1bHRzIHRvIDEwLiAgVGhlIHN0cmluZyBzIG11c3QgY29uc2lzdAogICAgb2Ygb25lIG9yIG1vcmUgZGlnaXRzLCBwb3NzaWJseSBwcmVjZWRlZCBieSBhIHNpZ24uICBJZiBiYXNlCiAgICBpcyAwLCBpdCBpcyBjaG9zZW4gZnJvbSB0aGUgbGVhZGluZyBjaGFyYWN0ZXJzIG9mIHMsIDAgZm9yCiAgICBvY3RhbCwgMHggb3IgMFggZm9yIGhleGFkZWNpbWFsLiAgSWYgYmFzZSBpcyAxNiwgYSBwcmVjZWRpbmcKICAgIDB4IG9yIDBYIGlzIGFjY2VwdGVkLiAgQSB0cmFpbGluZyBMIG9yIGwgaXMgbm90IGFjY2VwdGVkLAogICAgdW5sZXNzIGJhc2UgaXMgMC4KCiAgICAoAQAAAHQFAAAAX2xvbmcoAgAAAFINAAAAUmkAAAAoAAAAACgAAAAAc00AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3N0cmluZy5weXQEAAAAYXRvbJcBAABzAgAAAAAMYwIAAAADAAAAAwAAAEcAAABzEAAAAHwAAGoAAHwBAHwCAIwBAFMoAQAAAHP1AAAAbGp1c3Qocywgd2lkdGhbLCBmaWxsY2hhcl0pIC0+IHN0cmluZwoKICAgIFJldHVybiBhIGxlZnQtanVzdGlmaWVkIHZlcnNpb24gb2YgcywgaW4gYSBmaWVsZCBvZiB0aGUKICAgIHNwZWNpZmllZCB3aWR0aCwgcGFkZGVkIHdpdGggc3BhY2VzIGFzIG5lZWRlZC4gIFRoZSBzdHJpbmcgaXMKICAgIG5ldmVyIHRydW5jYXRlZC4gIElmIHNwZWNpZmllZCB0aGUgZmlsbGNoYXIgaXMgdXNlZCBpbnN0ZWFkIG9mIHNwYWNlcy4KCiAgICAoAQAAAHQFAAAAbGp1c3QoAwAAAFINAAAAdAUAAAB3aWR0aFJQAAAAKAAAAAAoAAAAAHNNAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9zdHJpbmcucHlSbQAAAKcBAABzAgAAAAAIYwIAAAADAAAAAwAAAEcAAABzEAAAAHwAAGoAAHwBAHwCAIwBAFMoAQAAAHP2AAAAcmp1c3Qocywgd2lkdGhbLCBmaWxsY2hhcl0pIC0+IHN0cmluZwoKICAgIFJldHVybiBhIHJpZ2h0LWp1c3RpZmllZCB2ZXJzaW9uIG9mIHMsIGluIGEgZmllbGQgb2YgdGhlCiAgICBzcGVjaWZpZWQgd2lkdGgsIHBhZGRlZCB3aXRoIHNwYWNlcyBhcyBuZWVkZWQuICBUaGUgc3RyaW5nIGlzCiAgICBuZXZlciB0cnVuY2F0ZWQuICBJZiBzcGVjaWZpZWQgdGhlIGZpbGxjaGFyIGlzIHVzZWQgaW5zdGVhZCBvZiBzcGFjZXMuCgogICAgKAEAAAB0BQAAAHJqdXN0KAMAAABSDQAAAFJuAAAAUlAAAAAoAAAAACgAAAAAc00AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3N0cmluZy5weVJvAAAAsgEAAHMCAAAAAAhjAgAAAAMAAAADAAAARwAAAHMQAAAAfAAAagAAfAEAfAIAjAEAUygBAAAAc+4AAABjZW50ZXIocywgd2lkdGhbLCBmaWxsY2hhcl0pIC0+IHN0cmluZwoKICAgIFJldHVybiBhIGNlbnRlciB2ZXJzaW9uIG9mIHMsIGluIGEgZmllbGQgb2YgdGhlIHNwZWNpZmllZAogICAgd2lkdGguIHBhZGRlZCB3aXRoIHNwYWNlcyBhcyBuZWVkZWQuICBUaGUgc3RyaW5nIGlzIG5ldmVyCiAgICB0cnVuY2F0ZWQuICBJZiBzcGVjaWZpZWQgdGhlIGZpbGxjaGFyIGlzIHVzZWQgaW5zdGVhZCBvZiBzcGFjZXMuCgogICAgKAEAAAB0BgAAAGNlbnRlcigDAAAAUg0AAABSbgAAAFJQAAAAKAAAAAAoAAAAAHNNAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9zdHJpbmcucHlScAAAAL0BAABzAgAAAAAIYwIAAAACAAAAAwAAAEMAAABzKwAAAHQAAHwAAHQBAIMCAHMeAHQCAHwAAIMBAH0AAG4AAHwAAGoDAHwBAIMBAFMoAQAAAHOhAAAAemZpbGwoeCwgd2lkdGgpIC0+IHN0cmluZwoKICAgIFBhZCBhIG51bWVyaWMgc3RyaW5nIHggd2l0aCB6ZXJvcyBvbiB0aGUgbGVmdCwgdG8gZmlsbCBhIGZpZWxkCiAgICBvZiB0aGUgc3BlY2lmaWVkIHdpZHRoLiAgVGhlIHN0cmluZyB4IGlzIG5ldmVyIHRydW5jYXRlZC4KCiAgICAoBAAAAHQKAAAAaXNpbnN0YW5jZXQKAAAAYmFzZXN0cmluZ3QEAAAAcmVwcnQFAAAAemZpbGwoAgAAAFIKAAAAUm4AAAAoAAAAACgAAAAAc00AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3N0cmluZy5weVJ0AAAAygEAAHMGAAAAAAcPAQ8BaQgAAABjAgAAAAIAAAACAAAAQwAAAHMNAAAAfAAAagAAfAEAgwEAUygBAAAAc9cAAABleHBhbmR0YWJzKHMgWyx0YWJzaXplXSkgLT4gc3RyaW5nCgogICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHMgd2l0aCBhbGwgdGFiIGNoYXJhY3RlcnMgcmVwbGFjZWQKICAgIGJ5IHRoZSBhcHByb3ByaWF0ZSBudW1iZXIgb2Ygc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQKICAgIGNvbHVtbiwgYW5kIHRoZSB0YWJzaXplIChkZWZhdWx0IDgpLgoKICAgICgBAAAAdAoAAABleHBhbmR0YWJzKAIAAABSDQAAAHQHAAAAdGFic2l6ZSgAAAAAKAAAAABzTQAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvc3RyaW5nLnB5UnUAAADXAQAAcwIAAAAACGMDAAAAAwAAAAUAAABDAAAAczsAAAB8AgBzEgB8AQBkAgBrCAByIgB8AABqAQB8AQB8AgCDAgBTfAAAagEAfAEAfAAAZAEAIBeDAQBTZAIAUygDAAAAc2cBAAB0cmFuc2xhdGUocyx0YWJsZSBbLGRlbGV0aW9uc10pIC0+IHN0cmluZwoKICAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyBzLCB3aGVyZSBhbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcKICAgIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGlvbnMgYXJlIHJlbW92ZWQsIGFuZCB0aGUKICAgIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGhhdmUgYmVlbiBtYXBwZWQgdGhyb3VnaCB0aGUgZ2l2ZW4KICAgIHRyYW5zbGF0aW9uIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgc3RyaW5nIG9mIGxlbmd0aCAyNTYuICBUaGUKICAgIGRlbGV0aW9ucyBhcmd1bWVudCBpcyBub3QgYWxsb3dlZCBmb3IgVW5pY29kZSBzdHJpbmdzLgoKICAgIGkAAAAATigCAAAAUkoAAAB0CQAAAHRyYW5zbGF0ZSgDAAAAUg0AAAB0BQAAAHRhYmxldAkAAABkZWxldGlvbnMoAAAAACgAAAAAc00AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3N0cmluZy5weVJ3AAAA4gEAAHMGAAAAAAoSARAFYwEAAAABAAAAAQAAAEMAAABzCgAAAHwAAGoAAIMAAFMoAQAAAHNvAAAAY2FwaXRhbGl6ZShzKSAtPiBzdHJpbmcKCiAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgcyB3aXRoIG9ubHkgaXRzIGZpcnN0IGNoYXJhY3RlcgogICAgY2FwaXRhbGl6ZWQuCgogICAgKAEAAABSCAAAACgBAAAAUg0AAAAoAAAAACgAAAAAc00AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4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