ZGlmZiAtLWdpdCBhL3NyYy9NYWtlX21pbmcubWFrIGIvc3JjL01ha2VfbWluZy5tYWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY3ODA2MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9NYWtlX21pbmcubWFrCkBAIC0wLDAgKzEsNTU1IEBACisjIE1ha2VmaWxlIGZvciBWSU0gb24gV2luMzIsIHVzaW5nICdFR0NTL21pbmd3MzIgMS4xLjInLgorIyBJbmZvIGF0IGh0dHA6Ly93d3cubWluZ3cub3JnCisjIEFsc28gcmVxdWlyZXMgJ0dOVSBtYWtlIDMuNzcnLCB3aGljaCB5b3UgY2FuIGdldCB0aHJvdWdoIGEgbGluaworIyB0byAnSmFuSmFhcCdzIHBhZ2UgZnJvbSB0aGUgYWJvdmUgcGFnZS4KKyMgR2V0IG1pc3NpbmcgbGlicmFyaWVzIGZyb20gaHR0cDovL2dudXdpbjMyLnNmLm5ldC4KKyMKKyMgVGVzdGVkIG9uIFdpbjMyIE5UIDQgYW5kIFdpbjk1LgorIworIyBUbyBtYWtlIGV2ZXJ5dGhpbmcsIGp1c3QgJ21ha2UgLWYgTWFrZV9taW5nLm1haycKKyMgVG8gbWFrZSBqdXN0IGUuZy4gZ3ZpbS5leGUsICdtYWtlIC1mIE1ha2VfbWluZy5tYWsgZ3ZpbS5leGUnCisjIEFmdGVyIGEgcnVuLCB5b3UgY2FuICdtYWtlIC1mIE1ha2VfbWluZy5tYWsgY2xlYW4nIHRvIGNsZWFuIHVwCisjCisjIE5PVEU6IFNvbWV0aW1lcyAnR05VIE1ha2UnIHdpbGwgc3RvcCBhZnRlciBidWlsZGluZyB2aW1ydW4uZXhlIC0tIEkgdGhpbmsKKyMgaXQncyBqdXN0IHJ1biBvdXQgb2YgbWVtb3J5IG9yIHNvbWV0aGluZy4gIFJ1biBhZ2FpbiwgYW5kIGl0IHdpbGwgY29udGludWUKKyMgd2l0aCAneHhkJy4KKyMKKyMgIm1ha2UgdXB4IiBtYWtlcyAqY29tcHJlc3NlZCogdmVyc2lvbnMgb2YgdGhlIEdVSSBhbmQgY29uc29sZSBFWEVzLCB1c2luZyB0aGUKKyMgZXhjZWxsZW50IFVQWCBjb21wcmVzc29yOgorIyAgICAgaHR0cDovL3VweC5zb3VyY2Vmb3JnZS5uZXQvCisjCisjIE1haW50YWluZWQgYnkgUm9uIEFhcm9uIDxyb25haGFyb25AeWFob28uY29tPgorIyB1cGRhdGVkIDIwMDMgSmFuIDIwCisKKyM+Pj4+PiBjaG9vc2Ugb3B0aW9uczoKKyMgc2V0IHRvIHllcyBmb3IgYSBkZWJ1ZyBidWlsZAorREVCVUc9bm8KKyMgc2V0IHRvIFNJWkUgZm9yIHNpemUsIFNQRUVEIGZvciBzcGVlZCwgTUFYU1BFRUQgZm9yIG1heGltaXVtIG9wdGltaXphdGlvbgorT1BUSU1JWkU9TUFYU1BFRUQKKyMgc2V0IHRvIHllcyB0byBtYWtlIGd2aW0sIG5vIGZvciB2aW0KK0dVST15ZXMKKyMgRkVBVFVSRVM9W1RJTlkgfCBTTUFMTCAgfCBOT1JNQUwgfCBCSUcgfCBIVUdFXQorIyBzZXQgdG8gVElOWSB0byBtYWtlIG1pbmltYWwgdmVyc2lvbiAoZmV3IGZlYXR1cmVzKQorRkVBVFVSRVM9QklHCisjIHNldCB0byBvbmUgb2YgaTM4NiwgaTQ4NiwgaTU4NiwgaTY4NiBhcyB0aGUgKnRhcmdldCogcHJvY2Vzc29yCitDUFVOUj1pNjg2CisjIHNldCB0byBzYW1lIGNob2ljZXMgYXMgJ0NQVU5SJywgYnV0IHdpbGwgcHJldmVudCBydW5uaW5nIG9uICdsb3dlcicgY3B1czoKK0FSQ0g9aTM4NgorIyBzZXQgdG8geWVzIHRvIGNyb3NzLWNvbXBpbGUgZnJvbSB1bml4OyBubz1uYXRpdmUgV2luZG93cworQ1JPU1M9bm8KKyMgc2V0IHRvIHBhdGggdG8gaWNvbnYuaCBhbmQgbGliaWNvbnYuYSB0byBlbmFibGUgdXNpbmcgJ2ljb252LmRsbCcKKyNJQ09OVj0iLiIKK0lDT05WPXllcworR0VUVEVYVD15ZXMKKyMgc2V0IHRvIHllcyB0byBpbmNsdWRlIG11bHRpYnl0ZSBzdXBwb3J0CitNQllURT15ZXMKKyMgc2V0IHRvIHllcyB0byBpbmNsdWRlIElNRSBzdXBwb3J0CitJTUU9eWVzCitEWU5BTUlDX0lNRT15ZXMKKyMgc2V0IHRvIHllcyB0byBlbmFibGUgd3JpdGluZyBhIHBvc3RzY3JpcHQgZmlsZSB3aXRoIDpoYXJkY29weQorUE9TVFNDUklQVD1ubworIyBzZXQgdG8geWVzIHRvIGVuYWJsZSBPTEUgc3VwcG9ydAorT0xFPW5vCisjIFNldCB0aGUgZGVmYXVsdCAkKFdJTlZFUikgdG8gbWFrZSBpdCB3b3JrIHdpdGggcHJlLVdpbjJrCitXSU5WRVIgPSAweDA0MDAKKyMgU2V0IHRvIHllcyB0byBlbmFibGUgQ3Njb3BlIHN1cHBvcnQKK0NTQ09QRT15ZXMKKyMgU2V0IHRvIHllcyB0byBlbmFibGUgTmV0YmVhbnMgc3VwcG9ydAorTkVUQkVBTlM9JChHVUkpCisKKworIyBJZiB0aGUgdXNlciBkb2Vzbid0IHdhbnQgZ2V0dGV4dCwgdW5kZWZpbmUgaXQuCitpZmVxIChubywgJChHRVRURVhUKSkKK0dFVFRFWFQ9CitlbmRpZgorIyBBZGRlZCBieSBFLkYuIEFtYXRyaWEgPGVmZXJuYTFAcGxhdGVhLnB0aWMubWVjLmVzPiAyMDAxIEZlYiAyMworIyBVbmNvbW1lbnQgdGhlIGZpcnN0IGxpbmUgYW5kIG9uZSBvZiB0aGUgZm9sbG93aW5nIHRocmVlIGlmIHlvdSB3YW50IE5hdGl2ZSBMYW5ndWFnZQorIyBTdXBwb3J0LiAgWW91J2xsIG5lZWQgZ251X2dldHRleHQud2luMzIsIGEgTUlOR1czMiBXaW5kb3dzIFBPUlQgb2YgZ2V0dGV4dCBieQorIyBGcmFuY28gQmV6IDxmcmFuY28uYmV6QGdteC5kZT4uICBJdCBtYXkgYmUgZm91bmQgYXQKKyMgaHR0cDovL2hvbWUuYS1jaXR5LmRlL2ZyYW5jby5iZXovZ2V0dGV4dC9nZXR0ZXh0X3dpbjMyX2VuLmh0bWwKKyMgVGVzdGVkIHdpdGggbWluZ3czMiB3aXRoIEdDQy0yLjk1LjIgb24gV2luOTgKKyMgVXBkYXRlZCAyMDAxIEp1biA5CisjR0VUVEVYVD1jOi9nZXR0ZXh0LndpbjMyLm1zdmNydAorI1NUQVRJQ19HRVRURVhUPVVTRV9TVEFUSUNfR0VUVEVYVAorI0RZTkFNSUNfR0VUVEVYVD1VU0VfR0VUVEVYVF9ETEwKKyNEWU5BTUlDX0dFVFRFWFQ9VVNFX1NBRkVfR0VUVEVYVF9ETEwKK1NBRkVfR0VUVEVYVF9ETExfT0JKID0gJChHRVRURVhUKS9zcmMvc2FmZV9nZXR0ZXh0X2RsbC9zYWZlX2dldHRleHRfZGxsLm8KKyMgQWx0ZXJuYXRpdmVseSwgaWYgeW91IHVuY29tbWVudCB0aGUgdHdvIGZvbGxvd2luZyBsaW5lcywgeW91IGdldCBhICJzYWZlIiB2ZXJzaW9uCisjIHdpdGhvdXQgbGlua2luZyB0aGUgc2FmZV9nZXR0ZXh0X2RsbC5vIG9iamVjdCBmaWxlLgorI0RZTkFNSUNfR0VUVEVYVD1EWU5BTUlDX0dFVFRFWFQKKyNHRVRURVhUX0RZTkFNSUM9Z251X2dldHRleHQuZGxsCitJTlRMUEFUSD0kKEdFVFRFWFQpL2xpYi9taW5ndzMyCitJTlRMTElCPWdudV9nZXR0ZXh0CisKKyMgSWYgeW91IGFyZSB1c2luZyBnZXR0ZXh0LTAuMTAuMzUgZnJvbSBodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2dldHRleHQKKyMgb3IgZ2V0dGV4dC0wLjEwLjM3IGZyb20gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9taW5nd3JlcC8KKyMgdW5jb21tZW50IHRoZSBmb2xsb3dpbmcsIGJ1dCBJIGNhbid0IGJ1aWxkIGEgc3RhdGljIHZlcnNp824gd2l0aCB0aGVtLCA/LSh8CisjR0VUVEVYVD1jOi9nZXR0ZXh0LTAuMTAuMzctMjAwMTA0MzAKKyNTVEFUSUNfR0VUVEVYVD1VU0VfU1RBVElDX0dFVFRFWFQKKyNEWU5BTUlDX0dFVFRFWFQ9RFlOQU1JQ19HRVRURVhUCisjSU5UTFBBVEg9JChHRVRURVhUKS9saWIKKyNJTlRMTElCPWludGwKKworIyB1bmNvbW1lbnQgJ1BFUkwnIGlmIHlvdSB3YW50IGEgcGVybC1lbmFibGVkIHZlcnNpb24KKyNQRVJMPUM6L3BlcmwKK2lmZGVmIFBFUkwKK2lmbmRlZiBQRVJMX1ZFUgorUEVSTF9WRVI9NTYKK2VuZGlmCitpZm5kZWYgRFlOQU1JQ19QRVJMCitEWU5BTUlDX1BFUkw9eWVzCitlbmRpZgorIyBvbiBMaW51eCwgZm9yIGNyb3NzLWNvbXBpbGUsIGl0J3MgaGVyZToKKyNQRVJMTElCPS9ob21lL3Jvbi9BY3RpdmVQZXJsL2xpYgorIyBvbiBOVCwgaXQncyBoZXJlOgorUEVSTExJQj0kKFBFUkwpL2xpYgorUEVSTExJQlM9JChQRVJMTElCKS9Db3JlCitlbmRpZgorCisjIFB5dGhvbiBzdXBwb3J0IC0tIHdvcmtzIHdpdGggdGhlIEFjdGl2ZVN0YXRlIHB5dGhvbiAyLjAgcmVsZWFzZSAoYW5kIG90aGVycworIyB0b28sIHByb2JhYmx5KQorIworIyB1bmNvbW1lbnQgJ1BZVEhPTicgdG8gbWFrZSBweXRob24tZW5hYmxlZCB2ZXJzaW9uCisjIFB1dCB0aGUgcGF0aCB0byB0aGUgcHl0aG9uIGRpc3RybyBoZXJlLiAgSWYgY3Jvc3MgY29tcGlsaW5nIGZyb20gTGludXgsIHlvdQorIyB3aWxsIGFsc28gbmVlZCB0byBjb252ZXJ0IHRoZSBoZWFkZXIgZmlsZXMgdG8gdW5peCBpbnN0ZWFkIG9mIGRvcyBmb3JtYXQ6CisjICAgZm9yIGZpbCBpbiAqLmggOyBkbyB2aW0gLWUgLWMgJ3NldCBmZj11bml4fHd8cScgJGZpbAorIyBhbmQgYWxzbywgeW91IHdpbGwgbmVlZCB0byBtYWtlIGEgbWluZ3czMiAnbGlicHl0aG9uMjAuYScgdG8gbGluayB3aXRoOgorIyAgIGNkICRQWVRIT04vbGlicworIyAgIHBleHBvcnRzIHB5dGhvbjIwLmRsbCA+IHB5dGhvbjIwLmRlZgorIyAgIGRsbHRvb2wgLWQgcHl0aG9uMjAuZGVmIC1sIGxpYnB5dGhvbjIwLmEKKyMgb24gbXkgTGludXggYm94LCBJIHB1dCB0aGUgUHl0aG9uIHN0dWZmIGhlcmU6CisjUFlUSE9OPS9ob21lL3Jvbi9BY3RpdmVQeXRob24tMi4wLjAtMjAyL3NyYy9Db3JlCisjIG9uIG15IE5UIGJveCwgaXQncyBoZXJlOgorI1BZVEhPTj1jOi9weXRob24yMAorCitpZmRlZiBQWVRIT04KK2lmbmRlZiBEWU5BTUlDX1BZVEhPTgorRFlOQU1JQ19QWVRIT049eWVzCitlbmRpZgorCitpZm5kZWYgUFlUSE9OX1ZFUgorUFlUSE9OX1ZFUj0yMgorZW5kaWYKKworaWZlcSAobm8sJChEWU5BTUlDX1BZVEhPTikpCitQWVRIT05MSUI9LUwkKFBZVEhPTikvbGlicyAtbHB5dGhvbiQoUFlUSE9OX1ZFUikKK2VuZGlmCisjIG15IGluY2x1ZGUgZmlsZXMgYXJlIGluICd3aW4zMmluYycgb24gTGludXgsIGFuZCAnaW5jbHVkZScgaW4gdGhlIHN0YW5kYXJkCisjIE5UIGRpc3RybyAoQWN0aXZlU3RhdGUpCitpZmVxICgkKENST1NTKSxubykKK1BZVEhPTklOQz0tSSAkKFBZVEhPTikvaW5jbHVkZQorZWxzZQorUFlUSE9OSU5DPS1JICQoUFlUSE9OKS93aW4zMmluYworZW5kaWYKK2VuZGlmCisKKyMJVENMIGludGVyZmFjZToKKyMJICBUQ0w9W1BhdGggdG8gVENMIGRpcmVjdG9yeV0KKyMJICBEWU5BTUlDX1RDTD15ZXMgKHRvIGxvYWQgdGhlIFRDTCBETEwgZHluYW1pY2FsbHkpCisjCSAgVENMX1ZFUj1bVENMIHZlcnNpb24sIGVnIDgzLCA4NF0gKGRlZmF1bHQgaXMgODMpCisjVENMPWM6L3RjbAoraWZkZWYgVENMCitpZm5kZWYgRFlOQU1JQ19UQ0wKK0RZTkFNSUNfVENMPXllcworZW5kaWYKK2lmbmRlZiBUQ0xfVkVSCitUQ0xfVkVSID0gODMKK2VuZGlmCitUQ0xJTkMgKz0gLUkkKFRDTCkvaW5jbHVkZQorZW5kaWYKKworCisjCVJ1YnkgaW50ZXJmYWNlOgorIwkgIFJVQlk9W1BhdGggdG8gUnVieSBkaXJlY3RvcnldCisjCSAgRFlOQU1JQ19SVUJZPXllcyAodG8gbG9hZCB0aGUgUnVieSBETEwgZHluYW1pY2FsbHkpCisjCSAgUlVCWV9WRVI9W1J1YnkgdmVyc2lvbiwgZWcgMTYsIDE3XSAoZGVmYXVsdCBpcyAxNikKKyMJICBSVUJZX1ZFUl9MT05HPVtSdWJ5IHZlcnNpb24sIGVnIDEuNiwgMS43XSAoZGVmYXVsdCBpcyAxLjYpCisjCSAgICBZb3UgbXVzdCBzZXQgUlVCWV9WRVJfTE9ORyB3aGVuIGNoYW5nZSBSVUJZX1ZFUi4KKyNSVUJZPWM6L3J1YnkKK2lmZGVmIFJVQlkKK2lmbmRlZiBEWU5BTUlDX1JVQlkKK0RZTkFNSUNfUlVCWT15ZXMKK2VuZGlmCisjICBTZXQgZGVmYXVsdCB2YWx1ZQoraWZuZGVmIFJVQllfVkVSCitSVUJZX1ZFUiA9IDE2CitlbmRpZgoraWZuZGVmIFJVQllfVkVSX0xPTkcKK1JVQllfVkVSX0xPTkcgPSAxLjYKK2VuZGlmCisKK2lmZXEgKCQoUlVCWV9WRVIpLCAxNikKK2lmbmRlZiBSVUJZX1BMQVRGT1JNCitSVUJZX1BMQVRGT1JNID0gaTU4Ni1tc3dpbjMyCitlbmRpZgoraWZuZGVmIFJVQllfSU5TVEFMTF9OQU1FCitSVUJZX0lOU1RBTExfTkFNRSA9IG1zd2luMzItcnVieSQoUlVCWV9WRVIpCitlbmRpZgorZWxzZQoraWZuZGVmIFJVQllfUExBVEZPUk0KK1JVQllfUExBVEZPUk0gPSBpMzg2LW1zd2luMzIKK2VuZGlmCitpZm5kZWYgUlVCWV9JTlNUQUxMX05BTUUKK1JVQllfSU5TVEFMTF9OQU1FID0gbXN2Y3J0LXJ1YnkkKFJVQllfVkVSKQorZW5kaWYKK2VuZGlmCisKK1JVQllJTkMgPS1JICQoUlVCWSkvbGliL3J1YnkvJChSVUJZX1ZFUl9MT05HKS8kKFJVQllfUExBVEZPUk0pCitpZmVxIChubywgJChEWU5BTUlDX1JVQlkpKQorUlVCWUxJQiA9IC1MJChSVUJZKS9saWIgLWwkKFJVQllfSU5TVEFMTF9OQU1FKQorZW5kaWYKKworZW5kaWYgIyBSVUJZCisKKyMgU2VlIGZlYXR1cmUuaCBmb3IgYSBsaXN0IG9mIG9wdGlvbnMuCisjIEFueSBvdGhlciBkZWZpbmVzIGNhbiBiZSBpbmNsdWRlZCBoZXJlLgorREVGX0dVST0tREZFQVRfR1VJX1czMiAtREZFQVRfQ0xJUEJPQVJECitERUZJTkVTPS1EV0lOMzIgLURXSU5WRVI9JChXSU5WRVIpIC1EX1dJTjMyX1dJTk5UPSQoV0lOVkVSKSBcCisJLURIQVZFX1BBVEhERUYgLURGRUFUXyQoRkVBVFVSRVMpCitpZmVxICgkKENST1NTKSx5ZXMpCisjIGNyb3NzLWNvbXBpbGVyOgorQ0MgPSBpNTg2LXBjLW1pbmd3MzJtc3ZjLWdjYworREVMID0gcm0KK1dJTkRSRVMgPSBpNTg2LXBjLW1pbmd3MzJtc3ZjLXdpbmRyZXMKK2Vsc2UKKyMgbm9ybWFsIChXaW5kb3dzKSBjb21waWxhdGlvbjoKK0NDID0gZ2NjCitpZm5lcSAoc2guZXhlLCAkKFNIRUxMKSkKK0RFTCA9IHJtCitESVJTTEFTSCA9IC8KK2Vsc2UKK0RFTCA9IGRlbAorRElSU0xBU0ggPSBcXAorZW5kaWYKK1dJTkRSRVMgPSB3aW5kcmVzCitlbmRpZgorCisjPj4+Pj4gZW5kIG9mIGNob2ljZXMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitDRkxBR1MgPSAtSXByb3RvICQoREVGSU5FUykgLXBpcGUgLXcgLW1hcmNoPSQoQVJDSCkgLW1jcHU9JChDUFVOUikgLVdhbGwKKworaWZkZWYgR0VUVEVYVAorREVGSU5FUyArPS1ESEFWRV9HRVRURVhUIC1ESEFWRV9MT0NBTEVfSAorR0VUVEVYVElOQ0xVREUgPSAkKEdFVFRFWFQpL2luY2x1ZGUKK0dFVFRFWFRMSUIgPSAkKElOVExQQVRIKQoraWZlcSAoeWVzLCAkKEdFVFRFWFQpKQorREVGSU5FUyArPS1ERFlOQU1JQ19HRVRURVhUCitlbHNlCitpZmRlZiBEWU5BTUlDX0dFVFRFWFQKK0RFRklORVMgKz0tRCQoRFlOQU1JQ19HRVRURVhUKQoraWZkZWYgR0VUVEVYVF9EWU5BTUlDCitERUZJTkVTICs9IC1ER0VUVEVYVF9EWU5BTUlDIC1ER0VUVEVYVF9ETEw9XCIkKEdFVFRFWFRfRFlOQU1JQylcIgorZW5kaWYKK2VuZGlmCitlbmRpZgorZW5kaWYKKworaWZkZWYgUEVSTAorQ0ZMQUdTICs9IC1JJChQRVJMTElCUykgLURGRUFUX1BFUkwgLUwkKFBFUkxMSUJTKQoraWZlcSAoeWVzLCAkKERZTkFNSUNfUEVSTCkpCitDRkxBR1MgKz0gLUREWU5BTUlDX1BFUkwgLUREWU5BTUlDX1BFUkxfRExMPVwicGVybCQoUEVSTF9WRVIpLmRsbFwiCitlbmRpZgorZW5kaWYKKworaWZkZWYgUlVCWQorQ0ZMQUdTICs9IC1ERkVBVF9SVUJZICQoUlVCWUlOQykKK2lmZXEgKHllcywgJChEWU5BTUlDX1JVQlkpKQorQ0ZMQUdTICs9IC1ERFlOQU1JQ19SVUJZIC1ERFlOQU1JQ19SVUJZX0RMTD1cIiQoUlVCWV9JTlNUQUxMX05BTUUpLmRsbFwiCitDRkxBR1MgKz0gLUREWU5BTUlDX1JVQllfVkVSPSQoUlVCWV9WRVIpCitlbmRpZgorZW5kaWYKKworaWZkZWYgUFlUSE9OCitDRkxBR1MgKz0gLURGRUFUX1BZVEhPTiAkKFBZVEhPTklOQykKK2lmZXEgKHllcywgJChEWU5BTUlDX1BZVEhPTikpCitDRkxBR1MgKz0gLUREWU5BTUlDX1BZVEhPTiAtRERZTkFNSUNfUFlUSE9OX0RMTD1cInB5dGhvbiQoUFlUSE9OX1ZFUikuZGxsXCIKK2VuZGlmCitlbmRpZgorCitpZmRlZiBUQ0wKK0NGTEFHUyArPSAtREZFQVRfVENMICQoVENMSU5DKQoraWZlcSAoeWVzLCAkKERZTkFNSUNfVENMKSkKK0NGTEFHUyArPSAtRERZTkFNSUNfVENMIC1ERFlOQU1JQ19UQ0xfRExMPVwidGNsJChUQ0xfVkVSKS5kbGxcIgorZW5kaWYKK2VuZGlmCisKK2lmZXEgKCQoUE9TVFNDUklQVCkseWVzKQorREVGSU5FUyArPSAtRE1TV0lOUFMKK2VuZGlmCisKK2lmZXEgKHllcywgJChPTEUpKQorREVGSU5FUyArPSAtREZFQVRfT0xFCitlbmRpZgorCitpZmVxICgkKENTQ09QRSkseWVzKQorREVGSU5FUyArPSAtREZFQVRfQ1NDT1BFCitlbmRpZgorCitpZmVxICgkKE5FVEJFQU5TKSx5ZXMpCitERUZJTkVTICs9IC1ERkVBVF9ORVRCRUFOU19JTlRHCitpZmVxICgkKERFQlVHKSwgeWVzKQorREVGSU5FUyArPSAtRE5CREVCVUcKK05CREVCVUdfSU5DTCA9IG5iZGVidWcuaAorTkJERUJVR19TUkMgPSBuYmRlYnVnLmMKK2VuZGlmCitlbmRpZgorCitpZmRlZiBYUE0KK0NGTEFHUyArPSAtREZFQVRfWFBNX1czMiAtSSAkKFhQTSkvaW5jbHVkZQorZW5kaWYKKworaWZlcSAoJChERUJVRykseWVzKQorQ0ZMQUdTICs9IC1nIC1mc3RhY2stY2hlY2sKK0RFQlVHX1NVRkZJWD1kCitlbHNlCitpZmVxICgkKE9QVElNSVpFKSwgU0laRSkKK0NGTEFHUyArPSAtT3MKK2Vsc2UKK2lmZXEgKCQoT1BUSU1JWkUpLCBNQVhTUEVFRCkKK0NGTEFHUyArPSAtTzMKK0NGTEFHUyArPSAtZm9taXQtZnJhbWUtcG9pbnRlciAtZnJlZy1zdHJ1Y3QtcmV0dXJuIC1tYWxpZ24tZG91YmxlCitlbHNlICAjIFNQRUVECitDRkxBR1MgKz0gLU8yCitlbmRpZgorZW5kaWYKK0NGTEFHUyArPSAtcworZW5kaWYKKworTElCID0gLWxrZXJuZWwzMiAtbHVzZXIzMiAtbGdkaTMyIC1sYWR2YXBpMzIgLWxjb21kbGczMiAtbGNvbWN0bDMyCitHVUlPQkogPSAgJChPVVRESVIpL2d1aS5vICQoT1VURElSKS9ndWlfdzMyLm8gJChPVVRESVIpL29zX3czMmV4ZS5vCitPQkogPSBcCisJJChPVVRESVIpL2J1ZmZlci5vIFwKKwkkKE9VVERJUikvY2hhcnNldC5vIFwKKwkkKE9VVERJUikvZGlmZi5vIFwKKwkkKE9VVERJUikvZGlncmFwaC5vIFwKKwkkKE9VVERJUikvZWRpdC5vIFwKKwkkKE9VVERJUikvZXZhbC5vIFwKKwkkKE9VVERJUikvZXhfY21kcy5vIFwKKwkkKE9VVERJUikvZXhfY21kczIubyBcCisJJChPVVRESVIpL2V4X2RvY21kLm8gXAorCSQoT1VURElSKS9leF9ldmFsLm8gXAorCSQoT1VURElSKS9leF9nZXRsbi5vIFwKKwkkKE9VVERJUikvZmlsZWlvLm8gXAorCSQoT1VURElSKS9mb2xkLm8gXAorCSQoT1VURElSKS9nZXRjaGFyLm8gXAorCSQoT1VURElSKS9tYWluLm8gXAorCSQoT1VURElSKS9tYXJrLm8gXAorCSQoT1VURElSKS9tZW1maWxlLm8gXAorCSQoT1VURElSKS9tZW1saW5lLm8gXAorCSQoT1VURElSKS9tZW51Lm8gXAorCSQoT1VURElSKS9tZXNzYWdlLm8gXAorCSQoT1VURElSKS9taXNjMS5vIFwKKwkkKE9VVERJUikvbWlzYzIubyBcCisJJChPVVRESVIpL21vdmUubyBcCisJJChPVVRESVIpL21ieXRlLm8gXAorCSQoT1VURElSKS9ub3JtYWwubyBcCisJJChPVVRESVIpL29wcy5vIFwKKwkkKE9VVERJUikvb3B0aW9uLm8gXAorCSQoT1VURElSKS9vc193aW4zMi5vIFwKKwkkKE9VVERJUikvb3NfbXN3aW4ubyBcCisJJChPVVRESVIpL3BhdGhkZWYubyBcCisJJChPVVRESVIpL3F1aWNrZml4Lm8gXAorCSQoT1VURElSKS9yZWdleHAubyBcCisJJChPVVRESVIpL3NjcmVlbi5vIFwKKwkkKE9VVERJUikvc2VhcmNoLm8gXAorCSQoT1VURElSKS9zeW50YXgubyBcCisJJChPVVRESVIpL3RhZy5vIFwKKwkkKE9VVERJUikvdGVybS5vIFwKKwkkKE9VVERJUikvdWkubyBcCisJJChPVVRESVIpL3VuZG8ubyBcCisJJChPVVRESVIpL3ZlcnNpb24ubyBcCisJJChPVVRESVIpL3ZpbXJjLm8gXAorCSQoT1VURElSKS93aW5kb3cubworCitpZmRlZiBQRVJMCitPQkogKz0gJChPVVRESVIpL2lmX3BlcmwubworZW5kaWYKK2lmZGVmIFBZVEhPTgorT0JKICs9ICQoT1VURElSKS9pZl9weXRob24ubworZW5kaWYKK2lmZGVmIFJVQlkKK09CSiArPSAkKE9VVERJUikvaWZfcnVieS5vCitlbmRpZgoraWZkZWYgVENMCitPQkogKz0gJChPVVRESVIpL2lmX3RjbC5vCitlbmRpZgoraWZlcSAoJChDU0NPUEUpLHllcykKK09CSiArPSAkKE9VVERJUikvaWZfY3Njb3BlLm8KK2VuZGlmCitpZmVxICgkKE5FVEJFQU5TKSx5ZXMpCitPQkogKz0gJChPVVRESVIpL25ldGJlYW5zLm8gJChPVVRESVIpL2d1aV9iZXZhbC5vCitMSUIgKz0gLWx3c29jazMyCitlbmRpZgoraWZkZWYgWFBNCitPQkogKz0gJChPVVRESVIpL3hwbV93MzIubworIyBZb3UnbGwgbmVlZCBsaWJYcG0uYSBmcm9tIGh0dHA6Ly9nbnV3aW4zMi5zZi5uZXQKK0xJQiArPSAtTCAkKFhQTSkvbGliIC1sWHBtCitlbmRpZgorCisKK2lmZXEgKCQoR1VJKSx5ZXMpCitUQVJHRVQgOj0gZ3ZpbSQoREVCVUdfU1VGRklYKS5leGUKK0RFRklORVMgKz0gJChERUZfR1VJKQorT0JKICs9ICQoR1VJT0JKKQorTEZMQUdTICs9IC1td2luZG93cworT1VURElSID0gZ29iaiQoREVCVUdfU1VGRklYKQorZWxzZQorVEFSR0VUIDo9IHZpbSQoREVCVUdfU1VGRklYKS5leGUKK09VVERJUiA9IG9iaiQoREVCVUdfU1VGRklYKQorZW5kaWYKKworaWZkZWYgR0VUVEVYVAoraWZuZXEgKHllcywgJChHRVRURVhUKSkKK0NGTEFHUyArPSAtSSQoR0VUVEVYVElOQ0xVREUpCitpZm5kZWYgU1RBVElDX0dFVFRFWFQKK0xJQiArPSAtTCQoR0VUVEVYVExJQikgLWwkKElOVExMSUIpCitpZmVxIChVU0VfU0FGRV9HRVRURVhUX0RMTCwgJChEWU5BTUlDX0dFVFRFWFQpKQorT0JKKz0kKFNBRkVfR0VUVEVYVF9ETExfT0JKKQorZW5kaWYKK2Vsc2UKK0xJQiArPSAtTCQoR0VUVEVYVExJQikgLWxpbnRsCitlbmRpZgorZW5kaWYKK2VuZGlmCisKK2lmZGVmIFBFUkwKK2lmZXEgKG5vLCAkKERZTkFNSUNfUEVSTCkpCitMSUIgKz0gLWxwZXJsJChQRVJMX1ZFUikKK2VuZGlmCitlbmRpZgorCitpZmRlZiBUQ0wKK0xJQiArPSAtTCQoVENMKS9saWIKK2lmZXEgKHllcywgJChEWU5BTUlDX1RDTCkpCitMSUIgKz0gLWx0Y2xzdHViJChUQ0xfVkVSKQorZWxzZQorTElCICs9IC1sdGNsJChUQ0xfVkVSKQorZW5kaWYKK2VuZGlmCisKK2lmZXEgKHllcywgJChPTEUpKQorTElCICs9IC1sb2xlYXV0MzIgLWxzdGRjKysKK09CSiArPSAkKE9VVERJUikvaWZfb2xlLm8KK2VuZGlmCisKK2lmZXEgKHllcywgJChNQllURSkpCitERUZJTkVTICs9IC1ERkVBVF9NQllURQorZW5kaWYKKworaWZlcSAoeWVzLCAkKElNRSkpCitERUZJTkVTICs9IC1ERkVBVF9NQllURV9JTUUKK2lmZXEgKHllcywgJChEWU5BTUlDX0lNRSkpCitERUZJTkVTICs9IC1ERFlOQU1JQ19JTUUKK2Vsc2UKK0xJQiArPSAtbGltbTMyCitlbmRpZgorZW5kaWYKKworaWZkZWYgSUNPTlYKK2lmbmVxICh5ZXMsICQoSUNPTlYpKQorTElCICs9IC1MJChJQ09OVikKK0NGTEFHUyArPSAtSSQoSUNPTlYpCitlbmRpZgorREVGSU5FUys9LUREWU5BTUlDX0lDT05WCitlbmRpZgorCithbGw6ICQoVEFSR0VUKSB2aW1ydW4uZXhlIHh4ZC94eGQuZXhlIGluc3RhbGwuZXhlIHVuaW5zdGFsLmV4ZSBHdmltRXh0L2d2aW1leHQuZGxsCisKK3ZpbXJ1bi5leGU6IHZpbXJ1bi5jCisJJChDQykgJChDRkxBR1MpIC1vIHZpbXJ1bi5leGUgdmltcnVuLmMgJChMSUIpCisKK2luc3RhbGwuZXhlOiBkb3NpbnN0LmMKKwkkKENDKSAkKENGTEFHUykgLW8gaW5zdGFsbC5leGUgZG9zaW5zdC5jICQoTElCKSAtbG9sZTMyIC1sdXVpZAorCit1bmluc3RhbC5leGU6IHVuaW5zdGFsLmMKKwkkKENDKSAkKENGTEFHUykgLW8gdW5pbnN0YWwuZXhlIHVuaW5zdGFsLmMgJChMSUIpCisKKyQoVEFSR0VUKTogJChPVVRESVIpICQoT0JKKQorCSQoQ0MpICQoQ0ZMQUdTKSAkKExGTEFHUykgLW8gJEAgJChPQkopICQoTElCKSAtbG9sZTMyIC1sdXVpZCAkKFBZVEhPTkxJQikgJChSVUJZTElCKQorCit1cHg6IGV4ZXMKKwl1cHggZ3ZpbS5leGUKKwl1cHggdmltLmV4ZQorCit4eGQveHhkLmV4ZTogeHhkL3h4ZC5jCisJJChNQUtFKSAtQyB4eGQgLWYgTWFrZV9jeWcubWFrCisKK0d2aW1FeHQvZ3ZpbWV4dC5kbGw6IEd2aW1FeHQvZ3ZpbWV4dC5jcHAgR3ZpbUV4dC9ndmltZXh0LnJjIEd2aW1FeHQvZ3ZpbWV4dC5oCisJJChNQUtFKSAtQyBHdmltRXh0IC1mIE1ha2VfbWluZy5tYWsKKworY2xlYW46CisJLSQoREVMKSAkKE9VVERJUikkKERJUlNMQVNIKSoubworCS0kKERFTCkgJChPVVRESVIpJChESVJTTEFTSCkqLnJlcworCS1ybWRpciAkKE9VVERJUikKKwktJChERUwpICouZXhlCisJLSQoREVMKSBwYXRoZGVmLmMKK2lmZGVmIFBFUkwKKwktJChERUwpIGlmX3BlcmwuYworZW5kaWYKKwkkKE1BS0UpIC1DIEd2aW1FeHQgLWYgTWFrZV9taW5nLm1hayBjbGVhbgorCSQoTUFLRSkgLUMgeHhkIC1mIE1ha2VfY3lnLm1hayBjbGVhbgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK0lOQ0wgPSB2aW0uaCBmZWF0dXJlLmggb3Nfd2luMzIuaCBvc19kb3MuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBcCisJc3RydWN0cy5oIHJlZ2V4cC5oIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIFwKKwlndWkuaAorCiskKE9VVERJUikvJS5vIDogJS5jICQoSU5DTCkKKwkkKENDKSAtYyAkKENGTEFHUykgJDwgLW8gJEAKKworJChPVVRESVIpL3ZpbXJlcy5yZXM6IHZpbS5yYyB2ZXJzaW9uLmggZ3VpX3czMl9yYy5oCisJJChXSU5EUkVTKSAkKERFRklORVMpIHZpbS5yYyAkKE9VVERJUikvdmltcmVzLnJlcworCiskKE9VVERJUikvdmltcmMubzogJChPVVRESVIpL3ZpbXJlcy5yZXMKKwkkKFdJTkRSRVMpICQoT1VURElSKS92aW1yZXMucmVzICQoT1VURElSKS92aW1yYy5vCisKKyQoT1VURElSKToKKwlta2RpciAkKE9VVERJUikKKworJChPVVRESVIpL2V4X2RvY21kLm86CWV4X2RvY21kLmMgJChJTkNMKSBleF9jbWRzLmgKKwkkKENDKSAtYyAkKENGTEFHUykgZXhfZG9jbWQuYyAtbyAkKE9VVERJUikvZXhfZG9jbWQubworCiskKE9VVERJUikvZXhfZXZhbC5vOglleF9ldmFsLmMgJChJTkNMKSBleF9jbWRzLmgKKwkkKENDKSAtYyAkKENGTEFHUykgZXhfZXZhbC5jIC1vICQoT1VURElSKS9leF9ldmFsLm8KKworJChPVVRESVIpL2lmX2NzY29wZS5vOglpZl9jc2NvcGUuYyAkKElOQ0wpIGlmX2NzY29wZS5oCisJJChDQykgLWMgJChDRkxBR1MpIGlmX2NzY29wZS5jIC1vICQoT1VURElSKS9pZl9jc2NvcGUubworCiskKE9VVERJUikvaWZfb2xlLm86IGlmX29sZS5jcHAgJChJTkNMKQorCSQoQ0MpICQoQ0ZMQUdTKSAtRF9fSUlEX0RFRklORURfXyAtYyAtbyAkKE9VVERJUikvaWZfb2xlLm8gaWZfb2xlLmNwcAorCiskKE9VVERJUikvaWZfcnVieS5vOiBpZl9ydWJ5LmMgJChJTkNMKQoraWZlcSAoMTYsICQoUlVCWSkpCisJJChDQykgJChDRkxBR1MpIC1VX1dJTjMyIC1jIC1vICQoT1VURElSKS9pZl9ydWJ5Lm8gaWZfcnVieS5jCitlbmRpZgorCitpZl9wZXJsLmM6IGlmX3BlcmwueHMgdHlwZW1hcAorCXBlcmwgJChQRVJMTElCKS9FeHRVdGlscy94c3VicHAgLXByb3RvdHlwZXMgLXR5cGVtYXAgXAorCSAgICAgJChQRVJMTElCKS9FeHRVdGlscy90eXBlbWFwIGlmX3BlcmwueHMgPiAkQAorCiskKE9VVERJUikvbmV0YmVhbnMubzoJbmV0YmVhbnMuYyAkKElOQ0wpICQoTkJERUJVR19JTkNMKSAkKE5CREVCVUdfU1JDKQorCSQoQ0MpIC1jICQoQ0ZMQUdTKSBuZXRiZWFucy5jIC1vICQoT1VURElSKS9uZXRiZWFucy5vCisKK3BhdGhkZWYuYzogJChJTkNMKQoraWZuZXEgKHNoLmV4ZSwgJChTSEVMTCkpCisJQGVjaG8gY3JlYXRpbmcgcGF0aGRlZi5jCisJQGVjaG8gJy8qIHBhdGhkZWYuYyAqLycgPiBwYXRoZGVmLmMKKwlAZWNobyAnI2luY2x1ZGUgInZpbS5oIicgPj4gcGF0aGRlZi5jCisJQGVjaG8gJ2NoYXJfdSAqZGVmYXVsdF92aW1fZGlyID0gKGNoYXJfdSAqKSIkKFZJTVJDTE9DKSI7JyA+PiBwYXRoZGVmLmMKKwlAZWNobyAnY2hhcl91ICpkZWZhdWx0X3ZpbXJ1bnRpbWVfZGlyID0gKGNoYXJfdSAqKSIkKFZJTVJVTlRJTUVESVIpIjsnID4+IHBhdGhkZWYuYworCUBlY2hvICdjaGFyX3UgKmFsbF9jZmxhZ3MgPSAoY2hhcl91ICopIiQoQ0MpICQoQ0ZMQUdTKSI7JyA+PiBwYXRoZGVmLmMKKwlAZWNobyAnY2hhcl91ICphbGxfbGZsYWdzID0gKGNoYXJfdSAqKSIkKENDKSAtcyAtbyAkKFRBUkdFVCkgJChMSUIpIC1sdXVpZCAtbG9sZTMyICQoUFlUSE9OTElCKSAkKFJVQllMSUIpIjsnID4+IHBhdGhkZWYuYworCUBlY2hvICdjaGFyX3UgKmNvbXBpbGVkX3VzZXIgPSAoY2hhcl91ICopIiQoVVNFUk5BTUUpIjsnID4+IHBhdGhkZWYuYworCUBlY2hvICdjaGFyX3UgKmNvbXBpbGVkX3N5cyA9IChjaGFyX3UgKikiJChVU0VSRE9NQUlOKSI7JyA+PiBwYXRoZGVmLmMKK2Vsc2UKKwlAZWNobyBjcmVhdGluZyBwYXRoZGVmLmMKKwlAZWNobyAvKiBwYXRoZGVmLmMgKi8gPiBwYXRoZGVmLmMKKwlAZWNobyAjaW5jbHVkZSAidmltLmgiID4+IHBhdGhkZWYuYworCUBlY2hvIGNoYXJfdSAqZGVmYXVsdF92aW1fZGlyID0gKGNoYXJfdSAqKSIkKFZJTVJDTE9DKSI7ID4+IHBhdGhkZWYuYworCUBlY2hvIGNoYXJfdSAqZGVmYXVsdF92aW1ydW50aW1lX2RpciA9IChjaGFyX3UgKikiJChWSU1SVU5USU1FRElSKSI7ID4+IHBhdGhkZWYuYworCUBlY2hvIGNoYXJfdSAqYWxsX2NmbGFncyA9IChjaGFyX3UgKikiJChDQykgJChDRkxBR1MpIjsgPj4gcGF0aGRlZi5jCisJQGVjaG8gY2hhcl91ICphbGxfbGZsYWdzID0gKGNoYXJfdSAqKSIkKENDKSAtcyAtbyAkKFRBUkdFVCkgJChMSUIpIC1sdXVpZCAtbG9sZTMyICQoUFlUSE9OTElCKSAkKFJVQllMSUIpIjsgPj4gcGF0aGRlZi5jCisJQGVjaG8gY2hhcl91ICpjb21waWxlZF91c2VyID0gKGNoYXJfdSAqKSIkKFVTRVJOQU1FKSI7ID4+IHBhdGhkZWYuYworCUBlY2hvIGNoYXJfdSAqY29tcGlsZWRfc3lzID0gKGNoYXJfdSAqKSIkKFVTRVJET01BSU4pIjsgPj4gcGF0aGRlZi5jCitlbmRpZgo=