I2luY2x1ZGUgPHdpbmRvd3MuaD4NCiNpbmNsdWRlICJyZXNvdXJjZXMuaCINCiNpbmNsdWRlICJ2ZXJzaW9uLmgiDQoNClZTX1ZFUlNJT05fSU5GTyBWRVJTSU9OSU5GTw0KRklMRVZFUlNJT04gICAgIFNUVU5ORUxfVkVSU0lPTl9GSUVMRFMNClBST0RVQ1RWRVJTSU9OICBTVFVOTkVMX1ZFUlNJT05fRklFTERTDQpGSUxFRkxBR1NNQVNLICAgVlNfRkZJX0ZJTEVGTEFHU01BU0sNCkZJTEVGTEFHUyAgICAgICAwDQpGSUxFT1MgICAgICAgICAgVk9TX19XSU5ET1dTMzINCkZJTEVUWVBFICAgICAgICBWRlRfQVBQDQpGSUxFU1VCVFlQRSAgICAgVkZUMl9VTktOT1dODQpCRUdJTg0KICAgIEJMT0NLICJTdHJpbmdGaWxlSW5mbyINCiAgICBCRUdJTg0KICAgICAgICBCTE9DSyAiMDQwOTA0RTQiDQogICAgICAgIEJFR0lODQogICAgICAgICAgICBWQUxVRSAiQ29tcGFueU5hbWUiLCAgICAgICAgIk1pY2hhbCBUcm9qbmFyYSINCiAgICAgICAgICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAgICAic3R1bm5lbCAtIFRMUyBvZmZsb2FkaW5nIGFuZCBsb2FkLWJhbGFuY2luZyBwcm94eSINCiAgICAgICAgICAgIFZBTFVFICJGaWxlVmVyc2lvbiIsICAgICAgICBTVFVOTkVMX1ZFUlNJT04NCiAgICAgICAgICAgIFZBTFVFICJJbnRlcm5hbE5hbWUiLCAgICAgICAic3R1bm5lbCINCiAgICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsICAgICAiqSBieSBNaWNoYWwgVHJvam5hcmEsIDE5OTgtMjAxNSINCiAgICAgICAgICAgIFZBTFVFICJPcmlnaW5hbEZpbGVuYW1lIiwgICAic3R1bm5lbC5leGUiDQogICAgICAgICAgICBWQUxVRSAiUHJvZHVjdE5hbWUiLCAgICAgICAgU1RVTk5FTF9QUk9EVUNUTkFNRQ0KICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3RWZXJzaW9uIiwgICAgIFNUVU5ORUxfVkVSU0lPTg0KICAgICAgICBFTkQNCiAgICBFTkQNCiAgICBCTE9DSyAiVmFyRmlsZUluZm8iDQogICAgQkVHSU4NCiAgICAgICAgVkFMVUUgIlRyYW5zbGF0aW9uIiwgMHg0MDksIDEyNTINCiAgICBFTkQNCkVORA0KDQpJRElfU1RVTk5FTF9NQUlOICAgIElDT04gInN0dW5uZWwuaWNvIg0KSURJX1NUVU5ORUxfQUNUSVZFICBJQ09OICJhY3RpdmUuaWNvIg0KSURJX1NUVU5ORUxfRVJST1IgICBJQ09OICJlcnJvci5pY28iDQpJRElfU1RVTk5FTF9JRExFICAgIElDT04gImlkbGUuaWNvIg0KDQpJRE1fTUFJTk1FTlUgTUVOVQ0KQkVHSU4NCiAgICBQT1BVUCAiJkZpbGUiDQogICAgQkVHSU4NCiAgICAgICAgTUVOVUlURU0gIiZTYXZlIExvZyBBcyIsICAgICAgICAgICAgSURNX1NBVkVfTE9HDQogICAgICAgIE1FTlVJVEVNICJSZW9wZW4gJkxvZyBGaWxlIiwgICAgICAgIElETV9SRU9QRU5fTE9HLCBHUkFZRUQNCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SDQogICAgICAgIE1FTlVJVEVNICJFJnhpdCIsICAgICAgICAgICAgICAgICAgIElETV9FWElUDQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUg0KICAgICAgICBNRU5VSVRFTSAiJkNsb3NlIiwgICAgICAgICAgICAgICAgICBJRE1fQ0xPU0UNCiAgICBFTkQNCiNpZmRlZiBfV0lOMzJfV0NFDQogICAgUE9QVVAgIiZDb25maWciDQojZWxzZQ0KICAgIFBPUFVQICImQ29uZmlndXJhdGlvbiINCiNlbmRpZg0KICAgIEJFR0lODQogICAgICAgIE1FTlVJVEVNICImRWRpdCBDb25maWd1cmF0aW9uIiwgICAgICBJRE1fRURJVF9DT05GSUcNCiAgICAgICAgTUVOVUlURU0gIiZSZWxvYWQgQ29uZmlndXJhdGlvbiIsICAgIElETV9SRUxPQURfQ09ORklHDQogICAgRU5EDQojaWZkZWYgX1dJTjMyX1dDRQ0KICAgIFBPUFVQICImU2F2ZSBQZWVyIENlcnRzIg0KI2Vsc2UNCiAgICBQT1BVUCAiJlNhdmUgUGVlciBDZXJ0aWZpY2F0ZSINCiNlbmRpZg0KICAgIEJFR0lODQogICAgICAgIE1FTlVJVEVNICJkdW1teSIsICAgICAgICAgICAgICAgICAgIDAsIEdSQVlFRA0KICAgIEVORA0KICAgIFBPUFVQICImSGVscCINCiAgICBCRUdJTg0KICAgICAgICBNRU5VSVRFTSAiJkFib3V0IiwgICAgICAgICAgICAgICAgICBJRE1fQUJPVVQNCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SDQogICAgICAgIE1FTlVJVEVNICImTWFudWFsIiwgICAgICAgICAgICAgICAgIElETV9NQU5QQUdFDQogICAgICAgIE1FTlVJVEVNICImSG9tZXBhZ2UiLCAgICAgICAgICAgICAgIElETV9IT01FUEFHRQ0KICAgIEVORA0KRU5EDQoNCklETV9UUkFZTUVOVSBNRU5VDQpCRUdJTg0KICAgIFBPUFVQICJPb29wcz8iDQogICAgQkVHSU4NCiAgICAgICAgTUVOVUlURU0gIlNob3cgTG9nICZXaW5kb3ciLCAgICAgICAgSURNX1NIT1dfTE9HDQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUg0KICAgICAgICBQT1BVUCAiJlNhdmUgUGVlciBDZXJ0aWZpY2F0ZSINCiAgICAgICAgQkVHSU4NCiAgICAgICAgICAgIE1FTlVJVEVNICJkdW1teSIsICAgICAgICAgICAgICAgMCwgR1JBWUVEDQogICAgICAgIEVORA0KICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1INCiAgICAgICAgTUVOVUlURU0gIiZFZGl0IENvbmZpZ3VyYXRpb24iLCAgICAgIElETV9FRElUX0NPTkZJRw0KICAgICAgICBNRU5VSVRFTSAiJlJlbG9hZCBDb25maWd1cmF0aW9uIiwgICAgSURNX1JFTE9BRF9DT05GSUcNCiAgICAgICAgTUVOVUlURU0gIlJlb3BlbiAmTG9nIEZpbGUiLCAgICAgICAgSURNX1JFT1BFTl9MT0csIEdSQVlFRA0KICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1INCiAgICAgICAgTUVOVUlURU0gIiZIb21lcGFnZSIsICAgICAgICAgICAgICAgSURNX0hPTUVQQUdFDQogICAgICAgIE1FTlVJVEVNICImTWFudWFsIiwgICAgICAgICAgICAgICAgIElETV9NQU5QQUdFDQogICAgICAgIE1FTlVJVEVNICImQWJvdXQiLCAgICAgICAgICAgICAgICAgIElETV9BQk9VVA0KICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1INCiAgICAgICAgTUVOVUlURU0gIkUmeGl0IiwgICAgICAgICAgICAgICAgICAgSURNX0VYSVQNCiAgICBFTkQNCkVORA0KDQpBQk9VVEJPWCBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDE0MCwgNjgNClNUWUxFIERTX01PREFMRlJBTUV8RFNfQ0VOVEVSfFdTX1BPUFVQfFdTX0NBUFRJT058V1NfU1lTTUVOVQ0KQ0FQVElPTiAiQWJvdXQgc3R1bm5lbCINCkZPTlQgOCwgIk1TIFNhbnMgU2VyaWYiDQpCRUdJTg0KICAgIElDT04gICAgICAgICAgICBJRElfU1RVTk5FTF9NQUlOLCAtMSwgICAgICAgICAgICAgICAgICAgICAgICA2LCAgNiwgIDIwLCAyMA0KICAgIExURVhUICAgICAgICAgICAic3R1bm5lbCB2ZXJzaW9uIiwgLTEsICAgICAgICAgICAgICAgICAgICAgIDMwLCAgNCwgIDQ5LCAgOA0KICAgIExURVhUICAgICAgICAgICBTVFVOTkVMX1ZFUlNJT04sIC0xLCAgICAgICAgICAgICAgICAgICAgICAgIDc5LCAgNCwgIDU3LCAgOA0KICAgIExURVhUICAgICAgICAgICAiqSBieSBNaWNoYWwgVHJvam5hcmEsIDE5OTgtMjAxNSIsIC0xLCAgICAgIDMwLCAxMiwgMTA2LCAgOA0KICAgIExURVhUICAgICAgICAgICAiQWxsIFJpZ2h0cyBSZXNlcnZlZCIsIC0xLCAgICAgICAgICAgICAgICAgIDMwLCAyMCwgMTA2LCAgOA0KICAgIExURVhUICAgICAgICAgICAiTGljZW5zZWQgdW5kZXIgdGhlIEdOVSBHUEwgdmVyc2lvbiAyIiwgLTEsICA0LCAyOCwgMTMyLCAgOA0KICAgIExURVhUICAgICAgICAgICAid2l0aCBhIHNwZWNpYWwgZXhjZXB0aW9uIGZvciBPcGVuU1NMIiwgLTEsICA0LCAzNiwgMTMyLCAgOA0KICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU0LCA0OCwgIDMyLCAxNCwgV1NfR1JPVVANCkVORA0KDQpQQVNTQk9YIERJQUxPRyBESVNDQVJEQUJMRSAwLCAwLCAxNTYsIDUxDQpTVFlMRSBEU19NT0RBTEZSQU1FfERTX0NFTlRFUnxXU19QT1BVUHxXU19DQVBUSU9OfFdTX1NZU01FTlUNCkNBUFRJT04gIiINCkZPTlQgOCwgIk1TIFNhbnMgU2VyaWYiDQpCRUdJTg0KICAgIElDT04gICAgICAgICAgICBJRElfU1RVTk5FTF9NQUlOLCAtMSwgICAgIDYsICA2LCAyMCwgMjANCiAgICBMVEVYVCAgICAgICAgICAgIktleSBwYXNzcGhyYXNlOiIsIC0xLCAgIDMwLCAxMywgNTYsICA4DQogICAgRURJVFRFWFQgICAgICAgIElERV9QQVNTRURJVCwgICAgICAgICAgICA4NiwgMTEsIDY0LCAxMiwgRVNfUEFTU1dPUkR8RVNfQVVUT0hTQ1JPTEwNCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLCAgICAgICAgICAgICAgICA2LCAzMCwgNTAsIDE0DQogICAgUFVTSEJVVFRPTiAgICAgICJDYW5jZWwiLElEQ0FOQ0VMLCAgICAgIDEwMCwgMzAsIDUwLCAxNA0KRU5EDQoNClBJTkJPWCBESUFMT0cgRElTQ0FSREFCTEUgMCwgMCwgMTU2LCA1MQ0KU1RZTEUgRFNfTU9EQUxGUkFNRXxEU19DRU5URVJ8V1NfUE9QVVB8V1NfQ0FQVElPTnxXU19TWVNNRU5VDQpDQVBUSU9OICIiDQpGT05UIDgsICJNUyBTYW5zIFNlcmlmIg0KQkVHSU4NCiAgICBJQ09OICAgICAgICAgICAgSURJX1NUVU5ORUxfTUFJTiwgLTEsICAgICA2LCAgNiwgMjAsIDIwDQogICAgTFRFWFQgICAgICAgICAgICJTbWFydENhcmQgUElOOiIsIC0xLCAgICAzMCwgMTMsIDU2LCAgOA0KICAgIEVESVRURVhUICAgICAgICBJREVfUElORURJVCwgICAgICAgICAgICAgODYsIDExLCA2NCwgMTIsIEVTX1BBU1NXT1JEfEVTX0FVVE9IU0NST0xMDQogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywgICAgICAgICAgICAgICAgNiwgMzAsIDUwLCAxNA0KICAgIFBVU0hCVVRUT04gICAgICAiQ2FuY2VsIixJRENBTkNFTCwgICAgICAxMDAsIDMwLCA1MCwgMTQNCkVORA0KDQpTVFJJTkdUQUJMRQ0KQkVHSU4NCklEU19TRVJWSUNFX0RFU0MgICJUTFMgb2ZmbG9hZGluZyBhbmQgbG9hZC1iYWxhbmNpbmcgcHJveHkiDQpFTkQNCg0K