A/MNCldcrFFjAAAAAAAAAAAEAAAAQAAAAHPFAgAAZAAAZAEAZAIAZAMAZwQAWgAAZAQAZAUAbAEAWgEAZAQAZAUAbAIAWgMAZAQAZAUAbAQAWgMAZAQAZAYAbAMAbQUAWgUAAWQEAGQHAGwGAG0HAFoHAAFkCABaCABkCQBaCQBkCgBaCgBkCwBaCwBkDABaDABpFQBlCABlCABkBQBmAwBkDQA2ZQgAZQgAZAUAZgMAZA4ANmUIAGUIAGQFAGYDAGQPADZlCABlCABkBQBmAwBkEAA2ZQgAZQgAZAUAZgMAZBEANmUIAGUIAGQFAGYDAGQSADZlCABlCABkBQBmAwBkEwA2ZQgAZQgAZAUAZgMAZBQANmUIAGUIAGQFAGYDAGQVADZlCABlCABkBQBmAwBkFgA2ZQgAZQgAZAUAZgMAZBcANmUIAGUIAGQFAGYDAGQYADZkQQBkDAA2ZQkAZQkAZAUAZgMAZBkANmUJAGUJAGQFAGYDAGQaADZlCQBkBQBkGwBmAwBkHAA2ZQkAZAUAZBsAZgMAZB0ANmUJAGQFAGQFAGYDAGQbADZlCQBlCQBkBQBmAwBkHgA2ZQoAZQkAZB8AZgMAZB8ANmQFAGUJAGQfAGYDAGQgADZaDgBpGABkDQBkIQA2ZA0AZCIANmQOAGQjADZkDgBkJAA2ZA8AZCUANmQPAGQmADZkEABkJwA2ZBAAZCgANmQRAGQpADZkEQBkKgA2ZBIAZCsANmQSAGQsADZkEwBkLQA2ZBMAZC4ANmQUAGQvADZkFABkMAA2ZBUAZDEANmQVAGQyADZkFgBkMwA2ZBYAZDQANmQ1AGQ2ADZkHABkNwA2ZDgAZDkANmQMAGQ6ADZaDwBpAwBkOwBkGgA2ZDwAZBkANmQFAGQMADZaEABkBQBkBQBkBQBkPQCEAwBaEQBkPgCEAABaEgBkPwCEAABaEwBkAABkQgBkQACEAACDAABZWhQAZAUAUyhDAAAAdAcAAABDaGFyc2V0dAkAAABhZGRfYWxpYXN0CwAAAGFkZF9jaGFyc2V0dAkAAABhZGRfY29kZWNp/////04oAQAAAHQGAAAAZXJyb3JzKAEAAAB0DgAAAGVuY29kZV83b3I4Yml0aQEAAABpAgAAAGkDAAAAaQcAAABzCAAAAHVzLWFzY2lpcwoAAABpc28tODg1OS0xcwoAAABpc28tODg1OS0ycwoAAABpc28tODg1OS0zcwoAAABpc28tODg1OS00cwoAAABpc28tODg1OS05cwsAAABpc28tODg1OS0xMHMLAAAAaXNvLTg4NTktMTNzCwAAAGlzby04ODU5LTE0cwsAAABpc28tODg1OS0xNXMLAAAAaXNvLTg4NTktMTZzDAAAAHdpbmRvd3MtMTI1MnQGAAAAdmlzY2lpdAQAAABiaWc1dAYAAABnYjIzMTJzCwAAAGlzby0yMDIyLWpwcwYAAABldWMtanB0CQAAAHNoaWZ0X2ppc3MGAAAAa29pOC1ycwUAAAB1dGYtOHQEAAAAOGJpdHQHAAAAbGF0aW5fMXMHAAAAbGF0aW4tMXQHAAAAbGF0aW5fMnMHAAAAbGF0aW4tMnQHAAAAbGF0aW5fM3MHAAAAbGF0aW4tM3QHAAAAbGF0aW5fNHMHAAAAbGF0aW4tNHQHAAAAbGF0aW5fNXMHAAAAbGF0aW4tNXQHAAAAbGF0aW5fNnMHAAAAbGF0aW4tNnQHAAAAbGF0aW5fN3MHAAAAbGF0aW4tN3QHAAAAbGF0aW5fOHMHAAAAbGF0aW4tOHQHAAAAbGF0aW5fOXMHAAAAbGF0aW4tOXQIAAAAbGF0aW5fMTBzCAAAAGxhdGluLTEwcw4AAABrc19jXzU2MDEtMTk4N3QFAAAAY3A5NDl0BgAAAGV1Y19qcHMGAAAAZXVjLWtydAYAAABldWNfa3J0BQAAAGFzY2lpdAwAAABldWNnYjIzMTJfY250BwAAAGJpZzVfdHdjBAAAAAQAAAADAAAAQwAAAHMyAAAAfAIAdAAAawIAchsAdAEAZAEAgwEAggEAbgAAfAEAfAIAfAMAZgMAdAIAfAAAPGQCAFMoAwAAAHM+BAAAQWRkIGNoYXJhY3RlciBzZXQgcHJvcGVydGllcyB0byB0aGUgZ2xvYmFsIHJlZ2lzdHJ5LgoKICAgIGNoYXJzZXQgaXMgdGhlIGlucHV0IGNoYXJhY3RlciBzZXQsIGFuZCBtdXN0IGJlIHRoZSBjYW5vbmljYWwgbmFtZSBvZiBhCiAgICBjaGFyYWN0ZXIgc2V0LgoKICAgIE9wdGlvbmFsIGhlYWRlcl9lbmMgYW5kIGJvZHlfZW5jIGlzIGVpdGhlciBDaGFyc2V0LlFQIGZvcgogICAgcXVvdGVkLXByaW50YWJsZSwgQ2hhcnNldC5CQVNFNjQgZm9yIGJhc2U2NCBlbmNvZGluZywgQ2hhcnNldC5TSE9SVEVTVCBmb3IKICAgIHRoZSBzaG9ydGVzdCBvZiBxcCBvciBiYXNlNjQgZW5jb2RpbmcsIG9yIE5vbmUgZm9yIG5vIGVuY29kaW5nLiAgU0hPUlRFU1QKICAgIGlzIG9ubHkgdmFsaWQgZm9yIGhlYWRlcl9lbmMuICBJdCBkZXNjcmliZXMgaG93IG1lc3NhZ2UgaGVhZGVycyBhbmQKICAgIG1lc3NhZ2UgYm9kaWVzIGluIHRoZSBpbnB1dCBjaGFyc2V0IGFyZSB0byBiZSBlbmNvZGVkLiAgRGVmYXVsdCBpcyBubwogICAgZW5jb2RpbmcuCgogICAgT3B0aW9uYWwgb3V0cHV0X2NoYXJzZXQgaXMgdGhlIGNoYXJhY3RlciBzZXQgdGhhdCB0aGUgb3V0cHV0IHNob3VsZCBiZQogICAgaW4uICBDb252ZXJzaW9ucyB3aWxsIHByb2NlZWQgZnJvbSBpbnB1dCBjaGFyc2V0LCB0byBVbmljb2RlLCB0byB0aGUKICAgIG91dHB1dCBjaGFyc2V0IHdoZW4gdGhlIG1ldGhvZCBDaGFyc2V0LmNvbnZlcnQoKSBpcyBjYWxsZWQuICBUaGUgZGVmYXVsdAogICAgaXMgdG8gb3V0cHV0IGluIHRoZSBzYW1lIGNoYXJhY3RlciBzZXQgYXMgdGhlIGlucHV0LgoKICAgIEJvdGggaW5wdXRfY2hhcnNldCBhbmQgb3V0cHV0X2NoYXJzZXQgbXVzdCBoYXZlIFVuaWNvZGUgY29kZWMgZW50cmllcyBpbgogICAgdGhlIG1vZHVsZSdzIGNoYXJzZXQtdG8tY29kZWMgbWFwcGluZzsgdXNlIGFkZF9jb2RlYyhjaGFyc2V0LCBjb2RlY25hbWUpCiAgICB0byBhZGQgY29kZWNzIHRoZSBtb2R1bGUgZG9lcyBub3Qga25vdyBhYm91dC4gIFNlZSB0aGUgY29kZWNzIG1vZHVsZSdzCiAgICBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgcyEAAABTSE9SVEVTVCBub3QgYWxsb3dlZCBmb3IgYm9keV9lbmNOKAMAAAB0CAAAAFNIT1JURVNUdAoAAABWYWx1ZUVycm9ydAgAAABDSEFSU0VUUygEAAAAdAcAAABjaGFyc2V0dAoAAABoZWFkZXJfZW5jdAgAAABib2R5X2VuY3QOAAAAb3V0cHV0X2NoYXJzZXQoAAAAACgAAAAAc1UAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9lbWFpbC9jaGFyc2V0LnB5UgIAAABsAAAAcwYAAAAAFwwBDwFjAgAAAAIAAAADAAAAQwAAAHMOAAAAfAEAdAAAfAAAPGQBAFMoAgAAAHOPAAAAQWRkIGEgY2hhcmFjdGVyIHNldCBhbGlhcy4KCiAgICBhbGlhcyBpcyB0aGUgYWxpYXMgbmFtZSwgZS5nLiBsYXRpbi0xCiAgICBjYW5vbmljYWwgaXMgdGhlIGNoYXJhY3RlciBzZXQncyBjYW5vbmljYWwgbmFtZSwgZS5nLiBpc28tODg1OS0xCiAgICBOKAEAAAB0BwAAAEFMSUFTRVMoAgAAAHQFAAAAYWxpYXN0CQAAAGNhbm9uaWNhbCgAAAAAKAAAAABzVQAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2VtYWlsL2NoYXJzZXQucHlSAQAAAIgAAABzAgAAAAAGYwIAAAACAAAAAwAAAEMAAABzDgAAAHwBAHQAAHwAADxkAQBTKAIAAABzJAEAAEFkZCBhIGNvZGVjIHRoYXQgbWFwIGNoYXJhY3RlcnMgaW4gdGhlIGdpdmVuIGNoYXJzZXQgdG8vZnJvbSBVbmljb2RlLgoKICAgIGNoYXJzZXQgaXMgdGhlIGNhbm9uaWNhbCBuYW1lIG9mIGEgY2hhcmFjdGVyIHNldC4gIGNvZGVjbmFtZSBpcyB0aGUgbmFtZQogICAgb2YgYSBQeXRob24gY29kZWMsIGFzIGFwcHJvcHJpYXRlIGZvciB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIHRoZSB1bmljb2RlKCkKICAgIGJ1aWx0LWluLCBvciB0byB0aGUgZW5jb2RlKCkgbWV0aG9kIG9mIGEgVW5pY29kZSBzdHJpbmcuCiAgICBOKAEAAAB0CQAAAENPREVDX01BUCgCAAAAUh4AAAB0CQAAAGNvZGVjbmFtZSgAAAAAKAAAAABzVQAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2VtYWlsL2NoYXJzZXQucHlSAwAAAJEAAABzAgAAAAAHYwAAAAAAAAAAAgAAAEIAAABzjAAAAGUAAFoBAGQAAFoCAGUDAGQBAIQBAFoEAGQCAIQAAFoFAGUFAFoGAGQDAIQAAFoHAGQEAIQAAFoIAGQFAIQAAFoJAGQGAIQAAFoKAGQHAIQAAFoLAGUMAGQIAIQBAFoNAGQJAIQAAFoOAGQKAIQAAFoPAGUQAGQLAIQBAFoRAGUMAGQMAIQBAFoSAFJTKA0AAABzPwkAAE1hcCBjaGFyYWN0ZXIgc2V0cyB0byB0aGVpciBlbWFpbCBwcm9wZXJ0aWVzLgoKICAgIFRoaXMgY2xhc3MgcHJvdmlkZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlcXVpcmVtZW50cyBpbXBvc2VkIG9uIGVtYWlsCiAgICBmb3IgYSBzcGVjaWZpYyBjaGFyYWN0ZXIgc2V0LiAgSXQgYWxzbyBwcm92aWRlcyBjb252ZW5pZW5jZSByb3V0aW5lcyBmb3IKICAgIGNvbnZlcnRpbmcgYmV0d2VlbiBjaGFyYWN0ZXIgc2V0cywgZ2l2ZW4gdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGUKICAgIGFwcGxpY2FibGUgY29kZWNzLiAgR2l2ZW4gYSBjaGFyYWN0ZXIgc2V0LCBpdCB3aWxsIGRvIGl0cyBiZXN0IHRvIHByb3ZpZGUKICAgIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhhdCBjaGFyYWN0ZXIgc2V0IGluIGFuIGVtYWlsIGluIGFuCiAgICBSRkMtY29tcGxpYW50IHdheS4KCiAgICBDZXJ0YWluIGNoYXJhY3RlciBzZXRzIG11c3QgYmUgZW5jb2RlZCB3aXRoIHF1b3RlZC1wcmludGFibGUgb3IgYmFzZTY0CiAgICB3aGVuIHVzZWQgaW4gZW1haWwgaGVhZGVycyBvciBib2RpZXMuICBDZXJ0YWluIGNoYXJhY3RlciBzZXRzIG11c3QgYmUKICAgIGNvbnZlcnRlZCBvdXRyaWdodCwgYW5kIGFyZSBub3QgYWxsb3dlZCBpbiBlbWFpbC4gIEluc3RhbmNlcyBvZiB0aGlzCiAgICBtb2R1bGUgZXhwb3NlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gYWJvdXQgYSBjaGFyYWN0ZXIgc2V0OgoKICAgIGlucHV0X2NoYXJzZXQ6IFRoZSBpbml0aWFsIGNoYXJhY3RlciBzZXQgc3BlY2lmaWVkLiAgQ29tbW9uIGFsaWFzZXMKICAgICAgICAgICAgICAgICAgIGFyZSBjb252ZXJ0ZWQgdG8gdGhlaXIgYG9mZmljaWFsJyBlbWFpbCBuYW1lcyAoZS5nLiBsYXRpbl8xCiAgICAgICAgICAgICAgICAgICBpcyBjb252ZXJ0ZWQgdG8gaXNvLTg4NTktMSkuICBEZWZhdWx0cyB0byA3LWJpdCB1cy1hc2NpaS4KCiAgICBoZWFkZXJfZW5jb2Rpbmc6IElmIHRoZSBjaGFyYWN0ZXIgc2V0IG11c3QgYmUgZW5jb2RlZCBiZWZvcmUgaXQgY2FuIGJlCiAgICAgICAgICAgICAgICAgICAgIHVzZWQgaW4gYW4gZW1haWwgaGVhZGVyLCB0aGlzIGF0dHJpYnV0ZSB3aWxsIGJlIHNldCB0bwogICAgICAgICAgICAgICAgICAgICBDaGFyc2V0LlFQIChmb3IgcXVvdGVkLXByaW50YWJsZSksIENoYXJzZXQuQkFTRTY0IChmb3IKICAgICAgICAgICAgICAgICAgICAgYmFzZTY0IGVuY29kaW5nKSwgb3IgQ2hhcnNldC5TSE9SVEVTVCBmb3IgdGhlIHNob3J0ZXN0IG9mCiAgICAgICAgICAgICAgICAgICAgIFFQIG9yIEJBU0U2NCBlbmNvZGluZy4gIE90aGVyd2lzZSwgaXQgd2lsbCBiZSBOb25lLgoKICAgIGJvZHlfZW5jb2Rpbmc6IFNhbWUgYXMgaGVhZGVyX2VuY29kaW5nLCBidXQgZGVzY3JpYmVzIHRoZSBlbmNvZGluZyBmb3IgdGhlCiAgICAgICAgICAgICAgICAgICBtYWlsIG1lc3NhZ2UncyBib2R5LCB3aGljaCBpbmRlZWQgbWF5IGJlIGRpZmZlcmVudCB0aGFuIHRoZQogICAgICAgICAgICAgICAgICAgaGVhZGVyIGVuY29kaW5nLiAgQ2hhcnNldC5TSE9SVEVTVCBpcyBub3QgYWxsb3dlZCBmb3IKICAgICAgICAgICAgICAgICAgIGJvZHlfZW5jb2RpbmcuCgogICAgb3V0cHV0X2NoYXJzZXQ6IFNvbWUgY2hhcmFjdGVyIHNldHMgbXVzdCBiZSBjb252ZXJ0ZWQgYmVmb3JlIHRoZSBjYW4gYmUKICAgICAgICAgICAgICAgICAgICB1c2VkIGluIGVtYWlsIGhlYWRlcnMgb3IgYm9kaWVzLiAgSWYgdGhlIGlucHV0X2NoYXJzZXQgaXMKICAgICAgICAgICAgICAgICAgICBvbmUgb2YgdGhlbSwgdGhpcyBhdHRyaWJ1dGUgd2lsbCBjb250YWluIHRoZSBuYW1lIG9mIHRoZQogICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgb3V0cHV0IHdpbGwgYmUgY29udmVydGVkIHRvLiAgT3RoZXJ3aXNlLCBpdCB3aWxsCiAgICAgICAgICAgICAgICAgICAgYmUgTm9uZS4KCiAgICBpbnB1dF9jb2RlYzogVGhlIG5hbWUgb2YgdGhlIFB5dGhvbiBjb2RlYyB1c2VkIHRvIGNvbnZlcnQgdGhlCiAgICAgICAgICAgICAgICAgaW5wdXRfY2hhcnNldCB0byBVbmljb2RlLiAgSWYgbm8gY29udmVyc2lvbiBjb2RlYyBpcwogICAgICAgICAgICAgICAgIG5lY2Vzc2FyeSwgdGhpcyBhdHRyaWJ1dGUgd2lsbCBiZSBOb25lLgoKICAgIG91dHB1dF9jb2RlYzogVGhlIG5hbWUgb2YgdGhlIFB5dGhvbiBjb2RlYyB1c2VkIHRvIGNvbnZlcnQgVW5pY29kZQogICAgICAgICAgICAgICAgICB0byB0aGUgb3V0cHV0X2NoYXJzZXQuICBJZiBubyBjb252ZXJzaW9uIGNvZGVjIGlzIG5lY2Vzc2FyeSwKICAgICAgICAgICAgICAgICAgdGhpcyBhdHRyaWJ1dGUgd2lsbCBoYXZlIHRoZSBzYW1lIHZhbHVlIGFz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c2hvdWxkIGNhbGwKICAgICAgICB0aGUgZnVuY3Rpb24gd2l0aCBhIHNpbmdsZSBhcmd1bWVudCwgdGhlIE1lc3NhZ2Ugb2JqZWN0IGJlaW5nCiAgICAgICAgZW5jb2RlZC4gIFRoZSBmdW5jdGlvbiBzaG91bGQgdGhlbiBzZXQgdGhlIENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcKICAgICAgICBoZWFkZXIgaXRzZWxmIHRvIHdoYXRldmVyIGlzIGFwcHJvcHJpYXRlLgoKICAgICAgICBSZXR1cm5zICJxdW90ZWQtcHJpbnRhYmxlIiBpZiBzZWxmLmJvZHlfZW5jb2RpbmcgaXMgUVAuCiAgICAgICAgUmV0dXJucyAiYmFzZTY0IiBpZiBzZWxmLmJvZHlfZW5jb2RpbmcgaXMgQkFTRTY0LgogICAgICAgIFJldHVybnMgIjdiaXQiIG90aGVyd2lzZS4KICAgICAgICBzEAAAAHF1b3RlZC1wcmludGFibGV0BgAAAGJhc2U2NE4oBgAAAFI2AAAAUhsAAAB0DgAAAEFzc2VydGlvbkVycm9ydAIAAABRUFIzAAAAUgUAAAAoAQAAAFI5AAAAKAAAAAAoAAAAAHNVAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZW1haWwvY2hhcnNldC5weXQRAAAAZ2V0X2JvZHlfZW5jb2Rpbmf5AAAAcwwAAAAADRUBDwEEAQ8BBAJjAgAAAAIAAAADAAAAQwAAAHM2AAAAfAAAagAAfAAAagEAawMAci4AdAIAfAEAfAAAagAAgwIAagMAfAAAagEAgwEAU3wBAFNkAQBTKAIAAABzOgAAAENvbnZlcnQgYSBzdHJpbmcgZnJvbSB0aGUgaW5wdXRfY29kZWMgdG8gdGhlIG91dHB1dF9jb2RlYy5OKAQAAABSNwAAAFI4AAAAUigAAABSKQAAACgCAAAAUjkAAAB0AQAAAHMoAAAAACgAAAAAc1UAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9lbWFpbC9jaGFyc2V0LnB5dAcA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