%global debug_package %{nil} Name: xsidplay Version: 2.1.9 Release: 42%{?dist} Vendor: xsidplay2.sf.net License: GPL Summary: XSidPlay SID Music Player Group: sound Source0: https://downloads.sourceforge.net/xsidplay2/%{name}-%{version}.tar.bz2 BuildRequires: autoconf cmake gcc-c++ libstdc++-devel qt5-qtbase-devel BuildRequires: SDL-devel alsa-lib-devel pulseaudio-libs-devel BuildRequires: libsidplayfp-devel BuildRequires: devscripts %description XSIDPLAY2 is a QT based music player for SID music. It's based onto Michael Schwendt's XSIDPLAY, the historical SID player for Linux, actually no more developed by the author. %prep %setup -q -n %{name}-%{version} cat | base64 -d > xsidplay_diff_r288-r294_RAW.patch << EOF1 ZGlmZiAtTmF1cncgL3hzaWRwbGF5Mi1jb2RlLXIyODgtdHJ1bmsveHNpZHBsYXkvQ2hhbmdlTG9n IC94c2lkcGxheTItY29kZS1yMjk0LXRydW5rL3hzaWRwbGF5L0NoYW5nZUxvZwotLS0gL3hzaWRw bGF5Mi1jb2RlLXIyODgtdHJ1bmsveHNpZHBsYXkvQ2hhbmdlTG9nCTIwMjAtMDYtMjAgMTc6MzA6 MjEuMDAwMDAwMDAwICswMjAwCisrKyAveHNpZHBsYXkyLWNvZGUtcjI5NC10cnVuay94c2lkcGxh eS9DaGFuZ2VMb2cJMjAyMy0wMi0yNSAxNDowMTo1Ni4wMDAwMDAwMDAgKzAxMDAKQEAgLTEsMyAr MSw4IEBACitWZXJzaW9uIDIuMi4wCistIFFUIGNobmFnZXMgZm9yIGNvbXBpbGluZworLSBTd2l0 Y2ggdG8gbmV3IFNJRGxlbmd0aCBNRDUgZmlsZSBmb3JtYXQKKy0gU2lkRnJlcSBpcyBpbnRlZ3Jh dGVkIHdpdGggSkM2NGRpcyBtdWx0aS1jYXRjaCBpZiBtb3JlIGVuZ2luZSBhcmUgcHJlc2VudAor CiBWZXJzaW9uIDIuMS45CiAtIFJlbW92ZSBzb21lIG1lbW9yeSBsZWFrcwogLSBBZGQgYWdhaW4g bGlic2lkcGxheTEgKHdpdGggbWl4ZXIgYW5kIGZpbHRlcikKZGlmZiAtTmF1cncgL3hzaWRwbGF5 Mi1jb2RlLXIyODgtdHJ1bmsveHNpZHBsYXkvc2lkaWQuY2ZnIC94c2lkcGxheTItY29kZS1yMjk0 LXRydW5rL3hzaWRwbGF5L3NpZGlkLmNmZwotLS0gL3hzaWRwbGF5Mi1jb2RlLXIyODgtdHJ1bmsv eHNpZHBsYXkvc2lkaWQuY2ZnCTIwMjAtMDYtMjAgMTI6MDM6MjcuMDAwMDAwMDAwICswMjAwCisr KyAveHNpZHBsYXkyLWNvZGUtcjI5NC10cnVuay94c2lkcGxheS9zaWRpZC5jZmcJMjAyMy0wMi0x OSAxNDoxMjozMy4wMDAwMDAwMDAgKzAxMDAKQEAgLTE1LDYgKzE1LDggQEAKIEE5IEZGIDhEIDE4 IEQ0IENCIDA3IDEwIENFIDYwIEVORA0KIDI1NmJ5dGVzL0xheGl0eQ0KIDRBIDRBIEE4IDg4IDg4 IDMwIDA3IDQ2IEZDIDY2IEZCIEVORA0KKzI1NmJ5dGVzL0xGVA0KKzRCIDBFIEFBIENCIEY4IEVO RA0KIDI1NmJ5dGVzL1RhcGUNCiA2MCBBOSA2NCBDRCAxMiBEMCBEMCBGQiA2MCBGMCAxMiBFTkQN CiAyNTZieXRlcy9XeW5kZXgNCkBAIC00MiwxMiArNDQsMTIgQEAKIDQtTWF0L1BhdGNod29yaw0K IDI5IEYwIDRBIDRBIDRBIDRBIDhEID8/ID8/IEFEID8/ID8/IEM5IDAwIEYwIDIwIEVORA0KIA0K KzQtTWF0L1RFRHBsYXkNCis0QSA0QSA0QSA0QSA0OCAyOSAwMSBBQSBCRCBFTkQNCisNCiA0Yml0 RGlnaS9USENNDQogNjAgPz8gPz8gPz8gPz8gPz8gPz8gMTggRDQgRTYgPz8gPz8gPz8gNEMgMEMg REQgQkUgRU5EDQogDQotOGJpdERpZ2kvVEhDTQ0KLTEyIEQ0ID8/ID8/ID8/IDEyIEQ0ID8/ID8/ ID8/ID8/IDBGIEQ0ID8/ID8/ID8/ID8/ID8/ID8/ID8/ID8/ID8/IDRDIDBDIEREIEVORA0KLQ0K IDhiaXREaWdpL01haG9uZXkNCiBBQyA/PyA/PyBDOCBDMCAwOSBEMCAwMiBBMCAwMSA4QyA/PyA/ PyA4QSAyOSAwRiBBQSBCRCA/PyA/PyA4RCA/PyA/PyBCRCA/PyA/PyBBQSBCRCA/PyA/PyA4RCAx OCBENCBFTkQNCiANCkBAIC03OSw4ICs4MSw4IEBACiBBbGdvcml0aG0vOGJpdERpZ2kNCiBEMCBF NyAyOCA2MCA4NSA/PyA0QyAxMCAwMCA4RCBFTkQNCiANCi1BbGdvcml0aG0vQWxnb1ZRVHJhY2tl cl9WMQ0KLUEwIDAwIEI5ID8/ID8/IEYwIDU3IDM4IEU5IDAxIEFBIEJEID8/ID8/IDhEIEVORA0K K0FsZ29WUVRyYWNrZXJfVjENCis4NSA/PyBBRCA/PyA/PyA4RCAxOCBENCBDNiA/PyBBOSA/PyA0 QyAwQyBERCBFTkQNCiANCiBBbGdvcml0aG0vRnJvZGlnaQ0KIEVDIDEyIEQwIEQwIEZCIEU4IEU4 IEVDIDEyIEQwIEQwIEZCIDg4IEQwIEVGIEE5IEVORA0KQEAgLTEyOCw3ICsxMzAsNiBAQAogKFN0 ZXZlX1Jvd2xhbmRzKQ0KIDQ4IDk4IEE0IEZFIDk5IEVORA0KIA0KLQ0KIEFudmlsDQogMjkgM0Yg MTggNjkgMDEgMEEgOUQgPz8gPz8gQzggRU5EDQogDQpAQCAtMTYzLDYgKzE2NCwxMCBAQAogRUUg Pz8gPz8gOUQgPz8gPz8gQzggQjkgPz8gPz8gODUgPz8gODQgPz8gMjkgN0YgQTggQjkgPz8gPz8g OUQgPz8gPz8gOUQgPz8gPz8gQjkgPz8gPz8gOUQgPz8gPz8gOUQgRU5EDQogQkMgPz8gPz8gRDAg Pz8gNEMgPz8gPz8gODggOTggRDAgPz8gOUQgPz8gPz8gOUQgPz8gPz8gQkQgPz8gPz8gQkMgPz8g Pz8gOTkgPz8gPz8gQkQgPz8gPz8gOTkgRU5EDQogDQorQXNobGV5X0hvZ2dfRGlnaQ0KKzhEIDE4 IEQ0IDRDID8/ID8/IEE5ID8/IEYwID8/IDhEID8/ID8/IDRDID8/ID8/IEE5ID8/IDhEIDE4IEQ0 IEVORA0KK0M5IDYzIEYwID8/IEM5IDY0IEYwID8/IDRDID8/ID8/IEE5ID8/IDhEID8/ID8/IDhE IDBFIEREIDYwIEM4IEI5ID8/ID8/IDlEIEVORA0KKw0KIEFzc2Fzc2luX1NhbXBsZV9NaXhlcg0K IEEwIDAwIEIxIEE0IDI5IEYwIDRBIDRBIDRBIDRBIDhEID8/ID8/IEIxIEE4IDI5IEYwIDRBIDRB IDRBIDRBIDhEID8/ID8/IEU2IDAxIEFEID8/ID8/IDE4IDZEIEVORA0KIA0KQEAgLTIyMywxMCAr MjI4LDEwIEBACiBCZW5fRGFnbGlzaC9HcmVtbGluDQogQTggQjkgPz8gPz8gNDggMjkgRjAgNEEg NEEgNEEgNEEgRU5EDQogDQotQmVuX0RhZ2xpc2gvR3JlbWxpbl9TRlgNCitEYWdsaXNoL0dyZW1s aW5fU0ZYDQogOEQgMDMgRDQgQUMgPz8gPz8gQUQgPz8gPz8gMTkgPz8gPz8gOEQgMDQgRDQgQUQg Pz8gPz8gMTggNkQgPz8gPz8gQTggRU5EDQogDQotQmVuX0RhZ2xpc2gvP0plZmZfQ2FsZGVyDQor RGFnbGlzaC8/SmVmZl9DYWxkZXINCiA0OCBCRCA/PyA/PyBBOCBBOSA/PyA5OSAwNCBENCBBOSA/ PyA5OSAwNCBENCA2OCA5OSAwNSBENCBFTkQNCiANCiBCZXJrZWxleQ0KQEAgLTI1MCw4ICsyNTUs OCBAQAogQnVnL05DSQ0KIENFIDQxIDAzIEQwIDYxIEFEIDQyIDAzIDhEIDQxIDAzIEFEIDEyIEMw IDhEIDA0IEQ0IEFEIDEzIEMwIDhEIDBCIEQ0IEFEIDE0IEMwIDhEIDEyIEQ0IEVFIDQwIDAzIEVO RA0KIA0KLUQuQS5JLlMuWS4NCi04RCAxOCBENCBBMiAxNyBBOSAwMCA5RCAwMCBENCBDQSAxMCBG QSBBNSAzQyA0OCBBQSBBMCAwMCA4NCAzQyBCRCAwMCAwRCAyOSAxRiBGMCAwMyA0QyAyQSAwQiBC RCAwMCAwRSA4NSAyQyBCRCAwMCAxMyA4NSAyQiBGMCAwOSBBMCBCNiA4OCBEMCBGRCBFTkQNCitC dXNpYy9GcmFua19JbmtsYWFyDQorOEQgMTIgRDQgQTIgMDIgQTAgRkYgRDAgMDAgRU5EDQogDQog QnVyZ3N0YWxsZXJfQg0KIDBBIDlEID8/ID8/IEE5IEZGIEIwID8/IDM4IEE5ID8/IDlEID8/ID8/ IEM4IEJEID8/ID8/IDlEID8/ID8/IEE1ID8/IDY5IDAxIDlEID8/ID8/IDkwIEVORA0KQEAgLTMz NSw5ICszNDAsNiBAQAogQTggMjkgMDQgRDAgMEMgOTggMjkgMDMgRjAgMDcgMjkgMDEgRDAgMzQg NEMgRU5EDQogOTkgMDQgRDQgQTUgPz8gMTggNjkgMDEgRU5EDQogDQotQ2hyaXNfTXVycmF5DQot QzggOTggOUQgMDQgRDQgNjAgQzAgODAgRDAgMDcgQkQgPz8gPz8gOUQgMDQgRDQgNjAgRU5EDQot DQogQ2hyaXNfV2Fsc2gNCiBFOSAwMCA4RCA/PyA/PyBBRCA/PyA/PyA4RCAwRSBENCBBRCA/PyA/ PyA4RCAwRiBENCBDRSA/PyA/PyBBRCA/PyA/PyBDOSAwMCBGMCAxQSBBRCA/PyA/PyAxOCA2RCA/ PyA/PyA4RCA/PyA/PyA4RCAxMCBENCBBRCA/PyA/PyA2RCA/PyA/PyA4RCA/PyA/PyA4RCAxMSBE NCA2MCBBMCAwMCBBOSAxMCA4RCAxMiBENCBCMSA/PyBDOSBGRiBFTkQNCiANCkBAIC0zNzQsNiAr Mzc2LDE4IEBACiBDb21tb2RvcmUvQW5keV9GaW5rZWwNCiBDOSBGRCBEMCAwOCBDOCBCMSA/PyA/ PyA/PyA0QyA/PyA/PyBDOSBGRSBEMCAwQyBDOCBCMSBFTkQNCiANCitDb21wYW5pb24NCitCQyA/ PyA/PyBDOCA5OCA5RCAwNCBENCA2MCBFTkQNCisoU2lkX1NlcXVlbmNlcikNCisxRSAxOCA4QiA3 RSBGQSAwNiBBQyBGMyBFNiA4RiBGOCAyRSAwMCAwMCAwMCBGMCBFTkQNCisoQWxlYXRvcnlfQ29t cG9zZXIpDQorMUUgMTggOEIgN0UgRkEgMDYgQUMgRjMgRTYgOEYgRjggMkUgMDAgMDAgMDAgMEUg RU5EDQorKENvbXBhbmlvbi9NdXJyYXkpDQorOUQgMDQgRDQgNjAgQzAgODAgRDAgMDcgQkQgPz8g Pz8gOUQgPz8gPz8gNjAgQzAgRkYgRDAgRjAgNEMgRU5EDQorDQorQ29tcGFuaW9uL0pheV9EZXJy ZXR0DQorMjkgMEYgMEEgQTggQjkgPz8gPz8gODUgPz8gQjkgPz8gPz8gODUgPz8gRUUgPz8gPz8g QUQgPz8gPz8gQzkgPz8gRDAgRU5EDQorDQogQ1JEX1RyYWNrZXINCiBDMCA4MCBEMCAwNCA4NSA1 NyBBOSAwMCA4NSAyNiBFOCA4NiA1RSA4OCA4NCA2NSAxOCBBNSA1NyA2NSAyNiA4RCAxNiBENCA4 NSA1NyBBMiAwMCAyMCBFTkQNCiANCkBAIC0zODMsOSArMzk3LDYgQEAKIENvcGUvT21pY3Jvbg0K IDhEIDE4IEQ0IEFEID8/ID8/IEYwIEY1IEFEID8/ID8/IEYwID8/IEE5ID8/IDhEIDE3IEQ0IEVF IEVORA0KIA0KLUNSTC9KYXlfRGVycmV0dA0KLTI5IDBGIDBBIEE4IEI5ID8/ID8/IDg1ID8/IEI5 ID8/ID8/IDg1ID8/IEVFID8/ID8/IEFEID8/ID8/IEM5ID8/IEQwIEVORA0KLQ0KIENyZWF0aXZl X1NwYXJrcw0KIDYwIEU4IEQwID8/IDIwID8/ID8/IEIxID8/IDI5IDBGIEFBIEIxID8/IDI5IEYw IEVORA0KIA0KQEAgLTQwNiw2ICs0MTcsOSBAQAogQ3lyaW9uX0RpZ2kNCiAwRiA4RCAxOCBENCA2 OCBBOCA2OCA0MCBFRSA/PyA/PyBDNiAwMSBCMSAwMiBFNiAwMSA0QSA0QSA0QSA0QSA4RCAxOCBE NCBBNCBBNiBFNiAwMiBEMCBFNiBFNiAwMyBFTkQNCiANCitELkEuSS5TLlkuDQorOEQgMTggRDQg QTIgMTcgQTkgMDAgOUQgMDAgRDQgQ0EgMTAgRkEgQTUgM0MgNDggQUEgQTAgMDAgODQgM0MgQkQg MDAgMEQgMjkgMUYgRjAgMDMgNEMgMkEgMEIgQkQgMDAgMEUgODUgMkMgQkQgMDAgMTMgODUgMkIg RjAgMDkgQTAgQjYgODggRDAgRkQgRU5EDQorDQogRGFuX0xpdmVyYW5pDQogMzAgMDUgQ0EgRTAg MDAgRDAgRjYgNjAgOEEgNDggOTggNDggQTkgRU5EDQogDQpAQCAtNDgxLDYgKzQ5NSw5IEBACiBE aWdpbWl4ZXIvRnVuRmFjdG9yeQ0KIDI5IDBGIDEwIDA0IDRBIDRBIDRBIDRBIDhEIDE4IEQ0IEFE ID8/ID8/IDQ5IDAxIEVORA0KIA0KK0RpZ2l0aXplX0Rlc2lnbl9Hcm91cA0KKzFCIEQ0IEQwIEZC IEU4IEU4IEFEID8/ID8/IDRBIDRBIDRBIDRBIDhEIDE4IEQ0IEVORA0KKw0KIERNQw0KIDE4IDdE ID8/ID8/IDk5ID8/ID8/IEJEID8/ID8/IDdEID8/ID8/ID8/ID8/ID8/IEJEID8/ID8/IDk5ID8/ ID8/IEJEID8/ID8/IDk5ID8/ID8/IEJEID8/ID8/IDNEID8/ID8/IDk5ID8/ID8/IDYwIEVORA0K IChETUNfVjQueCkNCkBAIC01MjQsMTEgKzU0MSwxMiBAQAogRWQvV3JhdGhfRGlnaV8yDQogOTgg NDggQTAgMDAgQjEgPz8gNEEgNEEgNEEgNEEgOEQgMTggRDQgRU5EDQogDQotRWRfQm9nYXNfVjEN Ci1CNSA/PyA5RCA/PyA/PyBCNSA/PyA5RCA/PyA/PyA0QyA/PyA/PyAwQSAwQSAwQSAwQSA2OSAw MSBFTkQNCi1FZF9Cb2dhc19WMg0KK0VkX0JvZ2FzL0FjY29sYWRlDQogQTkgMDAgOEQgPz8gPz8g OEQgMDQgRDQgOEQgMEIgRDQgQUQgPz8gPz8gRDAgMDMgOEQgMTIgRDQgNjAgQTIgMDAgOEUgPz8g Pz8gOEUgPz8gPz8gQTIgMDAgOEUgPz8gPz8gOEQgPz8gPz8gOEMgPz8gPz8gOTggMjkgRjAgOEQg Pz8gPz8gQTkgMDggOEQgMDQgRDQgOEQgMEIgRDQgOEQgMTIgRDQgQUQgPz8gPz8gOEQgMTggRDQg RU5EDQogDQorRWRfQm9nYXMvSGFrYW5zc29uDQorOTUgPz8gQTkgMDIgMTggNzUgPz8gOTUgPz8g OTAgMDIgPz8gPz8gQTkgMDAgRU5EDQorDQogRWxlY3Ryb19Tb3VuZA0KIEYwIDAxIDYwIEE5IDY0 IDlEID8/ID8/IEJEID8/ID8/IEM5IDAxIEVORA0KIA0KQEAgLTU1OCwxMCArNTc2LDExIEBACiBF TVNfVjkueA0KIEEyIDAyIEEwIDBFIDIwID8/ID8/IEFORCBBMCAwNyAyMCA/PyA/PyBBTkQgQTAg Pz8gODYgPz8gODQgPz8gQkQgRU5EDQogDQorRU1TX1YxMC54DQorNjAgQU5EIDAwIEFORCAwMCBE NCBFOCBFMCAxOSBEMCBGOCBBOSAwOCA4RCAwNCBENCBFTkQNCisNCiBPZGllL0Nvc2luZQ0KIDYw IEJEID8/ID8/IDM4IEZEID8/ID8/IDlEIEFORCAzOCBERSBBTkQgMTggN0QgPz8gPz8gOUQgQU5E IEZFID8/ID8/IEJEID8/ID8/IEM5ID8/IEYwIEVORA0KLU9kaWUvQ29zaW5lXzINCi02MCBBTkQg MDAgQU5EIDAwIEQ0IEU4IEUwIDE5IEQwIEY4IEE5IDA4IDhEIDA0IEQ0IEVORA0KIA0KIE9kaWUv UHVsc2UNCiA5RCAwMCBENCBFOCBFMCAyMCBEMCBGNSBBOSA/PyA4RCAxOCBENCBBOSBFTkQNCkBA IC02MzAsNyArNjQ5LDEwIEBACiA2OSAwMCA4NSAwMyBDNiAwMiBEMCAwMiBDNiAwMyA0QyBFTkQN CiANCiBHZWlyX1RqZWx0YS9Db21wdGVjaC1YDQotMjkgMEYgQzkgMDggOTAgMDcgMEEgMEEgMEEg MEEgOEQgNjggRU5EDQorMjkgMEYgQzkgMDggOTAgMDcgMEEgMEEgMEEgMEEgOEQgRU5EDQorDQor R2Vpcl9UamVsdGEvRWNobw0KK0FEID8/ID8/IDA5ID8/IDhEIDE4IEQ0IEE5IDcwIEVORA0KIA0K IEdlaXJfVGplbHRhL1NJRFN5c18xLjANCiAzOCBFOSAwMSAwQSBBOCBCOSA/PyA/PyA4NSA/PyBC OSA/PyA/PyA4NSA/PyBCNCA/PyBCMSBFTkQNCkBAIC02NTUsOSArNjc3LDEyIEBACiBHZWlyX1Rq ZWx0YV9EaWdpXzINCiA5RCAwMCBENCBDQSAxMCBGQSBBOSA4MSA4RCAwRCBERCBBRCAwRCBERCA2 MCBBRCA/PyA/PyBDRSA/PyA/PyAxMCAwQiA4RCA/PyA/PyBEMCBFTkQNCiANCi1HZWlyX1RqZWx0 YS9NYWNyb1BsYXkNCitHZWlyX1RqZWx0YS9NYWNyb1BsYXkxDQogQTIgMDAgQkQgPz8gPz8gOEQg Pz8gPz8gQ0EgMzAgQ0IgQTAgMDAgQjkgRU5EDQogDQorR2Vpcl9UamVsdGEvTWFjcm9QbGF5Mg0K KzkwIDQwIEE1ID8/IEM5IEZFIEQwIDM4IEE5ID8/IDhEIDA2IEQ0IDEwIDMwIEFDIEVORA0KKw0K IEdlbml1c0NvbXBvc2VyDQogQUQgPz8gPz8gOEQgPz8gPz8gQTkgMDAgOEQgPz8gPz8gOEQgPz8g Pz8gOEQgPz8gPz8gQTIgMTggOUQgPz8gPz8gOUQgMDAgRDQgQ0EgMTAgRkEgNjAgMjAgPz8gPz8g Q0UgPz8gPz8gMTAgMUIgQUQgPz8gPz8gOEQgPz8gPz8gMjAgPz8gPz8gQUQgPz8gPz8gMjkgMDEg RjAgMDUgQTIgMDAgMjAgPz8gPz8gRUUgPz8gPz8gNEMgRU5EDQogDQpAQCAtNzI3LDcgKzc1Miw3 IEBACiBHUkdfdGlueV8zDQogOUQgMDYgRDQgQTkgRkYgQ0IgMDcgMTAgPz8gQTkgMEYgOEQgMTgg RDQgRU5EDQogR1JHX3RpbnlfNA0KLUEwIDAwIEE5IDAxIDEwIDU1IEE1IEZGIDMwIDA1IEYwIDM2 IDRDIEVORA0KK0E1ID8/IDMwID8/IEYwID8/IEM5IDAxIEYwID8/IDRDIEVORA0KIA0KIEdyaWZm L0Nocm9tYW5jZQ0KIEFFID8/ID8/IEFDID8/ID8/IEJEID8/ID8/IDI5IDBGIDBBIDBBIDBBIDBB IDk5IDAyIEQ0IEJEID8/ID8/IDI5IEYwIDRBIDRBIDRBIDRBIDk5IDAzIEQ0IERFID8/ID8/IEQw IDEzIEJEID8/ID8/IDQ5IDAzIDlEID8/ID8/IDE4IDZEID8/ID8/IEE4IEI5IEVORA0KQEAgLTc0 NSw3ICs3NzAsNyBAQAogDQogR3Jvb3Z5X0JpdHMNCiA2MCBBOSAwMCA4NSA/PyBCRCA/PyA/PyAw QSAyNiA/PyAwQSAyNiA/PyAwQSAyNiA/PyAwQSAyNiBFTkQNCi1CRCA/PyAwMyBBNCA/PyA5OSA/ PyAwMyA2MCBCRCA/PyAwMyAwQSAwQSAwQSAwQSBFTkQNCitBNSA/PyBDOSA/PyBGMCA/PyA0QyA/ PyA/PyBBMCAwMCA4NCA/PyBFNiA/PyBBNiA/PyBFMCA/PyBEMCBFTkQNCiANCiBHdXlfU2hhdml0 dA0KIEJEID8/ID8/IDQ5IDgwIDlEID8/ID8/IEJEID8/ID8/IDlEID8/ID8/IEJEID8/ID8/IEYw ID8/IERFID8/ID8/IEJEID8/ID8/IDE4IDdEID8/ID8/IDlEID8/ID8/IEJEID8/ID8/IDY5IDAw IDlEID8/ID8/IDRDIEVORA0KQEAgLTg0NSw2ICs4NzAsOSBAQAogSmFzb25fUGFnZS9KYXkNCiA5 RCA2MiBDMCBCRCA2OCBDMCAwQSAwQSAwQSAwQSA4RCA3MyBDMiBBOSAwMCA2OSAwMCBFTkQNCiAN CitKYXNvbl9QYWdlL1JvYlRyYWNrZXINCis4NSA/PyBCQyA/PyA/PyBCMSA/PyBDOSBGRiBGMCAx MyBDOSBGRCBEMCAxRCBDOCBCMSA/PyA5RCA/PyA/PyBGRSA/PyA/PyBGRSA/PyA/PyA0QyA/PyA/ PyBBOSAwMCBFTkQNCisNCiBKQ0hfRGlnaVBsYXllcg0KIEQwID8/IEFEID8/ID8/IEYwID8/IEEw IDAwIDhDID8/ID8/IEIxID8/IDRBIDRBIDRBIDRBIDE4IEVORA0KIA0KQEAgLTEwMTIsNiArMTA0 MCw5IEBACiAoS29zYV9Qcm90cmFja2VyX1YyKQ0KIEM5IEEwIDkwIDBDIDBBIDBBIDBBIDlEIEVO RA0KIA0KK0tyaWxsX3RpbnkNCis3NSA/PyA5RCAwMCBENCBBNSA/PyA2OSAwMCBBTkQgOUQgMDEg RDQgQjUgPz8gQU5EIDc1ID8/IDk1ID8/IDlEIDAyIEQ0IEI1IEVORA0KKw0KIEtyaXNfSGF0bGVs aWQNCiBCRCA/PyA/PyBBQSBCMSA/PyA5RCAwMiBENCBDOCBCMSA/PyA5RCAwMyBENCBBMCAwRiBC MSA/PyA5RCAwNSBENCBDOCBCMSA/PyA5RCAwNiBENCBFTkQNCiAoS3Jpc19IYXRsZWxpZF9EaWdp KQ0KQEAgLTEwMzYsOSArMTA2Nyw2IEBACiBMYXhpdHlfTmV3UGxheWVyX1YyMQ0KIDk5IDA0IEQ0 IEJEID8/ID8/IEM5IEZGIEYwID8/IDRDID8/ID8/IERFID8/ID8/IEJEID8/ID8/IEQwID8/IDRD IEVORA0KIA0KLUxheGl0eV8yMDE5DQotQjEgRkMgQzkgRkYgRDAgMDQgQzggQjEgRkMgQTggRU5E DQotDQogTGV0aGFsX0RpZ2kNCiBBOSAwOCA4RCAxOCBENCBBOSAxMSA4RCAwRSBERCBBRCAwRCBE RCBBOSA4MCAzMCAwQSA4RCA/PyA/PyBBOSA4MCA4RCA/PyA/PyAzMCA/PyBBRCA/PyA/PyA0OCA0 QSA0QSA0QSA0QSA4RCA/PyA/PyA2OCAyOSAwRiA4RCA/PyA/PyBFRSA/PyA/PyBEMCBFTkQNCiAN CkBAIC0xMTA2LDcgKzExMzQsNyBAQAogOTAgMDYgQjEgPz8gQzggOEQgMDAgRDQgNDYgPz8gOTAg MDYgQjEgRU5EDQogDQogTWFnbmFyL1RpbnkNCi1GMCAxQiAxMCAxMCAyOSBGMCAxOCBFOSA3MSA4 RCAxOCBFTkQNCitGMCAxQiAxMCAxMCAyOSBGMCA/PyBFOSA3MSA4RCAxOCBFTkQNCiANCiBNYXJj aW5fR3J6ZWdvcnpld3NraQ0KIDRBIDM4IDJBIDE4IDZEID8/ID8/IEE4IEFEID8/ID8/IDhEIDA0 IEQ0IEI5ID8/ID8/IDhEIDAxIEQ0IEM4IEI5ID8/ID8/IDhEIDAwIEQ0IEVORA0KQEAgLTEyNDQs NyArMTI3Miw3IEBACiBGRSA/PyA/PyAyOSAxRiA5RCA/PyA/PyBBNSA/PyAyOSBFMCBDOSBDMCBE MCA/PyBDOCA5OCA5RCA/PyA/PyBCMSA/PyBDOSBGRiBFTkQNCiAzMCA/PyBDOCBCMSA/PyAwQSAw QSAwQSA5RCA/PyA/PyBDOCA5OCA5RCA/PyA/PyBCRCA/PyA/PyBEMCA/PyBCRCA/PyA/PyBEMCA/ PyBBOSBGRSA5RCBFTkQNCiBBRCA/PyA/PyA4RCAxNyBENCBBRCA/PyA/PyA4RCAxNiBENCBBRCA/ PyA/PyBGMCAxMyBDRSA/PyA/PyAxMCAwRSBBRCA/PyA/PyBGMCAwOSBBRCA/PyA/PyA4RCA/PyA/ PyBDRSA/PyA/PyBBRCA/PyA/PyAwRCA/PyA/PyA4RCAxOCBENCBBRCBFTkQNCi02OCAyOSAyMCBG MCAxMiAyMCA/PyA/PyBGRSA/PyA/PyBCQyA/PyA/PyBBNSA/PyAyOSA0MCBEMCAxOSA0QyA/PyA/ PyBBNSA/PyAyOSA4MCBGMCAwRiBCQyA/PyA/PyBDOCBCMSA/PyAwQSAwQSA5RCA/PyA/PyAwQSA5 RCBFTkQNCitCQyA/PyA/PyA5OSAwMSBENCBCRCA/PyA/PyA5OSAwMCBENCBERSA/PyA/PyBEMCA/ PyBCQyA/PyA/PyBCOSA/PyA/PyAyOSAwRiAwQSBFTkQNCiBERSA/PyA/PyA0QyA/PyA/PyA4RSA/ PyA/PyBCRCA/PyA/PyBCQyA/PyA/PyBBQSBBOSAwMCA5RCAwNCBENCA5RCAwNSBENCA5RCAwNiBE NCBCOSA/PyA/PyA5RCAwNSBENCBCOSA/PyA/PyA5RCAwNiBENCBBRSA/PyA/PyBBOSAwMSA5RCA/ PyA/PyA5RCBFTkQNCiAoQXVkaW9tYXN0ZXJfVjEpDQogMEEgMTggNzUgPz8gOTUgPz8gQjUgPz8g NjkgPz8gOTUgPz8gQjQgPz8gQUQgPz8gPz8gQjQgPz8gQjkgPz8gPz8gMjkgMEYgQTggQjkgPz8g Pz8gODUgPz8gQjkgRU5EDQpAQCAtMTI4OCw2ICsxMzE2LDkgQEAKIE1SRw0KIDM4IEQwIDAzIDRD ID8/ID8/IDBBIDkwIDAxIEU4IDRBIEVORA0KIA0KK01yTW91c2UvRWFzeVBsYXllcg0KK0IwIDBG IDBBIDBBIDBBIDBBIDI5IEYwIDE4IDY5IDBGIDlEIDA2IEQ0IDRDIEVORA0KKw0KIE1yV2FycF9E aWdpDQogQTAgMDQgQTUgPz8gMEEgNjkgMDAgMEEgNjkgMDAgODUgPz8gMjkgMDMgQUEgQkQgPz8g Pz8gOEQgMTggRDQgPz8gPz8gPz8gPz8gPz8gPz8gQTIgRU5EDQogDQpAQCAtMTI5NywxNiArMTMy OCwyMSBAQAogTXVzaWNfQXNzZW1ibGVyDQogQkMgPz8gPz8gQzAgRkUgRDAgMDkgQkQgPz8gPz8g MjkgRkUgOUQgPz8gPz8gNjAgQjkgPz8gPz8gODUgRU5EDQogKE11c2ljX0Fzc2VtYmxlci9NQykN Ci1CRCA/PyA/PyA4NSA/PyBCQyA/PyA/PyBDOCBDOCBCMSBGQSBDOSBGRiBEMCAwMiBBMCAwMCA5 OCA5RCBFTkQNCitFRSAxOSBEMCAyMCA/PyA/PyA0QyBBTkQgQkQgPz8gPz8gODUgPz8gQkMgPz8g Pz8gQzggQzggQjEgRkEgQzkgRkYgRDAgMDIgQTAgMDAgOTggOUQgRU5EDQogKFZvaWNlVHJhY2tl cikNCiBCQyA/PyA/PyBDOCAyMCA/PyA/PyBDOSBGRiBEMCAwMiBBMCAwMCA5OCA5RCBBTkQgQzgg QjEgRkEgQzkgRkQgRjAgMDEgNjAgQzggQjEgRkEgRU5EDQorQTkgRkYgQ0QgMTIgRDAgRDAgPz8g MjAgPz8gPz8gQUQgMDEgREMgMjkgMTAgQU5EIEJEID8/ID8/IDg1ID8/IEJDID8/ID8/IEM4IEM4 IEIxIEZBIEM5IEZGIEQwIDAyIEEwIDAwIDk4IDlEIEVORA0KKyhUZW5fVHJhY2tlcikNCitDRSA/ PyA/PyBBMiAwMCBEMCA/PyBBMiAwQSBFTkQNCisoRG91YmxlVHJhY2tlcikNCitBRCA/PyA/PyBG MCAwNSBBMiAwMCAyMCA/PyA/PyBBRCA/PyA/PyBGMCAwNSBBMiAwMSAyMCA/PyA/PyBBRCA/PyA/ PyBGMCAwNSBBMiAwMiBFTkQNCiAoTXVzaWNfTWl4ZXIpDQogQTkgRjAgOEQgMTcgRDQgMjkgMEYg OEQgQTYgRU5EDQogDQogTXVzaWNfUHJvZHVjZXJfSUkNCiBBOSBGRiA5RCA/PyA/PyBBOSAwOCA5 OSAwNCBENCBBOSAwMCA5OSAwNiBENCA5RCA/PyA/PyA5RCA/PyA/PyBDQSAxMCBFNSA4RCA/PyA/ PyA2OCAwOSA4MCA4RCA/PyA/PyA2MCAyOSA3RiBGMCBGQiAxOCBBOSA/PyBFOSA/PyA4RCA/PyA/ PyA2RSBFTkQNCiANCi1NdXNpY0NvbXBvc2VyL0ZsYXNoX0luYw0KK011c2ljQ29tcG9zZXIvRmxh c2hJbmMNCiBCRCA/PyA/PyAxOCA3RCA/PyA/PyA3RCA/PyA/PyBDOSA2MCAzMCA/PyAzOCBFOSA2 MCBFTkQNCiAoTXVzaWNDb21wb3Nlcl9WMi4wKQ0KIDI5ID8/IDlEID8/ID8/IEI5ID8/ID8/IDE4 IDRBIDRBIDRBIDRBIDlEID8/ID8/IEI5IEVORA0KQEAgLTEzNDAsNyArMTM3Niw3IEBACiAwOSA4 MCA5MSA/PyBDOCAxOCBCMSA/PyA2RCA/PyA/PyA0OCBDOCBCMSA/PyA2RCA/PyA/PyA4NSA/PyA2 OCA4NSBFTkQNCiANCiBNdXNpY1NsYXZlDQotMjAgPz8gPz8gPz8gPz8gPz8gQTkgMDAgOTkgMDUg RDQgOTkgMDYgRDQgOTkgMDQgRDQgPz8gPz8gPz8gOUQgPz8gPz8gQjkgPz8gPz8gOUQgRU5EDQor MjAgPz8gPz8gPz8gPz8gQTAgMEUgMjAgPz8gPz8gQUQgPz8gPz8gQUUgPz8gPz8gQUMgPz8gPz8g NjAgPz8gPz8gPz8gQkQgRU5EDQogDQogTXVzbw0KIDhEIDA0IEQ0IEFEID8/ID8/IDhEID8/ID8/ IEI5ID8/ID8/IDhEID8/ID8/IDE4IDZEID8/ID8/IEFBIEJEID8/ID8/IDhEIDAxIEQ0IEJEID8/ ID8/IDhEIDAwIEQ0IEVFIEVORA0KQEAgLTEzODEsNiArMTQxNyw5IEBACiBOb3JkaWNCZWF0X0Vk aXRvcg0KIDE4IDdEID8/ID8/IEE4IEI5ID8/ID8/IDlEID8/ID8/IEI5ID8/ID8/IDlEID8/ID8/ IEE5IDAwIDlEID8/ID8/IDlEID8/ID8/IEE0IEZDIEIxIEZBIDEwID8/IDhFID8/ID8/IDI5IDFG IDlEID8/ID8/IEJEID8/ID8/IDhEIDE3IEQ0IEM4IEIxIEZBIEVORA0KIA0KK05vdmFsb2FkDQor OEQgMDAgRDQgQkQgPz8gPz8gOEQgMDEgRDQgQUQgPz8gPz8gOEQgPz8gPz8gQ0UgPz8gPz8gRDAg MzEgMjAgPz8gPz8gQUQgPz8gPz8gQUEgMzAgMEIgQUQgPz8gPz8gOEQgPz8gPz8gMjkgRjAgOEQg MEIgRDQgOEEgRDAgMDUgOEQgPz8gPz8gRjAgMEYgMEEgQUEgQkQgPz8gPz8gRTggOEQgMDcgRDQg QkQgPz8gPz8gOEQgMDggRDQgQUQgRU5EDQorDQogTnV0dDY3X0RpZ2kNCiA2OCA0MCA0OCBFNiAw MiBBNSAwMiAyOSAwMSBGMCAwQSA2OCA0QSA0QSA0QSA0QSA4RCAxOCBENCA2OCA0MCA2OCAyOSAw RiA4RCAxOCBENCBFRSBFTkQNCiANCkBAIC0xNDEyLDYgKzE0NTEsOSBAQAogRDAgMDUgQTkgMDEg OEQgPz8gPz8gQ0UgPz8gPz8gRDAgPz8gQUQgPz8gPz8gOEQgPz8gPz8gQTAgMTUgOEMgPz8gPz8g QTIgMDYgOEUgPz8gPz8gQTIgMDMgOEUgPz8gPz8gMzggQUQgPz8gPz8gRTkgMDcgOEQgPz8gPz8g Q0UgPz8gPz8gQ0UgPz8gPz8gQ0UgPz8gPz8gMzAgPz8gQUUgPz8gPz8gREUgPz8gPz8gRDAgRTQg QUQgRU5EDQogQUEgMTggQjUgQUEgNjkgMDIgOTUgQUEgODUgNzEgQjUgQUIgNjkgMDAgOTUgQUIg ODUgNzIgQTAgMDAgQjEgNzEgOTUgQjcgQzggQjEgNzEgOTUgQjggQjUgQjcgODUgRU5EDQogDQor T3h5TW9kL1RIQ00NCisxMiBENCA/PyA/PyA/PyAxMiBENCA/PyA/PyA/PyA/PyAwRiBENCA/PyA/ PyA/PyA/PyA/PyA/PyA/PyA/PyA/PyA0QyAwQyBERCBFTkQNCisNCiBPenp5X09sZHNjaG9vbF9W MQ0KIDRDID8/ID8/IEJEID8/ID8/IEREID8/ID8/IEQwIDA1IEE5IEZFIDlEID8/ID8/IEJEID8/ ID8/IEYwIDBBIEJEID8/ID8/IEM5IDAxIEYwIDI4IDRDID8/ID8/IEJEID8/ID8/IEREID8/ID8/ IEYwIDA4IDkwIDAzIDRDID8/ID8/IDRDID8/ID8/IEE5IDAwIDlEIDA1IEQ0IDlEIDA2IEQ0IEJE ID8/ID8/IDI5IEZFIDlEIDA0IEQ0IEE5IEVORA0KIE96enlfT2xkc2Nob29sX1YyDQpAQCAtMTQ1 MCw5ICsxNDkyLDYgQEAKIFBhdWxfTm9ybWFuL0NvbVB1Yg0KIEE1IDY5IEM1IDZCIEQwIDAzIDIw IDlBIEM4IEM2IDY5IEQwIDVCIEE1IDZBIDg1IEVORA0KIA0KLVBldGVyX0xpZXBhDQotNDkgMDcg NjkgMDQgMEEgMEEgMEEgMEEgOEQgMDYgRDQgQTkgMTEgOEQgMDQgRDQgOEQgMEIgRDQgQUQgPz8g Pz8gMTggNjkgMDEgMjkgQTcgOEQgRU5EDQotDQogUGV0ZXJfVGhpZXJvbGYNCiBDOCA4QyA/PyA/ PyBDQyA/PyA/PyA5MCAwMyA0QyA/PyA/PyBBRSA/PyA/PyBCMSBBNCBEMCAwRCBBRCA/PyA/PyAy OSBGRSA4RCAwNCBENCBGMCAwMyA0QyA/PyA/PyBDOSBGRiBEMCAwMyA0QyA/PyA/PyAyOSA4MCBG MCAwMyA0QyA/PyA/PyBBRCBFTkQNCiANCkBAIC0xNTAwLDggKzE1MzksOCBAQAogDQogUmFkYXJz b2Z0DQogOEQgMDUgRDQgOEQgMEMgRDQgOEQgMTMgRDQgQTkgMDAgOEQgMDQgRDQgOEQgMEIgRDQg OEQgMTIgRDQgQzggQjEgRkIgOEQgMEQgRDQgOEQgMTQgRDQgOEQgMDYgRDQgRU5EDQotQUQgPz8g Pz8gMjkgMDEgRjAgNDggQ0UgPz8gPz8gRDAgNDMgRUUgPz8gPz8gQUMgPz8gPz8gQjkgPz8gPz8g OEQgPz8gPz8gRDAgMUIgQUQgPz8gPz8gMjkgMDEgRDAgMDggQUQgPz8gPz8gMjkgMDIgOEQgPz8g Pz8gQTkgRkYgOEQgPz8gPz8gQTkgMDEgOEQgPz8gPz8gRDAgQ0IgQUQgPz8gPz8gMDkgMDEgOEQg MDQgRDQgQjkgRU5EDQotREUgPz8gPz8gRDAgPz8gQkQgPz8gPz8gRjAgPz8gQkQgPz8gPz8gOUQg MDQgRDQgREUgPz8gPz8gRjAgPz8gNjAgRU5EDQorMjkgMDEgRDAgMDggQUQgPz8gPz8gMjkgMDIg OEQgPz8gPz8gQTkgRkYgOEQgPz8gPz8gQTkgMDEgOEQgPz8gPz8gRDAgQ0IgQUQgPz8gPz8gMDkg MDEgOEQgMDQgRDQgQjkgRU5EDQorNjggMzAgPz8gQTkgMDEgOTkgPz8gPz8gNEMgPz8gPz8gQTkg Pz8gOTkgPz8gPz8gQjkgPz8gPz8gRTAgPz8gRjAgPz8gOTkgPz8gPz8gRTYgPz8gRTYgPz8gRjAg RU5EDQogDQogUmFuZHlfR2xvdmVyDQogNEMgPz8gPz8gQzggQjEgPz8gOUQgMDIgRDQgQzggQjEg Pz8gOUQgMDMgRDQgNEMgRU5EDQpAQCAtMTU0MSw3ICsxNTgwLDYgQEAKIDJDID8/ID8/IDcwID8/ IEZFID8/ID8/IEFEID8/ID8/IDEwID8/IEM4IEIxID8/IDEwID8/IDlEID8/ID8/IDRDIEVORA0K IDBBIDBBIDBBIEFBIEJEID8/ID8/IDhEID8/ID8/IEJEID8/ID8/IDJEID8/ID8/IDk5IDA0IEQ0 IEVORA0KIDk5IDA0IEQ0IEE5ID8/IDlEID8/ID8/IDRDID8/ID8/IEJEID8/ID8/IDRBIEREIEVO RA0KLUI5ID8/ID8/IDlEIDAxIEQ0IEI5ID8/ID8/IDlEIDAwIEQ0IDIwID8/ID8/IEJDID8/ID8/ IEM4IDk4IDlEIDA0IEQ0IEVORA0KIChSb2JfSHViYmFyZF9EaWdpKQ0KIDRBIDRBIDRBIDRBIDRD ID8/ID8/IDI5IDBGIEVFID8/ID8/IEQwIDAzIEVFID8/ID8/IDhEIDE4IEQ0IEFEIDBEIEREIEVO RA0KIChHaXVsaW9fWmljY2hpKQ0KQEAgLTE1NjksNiArMTYwNyw5IEBACiBSb011emFrX1Y3LngN CiBDOSBGRiBGMCA/PyA0OCAyOSAwNyAwQSA4RCA/PyA/PyAwQSA2RCA/PyA/PyBBQSBBMCBFTkQN CiANCitSb3R0ZXJveV90aW55DQorRDAgMEEgQzkgRkQgRDAgMDYgOTggOUQgRU5EDQorDQogUm95 X0dsb3Zlcg0KIEU2ID8/IDJDID8/ID8/IDUwID8/IEE5ID8/IDhEIDA0IEQ0IEYwID8/IEE5ID8/ IDhEIDA0IEQ0IEFEID8/ID8/IDhEID8/ID8/IEFEID8/ID8/IDhEID8/ID8/IEE5ID8/IDhEID8/ ID8/IEFEID8/ID8/IEYwIEVORA0KIA0KQEAgLTE1NzksOCArMTYyMCwxNCBAQAogNEMgPz8gPz8g MTggNjkgMDMgQTggMjAgPz8gPz8gOTEgPz8gQzggMjAgPz8gPz8gOTEgPz8gQzggQUQgPz8gPz8g MjkgMEYgOTEgPz8gQzggOTggOUQgPz8gPz8gMzggRTkgMDYgQTggQkQgPz8gPz8gOTEgPz8gQzgg QkQgPz8gPz8gOTEgPz8gQzggQkQgPz8gPz8gOTEgPz8gNEMgPz8gPz8gQUQgPz8gPz8gMjkgMEYg OUQgPz8gPz8gRkUgPz8gPz8gNEMgPz8gPz8gQUQgPz8gPz8gMEEgMEEgMEEgMEEgQkMgRU5EDQog OTkgMDQgRDQgMTggNjAgQzkgMDYgRjAgMTQgQjAgMjYgMjAgPz8gPz8gODUgPz8gMjAgPz8gPz8g ODUgPz8gMjAgPz8gPz8gMjAgPz8gPz8gMzggNjAgMjAgPz8gPz8gMjAgPz8gPz8gMTggNjUgPz8g ODUgPz8gQTUgPz8gNjkgMDAgODUgPz8gNEMgRU5EDQogDQotUnlvX0thd2FzYWtpDQorS2F3YXNh a2lfU3ludGhlc2l6ZXINCiA5RCAwMCBENCBFOCBFMCAxQSBEMCBGOCA4RCA/PyA/PyBBOSAwMCA4 RCA/PyA/PyBBOSAwRiA4RCAxOCBENCBBOSAwQSA4RCAwNSBENCAyMCA/PyA/PyBBRCBFTkQNCitL YXdhc2FraV9SaHl0aG1fUm9ja2VyDQorQTkgMDAgOEQgMTQgRDQgOEQgMDYgRDQgOEQgMEQgRDQg OEQgMTAgRDQgOEQgMTUgRDQgRU5EDQorUnlvX0thd2FzYWtpDQorOEQgMDMgRDQgOEQgMEQgRDQg OEQgMTEgRDQgQTkgPz8gOEQgMDUgRDQgOEQgMEMgRDQgOEQgMTMgRDQgQTkgPz8gODUgPz8gQTkg MEYgOEQgMTggRDQgRU5EDQorQTkgMEYgOEQgMTggRDQgQTkgPz8gOEQgMDUgRDQgOEQgMEMgRDQg OEQgMTMgRDQgQTkgMEMgOEQgMDMgRDQgOEQgMEEgRDQgOEQgMTEgRDQgNEMgRU5EDQorOEQgMTgg RDQgNjAgQTkgMDAgOEQgMDQgRDQgOEQgMEIgRDQgOEQgMTIgRDQgQTkgPz8gOEQgMDQgRDQgQTkg Pz8gOEQgMEIgRDQgQTkgPz8gOEQgMTIgRDQgNjAgRU5EDQogDQogU2Fkb1RyYWNrZXINCiBCQyA/ PyA/PyBCMSA/PyAzMCA/PyBDOCBDOSA2MCBCMCA/PyBDOSA1MCBCMCA/PyA0QyA/PyA/PyBFOSA1 MCBFTkQNCkBAIC0xNTk3LDkgKzE2NDQsMTIgQEAKIFNjb3V0X0RpZ2kNCiA0OCA0QSA0QSA0QSA0 QSA4RCAxOCBENCBBMiA/PyBDQSBEMCBGRCA2OCAyOSAwRiA4RCAxOCBENCBFTkQNCiANCi1TZW50 aW5lbA0KK1NlbnRpbmVsX1YwLjQNCiAxMCAxOCBDOSBGRSBEMCAwOSA5RCBFTkQNCiANCitTZW50 aW5lbF9WMC43DQorOUQgMDAgRDQgRTggRTAgMUMgRDAgRjggQTIgMDAgOEUgPz8gPz8gOEUgPz8g Pz8gOEUgPz8gPz8gOEUgPz8gPz8gMjAgPz8gPz8gQTIgMDcgMjAgRU5EDQorDQogU2VudGluZWxf Q29tcG9zZXJfVjEuMA0KIERFID8/ID8/IEJDID8/ID8/IEJEID8/ID8/IDk5IDAwIEQ0IEJEID8/ ID8/IDk5IDAxIEQ0IEJEID8/ID8/IEQwID8/IEJEID8/ID8/IDk5IDA0IEQ0IEVORA0KIA0KQEAg LTE2MTIsOSArMTY2MiwxNSBAQAogU2lkRmFjdG9yeS9MYXhpdHkNCiBBOSA/PyA0QyA/PyA/PyBB OSA/PyA5RCA/PyA/PyBBOSA/PyA5RCA/PyA/PyBCRCA/PyA/PyBBOCAyOSAwMiBEMCA/PyA0QyA/ PyA/PyA5OCAyOSBGRCA5RCBFTkQNCiANCitTaWRGYWN0b3J5X0lJL0xheGl0eQ0KK0IxIEZDIEM5 IEZGIEQwIDA0IEM4IEIxIEZDIEE4IEVORA0KKw0KIFNpZHBsYXllcjY0DQogMDUgMTggNjkgMEMg RTYgPz8gQzkgMEMgOTAgMDQgRTkgMEMgQzYgPz8gODUgRU5EDQogDQorU2lkU3RlcDINCitCMSBG QiAzMCAxMiBBQSBDOCBEMCAwMiBFNiBGQyBCMSBGQiA5RCAwMCBENCBDOCBFTkQNCisNCiBTaWRU cmFja2VyNjQNCiBCRCA/PyA/PyAyOSBGRSA5RCAwNCBENCBCOSA/PyA/PyA5RCA/PyA/PyBCOSA/ PyA/PyA5RCA/PyA/PyBGMCA/PyBBOCBCRCA/PyA/PyAxOCA2OSBFTkQNCiANCkBAIC0xNzg3LDcg KzE4NDMsNyBAQAogMEEgMEEgMEEgQTggQTIgMDAgOEEgOUQgPz8gPz8gRTggRTAgQkQgRDAgRjgg QTIgMDAgOUQgPz8gPz8gRTggRTAgRU5EDQogDQogU3ludGhlc2l6ZXI2NA0KLTRBIDRBIDRBIDQ5 IDgwIDRDID8/ID8/IDRBIDRBIDRBIDQ5IDdGIDE4IDY5IDAxIDlEID8/ID8/IEI5ID8/ID8/IDI5 IDA3IDk5ID8/ID8/IDYwIEJEID8/ID8/IEE4IEIxIEM5IDE4IDZEID8/ID8/IDlEIDAwIEQ0IEJE ID8/ID8/IEE4IEM4IEIxIEM5IDY5IDAwIEU4IDlEIDAwIEQ0IDYwIEJEID8/ID8/IEE4IEIxIEM5 IDE4IDZEID8/ID8/IDlEIDAwIEQ0IEJEIEVORA0KKzBBIDlEID8/ID8/IEE5IDAwIDlEIDA0IEQ0 IDhBIEE4IEYwID8/IDg4IDg4IEM5IDA3IEYwIDAyIDg4IDg4IEI5ID8/ID8/IDlEIDA0IEQ0IEVO RA0KIA0KIFN5bnRoaWNhdA0KIDEwIDFDIEE5IDAyIDhEID8/ID8/IEE5IDAwIEYwIDEzIDRBIDRB IDRBIDRBIEQwIEVORA0KQEAgLTE4ODIsMTAgKzE5MzgsNyBAQAogOEQgMDUgRDQgQTkgMEYgOEQg MEMgRDQgQTkgMEYgOEQgMTMgRDQgQTkgPz8gOEQgRU5EDQogDQogVXJzX0hlY2ttYW5uDQotQUQg Pz8gPz8gMDggRUUgPz8gPz8gRDAgPz8gRUUgPz8gPz8gMjggNjAgQUQgPz8gPz8gOEQgMDQgRDQg QUQgPz8gPz8gOEQgMEIgRDQgQUQgPz8gPz8gOEQgMTIgRDQgNjAgRU5EDQotDQotVVNfR29sZC9O b3ZhbG9hZA0KLThEIDAwIEQ0IEJEID8/ID8/IDhEIDAxIEQ0IEFEID8/ID8/IDhEID8/ID8/IENF ID8/ID8/IEQwIDMxIDIwID8/ID8/IEFEID8/ID8/IEFBIDMwIDBCIEFEID8/ID8/IDhEID8/ID8/ IDI5IEYwIDhEIDBCIEQ0IDhBIEQwIDA1IDhEID8/ID8/IEYwIDBGIDBBIEFBIEJEID8/ID8/IEU4 IDhEIDA3IEQ0IEJEID8/ID8/IDhEIDA4IEQ0IEFEIEVORA0KK0QwIDAzIEVFID8/ID8/IDI4IDYw IEFEID8/ID8/IDA4IEVFIEVORA0KIA0KIFZhbl9TdHllcl9EaWdpDQogMDYgRDQgOEQgMEQgRDQg OEQgMTQgRDQgNjAgQjkgMDAgRU5EDQpAQCAtMTkxMiw2ICsxOTY1LDkgQEAKIFZpcnR1b3NvDQog QkMgPz8gPz8gRjAgPz8gQjkgPz8gPz8gMTAgPz8gNDkgRkYgMEEgNjkgPz8gOEQgPz8gPz8gQjkg Pz8gPz8gNkMgRU5EDQogDQorSGVpbl9Ib2x0X0RpZ2kNCitBOSA/PyA4NSA/PyBFRSA/PyA/PyBC RCA/PyA/PyA4RCAwNCBERCBBOSA/PyA4RCAwRSBERCBFTkQNCisNCiBWaXNhY190aW55DQogQjkg Pz8gPz8gNEEgOTAgQU5EIDQ4IEI5ID8/ID8/IEJDID8/ID8/IDk5IDAxIEQ0IDY4IDk5IDAwIEQ0 IEVORA0KIA0KQEAgLTE5MzAsNiArMTk4Niw5IEBACiBXYWx0X0RpZ2kNCiA0OCA4QSA0OCA5OCA0 OCBBRCAwRCBERCBBOSA/PyA4RCAxOCBENCBBRCA/PyA/PyBBMiAwMCBGMCAwNSAyOSAwRiA0QyBF TkQNCiANCitTaWRiYW5nNjQvV2FycDgNCitBNSA/PyA4NSA/PyBBNSA/PyA4NSA/PyBBMCAwMCBC MSA/PyBDOSAwMCBGMCA/PyAyOSAxRiBFTkQNCisNCiBXYXJwOF9EaWdpDQogNDggQUQgPz8gPz8g MDkgPz8gOEQgMTggRDQgRUUgPz8gPz8gQUQgMEQgREQgNjggNDAgRU5EDQogDQpAQCAtMTk1Myw3 ICsyMDEyLDcgQEAKIFlpcF9EaWdpDQogQjEgNzIgNEEgNEEgNEEgNEEgMTggNjkgMDkgNEEgOEQg MTggRDQgRUUgRU5EDQogDQotWWlwX01lZ2Fzb3VuZA0KK1lpcF9NZWdhU291bmQNCiBBOSAwMSA4 RCA/PyA/PyBBMiAwMiBBOSAwMSA5RCA/PyA/PyBBOSAwMCA5RCA/PyA/PyA5RCA/PyA/PyBDQSAx MCBGMCBBOSAwMCA4RCAwNCBENCA4RCAwQiBENCA4RCAxMiBENCBBOSAwRiA4RCAxOCBENCA2MCBB OSAwMCA4RCA/PyA/PyA2MCBBRCBFTkQNCiANCiBaYXJkYXgvU291bmRLaWxsZXINCkBAIC0yMDE4 LDcgKzIwNzcsNyBAQAogP0NhZXNhcl9TdHVkaW8NCiBDOSBEMCBGMCA/PyBDOSBFMCBGMCA/PyBD OSBGMCBGMCA/PyA0QyBFTkQNCiANCi0/Q2hhcmxpZV9CYXJyL0RhdGFfRWFzdA0KKz9DaGFybGll X0JhcnIvRGF0YUVhc3QNCiBBOCBCOSA/PyA/PyBEMCA/PyBBOSA/PyA5RCA/PyA/PyBCRCA/PyA/ PyBEMCA/PyBBOSA/PyA5RCAwNCBENCA2MCBCRCA/PyA/PyBEMCA/PyBCOSA/PyA/PyA5RCAwMCBE NCBCOSA/PyA/PyA5RCAwMSBENCBBOSA/PyA5RCAwNSBENCBFTkQNCiANCiA/Q29tbW9kb3JlDQpA QCAtMjAzOSw2ICsyMDk4LDkgQEAKID9HYW1lc3Rhcg0KIDg1ID8/IEM4IEIxID8/IDQ4IEM4IEIx ID8/IDg1ID8/IDY4IEVORA0KIA0KKz9IZWlrb19TY2hyb2VkZXINCis5RCAwMCBENCBDQSBDQSBD QSBDQSBDOCBCOSBFTkQNCisNCiA/SG9lcm5lbGwvUGxheWVycw0KIEU2IEZCIEQwIDAyIEU2IEZD ID8/IEEwIDAwIEIxIEZCIEM5IEZGIEYwIDI4IEVORA0KIA0KQEAgLTIwNDgsNiArMjExMCwxMiBA QAogP0ljZV9Tb2Z0d2FyZQ0KIDMwIDE4IDcwIDM4IEE5IDAwIDhEIDA0IEQ0IDhEIDBCIEQ0IEVO RA0KIA0KKz9KZWZmX1NjaG5laWRlcg0KKzQ5IDA3IDY5IDA0IDBBIDBBIDBBIDBBIDhEIDA2IEQ0 IEE5IDExIDhEIDA0IEQ0IDhEIDBCIEQ0IEFEID8/ID8/IDE4IDY5IDAxIDI5IEE3IDhEIEVORA0K Kw0KKz9KZXRzb2Z0DQorRkUgRDAgMDUgQTkgNDAgOEQgMEIgRDQgQTUgRU5EDQorDQogP0ppbV9B bmRyb24NCiBBQSAyOSAxRiAzOCBFOSAwMSA5OSA/PyA/PyA4QSAyOSBFMCAxOCAyQSAyQSAyQSAy QSA5OSA/PyA/PyBBOSAwMCA5OSA/PyA/PyBCOSA/PyA/PyAwQSBBQSBCRCBFTkQNCiANCkBAIC0y MDcyLDYgKzIxNDAsOSBAQAogP01TQg0KIDlEIDA0IEQ0IEQwIDQ4IDhBIDBBIEFBIEJEIEVORA0K IA0KKz9QYWxfQmFsb2cNCis0OCA4QSA0OCA5OCA0OCBBMCAwRSBBOSAwNCA4RCBFTkQNCisNCiA/ UGF1bF9IaWdnaW5ib3R0b20NCiAyMCA/PyA/PyAyMCA/PyA/PyA0QyA/PyA/PyAwMCBENCAwMCBE NCAwMCBENCBFTkQNCiANCkBAIC0yMTAzLDI0ICsyMTc0LDE1IEBACiA/VW5rbm93bl8xDQogRDAg MTkgNjAgOEQgMDEgRDQgQUQgPz8gPz8gOEQgMDAgRDQgNEMgPz8gPz8gOEQgMDggRDQgRU5EDQog DQotP1Vua25vd25fNA0KLUZFIEQwIDA1IEE5IDQwIDhEIDBCIEQ0IEE1IEVORA0KLQ0KID9Vbmtu b3duXzUNCiBBMiAwMiBBMCAwOCBCMSA/PyA5RCAwMCBENCBDOCBFOCBCMSA/PyA5RCAwMCBENCBD OCBFOCBFOCBCMSA/PyA5RCAwMCBENCBDOCBFOCBCMSA/PyA5RCAwMCBENCBDMCA/PyBGMCBFTkQN CiANCi0/VW5rbm93bl82DQotNDggOEEgNDggOTggNDggQTAgMEUgQTkgMDQgOEQgRU5EDQotDQog P1Vua25vd25fNw0KIDYwIEQwIDAzIEEyIDAwIDYwIEM5IDAxIEQwIDAzIEEyIEVORA0KIA0KID9V bmtub3duXzgNCiA0OCAyOSAwRiBBOCBCOSBBTkQgNjggNEEgNEEgNEEgNEEgNDkgMDcgRU5EDQog DQotP1Vua25vd25fOQ0KLTRDID8/ID8/IEVFID8/ID8/IEFFID8/ID8/IEJEID8/ID8/IEYwIDEy IDBBIEFBIEVORA0KLQ0KID9Vbmtub3duXzEwDQogODggRDAgMTUgQkQgPz8gPz8gRDAgRTUgQTUg Pz8gODUgRU5EDQogDQpAQCAtMjE0NCwzICsyMjA2LDQgQEAKIA0KIENydW5jaGVkOlBVQ3J1bmNo DQogRTggODggRDAgRjQgQTkgODAgODUgRkIgNEMgRU5EDQorDQpkaWZmIC1OYXVydyAveHNpZHBs YXkyLWNvZGUtcjI4OC10cnVuay94c2lkcGxheS9zaWRpZC5uZm8gL3hzaWRwbGF5Mi1jb2RlLXIy OTQtdHJ1bmsveHNpZHBsYXkvc2lkaWQubmZvCi0tLSAveHNpZHBsYXkyLWNvZGUtcjI4OC10cnVu ay94c2lkcGxheS9zaWRpZC5uZm8JMjAyMC0wNi0yMCAxMjowMzoyNy4wMDAwMDAwMDAgKzAyMDAK KysrIC94c2lkcGxheTItY29kZS1yMjk0LXRydW5rL3hzaWRwbGF5L3NpZGlkLm5mbwkyMDIzLTAy LTE5IDE0OjEyOjMzLjAwMDAwMDAwMCArMDEwMApAQCAtNSwxNCArNSwxNiBAQAogNGJpdERpZ2kv VEhDTQ0KICAgIEFVVEhPUjogVXdlIEFuZmFuZyAoVGhlIEh1bWFuIENvZGUgTWFjaGluZSkNCiAN Ci04Yml0RGlnaS9USENNDQorT3h5TW9kL1RIQ00NCiAgICBBVVRIT1I6IFV3ZSBBbmZhbmcgKFRo ZSBIdW1hbiBDb2RlIE1hY2hpbmUpDQotICBDT01NRU5UOiBUaGUgdGVjaG5pcXVlIHVzZWQgaW4g dGhpcyBwbGF5ZXIgd2FzIGRpc2NvdmVyZWQgYnkgT3R0byBKw6RydmluZW4NCi0gICAgICAgICAg IChTb3VuRGVtb04pIGluIDIwMDYuIEl0IG1ha2VzIHVzZSBvZiB0aGUgbm9pc2Ugd2F2ZWZvcm0g YW5kIHRoZQ0KLSAgICAgICAgICAgdGVzdCBiaXQgYW5kIHVzZXMgdGhlIGZyZXF1ZW5jeSByZWdp c3RlciB0byB3cml0ZSB0aGUgOC1iaXQgc2FtcGxlDQotICAgICAgICAgICBkYXRhIHRvIHRoZSBT SUQgY2hpcC4NCisgIENPTU1FTlQ6IFRoZSB0ZWNobmlxdWUgdXNlZCBpbiB0aGlzIHBsYXllciB3 YXMgZGlzY292ZXJlZCBieSBPdHRvIErkcnZpbmVuDQorICAgICAgICAgICAoU291bkRlbW9OKSBp biAyMDA2LiBJdCBtYWtlcyB1c2Ugb2Ygd2F2ZWZvcm0gJDAwIGluIGNvbWJpbmF0aW9uDQorICAg ICAgICAgICB3aXRoIHRoZSB0ZXN0IGJpdCBhbmQgdXNlcyB0aGUgZnJlcXVlbmN5IHJlZ2lzdGVy IHRvIHdyaXRlIHRoZSA4LWJpdA0KKyAgICAgICAgICAgc2FtcGxlIGRhdGEgdG8gdGhlIFNJRCBj aGlwLg0KICAgICAgICAgICAgTW9yZSBpbmZvIGFib3V0IHRoaXMgdGVjaG5pcXVlOg0KLSAgICAg ICAgICAgaHR0cHM6Ly9jc2RiLmRrL2ZvcnVtcy8/cm9vbWlkPTE0JnRvcGljaWQ9MjQ2MjYNCisg ICAgICAgICAgIGh0dHBzOi8vY29kZWJhc2U2NC5vcmcvZG9rdS5waHA/aWQ9YmFzZTp2aWNpb3Vz X3NpZF9kZW1vX3JvdXRpbmVfZXhwbGFpbmVkDQorICAgICAgICAgICBUaGUgc2FtZSB0ZWNobmlx dWUgd2FzIGFscmVhZHkgZGlzY292ZXJlZCBpbiAxOTkzIGFuZCB1c2VkIGluIHRoZQ0KKyAgICAg ICAgICAgRGlnaU1hc3RlciB1dGlsaXR5IGJ5IENocmlzIEJyZW5uZXIuDQogDQogOGJpdERpZ2kv TWFob25leQ0KICAgIEFVVEhPUjogUGV4IFR1ZnZlc3NvbiAoTWFob25leSkNCkBAIC0zMiw2ICsz NCwxOSBAQAogQWNpZF9QbGF5ZXINCiAgICBBVVRIT1I6IFN0dWFydCBNY0Rvd2VsbCAoQWNpZCkN CiANCitBbGdvcml0aG0vOGJpdERpZ2kNCisgICBBVVRIT1I6IE5hdmVlZCBLaHVnaWFuaSAoQWxn b3JpdGhtKQ0KKyAgQ09NTUVOVDogVXNlcyB0aGUgc2FtZSB0ZWNobmlxdWUgdG8gcGxheSA4LWJp dCBzYW1wbGVzIGFzIGluIE94eU1vZC9USENNLg0KKw0KK0FsZ29yaXRobS9BbGdvVlFUcmFja2Vy X1YxDQorICAgQVVUSE9SOiBOYXZlZWQgS2h1Z2lhbmkgKEFsZ29yaXRobSkNCisNCitBbGdvcml0 aG0vRnJvZGlnaQ0KKyAgICAgTkFNRTogRnJlZSBSdW5uaW5nIE9zY2lsbGF0b3IgRGlnaQ0KKyAg IEFVVEhPUjogTmF2ZWVkIEtodWdpYW5pIChBbGdvcml0aG0pDQorICBDT01NRU5UOiBVc2VzIHRo ZSBmcmVlIHJ1bm5pbmcgc2lkIG9zY2lsbGF0b3JzIG9uIHRoZSBzaWQgY2hpcCBpbiAzIGNoYW5u ZWxzDQorICAgICAgICAgICBhbmQgYSBtYXN0ZXIgdm9sdW1lIHRvIHJlY3JlYXRlIHRoZSBhdWRp by4NCisNCiBBTGlIDQogICAgQVVUSE9SOiBKYXlteiBKdWxpYW4gKEEgTGlmZSBpbiBIZWxsKQ0K IA0KQEAgLTc3LDcgKzkyLDcgQEAKIA0KIEFydGxhY2UNCiAgICAgIE5BTUU6IEFydGxhY2UgRWRp dG9yIChBUkwtRWRpdG9yKQ0KLSAgIEFVVEhPUjogQXJ0w7pyIEJ1amRvc8OzIChBcnRsYWNlKQ0K KyAgIEFVVEhPUjogQXJ0+nIgQnVqZG9z8yAoQXJ0bGFjZSkNCiAgUkVMRUFTRUQ6IDE5OTMgUmVi ZWxzDQogUkVGRVJFTkNFOiBodHRwczovL2NzZGIuZGsvcmVsZWFzZS8/aWQ9MTUyNzIzDQogDQpA QCAtOTksMjEgKzExNCwyMSBAQAogDQogQVRNRFNfMS54DQogICAgICBOQU1FOiBBY2lkIFRyYWNr IE11c2ljIERldmVsb3BtZW50IFN5c3RlbSAoQVRNRFMpDQotICAgQVVUSE9SOiBTdGVmYW4gSMO8 Ym5lciAoU3QwZmYpDQorICAgQVVUSE9SOiBTdGVmYW4gSPxibmVyIChTdDBmZikNCiAgUkVMRUFT RUQ6IDE5OTcgTmVvcGxhc2lhDQogUkVGRVJFTkNFOiBodHRwczovL2NzZGIuZGsvcmVsZWFzZS8/ aWQ9MTI5ODQ0DQogICBDT01NRU5UOiBBbHNvIGtub3duIGFzIEFjaWQgVHJhY2sgQ3JlYXRvcg0K IA0KIEFUTURTXzMueA0KICAgICAgTkFNRTogQWNpZCBUcmFjayBNdXNpYyBEZXZlbG9wbWVudCBT eXN0ZW0gKEFUTURTKQ0KLSAgIEFVVEhPUjogU3RlZmFuIEjDvGJuZXIgKFN0MGZmKQ0KKyAgIEFV VEhPUjogU3RlZmFuIEj8Ym5lciAoU3QwZmYpDQogIFJFTEVBU0VEOiAyMDAxIE5lb3BsYXNpYQ0K IFJFRkVSRU5DRTogaHR0cHM6Ly9jc2RiLmRrL3JlbGVhc2UvP2lkPTcxNTkNCiAgIENPTU1FTlQ6 IEFsc28ga25vd24gYXMgQWNpZCBUcmFjayBDcmVhdG9yDQogDQogQXVkaWFsX0FydHMNCiAgICAg IE5BTUU6IFpvbmcgUGxheWVyDQotICAgQVVUSE9SOiBGcmFuw6dvaXMgUHJpanQNCisgICBBVVRI T1I6IEZyYW7nb2lzIFByaWp0DQogIFJFTEVBU0VEOiBBdWRpYWwgQXJ0cw0KICAgQ09NTUVOVDog UGxheWVyIHVzZWQgYnkgdGhlIGdyb3VwIEF1ZGlhbCBBcnRzDQogDQpAQCAtMTQxLDEzICsxNTYs MTMgQEAKIA0KIEJsYWNrYmlyZC9MRlQNCiAgICAgIE5BTUU6IEJsYWNrYmlyZCAxLjANCi0gICBB VVRIT1I6IExpbnVzIMOFa2Vzc29uIChsZnQpDQorICAgQVVUSE9SOiBMaW51cyDFa2Vzc29uIChs ZnQpDQogIFJFTEVBU0VEOiAyMDE3IGxmdA0KIFJFRkVSRU5DRTogaHR0cHM6Ly9jc2RiLmRrL3Jl bGVhc2UvP2lkPTE1MzU1NQ0KIA0KIEM2NF9TcGVlY2hfU3lzdGVtDQogICAgICBOQU1FOiBDNjQg U3BlZWNoIFN5c3RlbQ0KLSAgIEFVVEhPUjogS3Jpc3RpYW4gS8O2aG50b3BwDQorICAgQVVUSE9S OiBLcmlzdGlhbiBL9mhudG9wcA0KICBSRUxFQVNFRDogMTk4NiA2NCdlci9NYXJrdCAmIFRlY2hu aWsNCiBSRUZFUkVOQ0U6IGh0dHBzOi8vY3NkYi5kay9yZWxlYXNlLz9pZD0xMjk5NjUNCiAgIENP TU1FTlQ6IEFsc28ga25vd24gYXMgIlNwZWVjaCBCYXNpYyINCkBAIC0xNjAsNiArMTc1LDcgQEAK IA0KIENlbnNvcl84Yml0X0RpZ2lfMQ0KICAgIEFVVEhPUjogRnJlZHJpayBUZXJuZWxsIChTd2Fs bG93KQ0KKyAgQ09NTUVOVDogVXNlcyB0aGUgc2FtZSB0ZWNobmlxdWUgdG8gcGxheSA4LWJpdCBz YW1wbGVzIGFzIGluIE94eU1vZC9USENNLg0KIA0KIENlbnNvcl84Yml0X0RpZ2lfMg0KICAgIEFV VEhPUjogRnJlZHJpayBUZXJuZWxsIChTd2FsbG93KQ0KQEAgLTE4OCwxNiArMjA0LDggQEAKICAg ICAgTkFNRTogU291bmQgUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgKFNQTCkNCiAgICBBVVRIT1I6IENo cmlzIEdyaWdnDQogDQotQ2hyaXNfTXVycmF5DQotICAgQVVUSE9SOiBDaHJpcyBNdXJyYXkNCi0g IENPTU1FTlQ6IFRoZSBwbGF5ZXIgaXMgdXNlZCBpbiBzZXZlcmFsIGdhbWVzLCBhbGwgc2VlbXMg ZGVyaXZlZCBmcm9tDQotICAgICAgICAgICBDaHJpcyBNdXJyYXkncyBIZW5yeXNfSG91c2Uuc2lk DQotICAgICAgICAgICBTSUQgU2VxdWVuY2VyIChodHRwczovL2NzZGIuZGsvcmVsZWFzZS8/aWQ9 MTIyMzMyKSBhbmQNCi0gICAgICAgICAgIEFsZWF0b3J5IENvbXBvc2VyIChodHRwczovL2NzZGIu ZGsvcmVsZWFzZS8/aWQ9MTIyMzMxKSBhcmUNCi0gICAgICAgICAgIG11c2ljIGVkaXRvcnMgdGhh dCBhcmUgYmFzZWQgb24gdGhpcyBwbGF5ZXIuDQotDQogQ2h1YnJvY2tlcl9WMy54DQotICAgQVVU SE9SOiBMw6FzemzDsyBCZW5rZSAoRGVjKQ0KKyAgIEFVVEhPUjogTOFzemzzIEJlbmtlIChEZWMp DQogIFJFTEVBU0VEOiAxOTk1IENhZGdlcnMNCiBSRUZFUkVOQ0U6IGh0dHBzOi8vY3NkYi5kay9y ZWxlYXNlLz9pZD0xMTQxODUNCiANCkBAIC0yMTIsNiArMjIwLDIxIEBACiAgICBBVVRIT1I6IFBh d2VsIEt1bGlrb3dza2kgKENvbWVyKQ0KIFJFRkVSRU5DRTogaHR0cHM6Ly9jc2RiLmRrL3JlbGVh c2UvP2lkPTEwMTcwNA0KIA0KK0NvbXBhbmlvbg0KKyAgICAgTkFNRTogVGhlIENvbXBhbmlvbiB0 byB0aGUgQ29tbW9kb3JlIDY0DQorICAgQVVUSE9SOiBLZWl0aCBCb3dkZW4NCisgUkVMRUFTRUQ6 IDE5ODQgUGFuIEJvb2tzDQorICBDT01NRU5UOiBUeXBlLWluIHdpdGhvdXQgZWRpdG9yLiBUaGUg Ym9vayBzdWdnZXN0cyB0byBhZGQgZmVhdHVyZXMsIHdoaWNoDQorICAgICAgICAgICBoYXMgYmVl biBkb25lIG9uIFJvYiBIdWJiYXJkJ3MgdHdvIGVhcmxpZXN0IFNJRHMgYW5kIENsZXZlcg0KKyAg ICAgICAgICAgTXVzaWMncy4gSW4gMTk4OCBhbmQgaW4gMTk4OSwgVmljIEguIEJlcnJ5IGJhc2Vk IHR3byBlZGl0b3JzIG9uIHRoaXMNCisgICAgICAgICAgIGRyaXZlcjoNCisgICAgICAgICAgIFNJ RCBTZXF1ZW5jZXIgKGh0dHBzOi8vY3NkYi5kay9yZWxlYXNlLz9pZD0xMjIzMzIpIGFuZA0KKyAg ICAgICAgICAgQWxlYXRvcnkgQ29tcG9zZXIgKGh0dHBzOi8vY3NkYi5kay9yZWxlYXNlLz9pZD0x MjIzMzEpDQorDQorQ29tcGFuaW9uL0pheV9EZXJyZXR0DQorICAgQVVUSE9SOiBKYXkgRGVycmV0 dA0KKyAgQ09NTUVOVDogUmV3cml0ZSBvZiBDbGV2ZXIgTXVzaWMncyBleHRlbnNpb24gb2YgQ29t cGFuaW9uLg0KKw0KIENSRF9UcmFja2VyDQogICAgICBOQU1FOiBDUkQtVHJhY2tlcjY0DQogICAg QVVUSE9SOiBPd2VuIENyb3dsZXkgKENSRCkNCkBAIC0yMjYsNyArMjQ5LDcgQEAKICAgQ09NTUVO VDogUGxheWVyIGlzIHVzZWQgaW4gQ1JMIChDb21wdXRlciBSZW50YWxzIExpbWl0ZWQpIHJlbGVh c2VzDQogDQogQ3liZXJicmFpbl9EaWdpDQotICAgQVVUSE9SOiBCamFya2UgTsO4cmdhYXJkIExh dXN0c2VuIChDeWJlckJyYWluKQ0KKyAgIEFVVEhPUjogQmphcmtlIE74cmdhYXJkIExhdXN0c2Vu IChDeWJlckJyYWluKQ0KIA0KIEN5YmVybG9naWNfU291bmRTdHVkaW8NCiAgICAgIE5BTUU6IEN5 YmVybG9naWMgU291bmQgU3R1ZGlvDQpAQCAtMjM1LDcgKzI1OCw3IEBACiBSRUZFUkVOQ0U6IGh0 dHBzOi8vY3NkYi5kay9yZWxlYXNlLz9pZD0xNzA2MzINCiANCiBDeWJlclRyYWNrZXINCi0gICBB VVRIT1I6IEJqYXJrZSBOw7hyZ2FhcmQgTGF1c3RzZW4gKEN5YmVyQnJhaW4pDQorICAgQVVUSE9S OiBCamFya2UgTvhyZ2FhcmQgTGF1c3RzZW4gKEN5YmVyQnJhaW4pDQogIFJFTEVBU0VEOiAyMDAx DQogUkVGRVJFTkNFOiBodHRwczovL2NzZGIuZGsvcmVsZWFzZS8/aWQ9MjYwMQ0KIA0KQEAgLTI4 MCwxMiArMzAzLDEyIEBACiBSRUZFUkVOQ0U6IGh0dHBzOi8vY3NkYi5kay9yZWxlYXNlLz9pZD04 NzENCiANCiBEaWdpdGFsaXplcl9WMy4wDQotICAgQVVUSE9SOiBPbGF2IE3DuHJrcmlkDQorICAg QVVUSE9SOiBPbGF2IE34cmtyaWQNCiAgUkVMRUFTRUQ6IDE5OTINCiBSRUZFUkVOQ0U6IGh0dHBz Oi8vY3NkYi5kay9yZWxlYXNlLz9pZD0zMzY0OQ0KIA0KIERpZ2l0YWxpemVyX1YyLngNCi0gICBB VVRIT1I6IE9sYXYgTcO4cmtyaWQNCisgICBBVVRIT1I6IE9sYXYgTfhya3JpZA0KICBSRUxFQVNF RDogMTk4OQ0KIFJFRkVSRU5DRTogaHR0cHM6Ly9jc2RiLmRrL3JlbGVhc2UvP2lkPTMzNjQ2DQog DQpAQCAtMzE5LDcgKzM0Miw3IEBACiANCiBEcnVtRWRpdG9yDQogICAgICBOQU1FOiBEcnVtZWRp dG9yIFYzLjANCi0gICBBVVRIT1I6IEZyYW5rIEh1Z2Vucm90aCAmIEFuZHLDqSBIdWdlbnJvdGgN CisgICBBVVRIT1I6IEZyYW5rIEh1Z2Vucm90aCAmIEFuZHLpIEh1Z2Vucm90aA0KICBSRUxFQVNF RDogMTk5MCA2NCdlci1EaXNjL01hcmt0ICYgVGVjaG5paw0KIFJFRkVSRU5DRTogaHR0cHM6Ly9j c2RiLmRrL3JlbGVhc2UvP2lkPTEzNjE3OQ0KIA0KQEAgLTMzOCwxNSArMzYxLDE1IEBACiBSRUZF UkVOQ0U6IGh0dHBzOi8vY3NkYi5kay9yZWxlYXNlLz9pZD0yMDY3Mg0KIA0KIEVkL1dyYXRoDQot ICAgQVVUSE9SOiBFZGRpZSBTdsOkcmQgKEVkKQ0KKyAgIEFVVEhPUjogRWRkaWUgU3bkcmQgKEVk KQ0KIA0KIEVkL1dyYXRoX0RpZ2kNCi0gICBBVVRIT1I6IEVkZGllIFN2w6RyZCAoRWQpDQorICAg QVVUSE9SOiBFZGRpZSBTduRyZCAoRWQpDQogDQotRWRfQm9nYXNfVjENCitFZF9Cb2dhcy9BY2Nv bGFkZQ0KICAgIEFVVEhPUjogRWQgQm9nYXMNCiANCi1FZF9Cb2dhc19WMg0KK0VkX0JvZ2FzL0hh a2Fuc3Nvbg0KICAgIEFVVEhPUjogRWQgQm9nYXMNCiANCiBFbGVjdHJvX1NvdW5kDQpAQCAtMzg0 LDYgKzQwNyw5IEBACiBFTVNfVjkueA0KICAgIEFVVEhPUjogU2VhbiBDb25ub2xseSAoT2RpZSkN CiANCitFTVNfVjEwLngNCisgICBBVVRIT1I6IFNlYW4gQ29ubm9sbHkgKE9kaWUpDQorDQogRW50 cm9weV9FZGl0b3INCiAgICAgIE5BTUU6IEVudHJvcHkgTXVzaWMgRWRpdG9yDQogICAgQVVUSE9S OiBTaW1vbiBDb2xsaXMgKFV6enkpDQpAQCAtMzkxLDcgKzQxNyw3IEBACiBSRUZFUkVOQ0U6IGh0 dHBzOi8vY3NkYi5kay9yZWxlYXNlLz9pZD0xMDAwMzINCiANCiBFd2VndW8NCi0gICBBVVRIT1I6 IEthcmwgSMO2cm5lbGwNCisgICBBVVRIT1I6IEthcmwgSPZybmVsbA0KIA0KIEV4dHJhX1NvdW5k DQogICAgQVVUSE9SOiBUb2JpYXMgSGVycmUNCkBAIC00MTYsNyArNDQyLDcgQEAKIA0KIEdhbEJh cmQvQVRPTw0KICAgICAgTkFNRTogR2FsQmFyZA0KLSAgIEFVVEhPUjogQW5kZXJzIEFuZHLDqWVu IChBVE9PKQ0KKyAgIEFVVEhPUjogQW5kZXJzIEFuZHLpZW4gKEFUT08pDQogICBDT01NRU5UOiBH YWxCYXJkIGlzIGEgc2NyaXB0LWJhc2VkIG11c2ljIGVkaXRvci4gSXQgaXMgY2FsbGVkIEdhbEJh cmQNCiAgICAgICAgICAgIGJlY2F1c2UgQW5kZXJzJyBnb2FsIHdhcyB0byBiZSBhYmxlIHRvIGNy ZWF0ZSB0dW5lcyBpbiB0aGUgc3R5bGUgb2YNCiAgICAgICAgICAgIE1hcnRpbiBHYWx3YXkgYW5k IFJvYiBIdWJiYXJkLg0KQEAgLTQ2NiwxMiArNDkyLDE3IEBACiAgUkVMRUFTRUQ6IDE5OTIgTW96 KEljKUFydA0KIFJFRkVSRU5DRTogaHR0cHM6Ly9jc2RiLmRrL3JlbGVhc2UvP2lkPTMzNjQ1DQog DQotR2Vpcl9UamVsdGEvTWFjcm9QbGF5DQorR2Vpcl9UamVsdGEvTWFjcm9QbGF5XzENCiAgICAg IE5BTUU6IE1hY3JvIFBsYXllcg0KICAgIEFVVEhPUjogR2VpciBUamVsdGENCiAgUkVMRUFTRUQ6 IDIwMDkNCiBSRUZFUkVOQ0U6IGh0dHBzOi8vY3NkYi5kay9yZWxlYXNlLz9pZD03NjQ5Mw0KIA0K K0dlaXJfVGplbHRhL01hY3JvUGxheV8yDQorICAgICBOQU1FOiBNYWNybyBQbGF5ZXINCisgICBB VVRIT1I6IEdlaXIgVGplbHRhDQorIFJFTEVBU0VEOiAyMDA5DQorDQogR2Vpcl9UamVsdGFfRGln aV8xDQogICAgICBOQU1FOiBOTUkgUGxheWVyIHYxLjANCiAgICBBVVRIT1I6IEdlaXIgVGplbHRh ICYgR2xlbm4gUnVuZSBHYWxsZWZvc3MgKEdSRykNCkBAIC01MTcsMTcgKzU0OCwxNyBAQAogICAg QVVUSE9SOiBCYWxhenMgRmFya2FzIChCcmlhbikNCiANCiBHb2F0VHJhY2tlcl9WMS54DQotICAg QVVUSE9SOiBMYXNzZSDDlsO2cm5pIChDYWRhdmVyKQ0KKyAgIEFVVEhPUjogTGFzc2Ug1vZybmkg KENhZGF2ZXIpDQogIFJFTEVBU0VEOiAyMDAxIENvdmVydCBCaXRvcHMNCiBSRUZFUkVOQ0U6IGh0 dHBzOi8vY3NkYi5kay9yZWxlYXNlLz9pZD0xNTI2OTcNCiANCiBHb2F0VHJhY2tlcl9WMi54DQot ICAgQVVUSE9SOiBMYXNzZSDDlsO2cm5pIChDYWRhdmVyKQ0KKyAgIEFVVEhPUjogTGFzc2Ug1vZy bmkgKENhZGF2ZXIpDQogIFJFTEVBU0VEOiAyMDA1IENvdmVydCBCaXRvcHMNCiBSRUZFUkVOQ0U6 IGh0dHBzOi8vY3NkYi5kay9yZWxlYXNlLz9pZD0xODMwOA0KIA0KIEdvYXRUcmFja2VyX1YyL01p bmkNCi0gICBBVVRIT1I6IExhc3NlIMOWw7ZybmkgKENhZGF2ZXIpDQorICAgQVVUSE9SOiBMYXNz ZSDW9nJuaSAoQ2FkYXZlcikNCiAgUkVMRUFTRUQ6IDIwMTggQ292ZXJ0IEJpdG9wcw0KIA0KIEdS Rw0KQEAgLTU0NiwxMCArNTc3LDEwIEBACiAgICBBVVRIT1I6IEdyZWdvciBMYXJzb24NCiANCiBH cmlmZi9DaHJvbWFuY2UNCi0gICBBVVRIT1I6IFDDqXRlciBWYXJnYSAoR3JpZmYpDQorICAgQVVU SE9SOiBQ6XRlciBWYXJnYSAoR3JpZmYpDQogDQogKExpZ2h0Vm9pY2VzKQ0KLSAgIEFVVEhPUjog UMOpdGVyIFZhcmdhIChHcmlmZikNCisgICBBVVRIT1I6IFDpdGVyIFZhcmdhIChHcmlmZikNCiAg UkVMRUFTRUQ6IDE5OTAgRkJJIENyZXcNCiBSRUZFUkVOQ0U6IGh0dHBzOi8vY3NkYi5kay9yZWxl YXNlLz9pZD03MjkxNQ0KIA0KQEAgLTU1Nyw3ICs1ODgsNyBAQAogICAgQVVUSE9SOiBDbGF1cyBM ZXRoIEdyZWdlcnNlbiAoR3JvbykNCiANCiBHcm9vdnlfQml0cw0KLSAgIEFVVEhPUjogTGFycyBQ YXRyaWsgV2FsbHN0csO2bSAoS2FybCBYSUkpDQorICAgQVVUSE9SOiBMYXJzIFBhdHJpayBXYWxs c3Ry9m0gKEthcmwgWElJKQ0KICBSRUxFQVNFRDogMTk4OSBHcm9vdnkgQml0cw0KIFJFRkVSRU5D RTogaHR0cHM6Ly9jc2RiLmRrL3JlbGVhc2UvP2lkPTEyMTM3MA0KIA0KQEAgLTU4MCwzNSArNjEx LDM1IEBACiBSRUZFUkVOQ0U6IGh0dHBzOi8vY3NkYi5kay9yZWxlYXNlLz9pZD0xMTI3OTQNCiAN CiBIZXJtaXQvU2lkV2l6YXJkX1YxLngNCi0gICBBVVRIT1I6IE1paMOhbHkgSG9ydsOhdGggKEhl cm1pdCkNCisgICBBVVRIT1I6IE1paOFseSBIb3J24XRoIChIZXJtaXQpDQogDQogKFNpZFdpemFy ZF9WMS4wKQ0KLSAgIEFVVEhPUjogTWlow6FseSBIb3J2w6F0aCAoSGVybWl0KQ0KKyAgIEFVVEhP UjogTWlo4Wx5IEhvcnbhdGggKEhlcm1pdCkNCiAgUkVMRUFTRUQ6IDIwMTINCiBSRUZFUkVOQ0U6 IGh0dHBzOi8vY3NkYi5kay9yZWxlYXNlLz9pZD0xMTA5NDINCiANCiAoU2lkV2l6YXJkX1YxLjIp DQotICAgQVVUSE9SOiBNaWjDoWx5IEhvcnbDoXRoIChIZXJtaXQpDQorICAgQVVUSE9SOiBNaWjh bHkgSG9yduF0aCAoSGVybWl0KQ0KICBSRUxFQVNFRDogMjAxMg0KIFJFRkVSRU5DRTogaHR0cHM6 Ly9jc2RiLmRrL3JlbGVhc2UvP2lkPTExMjcxNg0KIA0KIChTaWRXaXphcmRfVjEuNCkNCi0gICBB VVRIT1I6IE1paMOhbHkgSG9ydsOhdGggKEhlcm1pdCkNCisgICBBVVRIT1I6IE1paOFseSBIb3J2 4XRoIChIZXJtaXQpDQogIFJFTEVBU0VEOiAyMDEzDQogUkVGRVJFTkNFOiBodHRwczovL2NzZGIu ZGsvcmVsZWFzZS8/aWQ9MTE1NTk5DQogDQogKFNpZFdpemFyZF9WMS41KQ0KLSAgIEFVVEhPUjog TWlow6FseSBIb3J2w6F0aCAoSGVybWl0KQ0KKyAgIEFVVEhPUjogTWlo4Wx5IEhvcnbhdGggKEhl cm1pdCkNCiAgUkVMRUFTRUQ6IDIwMTMNCiBSRUZFUkVOQ0U6IGh0dHBzOi8vY3NkYi5kay9yZWxl YXNlLz9pZD0xMjY3OTcNCiANCiAoSGVybWl0LzNTSUQpDQotICAgQVVUSE9SOiBNaWjDoWx5IEhv cnbDoXRoIChIZXJtaXQpDQorICAgQVVUSE9SOiBNaWjhbHkgSG9yduF0aCAoSGVybWl0KQ0KICBS RUxFQVNFRDogMjAwOA0KIFJFRkVSRU5DRTogaHR0cHM6Ly9jc2RiLmRrL3JlbGVhc2UvP2lkPTY2 MDY1DQogDQogSGVybWl0LzFSYXN0ZXJUcmFja2VyDQotICAgQVVUSE9SOiBNaWjDoWx5IEhvcnbD oXRoIChIZXJtaXQpDQorICAgQVVUSE9SOiBNaWjhbHkgSG9yduF0aCAoSGVybWl0KQ0KICBSRUxF QVNFRDogMjAxMw0KIFJFRkVSRU5DRTogaHR0cHM6Ly9jc2RiLmRrL3JlbGVhc2UvP2lkPTExNzkz NQ0KIA0KQEAgLTY4MiwzNyArNzEzLDQxIEBACiAgUkVMRUFTRUQ6IDE5ODgNCiBSRUZFUkVOQ0U6 IGh0dHBzOi8vY3NkYi5kay9yZWxlYXNlLz9pZD00Mzk1Ng0KIA0KK0phc29uX1BhZ2UvUm9iVHJh Y2tlcg0KKyAgQVVUSE9SOiBKYXNvbiBQYWdlDQorIENPTU1FTlQ6IEJhc2VkIG9uIFJvYiBIdWJi YXJkJ3MgRGlnaSByb3V0aW5lLg0KKw0KIEplZmYNCiAgICAgIE5BTUU6IE11c2ljIEVkaXRvcg0K LSAgIEFVVEhPUjogU8O4cmVuIEx1bmQgKEplZmYpDQorICAgQVVUSE9SOiBT+HJlbiBMdW5kIChK ZWZmKQ0KICBSRUxFQVNFRDogMTk5NiBDeWJlcnpvdW5kIFByb2R1Y3Rpb25zDQogUkVGRVJFTkNF OiBodHRwczovL2NzZGIuZGsvcmVsZWFzZS8/aWQ9MTIyMzM0DQogDQogKFgtU0lEKQ0KLSAgIEFV VEhPUjogU8O4cmVuIEx1bmQgKEplZmYpDQorICAgQVVUSE9SOiBT+HJlbiBMdW5kIChKZWZmKQ0K ICBSRUxFQVNFRDogMjAwNyBWaXJ1eg0KIFJFRkVSRU5DRTogaHR0cHM6Ly9jc2RiLmRrL3JlbGVh c2UvP2lkPTQ3OTg1DQogDQogSmVmZi9BaXJ3YWxrDQotICAgQVVUSE9SOiBTw7hyZW4gTHVuZCAo SmVmZikNCisgICBBVVRIT1I6IFP4cmVuIEx1bmQgKEplZmYpDQogDQogSmVmZi9CdWxsU0lEDQot ICAgQVVUSE9SOiBTw7hyZW4gTHVuZCAoSmVmZikNCisgICBBVVRIT1I6IFP4cmVuIEx1bmQgKEpl ZmYpDQogDQogSmVmZi9GTFQNCi0gICBBVVRIT1I6IFPDuHJlbiBMdW5kIChKZWZmKQ0KKyAgIEFV VEhPUjogU/hyZW4gTHVuZCAoSmVmZikNCiBSRUZFUkVOQ0U6IGh0dHBzOi8vY3NkYi5kay9yZWxl YXNlLz9pZD0xNzI5Mg0KICAgQ09NTUVOVDogQ3VzdG9tIHBsYXllciBtYWRlIGZvciBPbmUgTWls bGlvbiBMaWdodHllYXJzIGZyb20gRWFydGgvRmFpckxpZ2h0DQogDQogSmVmZi9YTGFyZ2UNCi0g ICBBVVRIT1I6IFPDuHJlbiBMdW5kIChKZWZmKQ0KKyAgIEFVVEhPUjogU/hyZW4gTHVuZCAoSmVm ZikNCiANCiBKSVRUXzEueA0KICAgIEFVVEhPUjogU3RlZmFubyBUb2dub24gKEljZTAwKQ0KIFJF RkVSRU5DRTogaHR0cHM6Ly9jc2RiLmRrL3JlbGVhc2UvP2lkPTc0MTM2DQogDQogSm9oYW5uZXNf R29ldHRrZXINCi0gICBBVVRIT1I6IEpvaGFubmVzIEfDtnR0a2VyDQorICAgQVVUSE9SOiBKb2hh bm5lcyBH9nR0a2VyDQogDQogSm9obl9QbGF5ZXINCiAgICBBVVRIT1I6IEFsZWtzaSBFZWJlbg0K QEAgLTczNCw3ICs3NjksMTMgQEAKIFJFRkVSRU5DRTogaHR0cHM6Ly9jc2RiLmRrL3JlbGVhc2Uv P2lkPTE4NzY3DQogDQogSm9uYXNfSHVsdGVuDQotICAgQVVUSE9SOiBKb25hcyBIdWx0w6luDQor ICAgQVVUSE9SOiBKb25hcyBIdWx06W4NCisNCitLYXdhc2FraV9TeW50aGVzaXplcg0KKyAgICAg TkFNRTogS2F3YXNha2kgU3ludGhlc2l6ZXINCisgICBBVVRIT1I6IFJ5byBLYXdhc2FraQ0KKyBS RUxFQVNFRDogMTk4MyBTaWdodCAmIFNvdW5kIE11c2ljIFNvZnR3YXJlDQorICBDT01NRU5UOiBN b3JlIGluZm86IGh0dHA6Ly93d3cucnlva2F3YXNha2kuY29tL2M2NC8NCiANCiBLQi9TRFMNCiAg ICBBVVRIT1I6IFRhbW1vIEhpbnJpY2hzIChrYikgb2YgU21hc2ggRGVzaWducyAoU0RTKQ0KQEAg LTc2NCw3ICs4MDUsNyBAQAogUkVGRVJFTkNFOiBodHRwczovL2NzZGIuZGsvcmVsZWFzZS8/aWQ9 MjY1NjMNCiANCiBMRlQNCi0gICBBVVRIT1I6IExpbnVzIMOFa2Vzc29uIChMRlQpDQorICAgQVVU SE9SOiBMaW51cyDFa2Vzc29uIChMRlQpDQogDQogTG9hZHN0YXJfU29uZ1NtaXRoDQogICAgICBO QU1FOiBTb25nc21pdGgNCkBAIC05MjIsNyArOTYzLDcgQEAKIA0KIE1vZHVsYXRvcg0KICAgICAg TkFNRTogTW9kdWxhdG9yDQotICAgQVVUSE9SOiBUaG9tYXMgS3LDpHR6aWcNCisgICBBVVRIT1I6 IFRob21hcyBLcuR0emlnDQogIFJFTEVBU0VEOiAxOTg1IDY0J2VyL01hcmt0ICYgVGVjaG5paw0K IFJFRkVSRU5DRTogaHR0cHM6Ly9jc2RiLmRrL3JlbGVhc2UvP2lkPTEyOTgwMg0KIA0KQEAgLTk1 NSw2ICs5OTYsMTAgQEAKIE1vbnRlY2NoaW8vQ29vbHNvdW5kDQogICAgQVVUSE9SOiBBbmRyZWFz IE1vbnRlY2NoaW8NCiANCitNck1vdXNlL0Vhc3lQbGF5ZXINCisgICBBVVRIT1I6IE1pY2hhZWwg WnV1cm1hbiAoTXIuIE1vdXNlKQ0KKyAgQ09NTUVOVDogRm9yayBvZiA0LU1hdCdzIEFZIFBsYXll cg0KKw0KIE1yV2FycF9EaWdpDQogICAgQVVUSE9SOiBNYXJrdXMgUGV0ZXIgKE1yLiBXYXJwKQ0K ICAgQ09NTUVOVDogUHJvYmFibHkgZGVyaXZlZCBmcm9tIEM2NF9TcGVlY2hfU3lzdGVtDQpAQCAt OTc4LDE5ICsxMDIzLDM1IEBACiBSRUZFUkVOQ0U6IGh0dHBzOi8vY3NkYi5kay9yZWxlYXNlLz9p ZD04MjYxOA0KICAgQ09NTUVOVDogRWRpdG9yIGJhc2VkIG9uIHRoZSBNdXNpYyBBc3NlbWJsZXIg cGxheWVyDQogDQorKERvdWJsZVRyYWNrZXIpDQorICAgICBOQU1FOiBEb3VibGVUcmFja2VyDQor ICAgQVVUSE9SOiBQYXdlbCBTb2x0eXNpbnNraSAoUG9sb251cykNCisgUkVMRUFTRUQ6IDE5OTMg UGFkdWENCitSRUZFUkVOQ0U6IGh0dHBzOi8vY3NkYi5kay9yZWxlYXNlLz9pZD04NDMwDQorICBD T01NRU5UOiBNdWx0aXNwZWVkIHZlcnNpb24gb2YgVm9pY2VUcmFja2VyLiBFZGl0b3IgYmFzZWQg b24gdGhlIE11c2ljDQorICAgICAgICAgICBBc3NlbWJsZXIgcGxheWVyDQorDQorKFRlbl9UcmFj a2VyKQ0KKyAgICAgTkFNRTogVGVuIFRyYWNrZXINCisgICBBVVRIT1I6IE1vb2cNCisgUkVMRUFT RUQ6IDE5OTEgS2VlbiBBY2lkDQorUkVGRVJFTkNFOiBodHRwczovL2NzZGIuZGsvcmVsZWFzZS8/ aWQ9NjMxMzUNCisgIENPTU1FTlQ6IDEweCBzcGVlZCB2ZXJzaW9uIG9mIFZvaWNlVHJhY2tlci4g RWRpdG9yIGJhc2VkIG9uIHRoZSBNdXNpYw0KKyAgICAgICAgICAgQXNzZW1ibGVyIHBsYXllcg0K Kw0KIE11c2ljX1Byb2R1Y2VyX0lJDQogICAgICBOQU1FOiBNdXNpYyBQcm9kdWNlciBJSQ0KICAg IEFVVEhPUjogSi5OLlcuIENoZWVzbWFuDQogDQogTXVzaWNDb21wb3Nlci9GbGFzaF9JbmMNCiAg ICAgIE5BTUU6IE11c2ljLUNvbXBvc2VyDQotICAgQVVUSE9SOiBGcmVkcmlrIEthcmxzc29uICha b2RpYWMpICYgQW5kZXJzIEVsbcOpbiAoTW9vbikNCisgICBBVVRIT1I6IEZyZWRyaWsgS2FybHNz b24gKFpvZGlhYykgJiBBbmRlcnMgRWxt6W4gKE1vb24pDQogIFJFTEVBU0VEOiAxOTkxIEZsYXNo IEluYy4NCiAgIENPTU1FTlQ6IEFsbCBwcm9ncmFtbWluZyBieSBab2RpYWMgd2l0aCBhc3Npc3Rh bmNlIGJ5IE1vb24NCiANCiAoTXVzaWNDb21wb3Nlcl9WMy4wKQ0KICAgICAgTkFNRTogTXVzaWMt Q29tcG9zZXIgVjMuMA0KLSAgIEFVVEhPUjogRnJlZHJpayBLYXJsc3NvbiAoWm9kaWFjKSAmIEFu ZGVycyBFbG3DqW4gKE1vb24pDQorICAgQVVUSE9SOiBGcmVkcmlrIEthcmxzc29uIChab2RpYWMp ICYgQW5kZXJzIEVsbeluIChNb29uKQ0KICBSRUxFQVNFRDogMTk5MiBGbGFzaCBJbmMuDQogUkVG RVJFTkNFOiBodHRwczovL2NzZGIuZGsvcmVsZWFzZS8/aWQ9MTA3NTUNCiAgIENPTU1FTlQ6IEFs bCBwcm9ncmFtbWluZyBieSBab2RpYWMgd2l0aCBhc3Npc3RhbmNlIGJ5IE1vb24NCkBAIC0xMDMz LDcgKzEwOTQsNyBAQAogTXVzaWNTaG9wDQogICAgICBOQU1FOiBUaGUgTXVzaWMgU2hvcA0KICAg IEFVVEhPUjogRG9uIFdpbGxpYW1zDQotIFJFTEVBU0VEOiAxOTg0IEJyw7hkZXJidW5kIFNvZnR3 YXJlDQorIFJFTEVBU0VEOiAxOTg0IEJy+GRlcmJ1bmQgU29mdHdhcmUNCiBSRUZFUkVOQ0U6IGh0 dHBzOi8vY3NkYi5kay9yZWxlYXNlLz9pZD04MjQ1Mw0KIA0KIE11c28NCkBAIC0xMDQ0LDEzICsx MTA1LDE3IEBACiBOZWlsX0JhdGUNCiAgICBBVVRIT1I6IE5laWwgQmF0ZQ0KIA0KK05ldHdvcmsN CisgICAgIE5BTUU6IE5ldHdvcmsgTXVzaWMgRWRpdG9yIFYxLjQNCitSRUZFUkVOQ0U6IGh0dHBz Oi8vY3NkYi5kay9yZWxlYXNlLz9pZD0yMDczMDUNCisNCiBOaW5qYVRyYWNrZXJfVjEueA0KLSAg IEFVVEhPUjogTGFzc2Ugw5bDtnJuaSAoQ2FkYXZlcikNCisgICBBVVRIT1I6IExhc3NlINb2cm5p IChDYWRhdmVyKQ0KICBSRUxFQVNFRDogMjAwMiBDb3ZlcnQgQml0b3BzDQogUkVGRVJFTkNFOiBo dHRwczovL2NzZGIuZGsvcmVsZWFzZS8/aWQ9NzIwNg0KIA0KIE5pbmphVHJhY2tlcl9WMi54DQot ICAgQVVUSE9SOiBMYXNzZSDDlsO2cm5pIChDYWRhdmVyKQ0KKyAgIEFVVEhPUjogTGFzc2Ug1vZy bmkgKENhZGF2ZXIpDQogIFJFTEVBU0VEOiAyMDA2IENvdmVydCBCaXRvcHMNCiBSRUZFUkVOQ0U6 IGh0dHBzOi8vY3NkYi5kay9yZWxlYXNlLz9pZD0zOTM3NA0KIA0KQEAgLTEwNzYsMTggKzExNDEs MTggQEAKICAgIEFVVEhPUjogU2VhbiBDb25ub2xseSAoT2RpZSkNCiANCiBPZGluVHJhY2tlcg0K LSAgIEFVVEhPUjogWm9sdMOhbiBLb255aGEgKFplZCkNCisgICBBVVRIT1I6IFpvbHThbiBLb255 aGEgKFplZCkNCiAgUkVMRUFTRUQ6IDIwMDANCiBSRUZFUkVOQ0U6IGh0dHBzOi8vY3NkYi5kay9y ZWxlYXNlLz9pZD0xMjU3Nw0KIA0KIE9leXZpbmRfSmVyZ2FuDQotICAgQVVUSE9SOiDDmHl2aW5k IEplcmdhbg0KKyAgIEFVVEhPUjog2Hl2aW5kIEplcmdhbg0KIA0KIE9leXZpbmRfSmVyZ2FuXzIN Ci0gICBBVVRIT1I6IMOYeXZpbmQgSmVyZ2FuDQorICAgQVVUSE9SOiDYeXZpbmQgSmVyZ2FuDQog DQogT21lZ2FTdXByZW1lX0RpZ2kNCi0gICBBVVRIT1I6IE9sYXYgTcO4cmtyaWQgKE9tZWdhIFN1 cHJlbWUpDQorICAgQVVUSE9SOiBPbGF2IE34cmtyaWQgKE9tZWdhIFN1cHJlbWUpDQogDQogT3p6 eV9PbGRzY2hvb2xfVjENCiAgICBBVVRIT1I6IE9zc2kgQWFybmlvIChPenp5IE9sZHNrb29sKQ0K QEAgLTEyMTgsMTUgKzEyODMsOCBAQAogUnVzc2VsbF9MaWVibGljaA0KICAgIEFVVEhPUjogUnVz c2VsbCBMaWVibGljaA0KIA0KLVJ5b19LYXdhc2FraQ0KLSAgICAgTkFNRTogS2F3YXNha2kgU3lu dGhlc2l6ZXINCi0gICBBVVRIT1I6IFJ5byBLYXdhc2FraQ0KLSBSRUxFQVNFRDogMTk4MyBTaWdo dCAmIFNvdW5kIE11c2ljIFNvZnR3YXJlDQotUkVGRVJFTkNFOiBodHRwczovL2NzZGIuZGsvcmVs ZWFzZS8/aWQ9MTI5OTIyDQotICBDT01NRU5UOiBNb3JlIGluZm86IGh0dHA6Ly93d3cucnlva2F3 YXNha2kuY29tL2M2NC8NCi0NCiBTYWRvVHJhY2tlcg0KLSAgIEFVVEhPUjogTGFzc2Ugw5bDtnJu aSAoQ2FkYXZlcikNCisgICBBVVRIT1I6IExhc3NlINb2cm5pIChDYWRhdmVyKQ0KICBSRUxFQVNF RDogMTk5OSBDb3ZlcnQgQml0b3BzDQogUkVGRVJFTkNFOiBodHRwczovL2NzZGIuZGsvcmVsZWFz ZS8/aWQ9NzI3NzMNCiANCkBAIC0xMjQ0LDEyICsxMzAyLDIzIEBACiAgUkVMRUFTRUQ6IDE5OTQg Q2hlcnVicw0KIFJFRkVSRU5DRTogaHR0cHM6Ly9jc2RiLmRrL3JlbGVhc2UvP2lkPTE1NjkyNA0K IA0KK1NlbnRpbmVsX1YwLjcNCisgICAgIE5BTUU6IFNlbnRpbmVsIE11c2ljIFBsYXllciBWMDcu RzANCisgICBBVVRIT1I6IFNlbnRpbmVsDQorIFJFTEVBU0VEOiAyMDIwIFNlbnRpbmVsDQorUkVG RVJFTkNFOiBodHRwczovL2NzZGIuZGsvcmVsZWFzZS8/aWQ9MjAyNjg0DQorDQogU2VxdWVuY2Vy DQogICAgICBOQU1FOiBTZXF1ZW5jZXINCi0gICBBVVRIT1I6IFRob21hcyBLcsOkdHppZw0KKyAg IEFVVEhPUjogVGhvbWFzIEty5HR6aWcNCiAgUkVMRUFTRUQ6IDE5ODUgNjQnZXIvTWFya3QgJiBU ZWNobmlrDQogUkVGRVJFTkNFOiBodHRwczovL2NzZGIuZGsvcmVsZWFzZS8/aWQ9MTI5ODAyDQog DQorU2lkYmFuZzY0L1dhcnA4DQorICAgQVVUSE9SOiBTZWJhc3RpYW4gQWJlbCAoV2FycDgpDQor IFJFTEVBU0VEOiAyMDIxDQorUkVGRVJFTkNFOiBodHRwczovL2NzZGIuZGsvcmVsZWFzZS8/aWQ9 MTk5MjAzDQorDQogU2lkRmFjdG9yeS9MYXhpdHkNCiAgICBBVVRIT1I6IFRob21hcyBFZ2Vza292 IFBldGVyc2VuIChMYXhpdHkpDQogIFJFTEVBU0VEOiAyMDA2DQpAQCAtMTI2OSw3ICsxMzM4LDcg QEAKIFJFRkVSRU5DRTogaHR0cDovL3d3dy5zaWR0cmFja2VyNjQuY29tDQogDQogU2lkV2luZGVy DQotICAgQVVUSE9SOiBCYWzDoXpzIFRha8OhY3MgKFRha2kpDQorICAgQVVUSE9SOiBCYWzhenMg VGFr4WNzIChUYWtpKQ0KICBSRUxFQVNFRDogMTk5OSBOYXR1cmFsIEJlYXQNCiBSRUZFUkVOQ0U6 IGh0dHBzOi8vY3NkYi5kay9yZWxlYXNlLz9pZD02NjQ5NA0KIA0KQEAgLTEzMzksNyArMTQwOCw3 IEBACiAgIENPTU1FTlQ6IE1vcmUgaW5mbzogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kv U29mdHdhcmVfQXV0b21hdGljX01vdXRoDQogDQogU29mdF9UdW5lX0NvbXBvc2VyDQotICAgQVVU SE9SOiBNZWxpaCBLw7zDp8O8a8OnYWxpaw0KKyAgIEFVVEhPUjogTWVsaWggS/zn/GvnYWxpaw0K ICBSRUxFQVNFRDogMTk4OQ0KIFJFRkVSRU5DRTogaHR0cHM6Ly9jc2RiLmRrL3JlbGVhc2UvP2lk PTEwMTc2OQ0KIA0KQEAgLTEzNjYsMTcgKzE0MzUsMTcgQEAKIFJFRkVSRU5DRTogaHR0cHM6Ly9j c2RiLmRrL3JlbGVhc2UvP2lkPTc1MzYNCiANCiBTb3VuRGVtb24NCi0gICBBVVRIT1I6IE90dG8g SsOkcnZpbmVuIChTb3VuRGVtb04pDQorICAgQVVUSE9SOiBPdHRvIErkcnZpbmVuIChTb3VuRGVt b04pDQogDQogU291bmRNb25pdG9yDQotICAgQVVUSE9SOiBDaHJpcyBIw7xsc2JlY2sNCisgICBB VVRIT1I6IENocmlzIEj8bHNiZWNrDQogIFJFTEVBU0VEOiAxOTg2IDY0J2VyL01hcmt0ICYgVGVj aG5paw0KIFJFRkVSRU5DRTogaHR0cHM6Ly9jc2RiLmRrL3JlbGVhc2UvP2lkPTU5OTI5DQogICBD T01NRU5UOiBSZWxlYXNlZCBhcyBhIHR5cGUtaW4gbGlzdGluZyBpbiB0aGUgT2N0b2JlciAxOTg2 IGlzc3VlIG9mIHRoZQ0KICAgICAgICAgICAgR2VybWFuIEMtNjQgbWFnYXppbmUgNjQnZXIuDQog DQogKEJlYXRCb3gvS2FybFhJSSkNCi0gICBBVVRIT1I6IExhcnMgUGF0cmlrIFdhbGxzdHLDtm0g KEthcmwgWElJKQ0KKyAgIEFVVEhPUjogTGFycyBQYXRyaWsgV2FsbHN0cvZtIChLYXJsIFhJSSkN CiAgUkVMRUFTRUQ6IDE5ODcgU2NpZW5jZSA0NTENCiBSRUZFUkVOQ0U6IGh0dHBzOi8vY3NkYi5k ay9yZWxlYXNlLz9pZD0xNjMwOQ0KICAgQ09NTUVOVDogVGhpcyBlZGl0b3Igd2FzIGFsc28gcmVs ZWFzZWQgYnkgVGhlIFNoYXJrcyB1bmRlciB0aGUgbmFtZQ0KQEAgLTE0MzMsMTMgKzE1MDIsMTMg QEAKIFJFRkVSRU5DRTogaHR0cHM6Ly9jc2RiLmRrL3JlbGVhc2UvP2lkPTIxODIzDQogDQogKEh1 ZWxzYmVja19EaWdpX1YxKQ0KLSAgIEFVVEhPUjogQ2hyaXMgSMO8bHNiZWNrDQorICAgQVVUSE9S OiBDaHJpcyBI/GxzYmVjaw0KIA0KIChIdWVsc2JlY2tfRGlnaV9WMikNCi0gICBBVVRIT1I6IENo cmlzIEjDvGxzYmVjaw0KKyAgIEFVVEhPUjogQ2hyaXMgSPxsc2JlY2sNCiANCiAoSmFtTWFzdGVy VjEpDQotICAgQVVUSE9SOiBDaHJpc3RvZiBNw7xobGFuIChCYW5hbmEpICYgVEFNDQorICAgQVVU SE9SOiBDaHJpc3RvZiBN/GhsYW4gKEJhbmFuYSkgJiBUQU0NCiAgUkVMRUFTRUQ6IDE5ODcNCiBS RUZFUkVOQ0U6IGh0dHBzOi8vY3NkYi5kay9yZWxlYXNlLz9pZD0xMDYwODUNCiAgIENPTU1FTlQ6 IEFsc28ga25vd24gYXMgU291bmRraW5nIHYxIGJ5IERTQSBhbmQgSmFtTW9uaXRvciBieSBURFQN CkBAIC0xNTAzLDEyICsxNTcyLDEyIEBACiAgICBBVVRIT1I6IFRlcm8gSGlscGluZW4gKFRCQikN CiANCiBUR1NfRGlnaQ0KLSAgIEFVVEhPUjogR8OhYm9yIEfDoXNww6FyIChUaGUgR2FsYWN0aWMg U3RyYW5nZXIpDQorICAgQVVUSE9SOiBH4WJvciBH4XNw4XIgKFRoZSBHYWxhY3RpYyBTdHJhbmdl cikNCiAgIENPTU1FTlQ6IFByb2JhYmx5IGRlcml2ZWQgZnJvbSBDNjRfU3BlZWNoX1N5c3RlbQ0K IA0KIFRGTVgNCiAgICAgIE5BTUU6IFRoZSBGaW5hbCBNdXNpY3N5c3RlbSBlWHRlbmRlZCAoVEZN WCkNCi0gICBBVVRIT1I6IENocmlzIEjDvGxzYmVjaw0KKyAgIEFVVEhPUjogQ2hyaXMgSPxsc2Jl Y2sNCiAgUkVMRUFTRUQ6IDE5ODgNCiANCiBURk1YL01hc3RlckNvbXBvc2VyDQpAQCAtMTYzOCw5 ICsxNzA3LDEzIEBACiAgUkVMRUFTRUQ6IDIwMDgNCiBSRUZFUkVOQ0U6IGh0dHBzOi8vY3NkYi5k ay9yZWxlYXNlLz9pZD0xMzU2MjQNCiANCi1ZaXBfTWVnYXNvdW5kDQorWWlwX01lZ2FTb3VuZA0K KyAgICAgTkFNRTogTWVnYVNvdW5kIE11c2ljIEVkaXRvcg0KICAgIEFVVEhPUjogSm9yaSBPbGtr b25lbiAoWWlwKQ0KKyBSRUxFQVNFRDogMTk4OA0KIFJFRkVSRU5DRTogaHR0cHM6Ly9jc2RiLmRr L3JlbGVhc2UvP2lkPTcyOTE3DQorICBDT01NRU5UOiBNZWdhU291bmQgd2FzIHB1Ymxpc2hlZCBp biB0aGUgRmlubmlzaCBDb21tb2RvcmUgbWFnYXppbmUgQz1MZWh0aSBpbg0KKyAgICAgICAgICAg aXNzdWUgNS8xOTg4DQogDQogWmFyZGF4L1NvdW5kS2lsbGVyDQogICAgQVVUSE9SOiBBcmktUGVr a2EgUGFsamFra2EgKFphcmRheCkgJiBTYW1pIElsbW9uZW4gKFNjYXBlZ29hdCkNCmRpZmYgLU5h dXJ3IC94c2lkcGxheTItY29kZS1yMjg4LXRydW5rL3hzaWRwbGF5L3NyYy9maWxlbmFtZXMuaCAv eHNpZHBsYXkyLWNvZGUtcjI5NC10cnVuay94c2lkcGxheS9zcmMvZmlsZW5hbWVzLmgKLS0tIC94 c2lkcGxheTItY29kZS1yMjg4LXRydW5rL3hzaWRwbGF5L3NyYy9maWxlbmFtZXMuaAkyMDExLTA4 LTIyIDIwOjM2OjQ4LjAwMDAwMDAwMCArMDIwMAorKysgL3hzaWRwbGF5Mi1jb2RlLXIyOTQtdHJ1 bmsveHNpZHBsYXkvc3JjL2ZpbGVuYW1lcy5oCTIwMjMtMDItMTkgMjE6MDI6MDcuMDAwMDAwMDAw ICswMTAwCkBAIC0yNCw3ICsyNCw3IEBACiBjb25zdCBjaGFyIEhJU1RPUllfRklMRV9OQU1FW10g PSAieHNpZHBsYXktaGlzdG9yeS50eHQiOwogCiBjb25zdCBjaGFyIEhWU0NfRE9DX0RJUl9OQU1F W10gPSAiL0RPQ1VNRU5UUyI7Ci1jb25zdCBjaGFyIFNPTkdMRU5HVEhTX0RCX0ZJTEVfTkFNRVtd ID0gIlNvbmdsZW5ndGhzLnR4dCI7Citjb25zdCBjaGFyIFNPTkdMRU5HVEhTX0RCX0ZJTEVfTkFN RVtdID0gIlNvbmdsZW5ndGhzLm1kNSI7CiAKIAogI2VuZGlmICAvKiBGSUxFTkFNRVNfSCAqLwpk aWZmIC1OYXVydyAveHNpZHBsYXkyLWNvZGUtcjI4OC10cnVuay94c2lkcGxheS9zcmMvTWFpbkRp YWxvZy5jcHAgL3hzaWRwbGF5Mi1jb2RlLXIyOTQtdHJ1bmsveHNpZHBsYXkvc3JjL01haW5EaWFs b2cuY3BwCi0tLSAveHNpZHBsYXkyLWNvZGUtcjI4OC10cnVuay94c2lkcGxheS9zcmMvTWFpbkRp YWxvZy5jcHAJMjAyMC0wNi0wMiAxNjoxMzo1OC4wMDAwMDAwMDAgKzAyMDAKKysrIC94c2lkcGxh eTItY29kZS1yMjk0LXRydW5rL3hzaWRwbGF5L3NyYy9NYWluRGlhbG9nLmNwcAkyMDIzLTAyLTI1 IDE0OjAxOjU2LjAwMDAwMDAwMCArMDEwMApAQCAtMTA1NiwxMyArMTA1NiwxNiBAQAogICAgICAg ICBpbnQgc2lkPW15U2lkRnJlcS0+aWRlbnRpZnlGcmVxKHBsYXllci0+Z2V0U2lkVHVuZSgpLT5n ZXREYXRhQnVmZmVyKCksIHBsYXllci0+Z2V0U2lkVHVuZSgpLT5nZXREYXRhTGVuZ3RoKCkpOwog ICAgICAgICAKICAgICAgICAgLy8gdGVzdCBmb3IgQTQgZnJlcS4KLSAgICAgICAgaWYgKHNpZD09 LTEpIHsKKyAgICAgICAgaWYgKHNpZDw9MCkgewogICAgICAgICAgIHRtcCs9UVN0cmluZygiXG5B NCBmcmVxLiAgOiAtLSBIeiIpOyAgIAogICAgICAgICB9IGVsc2UgeyAgIAogICAgICAgICAgICAg aW50IGZyZXE7Ci0gICAgICAgICAgICBpZiAobnRzYy5jb21wYXJlKHBsYXllci0+Z2V0RW11RW5n aW5lKCktPmdldENsb2NrRnJlcVN0cmluZygpKT09MCkgZnJlcT0oaW50KXJvdW5kKHNpZCowLjA2 MDk1OTI3OTUzNzIpOyAvLzEwMjI3MjcvMjU2LzI1Ni8yNTY7Ci0gICAgICAgICAgICBlbHNlIGZy ZXE9KGludClyb3VuZChzaWQqMC4wNTg3MjUzNTcwNTU3KTsgLy85ODUyNDgvMjU2LzI1Ni8yNTY7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIHRtcCs9UVN0cmlu ZygiXG5BNCBmcmVxLiAgOiAlMSBIeiIpLmFyZyhmcmVxKTsKKyAgICAgICAgICAgIHRtcCs9UVN0 cmluZygiXG5BNCBmcmVxLiAgOiAiKTsKKyAgICAgICAgICAgIGZvciAoaW50IGs9MDsgazxzaWQ7 IGsrKykgeworICAgICAgICAgICAgICAgaWYgKG50c2MuY29tcGFyZShwbGF5ZXItPmdldEVtdUVu Z2luZSgpLT5nZXRDbG9ja0ZyZXFTdHJpbmcoKSk9PTApIGZyZXE9KGludClyb3VuZChteVNpZEZy ZXEtPmdldFNpZEZyZXEoaykqMC4wNjA5NTkyNzk1MzcyKTsgLy8xMDIyNzI3LzI1Ni8yNTYvMjU2 OworICAgICAgICAgICAgICAgZWxzZSBmcmVxPShpbnQpcm91bmQobXlTaWRGcmVxLT5nZXRTaWRG cmVxKGspKjAuMDU4NzI1MzU3MDU1Nyk7IC8vOTg1MjQ4LzI1Ni8yNTYvMjU2OyAKKyAgICAgICAg ICAgICAgIHRtcCs9UVN0cmluZygiJTEgSHogICAiKS5hcmcoZnJlcSk7CisgICAgICAgICAgICB9 CiAgICAgICAgIH0gCiAgICAgICAgIGJyZWFrOyAKICNlbmRpZgpAQCAtMTUzOCw3ICsxNTQxLDcg QEAKICAgICBpbnQgbWludXRlcyA9IG1pbGVhZ2UvNjA7CiAgICAgbWlsZWFnZSAtPSBtaW51dGVz KjYwOwogICAgIFFTdHJpbmcgdGltZUNhdDsKLSAgICB0aW1lQ2F0LnNwcmludGYoIiVkIGRheXMs ICVkIGhvdXJzLCAlZCBtaW51dGVzIixkYXlzLGhvdXJzLG1pbnV0ZXMpOworICAgIHRpbWVDYXQu YXNwcmludGYoIiVkIGRheXMsICVkIGhvdXJzLCAlZCBtaW51dGVzIixkYXlzLGhvdXJzLG1pbnV0 ZXMpOwogICAgIHZlckNhdCArPSB0aW1lQ2F0OwogICAgIFFNZXNzYWdlQm94OjphYm91dCh0aGlz LCJBYm91dCBTSURQTEFZIix2ZXJDYXQpOwogfQpAQCAtMTk1Myw3ICsxOTU2LDcgQEAKICAgICB7 CiAgICAgICAgIC8vIEZpcnN0IGdldCB0aGUgZmlsZS1nbG9iYWwgY29tbWVudC4KICAgICAgICAg c3RpbEVudHJ5ID0gUVN0cmluZzo6ZnJvbUxhdGluMShteVNUSUwuZ2V0RW50cnkoIHNpZEZpbGVO YW1lSFZTQy50b0xhdGluMSgpLmRhdGEoKSwgMCwgU1RJTDo6Y29tbWVudCApKTsKLSAgICAgICAg aWYgKCBzdGlsSXNPa2F5ID0gIW15U1RJTC5oYXNDcml0aWNhbEVycm9yKCkgICkKKyAgICAgICAg aWYgKCAoc3RpbElzT2theSA9ICFteVNUSUwuaGFzQ3JpdGljYWxFcnJvcigpKSAgKQogICAgICAg ICB7CiAgICAgICAgICAgICAvLyBBcHBlbmQgU1RJTCBlbnRyeSBmb3IgY3VycmVudCBzdWItdHVu ZSAnc29uZycuCiAgICAgICAgICAgICBzdGlsRW50cnkgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSht eVNUSUwuZ2V0RW50cnkoIHNpZEZpbGVOYW1lSFZTQy50b0xhdGluMSgpLmRhdGEoKSwgc29uZyAp KTsKZGlmZiAtTmF1cncgL3hzaWRwbGF5Mi1jb2RlLXIyODgtdHJ1bmsveHNpZHBsYXkvc3JjL1Bs YXllci5jcHAgL3hzaWRwbGF5Mi1jb2RlLXIyOTQtdHJ1bmsveHNpZHBsYXkvc3JjL1BsYXllci5j cHAKLS0tIC94c2lkcGxheTItY29kZS1yMjg4LXRydW5rL3hzaWRwbGF5L3NyYy9QbGF5ZXIuY3Bw CTIwMjAtMDYtMDIgMTY6MTM6NTguMDAwMDAwMDAwICswMjAwCisrKyAveHNpZHBsYXkyLWNvZGUt cjI5NC10cnVuay94c2lkcGxheS9zcmMvUGxheWVyLmNwcAkyMDIzLTAyLTE5IDIxOjAyOjA3LjAw MDAwMDAwMCArMDEwMApAQCAtNzM3LDggKzczNyw5IEBACiAgCiAgIGRvdWJsZSBzTWluID0gbWlu KGZUdW5lU3BlZWRNaW4sIGN1cnJlbnQpOwogICBkb3VibGUgc01heCA9IG1heChmVHVuZVNwZWVk TWF4LCBjdXJyZW50KTsKKwogICAvLyBza2lwIHVwZGF0ZSBpZiBubyBjaGFuZ2VzIGhhcHBlbgot ICBpZiAoc01pbj09IGZUdW5lU3BlZWRNaW4gJiYgc01heD09ZlR1bmVTcGVlZE1heCkgcmV0dXJu OyAKKy8vICBpZiAoKHNNaW49PWZUdW5lU3BlZWRNaW4pICYmIChzTWF4PT1mVHVuZVNwZWVkTWF4 KSkgcmV0dXJuOyAKIAogICBmVHVuZVNwZWVkTWluID0gc01pbjsKICAgZlR1bmVTcGVlZE1heCA9 IHNNYXg7CkBAIC03NDYsMTggKzc0NywyMSBAQAogICBpZiAoZlR1bmVTcGVlZE1pbiAhPSBmVHVu ZVNwZWVkTWF4KSB7CiAgICAgICBRU3RyaW5nIHN0cj1teUluZm9TdHJpbmc7CiAgICAgICBRU3Ry aW5nIHN0cjI7Ci0gICAgICBpZiAoZlR1bmVTcGVlZE1pbjwxKSBzdHIyLnNwcmludGYoIiUuMGYt JS4xZlgiLCBmVHVuZVNwZWVkTWluLCBmVHVuZVNwZWVkTWF4KTsKLSAgICAgIGVsc2Ugc3RyMi5z cHJpbnRmKCIlLjBmLSUuMGZYIiwgZlR1bmVTcGVlZE1pbiwgZlR1bmVTcGVlZE1heCk7CisgICAg ICBpZiAoZlR1bmVTcGVlZE1pbjwxKSBzdHIyPVFTdHJpbmcoIiUxZi0lMlgiKS5hcmcoZlR1bmVT cGVlZE1pbiwgMCwgJ2YnLCAxKS5hcmcoZlR1bmVTcGVlZE1heCwgMCwgJ2YnLCAxKTsKKyAgICAg IGVsc2Ugc3RyMj1RU3RyaW5nKCIlMWYtJTJYIikuYXJnKGZUdW5lU3BlZWRNaW4sIDAsICdmJywg MCkuYXJnKGZUdW5lU3BlZWRNYXgsIDAsICdmJywgMCk7CiAgICAgICBzdHIrPXN0cjI7CiAgICAg ICBteUluZm9GaWVsZC0+c2V0VGV4dChzdHIpOwogICB9IGVsc2UgewogICAgICAgUVN0cmluZyBz dHI9bXlJbmZvU3RyaW5nOwogICAgICAgUVN0cmluZyBzdHIyOwotICAgICAgaWYgKGZUdW5lU3Bl ZWRNYXg8MSkgc3RyMi5zcHJpbnRmKCIlLjFmWCIsIGZUdW5lU3BlZWRNYXgpOwotICAgICAgZWxz ZSBzdHIyLnNwcmludGYoIiUuMGZYIiwgZlR1bmVTcGVlZE1heCk7CisgICAgICBpZiAoZlR1bmVT cGVlZE1heDwxKSBzdHIyPVFTdHJpbmcoIiUxWCIpLmFyZyhmVHVuZVNwZWVkTWF4LCAwLCAnZics IDEpOworICAgICAgZWxzZSBzdHIyPVFTdHJpbmcoIiUxWCIpLmFyZyhmVHVuZVNwZWVkTWF4LCAw LCAnZicsIDApOwogICAgICAgc3RyKz1zdHIyOwogICAgICAgbXlJbmZvRmllbGQtPnNldFRleHQo c3RyKTsKKyAgICAgIHN0ZDo6Y2VyciA8PCBzdHIudG9TdGRTdHJpbmcoKSA8PCAiXG4iOwogICAg IH0KKyAgICAKKyAgICAgIHN0ZDo6Y2VyciA8PCBzTWluIDw8ICIgIiA8PCBzTWF4IDw8ICIgIiA8 PCBjdXJyZW50ICA8PCAiXG4iOwogfQogCiB2b2lkIFBsYXllcjo6c2V0RGlzcGxheVN0cmluZyhR U3RyaW5nJiBpbmZvU3RyaW5nKQpkaWZmIC1OYXVydyAveHNpZHBsYXkyLWNvZGUtcjI4OC10cnVu ay94c2lkcGxheS9zcmMvUGxheWxpc3RFZGl0RGlhbG9nLmNwcCAveHNpZHBsYXkyLWNvZGUtcjI5 NC10cnVuay94c2lkcGxheS9zcmMvUGxheWxpc3RFZGl0RGlhbG9nLmNwcAotLS0gL3hzaWRwbGF5 Mi1jb2RlLXIyODgtdHJ1bmsveHNpZHBsYXkvc3JjL1BsYXlsaXN0RWRpdERpYWxvZy5jcHAJMjAy MC0wNS0wOSAxODoxMzozMS4wMDAwMDAwMDAgKzAyMDAKKysrIC94c2lkcGxheTItY29kZS1yMjk0 LXRydW5rL3hzaWRwbGF5L3NyYy9QbGF5bGlzdEVkaXREaWFsb2cuY3BwCTIwMjMtMDItMTkgMTQ6 MTE6NDguMDAwMDAwMDAwICswMTAwCkBAIC0xODQsNyArMTg0LDcgQEAKIHsKICAgICBpZiAoIHBs YXlsaXN0PT0wICkKICAgICAgICAgcmV0dXJuOwotICAgIGlmICggcGxheUxpc3RCb3gtPmNvdW50 KCkgJiYgcGxheUxpc3RCb3gtPmN1cnJlbnRJdGVtKCk+PTAgKQorICAgIGlmICggcGxheUxpc3RC b3gtPmNvdW50KCkgJiYgcGxheUxpc3RCb3gtPmN1cnJlbnRJdGVtKCkgIT0gTlVMTCApCiAgICAg ewogICAgICAgICBpbnQgaSA9IHBsYXlMaXN0Qm94LT5jdXJyZW50Um93KCk7CiAgICAgICAgIApA QCAtMjQ3LDcgKzI0Nyw3IEBACiB7CiAgICAgaWYgKCBwbGF5bGlzdD09MCApCiAgICAgICAgIHJl dHVybjsKLSAgICBpZiAoIHBsYXlMaXN0Qm94LT5jdXJyZW50SXRlbSgpID49IDAgKQorICAgIGlm ICggcGxheUxpc3RCb3gtPmN1cnJlbnRJdGVtKCkgIT0gTlVMTCApCiAgICAgewogICAgICAgICBQ bGF5bGlzdEl0ZW0qIHBsaSA9IChQbGF5bGlzdEl0ZW0qKSAmcGxheWxpc3QtPmxpc3QuYXQoIHBs YXlMaXN0Qm94LT5jdXJyZW50Um93KCkgKTsKICAgICAgICAgaW50IG9sZFZhbCA9IHBsaS0+c3Vi dHVuZTsKQEAgLTI2NCw3ICsyNjQsNyBAQAogewogICAgIGlmICggcGxheWxpc3Q9PTAgKQogICAg ICAgICByZXR1cm47Ci0gICAgaWYgKCBwbGF5TGlzdEJveC0+Y3VycmVudEl0ZW0oKSA+PSAwICkK KyAgICBpZiAoIHBsYXlMaXN0Qm94LT5jdXJyZW50SXRlbSgpICE9IE5VTEwgKQogICAgIHsKICAg ICAgICAgUGxheWxpc3RJdGVtKiBwbGkgPSAoUGxheWxpc3RJdGVtKikgJnBsYXlsaXN0LT5saXN0 LmF0KCBwbGF5TGlzdEJveC0+Y3VycmVudFJvdygpICk7CiAgICAgICAgIGludCBvbGRWYWwgPSBw bGktPnRpbWU7CkBAIC0yNzksNyArMjc5LDcgQEAKIC8vIHNsb3QKIHZvaWQgUGxheWxpc3RFZGl0 RGlhbG9nOjp1cGRhdGVFbnRyeUZldGNoVGltZSgpCiB7Ci0gICAgaWYgKCBwbGF5bGlzdD09MCB8 fCBwbGF5TGlzdEJveC0+Y3VycmVudEl0ZW0oKTwwICkKKyAgICBpZiAoIHBsYXlsaXN0PT0wIHx8 IHBsYXlMaXN0Qm94LT5jdXJyZW50SXRlbSgpID09IE5VTEwgKQogICAgICAgICByZXR1cm47CiAg ICAgaWYgKCAhU29uZ0xlbmd0aDo6Z2V0U3RhdHVzKCkgKQogICAgIHsKQEAgLTMxMSw3ICszMTEs NyBAQAogewogICAgIGlmICggcGxheWxpc3Q9PTAgKQogICAgICAgICByZXR1cm47Ci0gICAgaWYg KCBwbGF5TGlzdEJveC0+Y3VycmVudEl0ZW0oKSA+PSAwICkKKyAgICBpZiAoIHBsYXlMaXN0Qm94 LT5jdXJyZW50SXRlbSgpICE9IE5VTEwgKQogICAgIHsKICAgICAgICAgUGxheWxpc3RJdGVtKiBw bGkgPSAoUGxheWxpc3RJdGVtKikgJnBsYXlsaXN0LT5saXN0LmF0KCBwbGF5TGlzdEJveC0+Y3Vy cmVudFJvdygpICk7CiAgICAgICAgIGludCBvbGRWYWwgPSBwbGktPmZhZGVvdXQ7CmRpZmYgLU5h dXJ3IC94c2lkcGxheTItY29kZS1yMjg4LXRydW5rL3hzaWRwbGF5L3NyYy9zaWRmcmVxL3NpZGZy ZXEuY3BwIC94c2lkcGxheTItY29kZS1yMjk0LXRydW5rL3hzaWRwbGF5L3NyYy9zaWRmcmVxL3Np ZGZyZXEuY3BwCi0tLSAveHNpZHBsYXkyLWNvZGUtcjI4OC10cnVuay94c2lkcGxheS9zcmMvc2lk ZnJlcS9zaWRmcmVxLmNwcAkyMDIwLTA2LTIwIDEyOjAzOjI3LjAwMDAwMDAwMCArMDIwMAorKysg L3hzaWRwbGF5Mi1jb2RlLXIyOTQtdHJ1bmsveHNpZHBsYXkvc3JjL3NpZGZyZXEvc2lkZnJlcS5j cHAJMjAyMy0wMy0wMSAxODo1OToyNy4wMDAwMDAwMDAgKzAxMDAKQEAgLTIsNyArMiw3IEBACiAg KiBAKCMpc2lkZnJlcS5jcHAgMjAxNy8wNC8xNwogICoKICAqIEBhdXRob3IgU3RlZmFubyBUb2du b24gKGljZTAwKQotICogQHZlcnNpb24gMS4wMQorICogQHZlcnNpb24gMS4wMgogICoKICAqIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIFhTaWRwbGF5Mi4KICAqIFNlZSBSRUFETUUgZm9yIGNvcHlyaWdo dCBub3RpY2UuCkBAIC0zMSwxNyArMzEsMjMgQEAKICNpbmNsdWRlIDxpb3N0cmVhbT4KICNpbmNs dWRlIDxjc3RyaW5nPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPG1hdGguaD4KIAog I2RlZmluZSBUQUJMRSAoOTYtNikKICNkZWZpbmUgU0hPUlQgNzIKICNkZWZpbmUgU0hPUlQyIDY1 IAorI2RlZmluZSBTQ0FMRV9UQUJMRSA1NgogI2RlZmluZSBBNCA1NworI2RlZmluZSBPQ1RfTk9U RV9BNCAoQTQrMTYpCisjZGVmaW5lIFNDQUxFX05PVEVfQTQgMzMKKyNkZWZpbmUgT0NUX05PVEVf VEFCTEUgKDEyOC02KQorI2RlZmluZSBBTEwgOTYKIAogI2RlZmluZSBFUlJPUiA2CiAKIAogCi1j b25zdCBjaGFyICogY29uc3QgU2lkRnJlcTo6bV92ZXJzaW9uU3RyaW5nID0gIlNJREZyZXEgVjEu MDEgYnkgU3RlZmFubyBUb2dub24gKEMpIDIwMTctMjAyMCI7Citjb25zdCBjaGFyICogY29uc3Qg U2lkRnJlcTo6bV92ZXJzaW9uU3RyaW5nID0gIlNJREZyZXEgVjEuMDIgYnkgU3RlZmFubyBUb2du b24gKEMpIDIwMTctMjAyMyI7CiAKIC8qKgogICogQ29uc3RydWN0b3IKQEAgLTY5LDcgKzc1LDEw IEBACiAgIGludCBhY3R1YWw9MTsgICAKICAgIAogICAvLyBpdCBtdXN0IHN0YXJ0IHdpdGggdGhy ZWUgMQotICBpZiAoICgoaW50KWJ1ZmZlcltpbmRleCswXSE9MSkgfHwgKChpbnQpYnVmZmVyW2lu ZGV4KzFdIT0xKSB8fCAoKGludClidWZmZXJbaW5kZXgrMl0hPTEpKSByZXR1cm4gZmFsc2U7Cisg IGlmICggCisgICAgICAoICgoaW50KWJ1ZmZlcltpbmRleCswXSE9MSkgfHwgKChpbnQpYnVmZmVy W2luZGV4KzFdIT0xKSB8fCAoKGludClidWZmZXJbaW5kZXgrMl0hPTEpICkgJiYKKyAgICAgICgg KChpbnQpYnVmZmVyW2luZGV4KzBdIT0wKSB8fCAoKGludClidWZmZXJbaW5kZXgrMV0hPTEpIHx8 ICgoaW50KWJ1ZmZlcltpbmRleCsyXSE9MSkgfHwgKChpbnQpYnVmZmVyW2luZGV4KzNdIT0xKSAp CisgICAgICkgcmV0dXJuIGZhbHNlOwogICAgCiAgIC8vIHNlYXJjaCBmb3IgaW5jcmVhc2luZyBu dW1iZXJzCiAgIGZvciAoaT1pbmRleCszOyBpPGluZGV4K1RBQkxFOyBpKyspIHsKQEAgLTE1Nyw2 ICsxNjYsMjkgQEAKIH0KIAogIC8qKgorICogU2VhcmNoIGZvciB0aGUgc2NhbGUgaGlnaCBmcmVx dWVuY3kgdGFibGUgaW4gbGluZWFyIHdheQorICoKKyAqIEBwYXJhbSBidWZmZXIgdGhlIGJ1ZmZl ciB3aXRoIHRoZSB0dW5lCisgKiBAcGFyYW0gaW5kZXggdGhlIGluZGV4IHdoZXJlIHRvIHN0YXJ0 IHRoZSB0ZXN0CisgKiBAcmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgYSBoaWdoIGZyZXF1ZW5jeSB0 YWJsZSBpbiB0aGF0IHBvc2l0aW9uIAorICovIAorYm9vbCBTaWRGcmVxOjpzZWFyY2hTY2FsZUhp Z2goY29uc3QgdW5zaWduZWQgY2hhciAqYnVmZmVyLCBpbnQgaW5kZXgpIHsKKyAgaW50IGk7Cisg IGludCBhY3R1YWw9MTsgICAKKyAgIAorICAvLyBpdCBtdXN0IHN0YXJ0IHdpdGggdGhyZWUgMQor ICBpZiAoICgoaW50KWJ1ZmZlcltpbmRleCswXSE9MSkgfHwgKChpbnQpYnVmZmVyW2luZGV4KzFd IT0xKSB8fCAoKGludClidWZmZXJbaW5kZXgrMl0hPTEpKSByZXR1cm4gZmFsc2U7CisgICAKKyAg Ly8gc2VhcmNoIGZvciBpbmNyZWFzaW5nIG51bWJlcnMKKyAgZm9yIChpPWluZGV4KzM7IGk8aW5k ZXgrU0NBTEVfVEFCTEU7IGkrKykgeworICAgIGlmICgoaW50KShidWZmZXJbaV0mIDB4RkYpPGFj dHVhbCkgcmV0dXJuIGZhbHNlOworICAgIGVsc2UgYWN0dWFsPShpbnQpKGJ1ZmZlcltpXSYgMHhG Rik7CisgIH0KKyAgCisgIHJldHVybiB0cnVlOyAgIAorfSAKKworIC8qKgogICAqIFNlYXJjaCBm b3IgYSBsb3cgZnJlcXVlbmN5IHRhYmxlIGluIGxpbmVhciB3YXkKICAgKiAKICAgKiBAcGFyYW0g YnVmZmVyIHRoZSBidWZmZXIgd2l0aCB0aGUgdHVuZQpAQCAtMTczLDYgKzIwNSw5IEBACiAgIGJv b2wgZXJyR3Jvb1BzeWdvbj1mYWxzZTsKICAgYm9vbCBlcnJWaWJyYW50c0pPPWZhbHNlOwogICAg CisgIC8vIG9ubHkgYWNjZXB0IE1hc3RlcmNvbXBvc2VyIDAtZmYgaW5pdGlhbCB2YWx1ZQorICBp ZiAoKGludClidWZmZXJbaGlnaF09PTAgJiYgKGludClidWZmZXJbaW5kZXhdIT0gMHhGRikgcmV0 dXJuIGZhbHNlOworICAgCiAgIC8vIHNjYW4gYWxsIG5vdGVzCiAgIGZvciAoaT0wOyBpPDEyOyBp KyspIHsKICAgICBub3RlMT0oaW50KWJ1ZmZlcltoaWdoK2ldKjI1NisoaW50KWJ1ZmZlcltpbmRl eCtpXTsKQEAgLTE5Niw2ICsyMzEsMjUgQEAKICAgICAvLyBjYXRjaCBlcnJvciBpbnRvIFZpYnJh bnRzL0pPIG5vdGUgdGFibGUgYXQgNDE2SHogIAogICAgIGlmIChpPT0wICYmIGRpZmY9PTIxMikg Y29udGludWU7ICAgCiAgICAgCisgICAgLy8gY2F0Y2ggZXJyb3IgaW50byBNYXN0ZXIgQ29tcG9z ZXIgYXQ6CisgICAgaWYgKGk9PTApIHsKKyAgICAgICAgc3dpdGNoIChkaWZmKSB7CisgICAgICAg ICAgICBjYXNlIDE5OiAvLyA0MTVIegorICAgICAgICAgICAgY2FzZSAyNjogLy8gNDIzSHoKKyAg ICAgICAgICAgIGNhc2UgMjk6IC8vIDQyNEh6IAorICAgICAgICAgICAgY2FzZSAzMDogLy8gNDI0 SHoKKyAgICAgICAgICAgIGNhc2UgMzQ6IC8vIDQyN0h6ICAgIAorICAgICAgICAgICAgY2FzZSAz OTogLy8gNDE1SHogICAgCisgICAgICAgICAgICBjYXNlIDM1OiAvLyA0MzdIegorICAgICAgICAg ICAgY2FzZSA0NDogLy8gNDM0SHogICAgCisgICAgICAgICAgICBjYXNlIDQ4OiAvLyA0MzlIegor ICAgICAgICAgICAgY2FzZSA1MTogLy8gNDQxSHogICAKKyAgICAgICAgICAgIGNhc2UgNjQ6IC8v IDQ1MEh6ICAKKyAgICAgICAgICAgIGNhc2UgNjU6IC8vIDQ1Mkh6ICAgIAorICAgICAgICAgICAg Y29udGludWU7CisgICAgICAgIH0gICAgICAgIAorICAgfQorICAgIAogICAgIC8vIGNhdGNoIGFu IGVycm9yIG9uIE1VU0lDSUFOUy9QL1BzZXVkb0dyYWZ4L0ZvbnR0aW1lLnNpZCAoc2hvcnQgdGFi bGUgc2VlbXMgNDc2SHopCiAgICAgaWYgKGk9PTIgJiYgZGlmZj09MjUpIGNvbnRpbnVlOyAgICAK ICAgICAKQEAgLTM0NCw2ICszOTgsOSBAQAogICAgICAgaWYgKGk9PTEwICYmIGRpZmY9PTMwMikg Y29udGludWU7IAogICAgIH0gICAgICAKICAgICAKKyAgICAvLyBjYXRjaCBhbmQgYXJyb3IgaW4g TWVnYXNvdW5kCisgICAgaWYgKGk9PTMgJiYgZGlmZj09MTYpIGNvbnRpbnVlOworICAgIAogICAg IGlmIChkaWZmPkVSUk9SKSByZXR1cm4gZmFsc2U7CiAgIH0KICAgIApAQCAtMzk0LDM2ICs0NTEs MjI0IEBACiB9CiAKIC8qKgorICogU2VhcmNoIGZvciB0aGUgaGlnaCBmcmVxdWVuY3kgdGFibGUg aW4gbGluZWFyIHdheSBmb3Igb2N0YXZlL25vdGUgZm9ybWF0CisgKgorICogQHBhcmFtIGJ1ZmZl ciB0aGUgYnVmZmVyIHdpdGggdGhlIHR1bmUKKyAqIEBwYXJhbSBpbmRleCB0aGUgaW5kZXggd2hl cmUgdG8gc3RhcnQgdGhlIHRlc3QKKyAqIEByZXR1cm4gdHJ1ZSBpZiB0aGVyZSBpcyBhIGhpZ2gg ZnJlcXVlbmN5IHRhYmxlIGluIHRoYXQgcG9zaXRpb24gCisgKi8gCitib29sIFNpZEZyZXE6OnNl YXJjaE9jdE5vdGVIaWdoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgaW50IGluZGV4KSB7 CisgIGludCBvY3Q7CisgIGludCBhY3R1YWw9MTsgICAKKyAgIAorICAvLyBpdCBtdXN0IHN0YXJ0 IHdpdGggdGhyZWUgMQorICBpZiAoICgoaW50KWJ1ZmZlcltpbmRleCswXSE9MSkgfHwgKChpbnQp YnVmZmVyW2luZGV4KzFdIT0xKSB8fCAoKGludClidWZmZXJbaW5kZXgrMl0hPTEpKSByZXR1cm4g ZmFsc2U7CisgICAgCisgIGZvciAob2N0PTA7IG9jdDw4OyBvY3QrKykgeworICAgICAgaWYgKChp bnQpYnVmZmVyW2luZGV4K29jdCoxNisxMl0hPTAgfHwgCisgICAgICAgICAgKGludClidWZmZXJb aW5kZXgrb2N0KjE2KzEzXSE9MCB8fAorICAgICAgICAgIChpbnQpYnVmZmVyW2luZGV4K29jdCox NisxNF0hPTAgfHwKKyAgICAgICAgICAoaW50KWJ1ZmZlcltpbmRleCtvY3QqMTYrMTVdIT0wKSAg IHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICBpZiAoKGludCkoYnVmZmVyW2luZGV4K29j dCoxNl0pPGFjdHVhbCB8fAorICAgICAgICAgIChpbnQpKGJ1ZmZlcltpbmRleCtvY3QqMTYrMV0p PChpbnQpKGJ1ZmZlcltpbmRleCtvY3QqMTZdKSB8fCAgICAKKyAgICAgICAgICAoaW50KShidWZm ZXJbaW5kZXgrb2N0KjE2KzJdKTwoaW50KShidWZmZXJbaW5kZXgrb2N0KjE2KzFdKSB8fCAgICAg ICAgCisgICAgICAgICAgKGludCkoYnVmZmVyW2luZGV4K29jdCoxNiszXSk8KGludCkoYnVmZmVy W2luZGV4K29jdCoxNisyXSkgfHwgICAgCisgICAgICAgICAgKGludCkoYnVmZmVyW2luZGV4K29j dCoxNis0XSk8KGludCkoYnVmZmVyW2luZGV4K29jdCoxNiszXSkgfHwgICAgCisgICAgICAgICAg KGludCkoYnVmZmVyW2luZGV4K29jdCoxNis1XSk8KGludCkoYnVmZmVyW2luZGV4K29jdCoxNis0 XSkgfHwgICAgICAgIAorICAgICAgICAgIChpbnQpKGJ1ZmZlcltpbmRleCtvY3QqMTYrNl0pPChp bnQpKGJ1ZmZlcltpbmRleCtvY3QqMTYrNV0pIHx8ICAgICAgICAKKyAgICAgICAgICAoaW50KShi dWZmZXJbaW5kZXgrb2N0KjE2KzddKTwoaW50KShidWZmZXJbaW5kZXgrb2N0KjE2KzZdKSB8fCAg ICAgICAgCisgICAgICAgICAgKGludCkoYnVmZmVyW2luZGV4K29jdCoxNis4XSk8KGludCkoYnVm ZmVyW2luZGV4K29jdCoxNis3XSkgfHwgICAgICAgIAorICAgICAgICAgIChpbnQpKGJ1ZmZlcltp bmRleCtvY3QqMTYrOV0pPChpbnQpKGJ1ZmZlcltpbmRleCtvY3QqMTYrOF0pIHx8ICAgICAgICAK KyAgICAgICAgICAoaW50KShidWZmZXJbaW5kZXgrb2N0KjE2KzEwXSk8KGludCkoYnVmZmVyW2lu ZGV4K29jdCoxNis5XSkgfHwgICAgICAgIAorICAgICAgICAgIChpbnQpKGJ1ZmZlcltpbmRleCtv Y3QqMTYrMTFdKTwoaW50KShidWZmZXJbaW5kZXgrb2N0KjE2KzEwXSkpIHJldHVybiBmYWxzZTsg CisgICAgICBhY3R1YWw9KGludCkoYnVmZmVyW2luZGV4K29jdCoxNisxMV0pOworICB9CisKKyAg cmV0dXJuIHRydWU7ICAgCit9CisgIAorLyoqCisgKiBTZWFyY2ggZm9yIGEgbG93IGZyZXF1ZW5j eSB0YWJsZSBpbiBsaW5lYXIgd2F5IGZvciBvY3RhdmUvbm90ZQorICogCisgKiBAcGFyYW0gYnVm ZmVyIHRoZSBidWZmZXIgd2l0aCB0aGUgdHVuZQorICogQHBhcmFtIGhpZ2ggdGhlIHBvc2l0aW9u IG9mIGhpZ2ggdGFibGUKKyAqIEBwYXJhbSBpbmRleCB0aGUgaW5kZXggd2hlcmUgdG8gc2VhcmNo IGZvciBsb3cgdGFibGUKKyAqIEByZXR1cm4gdHJ1ZSBpZiB0aGVyZSBpcyBhIGxvdyBmcmVxdWVu Y3kgdGFibGUgaW4gdGhhdCBwb3NpdGlvbiAKKyAqLyAKK2Jvb2wgU2lkRnJlcTo6c2VhcmNoT2N0 Tm90ZUxvdyhjb25zdCB1bnNpZ25lZCBjaGFyICpidWZmZXIsIGludCBoaWdoLCBpbnQgaW5kZXgp IHsKKyAgaW50IGk7CisgIGludCBub3RlMSwgbm90ZTIsIG5vdGUzLCBub3RlNCwgbm90ZTUsIG5v dGU2LCBub3RlNzsKKyAgaW50IGRpZmY7CisgICAKKyAgLy8gc2NhbiBhbGwgbm90ZXMKKyAgZm9y IChpPTA7IGk8MTI7IGkrKykgeworICAgIG5vdGUxPShpbnQpKGJ1ZmZlcltoaWdoK2ldKSoyNTYr KGludCkoYnVmZmVyW2luZGV4K2ldKTsKKyAgICBub3RlMj0oaW50KShidWZmZXJbaGlnaCtpKzE2 XSkqMjU2KyhpbnQpKGJ1ZmZlcltpbmRleCtpKzE2XSk7CisgICAgbm90ZTM9KGludCkoYnVmZmVy W2hpZ2graSsxNioyXSkqMjU2KyhpbnQpKGJ1ZmZlcltpbmRleCtpKzE2KjJdKTsKKyAgICBub3Rl ND0oaW50KShidWZmZXJbaGlnaCtpKzE2KjNdKSoyNTYrKGludCkoYnVmZmVyW2luZGV4K2krMTYq M10pOworICAgIG5vdGU1PShpbnQpKGJ1ZmZlcltoaWdoK2krMTYqNF0pKjI1NisoaW50KShidWZm ZXJbaW5kZXgraSsxNio0XSk7CisgICAgbm90ZTY9KGludCkoYnVmZmVyW2hpZ2graSsxNio1XSkq MjU2KyhpbnQpKGJ1ZmZlcltpbmRleCtpKzE2KjVdKTsKKyAgICBub3RlNz0oaW50KShidWZmZXJb aGlnaCtpKzE2KjZdKSoyNTYrKGludCkoYnVmZmVyW2luZGV4K2krMTYqNl0pOworICAKKyAgICBk aWZmPTA7CisgICAgZGlmZis9c3RkOjphYnMobm90ZTEqMiAtIG5vdGUyKTsKKyAgICBpZiAoaTwx MSkgZGlmZis9c3RkOjphYnMobm90ZTIqMiAtIG5vdGUzKTsKKyAgICBpZiAoaTwxMSkgZGlmZis9 c3RkOjphYnMobm90ZTMqMiAtIG5vdGU0KTsKKyAgICBpZiAoaTwxMSkgZGlmZis9c3RkOjphYnMo bm90ZTQqMiAtIG5vdGU1KTsKKyAgICBpZiAoaTwxMSkgZGlmZis9c3RkOjphYnMobm90ZTUqMiAt IG5vdGU2KTsKKyAgICBpZiAoaTwxMSkgZGlmZis9c3RkOjphYnMobm90ZTYqMiAtIG5vdGU3KTsK KyAgICAgIAorICAgIGlmIChkaWZmPkVSUk9SKzMpIHJldHVybiBmYWxzZTsKKyAgfQorICAgCisg IHJldHVybiB0cnVlOworfSAgCisKKy8qKgorICogU2VhcmNoIGZvciBhIGxvdyBmcmVxdWVuY3kg c2NhbGUgdGFibGUgaW4gbGluZWFyIHdheQorICogCisgKiBAcGFyYW0gYnVmZmVyIHRoZSBidWZm ZXIgd2l0aCB0aGUgdHVuZQorICogQHBhcmFtIGhpZ2ggdGhlIHBvc2l0aW9uIG9mIGhpZ2ggdGFi bGUKKyAqIEBwYXJhbSBpbmRleCB0aGUgaW5kZXggd2hlcmUgdG8gc2VhcmNoIGZvciBsb3cgdGFi bGUKKyAqIEByZXR1cm4gdHJ1ZSBpZiB0aGVyZSBpcyBhIGxvdyBmcmVxdWVuY3kgdGFibGUgaW4g dGhhdCBwb3NpdGlvbiAKKyAqLyAKK2Jvb2wgU2lkRnJlcTo6c2VhcmNoU2NhbGVMb3coY29uc3Qg dW5zaWduZWQgY2hhciAqYnVmZmVyLCBpbnQgaGlnaCwgaW50IGluZGV4KSB7CisgIGludCBpOwor ICBpbnQgbm90ZTEsIG5vdGUyLCBub3RlMywgbm90ZTQsIG5vdGU1LCBub3RlNiwgbm90ZTc7Cisg IGludCBkaWZmOworICAgCisgIC8vIHNjYW4gYWxsIG5vdGVzCisgIGZvciAoaT0wOyBpPDg7IGkr KykgeworICAgIG5vdGUxPShpbnQpKGJ1ZmZlcltoaWdoK2ldKSoyNTYrKGludCkoYnVmZmVyW2lu ZGV4K2ldKTsKKyAgICBub3RlMj0oaW50KShidWZmZXJbaGlnaCtpKzddKSoyNTYrKGludCkoYnVm ZmVyW2luZGV4K2krN10pOworICAgIG5vdGUzPShpbnQpKGJ1ZmZlcltoaWdoK2krNyoyXSkqMjU2 KyhpbnQpKGJ1ZmZlcltpbmRleCtpKzcqMl0pOworICAgIG5vdGU0PShpbnQpKGJ1ZmZlcltoaWdo K2krNyozXSkqMjU2KyhpbnQpKGJ1ZmZlcltpbmRleCtpKzcqM10pOworICAgIG5vdGU1PShpbnQp KGJ1ZmZlcltoaWdoK2krNyo0XSkqMjU2KyhpbnQpKGJ1ZmZlcltpbmRleCtpKzcqNF0pOworICAK KyAgICBkaWZmPTA7CisgICAgZGlmZis9YWJzKG5vdGUxKjIgLSBub3RlMik7CisgICAgZGlmZis9 YWJzKG5vdGUyKjIgLSBub3RlMyk7CisgICAgZGlmZis9YWJzKG5vdGUzKjIgLSBub3RlNCk7Cisg ICAgZGlmZis9YWJzKG5vdGU0KjIgLSBub3RlNSk7CisgICAgCisgICAgaWYgKGRpZmY+RVJST1Ip IHJldHVybiBmYWxzZTsKKyAgfQorICAgCisgIHJldHVybiB0cnVlOworfSAgCisKKy8qKgorICog U2VhcmNoIGZvciB0aGUgaGlnaCBmcmVxdWVuY3kgaW52ZXJzZSB0YWJsZSBpbiBsaW5lYXIgd2F5 CisgKgorICogQHBhcmFtIGJ1ZmZlciB0aGUgYnVmZmVyIHdpdGggdGhlIHR1bmUKKyAqIEBwYXJh bSBpbmRleCB0aGUgaW5kZXggd2hlcmUgdG8gc3RhcnQgdGhlIHRlc3QKKyAqIEByZXR1cm4gdHJ1 ZSBpZiB0aGVyZSBpcyBhIGhpZ2ggZnJlcXVlbmN5IHRhYmxlIGluIHRoYXQgcG9zaXRpb24gCisg Ki8gCitib29sIFNpZEZyZXE6OnNlYXJjaEludmVyc2VIaWdoKGNvbnN0IHVuc2lnbmVkIGNoYXIg KmJ1ZmZlcixpbnQgaW5kZXgpIHsKKyAgaW50IGk7CisgIGludCBhY3R1YWw9MTsgICAKKyAgIAor ICAvLyBpdCBtdXN0IHN0YXJ0IHdpdGggdGhyZWUgMQorICBpZiAoICgoaW50KWJ1ZmZlcltpbmRl eC0wXSE9MSkgfHwgKChpbnQpYnVmZmVyW2luZGV4LTFdIT0xKSB8fCAoKGludClidWZmZXJbaW5k ZXgtMl0hPTEpKSByZXR1cm4gZmFsc2U7CisgICAKKyAgLy8gc2VhcmNoIGZvciBpbmNyZWFzaW5n IG51bWJlcnMKKyAgZm9yIChpPWluZGV4LTM7IGk+aW5kZXgtQUxMOyBpLS0pIHsKKyAgICBpZiAo KGludCkoYnVmZmVyW2ldKTxhY3R1YWwpIHJldHVybiBmYWxzZTsKKyAgICBlbHNlIGFjdHVhbD0o KGludClidWZmZXJbaV0pOworICB9CisKKyAgcmV0dXJuIHRydWU7ICAgCit9ICAgIAorICAKKy8q KgorICogU2VhcmNoIGZvciBhIGxvdyBmcmVxdWVuY3kgaW52ZXJzZSB0YWJsZSBpbiBsaW5lYXIg d2F5CisgKiAKKyAqIEBwYXJhbSBidWZmZXIgdGhlIGJ1ZmZlciB3aXRoIHRoZSB0dW5lCisgKiBA cGFyYW0gaGlnaCB0aGUgcG9zaXRpb24gb2YgaGlnaCB0YWJsZQorICogQHBhcmFtIGluZGV4IHRo ZSBpbmRleCB3aGVyZSB0byBzZWFyY2ggZm9yIGxvdyB0YWJsZQorICogQHJldHVybiB0cnVlIGlm IHRoZXJlIGlzIGEgbG93IGZyZXF1ZW5jeSB0YWJsZSBpbiB0aGF0IHBvc2l0aW9uIAorICovIAor Ym9vbCBTaWRGcmVxOjpzZWFyY2hJbnZlcnNlTG93KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZmZl cixpbnQgaGlnaCwgaW50IGluZGV4KSB7CisgIGludCBpOworICBpbnQgbm90ZTEsIG5vdGUyLCBu b3RlMywgbm90ZTQsIG5vdGU1LCBub3RlNiwgbm90ZTc7CisgIGludCBkaWZmOworICAgICAgIAor ICAvLyBzY2FuIGFsbCBub3RlcworICBmb3IgKGk9MDsgaTwxMjsgaSsrKSB7CisgICAgbm90ZTE9 KGludCkoYnVmZmVyW2hpZ2gtaV0pKjI1NisoaW50KShidWZmZXJbaW5kZXgtaV0pOworICAgIG5v dGUyPShpbnQpKGJ1ZmZlcltoaWdoLWktMTJdKSoyNTYrKGludCkoYnVmZmVyW2luZGV4LWktMTJd KTsKKyAgICBub3RlMz0oaW50KShidWZmZXJbaGlnaC1pLTEyKjJdKSoyNTYrKGludCkoYnVmZmVy W2luZGV4LWktMTIqMl0pOworICAgIG5vdGU0PShpbnQpKGJ1ZmZlcltoaWdoLWktMTIqM10pKjI1 NisoaW50KShidWZmZXJbaW5kZXgtaS0xMiozXSk7CisgICAgbm90ZTU9KGludCkoYnVmZmVyW2hp Z2gtaS0xMio0XSkqMjU2KyhpbnQpKGJ1ZmZlcltpbmRleC1pLTEyKjRdKTsKKyAgICBub3RlNj0o aW50KShidWZmZXJbaGlnaC1pLTEyKjVdKSoyNTYrKGludCkoYnVmZmVyW2luZGV4LWktMTIqNV0p OworICAgIG5vdGU3PShpbnQpKGJ1ZmZlcltoaWdoLWktMTIqNl0pKjI1NisoaW50KShidWZmZXJb aW5kZXgtaS0xMio2XSk7CisgIAorICAgIGRpZmY9MDsKKyAgICBkaWZmKz1zdGQ6OmFicyhub3Rl MSoyIC0gbm90ZTIpOworICAgIGlmIChpPDExKSBkaWZmKz1zdGQ6OmFicyhub3RlMioyIC0gbm90 ZTMpOworICAgIGlmIChpPDExKSBkaWZmKz1zdGQ6OmFicyhub3RlMyoyIC0gbm90ZTQpOworICAg IGlmIChpPDExKSBkaWZmKz1zdGQ6OmFicyhub3RlNCoyIC0gbm90ZTUpOworICAgIGlmIChpPDEx KSBkaWZmKz1zdGQ6OmFicyhub3RlNSoyIC0gbm90ZTYpOworICAgIGlmIChpPDExKSBkaWZmKz1z dGQ6OmFicyhub3RlNioyIC0gbm90ZTcpOworICAgICAgICAgICAgCisgICAgaWYgKGRpZmY+RVJS T1IpIHJldHVybiBmYWxzZTsKKyAgfQorICAgCisgIHJldHVybiB0cnVlOworfSAgCisKKy8qKgog ICogU2VhcmNoIGZvciB0YWJsZXMgaW4gbGluZWFyIHdheSAobG93IC8gaGlnaCBvciBoaWdoIC8g bG93KQogICogCi0gKiBAcGFyYW0gYnVmZmVyIHRoZSBidWZmZWQgd2l0aCB0aGUgZGF0YSB0byBp ZGVudGlmeQotICogQHBhcmFtIGxlbmd0aCBsZW5ndGggb2YgdGhlIGJ1ZmZlcgotICogQHJldHVy biB0aGUgc2lkIHZhbHVlIG9mIEE0IGZyZXF1ZW5jeSAob3IgLTEgaWYgbm90IGZvdW50KSAKKyAq IEBwYXJhbSBidWZmZXIgdGhlIGJ1ZmZlciB3aXRoIHRoZSB0dW5lCisgKiBAcGFyYW0gaGlnaCB0 aGUgcG9zaXRpb24gb2YgaGlnaCB0YWJsZQorICogQHBhcmFtIGluZGV4IHRoZSBpbmRleCB3aGVy ZSB0byBzZWFyY2ggZm9yIGxvdyB0YWJsZQorICogQHJldHVybiB0cnVlIGlmIHRoZXJlIGlzIGEg bG93IGZyZXF1ZW5jeSB0YWJsZSBpbiB0aGF0IHBvc2l0aW9uIAogICovCi1pbnQgU2lkRnJlcTo6 bGluZWFyVGFibGUoY29uc3QgdW5zaWduZWQgY2hhciAqYnVmZmVyLCBpbnQgbGVuZ3RoKSB7Ci0g IGludCBzaWQ7Citib29sIFNpZEZyZXE6OmxpbmVhclRhYmxlKGNvbnN0IHVuc2lnbmVkIGNoYXIg KmJ1ZmZlciwgaW50IHN0YXJ0LCBpbnQgZW5kKSB7CiAgIGludCBpOworICAgIGludCBzaWQ7CiAg IGludCBoaWdoPS0xOwogICBpbnQgbG93PS0xOwogICAgICAKICAgLy8gY2hlY2sgZm9yIGhpZ2gg ZnJlcXVlbmN5IHRhYmxlCi0gIGZvciAoaT0wOyBpPGxlbmd0aC1UQUJMRTsgaSsrKSB7Ci0gICAg aWYgKHNlYXJjaEhpZ2goYnVmZmVyLCBpKSkgewotICAgICAgaGlnaD1pOworICAgIGZvciAoaW50 IGlpPXN0YXJ0OyBpaTxlbmQtVEFCTEU7IGlpKyspIHsKKyAgICAgIGlmIChzZWFyY2hIaWdoKGJ1 ZmZlciwgaWkpKSB7CisgICAgICAgIGhpZ2g9aWk7CisgICAgICAgIAorICAgICAgICAvLyBjaGVj ayBmb3IgbG93IGZyZXF1ZW5jeSB0YWJsZSAoZmlyc3QgcGFydCkKKyAgICAgICAgaWYgKGhpZ2g+ VEFCTEUpIHsKKyAgICAgICAgICBmb3IgKGk9c3RhcnQ7IGk8PWhpZ2gtVEFCTEU7IGkrKykgewor ICAgICAgICAgICAgaWYgKHNlYXJjaExvdyhidWZmZXIsIGhpZ2gsIGkpKSB7CisgICAgICAgICAg ICAgIGxvdz1pOwogICAgICAgYnJlYWs7ICAgICAgICAgCiAgICAgfQogICB9CisgICAgICAgIH0g IAogCi0jaWZkZWYgREVCVUdfU0lERlJFUSAgCi0gIHN0ZDo6Y2VyciA8PCAiSD0iIDw8IGhpZ2gg PDwgIlxuIjsKLSNlbmRpZiAgCisgICAgICAgIC8vIGNoZWNrIGZvciBoaWdoIGZyZXF1ZW5jeSB0 YWJsZSAoc2Vjb25kIHBhcnQpCisgICAgICAgIGlmICgobG93PT0tMSkgJiYgKGhpZ2g8ZW5kLVRB QkxFKjIpKSB7CisgICAgICAgICAgZm9yIChpPWhpZ2grVEFCTEU7IGk8ZW5kLVRBQkxFOyBpKysp IHsKKyAgICAgICAgICAgIGlmIChzZWFyY2hMb3coYnVmZmVyLCBoaWdoLCBpKSkgeworICAgICAg ICAgICAgICBsb3c9aTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9ICAgICAg ICAgICAgICAgICAKKyAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgCi0gIC8vIGxvb2sgaWYg aGlnaCB0YWJsZSB3YXMgZm91bnQKLSAgaWYgKGhpZ2g9PS0xKSByZXR1cm4gLTE7CisgICAgICAg IGlmIChsb3chPS0xKSBicmVhazsgIC8vIGV4aXQgbG9vcCBhcyBmcmVxdWVuY3kgaXMgZm91bnQK KyAgICAgICAgCisgICAgICAgIC8vIGxvb2sgaWYgbG93IHRhYmxlIHdhcyBmb3VudCAgICAgCisg ICAgICAgIGlmIChidWZmZXJbaGlnaF09PTApIHsKKworICAgICAgICAgIC8vIFRoaXMgbG9va2Vk IGxpa2UgYSBtYXN0ZXJjb21wb3NlciwgdGhlbiBjaGVjayBpZiBuZXh0IGlzIGdvb2QgaW5zdGVh ZAorICAgICAgICAgIGlmICgrK2hpZ2g+ZW5kLVRBQkxFKSByZXR1cm4gZmFsc2U7ICAgICAgCisg ICAgICAgICAgaWYgKCFzZWFyY2hIaWdoKGJ1ZmZlciwgaGlnaCkpIHJldHVybiBmYWxzZTsKICAg ICAgCiAgIC8vIGNoZWNrIGZvciBsb3cgZnJlcXVlbmN5IHRhYmxlIChmaXJzdCBwYXJ0KQogICBp ZiAoaGlnaD5UQUJMRSkgewotICAgIGZvciAoaT0wOyBpPD1oaWdoLVRBQkxFOyBpKyspIHsKKyAg ICAgICAgICAgIGZvciAoaT1zdGFydDsgaTw9aGlnaC1UQUJMRTsgaSsrKSB7CiAgICAgICBpZiAo c2VhcmNoTG93KGJ1ZmZlciwgaGlnaCwgaSkpIHsKICAgICAgICAgbG93PWk7CiAgICAgICAgIGJy ZWFrOwpAQCAtNDMyLDMwICs2NzcsMzQgQEAKICAgfQogICAgICAKICAvLyBjaGVjayBmb3IgaGln aCBmcmVxdWVuY3kgdGFibGUgKHNlY29uZCBwYXJ0KQotIGlmICgobG93PT0tMSkgJiYgKGhpZ2g8 bGVuZ3RoLVRBQkxFKjIpKSB7Ci0gICBmb3IgKGk9aGlnaCtUQUJMRTsgaTxsZW5ndGgtVEFCTEU7 IGkrKykgeworICAgICAgICAgIGlmICgobG93PT0tMSkgJiYgKGhpZ2g8ZW5kLVRBQkxFKjIpKSB7 CisgICAgICAgICAgICBmb3IgKGk9aGlnaCtUQUJMRTsgaTxlbmQtVEFCTEU7IGkrKykgewogICAg ICBpZiAoc2VhcmNoTG93KGJ1ZmZlciwgaGlnaCwgaSkpIHsKICAgICAgICBsb3c9aTsKICAgICAg ICBicmVhazsKICAgICAgfSAgICAgICAgICAgICAgICAgCiAgICB9CiAgfQorICAgICAgICB9ICAg ICAgICAgCisgICAgICAgIGlmIChsb3chPS0xKSBicmVhazsgICAgICAgICAgIAorICAgICAgfQor ICAgIH0gIAogIAotI2lmZGVmIERFQlVHX1NJREZSRVEgICAKLSBzdGQ6OmNlcnIgPDwgIkw9IiA8 PCBsb3cgPDwgIlxuIjsKLSNlbmRpZiAKLSAgICAgIAotIC8vIGxvb2sgaWYgbG93IHRhYmxlIHdh cyBmb3VudAotIGlmIChsb3c9PS0xKSByZXR1cm4gLTE7CisgICAgLy8gbG9vayBpZiBoaWdoIGFu ZCBsb3cgdGFibGUgd2FzIGZvdW50CisgICAgaWYgKGhpZ2g9PS0xIHx8IGxvdz09LTEpIHJldHVy biBmYWxzZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgCiAgLy8gZ2V0IHRoZSBB NCBub3RlCi0gc2lkPShpbnQpYnVmZmVyW2hpZ2grQTRdKjI1NisoaW50KWJ1ZmZlcltsb3crQTRd OyAKKyAgICBzaWQ9KGJ1ZmZlcltoaWdoK0E0XSkqMjU2KyhidWZmZXJbbG93K0E0XSk7ICAKKwor ICAgIC8vIG1vZGlmeSBzdGFydCBmb3IgYW5vdGhlciBhbmFsaXN5cworICAgIGN1clN0YXJ0PXN0 ZDo6bWluKHN0ZDo6bWF4KGhpZ2gsIGxvdykrVEFCTEUsIGVuZC1UQUJMRSk7CisgICAgbGlzdC5w dXNoX2JhY2soc2lkKTsgCiAKICNpZmRlZiBERUJVR19TSURGUkVRICAgCiAgc3RkOjpjZXJyIDw8 ICJTPSIgPDwgc2lkIDw8ICJcbiI7CiAjZW5kaWYgCiAgCi0gcmV0dXJuIHNpZDsgICAgCisgICAg cmV0dXJuIHRydWU7ICAgICAgCiB9ICAgCiAKIApAQCAtNDYzLDE3ICs3MTIsMTggQEAKICAqIFNl YXJjaCBmb3Igc2hvcnQgdGFibGVzIGluIGxpbmVhciB3YXkgKGxvdyAvIGhpZ2ggb3IgaGlnaCAv IGxvdykKICAqIAogICogQHBhcmFtIGJ1ZmZlciB0aGUgYnVmZmVkIHdpdGggdGhlIGRhdGEgdG8g aWRlbnRpZnkKLSAqIEBwYXJhbSBsZW5ndGggbGVuZ3RoIG9mIHRoZSBidWZmZXIKLSAqIEByZXR1 cm4gdGhlIHNpZCB2YWx1ZSBvZiBBNCBmcmVxdWVuY3kgKG9yIC0xIGlmIG5vdCBmb3VudCkgCisg KiBAcGFyYW0gc3RhcnQgc3RhcnQgcG9zaXRpb24gaW4gYnVmZmVyCisgKiBAcGFyYW0gZW5kIGVu ZCBwb3NpdGlvbiBpbiBidWZmZXIKKyAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgdGFibGUgaXMgZm91 bnQKICAqLwotaW50IFNpZEZyZXE6OnNob3J0TGluZWFyVGFibGUoY29uc3QgdW5zaWduZWQgY2hh ciAqYnVmZmVyLCBpbnQgbGVuZ3RoKSB7Citib29sIFNpZEZyZXE6OnNob3J0TGluZWFyVGFibGUo Y29uc3QgdW5zaWduZWQgY2hhciAqYnVmZmVyLCBpbnQgc3RhcnQsIGludCBlbmQpIHsKICAgaW50 IHNpZDsKICAgaW50IGk7CiAgIGludCBoaWdoPS0xOwogICBpbnQgbG93PS0xOwogICAgICAKICAg Ly8gY2hlY2sgZm9yIGhpZ2ggZnJlcXVlbmN5IHRhYmxlCi0gIGZvciAoaT0wOyBpPGxlbmd0aC1T SE9SVDsgaSsrKSB7CisgIGZvciAoaT1zdGFydDsgaTxlbmQtU0hPUlQ7IGkrKykgewogICAgIGlm IChzZWFyY2hTaG9ydEhpZ2goYnVmZmVyLCBpKSkgewogICAgICAgaGlnaD1pOwogICAgICAgYnJl YWs7ICAgICAgICAgCkBAIC00ODUsMTEgKzczNSwxMSBAQAogI2VuZGlmICAKICAgICAgCiAgIC8v IGxvb2sgaWYgaGlnaCB0YWJsZSB3YXMgZm91bnQKLSAgaWYgKGhpZ2g9PS0xKSByZXR1cm4gLTE7 CisgIGlmIChoaWdoPT0tMSkgcmV0dXJuIGZhbHNlOwogICAgICAKICAgLy8gY2hlY2sgZm9yIGxv dyBmcmVxdWVuY3kgdGFibGUgKGZpcnN0IHBhcnQpCiAgIGlmIChoaWdoPlNIT1JUKSB7Ci0gICAg Zm9yIChpPTA7IGk8PWhpZ2gtU0hPUlQ7IGkrKykgeworICAgIGZvciAoaT1zdGFydDsgaTw9aGln aC1TSE9SVDsgaSsrKSB7CiAgICAgICBpZiAoc2VhcmNoU2hvcnRMb3coYnVmZmVyLCBoaWdoLCBp KSkgewogICAgICAgICBsb3c9aTsKICAgICAgICAgYnJlYWs7CkBAIC00OTgsOCArNzQ4LDggQEAK ICAgfQogICAgICAKICAvLyBjaGVjayBmb3IgaGlnaCBmcmVxdWVuY3kgdGFibGUgKHNlY29uZCBw YXJ0KQotIGlmICgobG93PT0tMSkgJiYgKGhpZ2g8bGVuZ3RoLVNIT1JUKjIpKSB7Ci0gICBmb3Ig KGk9aGlnaCtTSE9SVDsgaTxsZW5ndGgtU0hPUlQ7IGkrKykgeworICBpZiAoKGxvdz09LTEpICYm IChoaWdoPGVuZC1TSE9SVCoyKSkgeworICAgIGZvciAoaT1oaWdoK1NIT1JUOyBpPGVuZC1TSE9S VDsgaSsrKSB7CiAgICAgIGlmIChzZWFyY2hTaG9ydExvdyhidWZmZXIsIGhpZ2gsIGkpKSB7CiAg ICAgICAgbG93PWk7CiAgICAgICAgYnJlYWs7CkBAIC01MTIsMTEgKzc2MiwxNSBAQAogI2VuZGlm IAogICAgICAgCiAgLy8gbG9vayBpZiBsb3cgdGFibGUgd2FzIGZvdW50Ci0gaWYgKGxvdz09LTEp IHJldHVybiAtMTsKKyAgaWYgKGxvdz09LTEpIHJldHVybiBmYWxzZTsKICAgICAgCiAgLy8gZ2V0 IHRoZSBBNCBub3RlCiAgc2lkPShpbnQpYnVmZmVyW2hpZ2grQTRdKjI1NisoaW50KWJ1ZmZlclts b3crQTRdOyAKICAKKyAgLy8gbW9kaWZ5IHN0YXJ0IGZvciBhbm90aGVyIGFuYWxpc3lzCisgIGN1 clN0YXJ0PXN0ZDo6bWluKHN0ZDo6bWF4KGhpZ2gsIGxvdykrVEFCTEUsIGVuZC1UQUJMRSk7Cisg IGxpc3QucHVzaF9iYWNrKHNpZCk7IAorIAogI2lmZGVmIERFQlVHX1NJREZSRVEgICAKICBzdGQ6 OmNlcnIgPDwgIlM9IiA8PCBzaWQgPDwgIlxuIjsKICNlbmRpZiAKQEAgLTUyOSwxNyArNzgzLDE4 IEBACiAgKiBTZWFyY2ggZm9yIHRhYmxlcyBpbiBjb21iaW5lZCB3YXkgKGxvdyArIGhpZ2ggb3Ig aGlnaCArIGxvdykKICAqIAogICogQHBhcmFtIGJ1ZmZlciB0aGUgYnVmZmVkIHdpdGggdGhlIGRh dGEgdG8gaWRlbnRpZnkKKyAqIAogICogQHBhcmFtIGxlbmd0aCBsZW5ndGggb2YgdGhlIGJ1ZmZl cgogICogQHJldHVybiB0aGUgc2lkIHZhbHVlIG9mIEE0IGZyZXF1ZW5jeSAob3IgLTEgaWYgbm90 IGZvdW50KSAKICAqLwotaW50IFNpZEZyZXE6OmNvbWJpbmVkVGFibGUoY29uc3QgdW5zaWduZWQg Y2hhciAqYnVmZmVyLCBpbnQgbGVuZ3RoKSB7Citib29sIFNpZEZyZXE6OmNvbWJpbmVkVGFibGUo Y29uc3QgdW5zaWduZWQgY2hhciAqYnVmZmVyLCBpbnQgc3RhcnQsIGludCBlbmQpIHsKICAgaW50 IHNpZDsKICAgaW50IGk7CiAgIGludCBoaWdoPS0xOwogICBpbnQgbG93PS0xOwogICAgICAKICAg Ly8gY2hlY2sgZm9yIGhpZ2ggZnJlcXVlbmN5IHRhYmxlCi0gIGZvciAoaT0wOyBpPGxlbmd0aC1U QUJMRSoyOyBpKyspIHsKKyAgZm9yIChpPXN0YXJ0OyBpPGVuZC1UQUJMRSoyOyBpKyspIHsKICAg ICBpZiAoc2VhcmNoSGlnaDIoYnVmZmVyLCBpKSkgewogICAgICAgaGlnaD1pOwogICAgICAgYnJl YWs7ICAgICAgICAgCkBAIC01NTEsMTAgKzgwNiwxMCBAQAogI2VuZGlmICAKICAgICAgCiAgIC8v IGxvb2sgaWYgaGlnaCB0YWJsZSB3YXMgZm91bnQKLSAgaWYgKGhpZ2g9PS0xKSByZXR1cm4gLTE7 ICAKKyAgaWYgKGhpZ2g9PS0xKSByZXR1cm4gZmFsc2U7ICAKICAgCiAgIC8vIGNoZWNrIGZvciBs b3cgZnJlcXVlbmN5IHRhYmxlCi0gIGZvciAoaT0wOyBpPGxlbmd0aC1UQUJMRSoyOyBpKyspIHsK KyAgZm9yIChpPXN0YXJ0OyBpPGVuZC1UQUJMRSoyOyBpKyspIHsKICAgICBpZiAoaSE9aGlnaCkg ewogICAgICAgaWYgKHNlYXJjaExvdzIoYnVmZmVyLCBoaWdoLCBpKSkgewogICAgICAgICBsb3c9 aTsKQEAgLTU2OCwzMyArODIzLDM4IEBACiAjZW5kaWYgIAogICAKICAgLy8gbG9vayBpZiBsb3cg dGFibGUgd2FzIGZvdW50Ci0gIGlmIChsb3c9PS0xKSByZXR1cm4gLTE7ICAKKyAgaWYgKGxvdz09 LTEpIHJldHVybiBmYWxzZTsgIAogICAKICAgLy8gZ2V0IHRoZSBBNCBub3RlCiAgIHNpZD0oaW50 KWJ1ZmZlcltoaWdoK0E0KjJdKjI1NisoaW50KWJ1ZmZlcltsb3crQTQqMl07IAogICAKKyAgLy8g bW9kaWZ5IHN0YXJ0IGZvciBhbm90aGVyIGFuYWxpc3lzCisgIGN1clN0YXJ0PXN0ZDo6bWluKHN0 ZDo6bWF4KGhpZ2gsIGxvdykrVEFCTEUsIGVuZC1UQUJMRSk7CisgIGxpc3QucHVzaF9iYWNrKHNp ZCk7IAorICAKICNpZmRlZiBERUJVR19TSURGUkVRICAgIAogICBzdGQ6OmNlcnIgPDwgIlM9IiA8 PCBzaWQgPDwgIlxuIjsKICNlbmRpZiAgCiAKLSAgcmV0dXJuIHNpZDsgIAorICByZXR1cm4gdHJ1 ZTsgIAogfQogCiAvKioKICAqIFNlYXJjaCBmb3Igc2hvcnQgdGFibGVzIGluIGNvbWJpbmVkIHdh eSAobG93ICsgaGlnaCBvciBoaWdoICsgbG93KQogICogCiAgKiBAcGFyYW0gYnVmZmVyIHRoZSBi dWZmZWQgd2l0aCB0aGUgZGF0YSB0byBpZGVudGlmeQotICogQHBhcmFtIGxlbmd0aCBsZW5ndGgg b2YgdGhlIGJ1ZmZlcgotICogQHJldHVybiB0aGUgc2lkIHZhbHVlIG9mIEE0IGZyZXF1ZW5jeSAo b3IgLTEgaWYgbm90IGZvdW50KSAKKyAqIEBwYXJhbSBzdGFydCBzdGFydCBwb3NpdGlvbiBpbiBi dWZmZXIKKyAqIEBwYXJhbSBlbmQgZW5kIHBvc2l0aW9uIGluIGJ1ZmZlcgorICogQHJldHVybiB0 cnVlIGlmIHRoZSB0YWJsZSBpcyBmb3VudAogICovCi1pbnQgU2lkRnJlcTo6c2hvcnRDb21iaW5l ZFRhYmxlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgaW50IGxlbmd0aCkgeworYm9vbCBT aWRGcmVxOjpzaG9ydENvbWJpbmVkVGFibGUoY29uc3QgdW5zaWduZWQgY2hhciAqYnVmZmVyLCAg aW50IHN0YXJ0LCBpbnQgZW5kKSB7CiAgIGludCBzaWQ7CiAgIGludCBpOwogICBpbnQgaGlnaD0t MTsKICAgaW50IGxvdz0tMTsKICAgICAgCiAgIC8vIGNoZWNrIGZvciBoaWdoIGZyZXF1ZW5jeSB0 YWJsZQotICBmb3IgKGk9MDsgaTxsZW5ndGgtU0hPUlQyKjI7IGkrKykgeworICBmb3IgKGk9c3Rh cnQ7IGk8ZW5kLVNIT1JUMioyOyBpKyspIHsKICAgICBpZiAoc2VhcmNoU2hvcnRIaWdoMihidWZm ZXIsIGkpKSB7CiAgICAgICBoaWdoPWk7CiAgICAgICBicmVhazsgICAgICAgICAKQEAgLTYwNiwx MCArODY2LDEwIEBACiAjZW5kaWYgIAogICAgICAKICAgLy8gbG9vayBpZiBoaWdoIHRhYmxlIHdh cyBmb3VudAotICBpZiAoaGlnaD09LTEpIHJldHVybiAtMTsgIAorICBpZiAoaGlnaD09LTEpIHJl dHVybiBmYWxzZTsgIAogICAKICAgLy8gY2hlY2sgZm9yIGxvdyBmcmVxdWVuY3kgdGFibGUKLSAg Zm9yIChpPTA7IGk8bGVuZ3RoLVNIT1JUMioyOyBpKyspIHsKKyAgZm9yIChpPXN0YXJ0OyBpPGVu ZC1TSE9SVDIqMjsgaSsrKSB7CiAgICAgaWYgKGkhPWhpZ2gpIHsKICAgICAgIGlmIChzZWFyY2hT aG9ydExvdzIoYnVmZmVyLCBoaWdoLCBpKSkgewogICAgICAgICBsb3c9aTsKQEAgLTYyMywxNiAr ODgzLDQxMyBAQAogI2VuZGlmICAKICAgCiAgIC8vIGxvb2sgaWYgbG93IHRhYmxlIHdhcyBmb3Vu dAotICBpZiAobG93PT0tMSkgcmV0dXJuIC0xOyAgCisgIGlmIChsb3c9PS0xKSByZXR1cm4gZmFs c2U7ICAKICAgCiAgIC8vIGdldCB0aGUgQTQgbm90ZQogICBzaWQ9KGludClidWZmZXJbaGlnaCtB NCoyXSoyNTYrKGludClidWZmZXJbbG93K0E0KjJdOyAKICAgCisgIC8vIG1vZGlmeSBzdGFydCBm b3IgYW5vdGhlciBhbmFsaXN5cworICBjdXJTdGFydD1zdGQ6Om1pbihzdGQ6Om1heChoaWdoLCBs b3cpK1RBQkxFLCBlbmQtVEFCTEUpOworICBsaXN0LnB1c2hfYmFjayhzaWQpOyAKKyAgCiAjaWZk ZWYgREVCVUdfU0lERlJFUSAgICAKICAgc3RkOjpjZXJyIDw8ICJTPSIgPDwgc2lkIDw8ICJcbiI7 CiAjZW5kaWYgIAogCi0gIHJldHVybiBzaWQ7ICAKKyAgcmV0dXJuIHRydWU7ICAKK30KKworLyoq CisgKiBTZWFyY2ggZm9yIHRhYmxlcyBpbiBsaW5lYXIgd2F5IChsb3cgLyBoaWdoIG9yIGhpZ2gg LyBsb3cpIHRoYXQgaGFzCisgKiBzY2FsZSBmb3JtYXQgKG9ubHkgQ0RFRkdBQikKKyAqICAKKyAq IEBwYXJhbSBidWZmZXIgdGhlIGJ1ZmZlZCB3aXRoIHRoZSBkYXRhIHRvIGlkZW50aWZ5CisgKiBA cGFyYW0gc3RhcnQgc3RhcnQgcG9zaXRpb24gaW4gYnVmZmVyCisgKiBAcGFyYW0gZW5kIGVuZCBw b3NpdGlvbiBpbiBidWZmZXIKKyAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgdGFibGUgaXMgZm91bnQK KyAqLworYm9vbCBTaWRGcmVxOjpsaW5lYXJTY2FsZVRhYmxlKGNvbnN0IHVuc2lnbmVkIGNoYXIg KmJ1ZmZlciwgaW50IHN0YXJ0LCBpbnQgZW5kKSB7CisgIGludCBpOyAgCisgIGludCBzaWQ7Cisg IGludCBoaWdoPS0xOworICBpbnQgbG93PS0xOyAgIAorICAgIAorICAvLyBjaGVjayBmb3IgaGln aCBmcmVxdWVuY3kgdGFibGUKKyAgZm9yIChpPXN0YXJ0OyBpPGVuZC1TQ0FMRV9UQUJMRTsgaSsr KSB7CisgICAgaWYgKHNlYXJjaFNjYWxlSGlnaChidWZmZXIsIGkpKSB7CisgICAgICBoaWdoPWk7 CisgICAgICBicmVhazsgICAgICAgICAKKyAgICB9CisgIH0gIAorICAgIAorICAvLyBsb29rIGlm IGhpZ2ggdGFibGUgd2FzIGZvdW50CisgIGlmIChoaWdoPT0tMSkgcmV0dXJuIGZhbHNlOyAgICAg IAorICAgIAorICAvLyBjaGVjayBmb3IgbG93IGZyZXF1ZW5jeSB0YWJsZSAoZmlyc3QgcGFydCkK KyAgaWYgKGhpZ2g+U0NBTEVfVEFCTEUpIHsKKyAgICBmb3IgKGk9c3RhcnQ7IGk8PWhpZ2gtU0NB TEVfVEFCTEU7IGkrKykgeworICAgICAgaWYgKHNlYXJjaFNjYWxlTG93KGJ1ZmZlciwgaGlnaCwg aSkpIHsKKyAgICAgICAgbG93PWk7CisgICAgICAgIGJyZWFrOworICAgICAgfSAgICAgICAgICAg CisgICAgfQorICB9CisgICAgCisgIC8vIGNoZWNrIGZvciBoaWdoIGZyZXF1ZW5jeSB0YWJsZSAo c2Vjb25kIHBhcnQpCisgIGlmICgobG93PT0tMSkgJiYgKGhpZ2g8ZW5kLVNDQUxFX1RBQkxFKjIp KSB7CisgICAgZm9yIChpPWhpZ2grU0NBTEVfVEFCTEU7IGk8ZW5kLVNDQUxFX1RBQkxFOyBpKysp IHsKKyAgICAgIGlmIChzZWFyY2hTY2FsZUxvdyhidWZmZXIsIGhpZ2gsIGkpKSB7CisgICAgICAg IGxvdz1pOworICAgICAgICBicmVhazsKKyAgICAgIH0gICAgICAgICAgICAgICAgIAorICAgIH0K KyAgfQorICAgIAorICAvLyBsb29rIGlmIGxvdyB0YWJsZSB3YXMgZm91bnQKKyAgaWYgKGxvdz09 LTEpIHJldHVybiBmYWxzZTsKKyAgCisgIC8vIGdldCB0aGUgQTQgbm90ZQorICBzaWQ9KGJ1ZmZl cltoaWdoK1NDQUxFX05PVEVfQTRdKSoyNTYrKGJ1ZmZlcltsb3crU0NBTEVfTk9URV9BNF0pOyAg CisKKyAgLy8gbW9kaWZ5IHN0YXJ0IGZvciBhbm90aGVyIGFuYWxpc3lzCisgIGN1clN0YXJ0PXN0 ZDo6bWluKHN0ZDo6bWF4KGhpZ2gsIGxvdykrVEFCTEUsIGVuZC1UQUJMRSk7CisgIGxpc3QucHVz aF9iYWNrKHNpZCk7IAorICAKKyAgcmV0dXJuIHRydWU7ICAgIAorfQorCisvKioKKyAqIExvb2tz IGZvciBhbiBoaWdoIG9jdGF2ZSB0YWJsZQorICogCisgKiBAcGFyYW0gYnVmZmVyIHRoZSBidWZm ZWQgd2l0aCB0aGUgZGF0YSB0byBpZGVudGlmeQorICogQHBhcmFtIHN0YXJ0IHN0YXJ0IHBvc2l0 aW9uIGluIGJ1ZmZlcgorICogQHBhcmFtIGVuZCBlbmQgcG9zaXRpb24gaW4gYnVmZmVyCisgKiBA cmV0dXJuIHRydWUgaWYgaXQgaXMgZmluZAorICovCitib29sIFNpZEZyZXE6OmhpZ2hPY3RhdmUx Mihjb25zdCB1bnNpZ25lZCBjaGFyICpidWZmZXIsIGludCBzdGFydCwgaW50IGVuZCkgeworICBp bnQgc2lkOworICBkb3VibGUgU1RFUD1zdGQ6OnBvdygyLCAxLzEyKTsKKyAgaW50IGZyZXFbXT17 MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH07CisgICAgICAKKyAgZm9yIChpbnQg aT1zdGFydDsgaTxlbmQtMTIqMjsgaSsrKSB7CisgICAgZnJlcVswXT0oaW50KShidWZmZXJbaV0p KyhpbnQpKGJ1ZmZlcltpKzEyXSkqMjU2OyAKKyAgICBpZiAoZnJlcVswXT09MCkgY29udGludWU7 CisgICAgZnJlcVsxXT0oaW50KShidWZmZXJbaSsxXSkrKGludCkoYnVmZmVyW2krMTNdKSoyNTY7 CisgICAgaWYgKGZyZXFbMV09PTAgfHwgZnJlcVsxXTw9ZnJlcVswXSB8fCBzdGQ6OmFicyhmcmVx WzFdL2ZyZXFbMF0tU1RFUCk+MC4wMDAwMSkgY29udGludWU7ICAgICAgICAKKyAgICBmcmVxWzJd PShpbnQpKGJ1ZmZlcltpKzJdKSsoaW50KShidWZmZXJbaSsxNF0pKjI1NjsKKyAgICBpZiAoZnJl cVsyXT09MCB8fCBmcmVxWzJdPD1mcmVxWzFdIHx8IHN0ZDo6YWJzKGZyZXFbMl0vZnJlcVsxXS1T VEVQKT4wLjAwMDAxKSBjb250aW51ZTsKKyAgICBmcmVxWzNdPShpbnQpKGJ1ZmZlcltpKzNdKSso aW50KShidWZmZXJbaSsxNV0pKjI1NjsKKyAgICBpZiAoZnJlcVszXT09MCB8fCBmcmVxWzNdPD1m cmVxWzJdIHx8IHN0ZDo6YWJzKGZyZXFbM10vZnJlcVsyXS1TVEVQKT4wLjAwMDAxKSBjb250aW51 ZTsKKyAgICBmcmVxWzRdPShpbnQpKGJ1ZmZlcltpKzRdKSsoaW50KShidWZmZXJbaSsxNl0pKjI1 NjsKKyAgICBpZiAoZnJlcVs0XT09MCB8fCBmcmVxWzRdPD1mcmVxWzNdIHx8IHN0ZDo6YWJzKGZy ZXFbNF0vZnJlcVszXS1TVEVQKT4wLjAwMDAxKSBjb250aW51ZTsKKyAgICBmcmVxWzVdPShpbnQp KGJ1ZmZlcltpKzVdKSsoaW50KShidWZmZXJbaSsxN10pKjI1NjsgICAgICAgIAorICAgIGlmIChm cmVxWzVdPT0wIHx8IGZyZXFbNV08PWZyZXFbNF0gfHwgc3RkOjphYnMoZnJlcVs1XS9mcmVxWzRd LVNURVApPjAuMDAwMDEpIGNvbnRpbnVlOworICAgIGZyZXFbNl09KGludCkoYnVmZmVyW2krNl0p KyhpbnQpKGJ1ZmZlcltpKzE4XSkqMjU2OworICAgIGlmIChmcmVxWzZdPT0wIHx8IGZyZXFbNl08 PWZyZXFbNV0gfHwgc3RkOjphYnMoZnJlcVs2XS9mcmVxWzVdLVNURVApPjAuMDAwMDEpIGNvbnRp bnVlOworICAgIGZyZXFbN109KGludCkoYnVmZmVyW2krN10pKyhpbnQpKGJ1ZmZlcltpKzE5XSkq MjU2OworICAgIGlmIChmcmVxWzddPT0wIHx8IGZyZXFbN108PWZyZXFbNl0gfHwgc3RkOjphYnMo ZnJlcVs3XS9mcmVxWzZdLVNURVApPjAuMDAwMDEpIGNvbnRpbnVlOworICAgIGZyZXFbOF09KGlu dCkoYnVmZmVyW2krOF0pKyhpbnQpKGJ1ZmZlcltpKzIwXSkqMjU2OworICAgIGlmIChmcmVxWzhd PT0wIHx8IGZyZXFbOF08PWZyZXFbN10gfHwgc3RkOjphYnMoZnJlcVs4XS9mcmVxWzddLVNURVAp PjAuMDAwMDEpIGNvbnRpbnVlOworICAgIGZyZXFbOV09KGludCkoYnVmZmVyW2krOV0pKyhpbnQp KGJ1ZmZlcltpKzIxXSkqMjU2OworICAgIGlmIChmcmVxWzldPT0wIHx8IGZyZXFbOV08PWZyZXFb OF0gfHwgc3RkOjphYnMoZnJlcVs5XS9mcmVxWzhdLVNURVApPjAuMDAwMDEpIGNvbnRpbnVlOwor ICAgIGZyZXFbMTBdPShpbnQpKGJ1ZmZlcltpKzEwXSkrKGludCkoYnVmZmVyW2krMjJdKSoyNTY7 CisgICAgaWYgKGZyZXFbMTBdPT0wIHx8IGZyZXFbMTBdPD1mcmVxWzldIHx8IHN0ZDo6YWJzKGZy ZXFbMTBdL2ZyZXFbOV0tU1RFUCk+MC4wMDAwMSkgY29udGludWU7CisgICAgZnJlcVsxMV09KGlu dCkoYnVmZmVyW2krMTFdKSsoaW50KShidWZmZXJbaSsyM10pKjI1NjsKKyAgICBpZiAoZnJlcVsx MV09PTAgfHwgZnJlcVsxMV08PWZyZXFbMTBdIHx8IHN0ZDo6YWJzKGZyZXFbMTFdL2ZyZXFbMTBd LVNURVApPjAuMDAwMDEpIGNvbnRpbnVlOworICAgICAgICAKKyAgICBpZiAoZnJlcVsxMV08NjIw MDApIGNvbnRpbnVlOworICAgIAorICAgIC8vIGdldCB0aGUgQTQgbm90ZQorICAgIHNpZD0oZnJl cVs5XS84KTsgIAorCisgICAgLy8gbW9kaWZ5IHN0YXJ0IGZvciBhbm90aGVyIGFuYWxpc3lzCisg ICAgY3VyU3RhcnQ9c3RkOjptaW4oaSsxMioyLCBlbmQtMTIqMik7CisgICAgbGlzdC5wdXNoX2Jh Y2soc2lkKTsgCisKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfSAgICAKKyAgICAKKyAgcmV0dXJuIGZh bHNlOyAgICAgIAorfSAgICAKKworLyoqCisgKiBMb29rcyBmb3IgYW4gaGlnaCBvY3RhdmUgdGFi bGUKKyAqIAorICogQHBhcmFtIGJ1ZmZlciB0aGUgYnVmZmVkIHdpdGggdGhlIGRhdGEgdG8gaWRl bnRpZnkKKyAqIEBwYXJhbSBzdGFydCBzdGFydCBwb3NpdGlvbiBpbiBidWZmZXIKKyAqIEBwYXJh bSBlbmQgZW5kIHBvc2l0aW9uIGluIGJ1ZmZlcgorICogQHJldHVybiB0cnVlIGlmIGl0IGlzIGZp bmQKKyAqLworYm9vbCBTaWRGcmVxOjpoaWdoT2N0YXZlQ29tYmluZWQoY29uc3QgdW5zaWduZWQg Y2hhciAqYnVmZmVyLCBpbnQgc3RhcnQsIGludCBlbmQpIHsKKyAgaW50IHNpZDsKKyAgZG91Ymxl IFNURVA9c3RkOjpwb3coMiwgMS8xMik7CisgIGludCBmcmVxW109ezAsIDAsIDAsIDAsIDAsIDAs IDAsIDAsIDAsIDAsIDAsIDB9OworICAgICAKKyAgZm9yIChpbnQgaT1zdGFydDsgaTxlbmQtMTMq MjsgaSsrKSB7CisgICAgZnJlcVswXT0oaW50KShidWZmZXJbaV0pKyhpbnQpKGJ1ZmZlcltpKzFd KSoyNTY7IAorICAgIGlmIChmcmVxWzBdPT0wKSBjb250aW51ZTsKKyAgICBmcmVxWzFdPShpbnQp KGJ1ZmZlcltpKzJdKSsoaW50KShidWZmZXJbaSszXSkqMjU2OworICAgIGlmIChmcmVxWzFdPT0w IHx8IGZyZXFbMV08PWZyZXFbMF0gfHwgc3RkOjphYnMoZnJlcVsxXS9mcmVxWzBdLVNURVApPjAu MDAwMDEpIGNvbnRpbnVlOyAgICAgICAgCisgICAgZnJlcVsyXT0oaW50KShidWZmZXJbaSs0XSkr KGludCkoYnVmZmVyW2krNV0pKjI1NjsKKyAgICBpZiAoZnJlcVsyXT09MCB8fCBmcmVxWzJdPD1m cmVxWzFdIHx8IHN0ZDo6YWJzKGZyZXFbMl0vZnJlcVsxXS1TVEVQKT4wLjAwMDAxKSBjb250aW51 ZTsKKyAgICBmcmVxWzNdPShpbnQpKGJ1ZmZlcltpKzZdKSsoaW50KShidWZmZXJbaSs3XSkqMjU2 OworICAgIGlmIChmcmVxWzNdPT0wIHx8IGZyZXFbM108PWZyZXFbMl0gfHwgc3RkOjphYnMoZnJl cVszXS9mcmVxWzJdLVNURVApPjAuMDAwMDEpIGNvbnRpbnVlOworICAgIGZyZXFbNF09KGludCko YnVmZmVyW2krOF0pKyhpbnQpKGJ1ZmZlcltpKzldKSoyNTY7CisgICAgaWYgKGZyZXFbNF09PTAg fHwgZnJlcVs0XTw9ZnJlcVszXSB8fCBzdGQ6OmFicyhmcmVxWzRdL2ZyZXFbM10tU1RFUCk+MC4w MDAwMSkgY29udGludWU7CisgICAgZnJlcVs1XT0oaW50KShidWZmZXJbaSsxMF0pKyhpbnQpKGJ1 ZmZlcltpKzExXSkqMjU2OyAgICAgICAgCisgICAgaWYgKGZyZXFbNV09PTAgfHwgZnJlcVs1XTw9 ZnJlcVs0XSB8fCBzdGQ6OmFicyhmcmVxWzVdL2ZyZXFbNF0tU1RFUCk+MC4wMDAwMSkgY29udGlu dWU7CisgICAgZnJlcVs2XT0oaW50KShidWZmZXJbaSsxMl0pKyhpbnQpKGJ1ZmZlcltpKzEzXSkq MjU2OworICAgIGlmIChmcmVxWzZdPT0wIHx8IGZyZXFbNl08PWZyZXFbNV0gfHwgc3RkOjphYnMo ZnJlcVs2XS9mcmVxWzVdLVNURVApPjAuMDAwMDEpIGNvbnRpbnVlOworICAgIGZyZXFbN109KGlu dCkoYnVmZmVyW2krMTRdKSsoaW50KShidWZmZXJbaSsxNV0pKjI1NjsKKyAgICBpZiAoZnJlcVs3 XT09MCB8fCBmcmVxWzddPD1mcmVxWzZdIHx8IHN0ZDo6YWJzKGZyZXFbN10vZnJlcVs2XS1TVEVQ KT4wLjAwMDAxKSBjb250aW51ZTsKKyAgICBmcmVxWzhdPShpbnQpKGJ1ZmZlcltpKzE2XSkrKGlu dCkoYnVmZmVyW2krMTddKSoyNTY7CisgICAgaWYgKGZyZXFbOF09PTAgfHwgZnJlcVs4XTw9ZnJl cVs3XSB8fCBzdGQ6OmFicyhmcmVxWzhdL2ZyZXFbN10tU1RFUCk+MC4wMDAwMSkgY29udGludWU7 CisgICAgZnJlcVs5XT0oaW50KShidWZmZXJbaSsxOF0pKyhpbnQpKGJ1ZmZlcltpKzE5XSkqMjU2 OworICAgIGlmIChmcmVxWzldPT0wIHx8IGZyZXFbOV08PWZyZXFbOF0gfHwgc3RkOjphYnMoZnJl cVs5XS9mcmVxWzhdLVNURVApPjAuMDAwMDEpIGNvbnRpbnVlOworICAgIGZyZXFbMTBdPShpbnQp KGJ1ZmZlcltpKzIwXSkrKGludCkoYnVmZmVyW2krMjFdKSoyNTY7CisgICAgaWYgKGZyZXFbMTBd PT0wIHx8IGZyZXFbMTBdPD1mcmVxWzldIHx8IHN0ZDo6YWJzKGZyZXFbMTBdL2ZyZXFbOV0tU1RF UCk+MC4wMDAwMSkgY29udGludWU7CisgICAgZnJlcVsxMV09KGludCkoYnVmZmVyW2krMjJdKSso aW50KShidWZmZXJbaSsyM10pKjI1NjsKKyAgICBpZiAoZnJlcVsxMV09PTAgfHwgZnJlcVsxMV08 PWZyZXFbMTBdIHx8IHN0ZDo6YWJzKGZyZXFbMTFdL2ZyZXFbMTBdLVNURVApPjAuMDAwMDEpIGNv bnRpbnVlOworICAgICAgICAKKyAgICBpZiAoZnJlcVsxMV08NjIwMDApIGNvbnRpbnVlOworCisg ICAgLy8gZ2V0IHRoZSBBNCBub3RlCisgICAgc2lkPShmcmVxWzldLzgpOyAgCisKKyAgICAvLyBt b2RpZnkgc3RhcnQgZm9yIGFub3RoZXIgYW5hbGlzeXMKKyAgICBjdXJTdGFydD1zdGQ6Om1pbihp KzEyKjIsIGVuZC0xMioyKTsKKyAgICBsaXN0LnB1c2hfYmFjayhzaWQpOyAKKworICAgIHJldHVy biB0cnVlOworICB9ICAgICAgCisgICAgCisgIHJldHVybiBmYWxzZTsgICAgICAKK30gIAorCisv KioKKyAqIExvb2tzIGZvciBhbiBoaWdoIG9jdGF2ZSB0YWJsZQorICogCisgKiBAcGFyYW0gYnVm ZmVyIHRoZSBidWZmZWQgd2l0aCB0aGUgZGF0YSB0byBpZGVudGlmeQorICogQHBhcmFtIHN0YXJ0 IHN0YXJ0IHBvc2l0aW9uIGluIGJ1ZmZlcgorICogQHBhcmFtIGVuZCBlbmQgcG9zaXRpb24gaW4g YnVmZmVyCisgKiBAcmV0dXJuIHRydWUgaWYgaXQgaXMgZmluZAorICovCitib29sIFNpZEZyZXE6 Omxvd09jdGF2ZUNvbWJpbmVkKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgaW50IHN0YXJ0 LCBpbnQgZW5kKSB7CisgIGludCBzaWQ7CisgIGRvdWJsZSBTVEVQPXN0ZDo6cG93KDIsIDEvMTIp OworICBpbnQgZnJlcVtdPXswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfTsKKyAg ICAgIAorICBmb3IgKGludCBpPXN0YXJ0OyBpPGVuZC0xMyoyOyBpKyspIHsKKyAgICBmcmVxWzBd PShpbnQpKGJ1ZmZlcltpXSYgMHhGRikrKGludCkoYnVmZmVyW2krMV0mIDB4RkYpKjI1NjsgCisg ICAgaWYgKGZyZXFbMF09PTApIGNvbnRpbnVlOworICAgIGZyZXFbMV09KGludCkoYnVmZmVyW2kr Ml0mIDB4RkYpKyhpbnQpKGJ1ZmZlcltpKzNdJiAweEZGKSoyNTY7CisgICAgaWYgKGZyZXFbMV09 PTAgfHwgZnJlcVsxXTw9ZnJlcVswXSB8fCBzdGQ6OmFicyhmcmVxWzFdL2ZyZXFbMF0tU1RFUCk+ MC4wMDAwMSkgY29udGludWU7ICAgICAgICAKKyAgICBmcmVxWzJdPShpbnQpKGJ1ZmZlcltpKzRd JiAweEZGKSsoaW50KShidWZmZXJbaSs1XSYgMHhGRikqMjU2OworICAgIGlmIChmcmVxWzJdPT0w IHx8IGZyZXFbMl08PWZyZXFbMV0gfHwgc3RkOjphYnMoZnJlcVsyXS9mcmVxWzFdLVNURVApPjAu MDAwMDEpIGNvbnRpbnVlOworICAgIGZyZXFbM109KGludCkoYnVmZmVyW2krNl0mIDB4RkYpKyhp bnQpKGJ1ZmZlcltpKzddJiAweEZGKSoyNTY7CisgICAgaWYgKGZyZXFbM109PTAgfHwgZnJlcVsz XTw9ZnJlcVsyXSB8fCBzdGQ6OmFicyhmcmVxWzNdL2ZyZXFbMl0tU1RFUCk+MC4wMDAwMSkgY29u dGludWU7CisgICAgZnJlcVs0XT0oaW50KShidWZmZXJbaSs4XSYgMHhGRikrKGludCkoYnVmZmVy W2krOV0mIDB4RkYpKjI1NjsKKyAgICBpZiAoZnJlcVs0XT09MCB8fCBmcmVxWzRdPD1mcmVxWzNd IHx8IHN0ZDo6YWJzKGZyZXFbNF0vZnJlcVszXS1TVEVQKT4wLjAwMDAxKSBjb250aW51ZTsKKyAg ICBmcmVxWzVdPShpbnQpKGJ1ZmZlcltpKzEwXSYgMHhGRikrKGludCkoYnVmZmVyW2krMTFdJiAw eEZGKSoyNTY7ICAgICAgICAKKyAgICBpZiAoZnJlcVs1XT09MCB8fCBmcmVxWzVdPD1mcmVxWzRd IHx8IHN0ZDo6YWJzKGZyZXFbNV0vZnJlcVs0XS1TVEVQKT4wLjAwMDAxKSBjb250aW51ZTsKKyAg ICBmcmVxWzZdPShpbnQpKGJ1ZmZlcltpKzEyXSYgMHhGRikrKGludCkoYnVmZmVyW2krMTNdJiAw eEZGKSoyNTY7CisgICAgaWYgKGZyZXFbNl09PTAgfHwgZnJlcVs2XTw9ZnJlcVs1XSB8fCBzdGQ6 OmFicyhmcmVxWzZdL2ZyZXFbNV0tU1RFUCk+MC4wMDAwMSkgY29udGludWU7CisgICAgZnJlcVs3 XT0oaW50KShidWZmZXJbaSsxNF0mIDB4RkYpKyhpbnQpKGJ1ZmZlcltpKzE1XSYgMHhGRikqMjU2 OworICAgIGlmIChmcmVxWzddPT0wIHx8IGZyZXFbN108PWZyZXFbNl0gfHwgc3RkOjphYnMoZnJl cVs3XS9mcmVxWzZdLVNURVApPjAuMDAwMDEpIGNvbnRpbnVlOworICAgIGZyZXFbOF09KGludCko YnVmZmVyW2krMTZdJiAweEZGKSsoaW50KShidWZmZXJbaSsxN10mIDB4RkYpKjI1NjsKKyAgICBp ZiAoZnJlcVs4XT09MCB8fCBmcmVxWzhdPD1mcmVxWzddIHx8IHN0ZDo6YWJzKGZyZXFbOF0vZnJl cVs3XS1TVEVQKT4wLjAwMDAxKSBjb250aW51ZTsKKyAgICBmcmVxWzldPShpbnQpKGJ1ZmZlcltp KzE4XSYgMHhGRikrKGludCkoYnVmZmVyW2krMTldJiAweEZGKSoyNTY7CisgICAgaWYgKGZyZXFb OV09PTAgfHwgZnJlcVs5XTw9ZnJlcVs4XSB8fCBzdGQ6OmFicyhmcmVxWzldL2ZyZXFbOF0tU1RF UCk+MC4wMDAwMSkgY29udGludWU7CisgICAgZnJlcVsxMF09KGludCkoYnVmZmVyW2krMjBdJiAw eEZGKSsoaW50KShidWZmZXJbaSsyMV0mIDB4RkYpKjI1NjsKKyAgICBpZiAoZnJlcVsxMF09PTAg fHwgZnJlcVsxMF08PWZyZXFbOV0gfHwgc3RkOjphYnMoZnJlcVsxMF0vZnJlcVs5XS1TVEVQKT4w LjAwMDAxKSBjb250aW51ZTsKKyAgICBmcmVxWzExXT0oaW50KShidWZmZXJbaSsyMl0mIDB4RkYp KyhpbnQpKGJ1ZmZlcltpKzIzXSYgMHhGRikqMjU2OworICAgIGlmIChmcmVxWzExXT09MCB8fCBm cmVxWzExXTw9ZnJlcVsxMF0gfHwgc3RkOjphYnMoZnJlcVsxMV0vZnJlcVsxMF0tU1RFUCk+MC4w MDAwMSkgY29udGludWU7CisgICAgICAgIAorICAgIGlmIChmcmVxWzExXT42MDApIGNvbnRpbnVl OworCisgICAgLy8gZ2V0IHRoZSBBNCBub3RlCisgICAgc2lkPShmcmVxWzldKjE2KTsgIAorCisg ICAgLy8gbW9kaWZ5IHN0YXJ0IGZvciBhbm90aGVyIGFuYWxpc3lzCisgICAgY3VyU3RhcnQ9c3Rk OjptaW4oaSsxMioyLCBlbmQtMTIqMik7CisgICAgbGlzdC5wdXNoX2JhY2soc2lkKTsgCisKKyAg ICByZXR1cm4gdHJ1ZTsKKyAgfSAgICAgIAorICAgIAorICByZXR1cm4gZmFsc2U7ICAgICAgCit9 ICAKKworLyoqCisgKiBMb29rcyBmb3IgYW4gaGlnaCBvY3RhdmUgdGFibGUKKyAqIAorICogQHBh cmFtIGJ1ZmZlciB0aGUgYnVmZmVkIHdpdGggdGhlIGRhdGEgdG8gaWRlbnRpZnkKKyAqIEBwYXJh bSBzdGFydCBzdGFydCBwb3NpdGlvbiBpbiBidWZmZXIKKyAqIEBwYXJhbSBlbmQgZW5kIHBvc2l0 aW9uIGluIGJ1ZmZlcgorICogQHJldHVybiB0cnVlIGlmIGl0IGlzIGZpbmQKKyAqLworYm9vbCBT aWRGcmVxOjpoaWdoT2N0YXZlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgaW50IHN0YXJ0 LCBpbnQgZW5kKSB7CisgIGludCBzaWQ7CisgIGRvdWJsZSBTVEVQPXN0ZDo6cG93KDIsIDEvMTIp OworICBpbnQgZnJlcVtdPXswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfTsKKyAg ICAgIAorICBmb3IgKGludCBpPXN0YXJ0OyBpPGVuZC0xMyoyOyBpKyspIHsKKyAgICBpZiAoKGlu dClidWZmZXJbaV09PTAgJiYgKGludClidWZmZXJbaSsxM109PTApIHsKKyAgICAgIGZyZXFbMF09 KGludCkoYnVmZmVyW2krMV0mIDB4RkYpKyhpbnQpKGJ1ZmZlcltpKzE0XSYgMHhGRikqMjU2OyAK KyAgICAgIGlmIChmcmVxWzBdPT0wKSBjb250aW51ZTsKKyAgICAgIGZyZXFbMV09KGludCkoYnVm ZmVyW2krMl0mIDB4RkYpKyhpbnQpKGJ1ZmZlcltpKzE1XSYgMHhGRikqMjU2OworICAgICAgaWYg KGZyZXFbMV09PTAgfHwgZnJlcVsxXTw9ZnJlcVswXSB8fCBzdGQ6OmFicyhmcmVxWzFdL2ZyZXFb MF0tU1RFUCk+MC4wMDAwMSkgY29udGludWU7ICAgICAgICAKKyAgICAgIGZyZXFbMl09KGludCko YnVmZmVyW2krM10mIDB4RkYpKyhpbnQpKGJ1ZmZlcltpKzE2XSYgMHhGRikqMjU2OworICAgICAg aWYgKGZyZXFbMl09PTAgfHwgZnJlcVsyXTw9ZnJlcVsxXSB8fCBzdGQ6OmFicyhmcmVxWzJdL2Zy ZXFbMV0tU1RFUCk+MC4wMDAwMSkgY29udGludWU7CisgICAgICBmcmVxWzNdPShpbnQpKGJ1ZmZl cltpKzRdJiAweEZGKSsoaW50KShidWZmZXJbaSsxN10mIDB4RkYpKjI1NjsKKyAgICAgIGlmIChm cmVxWzNdPT0wIHx8IGZyZXFbM108PWZyZXFbMl0gfHwgc3RkOjphYnMoZnJlcVszXS9mcmVxWzJd LVNURVApPjAuMDAwMDEpIGNvbnRpbnVlOworICAgICAgZnJlcVs0XT0oaW50KShidWZmZXJbaSs1 XSYgMHhGRikrKGludCkoYnVmZmVyW2krMThdJiAweEZGKSoyNTY7CisgICAgICBpZiAoZnJlcVs0 XT09MCB8fCBmcmVxWzRdPD1mcmVxWzNdIHx8IHN0ZDo6YWJzKGZyZXFbNF0vZnJlcVszXS1TVEVQ KT4wLjAwMDAxKSBjb250aW51ZTsKKyAgICAgIGZyZXFbNV09KGludCkoYnVmZmVyW2krNl0mIDB4 RkYpKyhpbnQpKGJ1ZmZlcltpKzE5XSYgMHhGRikqMjU2OyAgICAgICAgCisgICAgICBpZiAoZnJl cVs1XT09MCB8fCBmcmVxWzVdPD1mcmVxWzRdIHx8IHN0ZDo6YWJzKGZyZXFbNV0vZnJlcVs0XS1T VEVQKT4wLjAwMDAxKSBjb250aW51ZTsKKyAgICAgIGZyZXFbNl09KGludCkoYnVmZmVyW2krN10m IDB4RkYpKyhpbnQpKGJ1ZmZlcltpKzIwXSYgMHhGRikqMjU2OworICAgICAgaWYgKGZyZXFbNl09 PTAgfHwgZnJlcVs2XTw9ZnJlcVs1XSB8fCBzdGQ6OmFicyhmcmVxWzZdL2ZyZXFbNV0tU1RFUCk+ MC4wMDAwMSkgY29udGludWU7CisgICAgICBmcmVxWzddPShpbnQpKGJ1ZmZlcltpKzhdJiAweEZG KSsoaW50KShidWZmZXJbaSsyMV0mIDB4RkYpKjI1NjsKKyAgICAgIGlmIChmcmVxWzddPT0wIHx8 IGZyZXFbN108PWZyZXFbNl0gfHwgc3RkOjphYnMoZnJlcVs3XS9mcmVxWzZdLVNURVApPjAuMDAw MDEpIGNvbnRpbnVlOworICAgICAgZnJlcVs4XT0oaW50KShidWZmZXJbaSs5XSYgMHhGRikrKGlu dCkoYnVmZmVyW2krMjJdJiAweEZGKSoyNTY7CisgICAgICBpZiAoZnJlcVs4XT09MCB8fCBmcmVx WzhdPD1mcmVxWzddIHx8IHN0ZDo6YWJzKGZyZXFbOF0vZnJlcVs3XS1TVEVQKT4wLjAwMDAxKSBj b250aW51ZTsKKyAgICAgIGZyZXFbOV09KGludCkoYnVmZmVyW2krMTBdJiAweEZGKSsoaW50KShi dWZmZXJbaSsyM10mIDB4RkYpKjI1NjsKKyAgICAgIGlmIChmcmVxWzldPT0wIHx8IGZyZXFbOV08 PWZyZXFbOF0gfHwgc3RkOjphYnMoZnJlcVs5XS9mcmVxWzhdLVNURVApPjAuMDAwMDEpIGNvbnRp bnVlOworICAgICAgZnJlcVsxMF09KGludCkoYnVmZmVyW2krMTFdJiAweEZGKSsoaW50KShidWZm ZXJbaSsyNF0mIDB4RkYpKjI1NjsKKyAgICAgIGlmIChmcmVxWzEwXT09MCB8fCBmcmVxWzEwXTw9 ZnJlcVs5XSB8fCBzdGQ6OmFicyhmcmVxWzEwXS9mcmVxWzldLVNURVApPjAuMDAwMDEpIGNvbnRp bnVlOworICAgICAgZnJlcVsxMV09KGludCkoYnVmZmVyW2krMTJdJiAweEZGKSsoaW50KShidWZm ZXJbaSsyNV0mIDB4RkYpKjI1NjsKKyAgICAgIGlmIChmcmVxWzExXT09MCB8fCBmcmVxWzExXTw9 ZnJlcVsxMF0gfHwgc3RkOjphYnMoZnJlcVsxMV0vZnJlcVsxMF0tU1RFUCk+MC4wMDAwMSkgY29u dGludWU7CisgICAgICAgIAorICAgICAgaWYgKGZyZXFbMTFdPDYyMDAwKSBjb250aW51ZTsKKyAg ICAgIAorICAgICAgLy8gZ2V0IHRoZSBBNCBub3RlCisgICAgICBzaWQ9KGZyZXFbOV0vOCk7ICAK KworICAgICAgLy8gbW9kaWZ5IHN0YXJ0IGZvciBhbm90aGVyIGFuYWxpc3lzCisgICAgICBjdXJT dGFydD1zdGQ6Om1pbihpKzEyKjIsIGVuZC0xMioyKTsKKyAgICAgIGxpc3QucHVzaF9iYWNrKHNp ZCk7IAorCisgICAgICByZXR1cm4gdHJ1ZTsgICAKKyAgICB9ICAKKyAgfSAgIAorICAgICAgICAK KyAgcmV0dXJuIGZhbHNlOyAgICAgIAorfSAgCisKKy8qKgorICogU2VhcmNoIGZvciB0YWJsZXMg aW4gbGluZWFyIHdheSAobG93IC8gaGlnaCBvciBoaWdoIC8gbG93KSBpbiBvY3RhdmUvbm90ZSAK KyAqIGZvcm1hdAorICogIAorICogQHBhcmFtIGJ1ZmZlciB0aGUgYnVmZmVkIHdpdGggdGhlIGRh dGEgdG8gaWRlbnRpZnkKKyAqIEBwYXJhbSBzdGFydCBzdGFydCBwb3NpdGlvbiBpbiBidWZmZXIK KyAqIEBwYXJhbSBlbmQgZW5kIHBvc2l0aW9uIGluIGJ1ZmZlcgorICogQHJldHVybiB0cnVlIGlm IGl0IGlzIGZpbmQKKyAqLworYm9vbCBTaWRGcmVxOjpsaW5lYXJPY3ROb3RlVGFibGUoY29uc3Qg dW5zaWduZWQgY2hhciAqYnVmZmVyLCBpbnQgc3RhcnQsIGludCBlbmQpIHsKKyAgaW50IGk7ICAK KyAgaW50IHNpZDsKKyAgaW50IGhpZ2g9LTE7CisgIGludCBsb3c9LTE7ICAgCisgICAgCisgIC8v IGNoZWNrIGZvciBoaWdoIGZyZXF1ZW5jeSB0YWJsZQorICBmb3IgKGk9c3RhcnQ7IGk8ZW5kLU9D VF9OT1RFX1RBQkxFOyBpKyspIHsKKyAgICBpZiAoc2VhcmNoT2N0Tm90ZUhpZ2goYnVmZmVyLCBp KSkgeworICAgICAgaGlnaD1pOworICAgICAgYnJlYWs7ICAgICAgICAgCisgICAgfQorICB9ICAK KyAgICAKKyAgLy8gbG9vayBpZiBoaWdoIHRhYmxlIHdhcyBmb3VudAorICBpZiAoaGlnaD09LTEp IHJldHVybiBmYWxzZTsgICAgICAKKyAgICAKKyAgLy8gY2hlY2sgZm9yIGxvdyBmcmVxdWVuY3kg dGFibGUgKGZpcnN0IHBhcnQpCisgIGlmIChoaWdoPk9DVF9OT1RFX1RBQkxFKSB7CisgICAgZm9y IChpPXN0YXJ0OyBpPD1oaWdoLU9DVF9OT1RFX1RBQkxFLTY7IGkrKykgeworICAgICAgaWYgKHNl YXJjaE9jdE5vdGVMb3coYnVmZmVyLCBoaWdoLCBpKSkgeworICAgICAgICBsb3c9aTsKKyAgICAg ICAgYnJlYWs7CisgICAgICB9ICAgICAgICAgICAKKyAgICB9CisgIH0KKyAgICAKKyAgLy8gY2hl Y2sgZm9yIGhpZ2ggZnJlcXVlbmN5IHRhYmxlIChzZWNvbmQgcGFydCkKKyAgaWYgKChsb3c9PS0x KSAmJiAoaGlnaDxlbmQtT0NUX05PVEVfVEFCTEUqMikpIHsKKyAgICBmb3IgKGk9aGlnaCtPQ1Rf Tk9URV9UQUJMRSs2OyBpPGVuZC1PQ1RfTk9URV9UQUJMRS02OyBpKyspIHsKKyAgICAgIGlmIChz ZWFyY2hPY3ROb3RlTG93KGJ1ZmZlciwgaGlnaCwgaSkpIHsKKyAgICAgICBsb3c9aTsKKyAgICAg ICAgYnJlYWs7CisgICAgICB9ICAgICAgICAgICAgICAgICAKKyAgICAgfQorICB9CisgICAgCisg IC8vIGxvb2sgaWYgbG93IHRhYmxlIHdhcyBmb3VudAorICBpZiAobG93PT0tMSkgcmV0dXJuIGZh bHNlOworICAgICAgIAorICAvLyBnZXQgdGhlIEE0IG5vdGUKKyAgc2lkPShidWZmZXJbaGlnaCtP Q1RfTk9URV9BNF0pKjI1NisoYnVmZmVyW2xvdytPQ1RfTk9URV9BNF0pOyAgCisgIAorICAvLyBt b2RpZnkgc3RhcnQgZm9yIGFub3RoZXIgYW5hbGlzeXMKKyAgY3VyU3RhcnQ9c3RkOjptaW4oc3Rk OjptYXgoaGlnaCwgbG93KStUQUJMRSwgZW5kLVRBQkxFKTsKKyAgbGlzdC5wdXNoX2JhY2soc2lk KTsgCisgIAorICByZXR1cm4gdHJ1ZTsgICAgCit9CisKKy8qKgorICogU2VhcmNoIGZvciB0YWJs ZXMgaW4gbGluZWFyIHdheSAobG93IC8gaGlnaCBvciBoaWdoIC8gbG93KSB3aXRoIGludmVyc2Ug ZGlyZWN0aW9uCisgKiAgCisgKiBAcGFyYW0gYnVmZmVyIHRoZSBidWZmZWQgd2l0aCB0aGUgZGF0 YSB0byBpZGVudGlmeQorICogQHBhcmFtIHN0YXJ0IHN0YXJ0IHBvc2l0aW9uIGluIGJ1ZmZlcgor ICogQHBhcmFtIGVuZCBlbmQgcG9zaXRpb24gaW4gYnVmZmVyCisgKi8KK2Jvb2wgU2lkRnJlcTo6 bGluZWFySW52ZXJzZVRhYmxlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgaW50IHN0YXJ0 LCBpbnQgZW5kKSB7CisgIGludCBpOyAgCisgIGludCBzaWQ7CisgIGludCBoaWdoPS0xOworICBp bnQgbG93PS0xOyAgIAorICAgIAorICAvLyBjaGVjayBmb3IgaGlnaCBmcmVxdWVuY3kgdGFibGUK KyAgZm9yIChpPWVuZC0xOyBpPj1zdGFydCtBTEw7IGktLSkgeworICAgIGlmIChzZWFyY2hJbnZl cnNlSGlnaChidWZmZXIsIGkpKSB7CisgICAgICBoaWdoPWk7CisgICAgICBicmVhazsgICAgICAg ICAKKyAgICB9CisgIH0gIAorICAgIAorICAvLyBsb29rIGlmIGhpZ2ggdGFibGUgd2FzIGZvdW50 CisgIGlmIChoaWdoPT0tMSkgcmV0dXJuIGZhbHNlOyAgICAgIAorCisgIC8vIGNoZWNrIGZvciBs b3cgZnJlcXVlbmN5IHRhYmxlIChmaXJzdCBwYXJ0KQorICBpZiAoaGlnaD5BTEwpIHsKKyAgICBm b3IgKGk9c3RhcnQrQUxMOyBpPGhpZ2g7IGkrKykgeworICAgICAgaWYgKHNlYXJjaEludmVyc2VM b3coYnVmZmVyLCBoaWdoLCBpKSkgeworICAgICAgICBsb3c9aTsKKyAgICAgICAgYnJlYWs7Cisg ICAgICB9ICAgICAgICAgICAKKyAgICB9CisgICAgCisgICAgLy8gY2hlY2sgZm9yIGhpZ2ggZnJl cXVlbmN5IHRhYmxlIChzZWNvbmQgcGFydCkKKyAgICBpZiAoKGxvdz09LTEpICYmIChoaWdoPGVu ZC1BTEwpKSB7CisgICAgICBmb3IgKGk9aGlnaCtBTEw7IGk8ZW5kOyBpKyspIHsKKyAgICAgICAg aWYgKHNlYXJjaEludmVyc2VMb3coYnVmZmVyLCBoaWdoLCBpKSkgeworICAgICAgICAgIGxvdz1p OworICAgICAgICAgIGJyZWFrOworICAgICAgICB9ICAgICAgICAgICAgICAgICAKKyAgICAgIH0K KyAgICB9CisgICAgCisgICAgLy8gbG9vayBpZiBsb3cgdGFibGUgd2FzIGZvdW50CisgICAgaWYg KGxvdz09LTEpIHJldHVybiBmYWxzZTsKKyAgfQorICAgIAorICAvLyBnZXQgdGhlIEE0IG5vdGUK KyAgc2lkPShidWZmZXJbaGlnaC1BNF0pKjI1NisoYnVmZmVyW2xvdy1BNF0pOyAgCisKKyAgLy8g bW9kaWZ5IHN0YXJ0IGZvciBhbm90aGVyIGFuYWxpc3lzCisgIGN1clN0YXJ0PXN0ZDo6bWluKHN0 ZDo6bWF4KGhpZ2gtQUxMKzEsIGxvdy1BTEwrMSkrVEFCTEUsIGVuZC1UQUJMRSk7CisgIGxpc3Qu cHVzaF9iYWNrKHNpZCk7IAorIAorICByZXR1cm4gdHJ1ZTsgICAgCiB9CiAKIC8qKgpAQCAtNjQw LDI2ICsxMjk3LDU4IEBACiAgKgogICogQHBhcmFtIGJ1ZmZlciB0aGUgYnVmZmVkIHdpdGggdGhl IGRhdGEgdG8gaWRlbnRpZnkKICAqIEBwYXJhbSBsZW5ndGggbGVuZ3RoIG9mIHRoZSBidWZmZXIK LSAqIEByZXR1cm4gdGhlIHNpZCB2YWx1ZSBvZiBBNCBmcmVxdWVuY3kgKG9yIC0xIGlmIG5vdCBm b3VudCkKKyAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBmb3VudCBmcmVxdWVuY2llcwogICovCiBp bnQgU2lkRnJlcTo6aWRlbnRpZnlGcmVxKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgaW50 IGxlbmd0aCkgewogICBpbnQgc2lkOworICBpbnQgZW5kOworICAKKyAgbGlzdC5jbGVhcigpOwor ICBjdXJTdGFydD0wOwogICAKLSAgc2lkPWxpbmVhclRhYmxlKGJ1ZmZlciwgbGVuZ3RoKTsKKyAg Y3VyU3RhcnQ9MDsgICAgCisgIHdoaWxlIChsaW5lYXJUYWJsZShidWZmZXIsIGN1clN0YXJ0LCBs ZW5ndGgpKSB7fSAgCiAgIAotICBpZiAoc2lkICE9IC0xKSByZXR1cm4gc2lkOyAgLy8gd2UgZm91 bnQgaXQKKyAgY3VyU3RhcnQ9MDsgICAgCisgIHdoaWxlIChjb21iaW5lZFRhYmxlKGJ1ZmZlciwg Y3VyU3RhcnQsIGxlbmd0aCkpIHt9ICAKICAgCi0gIHNpZD1jb21iaW5lZFRhYmxlKGJ1ZmZlciwg bGVuZ3RoKTsKKyAgY3VyU3RhcnQ9MDsKKyAgZW5kPWxlbmd0aDsKKyAgd2hpbGUgKGxpbmVhcklu dmVyc2VUYWJsZShidWZmZXIsIGN1clN0YXJ0LCBlbmQpKSB7CisgICAgZW5kPWN1clN0YXJ0Owor ICAgIGN1clN0YXJ0PXN0ZDo6bWluKDAsIGN1clN0YXJ0LVRBQkxFKTsgIAorICB9CiAgIAotICBp ZiAoc2lkICE9IC0xKSByZXR1cm4gc2lkOyAgLy8gd2UgZm91bnQgaXQKKyAgY3VyU3RhcnQ9MDsg ICAgCisgIHdoaWxlIChsaW5lYXJPY3ROb3RlVGFibGUoYnVmZmVyLCBjdXJTdGFydCwgbGVuZ3Ro KSkge30gCiAgIAotICBzaWQ9c2hvcnRMaW5lYXJUYWJsZShidWZmZXIsIGxlbmd0aCk7CisgIGN1 clN0YXJ0PTA7ICAgIAorICB3aGlsZSAoaGlnaE9jdGF2ZShidWZmZXIsIGN1clN0YXJ0LCBsZW5n dGgpKSB7fSAKICAgCi0gIGlmIChzaWQgIT0gLTEpIHJldHVybiBzaWQ7ICAvLyB3ZSBmb3VudCBp dAorICBjdXJTdGFydD0wOyAgICAKKyAgd2hpbGUgKGxpbmVhclNjYWxlVGFibGUoYnVmZmVyLCBj dXJTdGFydCwgbGVuZ3RoKSkge30KICAgIAotICBzaWQ9c2hvcnRDb21iaW5lZFRhYmxlKGJ1ZmZl ciwgbGVuZ3RoKTsKKyAgY3VyU3RhcnQ9MDsKKyAgLy8gZm9yIHNob3J0IHRhYmxlIGxvb2tzIG9u bHkgaWYgdGhlcmUgYXJlIG5vIHNvbHV0aW9uIGJlZm9yZQorICBpZiAobGlzdC5lbXB0eSgpKSBz aG9ydExpbmVhclRhYmxlKGJ1ZmZlciwgY3VyU3RhcnQsIGxlbmd0aCk7CisgIGlmIChsaXN0LmVt cHR5KCkpIHNob3J0Q29tYmluZWRUYWJsZShidWZmZXIsIGN1clN0YXJ0LCBsZW5ndGgpOworICBp ZiAobGlzdC5lbXB0eSgpKSBoaWdoT2N0YXZlMTIoYnVmZmVyLCBjdXJTdGFydCwgbGVuZ3RoKTsK KyAgaWYgKGxpc3QuZW1wdHkoKSkgaGlnaE9jdGF2ZUNvbWJpbmVkKGJ1ZmZlciwgY3VyU3RhcnQs IGxlbmd0aCk7CisgIGlmIChsaXN0LmVtcHR5KCkpIGxvd09jdGF2ZUNvbWJpbmVkKGJ1ZmZlciwg Y3VyU3RhcnQsIGxlbmd0aCk7CiAgIAotICByZXR1cm4gc2lkOworICByZXR1cm4gbGlzdC5zaXpl KCk7IAorfQorCisvKioKKyAqIEdldCB0aGUgc2lkIGZyZXF1ZW5jaWVzYXQgdGhlIGdpdmVuIGlu ZGV4IG9yIC0xIGlmIG91dCBvZiBpbmRleAorICogCisgKiBAcGFyYW0gaW5kZXggdGhlIGluZGV4 IHRvIGdldCB0aGUgdmFsdWUKKyAqIEByZXR1cm4gdGhlIHNpZCBmcmVxdWVuY2llcyBTSUQgdmFs dWUKKyAqLworaW50IFNpZEZyZXE6OmdldFNpZEZyZXEoaW50IGluZGV4KSB7CisgIGlmIChpbmRl eDwwIHx8IGluZGV4Pj1saXN0LnNpemUoKSkgcmV0dXJuIC0xOworICAKKyAgcmV0dXJuIGxpc3Qu YXQoaW5kZXgpOwogfQogCiAjZW5kaWYgIC8qIFNJREZSRVEgKi8KZGlmZiAtTmF1cncgL3hzaWRw bGF5Mi1jb2RlLXIyODgtdHJ1bmsveHNpZHBsYXkvc3JjL3NpZGZyZXEvc2lkZnJlcS5oIC94c2lk cGxheTItY29kZS1yMjk0LXRydW5rL3hzaWRwbGF5L3NyYy9zaWRmcmVxL3NpZGZyZXEuaAotLS0g L3hzaWRwbGF5Mi1jb2RlLXIyODgtdHJ1bmsveHNpZHBsYXkvc3JjL3NpZGZyZXEvc2lkZnJlcS5o CTIwMjAtMDYtMjAgMTI6MDM6MjcuMDAwMDAwMDAwICswMjAwCisrKyAveHNpZHBsYXkyLWNvZGUt cjI5NC10cnVuay94c2lkcGxheS9zcmMvc2lkZnJlcS9zaWRmcmVxLmgJMjAyMy0wMi0yNiAxNjoy NDo1MC4wMDAwMDAwMDAgKzAxMDAKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNvbmZp Zy5oIgogI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAKIC8qKgogICogU2lk RnJlcSBjbGFzcwpAQCAtMzQsNyArMzUsNyBAQAogICogVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRo ZSBzZWFyY2ggb2YgYmFzZSBBNCBub3RlIGZyZXF1ZW5jeSB1c2VkIGJ5IGEgdHVuZQogICoKICAq IEBhdXRob3IgU3RlZmFubyBUb2dub24gKGljZTAwKQotICogQHZlcnNpb24gMS4wMCAxNy8wNC8y MDE3CisgKiBAdmVyc2lvbiAxLjAyIDI1LzAyLzIwMjMKICAqLwogY2xhc3MgU2lkRnJlcSB7CiAg IHB1YmxpYzoKQEAgLTY3LDggKzY4LDIyIEBACiAgICAgaW50IGlkZW50aWZ5RnJlcShjb25zdCB1 bnNpZ25lZCBjaGFyICpidWZmZXIsIGludCBsZW5ndGgpOwogCiAKKyAgICAvKioKKyAgICAgKiBH ZXQgdGhlIHNpZCBmcmVxdWVuY2llc2F0IHRoZSBnaXZlbiBpbmRleCBvciAtMSBpZiBvdXQgb2Yg aW5kZXgKKyAgICAgKiAKKyAgICAgKiBAcGFyYW0gaW5kZXggdGhlIGluZGV4IHRvIGdldCB0aGUg dmFsdWUKKyAgICAgKiBAcmV0dXJuIHRoZSBzaWQgZnJlcXVlbmNpZXMgU0lEIHZhbHVlCisgICAg ICovCisgICAgaW50IGdldFNpZEZyZXEoaW50IGluZGV4KTsKKwogICBwcml2YXRlOgogICAgICAg CisgICAgLyoqIExpc3Qgb2YgdGhlIGZvdW50IGZyZXF1ZW5jaWVzICovCisgICAgc3RkOjp2ZWN0 b3I8aW50PiBsaXN0OworICAgIAorICAgIC8qKiBDdXJyZW50IHN0YXJ0aW5nIHBvc2l0aW9uIGZv ciBtdWx0aXBsZSBjYXRjaCAqLworICAgIGludCBjdXJTdGFydDsKKyAgICAgIAogICAgIC8qKgog ICAgICAqIFNlYXJjaCBmb3IgdGhlIGhpZ2ggZnJlcXVlbmN5IHRhYmxlIGluIGxpbmVhciB3YXkK ICAgICAgKgpAQCAtMTA2LDYgKzEyMSwxNSBAQAogICAgIGJvb2wgc2VhcmNoU2hvcnRIaWdoMihj b25zdCB1bnNpZ25lZCBjaGFyICpidWZmZXIsIGludCBpbmRleCk7ICAgIAogICAgIAogICAgIC8q KgorICAgICAqIFNlYXJjaCBmb3IgdGhlIHNjYWxlIGhpZ2ggZnJlcXVlbmN5IHRhYmxlIGluIGxp bmVhciB3YXkKKyAgICAgKgorICAgICAqIEBwYXJhbSBidWZmZXIgdGhlIGJ1ZmZlciB3aXRoIHRo ZSB0dW5lCisgICAgICogQHBhcmFtIGluZGV4IHRoZSBpbmRleCB3aGVyZSB0byBzdGFydCB0aGUg dGVzdAorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGVyZSBpcyBhIGhpZ2ggZnJlcXVlbmN5IHRh YmxlIGluIHRoYXQgcG9zaXRpb24gCisgICAgICovIAorICAgIGJvb2wgc2VhcmNoU2NhbGVIaWdo KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgaW50IGluZGV4KTsgICAgCisgICAgCisgICAg LyoqCiAgICAgICogU2VhcmNoIGZvciBhIGxvdyBmcmVxdWVuY3kgdGFibGUgaW4gbGluZWFyIHdh eQogICAgICAqIAogICAgICAqIEBwYXJhbSBidWZmZXIgdGhlIGJ1ZmZlciB3aXRoIHRoZSB0dW5l CkBAIC0xNDYsNDAgKzE3MCwxNjMgQEAKICAgICBib29sIHNlYXJjaFNob3J0TG93Mihjb25zdCB1 bnNpZ25lZCBjaGFyICpidWZmZXIsIGludCBoaWdoLCBpbnQgaW5kZXgpOyAgICAgCiAgICAgCiAg ICAgLyoqCisgICAgICogU2VhcmNoIGZvciBhIGxvdyBmcmVxdWVuY3kgc2NhbGUgdGFibGUgaW4g bGluZWFyIHdheQorICAgICAqIAorICAgICAqIEBwYXJhbSBidWZmZXIgdGhlIGJ1ZmZlciB3aXRo IHRoZSB0dW5lCisgICAgICogQHBhcmFtIGhpZ2ggdGhlIHBvc2l0aW9uIG9mIGhpZ2ggdGFibGUK KyAgICAgKiBAcGFyYW0gaW5kZXggdGhlIGluZGV4IHdoZXJlIHRvIHNlYXJjaCBmb3IgbG93IHRh YmxlCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZXJlIGlzIGEgbG93IGZyZXF1ZW5jeSB0YWJs ZSBpbiB0aGF0IHBvc2l0aW9uIAorICAgICAqLyAKKyAgICBib29sIHNlYXJjaFNjYWxlTG93KGNv bnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgaW50IGhpZ2gsIGludCBpbmRleCk7ICAgCisgICAg CisgICAgLyoqCisgICAgICogU2VhcmNoIGZvciB0aGUgaGlnaCBmcmVxdWVuY3kgdGFibGUgaW4g bGluZWFyIHdheSBmb3Igb2N0YXZlL25vdGUgZm9ybWF0CisgICAgICoKKyAgICAgKiBAcGFyYW0g YnVmZmVyIHRoZSBidWZmZXIgd2l0aCB0aGUgdHVuZQorICAgICAqIEBwYXJhbSBpbmRleCB0aGUg aW5kZXggd2hlcmUgdG8gc3RhcnQgdGhlIHRlc3QKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhl cmUgaXMgYSBoaWdoIGZyZXF1ZW5jeSB0YWJsZSBpbiB0aGF0IHBvc2l0aW9uIAorICAgICAqLyAK KyAgICBib29sIHNlYXJjaE9jdE5vdGVIaWdoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwg aW50IGluZGV4KTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBTZWFyY2ggZm9yIGEgbG93IGZyZXF1 ZW5jeSB0YWJsZSBpbiBsaW5lYXIgd2F5IGZvciBvY3RhdmUvbm90ZQorICAgICAqIAorICAgICAq IEBwYXJhbSBidWZmZXIgdGhlIGJ1ZmZlciB3aXRoIHRoZSB0dW5lCisgICAgICogQHBhcmFtIGhp Z2ggdGhlIHBvc2l0aW9uIG9mIGhpZ2ggdGFibGUKKyAgICAgKiBAcGFyYW0gaW5kZXggdGhlIGlu ZGV4IHdoZXJlIHRvIHNlYXJjaCBmb3IgbG93IHRhYmxlCisgICAgICogQHJldHVybiB0cnVlIGlm IHRoZXJlIGlzIGEgbG93IGZyZXF1ZW5jeSB0YWJsZSBpbiB0aGF0IHBvc2l0aW9uIAorICAgICAq LyAKKyAgICBib29sIHNlYXJjaE9jdE5vdGVMb3coY29uc3QgdW5zaWduZWQgY2hhciAqYnVmZmVy LCBpbnQgaGlnaCwgaW50IGluZGV4KTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBTZWFyY2ggZm9y IHRoZSBoaWdoIGZyZXF1ZW5jeSBpbnZlcnNlIHRhYmxlIGluIGxpbmVhciB3YXkKKyAgICAgKgor ICAgICAqIEBwYXJhbSBidWZmZXIgdGhlIGJ1ZmZlciB3aXRoIHRoZSB0dW5lCisgICAgICogQHBh cmFtIGluZGV4IHRoZSBpbmRleCB3aGVyZSB0byBzdGFydCB0aGUgdGVzdAorICAgICAqIEByZXR1 cm4gdHJ1ZSBpZiB0aGVyZSBpcyBhIGhpZ2ggZnJlcXVlbmN5IHRhYmxlIGluIHRoYXQgcG9zaXRp b24gCisgICAgICovIAorICAgIGJvb2wgc2VhcmNoSW52ZXJzZUhpZ2goY29uc3QgdW5zaWduZWQg Y2hhciAqYnVmZmVyLGludCBpbmRleCk7CisKKyAgICAvKioKKyAgICAgKiBTZWFyY2ggZm9yIGEg bG93IGZyZXF1ZW5jeSBpbnZlcnNlIHRhYmxlIGluIGxpbmVhciB3YXkKKyAgICAgKiAKKyAgICAg KiBAcGFyYW0gYnVmZmVyIHRoZSBidWZmZXIgd2l0aCB0aGUgdHVuZQorICAgICAqIEBwYXJhbSBo aWdoIHRoZSBwb3NpdGlvbiBvZiBoaWdoIHRhYmxlCisgICAgICogQHBhcmFtIGluZGV4IHRoZSBp bmRleCB3aGVyZSB0byBzZWFyY2ggZm9yIGxvdyB0YWJsZQorICAgICAqIEByZXR1cm4gdHJ1ZSBp ZiB0aGVyZSBpcyBhIGxvdyBmcmVxdWVuY3kgdGFibGUgaW4gdGhhdCBwb3NpdGlvbiAKKyAgICAg Ki8gCisgICAgYm9vbCBzZWFyY2hJbnZlcnNlTG93KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZmZl cixpbnQgaGlnaCwgaW50IGluZGV4KTsKKyAgICAKKyAgICAvKioKICAgICAgKiBTZWFyY2ggZm9y IHRhYmxlcyBpbiBsaW5lYXIgd2F5IChsb3cgLyBoaWdoIG9yIGhpZ2ggLyBsb3cpCiAgICAgICog Ci0gICAgICogQHBhcmFtIGJ1ZmZlciB0aGUgYnVmZmVkIHdpdGggdGhlIGRhdGEgdG8gaWRlbnRp ZnkKLSAgICAgKiBAcGFyYW0gbGVuZ3RoIGxlbmd0aCBvZiB0aGUgYnVmZmVyCi0gICAgICogQHJl dHVybiB0aGUgc2lkIHZhbHVlIG9mIEE0IGZyZXF1ZW5jeSAob3IgLTEgaWYgbm90IGZvdW50KSAK KyAgICAgKiBAcGFyYW0gYnVmZmVyIHRoZSBidWZmZXIgd2l0aCB0aGUgdHVuZQorICAgICAqIEBw YXJhbSBoaWdoIHRoZSBwb3NpdGlvbiBvZiBoaWdoIHRhYmxlCisgICAgICogQHBhcmFtIGluZGV4 IHRoZSBpbmRleCB3aGVyZSB0byBzZWFyY2ggZm9yIGxvdyB0YWJsZQorICAgICAqIEByZXR1cm4g dHJ1ZSBpZiB0aGVyZSBpcyBhIGxvdyBmcmVxdWVuY3kgdGFibGUgaW4gdGhhdCBwb3NpdGlvbiAK ICAgICAqLwotICAgIGludCBsaW5lYXJUYWJsZShjb25zdCB1bnNpZ25lZCBjaGFyICpidWZmZXIs IGludCBsZW5ndGgpOworICAgIGJvb2wgbGluZWFyVGFibGUoY29uc3QgdW5zaWduZWQgY2hhciAq YnVmZmVyLCBpbnQgc3RhcnQsIGludCBlbmQpOwogICAgIAogICAgIC8qKgogICAgICAqIFNlYXJj aCBmb3Igc2hvcnQgdGFibGVzIGluIGxpbmVhciB3YXkgKGxvdyAvIGhpZ2ggb3IgaGlnaCAvIGxv dykKICAgICAgKiAKICAgICAgKiBAcGFyYW0gYnVmZmVyIHRoZSBidWZmZWQgd2l0aCB0aGUgZGF0 YSB0byBpZGVudGlmeQotICAgICAqIEBwYXJhbSBsZW5ndGggbGVuZ3RoIG9mIHRoZSBidWZmZXIK LSAgICAgKiBAcmV0dXJuIHRoZSBzaWQgdmFsdWUgb2YgQTQgZnJlcXVlbmN5IChvciAtMSBpZiBu b3QgZm91bnQpIAorICAgICAqIEBwYXJhbSBzdGFydCBzdGFydCBwb3NpdGlvbiBpbiBidWZmZXIK KyAgICAgKiBAcGFyYW0gZW5kIGVuZCBwb3NpdGlvbiBpbiBidWZmZXIKKyAgICAgKiBAcmV0dXJu IHRydWUgaWYgdGhlIHRhYmxlIGlzIGZvdW50CiAgICAgKi8KLSAgICBpbnQgc2hvcnRMaW5lYXJU YWJsZShjb25zdCB1bnNpZ25lZCBjaGFyICpidWZmZXIsIGludCBsZW5ndGgpOyAgICAKKyAgICBi b29sIHNob3J0TGluZWFyVGFibGUoY29uc3QgdW5zaWduZWQgY2hhciAqYnVmZmVyLCBpbnQgc3Rh cnQsIGludCBlbmQpOyAgICAKICAgICAKICAgICAvKioKICAgICAgKiBTZWFyY2ggZm9yIHRhYmxl cyBpbiBjb21iaW5lZCB3YXkgKGxvdyArIGhpZ2ggb3IgaGlnaCArIGxvdykKICAgICAgKiAKICAg ICAgKiBAcGFyYW0gYnVmZmVyIHRoZSBidWZmZWQgd2l0aCB0aGUgZGF0YSB0byBpZGVudGlmeQot ICAgICAqIEBwYXJhbSBsZW5ndGggbGVuZ3RoIG9mIHRoZSBidWZmZXIKLSAgICAgKiBAcmV0dXJu IHRoZSBzaWQgdmFsdWUgb2YgQTQgZnJlcXVlbmN5IChvciAtMSBpZiBub3QgZm91bnQpIAorICAg ICAqIEBwYXJhbSBzdGFydCBzdGFydCBwb3NpdGlvbiBpbiBidWZmZXIKKyAgICAgKiBAcGFyYW0g ZW5kIGVuZCBwb3NpdGlvbiBpbiBidWZmZXIKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHRh YmxlIGlzIGZvdW50CiAgICAgKi8KLSAgICBpbnQgY29tYmluZWRUYWJsZShjb25zdCB1bnNpZ25l ZCBjaGFyICpidWZmZXIsIGludCBsZW5ndGgpOyAgICAKKyAgICBib29sIGNvbWJpbmVkVGFibGUo Y29uc3QgdW5zaWduZWQgY2hhciAqYnVmZmVyLCBpbnQgc3RhcnQsIGludCBlbmQpOyAgICAKICAg ICAKICAgICAvKioKICAgICAgKiBTZWFyY2ggZm9yIHNob3J0IHRhYmxlcyBpbiBjb21iaW5lZCB3 YXkgKGxvdyArIGhpZ2ggb3IgaGlnaCArIGxvdykKICAgICAgKiAKICAgICAgKiBAcGFyYW0gYnVm ZmVyIHRoZSBidWZmZWQgd2l0aCB0aGUgZGF0YSB0byBpZGVudGlmeQotICAgICAqIEBwYXJhbSBs ZW5ndGggbGVuZ3RoIG9mIHRoZSBidWZmZXIKLSAgICAgKiBAcmV0dXJuIHRoZSBzaWQgdmFsdWUg b2YgQTQgZnJlcXVlbmN5IChvciAtMSBpZiBub3QgZm91bnQpIAorICAgICAqIEBwYXJhbSBzdGFy dCBzdGFydCBwb3NpdGlvbiBpbiBidWZmZXIKKyAgICAgKiBAcGFyYW0gZW5kIGVuZCBwb3NpdGlv biBpbiBidWZmZXIKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHRhYmxlIGlzIGZvdW50Cisg ICAgICovCisgICAgYm9vbCBzaG9ydENvbWJpbmVkVGFibGUoY29uc3QgdW5zaWduZWQgY2hhciAq YnVmZmVyLCBpbnQgc3RhcnQsIGludCBlbmQpOyAgCisgICAgCisgICAgLyoqCisgICAgICogU2Vh cmNoIGZvciB0YWJsZXMgaW4gbGluZWFyIHdheSAobG93IC8gaGlnaCBvciBoaWdoIC8gbG93KSB0 aGF0IGhhcworICAgICAqIHNjYWxlIGZvcm1hdCAob25seSBDREVGR0FCKQorICAgICAqICAKKyAg ICAgKiBAcGFyYW0gYnVmZmVyIHRoZSBidWZmZWQgd2l0aCB0aGUgZGF0YSB0byBpZGVudGlmeQor ICAgICAqIEBwYXJhbSBzdGFydCBzdGFydCBwb3NpdGlvbiBpbiBidWZmZXIKKyAgICAgKiBAcGFy YW0gZW5kIGVuZCBwb3NpdGlvbiBpbiBidWZmZXIKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhl IHRhYmxlIGlzIGZvdW50CisgICAgICovCisgICAgYm9vbCBsaW5lYXJTY2FsZVRhYmxlKGNvbnN0 IHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgaW50IHN0YXJ0LCBpbnQgZW5kKTsKKyAgICAKKyAgICAv KioKKyAgICAgKiBTZWFyY2ggZm9yIHRhYmxlcyBpbiBsaW5lYXIgd2F5IChsb3cgLyBoaWdoIG9y IGhpZ2ggLyBsb3cpIHdpdGggaW52ZXJzZSBkaXJlY3Rpb24KKyAgICAgKiAgCisgICAgICogQHBh cmFtIGJ1ZmZlciB0aGUgYnVmZmVkIHdpdGggdGhlIGRhdGEgdG8gaWRlbnRpZnkKKyAgICAgKiBA cGFyYW0gc3RhcnQgc3RhcnQgcG9zaXRpb24gaW4gYnVmZmVyCisgICAgICogQHBhcmFtIGVuZCBl bmQgcG9zaXRpb24gaW4gYnVmZmVyCisgICAgICovCisgICAgYm9vbCBsaW5lYXJJbnZlcnNlVGFi bGUoY29uc3QgdW5zaWduZWQgY2hhciAqYnVmZmVyLCBpbnQgc3RhcnQsIGludCBlbmQpOworICAg IAorICAgIC8qKgorICAgICAqIExvb2tzIGZvciBhbiBoaWdoIG9jdGF2ZSB0YWJsZQorICAgICAq IAorICAgICAqIEBwYXJhbSBidWZmZXIgdGhlIGJ1ZmZlZCB3aXRoIHRoZSBkYXRhIHRvIGlkZW50 aWZ5CisgICAgICogQHBhcmFtIHN0YXJ0IHN0YXJ0IHBvc2l0aW9uIGluIGJ1ZmZlcgorICAgICAq IEBwYXJhbSBlbmQgZW5kIHBvc2l0aW9uIGluIGJ1ZmZlcgorICAgICAqIEByZXR1cm4gdHJ1ZSBp ZiBpdCBpcyBmaW5kCisgICAgICovCisgICAgIGJvb2wgaGlnaE9jdGF2ZTEyKGNvbnN0IHVuc2ln bmVkIGNoYXIgKmJ1ZmZlciwgaW50IHN0YXJ0LCBpbnQgZW5kKTsKKyAgICAgCisgICAgIC8qKgor ICAgICAgKiBMb29rcyBmb3IgYW4gaGlnaCBvY3RhdmUgdGFibGUKKyAgICAgICogCisgICAgICAq IEBwYXJhbSBidWZmZXIgdGhlIGJ1ZmZlZCB3aXRoIHRoZSBkYXRhIHRvIGlkZW50aWZ5CisgICAg ICAqIEBwYXJhbSBzdGFydCBzdGFydCBwb3NpdGlvbiBpbiBidWZmZXIKKyAgICAgICogQHBhcmFt IGVuZCBlbmQgcG9zaXRpb24gaW4gYnVmZmVyCisgICAgICAqIEByZXR1cm4gdHJ1ZSBpZiBpdCBp cyBmaW5kCisgICAgICAqLworICAgIGJvb2wgaGlnaE9jdGF2ZUNvbWJpbmVkKGNvbnN0IHVuc2ln bmVkIGNoYXIgKmJ1ZmZlciwgaW50IHN0YXJ0LCBpbnQgZW5kKTsgCisgICAgCisgICAgLyoqCisg ICAgICogTG9va3MgZm9yIGFuIGhpZ2ggb2N0YXZlIHRhYmxlCisgICAgICogCisgICAgICogQHBh cmFtIGJ1ZmZlciB0aGUgYnVmZmVkIHdpdGggdGhlIGRhdGEgdG8gaWRlbnRpZnkKKyAgICAgKiBA cGFyYW0gc3RhcnQgc3RhcnQgcG9zaXRpb24gaW4gYnVmZmVyCisgICAgICogQHBhcmFtIGVuZCBl bmQgcG9zaXRpb24gaW4gYnVmZmVyCisgICAgICogQHJldHVybiB0cnVlIGlmIGl0IGlzIGZpbmQK KyAgICAgKi8KKyAgICBib29sIGxvd09jdGF2ZUNvbWJpbmVkKGNvbnN0IHVuc2lnbmVkIGNoYXIg KmJ1ZmZlciwgaW50IHN0YXJ0LCBpbnQgZW5kKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBMb29r cyBmb3IgYW4gaGlnaCBvY3RhdmUgdGFibGUKKyAgICAgKiAKKyAgICAgKiBAcGFyYW0gYnVmZmVy IHRoZSBidWZmZWQgd2l0aCB0aGUgZGF0YSB0byBpZGVudGlmeQorICAgICAqIEBwYXJhbSBzdGFy dCBzdGFydCBwb3NpdGlvbiBpbiBidWZmZXIKKyAgICAgKiBAcGFyYW0gZW5kIGVuZCBwb3NpdGlv biBpbiBidWZmZXIKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgaXQgaXMgZmluZAorICAgICAqLwor ICAgIGJvb2wgaGlnaE9jdGF2ZShjb25zdCB1bnNpZ25lZCBjaGFyICpidWZmZXIsIGludCBzdGFy dCwgaW50IGVuZCk7CisgICAgCisgICAgLyoqCisgICAgICogU2VhcmNoIGZvciB0YWJsZXMgaW4g bGluZWFyIHdheSAobG93IC8gaGlnaCBvciBoaWdoIC8gbG93KSBpbiBvY3RhdmUvbm90ZSAKKyAg ICAgKiBmb3JtYXQKKyAgICAgKiAgCisgICAgICogQHBhcmFtIGJ1ZmZlciB0aGUgYnVmZmVkIHdp dGggdGhlIGRhdGEgdG8gaWRlbnRpZnkKKyAgICAgKiBAcGFyYW0gc3RhcnQgc3RhcnQgcG9zaXRp b24gaW4gYnVmZmVyCisgICAgICogQHBhcmFtIGVuZCBlbmQgcG9zaXRpb24gaW4gYnVmZmVyCisg ICAgICogQHJldHVybiB0cnVlIGlmIGl0IGlzIGZpbmQKICAgICAqLwotICAgIGludCBzaG9ydENv bWJpbmVkVGFibGUoY29uc3QgdW5zaWduZWQgY2hhciAqYnVmZmVyLCBpbnQgbGVuZ3RoKTsgIAor ICAgIGJvb2wgbGluZWFyT2N0Tm90ZVRhYmxlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwg aW50IHN0YXJ0LCBpbnQgZW5kKTsKICAgICAKICAgICAvLyBWZXJzaW9uIG51bWJlci9jb3B5cmln aHQgc3RyaW5nCiAgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBtX3ZlcnNpb25TdHJpbmc7 ICAgICAgCmRpZmYgLU5hdXJ3IC94c2lkcGxheTItY29kZS1yMjg4LXRydW5rL3hzaWRwbGF5L3Ny Yy9zb25nbGVuZGIvRmlsZS5jcHAgL3hzaWRwbGF5Mi1jb2RlLXIyOTQtdHJ1bmsveHNpZHBsYXkv c3JjL3NvbmdsZW5kYi9GaWxlLmNwcAotLS0gL3hzaWRwbGF5Mi1jb2RlLXIyODgtdHJ1bmsveHNp ZHBsYXkvc3JjL3NvbmdsZW5kYi9GaWxlLmNwcAkyMDExLTA2LTE2IDIzOjA4OjAwLjAwMDAwMDAw MCArMDIwMAorKysgL3hzaWRwbGF5Mi1jb2RlLXIyOTQtdHJ1bmsveHNpZHBsYXkvc3JjL3Nvbmds ZW5kYi9GaWxlLmNwcAkyMDIzLTAyLTE5IDIxOjAyOjA3LjAwMDAwMDAwMCArMDEwMApAQCAtNDEs OCArNDEsOCBAQAogICAgIH0KIH07CiAKLWNvbnN0IGNoYXIgX1NvbmdMZW5ndGhGaWxlX3RleHRf Y2FudE9wZW5GaWxlW10gPSAiRmFpbGVkIHRvIG9wZW4gU29uZ2xlbmd0aHMudHh0ISI7Ci1jb25z dCBjaGFyIF9Tb25nTGVuZ3RoRmlsZV90ZXh0X2NhbnRMb2FkRmlsZVtdID0gIkZhaWxlZCB0byBy ZWFkIFNvbmdsZW5ndGhzLnR4dCEiOworY29uc3QgY2hhciBfU29uZ0xlbmd0aEZpbGVfdGV4dF9j YW50T3BlbkZpbGVbXSA9ICJGYWlsZWQgdG8gb3BlbiBTb25nbGVuZ3Rocy5tZDUhIjsKK2NvbnN0 IGNoYXIgX1NvbmdMZW5ndGhGaWxlX3RleHRfY2FudExvYWRGaWxlW10gPSAiRmFpbGVkIHRvIHJl YWQgU29uZ2xlbmd0aHMubWQ1ISI7CiBjb25zdCBjaGFyIF9Tb25nTGVuZ3RoRmlsZV90ZXh0X25v dEVub3VnaE1lbW9yeVtdID0gIk5vdCBlbm91Z2ggbWVtb3J5ISI7CiBjb25zdCBjaGFyIF9Tb25n TGVuZ3RoRmlsZV90ZXh0X25vRW50cnlbXSA9ICJObyBkYXRhYmFzZSBlbnRyeSBmb3IgdGhpcyBm aWxlISI7CiBjb25zdCBjaGFyIF9Tb25nTGVuZ3RoRmlsZV90ZXh0X2JhZFNvbmdbXSA9ICJSZXF1 ZXN0ZWQgc29uZyBudW1iZXIgdG9vIGhpZ2ghIFdyb25nIHNvbmdsZW5ndGhzIGZpbGUgdmVyc2lv bj8iOwpkaWZmIC1OYXVydyAveHNpZHBsYXkyLWNvZGUtcjI4OC10cnVuay94c2lkcGxheS9zcmMv c29uZ2xlbmRiL0l0ZW0uaCAveHNpZHBsYXkyLWNvZGUtcjI5NC10cnVuay94c2lkcGxheS9zcmMv c29uZ2xlbmRiL0l0ZW0uaAotLS0gL3hzaWRwbGF5Mi1jb2RlLXIyODgtdHJ1bmsveHNpZHBsYXkv c3JjL3NvbmdsZW5kYi9JdGVtLmgJMjAwNy0wOC0yMyAyMToyNTozOS4wMDAwMDAwMDAgKzAyMDAK KysrIC94c2lkcGxheTItY29kZS1yMjk0LXRydW5rL3hzaWRwbGF5L3NyYy9zb25nbGVuZGIvSXRl bS5oCTIwMjMtMDItMTkgMjE6MDI6MDcuMDAwMDAwMDAwICswMTAwCkBAIC0yMSwxMiArMjEsMTQg QEAKIHsKICBwdWJsaWM6CiAJaW50IHBsYXl0aW1lOyAgLy8gaW4gc2Vjb25kcworCWludCBtaWxs aTsgICAgIC8vIG1pbGxpc2Vjb25kcwogCQogCVNvbmdMZW5ndGhEQml0ZW0oKSAgeyBjbGVhcigp OyB9CiAKIAl2b2lkIGNsZWFyKCkKIAl7CiAJCXBsYXl0aW1lID0gMDsKKwkJbWlsbGkgPSAwOwog CX0KIH07CiAKZGlmZiAtTmF1cncgL3hzaWRwbGF5Mi1jb2RlLXIyODgtdHJ1bmsveHNpZHBsYXkv c3JjL3dyYXBwZXIvTUQ1LmNwcCAveHNpZHBsYXkyLWNvZGUtcjI5NC10cnVuay94c2lkcGxheS9z cmMvd3JhcHBlci9NRDUuY3BwCi0tLSAveHNpZHBsYXkyLWNvZGUtcjI4OC10cnVuay94c2lkcGxh eS9zcmMvd3JhcHBlci9NRDUuY3BwCTIwMDctMDgtMjMgMjE6MjU6MzkuMDAwMDAwMDAwICswMjAw CisrKyAveHNpZHBsYXkyLWNvZGUtcjI5NC10cnVuay94c2lkcGxheS9zcmMvd3JhcHBlci9NRDUu Y3BwCTIwMjMtMDItMTkgMjE6MDI6MDcuMDAwMDAwMDAwICswMTAwCkBAIC0xNDcsNyArMTQ3LDcg QEAKIHZvaWQKIE1ENTo6cmVzZXQoKQogewotICAgIGNvdW50WzBdID0gY291bnRbMV0gPSBjb3Vu dFsyXSA9IDA7CisgICAgY291bnRbMF0gPSBjb3VudFsxXSA9IDA7CiAgICAgYWJjZFswXSA9IDB4 Njc0NTIzMDE7CiAgICAgYWJjZFsxXSA9IDB4ZWZjZGFiODk7CiAgICAgYWJjZFsyXSA9IDB4OThi YWRjZmU7CmRpZmYgLU5hdXJ3IC94c2lkcGxheTItY29kZS1yMjg4LXRydW5rL3hzaWRwbGF5L3Ny Yy93cmFwcGVyL3NpZC9MaWJTaWRwbGF5MS5jcHAgL3hzaWRwbGF5Mi1jb2RlLXIyOTQtdHJ1bmsv eHNpZHBsYXkvc3JjL3dyYXBwZXIvc2lkL0xpYlNpZHBsYXkxLmNwcAotLS0gL3hzaWRwbGF5Mi1j b2RlLXIyODgtdHJ1bmsveHNpZHBsYXkvc3JjL3dyYXBwZXIvc2lkL0xpYlNpZHBsYXkxLmNwcAky MDIwLTA2LTIwIDE3OjMwOjIxLjAwMDAwMDAwMCArMDIwMAorKysgL3hzaWRwbGF5Mi1jb2RlLXIy OTQtdHJ1bmsveHNpZHBsYXkvc3JjL3dyYXBwZXIvc2lkL0xpYlNpZHBsYXkxLmNwcAkyMDIzLTAy LTE5IDIxOjAyOjA3LjAwMDAwMDAwMCArMDEwMApAQCAtNzY3LDcgKzc2Nyw3IEBACiAgIFFTdHJp bmcgdG1wOwogICBwRGlnZXN0LT50cnVuY2F0ZSgwKTsKICAgZm9yIChpbnQgZGkgPSAwOyBkaSA8 IDE2OyArK2RpKQotICAgICpwRGlnZXN0ICs9IHRtcC5zcHJpbnRmKCIlMDJ4IiwoaW50KW15TUQ1 LmdldERpZ2VzdCgpW2RpXSk7CisgICAgKnBEaWdlc3QgKz0gdG1wLmFzcHJpbnRmKCIlMDJ4Iiwo aW50KW15TUQ1LmdldERpZ2VzdCgpW2RpXSk7CiAgIHJldHVybiAqcERpZ2VzdDsgIAogfQogCkBA IC03NzgsNiArNzc4LDExIEBACiAgKi8KIHZvaWQgTGliU2lkcGxheTFfaW1wbDo6Y3JlYXRlTUQ1 KE1ENSYgbXlNRDUpIHsKICAgaWYgKGlzQ2FjaGVkICYmIHN0YXR1cykgeworICAgIAorICAgIC8v IEluY2x1ZGUgQzY0IGRhdGEuCisgICAgbXlNRDUuYXBwZW5kKGNhY2hlUHRyLCBmaWxlT2Zmc2V0 K2luZm8uYzY0ZGF0YUxlbik7IC8vaW5mby5kYXRhRmlsZUxlbik7CisgICAgCisgICAgLyoqCiAg ICAgLy8gSW5jbHVkZSBDNjQgZGF0YS4KICAgICBteU1ENS5hcHBlbmQoY2FjaGVQdHIrZmlsZU9m ZnNldCxpbmZvLmM2NGRhdGFMZW4pOwogICAgIHVieXRlIHRtcFsyXTsKQEAgLTgxMiw2ICs4MTcs OCBAQAogICAgIC8vIGVpdGhlciBjcmVhdGUgdHdvIGRpZmZlcmVudCBmaW5nZXJwcmludHMgZGVw ZW5kaW5nIG9uCiAgICAgLy8gdGhlIGNsb2NrIHNwZWVkIGNob3NlbiBieSB0aGUgcGxheWVyLCBv ciB0aGVyZSBjb3VsZCBiZQogICAgIC8vIHR3byBkaWZmZXJlbnQgdmFsdWVzIHN0b3JlZCBpbiB0 aGUgZGF0YWJhc2UvY2FjaGUuCisgICAgCisgICAgKi8KICAgfSAgCiB9IAogCmRpZmYgLU5hdXJ3 IC94c2lkcGxheTItY29kZS1yMjg4LXRydW5rL3hzaWRwbGF5L3NyYy93cmFwcGVyL3NpZC9MaWJT aWRwbGF5RnAuY3BwIC94c2lkcGxheTItY29kZS1yMjk0LXRydW5rL3hzaWRwbGF5L3NyYy93cmFw cGVyL3NpZC9MaWJTaWRwbGF5RnAuY3BwCi0tLSAveHNpZHBsYXkyLWNvZGUtcjI4OC10cnVuay94 c2lkcGxheS9zcmMvd3JhcHBlci9zaWQvTGliU2lkcGxheUZwLmNwcAkyMDIwLTA2LTIwIDE3OjMw OjIxLjAwMDAwMDAwMCArMDIwMAorKysgL3hzaWRwbGF5Mi1jb2RlLXIyOTQtdHJ1bmsveHNpZHBs YXkvc3JjL3dyYXBwZXIvc2lkL0xpYlNpZHBsYXlGcC5jcHAJMjAyMy0wMi0xOSAyMTowMjowNy4w MDAwMDAwMDAgKzAxMDAKQEAgLTEwNzIsNyArMTA3Miw3IEBACiAgICAgcmV0dXJuICpwRGlnZXN0 OyAgCiAgICAqLwogICAgcERpZ2VzdC0+Y2xlYXIoKTsKLSAgIHBEaWdlc3QtPmFwcGVuZChTaWRU dW5lOjpjcmVhdGVNRDUoKSk7CisgICBwRGlnZXN0LT5hcHBlbmQoU2lkVHVuZTo6Y3JlYXRlTUQ1 TmV3KCkpOwogICAgcmV0dXJuICpwRGlnZXN0OwogfQogCg== EOF1 patch -p3 < xsidplay_diff_r288-r294_RAW.patch cat | base64 -d > xsidplay_diff_r295-r298_RAW.patch << EOF2 ZGlmZiAtTmF1cncgL3hzaWRwbGF5Mi1jb2RlLXIyOTUtdHJ1bmsveHNpZHBsYXkvc3JjL3NpZGZy ZXEvc2lkZnJlcS5jcHAgL3hzaWRwbGF5Mi1jb2RlLXIyOTgtdHJ1bmsveHNpZHBsYXkvc3JjL3Np ZGZyZXEvc2lkZnJlcS5jcHAKLS0tIC94c2lkcGxheTItY29kZS1yMjk1LXRydW5rL3hzaWRwbGF5 L3NyYy9zaWRmcmVxL3NpZGZyZXEuY3BwCTIwMjMtMDMtMDEgMTg6NTk6MjcuMDAwMDAwMDAwICsw MTAwCisrKyAveHNpZHBsYXkyLWNvZGUtcjI5OC10cnVuay94c2lkcGxheS9zcmMvc2lkZnJlcS9z aWRmcmVxLmNwcAkyMDIzLTA1LTIxIDIxOjAwOjI2LjAwMDAwMDAwMCArMDIwMApAQCAtMjkyLDYg KzI5Miw5IEBACiAgICAgLy8gY2F0Y2ggYSB2ZXJ5IGJpZyBlcnJvciAob3JpZ2luYXRlZCBpbiBo aWdoIHRhYmxlKSBvbiBWaWJyYW50cy9KTyBub3RlIHRhYmxlIGF0IDQyNEh6IAogICAgIGlmIChp PT04ICYmIGRpZmY9PTMwNzQpIGNvbnRpbnVlOwogICAgIAorICAgIC8vIGNhdGNoIGFuIGVycm8g aW4gQnl0ZW1hcmUgTXVzaWMgRWRpdG9yICh0YWJsZSA0NDBIeikKKyAgICBpZiAoaT09OCAmJiBk aWZmPT0yNSkgY29udGludWU7CisgICAgCiAgICAgLy8gY2F0Y2ggaGEgZXJyb3Igb24gREVNT1Mv TS1SL01heF9NaXguc2lkICh0YWJsZSA0NDBIejsgQTIgLSB2YWx1ZXMgMDc0NCBpbnN0ZWFkIG9m IDA3NTEpCiAgICAgaWYgKGk9PTkgJiYgZGlmZj09NDIpIGNvbnRpbnVlOwogICAgIApAQCAtMzk4 LDkgKzQwMSwxMiBAQAogICAgICAgaWYgKGk9PTEwICYmIGRpZmY9PTMwMikgY29udGludWU7IAog ICAgIH0gICAgICAKICAgICAKLSAgICAvLyBjYXRjaCBhbmQgYXJyb3IgaW4gTWVnYXNvdW5kCisg ICAgLy8gY2F0Y2ggYW5kIGVycm9yIGluIE1lZ2Fzb3VuZAogICAgIGlmIChpPT0zICYmIGRpZmY9 PTE2KSBjb250aW51ZTsKICAgICAKKyAgICAvLyBjYXRjaCBhbmQgZXJyb3IgaW4gTWVnYXNvdW5k CisgICAgaWYgKGk9PTMgJiYgZGlmZj09MTkpIGNvbnRpbnVlOworICAgIAogICAgIGlmIChkaWZm PkVSUk9SKSByZXR1cm4gZmFsc2U7CiAgIH0KICAgIApAQCAtNzg5LDcgKzc5NSw3IEBACiAgKi8K IGJvb2wgU2lkRnJlcTo6Y29tYmluZWRUYWJsZShjb25zdCB1bnNpZ25lZCBjaGFyICpidWZmZXIs IGludCBzdGFydCwgaW50IGVuZCkgewogICBpbnQgc2lkOwotICBpbnQgaTsKKyAgaW50IGksajsK ICAgaW50IGhpZ2g9LTE7CiAgIGludCBsb3c9LTE7CiAgICAgIApAQCAtNzk3LDM0ICs4MDMsMzIg QEAKICAgZm9yIChpPXN0YXJ0OyBpPGVuZC1UQUJMRSoyOyBpKyspIHsKICAgICBpZiAoc2VhcmNo SGlnaDIoYnVmZmVyLCBpKSkgewogICAgICAgaGlnaD1pOworICAgICAgbG93PS0xOworICAgICAg CisgICAgICAvLyBjaGVjayBmb3IgbG93IGZyZXF1ZW5jeSB0YWJsZQorICAgICAgZm9yIChqPXN0 YXJ0OyBqPGVuZC1UQUJMRSoyOyBqKyspIHsKKyAgICAgICAgaWYgKGohPWhpZ2gpIHsKKyAgICAg ICAgICBpZiAoc2VhcmNoTG93MihidWZmZXIsIGhpZ2gsIGopKSB7CisgICAgICAgICAgICBsb3c9 ajsKICAgICAgIGJyZWFrOyAgICAgICAgIAogICAgIH0KICAgfSAgCisgICAgICB9ICAKKyAgICAg IGlmIChsb3chPS0xKSBicmVhazsgICAgIAorICAgIH0KKyAgfSAgCiAKICNpZmRlZiBERUJVR19T SURGUkVRICAgIAogICBzdGQ6OmNlcnIgPDwgIkg9IiA8PCBoaWdoIDw8ICJcbiI7CiAjZW5kaWYg IAogICAgICAKLSAgLy8gbG9vayBpZiBoaWdoIHRhYmxlIHdhcyBmb3VudAotICBpZiAoaGlnaD09 LTEpIHJldHVybiBmYWxzZTsgIAotICAKLSAgLy8gY2hlY2sgZm9yIGxvdyBmcmVxdWVuY3kgdGFi bGUKLSAgZm9yIChpPXN0YXJ0OyBpPGVuZC1UQUJMRSoyOyBpKyspIHsKLSAgICBpZiAoaSE9aGln aCkgewotICAgICAgaWYgKHNlYXJjaExvdzIoYnVmZmVyLCBoaWdoLCBpKSkgewotICAgICAgICBs b3c9aTsKLSAgICAgICAgYnJlYWs7ICAgICAgICAgCi0gICAgICB9Ci0gICAgfQotICB9CisgIC8v IGxvb2sgaWYgdGFibGUgd2FzIGZvdW50CisgIGlmIChoaWdoPT0tMSB8fCBsb3c9PS0xKSByZXR1 cm4gZmFsc2U7ICAKICAgCiAjaWZkZWYgREVCVUdfU0lERlJFUSAgICAKICAgc3RkOjpjZXJyIDw8 ICJMPSIgPDwgbG93IDw8ICJcbiI7CiAjZW5kaWYgIAogICAKLSAgLy8gbG9vayBpZiBsb3cgdGFi bGUgd2FzIGZvdW50Ci0gIGlmIChsb3c9PS0xKSByZXR1cm4gZmFsc2U7ICAKLSAgCiAgIC8vIGdl dCB0aGUgQTQgbm90ZQogICBzaWQ9KGludClidWZmZXJbaGlnaCtBNCoyXSoyNTYrKGludClidWZm ZXJbbG93K0E0KjJdOyAKICAgCg== EOF2 patch -p3 < xsidplay_diff_r295-r298_RAW.patch %build %set_build_flags sed -i 's|#SET(CMAKE_CXX_FLAGS " -O2|SET(CMAKE_CXX_FLAGS " -O2|' CMakeLists.txt sed -i 's|SET(CMAKE_CXX_FLAGS " -O2 -H -fPIC")|SET(CMAKE_CXX_FLAGS " -H -fPIC -std=c++11 %{build_cxxflags} -fdata-sections -ffunction-sections %{build_ldflags} -Wl,-s,--gc-sections")|' CMakeLists.txt sed -i 's|SET(CMAKE_CXX_FLAGS " -g -O0 -H|#SET(CMAKE_CXX_FLAGS " -g -O0 -H|' CMakeLists.txt sed -i 's| -g -| -g0 -|' CMakeLists.txt sed -i 's|option (WITH_TSID "Use TSID library" ON)|#option (WITH_TSID "Use TSID library" ON)|' CMakeLists.txt sed -i 's|option (SID_WITH_SIDPLAY1 "UseSidplay1 library" ON)|#option (SID_WITH_SIDPLAY1 "UseSidplay1 library" ON)|' CMakeLists.txt # fix redeclaration error sed -i 's|#ifndef SID_WITH_SIDPLAY1|#ifdef SID_WITH_SIDPLAY1|' src/MainDialog.cpp # set cmake (min) 3.5 sed -i 's|required(VERSION 2.8)|required(VERSION 3.10)|' CMakeLists.txt ./compile.sh %install mkdir -p %buildroot{%_bindir,%_datadir/%name,%_datadir/applications,%_datadir/fonts,%_datadir/pixmaps} cp -a build/src/%name AUTHORS COPYING ChangeLog README sidid.cfg sidid.nfo %buildroot%_datadir/%name cp -a %name.desktop %buildroot%_datadir/applications/%name.desktop cp -a %name.xpm %buildroot%_datadir/pixmaps/%name.xpm cp -a src/fonts/C64_Pro_Mono-STYLE.ttf %buildroot%_datadir/fonts/C64_Pro_Mono-STYLE.ttf hardening-check -v --nobranchprotection build/src/%name cat > %buildroot%_bindir/%name << EOF #!/bin/bash cd %_datadir/%name ./%name "\$@" EOF %files %defattr(644, root, root, 755) %_datadir/%name/* %attr(755,root,root) %_bindir/%name %attr(755,root,root) %_datadir/%name/%name %_datadir/applications/%name.desktop %_datadir/pixmaps/%name.xpm %_datadir/fonts/* %changelog * Fri Mar 29 2024 samoht0 2.1.9 - history cleanup * Sat May 27 2023 samoht0 2.1.9 - backport svn changes (r296-r298) using a patch