Name: series-workflowvpssq Phase: Failed StartedAt: 2026-08-07 22:48:43 +0000 UTC FinishedAt: 2026-08-07 23:19:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvpssq[0] Phase: Succeeded StartedAt: 2026-08-07 22:48:43 +0000 UTC FinishedAt: 2026-08-07 23:18:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvpssq[0].run-triage Phase: Succeeded StartedAt: 2026-08-07 22:48:43 +0000 UTC FinishedAt: 2026-08-07 23:18:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYSBob3QtdW5wbHVnIGNhbGxiYWNrIChgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmVgKSBpbiB0aGUgczM5MCBWRklPIEFQIGNyeXB0byBkcml2ZXIsIHdoaWNoIGlzIGV4ZWN1dGVkIG9ubHkgd2hlbiBBUCBhZGFwdGVycyBvciBkb21haW5zIGFyZSByZW1vdmVkIGZyb20gdGhlIGhvc3QgQVAgY29uZmlndXJhdGlvbi4gQWNjb3JkaW5nIHRvIHRoZSBpbnN0cnVjdGlvbnMsIHRlYXJkb3duIGNhbGxiYWNrcyBleGVjdXRlZCBvbmx5IGR1cmluZyBob3QtdW5wbHVnIG9wZXJhdGlvbnMgYXJlIG5vdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDdlMzYxOTMyMjRlNmJhNWUxZTNmZTM1MGMzNTQ3ZjYzNjFjN2UxMDhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyA3IDIzOjE2OjU3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYyBiL2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuY1xuaW5kZXggNDRiM2ExZGNjMWIzNi4uMWJmZGJlODUwMjNkZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jXG5AQCAtMjYxNSw5ICYjNDM7MjYxNSw5IEBAIHN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlKHVuc2lnbmVkIGxvbmcgKmFwX3JlbW92ZSxcbiBcdFx0ZG9fcmVtb3ZlIHw9IGJpdG1hcF9hbmQoYXFyZW0sIGFxX3JlbW92ZSxcbiBcdFx0XHRcdFx0ICBtYXRyaXhfbWRldi1cdTAwM2VtYXRyaXguYXFtLFxuIFx0XHRcdFx0XHQgIEFQX0RPTUFJTlMpO1xuLVx0XHRkb19yZW1vdmUgfD0gYml0bWFwX2FuZG5vdChjZHJlbSwgY2RfcmVtb3ZlLFxuLVx0XHRcdFx0XHQgICAgIG1hdHJpeF9tZGV2LVx1MDAzZW1hdHJpeC5hZG0sXG4tXHRcdFx0XHRcdCAgICAgQVBfRE9NQUlOUyk7XG4mIzQzO1x0XHRkb19yZW1vdmUgfD0gYml0bWFwX2FuZChjZHJlbSwgY2RfcmVtb3ZlLFxuJiM0MztcdFx0XHRcdFx0bWF0cml4X21kZXYtXHUwMDNlbWF0cml4LmFkbSxcbiYjNDM7XHRcdFx0XHRcdEFQX0RPTUFJTlMpO1xuIFxuIFx0XHRpZiAoZG9fcmVtb3ZlKVxuIFx0XHRcdHZmaW9fYXBfbWRldl9ob3RfdW5wbHVnX2NmZyhtYXRyaXhfbWRldiwgYXByZW0sIGFxcmVtLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhIGhvdC11bnBsdWcgY2FsbGJhY2sgKGB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZWApIGluIHRoZSBzMzkwIFZGSU8gQVAgY3J5cHRvIGRyaXZlciwgd2hpY2ggaXMgZXhlY3V0ZWQgb25seSB3aGVuIEFQIGFkYXB0ZXJzIG9yIGRvbWFpbnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgaG9zdCBBUCBjb25maWd1cmF0aW9uLiBBY2NvcmRpbmcgdG8gdGhlIGluc3RydWN0aW9ucywgdGVhcmRvd24gY2FsbGJhY2tzIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIGhvdC11bnBsdWcgb3BlcmF0aW9ucyBhcmUgbm90IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgN2UzNjE5MzIyNGU2YmE1ZTFlM2ZlMzUwYzM1NDdmNjM2MWM3ZTEwOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDcgMjM6MTY6NTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMgYi9kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMKaW5kZXggNDRiM2ExZGNjMWIzNi4uMWJmZGJlODUwMjNkZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYwpAQCAtMjYxNSw5ICYjNDM7MjYxNSw5IEBAIHN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlKHVuc2lnbmVkIGxvbmcgKmFwX3JlbW92ZSwKIAkJZG9fcmVtb3ZlIHw9IGJpdG1hcF9hbmQoYXFyZW0sIGFxX3JlbW92ZSwKIAkJCQkJICBtYXRyaXhfbWRldi0mZ3Q7bWF0cml4LmFxbSwKIAkJCQkJICBBUF9ET01BSU5TKTsKLQkJZG9fcmVtb3ZlIHw9IGJpdG1hcF9hbmRub3QoY2RyZW0sIGNkX3JlbW92ZSwKLQkJCQkJICAgICBtYXRyaXhfbWRldi0mZ3Q7bWF0cml4LmFkbSwKLQkJCQkJICAgICBBUF9ET01BSU5TKTsKJiM0MzsJCWRvX3JlbW92ZSB8PSBiaXRtYXBfYW5kKGNkcmVtLCBjZF9yZW1vdmUsCiYjNDM7CQkJCQltYXRyaXhfbWRldi0mZ3Q7bWF0cml4LmFkbSwKJiM0MzsJCQkJCUFQX0RPTUFJTlMpOwogCiAJCWlmIChkb19yZW1vdmUpCiAJCQl2ZmlvX2FwX21kZXZfaG90X3VucGx1Z19jZmcobWF0cml4X21kZXYsIGFwcmVtLCBhcXJlbSwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5OQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDI2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDcnlwdG8gRHJpdmVyIENoYW5nZSoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGluIGBkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmNgLiBSaWdodCBhd2F5LCB0aGF0IHRlbGxzIG1lIGl0JiMzOTtzIHMzOTAtc3BlY2lmaWMsIHNvIHdlJiMzOTtyZSB0YWxraW5nIG1haW5mcmFtZSB0ZXJyaXRvcnkuIEl0JiMzOTtzIGEgYGJpdG1hcF9hbmRub3RgIHRvIGBiaXRtYXBfYW5kYCBjaGFuZ2Ugd2l0aGluIHRoZSBgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmVgIGZ1bmN0aW9uLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjb2RlIHBhdGggaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVS4gV2UgY2FuIGVtdWxhdGUgczM5MHggaW4gUUVNVSwgYnV0IGRvZXMgaXQgbmVjZXNzaXRhdGUgc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgdG8gaGl0IHRoaXMgc2VjdGlvbiBvZiBjb2RlPwoKVkZJTyBBUCBpcyBzcGVjaWZpY2FsbHkgZm9yIEFkanVuY3QgUHJvY2Vzc29yIGNyeXB0byBjYXJkcyBvbiBzMzkwLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIuIE5vdywgY2FuIHRoaXMgYmUgZnV6emVkPyBUaGUgcHJvbXB0IHN0YXRlcyB0aGF0IHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6YXRpb24sIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSwgc2hvdWxkbiYjMzk7dCBiZSBjb25zaWRlcmVkLiBUaGUgcHJvbXB0IG1lbnRpb25zIGAucmVtb3ZlYCwgYC5zaHV0ZG93bmAsIGFuZCB0ZWFyZG93biBjYWxsYmFja3MgYXMgYXJlYXMgdG8gYmUgd2FyeSBvZiwgZXNwZWNpYWxseSB0aG9zZSBleGVjdXRlZCBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLiBJIG5lZWQgdG8gZm9jdXMgb24gYHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlYCB0byBhc3Nlc3MgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgdGhlIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yNTU3PXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9ob3RfdW5wbHVnX2NmZyhzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2LFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNTg1LS8qKlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI1ODY6ICogdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUgLSBkZXRlcm1pbmVzIHdoaWNoIGd1ZXN0cyBhcmUgdXNpbmcgdGhlIGFkYXB0ZXJzLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1ODctICpcdFx0XHQgICAgIGRvbWFpbnMgYW5kIGNvbnRyb2wgZG9tYWlucyB0aGF0IGhhdmUgYmVlbiByZW1vdmVkXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1OTctICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjU5ODpzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZSh1bnNpZ25lZCBsb25nICphcF9yZW1vdmUsXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjU5OS1cdFx0XHRcdCAgICB1bnNpZ25lZCBsb25nICphcV9yZW1vdmUsXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI2Mzk9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmUoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjdXJfY29uZmlnX2luZm8sXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2NjAtXHRpZiAoZG9fcmVtb3ZlKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI2NjE6XHRcdHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlKGFwcmVtLCBhcXJlbSwgY2RyZW0pO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2NjItfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTYKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91JiMzOTt2ZSByZXF1ZXN0ZWQsIGFpbWVkIGF0IGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGB2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZWAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byBgdmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmVgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGF0JiMzOTtzIHRoZSBjb250ZXh0IGhlcmU/JiMzNDsgVGhpcyBuYW1lIHNjcmVhbXMgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGFkdmFuY2VkIHByb2dyYW1taW5nIChBUCkgbW9kZSB3aXRoaW4gVkZJTywgYW5kIHNwZWNpZmljYWxseSwgdGhlIGhhbmRsaW5nIG9mIG1lZGlhdGVkIGRldmljZXMgKG1kZXZzKS4gVGhlICYjMzQ7b25fY2ZnX3JlbW92ZSYjMzQ7IHBhcnQgc3Ryb25nbHkgc3VnZ2VzdHMgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIHRyaWdnZXJlZCB3aGVuIGEgY29uZmlndXJhdGlvbiBmb3IgYW4gbWRldiBpcyBiZWluZyByZW1vdmVkLCBsaWtlbHkgZHVyaW5nIGRldmljZSB1bmJpbmRpbmcsIGRyaXZlciBkZXRhY2htZW50LCBvciBhIHNpbWlsYXIgdGVhcmRvd24gc2VxdWVuY2UuCgpJ4oCZbSBhbHJlYWR5IG1lbnRhbGx5IG1hcHBpbmcgdGhpcyB0byBwb3RlbnRpYWwgYXJlYXMgb2YgaW50ZXJlc3Q6CgoqICAgKipSZXNvdXJjZSBDbGVhbnVwOioqIElzIHRoaXMgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgYWxsb2NhdGVkIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlIG1kZXYmIzM5O3MgY29uZmlndXJhdGlvbj8gSSBzdXNwZWN0IHNvLiBJIG5lZWQgdG8gYmUgdGhpbmtpbmcgYWJvdXQgbWVtb3J5IGFsbG9jYXRpb25zLCBpbnRlcnJ1cHQgdmVjdG9ycywgRE1BIG1hcHBpbmdzLCBhbmQgYW55dGhpbmcgZWxzZSB0aGUgY29uZmlndXJhdGlvbiBtaWdodCBoYXZlIHNldCB1cC4KKiAgICoqU3luY2hyb25pemF0aW9uOioqIEdpdmVuIHRoZSBjb21wbGV4aXR5IG9mIFZGSU8gYW5kIHRoZSBtdWx0aS10aHJlYWRlZCBuYXR1cmUgb2YgdGhlIGtlcm5lbCwgSSYjMzk7bSBnb2luZyB0byBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IGFueSBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBwcm90ZWN0ZWQuIElzIHRoZXJlIGEgc3BpbmxvY2ssIG11dGV4LCBvciBvdGhlciBtZWNoYW5pc20gaGVyZT8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIEkgbmVlZCB0byBpZGVudGlmeT8KKiAgICoqRXJyb3IgSGFuZGxpbmc6KiogV2hhdCYjMzk7cyB0aGUgZXJyb3ItaGFuZGxpbmcgc3RyYXRlZ3k/IERvZXMgdGhlIGZ1bmN0aW9uIHJldHVybiBlcnJvciBjb2Rlcywgb3IgZG9lcyBpdCBwYW5pYz8gV2hhdCBzcGVjaWZpYyBlcnJvcnMgY2FuIG9jY3VyIGR1cmluZyB0aGUgcmVtb3ZhbCBwcm9jZXNzPyBJIG5lZWQgdG8ga25vdyBob3cgcmVzaWxpZW50IHRoaXMgZnVuY3Rpb24gaXMuCiogICAqKkNhbGwgU2l0ZXM6KiogV2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBjYWxsZWQgZnJvbT8gS25vd2luZyB0aGUgY2FsbGVycyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBzZXF1ZW5jZSBvZiBldmVudHMgYW5kIHRoZSBjb250ZXh0IGluIHdoaWNoIGB2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZWAgb3BlcmF0ZXMuIGBncmVwYCBhbmQgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2YgVkZJTyYjMzk7cyBkZXZpY2UgbW9kZWwgc2hvdWxkIGhlbHAgbWUgc29ydCB0aGF0IG91dCBxdWlja2x5LgoqICAgKipTaWRlIEVmZmVjdHM6KiogQXJlIHRoZXJlIGFueSBzaWRlIGVmZmVjdHM/IEFueSBjaGFuZ2VzIHRvIG90aGVyIFZGSU8gb3IgZGV2aWNlIHN0YXRlPyBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgYW55IGNvZGUgdGhhdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBkYXRhIHN0cnVjdHVyZXMgb3IgY2FsbHMgb3V0IHRvIG90aGVyIFZGSU8tcmVsYXRlZCBmdW5jdGlvbnMuCgpNeSBhcHByb2FjaCB3aWxsIGJlIG1ldGhvZGljYWwuIEkgd2lsbCBxdWlja2x5IHNjYW4gdGhlIGZ1bmN0aW9uIGJvZHkgZm9yIGtleSBpbmRpY2F0b3JzOiBsb2NraW5nLCByZXNvdXJjZSBkZWFsbG9jYXRpb24sIGVycm9yIGNoZWNraW5nLCBhbmQgaW50ZXJhY3Rpb25zIHdpdGggVkZJTyBjb3JlIGRhdGEgc3RydWN0dXJlcy4gQWZ0ZXIgdGhhdCwgSSYjMzk7bGwgdHJhY2UgaXRzIGNhbGxlcnMgdG8gYnVpbGQgYSBjb21wcmVoZW5zaXZlIHBpY3R1cmUgb2YgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLiBUaGUgZGV2aWwgaXMgYWx3YXlzIGluIHRoZSBkZXRhaWxzLCBzbyBJIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbi4gSSBhbHNvIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZnVuY3Rpb24gZG9lc24mIzM5O3QgbGVhayByZXNvdXJjZXMgb3IgbGVhdmUgYW55IGxpbmdlcmluZyBzdGF0ZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI1OTg9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUodW5zaWduZWQgbG9uZyAqYXBfcmVtb3ZlLFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjMxLS8qKlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI2MzI6ICogdmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmUgLSByZXNwb25kcyB0byB0aGUgcmVtb3ZhbCBvZiBhZGFwdGVycywgZG9tYWlucyBhbmRcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjMzLSAqXHRcdFx0XHRjb250cm9sIGRvbWFpbnMgZnJvbSB0aGUgaG9zdCBBUCBjb25maWd1cmF0aW9uXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2MzgtICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjYzOTpzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZShzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jb25maWdfaW5mbyxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjQwLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqcHJldl9jb25maWdfaW5mbylcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjgwND12b2lkIHZmaW9fYXBfb25fY2ZnX2NoYW5nZWQoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjdXJfY2ZnX2luZm8sXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4MTEtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjgxMjpcdHZmaW9fYXBfbWRldl9vbl9jZmdfcmVtb3ZlKGN1cl9jZmdfaW5mbywgcHJldl9jZmdfaW5mbyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgxMy1cdHZmaW9fYXBfbWRldl9vbl9jZmdfYWRkKGN1cl9jZmdfaW5mbywgcHJldl9jZmdfaW5mbyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIwMAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd24sIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQ6CgoqKlRyYWNpbmcgYHZmaW9fYXBfb25fY2ZnX2NoYW5nZWRgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIGZ1bmN0aW9uIG5hbWUsIGB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkYCwgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgdGhpcyBpcyBhIGNhbGxiYWNrIG9yIGhhbmRsZXIgd2l0aGluIHRoZSBWRklPIChWaXJ0dWFsIEZ1bmN0aW9uIEkvTykgZnJhbWV3b3JrLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIGNoYW5nZXMgdG8gdGhlIGNvbmZpZ3VyYXRpb24gb2YgYW4gSS9PIGRldmljZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgKndoYXQqIGNvbmZpZ3VyYXRpb24gaXMgY2hhbmdpbmcsIGFuZCAqd2h5KiB0aGlzIGhhbmRsZXIgaXMgdGhlIG9uZSBiZWluZyB0cmlnZ2VyZWQuIElzIGl0IGEgaG90cGx1ZyBldmVudD8gQSBkZXZpY2UgcmUtZW51bWVyYXRpb24/IEEgdXNlci1zcGFjZSBjb21tYW5kPyBPciwgaXMgaXQgZHVlIHRvIHRoZSBpbnRlcm5hbCBvcGVyYXRpb24gb2YgdGhlIFZGSU8gc3lzdGVtIGl0c2VsZj8KCk15IGZpcnN0IHN0ZXAgd291bGQgYmUgdG8gZmlndXJlIG91dCB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tLCBieSBjcm9zcy1yZWZlcmVuY2luZyBpdCB3aXRoIHRoZSBjYWxsIHN0YWNrLiBBIHF1aWNrIHNlYXJjaCBzaG91bGQgcmV2ZWFsIHRoZSBsaWtlbHkgY2FsbGVycywgYWxsb3dpbmcgbWUgdG8gYnVpbGQgYSBjb250ZXh0dWFsIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBjb25maWd1cmF0aW9uIGNoYW5nZSBpcyBiZWluZyBpbml0aWF0ZWQuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBmb3IgY29kZSB0aGF0IHNldHMgdXAgb3IgbWFuYWdlcyBWRklPIGRldmljZXMsIHByb2JhYmx5IGludm9sdmluZyB0aGluZ3MgbGlrZSBQQ0kgZGV2aWNlIHN0cnVjdHVyZXMsIERNQSBtYXBwaW5ncywgYW5kIHBlcmhhcHMgZXZlbiBkZXZpY2Utc3BlY2lmaWMgcmVnaXN0ZXJzLgoKTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbi4gV2hhdCBraW5kIG9mIGRhdGEgaXMgcGFzc2VkIGluPyBJcyBpdCB0aGUgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgaXRzZWxmLCBvciBhIHBvaW50ZXIgdG8gc29tZSBWRklPLWludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjaGFuZ2U/IEFyZSB0aGVyZSBkZXZpY2UgaWRlbnRpZmllcnM/IENvbnRleHR1YWwgaW5mb3JtYXRpb24/IFVuZGVyc3RhbmRpbmcgdGhlIGlucHV0IHBhcmFtZXRlcnMgd2lsbCBiZSB2aXRhbCB0byBkZWNpcGhlcmluZyB0aGUgZnVuY3Rpb27igJlzIGxvZ2ljLgoKRnJvbSB0aGVyZSwgSSYjMzk7bGwgZXhhbWluZSB0aGUgZnVuY3Rpb24mIzM5O3MgaW50ZXJuYWwgd29ya2luZ3MuIFdoYXQmIzM5O3MgaXQgZG9pbmc/IElzIGl0IG1hbmlwdWxhdGluZyBkZXZpY2Utc3BlY2lmaWMgcmVnaXN0ZXJzPyBJcyBpdCB1cGRhdGluZyBWRklPIGRhdGEgc3RydWN0dXJlcz8gSXMgaXQgbm90aWZ5aW5nIHVzZXItc3BhY2UgdmlhIGFuIGV2ZW50ZmQgb3IgaW9jdGw/IERvZXMgaXQgaW52b2x2ZSBhY3F1aXJpbmcgYW55IGxvY2tzIG9yIGNyaXRpY2FsIHNlY3Rpb25zIHRvIG1haW50YWluIGRhdGEgY29uc2lzdGVuY3k/IEkmIzM5O2QgZXhwZWN0IGl0IHRvIGJlIGhhbmRsaW5nIGFzcGVjdHMgcmVsYXRlZCB0byBkZXZpY2UgaW5pdGlhbGl6YXRpb24sIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBwZXJtaXNzaW9uIG1hbmFnZW1lbnQuIEFueSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBNTUlPIHJlZ2lvbiBvciBETUEgc2V0dGluZ3Mgd2lsbCBiZSBvZiBwYXJ0aWN1bGFyIGludGVyZXN0LiBJJiMzOTtsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgbWVtb3J5IGNvcnJ1cHRpb24uCgpGaW5hbGx5LCBJJiMzOTtsbCBuZWVkIHRvIGNvbnNpZGVyIHRoZSBsYXJnZXIgcGljdHVyZS4gSG93IGRvZXMgdGhpcyBmaXQgaW50byB0aGUgb3ZlcmFsbCBWRklPIGRldmljZSBsaWZlY3ljbGU/IFdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgY29uc2VxdWVuY2VzIGlmIHRoaXMgaGFuZGxlciBmYWlscyBvciBoYXMgYW4gdW5leHBlY3RlZCBzaWRlIGVmZmVjdD8gQXJlIHRoZXJlIG90aGVyIHJlbGF0ZWQgaGFuZGxlcnM/IEFyZSB0aGVyZSBwb3RlbnRpYWwgc2VjdXJpdHkgaW1wbGljYXRpb25zIG9mIGFsbG93aW5nIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyBvbiB0aGUgSU9NTVUgc2lkZT8gQXJlIHdlIHdvcmtpbmcgaW4gYSBzZWN1cmUgZW52aXJvbm1lbnQ/IEFuZCwgSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgaGFwcGVucyBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZzsgYXJlIHRoZXJlIGVycm9yIHBhdGhzIG9yIGxvZ2dpbmcgaW4gcGxhY2U/IFRoaXMgd2lsbCBpbmZvcm0gbXkgYXNzZXNzbWVudCBvZiB0aGUgZnVuY3Rpb24mIzM5O3MgY29ycmVjdG5lc3MsIHJvYnVzdG5lc3MsIGFuZCBwZXJmb3JtYW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jPTU4PXN0YXRpYyBzdHJ1Y3QgYXBfZHJpdmVyIHZmaW9fYXBfZHJ2ID0ge1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy02MS1cdC5pbl91c2UgPSB2ZmlvX2FwX21kZXZfcmVzb3VyY2VfaW5fdXNlLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjYyOlx0Lm9uX2NvbmZpZ19jaGFuZ2VkID0gdmZpb19hcF9vbl9jZmdfY2hhbmdlZCxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy02My1cdC5vbl9zY2FuX2NvbXBsZXRlID0gdmZpb19hcF9vbl9zY2FuX2NvbXBsZXRlLFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yNzcyPXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9vbl9jZmdfYWRkKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqY3VyX2NvbmZpZ19pbmZvLFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNzk3LS8qKlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI3OTg6ICogdmZpb19hcF9vbl9jZmdfY2hhbmdlZCAtIGhhbmRsZXMgbm90aWZpY2F0aW9uIG9mIGNoYW5nZXMgdG8gdGhlIGhvc3QgQVBcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNzk5LSAqXHRcdFx0ICAgIGNvbmZpZ3VyYXRpb24uXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4MDMtICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjgwNDp2b2lkIHZmaW9fYXBfb25fY2ZnX2NoYW5nZWQoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjdXJfY2ZnX2luZm8sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgwNS1cdFx0XHQgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpwcmV2X2NmZ19pbmZvKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg9MTYxPWludCB2ZmlvX2FwX21kZXZfcmVzb3VyY2VfaW5fdXNlKHVuc2lnbmVkIGxvbmcgKmFwbSwgdW5zaWduZWQgbG9uZyAqYXFtKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtMTYyLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaDoxNjM6dm9pZCB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqbmV3X2NvbmZpZ19pbmZvLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaC0xNjQtXHRcdFx0ICAgIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqb2xkX2NvbmZpZ19pbmZvKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDEyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFQIENvbmZpZ3VyYXRpb24gQ2hhbmdlcyBpbiBhIFZpcnR1YWxpemVkIFdvcmxkKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBvbl9jb25maWdfY2hhbmdlZGAgY2FsbGJhY2ssIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIEFQIGNvbmZpZ3VyYXRpb25zLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtDYW4gdGhpcyBldmVuICpoYXBwZW4qIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/JiMzNDsgSXQmIzM5O3MgczM5MCBzcGVjaWZpYywgd2hpY2ggYWxyZWFkeSBuYXJyb3dzIHRoZSBzY29wZSwgYW5kIGl0JiMzOTtzIHRpZWQgdG8gQVAgY3J5cHRvIGNhcmRzLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZXNlIEFQIGNhcmRzIGFyZSBlbXVsYXRhYmxlIHdpdGhpbiBRRU1VLiBJIGtub3cgUUVNVSBoYXMgc29tZSBzdXBwb3J0IGZvciBgdmZpby1hcGAsIGJ1dCBJIHNlZW0gdG8gcmVjYWxsIHRoYXQmIzM5O3MgZm9yICpwYXNzaW5nIHRocm91Z2gqIHBoeXNpY2FsIEFQIGNhcmRzIHRvIGd1ZXN0IFZNcywgd2hpY2ggaXMgbm90IHdoYXQgSSYjMzk7bSBpbnRlcmVzdGVkIGluIGhlcmUuCgpIb2xkIG9uLCBJIHNlZW0gdG8gcmVjYWxsIHNvbWV0aGluZyAtIHRoZSBkb2N1bWVudGF0aW9uIG1lbnRpb25zIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW5oZXJlbnRseSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBzZXR1cHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGlzIGludm9sdmVkLiBBcmUgdGhlIEFQIGNyeXB0byBjYXJkcyBlbXVsYXRlZCBpbiBRRU1VPyBJIHRoaW5rIEkgbmVlZCB0byByZXZpc2l0IHRoZSBRRU1VIGRvY3VtZW50YXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlIGlzIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gYXZhaWxhYmxlIGZvciB0aGUgQVAgYnVzIGl0c2VsZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXBfY29uZmlnX2luZm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTEwNT1zdGF0aWMgREVDTEFSRV9DT01QTEVUSU9OKGFwX2FwcW5fYmluZGluZ3NfY29tcGxldGUpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMDYtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEwNzpzdGF0aWMgc3RydWN0IGFwX2NvbmZpZ19pbmZvIHFjaVsyXTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTA4OnN0YXRpYyBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmNvbnN0IGFwX3FjaV9pbmZvID0gXHUwMDI2cWNpWzBdO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMDk6c3RhdGljIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqY29uc3QgYXBfcWNpX2luZm9fb2xkID0gXHUwMDI2cWNpWzFdO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTAtXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yMzExPXN0YXRpYyBib29sIGFwX2dldF9jb25maWd1cmF0aW9uKHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzE5LVx0cmV0dXJuIG1lbWNtcChhcF9xY2lfaW5mbywgYXBfcWNpX2luZm9fb2xkLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzIwOlx0XHQgICAgICBzaXplb2Yoc3RydWN0IGFwX2NvbmZpZ19pbmZvKSkgIT0gMDtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMyMS19XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuaD0xMzU9c3RydWN0IGFwX2RyaXZlciB7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuaC0xNDgtXHQgKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmg6MTQ5Olx0dm9pZCAoKm9uX2NvbmZpZ19jaGFuZ2VkKShzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKm5ld19jb25maWdfaW5mbyxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmg6MTUwOlx0XHRcdFx0ICBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKm9sZF9jb25maWdfaW5mbyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5oLTE1MS1cdC8qXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuaC0xNTYtXHQgKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmg6MTU3Olx0dm9pZCAoKm9uX3NjYW5fY29tcGxldGUpKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqbmV3X2NvbmZpZ19pbmZvLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuaDoxNTg6XHRcdFx0XHQgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpvbGRfY29uZmlnX2luZm8pO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuaC0xNTktfTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9NTgxPXN0YXRpYyBpbnQgaGFuZGxlX3BxYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy02NDQtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6NjQ1OnN0YXRpYyB2b2lkIHZmaW9fYXBfbWF0cml4X2luaXQoc3RydWN0IGFwX2NvbmZpZ19pbmZvICppbmZvLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTY0Ni1cdFx0XHRcdHN0cnVjdCBhcF9tYXRyaXggKm1hdHJpeClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjU5OD1zdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZSh1bnNpZ25lZCBsb25nICphcF9yZW1vdmUsXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2MzgtICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjYzOTpzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZShzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jb25maWdfaW5mbyxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNjQwOlx0XHRcdFx0ICAgICAgIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqcHJldl9jb25maWdfaW5mbylcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjQxLXtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9Mjc0MT1zdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfY2ZnX2FkZCh1bnNpZ25lZCBsb25nICphcG1fYWRkLCB1bnNpZ25lZCBsb25nICphcW1fYWRkLFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNzcxLSAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI3NzI6c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X29uX2NmZ19hZGQoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjdXJfY29uZmlnX2luZm8sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6Mjc3MzpcdFx0XHRcdCAgICBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKnByZXZfY29uZmlnX2luZm8pXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjc3NC17XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4MDMtICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjgwNDp2b2lkIHZmaW9fYXBfb25fY2ZnX2NoYW5nZWQoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjdXJfY2ZnX2luZm8sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjgwNTpcdFx0XHQgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpwcmV2X2NmZ19pbmZvKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4MDYte1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yODE5PXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9ob3RfcGx1Z19jZmcoc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldilcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjg0OC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODQ5OnZvaWQgdmZpb19hcF9vbl9zY2FuX2NvbXBsZXRlKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqbmV3X2NvbmZpZ19pbmZvLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI4NTA6XHRcdFx0ICAgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpvbGRfY29uZmlnX2luZm8pXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjg1MS17XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaD00Nz1zdHJ1Y3QgYXBfbWF0cml4X2RldiB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTQ4LVx0c3RydWN0IGRldmljZSBkZXZpY2U7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjQ5Olx0c3RydWN0IGFwX2NvbmZpZ19pbmZvIGluZm87XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTUwLVx0c3RydWN0IGxpc3RfaGVhZCBtZGV2X2xpc3Q7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaD0xNjE9aW50IHZmaW9fYXBfbWRldl9yZXNvdXJjZV9pbl91c2UodW5zaWduZWQgbG9uZyAqYXBtLCB1bnNpZ25lZCBsb25nICphcW0pO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaC0xNjItXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjE2Mzp2b2lkIHZmaW9fYXBfb25fY2ZnX2NoYW5nZWQoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpuZXdfY29uZmlnX2luZm8sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjE2NDpcdFx0XHQgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpvbGRfY29uZmlnX2luZm8pO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaDoxNjU6dm9pZCB2ZmlvX2FwX29uX3NjYW5fY29tcGxldGUoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpuZXdfY29uZmlnX2luZm8sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjE2NjpcdFx0XHQgICAgICBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKm9sZF9jb25maWdfaW5mbyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTE2Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzY5MgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFZGSU8tQVAgQ29uZmlndXJhdGlvbiBSZW1vdmFsKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlYCBmdW5jdGlvbi4gSSBzZWUgaXQmIzM5O3MgYnVyaWVkIGluIGBkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmNgLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoIGluaXRpYWxseS4gVHJhY2luZyB0aGUgY2FsbHMsIEkgc2VlIGB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZWAgaXMgaW52b2tlZCBieSBgdmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmVgLCB3aGljaCBpbiB0dXJuLCBpcyBjYWxsZWQgZnJvbSBgdmZpb19hcF9vbl9jZmdfY2hhbmdlZGAuIEFoLCB0aGF0IG1ha2VzIHNlbnNlLiBgdmZpb19hcF9vbl9jZmdfY2hhbmdlZGAgaXMgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLCByZWdpc3RlcmVkIGluIGB2ZmlvX2FwX2RydmAgYXMgYG9uX2NvbmZpZ19jaGFuZ2VkYC4gU28gdGhpcyB3aG9sZSBzZXF1ZW5jZSBpcyBob3cgdGhlIGRyaXZlciByZWFjdHMgdG8gQVAgY29uZmlndXJhdGlvbiBjaGFuZ2VzLgoKTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBjYW4gdGhpcyBlbnRpcmUgc2VxdWVuY2UgYmUgdHJpZ2dlcmVkIHdpdGhvdXQgYWN0dWFsIHBoeXNpY2FsIEFQIGhhcmR3YXJlIGJlaW5nIGludm9sdmVkPyBJcyB0aGVyZSBhIHN5c2ZzIGludGVyZmFjZSBvciBzb21lIG90aGVyIG1lY2hhbmlzbSB0aGF0IGNvdWxkIGZha2Ugb3Igc2ltdWxhdGUgdGhlc2UgY29uZmlndXJhdGlvbiBjaGFuZ2VzPyBPciBpcyB0aGlzIGNoYW5nZSBleGNsdXNpdmVseSBoYXJkd2FyZS1kcml2ZW4/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBwb3NzaWJsZSBhdHRhY2sgdmVjdG9ycyByZWxhdGVkIHRvIHRyaWdnZXJpbmcgdGhpcywgdG8gc2VlIGlmIEkgY2FuIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGggZnJvbSB1c2Vyc3BhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fYXBfb25fY2ZnX2NoYW5nZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM9NTg9c3RhdGljIHN0cnVjdCBhcF9kcml2ZXIgdmZpb19hcF9kcnYgPSB7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTYxLVx0LmluX3VzZSA9IHZmaW9fYXBfbWRldl9yZXNvdXJjZV9pbl91c2UsXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6NjI6XHQub25fY29uZmlnX2NoYW5nZWQgPSB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTYzLVx0Lm9uX3NjYW5fY29tcGxldGUgPSB2ZmlvX2FwX29uX3NjYW5fY29tcGxldGUsXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI3NzI9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X29uX2NmZ19hZGQoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjdXJfY29uZmlnX2luZm8sXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI3OTctLyoqXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6Mjc5ODogKiB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkIC0gaGFuZGxlcyBub3RpZmljYXRpb24gb2YgY2hhbmdlcyB0byB0aGUgaG9zdCBBUFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI3OTktICpcdFx0XHQgICAgY29uZmlndXJhdGlvbi5cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgwMy0gKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODA0OnZvaWQgdmZpb19hcF9vbl9jZmdfY2hhbmdlZChzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jZmdfaW5mbyxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODA1LVx0XHRcdCAgICBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKnByZXZfY2ZnX2luZm8pXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaD0xNjE9aW50IHZmaW9fYXBfbWRldl9yZXNvdXJjZV9pbl91c2UodW5zaWduZWQgbG9uZyAqYXBtLCB1bnNpZ25lZCBsb25nICphcW0pO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaC0xNjItXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjE2Mzp2b2lkIHZmaW9fYXBfb25fY2ZnX2NoYW5nZWQoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpuZXdfY29uZmlnX2luZm8sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTE2NC1cdFx0XHQgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpvbGRfY29uZmlnX2luZm8pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzI4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpZ2dpbmcgaW50byB0aGUgQ29uZmlndXJhdGlvbiBDaGFuZ2UgTWVjaGFuaXNtKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgY29uZmlndXJhdGlvbiBjaGFuZ2UuIFdoZXJlIGRvZXMgdGhlIHN5c3RlbSBhY3R1YWxseSAqcmVhY3QqIHRvIHRoZXNlIGNoYW5nZXM/IE15IGd1dCB0ZWxscyBtZSB0aGF0IGBvbl9jb25maWdfY2hhbmdlZGAgaXMgdGhlIGtleSBmdW5jdGlvbi4gTGV0JiMzOTtzIHNlZSBpZiB3ZSBjYW4gZmluZCBpdHMgY2FsbCBzaXRlcywgYW5kIGluIHdoYXQgY29udGV4dCB0aGUgY29uZmlndXJhdGlvbiB1cGRhdGVzIGFyZSBiZWluZyBwZXJmb3JtZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHNvIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZGl2aW5nIGludG8gdGhlIGBhcF9idXMuY2AgZmlsZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHdoYXQgb3RoZXIgbW9kdWxlcyBhcmUgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIGNvbmZpZyB1cGRhdGVzLCBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoaXMgb25lLiBJJiMzOTttIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIHByb3BhZ2F0aW9uIG9mIHRoZSBjb25maWd1cmF0aW9uIGRhdGEuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29uX2NvbmZpZ19jaGFuZ2VkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTE5MjM9c3RhdGljIGludCBfX2Rydl9ub3RpZnlfY29uZmlnX2NoYW5nZWQoc3RydWN0IGRldmljZV9kcml2ZXIgKmRydiwgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5MjctXHRpZiAodHJ5X21vZHVsZV9nZXQoZHJ2LVx1MDAzZW93bmVyKSkge1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTI4Olx0XHRpZiAoYXBfZHJ2LVx1MDAzZW9uX2NvbmZpZ19jaGFuZ2VkKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTI5Olx0XHRcdGFwX2Rydi1cdTAwM2Vvbl9jb25maWdfY2hhbmdlZChhcF9xY2lfaW5mbywgYXBfcWNpX2luZm9fb2xkKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTkzMC1cdFx0bW9kdWxlX3B1dChkcnYtXHUwMDNlb3duZXIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTY4CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFraW5nIHRoZSBwZXJzcGVjdGl2ZSBvZiBzb21lb25lIGtub3dsZWRnZWFibGUgaW4gdGhlIGZpZWxkLCBhbmQgZm9sbG93aW5nIHlvdXIgaW5zdHJ1Y3Rpb25zOgoKKipUcmFjaW5nIHRoZSBPcmlnaW5zIG9mIGEgQ29uZmlndXJhdGlvbiBDaGFuZ2UgTm90aWZpY2F0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIG9iamVjdGl2ZSBpcyB0byBmaWd1cmUgb3V0IHRoZSB1cHN0cmVhbSBjYWxsZXJzIG9mIGBfX2Rydl9ub3RpZnlfY29uZmlnX2NoYW5nZWRgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIHRyaWdnZXJpbmcgdGhpcyBub3RpZmljYXRpb24uIEtub3dpbmcgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2lsbCBnaXZlIG1lIGEgY3JpdGljYWwgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJiMzOTtzIGR5bmFtaWMgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50LiBJdCBpcyBpbXBvcnRhbnQgdG8ga25vdyB3aGljaCBwYXJ0cyBvZiB0aGUgc3lzdGVtIGFyZSByZXNwb25zaWJsZSBmb3IgaW5pdGlhdGluZyB0aGVzZSBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2Rydl9ub3RpZnlfY29uZmlnX2NoYW5nZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTkxNj1zdGF0aWMgaW50IF9fbWF0Y2hfcXVldWVfZGV2aWNlX3dpdGhfcXVldWVfaWQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCB2b2lkICpkYXRhKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTkyMi0vKiBIZWxwZXIgZnVuY3Rpb24gZm9yIG5vdGlmeV9jb25maWdfY2hhbmdlZCAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTIzOnN0YXRpYyBpbnQgX19kcnZfbm90aWZ5X2NvbmZpZ19jaGFuZ2VkKHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5MjQte1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTkzNz1zdGF0aWMgaW5saW5lIHZvaWQgbm90aWZ5X2NvbmZpZ19jaGFuZ2VkKHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTM5LVx0YnVzX2Zvcl9lYWNoX2RydihcdTAwMjZhcF9idXNfdHlwZSwgTlVMTCwgTlVMTCxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTk0MDpcdFx0XHQgX19kcnZfbm90aWZ5X2NvbmZpZ19jaGFuZ2VkKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTk0MS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2MjUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlRyYWNpbmcgdGhlIENvbmZpZ3VyYXRpb24gQ2hhbmdlIE5vdGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgYG5vdGlmeV9jb25maWdfY2hhbmdlZGAgZnVuY3Rpb24uIE15IGZpcnN0IHN0ZXAgaXMgdG8gdHJhY2UgaXRzIGludm9jYXRpb25zLiBJIHdhbnQgdG8gc2VlICp3aGVyZSogdGhpcyBub3RpZmljYXRpb24gaXMgYmVpbmcgdHJpZ2dlcmVkLiBLbm93aW5nIHRoZSBjYWxsIHNpdGVzIHdpbGwgaW1tZWRpYXRlbHkgZ2l2ZSBtZSBjb250ZXh0OiBXaGF0IG1vZHVsZXMgYXJlIGxpc3RlbmluZz8gV2hhdCBldmVudHMgYXJlIGNhdXNpbmcgYSBjb25maWd1cmF0aW9uIGNoYW5nZSBub3RpZmljYXRpb24/IFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGl0cyBiZWhhdmlvciBhbmQgcG90ZW50aWFsIHJhbWlmaWNhdGlvbnMgdGhyb3VnaG91dCB0aGUgc3lzdGVtLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCBtZXRob2RzLCBsaWtlbHkgYSBjb21iaW5hdGlvbiBvZiBncmVwLCBJREUgc2VhcmNoLCBhbmQgcG90ZW50aWFsbHkgZXZlbiBzb21lIHN0YXRpYyBhbmFseXNpcyB0b29scyBkZXBlbmRpbmcgb24gdGhlIHByb2plY3QuIFRoZSBnb2FsIGlzIHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiBpdHMgcmVhY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25vdGlmeV9jb25maWdfY2hhbmdlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xOTE2PXN0YXRpYyBpbnQgX19tYXRjaF9xdWV1ZV9kZXZpY2Vfd2l0aF9xdWV1ZV9pZChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTIxLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTIyOi8qIEhlbHBlciBmdW5jdGlvbiBmb3Igbm90aWZ5X2NvbmZpZ19jaGFuZ2VkICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE5MjM6c3RhdGljIGludCBfX2Rydl9ub3RpZnlfY29uZmlnX2NoYW5nZWQoc3RydWN0IGRldmljZV9kcml2ZXIgKmRydiwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTkyNC17XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTM2LS8qIE5vdGlmeSBhbGwgZHJpdmVycyBhYm91dCBhbiBxY2kgY29uZmlnIGNoYW5nZSAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTM3OnN0YXRpYyBpbmxpbmUgdm9pZCBub3RpZnlfY29uZmlnX2NoYW5nZWQodm9pZClcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTkzOC17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5MzktXHRidXNfZm9yX2VhY2hfZHJ2KFx1MDAyNmFwX2J1c190eXBlLCBOVUxMLCBOVUxMLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTQwOlx0XHRcdCBfX2Rydl9ub3RpZnlfY29uZmlnX2NoYW5nZWQpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTQxLX1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTIzNzM9c3RhdGljIGJvb2wgYXBfc2Nhbl9idXModm9pZClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzOTItXHRcdC8qIHBvc3QgYSBjb25maWcgY2hhbmdlIG5vdGlmeSAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzkzOlx0XHRub3RpZnlfY29uZmlnX2NoYW5nZWQoKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM5NC1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAzMDIKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gQ2hhbmdlIE5vdGlmaWNhdGlvbiBQYXRoKioKCkFscmlnaHQsIHNvIGBhcF9zY2FuX2J1c2AgaXMgdHJpZ2dlcmluZyBgbm90aWZ5X2NvbmZpZ19jaGFuZ2VkYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIGl0IGltbWVkaWF0ZWx5IHByb21wdHMgYSBkZWVwZXIgZGl2ZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O09rYXksIHdoeSBpcyB0aGUgYWNjZXNzIHBvaW50IHNjYW5uaW5nIGJ1cyBnZW5lcmF0aW5nIGEgY29uZmlndXJhdGlvbiBjaGFuZ2UgZXZlbnQ/IFdoYXQgZXhhY3RseSBpcyBjaGFuZ2luZz8mIzM0OyBJJiMzOTttIGFzc3VtaW5nIHRoZXJlJiMzOTtzIHNvbWUgaW50ZXJhY3Rpb24gdGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgc2Nhbm5pbmcgcHJvY2VzcyBhbmQgdGhlIGNvbmZpZ3VyYXRpb24gc3RhdGUuCgpUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogJiMzNDtXaGVyZSAqZWxzZSogZG9lcyB0aGlzIGZ1bmN0aW9uIGdldCBjYWxsZWQ/JiMzNDsgSWRlbnRpZnlpbmcgdGhlIGNhbGxlcnMgb2YgYGFwX3NjYW5fYnVzYCBpcyBrZXkuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgYXJvdW5kIHRoZXNlIGNhbGxzIHdpbGwgcHJvdmlkZSBlc3NlbnRpYWwgaW5mb3JtYXRpb24sIHRvIGRldGVybWluZTogdGhlIHN5c3RlbSYjMzk7cyByZWFjdGlvbiB0byB0aGUgZXZlbnQ7IHRoZSBvcmlnaW4gb2YgdGhlIGV2ZW50JiMzOTtzIHRyaWdnZXIgYW5kIGl0JiMzOTtzIGNvbnNlcXVlbmNlIHRvIHRoZSBjb25maWd1cmF0aW9uLiBJIHdhbnQgdG8gYnVpbGQgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoaXMgaW50ZXJhY3Rpb24uIFNvLCBteSBuZXh0IHN0ZXAgaXMgY2xlYXIg4oCTIEkmIzM5O20gZ29pbmcgdG8gdHJhY2UgdGhlIGNhbGwgZ3JhcGggYW5kIHNlZSB3aG8gdGhlIHBhcmVudCBmdW5jdGlvbnMgYXJlLCBhbmQgdGhlIG92ZXJhbGwgY2hhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FwX3NjYW5fYnVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTEzNT1NT0RVTEVfUEFSTV9ERVNDKG1zZ3Bvb2xfbWluX2l0ZW1zLCBcJiMzNDtBUCBtZXNzYWdlIHBvb2wgbWluaW1hbCBpdGVtc1wmIzM0Oyk7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzktICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE0MDpzdGF0aWMgYm9vbCBhcF9zY2FuX2J1cyh2b2lkKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTQxOnN0YXRpYyBib29sIGFwX3NjYW5fYnVzX3Jlc3VsdDsgLyogcmVzdWx0IG9mIGxhc3QgYXBfc2Nhbl9idXMoKSAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNDI6c3RhdGljIERFRklORV9NVVRFWChhcF9zY2FuX2J1c19tdXRleCk7IC8qIG11dGV4IGFwX3NjYW5fYnVzKCkgaW52b2NhdGlvbnMgKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTQzOnN0YXRpYyBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmFwX3NjYW5fYnVzX3Rhc2s7IC8qIHRocmVhZCBob2xkaW5nIHRoZSBzY2FuIG11dGV4ICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE0NDpzdGF0aWMgYXRvbWljNjRfdCBhcF9zY2FuX2J1c19jb3VudDsgLyogY291bnRlciBhcF9zY2FuX2J1cygpIGludm9jYXRpb25zICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE0NTpzdGF0aWMgaW50IGFwX3NjYW5fYnVzX3RpbWUgPSBBUF9DT05GSUdfVElNRTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTQ2OnN0YXRpYyBzdHJ1Y3QgdGltZXJfbGlzdCBhcF9zY2FuX2J1c190aW1lcjtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTQ3OnN0YXRpYyB2b2lkIGFwX3NjYW5fYnVzX3dxX2NhbGxiYWNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTQ4OnN0YXRpYyBERUNMQVJFX1dPUksoYXBfc2Nhbl9idXNfd29yaywgYXBfc2Nhbl9idXNfd3FfY2FsbGJhY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNDktXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz04MDI9c3RhdGljIHZvaWQgYXBfY2hlY2tfYmluZGluZ3NfY29tcGxldGUodm9pZClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTgwNS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6ODA2Olx0aWYgKGF0b21pYzY0X3JlYWQoXHUwMDI2YXBfc2Nhbl9idXNfY291bnQpIFx1MDAzZT0gMSkge1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy04MDctXHRcdGFwX2NhbGNfYm91bmRfYXBxbnMoXHUwMDI2YXBxbnMsIFx1MDAyNmJvdW5kKTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTExMTk9Ym9vbCBhcF9idXNfZm9yY2VfcmVzY2FuKHZvaWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExMjAte1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMTIxOlx0dW5zaWduZWQgbG9uZyBzY2FuX2NvdW50ZXIgPSBhdG9taWM2NF9yZWFkKFx1MDAyNmFwX3NjYW5fYnVzX2NvdW50KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTEyMi1cdGJvb2wgcmMgPSBmYWxzZTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExMzYtXHQgKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTEzNzpcdGlmIChtdXRleF9pc19sb2NrZWQoXHUwMDI2YXBfc2Nhbl9idXNfbXV0ZXgpKSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjExMzg6XHRcdGlmIChhcF9zY2FuX2J1c190YXNrID09IGN1cnJlbnQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExMzktXHRcdFx0Z290byBvdXQ7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTQyLVx0LyogVHJ5IHRvIGFjcXVpcmUgdGhlIEFQIHNjYW4gYnVzIG11dGV4ICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjExNDM6XHRpZiAobXV0ZXhfdHJ5bG9jayhcdTAwMjZhcF9zY2FuX2J1c19tdXRleCkpIHtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTE0NC1cdFx0LyogbXV0ZXggYWNxdWlyZWQsIHJ1biB0aGUgQVAgYnVzIHNjYW4gKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTE0NTpcdFx0YXBfc2Nhbl9idXNfdGFzayA9IGN1cnJlbnQ7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjExNDY6XHRcdGFwX3NjYW5fYnVzX3Jlc3VsdCA9IGFwX3NjYW5fYnVzKCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjExNDc6XHRcdHJjID0gYXBfc2Nhbl9idXNfcmVzdWx0O1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMTQ4Olx0XHRhcF9zY2FuX2J1c190YXNrID0gTlVMTDtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTE0OTpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmFwX3NjYW5fYnVzX211dGV4KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTE1MC1cdFx0Z290byBvdXQ7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTU2LVx0ICogZm9yIHRoZSBsb2NrIHdoaWNoIG1lYW5zIHRoZSBvdGhlciB0YXNrIGhhcyBmaW5pc2hlZCBhbmRcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTE1NzpcdCAqIHN0b3JlZCB0aGUgcmVzdWx0IGluIGFwX3NjYW5fYnVzX3Jlc3VsdC5cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTE1OC1cdCAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMTU5Olx0aWYgKG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZShcdTAwMjZhcF9zY2FuX2J1c19tdXRleCkpIHtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTE2MC1cdFx0Lyogc29tZSBlcnJvciBvY2N1cnJlZCwgaWdub3JlIGFuZCBnbyBvdXQgKi9cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExNjItXHR9XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjExNjM6XHRyYyA9IGFwX3NjYW5fYnVzX3Jlc3VsdDtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTE2NDpcdG11dGV4X3VubG9jayhcdTAwMjZhcF9zY2FuX2J1c19tdXRleCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExNjUtXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xMzk4PXN0YXRpYyBzc2l6ZV90IGNvbmZpZ190aW1lX3Nob3coY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNoYXIgKmJ1ZilcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM5OS17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE0MDA6XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0OyVkXFxuXCYjMzQ7LCBhcF9zY2FuX2J1c190aW1lKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTQwMS19XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xNDAzPXN0YXRpYyBzc2l6ZV90IGNvbmZpZ190aW1lX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTQwOS1cdFx0cmV0dXJuIC1FSU5WQUw7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE0MTA6XHRhcF9zY2FuX2J1c190aW1lID0gdGltZTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTQxMTpcdG1vZF90aW1lcihcdTAwMjZhcF9zY2FuX2J1c190aW1lciwgamlmZmllcyAmIzQzOyBhcF9zY2FuX2J1c190aW1lICogSFopO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNDEyLVx0cmV0dXJuIGNvdW50O1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTcwNT1zdGF0aWMgc3NpemVfdCBzY2Fuc19zaG93KGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjaGFyICpidWYpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3MDYte1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzA3Olx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDslbGx1XFxuXCYjMzQ7LCBhdG9taWM2NF9yZWFkKFx1MDAyNmFwX3NjYW5fYnVzX2NvdW50KSk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3MDgtfVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTcyMj1zdGF0aWMgc3NpemVfdCBiaW5kaW5nc19zaG93KGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjaGFyICpidWYpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzI3LVx0YXBfY2FsY19ib3VuZF9hcHFucyhcdTAwMjZhcHFucywgXHUwMDI2bik7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3Mjg6XHRpZiAoYXRvbWljNjRfcmVhZChcdTAwMjZhcF9zY2FuX2J1c19jb3VudCkgXHUwMDNlPSAxIFx1MDAyNlx1MDAyNiBuID09IGFwcW5zKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzI5LVx0XHRyYyA9IHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDsldS8ldSAoY29tcGxldGUpXFxuXCYjMzQ7LCBuLCBhcHFucyk7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xOTU5PXN0YXRpYyBpbmxpbmUgdm9pZCBub3RpZnlfc2Nhbl9jb21wbGV0ZSh2b2lkKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTk2NS0vKlxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTY2OiAqIEhlbHBlciBmdW5jdGlvbiBmb3IgYXBfc2Nhbl9idXMoKS5cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTk2Ny0gKiBSZW1vdmUgY2FyZCBkZXZpY2UgYW5kIGFzc29jaWF0ZWQgcXVldWUgZGV2aWNlcy5cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTE5Njk9c3RhdGljIGlubGluZSB2b2lkIGFwX3NjYW5fcm1fY2FyZF9kZXZfYW5kX3F1ZXVlX2RldnMoc3RydWN0IGFwX2NhcmQgKmFjKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTk3Ny0vKlxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTc4OiAqIEhlbHBlciBmdW5jdGlvbiBmb3IgYXBfc2Nhbl9idXMoKS5cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTk3OS0gKiBEb2VzIHRoZSBzY2FuIGJ1cyBqb2IgZm9yIGFsbCB0aGUgZG9tYWlucyB3aXRoaW5cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTE5ODI9c3RhdGljIGlubGluZSB2b2lkIGFwX3NjYW5fZG9tYWlucyhzdHJ1Y3QgYXBfY2FyZCAqYWMpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMTM1LS8qXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIxMzY6ICogSGVscGVyIGZ1bmN0aW9uIGZvciBhcF9zY2FuX2J1cygpLlxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMTM3LSAqIERvZXMgdGhlIHNjYW4gYnVzIGpvYiBmb3IgdGhlIGdpdmVuIGFkYXB0ZXIgaWQuXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yMzUxPXN0YXRpYyBib29sIGFwX2NvbmZpZ19oYXNfbmV3X2RvbXModm9pZClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzNjYtLyoqXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzNjc6ICogYXBfc2Nhbl9idXMoKTogU2NhbiB0aGUgQVAgYnVzIGZvciBuZXcgZGV2aWNlc1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzY4OiAqIEFsd2F5cyBydW4gdW5kZXIgbXV0ZXggYXBfc2Nhbl9idXNfbXV0ZXggcHJvdGVjdGlvblxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzY5LSAqIHdoaWNoIG5lZWRzIHRvIGdldCBsb2NrZWQvdW5sb2NrZWQgYnkgdGhlIGNhbGxlciFcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzNzItICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzNzM6c3RhdGljIGJvb2wgYXBfc2Nhbl9idXModm9pZClcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM3NC17XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDE3LVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDE4Olx0aWYgKGF0b21pYzY0X2luY19yZXR1cm4oXHUwMDI2YXBfc2Nhbl9idXNfY291bnQpID09IDEpIHtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQxOS1cdFx0cHJfZGVidWcoXCYjMzQ7aW5pdCBzY2FuIGNvbXBsZXRlXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0MjQtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI0MjU6XHRtb2RfdGltZXIoXHUwMDI2YXBfc2Nhbl9idXNfdGltZXIsIGppZmZpZXMgJiM0MzsgYXBfc2Nhbl9idXNfdGltZSAqIEhaKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQyNi1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0MzItLypcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQzMzogKiBDYWxsYmFjayBmb3IgdGhlIGFwX3NjYW5fYnVzX3RpbWVyXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI0MzQ6ICogUnVucyBwZXJpb2RpY2FsbHksIHdvcmtxdWV1ZSB0aW1lciAoYXBfc2Nhbl9idXNfdGltZSlcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQzNS0gKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQzNjpzdGF0aWMgdm9pZCBhcF9zY2FuX2J1c190aW1lcl9jYWxsYmFjayhzdHJ1Y3QgdGltZXJfbGlzdCAqdW51c2VkKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDM3LXtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0NDEtXHQgKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQ0MjpcdHF1ZXVlX3dvcmsoc3lzdGVtX2xvbmdfd3EsIFx1MDAyNmFwX3NjYW5fYnVzX3dvcmspO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDQzLX1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0NDUtLypcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQ0NjogKiBDYWxsYmFjayBmb3IgdGhlIGFwX3NjYW5fYnVzX3dvcmtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ0Ny0gKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQ0ODpzdGF0aWMgdm9pZCBhcF9zY2FuX2J1c193cV9jYWxsYmFjayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKnVudXNlZClcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ0OS17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0NTAtXHQvKlxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDUxOlx0ICogVHJ5IHRvIGludm9rZSBhbiBhcF9zY2FuX2J1cygpLiBJZiB0aGUgbXV0ZXggYWNxdWlzaXRpb25cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ1Mi1cdCAqIGZhaWxzIHRoZXJlIGlzIGN1cnJlbnRseSBhbm90aGVyIHRhc2sgYWxyZWFkeSBydW5uaW5nIHRoZVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ1NS1cdCAqIHRoZSBBUCBzY2FuIGJ1cyB0aW1lciBpcyByZS1hcm1lZCB3aGljaCB0cmlnZ2VycyB0aGVuIHRoZVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDU2Olx0ICogYXBfc2Nhbl9idXNfdGltZXJfY2FsbGJhY2sgd2hpY2ggZW5xdWV1ZXMgYSB3b3JrIGludG8gdGhlXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0NTctXHQgKiBzeXN0ZW1fbG9uZ193cSB3aGljaCBpbnZva2VzIHRoaXMgZnVuY3Rpb24gaGVyZSBhZ2Fpbi5cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ1OC1cdCAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDU5Olx0aWYgKG11dGV4X3RyeWxvY2soXHUwMDI2YXBfc2Nhbl9idXNfbXV0ZXgpKSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI0NjA6XHRcdGFwX3NjYW5fYnVzX3Rhc2sgPSBjdXJyZW50O1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDYxOlx0XHRhcF9zY2FuX2J1c19yZXN1bHQgPSBhcF9zY2FuX2J1cygpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDYyOlx0XHRhcF9zY2FuX2J1c190YXNrID0gTlVMTDtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQ2MzpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmFwX3NjYW5fYnVzX211dGV4KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ2NC1cdH1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTI0Njc9c3RhdGljIGlubGluZSB2b2lkIF9fZXhpdCBhcF9hc3luY19leGl0KHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDcxLVx0Y2hzY19ub3RpZmllcl91bnJlZ2lzdGVyKFx1MDAyNmFwX2J1c19uYik7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI0NzI6XHRjYW5jZWxfd29yayhcdTAwMjZhcF9zY2FuX2J1c193b3JrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ3My1cdGhydGltZXJfY2FuY2VsKFx1MDAyNmFwX3BvbGxfdGltZXIpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDc0Olx0dGltZXJfZGVsZXRlKFx1MDAyNmFwX3NjYW5fYnVzX3RpbWVyKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ3NS19XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yNDc3PXN0YXRpYyBpbmxpbmUgaW50IF9faW5pdCBhcF9hc3luY19pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDgxLVx0LyogU2V0dXAgdGhlIEFQIGJ1cyByZXNjYW4gdGltZXIuICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI0ODI6XHR0aW1lcl9zZXR1cChcdTAwMjZhcF9zY2FuX2J1c190aW1lciwgYXBfc2Nhbl9idXNfdGltZXJfY2FsbGJhY2ssIDApO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDgzLVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ5MS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQ5MjpcdHF1ZXVlX3dvcmsoc3lzdGVtX2xvbmdfd3EsIFx1MDAyNmFwX3NjYW5fYnVzX3dvcmspO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDkzLVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjUxMC1vdXQ6XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI1MTE6XHRjYW5jZWxfd29yayhcdTAwMjZhcF9zY2FuX2J1c193b3JrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjUxMi1cdGhydGltZXJfY2FuY2VsKFx1MDAyNmFwX3BvbGxfdGltZXIpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNTEzOlx0dGltZXJfZGVsZXRlKFx1MDAyNmFwX3NjYW5fYnVzX3RpbWVyKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjUxNC1cdHJldHVybiByYztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4MzMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIFVwZGF0ZSBQcm9jZXNzKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgYXBfc2Nhbl9idXNgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0byBiZSB0aGUgY2VudHJhbCBwb2ludCBmb3IgZGV0ZWN0aW5nIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4gSSBzZWUgdGhhdCBpdCYjMzk7cyB0cmlnZ2VyZWQgZWl0aGVyIHBlcmlvZGljYWxseSBieSBhIHRpbWVyIG9yLCBtb3JlIGRpcmVjdGx5LCBieSBhIGZvcmNlZCByZXNjYW4gdGhyb3VnaCBgYXBfYnVzX2ZvcmNlX3Jlc2NhbmAuIFRoYXQgbWFrZXMgc2Vuc2U7IGEgcmVndWxhciBjaGVjayBhbmQgYW4gaW1tZWRpYXRlIHVwZGF0ZSB3aGVuIG5lZWRlZC4KClRoZSBjcml0aWNhbCBwaWVjZSBoZXJlIGlzIHRoYXQgYGFwX3NjYW5fYnVzYCBjYWxscyBgbm90aWZ5X2NvbmZpZ19jaGFuZ2VkYCAqb25seSogaWYgYGFwX2dldF9jb25maWd1cmF0aW9uYCByZXR1cm5zIHRydWUuIFRoYXQgJiMzNDt0cnVlJiMzNDsgdmFsdWUgY2xlYXJseSBpbmRpY2F0ZXMgYSBjb25maWd1cmF0aW9uIGNoYW5nZSBoYXMgYmVlbiBkZXRlY3RlZC4gTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYGFwX2dldF9jb25maWd1cmF0aW9uYCBhY3R1YWxseSAqZGV0ZXJtaW5lcyogaWYgdGhlIGNvbmZpZ3VyYXRpb24gaXMgZGlmZmVyZW50LiBJJiMzOTttIHNlZWluZyBpdCB1c2VzIGBhcF9xY2lfaW5mb2AgYW5kIGBhcF9xY2lfaW5mb19vbGRgIOKAkyBwcmVzdW1hYmx5LCB0aGVzZSBhcmUgcmVwcmVzZW50YXRpb25zIG9mIHRoZSBjdXJyZW50IGFuZCBwcmV2aW91cyBjb25maWd1cmF0aW9ucywgcmVzcGVjdGl2ZWx5LiBTbywgdGhlIGNvcmUgbG9naWMgbXVzdCBiZSBzb21lIGtpbmQgb2YgY29tcGFyaXNvbiBiZXR3ZWVuIHRoZXNlIHR3byBzdHJ1Y3R1cmVzLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgYGFwX2dldF9jb25maWd1cmF0aW9uYCBsZXZlcmFnZXMgYGFwX3FjaV9pbmZvYCBhbmQgYGFwX3FjaV9pbmZvX29sZGAgdG8gbWFrZSB0aGF0IGRldGVybWluYXRpb24uIExldCYjMzk7cyBzZWUgaG93IGl0IGdldHMgdGhlIGNvbmZpZ3VyYXRpb24gZGF0YS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXBfZ2V0X2NvbmZpZ3VyYXRpb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjEzOT1zdGF0aWMgaW5saW5lIHZvaWQgYXBfc2Nhbl9hZGFwdGVyKGludCBhcClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMDEtLyoqXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMDI6ICogYXBfZ2V0X2NvbmZpZ3VyYXRpb24gLSBnZXQgdGhlIGhvc3QgQVAgY29uZmlndXJhdGlvblxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzAzLSAqXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzEwLSAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzExOnN0YXRpYyBib29sIGFwX2dldF9jb25maWd1cmF0aW9uKHZvaWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMTIte1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjM3Mz1zdGF0aWMgYm9vbCBhcF9zY2FuX2J1cyh2b2lkKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM4MC1cdC8qIChyZS0pZmV0Y2ggY29uZmlndXJhdGlvbiB2aWEgUUNJICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzODE6XHRjb25maWdfY2hhbmdlZCA9IGFwX2dldF9jb25maWd1cmF0aW9uKCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzODItXHRpZiAoY29uZmlnX2NoYW5nZWQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU1NzUKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdW5kZXJzdGFuZGluZyB0aGUgaW5uZXIgd29ya2luZ3MsIGFzIGlmIHRoZXNlIGFyZSBteSBvd24gdGhvdWdodHM6CgoqKkRpc3NlY3RpbmcgYGFwX2dldF9jb25maWd1cmF0aW9uYCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGZvY3VzaW5nIGluIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGBhcF9nZXRfY29uZmlndXJhdGlvbmAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoaXMgdGhpbmcgd29ya3MuIFdoYXQgYXJlIHRoZSBrZXkgZWxlbWVudHMgaXQgbmVlZHMgdG8gZGVhbCB3aXRoPyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIGFuZCBob3cgaXQgbmF2aWdhdGVzIHdoYXRldmVyIGNvbmZpZ3VyYXRpb24gc291cmNlcyBhcmUgaW4gcGxheS4gSXMgaXQgcHVsbGluZyBmcm9tIGEgZmlsZT8gQSBkYXRhYmFzZT8gRW52aXJvbm1lbnQgdmFyaWFibGVzPyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRha2VzIHByaW9yaXR5IGlmIHRoZXJlIGFyZSBvdmVybGFwcy4KCkkmIzM5O20gcHJvYmFibHkgZ29pbmcgdG8gbmVlZCB0byBsb29rIGF0IGhvdyBpdCBoYW5kbGVzIGVycm9yIGNvbmRpdGlvbnMgYW5kIGhvdyBpdCBkZWNpZGVzIHdoYXQgaW5mb3JtYXRpb24gaXMgcmVsZXZhbnQgdG8gcmV0dXJuLCBkZXBlbmRpbmcgb24gdGhlIGNvbnRleHQuIElmIGl0JiMzOTtzIHJldHVybmluZyBjb25maWcgdGhhdCBhZmZlY3RzIHNwZWNpZmljIG1vZHVsZXMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbW9kdWxlIGNvbnRleHQgaXMgYmVpbmcgcHJvdmlkZWQuCgpJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgaGludHMgYWJvdXQgZWZmaWNpZW5jeS4gRG9lcyBpdCBjYWNoZSByZXN1bHRzPyBEb2VzIGl0IHVzZSBsYXp5IGxvYWRpbmc/IEkgd2FudCB0byBrbm93IGFib3V0IHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcy4gTW9zdCBpbXBvcnRhbnRseSwgaG93IHJvYnVzdCBpcyBpdD8gQ2FuIGl0IGhhbmRsZSB1bmV4cGVjdGVkIGlucHV0cyBncmFjZWZ1bGx5PyBJIG5lZWQgdG8gZW5zdXJlIGl0JiMzOTtzIG5vdCBhIHNpbmdsZSBwb2ludCBvZiBmYWlsdXJlLgoKSeKAmW0gcGFydGljdWxhcmx5IGN1cmlvdXMgYWJvdXQgdGhlIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4gQ2FuIGl0IGJlIHRyaWNrZWQgaW50byBleHBvc2luZyBzZW5zaXRpdmUgaW5mb3JtYXRpb24/IERvZXMgaXQgcHJvcGVybHkgc2FuaXRpemUgaW5wdXRzPyBUaGlzIGlzIGNydWNpYWwgZm9yIGFueSBjb25maWd1cmF0aW9uIGZ1bmN0aW9uLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXTigJlzIGdvaW5nIG9uIHVuZGVyIHRoZSBob29kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMzAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzIzMDA6XHRcbjIzMDE6XHQvKipcbjIzMDI6XHQgKiBhcF9nZXRfY29uZmlndXJhdGlvbiAtIGdldCB0aGUgaG9zdCBBUCBjb25maWd1cmF0aW9uXG4yMzAzOlx0ICpcbjIzMDQ6XHQgKiBTdG9yZXMgdGhlIGhvc3QgQVAgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiByZXR1cm5lZCBmcm9tIHRoZSBwcmV2aW91cyBjYWxsXG4yMzA1Olx0ICogdG8gUXVlcnkgQ29uZmlndXJhdGlvbiBJbmZvcm1hdGlvbiAoUUNJKSwgdGhlbiByZXRyaWV2ZXMgYW5kIHN0b3JlcyB0aGVcbjIzMDY6XHQgKiBjdXJyZW50IEFQIGNvbmZpZ3VyYXRpb24gcmV0dXJuZWQgZnJvbSBRQ0kuXG4yMzA3Olx0ICpcbjIzMDg6XHQgKiBSZXR1cm46IHRydWUgaWYgdGhlIGhvc3QgQVAgY29uZmlndXJhdGlvbiBjaGFuZ2VkIGJldHdlZW4gY2FsbHMgdG8gUUNJO1xuMjMwOTpcdCAqIG90aGVyd2lzZSwgcmV0dXJuIGZhbHNlLlxuMjMxMDpcdCAqL1xuMjMxMTpcdHN0YXRpYyBib29sIGFwX2dldF9jb25maWd1cmF0aW9uKHZvaWQpXG4yMzEyOlx0e1xuMjMxMzpcdFx0aWYgKCFhcF9xY2lfaW5mby1cdTAwM2VmbGFncylcdC8qIFFDSSBub3Qgc3VwcG9ydGVkICovXG4yMzE0Olx0XHRcdHJldHVybiBmYWxzZTtcbjIzMTU6XHRcbjIzMTY6XHRcdG1lbWNweShhcF9xY2lfaW5mb19vbGQsIGFwX3FjaV9pbmZvLCBzaXplb2YoKmFwX3FjaV9pbmZvKSk7XG4yMzE3Olx0XHRhcF9xY2koYXBfcWNpX2luZm8pO1xuMjMxODpcdFxuMjMxOTpcdFx0cmV0dXJuIG1lbWNtcChhcF9xY2lfaW5mbywgYXBfcWNpX2luZm9fb2xkLFxuMjMyMDpcdFx0XHQgICAgICBzaXplb2Yoc3RydWN0IGFwX2NvbmZpZ19pbmZvKSkgIT0gMDtcbjIzMjE6XHR9XG4yMzIyOlx0XG4yMzIzOlx0LypcbjIzMjQ6XHQgKiBhcF9jb25maWdfaGFzX25ld19hcHMgLSBDaGVjayBjdXJyZW50IGFnYWluc3Qgb2xkIHFjaSBpbmZvIGlmXG4yMzI1Olx0ICogbmV3IGFkYXB0ZXJzIGhhdmUgYXBwZWFyZWQuIFJldHVybnMgdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgbmV3XG4yMzI2Olx0ICogYWRhcHRlciBpbiB0aGUgYXBtIG1hc2sgaXMgc2hvd2luZyB1cC4gRXhpc3RpbmcgYWRhcHRlcnMgb3JcbjIzMjc6XHQgKiByZWNlZGluZyBhZGFwdGVycyBhcmUgbm90IGNvdW50ZWQuXG4yMzI4Olx0ICovXG4yMzI5Olx0c3RhdGljIGJvb2wgYXBfY29uZmlnX2hhc19uZXdfYXBzKHZvaWQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NDA1CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIGBhcF9xY2lgIEZ1bmN0aW9uKioKCk9rYXksIHNvIHRoZSBwcm9ncmFtJiMzOTtzIGNhbGxpbmcgYGFwX3FjaWAuIFJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoYXQgZnVuY3Rpb24gYW5kIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZy4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGl0cyBpbnRlbmRlZCBwdXJwb3NlIGFuZCB0aGUgY29udGV4dCBpbiB3aGljaCBpdCYjMzk7cyBiZWluZyBpbnZva2VkLiBJcyBpdCByZWxhdGVkIHRvIGFjdGl2ZSBwcm9iaW5nLCBxdWFsaXR5IG9mIGNvbm5lY3Rpb24gaW5kaWNhdGlvbiwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBuYW1lIGl0c2VsZiBzdWdnZXN0cyBhIHBvdGVudGlhbCBsaW5rIHRvIEFjdGl2ZSBQcm9iZSBRdWFsaXR5IG9mIENvbm5lY3Rpb24gSW5kaWNhdG9yIChBUC1RQ0kpLCB3aGljaCB3b3VsZCBsaWtlbHkgcG9pbnQgdG8gYWN0aXZlIG1lYXN1cmVtZW50IG9mIG5ldHdvcmsgcXVhbGl0eSBtZXRyaWNzLiBCdXQsIG9mIGNvdXJzZSwgdGhlIG5hbWUgY2FuIGJlIG1pc2xlYWRpbmchCgpJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjbHVlcyBpbiB0aGUgZnVuY3Rpb24mIzM5O3MgaW1wbGVtZW50YXRpb246IHRoZSBpbnB1dCBwYXJhbWV0ZXJzLCBhbnkgY29uZGl0aW9uYWwgbG9naWMsIHdoZXRoZXIgaXQgaW50ZXJhY3RzIHdpdGggaGFyZHdhcmUgcmVnaXN0ZXJzLCBwZXJmb3JtcyBkYXRhIHBhY2tldCBtYW5pcHVsYXRpb24sIG9yIGxldmVyYWdlcyBhbnkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLiBBbnkgY2x1ZXMgd2l0aGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIG9yIGFueSBhc3NvY2lhdGVkIGNvbW1lbnRzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGlzIHNwZWNpZmljIHN5c3RlbS4gSXMgdGhpcyBhIGNyaXRpY2FsIHBhdGggZnVuY3Rpb24gdGhhdCBtaWdodCBiZSBwZXJmb3JtYW5jZS1zZW5zaXRpdmU/IE9yIGlzIGl0IG1vcmUgb2YgYSBkaWFnbm9zdGljIG9yIHJlcG9ydGluZyBmdW5jdGlvbj8gVGhlIGFuc3dlciB0byB0aGF0IHF1ZXN0aW9uIHdpbGwgaW5mbHVlbmNlIGhvdyBkZWVwIEkgbmVlZCB0byBkaWcgaW50byB0aGUgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXBfcWNpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xMDc9c3RhdGljIHN0cnVjdCBhcF9jb25maWdfaW5mbyBxY2lbMl07XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEwODpzdGF0aWMgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjb25zdCBhcF9xY2lfaW5mbyA9IFx1MDAyNnFjaVswXTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTA5OnN0YXRpYyBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmNvbnN0IGFwX3FjaV9pbmZvX29sZCA9IFx1MDAyNnFjaVsxXTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTEwLVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjA5PXN0YXRpYyBpbnQgYXBfaW50ZXJydXB0c19hdmFpbGFibGUodm9pZClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIxNC0vKipcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjE1OiAqIGFwX3FjaV9hdmFpbGFibGUoKTogVGVzdCBpZiBBUCBjb25maWd1cmF0aW9uXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIxNi0gKiBpbmZvcm1hdGlvbiBjYW4gYmUgcXVlcmllZCB2aWEgUUNJIHN1YmZ1bmN0aW9uLlxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjE5LSAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMjA6c3RhdGljIGludCBhcF9xY2lfYXZhaWxhYmxlKHZvaWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIyMS17XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yNDE9c3RhdGljIGlubGluZSBpbnQgYXBfcWFjdF9hdmFpbGFibGUodm9pZClcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQyLXtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQzOlx0cmV0dXJuIGFwX3FjaV9pbmZvLVx1MDAzZXFhY3Q7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0NC19XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yNTE9aW50IGFwX3NiX2F2YWlsYWJsZSh2b2lkKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNTIte1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNTM6XHRyZXR1cm4gYXBfcWNpX2luZm8tXHUwMDNlYXBzYjtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjU0LX1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTI3MD1zdGF0aWMgdm9pZCBfX2luaXQgYXBfaW5pdF9xY2lfaW5mbyh2b2lkKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNzEte1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNzI6XHRpZiAoIWFwX3FjaV9hdmFpbGFibGUoKSB8fFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNzM6XHQgICAgYXBfcWNpKGFwX3FjaV9pbmZvKSkge1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNzQtXHRcdEFQX0RCRl9JTkZPKFwmIzM0OyVzIFFDSSBub3Qgc3VwcG9ydGVkXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNzYtXHR9XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI3NzpcdG1lbWNweShhcF9xY2lfaW5mb19vbGQsIGFwX3FjaV9pbmZvLCBzaXplb2YoKmFwX3FjaV9pbmZvKSk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI3OC1cdEFQX0RCRl9JTkZPKFwmIzM0OyVzIHN1Y2Nlc3NmdWwgZmV0Y2hlZCBpbml0aWFsIHFjaSBpbmZvXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI3OS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjgwOlx0aWYgKGFwX3FjaV9pbmZvLVx1MDAzZWFweGEpIHtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjgxOlx0XHRpZiAoYXBfcWNpX2luZm8tXHUwMDNlbmEpIHtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjgyOlx0XHRcdGFwX21heF9hZGFwdGVyX2lkID0gYXBfcWNpX2luZm8tXHUwMDNlbmE7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI4My1cdFx0XHRBUF9EQkZfSU5GTyhcJiMzNDslcyBuZXcgYXBfbWF4X2FkYXB0ZXJfaWQgaXMgJWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yODUtXHRcdH1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6Mjg2Olx0XHRpZiAoYXBfcWNpX2luZm8tXHUwMDNlbmQpIHtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6Mjg3Olx0XHRcdGFwX21heF9kb21haW5faWQgPSBhcF9xY2lfaW5mby1cdTAwM2VuZDtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjg4LVx0XHRcdEFQX0RCRl9JTkZPKFwmIzM0OyVzIG5ldyBhcF9tYXhfZG9tYWluX2lkIGlzICVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MzEwPXN0YXRpYyBpbmxpbmUgaW50IGFwX3Rlc3RfY29uZmlnX2NhcmRfaWQodW5zaWduZWQgaW50IGlkKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzEzLVx0XHRyZXR1cm4gMDtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MzE0Olx0aWYgKGFwX3FjaV9pbmZvLVx1MDAzZWZsYWdzKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzozMTU6XHRcdHJldHVybiBhcF90ZXN0X2NvbmZpZyhhcF9xY2lfaW5mby1cdTAwM2VhcG0sIGlkKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzE2LVx0cmV0dXJuIDE7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0zMjc9aW50IGFwX3Rlc3RfY29uZmlnX3VzYWdlX2RvbWFpbih1bnNpZ25lZCBpbnQgZG9tYWluKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzMwLVx0XHRyZXR1cm4gMDtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MzMxOlx0aWYgKGFwX3FjaV9pbmZvLVx1MDAzZWZsYWdzKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzozMzI6XHRcdHJldHVybiBhcF90ZXN0X2NvbmZpZyhhcF9xY2lfaW5mby1cdTAwM2VhcW0sIGRvbWFpbik7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTMzMy1cdHJldHVybiAxO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MzQ1PWludCBhcF90ZXN0X2NvbmZpZ19jdHJsX2RvbWFpbih1bnNpZ25lZCBpbnQgZG9tYWluKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zNDYte1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzozNDc6XHRpZiAoIWFwX3FjaV9pbmZvIHx8IGRvbWFpbiBcdTAwM2UgYXBfbWF4X2RvbWFpbl9pZClcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzQ4LVx0XHRyZXR1cm4gMDtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MzQ5Olx0cmV0dXJuIGFwX3Rlc3RfY29uZmlnKGFwX3FjaV9pbmZvLVx1MDAzZWFkbSwgZG9tYWluKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzUwLX1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTEzNDk9c3RhdGljIHNzaXplX3QgYXBfY29udHJvbF9kb21haW5fbWFza19zaG93KGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjaGFyICpidWYpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNTAte1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzUxOlx0aWYgKCFhcF9xY2lfaW5mby1cdTAwM2VmbGFncylcdC8qIFFDSSBub3Qgc3VwcG9ydGVkICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNTItXHRcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7bm90IHN1cHBvcnRlZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzU0LVx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDsweCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4XFxuXCYjMzQ7LFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzU1Olx0XHRcdCAgYXBfcWNpX2luZm8tXHUwMDNlYWRtWzBdLCBhcF9xY2lfaW5mby1cdTAwM2VhZG1bMV0sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNTY6XHRcdFx0ICBhcF9xY2lfaW5mby1cdTAwM2VhZG1bMl0sIGFwX3FjaV9pbmZvLVx1MDAzZWFkbVszXSxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM1NzpcdFx0XHQgIGFwX3FjaV9pbmZvLVx1MDAzZWFkbVs0XSwgYXBfcWNpX2luZm8tXHUwMDNlYWRtWzVdLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzU4Olx0XHRcdCAgYXBfcWNpX2luZm8tXHUwMDNlYWRtWzZdLCBhcF9xY2lfaW5mby1cdTAwM2VhZG1bN10pO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzU5LX1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTEzNjM9c3RhdGljIHNzaXplX3QgYXBfdXNhZ2VfZG9tYWluX21hc2tfc2hvdyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY2hhciAqYnVmKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzY0LXtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM2NTpcdGlmICghYXBfcWNpX2luZm8tXHUwMDNlZmxhZ3MpXHQvKiBRQ0kgbm90IHN1cHBvcnRlZCAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzY2LVx0XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0O25vdCBzdXBwb3J0ZWRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM2OC1cdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7MHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eFxcblwmIzM0OyxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM2OTpcdFx0XHQgIGFwX3FjaV9pbmZvLVx1MDAzZWFxbVswXSwgYXBfcWNpX2luZm8tXHUwMDNlYXFtWzFdLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzcwOlx0XHRcdCAgYXBfcWNpX2luZm8tXHUwMDNlYXFtWzJdLCBhcF9xY2lfaW5mby1cdTAwM2VhcW1bM10sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNzE6XHRcdFx0ICBhcF9xY2lfaW5mby1cdTAwM2VhcW1bNF0sIGFwX3FjaV9pbmZvLVx1MDAzZWFxbVs1XSxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM3MjpcdFx0XHQgIGFwX3FjaV9pbmZvLVx1MDAzZWFxbVs2XSwgYXBfcWNpX2luZm8tXHUwMDNlYXFtWzddKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM3My19XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xMzc3PXN0YXRpYyBzc2l6ZV90IGFwX2FkYXB0ZXJfbWFza19zaG93KGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjaGFyICpidWYpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNzgte1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzc5Olx0aWYgKCFhcF9xY2lfaW5mby1cdTAwM2VmbGFncylcdC8qIFFDSSBub3Qgc3VwcG9ydGVkICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzODAtXHRcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7bm90IHN1cHBvcnRlZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzgyLVx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDsweCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4XFxuXCYjMzQ7LFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzgzOlx0XHRcdCAgYXBfcWNpX2luZm8tXHUwMDNlYXBtWzBdLCBhcF9xY2lfaW5mby1cdTAwM2VhcG1bMV0sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzODQ6XHRcdFx0ICBhcF9xY2lfaW5mby1cdTAwM2VhcG1bMl0sIGFwX3FjaV9pbmZvLVx1MDAzZWFwbVszXSxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM4NTpcdFx0XHQgIGFwX3FjaV9pbmZvLVx1MDAzZWFwbVs0XSwgYXBfcWNpX2luZm8tXHUwMDNlYXBtWzVdLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzg2Olx0XHRcdCAgYXBfcWNpX2luZm8tXHUwMDNlYXBtWzZdLCBhcF9xY2lfaW5mby1cdTAwM2VhcG1bN10pO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzg3LX1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTE3NDc9c3RhdGljIHNzaXplX3QgZmVhdHVyZXNfc2hvdyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY2hhciAqYnVmKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc1MC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTc1MTpcdGlmICghYXBfcWNpX2luZm8tXHUwMDNlZmxhZ3MpXHQvKiBRQ0kgbm90IHN1cHBvcnRlZCAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzUyLVx0XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0Oy1cXG5cJiMzNDspO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzUzLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzU0Olx0aWYgKGFwX3FjaV9pbmZvLVx1MDAzZWFwc2MpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NTUtXHRcdG4gJiM0Mzs9IHN5c2ZzX2VtaXRfYXQoYnVmLCBuLCBcJiMzNDtBUFNDIFwmIzM0Oyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3NTY6XHRpZiAoYXBfcWNpX2luZm8tXHUwMDNlYXB4YSlcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc1Ny1cdFx0biAmIzQzOz0gc3lzZnNfZW1pdF9hdChidWYsIG4sIFwmIzM0O0FQWEEgXCYjMzQ7KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTc1ODpcdGlmIChhcF9xY2lfaW5mby1cdTAwM2VxYWN0KVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzU5LVx0XHRuICYjNDM7PSBzeXNmc19lbWl0X2F0KGJ1ZiwgbiwgXCYjMzQ7UUFDVCBcJiMzNDspO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzYwOlx0aWYgKGFwX3FjaV9pbmZvLVx1MDAzZXJjOGEpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NjEtXHRcdG4gJiM0Mzs9IHN5c2ZzX2VtaXRfYXQoYnVmLCBuLCBcJiMzNDtSQzhBIFwmIzM0Oyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3NjI6XHRpZiAoYXBfcWNpX2luZm8tXHUwMDNlYXBzYilcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc2My1cdFx0biAmIzQzOz0gc3lzZnNfZW1pdF9hdChidWYsIG4sIFwmIzM0O0FQU0IgXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTE5MjM9c3RhdGljIGludCBfX2Rydl9ub3RpZnlfY29uZmlnX2NoYW5nZWQoc3RydWN0IGRldmljZV9kcml2ZXIgKmRydiwgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5MjgtXHRcdGlmIChhcF9kcnYtXHUwMDNlb25fY29uZmlnX2NoYW5nZWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE5Mjk6XHRcdFx0YXBfZHJ2LVx1MDAzZW9uX2NvbmZpZ19jaGFuZ2VkKGFwX3FjaV9pbmZvLCBhcF9xY2lfaW5mb19vbGQpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTMwLVx0XHRtb2R1bGVfcHV0KGRydi1cdTAwM2Vvd25lcik7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xOTQ0PXN0YXRpYyBpbnQgX19kcnZfbm90aWZ5X3NjYW5fY29tcGxldGUoc3RydWN0IGRldmljZV9kcml2ZXIgKmRydiwgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5NDktXHRcdGlmIChhcF9kcnYtXHUwMDNlb25fc2Nhbl9jb21wbGV0ZSlcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTk1MDpcdFx0XHRhcF9kcnYtXHUwMDNlb25fc2Nhbl9jb21wbGV0ZShhcF9xY2lfaW5mbyxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTk1MTpcdFx0XHRcdFx0XHQgYXBfcWNpX2luZm9fb2xkKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTk1Mi1cdFx0bW9kdWxlX3B1dChkcnYtXHUwMDNlb3duZXIpO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjMxMT1zdGF0aWMgYm9vbCBhcF9nZXRfY29uZmlndXJhdGlvbih2b2lkKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzEyLXtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMxMzpcdGlmICghYXBfcWNpX2luZm8tXHUwMDNlZmxhZ3MpXHQvKiBRQ0kgbm90IHN1cHBvcnRlZCAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzE0LVx0XHRyZXR1cm4gZmFsc2U7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMTUtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMTY6XHRtZW1jcHkoYXBfcWNpX2luZm9fb2xkLCBhcF9xY2lfaW5mbywgc2l6ZW9mKCphcF9xY2lfaW5mbykpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzE3Olx0YXBfcWNpKGFwX3FjaV9pbmZvKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMxOC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMxOTpcdHJldHVybiBtZW1jbXAoYXBfcWNpX2luZm8sIGFwX3FjaV9pbmZvX29sZCxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMyMC1cdFx0ICAgICAgc2l6ZW9mKHN0cnVjdCBhcF9jb25maWdfaW5mbykpICE9IDA7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yMzI5PXN0YXRpYyBib29sIGFwX2NvbmZpZ19oYXNfbmV3X2Fwcyh2b2lkKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMzMy1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMzNDpcdGlmICghYXBfcWNpX2luZm8tXHUwMDNlZmxhZ3MpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMzUtXHRcdHJldHVybiBmYWxzZTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMzNi1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMzNzpcdGJpdG1hcF9hbmRub3QobSwgKHVuc2lnbmVkIGxvbmcgKilhcF9xY2lfaW5mby1cdTAwM2VhcG0sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMzg6XHRcdCAgICAgICh1bnNpZ25lZCBsb25nICopYXBfcWNpX2luZm9fb2xkLVx1MDAzZWFwbSwgQVBfREVWSUNFUyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMzktXHRpZiAoIWJpdG1hcF9lbXB0eShtLCBBUF9ERVZJQ0VTKSlcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTIzNTE9c3RhdGljIGJvb2wgYXBfY29uZmlnX2hhc19uZXdfZG9tcyh2b2lkKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM1NC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjM1NTpcdGlmICghYXBfcWNpX2luZm8tXHUwMDNlZmxhZ3MpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzNTYtXHRcdHJldHVybiBmYWxzZTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM1Ny1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjM1ODpcdGJpdG1hcF9hbmRub3QobSwgKHVuc2lnbmVkIGxvbmcgKilhcF9xY2lfaW5mby1cdTAwM2VhcW0sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzNTk6XHRcdCAgICAgICh1bnNpZ25lZCBsb25nICopYXBfcWNpX2luZm9fb2xkLVx1MDAzZWFxbSwgQVBfRE9NQUlOUyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzNjAtXHRpZiAoIWJpdG1hcF9lbXB0eShtLCBBUF9ET01BSU5TKSlcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM9ODY9c3RhdGljIGludCB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlKHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTEwNi1cdGlmICh0ZXN0X2ZhY2lsaXR5KDEyKSkge1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjEwNzpcdFx0cmV0ID0gYXBfcWNpKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlaW5mbyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTA4LVx0XHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTQ1MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgbXkgb3duIGludGVybmFsIG1vbm9sb2d1ZToKCioqTXkgSW1tZWRpYXRlIEFzc2Vzc21lbnQgb2YgYGFwX3FjaWAqKgoKUmlnaHQsIGBhcF9xY2lgLiBPa2F5LCBzbyBpdCBsb29rcyBsaWtlIEkmIzM5O20gZGVhbGluZyB3aXRoIGEgZnVuY3Rpb24gbmFtZWQgYGFwX3FjaWAuIE15IGluaXRpYWwgYXNzdW1wdGlvbiwgZ2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLCBpcyB0aGF0IHRoaXMgbGlrZWx5IGludm9sdmVzIHF1ZXJ5aW5nIG9yIHJldHJpZXZpbmcgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi4gVGhlICYjMzQ7YXAmIzM0OyBwYXJ0IHByb2JhYmx5IHN0YW5kcyBmb3IgJiMzNDthY2Nlc3MgcG9pbnQmIzM0OyBvciBzb21ldGhpbmcgcmVsYXRlZCB0byBpdCwgZ2l2ZW4gdGhhdCBpcyBhIHN0YW5kYXJkIGFiYnJldmlhdGlvbiB3aGVuIHJlbGF0ZWQgdG8gd2lyZWxlc3MgbmV0d29ya3MuIFRoZSAmIzM0O3FjaSYjMzQ7IGlzIHByb2JhYmx5IHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiwgYW5kIGluZGljYXRlcyB0aGF0IHRoZSBmdW5jdGlvbiBwZXJmb3JtcyBxdWVyaWVzLCBvciByZXF1ZXN0cyBpbmZvcm1hdGlvbiByZWdhcmRpbmcgY29uZmlndXJhdGlvbnMuCgpTbywgdGhlIGZvY3VzIGhlcmUgaXMgb24gdGhlIHByb2Nlc3Mgb2YgKm9idGFpbmluZyogY29uZmlndXJhdGlvbiBkYXRhLCByYXRoZXIgdGhhbiBhbnkgbWFuaXB1bGF0aW9uIG9yIGFsdGVyYXRpb24gb2YgaXQuIElzIGl0IGEgZ2VuZXJpYyBjb25maWd1cmF0aW9uIGxvb2t1cCwgb3IgaXMgaXQgc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyIGFzcGVjdCBvZiB0aGUgYWNjZXNzIHBvaW50JiMzOTtzIGNvbmZpZ3VyYXRpb24/IFdoYXQga2luZCBvZiBjb25maWd1cmF0aW9uIGlzIGl0IHJlc3BvbnNpYmxlIGZvciBxdWVyeWluZz8gQW5kLCBtb3N0IGltcG9ydGFudGx5LCB3aGF0IGludGVyZmFjZSBkb2VzIGl0IGV4cG9zZSB0byBnZXQgdGhlIGNvbmZpZ3VyYXRpb24/IFdoYXQgaXMgdGhlIHN0cnVjdHVyZSBvZiB0aGUgZGF0YSBpdCByZXR1cm5zPyBUaGUgaW5wdXQgcGFyYW1ldGVycyBhcmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBzY29wZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXBfcWNpXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yNzA9c3RhdGljIHZvaWQgX19pbml0IGFwX2luaXRfcWNpX2luZm8odm9pZClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI3Mi1cdGlmICghYXBfcWNpX2F2YWlsYWJsZSgpIHx8XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI3MzpcdCAgICBhcF9xY2koYXBfcWNpX2luZm8pKSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI3NC1cdFx0QVBfREJGX0lORk8oXCYjMzQ7JXMgUUNJIG5vdCBzdXBwb3J0ZWRcXG5cJiMzNDssIF9fZnVuY19fKTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTIzMTE9c3RhdGljIGJvb2wgYXBfZ2V0X2NvbmZpZ3VyYXRpb24odm9pZClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMTYtXHRtZW1jcHkoYXBfcWNpX2luZm9fb2xkLCBhcF9xY2lfaW5mbywgc2l6ZW9mKCphcF9xY2lfaW5mbykpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzE3Olx0YXBfcWNpKGFwX3FjaV9pbmZvKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMxOC1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM9ODY9c3RhdGljIGludCB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlKHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTEwNi1cdGlmICh0ZXN0X2ZhY2lsaXR5KDEyKSkge1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjEwNzpcdFx0cmV0ID0gYXBfcWNpKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlaW5mbyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTA4LVx0XHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjE3OAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRlZmluaW5nIHRoZSBFbmlnbWE6IFVucGFja2luZyBgYXBfcWNpYCoqCgpBbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGlzIHRvIHVuZGVyc3RhbmQgdGhpcyBgYXBfcWNpYCB0aGluZy4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gbmFpbCBkb3duIGEgcHJlY2lzZSBkZWZpbml0aW9uLiBObyBhc3N1bXB0aW9ucywgbm8gc2hvcnRjdXRzIOKAkyBnb3R0YSBnZXQgdGhlIGZvdW5kYXRpb24gcmlnaHQuIEkgbmVlZCBhIGNvbmNyZXRlLCB1bmFtYmlndW91cyBleHBsYW5hdGlvbi4gSXMgaXQgYW4gYWNyb255bT8gU29tZSBraW5kIG9mIG5vdmVsIG1ldHJpYz8gQSBzcGVjaWZpYyBwaWVjZSBvZiB0ZWNobm9sb2d5PyBUaGlzIGRlZmluaXRpb24gd2lsbCBhY3QgYXMgbXkgY29tcGFzcywgZ3VpZGluZyBteSBmdXJ0aGVyIGludmVzdGlnYXRpb24gYW5kIHByZXZlbnRpbmcgbWUgZnJvbSBnb2luZyBkb3duIGFueSByYWJiaXQgaG9sZXMgcHJlbWF0dXJlbHkuIFRoZSBzcGVjaWZpYyBkZWZpbml0aW9uIHdpbGwgcHJvdmlkZSBhIGZyYW1ld29yayBmb3IgYWxsIGZ1dHVyZSBjb25zaWRlcmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50IGFwX3FjaVxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FwLmg9MjM5PXN0cnVjdCBhcF9jb25maWdfaW5mbyB7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FwLmgtMjY1LSAqL1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FwLmg6MjY2OnN0YXRpYyBpbmxpbmUgaW50IGFwX3FjaShzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmNvbmZpZylcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9hcC5oLTI2Ny17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNDg0CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipEZWx2aW5nIGludG8gdGhlIGBhcF9xY2lgIERlZmluaXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHNwZWNpZmljcyBvZiB0aGlzIGBhcF9xY2lgIGRlZmluaXRpb24uIEkmIzM5O3ZlIGxpa2VseSBlbmNvdW50ZXJlZCB0aGlzIGJlZm9yZSwgYnV0IGl0JiMzOTtzIGNydWNpYWwgdG8gc29saWRpZnkgdGhlIHVuZGVyc3RhbmRpbmcsIGVzcGVjaWFsbHkgaWYgSSYjMzk7bSBidWlsZGluZyBvbiBpdCBvciB0cm91Ymxlc2hvb3Rpbmcgc29tZXRoaW5nIHJlbGF0ZWQgdG8gaXQuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRvIGZpbmQgdGhlIGV4YWN0IGRlZmluaXRpb24gYW5kIGRvY3VtZW50YXRpb24gc28gdGhhdCBJIGNhbiBoYXZlIGEgY29tbW9uIGZyYW1lIG9mIHJlZmVyZW5jZS4gVGhpcyB3aWxsIGFsbG93IGZvciBhIG1vcmUgZWZmaWNpZW50IGFuZCBhY2N1cmF0ZSBkaXNjdXNzaW9uIHdoZW4gY29uc2lkZXJpbmcgaXRzIGltcGxpY2F0aW9ucy4gU28sIGxldCYjMzk7cyBnZXQgaW50byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3MzOTAvaW5jbHVkZS9hc20vYXAuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjYwOlx0XG4gMjYxOlx0LyoqXG4gMjYyOlx0ICogYXBfcWNpKCk6IEdldCBBUCBjb25maWd1cmF0aW9uIGRhdGFcbiAyNjM6XHQgKlxuIDI2NDpcdCAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBvciAtRU9QTk9UU1VQUC5cbiAyNjU6XHQgKi9cbiAyNjY6XHRzdGF0aWMgaW5saW5lIGludCBhcF9xY2koc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjb25maWcpXG4gMjY3Olx0e1xuIDI2ODpcdFx0dW5zaWduZWQgbG9uZyByZWcwID0gNFVMIFx1MDAzY1x1MDAzYyAyNDsgIC8qIGZjIDRVTCBpcyBRQ0kgKi9cbiAyNjk6XHRcdHVuc2lnbmVkIGxvbmcgcmVnMSA9IC1FT1BOT1RTVVBQO1xuIDI3MDpcdFx0c3RydWN0IGFwX2NvbmZpZ19pbmZvICpyZWcyID0gY29uZmlnO1xuIDI3MTpcdFxuIDI3MjpcdFx0YXNtIHZvbGF0aWxlKFxuIDI3MzpcdFx0XHRcJiMzNDtcdGxnclx0MCwlW3JlZzBdXFxuXCYjMzQ7XHRcdC8qIFFDSSBmYyBpbnRvIGdyMCAqL1xuIDI3NDpcdFx0XHRcJiMzNDtcdGxnclx0MiwlW3JlZzJdXFxuXCYjMzQ7XHRcdC8qIHB0ciB0byBjb25maWcgaW50byBncjIgKi9cbiAyNzU6XHRcdFx0XCYjMzQ7XHQuaW5zblx0cnJlLDB4YjJhZjAwMDAsMCwwXFxuXCYjMzQ7XHQvKiBQUUFQKFFDSSkgKi9cbiAyNzY6XHRcdFx0XCYjMzQ7MDpcdGxhXHQlW3JlZzFdLDBcXG5cJiMzNDtcdFx0LyogZ29vZCBjYXNlLCBRQ0kgZmMgYXZhaWxhYmxlICovXG4gMjc3Olx0XHRcdFwmIzM0OzE6XFxuXCYjMzQ7XG4gMjc4Olx0XHRcdEVYX1RBQkxFKDBiLCAxYilcbiAyNzk6XHRcdFx0OiBbcmVnMV0gXCYjMzQ7JiM0MztcdTAwMjZkXCYjMzQ7IChyZWcxKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzA3MAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIFBRQVAoUUNJKSBGdXp6aW5nIFBvc3NpYmlsaXRpZXMqKgoKT2theSwgc28gYGFwX3FjaWAgaXMgY2FsbGluZyBgUFFBUChRQ0kpYC4gIFRoYXQgaW5zdHJ1Y3Rpb24gZ2V0cyBpbnRlcmNlcHRlZCBieSB0aGUgaHlwZXJ2aXNvciDigJMgS1ZNL1FFTVUsIHNwZWNpZmljYWxseS4gRmlyc3QgdGhpbmcmIzM5O3MgZmlyc3Q6IGRvZXMgUUVNVSBldmVuICpzdXBwb3J0KiB0aGlzIGBQUUFQYCBpbnRlcmNlcHRpb24/IFRoYW5rZnVsbHksIHllcywgUUVNVSYjMzk7cyBnb3QgdGhhdCBjb3ZlcmVkLiBCdXQgaGVyZSYjMzk7cyB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogZG9lcyBRRU1VJiMzOTtzIHJlc3BvbnNlIGNvbmZpZ3VyYXRpb24sIGFzIGEgcmVzdWx0IG9mIGludGVyY2VwdGluZyB0aGF0IGluc3RydWN0aW9uLCBlbmFibGUgdGhlIHN1YnNlcXVlbnQgYGFwX2dldF9jb25maWd1cmF0aW9uYCB0byByZXR1cm4gdHJ1ZT8gVGhhdCYjMzk7cyB0aGUga2V5IHRvIHRyaWdnZXJpbmcgd2hhdCB3ZSBhcmUgaW50ZXJlc3RlZCBpbi4KCk5vdywgaWYgd2UgYXJlIGZ1enppbmcgdmlhIHN5emthbGxlciwgY2FuIHdlIHRyaWdnZXIgdGhhdCBjb25maWd1cmF0aW9uIHdpdGggc3l6a2FsbGVyPyAgQWgsIHRyaWNreS4gU3l6a2FsbGVyIGNhbiYjMzk7dCAqZGlyZWN0bHkqIGluamVjdCBgUFFBUChRQ0kpYCByZXNwb25zZXMsIGJlY2F1c2UgaXQgcnVucyBpbnNpZGUgdGhlIGd1ZXN0IFZNLiBJdCB3b3VsZCBuZWVkIHRvIGJlIHJ1bm5pbmcgYXQgdGhlIGh5cGVydmlzb3IgbGV2ZWwgdG8gZG8gdGhhdC4gQnV0IHdhaXQuLi5TeXprYWxsZXIgaXMgZnV6emluZyB0aGUga2VybmVsICpmcm9tIHVzZXIgc3BhY2UqLiBUaGF04oCZcyBhIGtleSBkaXN0aW5jdGlvbi4KCk9rYXksIHNvLCBpZiB3ZSBjYW5ub3QgdXNlIHN5emthbGxlciB0byBpbmplY3QgUFFBUCByZXNwb25zZXMsIGlzIHRoZXJlICphbnkqIHVzZXItc3BhY2UgaW50ZXJmYWNlIHRoYXQgbWlnaHQgdHJpZ2dlciB0aGF0IGB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZWAgdGhhdCB0aGlzIGFsbCByZWxhdGVzIHRvPyBJcyB0aGVyZSBhbiBleGlzdGluZyBBUEkgb3IgYSBtb3JlIGdlbmVyYWwgd2F5IHRvIGNhbGwgYHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlYD8gSeKAmWQgYmV0dGVyIGdvIGNoZWNrIHdoZXJlIHRoYXQgaXMgY2FsbGVkIGZyb20hIExldCYjMzk7cyBzZWUgaWYgaXQmIzM5O3MgY2FsbGVkIGFueXdoZXJlIGVsc2UgdGhhdCB3ZSBtaWdodCBiZSBhYmxlIHRvIGV4cGxvaXQgZnJvbSB1c2VyIHNwYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9jcnlwdG8vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yNTU3PXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9ob3RfdW5wbHVnX2NmZyhzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2LFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNTg1LS8qKlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI1ODY6ICogdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUgLSBkZXRlcm1pbmVzIHdoaWNoIGd1ZXN0cyBhcmUgdXNpbmcgdGhlIGFkYXB0ZXJzLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1ODctICpcdFx0XHQgICAgIGRvbWFpbnMgYW5kIGNvbnRyb2wgZG9tYWlucyB0aGF0IGhhdmUgYmVlbiByZW1vdmVkXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1OTctICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjU5ODpzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZSh1bnNpZ25lZCBsb25nICphcF9yZW1vdmUsXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjU5OS1cdFx0XHRcdCAgICB1bnNpZ25lZCBsb25nICphcV9yZW1vdmUsXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI2Mzk9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmUoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjdXJfY29uZmlnX2luZm8sXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2NjAtXHRpZiAoZG9fcmVtb3ZlKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI2NjE6XHRcdHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlKGFwcmVtLCBhcXJlbSwgY2RyZW0pO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2NjItfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDA5NQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBDYWxsZXIgb2YgYHZmaW9fYXBfbWRldl9vZmZfY2ZnX3JlbW92ZWAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSwgdGhlIGNvZGUgbm90ZXMgdGhhdCB0aGlzIGB2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZWAgZnVuY3Rpb24gaXMgb25seSBkaXJlY3RseSBjYWxsZWQgZnJvbSBgdmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmVgLiBUaGF0JiMzOTtzIGEgYml0IHVudXN1YWwsIGFuZCBpdCBtYWtlcyBtZSB3b25kZXIuIElzIHRoYXQgdHJ1bHkgdGhlICpvbmx5KiBwbGFjZSB0aGlzIGlzIGJlaW5nIGludm9rZWQgZnJvbT8gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LiBJIG5lZWQgdG8gbWFrZSAqYWJzb2x1dGVseSogc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBjYWxsIHBhdGhzLCBtYXliZSBpbmRpcmVjdGx5LCB0aGF0IGFyZSBsZWFkaW5nIHRvIHRoaXMgZnVuY3Rpb24gYmVpbmcgZXhlY3V0ZWQuIEkmIzM5O2xsIG5lZWQgdG8gZ28gYmV5b25kIHRoZSBpbW1lZGlhdGUgY2FsbCBzdGFjayB0byBiZSBjZXJ0YWluLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBteSB0b29scyB0byB0aG9yb3VnaGx5IGV4YW1pbmUgdGhlIGNhbGxpbmcgY29udGV4dCBhbmQgdmVyaWZ5IHRoZSBhc3N1bXB0aW9ucyB0aGlzIHBpZWNlIG9mIGNvZGUgaXMgYmFzZWQgb24uIEEgc2Vjb25kIHNldCBvZiBleWVzIG9uIHRoaXMgaXMgYWx3YXlzIGJlbmVmaWNpYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fYXBfbWRldl9vbl9jZmdfcmVtb3ZlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI1OTg9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUodW5zaWduZWQgbG9uZyAqYXBfcmVtb3ZlLFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjMxLS8qKlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI2MzI6ICogdmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmUgLSByZXNwb25kcyB0byB0aGUgcmVtb3ZhbCBvZiBhZGFwdGVycywgZG9tYWlucyBhbmRcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjMzLSAqXHRcdFx0XHRjb250cm9sIGRvbWFpbnMgZnJvbSB0aGUgaG9zdCBBUCBjb25maWd1cmF0aW9uXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2MzgtICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjYzOTpzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZShzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jb25maWdfaW5mbyxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjQwLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqcHJldl9jb25maWdfaW5mbylcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjgwND12b2lkIHZmaW9fYXBfb25fY2ZnX2NoYW5nZWQoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjdXJfY2ZnX2luZm8sXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4MTEtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjgxMjpcdHZmaW9fYXBfbWRldl9vbl9jZmdfcmVtb3ZlKGN1cl9jZmdfaW5mbywgcHJldl9jZmdfaW5mbyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgxMy1cdHZmaW9fYXBfbWRldl9vbl9jZmdfYWRkKGN1cl9jZmdfaW5mbywgcHJldl9jZmdfaW5mbyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0ODUyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB5b3UgZGVzY3JpYmVkOgoKKipBbmFseXppbmcgYHZmaW9fYXBfb25fY2ZnX2NoYW5nZWRgIENhbGxlcnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZnVuY3Rpb24sIGl0JiMzOTtzIGNhbGxlZCBgdmZpb19hcF9vbl9jZmdfY2hhbmdlZGAuIFRoZSBjb2RlIHNheXMgaXQmIzM5O3Mgb25seSBjYWxsZWQgZnJvbSBvbmUgcGxhY2U6IGB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBzb21ldGhpbmcuIEkga25vdyB0aGUgY29kZSBwcmV0dHkgd2VsbCwgYnV0IG1lbW9yeSBpc24mIzM5O3QgcGVyZmVjdCwgYW5kIHRoZXJlIG1pZ2h0IGJlIGEgc3VidGxlIGluZGlyZWN0IHBhdGguCgpTbyBteSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IElzIHRoaXMgdGhlICpvbmx5KiBjYWxsc2l0ZSBmb3IgdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uPyBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgYHZmaW9fYXBfb25fY2ZnX2NoYW5nZWRgIGlzICpub3QqIGNhbGxlZCBmcm9tIGFueXdoZXJlIGVsc2Ugd2l0aGluIHRoZSBjb2RlIGJhc2UuIEFyZSB0aGVyZSBhbnkgb3RoZXIgcGF0aHMsIGV2ZW4gb25lcyB0aGF0IHNlZW0gaW5kaXJlY3QsIHRoYXQgZW5kIHVwIHRyaWdnZXJpbmcgdGhpcyBmdW5jdGlvbiBjYWxsPyBUaGlzIGlzIGEgY3JpdGljYWwgcG9pbnQgdGhhdCBuZWVkcyBjb25maXJtYXRpb24gYmVmb3JlIEkgY29udGludWUgbXkgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fYXBfb25fY2ZnX2NoYW5nZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM9NTg9c3RhdGljIHN0cnVjdCBhcF9kcml2ZXIgdmZpb19hcF9kcnYgPSB7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTYxLVx0LmluX3VzZSA9IHZmaW9fYXBfbWRldl9yZXNvdXJjZV9pbl91c2UsXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6NjI6XHQub25fY29uZmlnX2NoYW5nZWQgPSB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTYzLVx0Lm9uX3NjYW5fY29tcGxldGUgPSB2ZmlvX2FwX29uX3NjYW5fY29tcGxldGUsXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI3NzI9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X29uX2NmZ19hZGQoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjdXJfY29uZmlnX2luZm8sXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI3OTctLyoqXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6Mjc5ODogKiB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkIC0gaGFuZGxlcyBub3RpZmljYXRpb24gb2YgY2hhbmdlcyB0byB0aGUgaG9zdCBBUFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI3OTktICpcdFx0XHQgICAgY29uZmlndXJhdGlvbi5cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgwMy0gKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODA0OnZvaWQgdmZpb19hcF9vbl9jZmdfY2hhbmdlZChzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jZmdfaW5mbyxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODA1LVx0XHRcdCAgICBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKnByZXZfY2ZnX2luZm8pXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaD0xNjE9aW50IHZmaW9fYXBfbWRldl9yZXNvdXJjZV9pbl91c2UodW5zaWduZWQgbG9uZyAqYXBtLCB1bnNpZ25lZCBsb25nICphcW0pO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaC0xNjItXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjE2Mzp2b2lkIHZmaW9fYXBfb25fY2ZnX2NoYW5nZWQoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpuZXdfY29uZmlnX2luZm8sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTE2NC1cdFx0XHQgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpvbGRfY29uZmlnX2luZm8pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTc0MgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgVkZJTy1BUCBEcml2ZXIgQ29uZmlndXJhdGlvbiBDaGFuZ2UgTWVjaGFuaXNtKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyB0aGUgY29uZmlndXJhdGlvbiBjaGFuZ2UgZXZlbnRzIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGUgYHZmaW9fYXBfZHJ2YCBkcml2ZXIuIE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCB0aGUgY29yZSBtZWNoYW5pc20gc2VlbXMgdG8gYmUgcm9vdGVkIGluIHRoZSBgLm9uX2NvbmZpZ19jaGFuZ2VkYCBjYWxsYmFjay4gVGhhdCYjMzk7cyB0aGUga2V5IGVudHJ5IHBvaW50LCB0aGUgdGhpbmcgdGhhdCBnZXRzIHRyaWdnZXJlZCB3aGVuIHNvbWV0aGluZyAqYWN0dWFsbHkqIGNoYW5nZXMuCgpBbmQgdGhlbiBJJiMzOTttIHRyYWNpbmcgdGhhdCBjYWxsYmFjayDigJMgaXQmIzM5O3MgY2FsbGVkIGJ5IGBfX2Rydl9ub3RpZnlfY29uZmlnX2NoYW5nZWRgLiBUaGF0IGZ1bmN0aW9uLCBpbiB0dXJuLCBpcyBpbnZva2VkIGJ5IGBub3RpZnlfY29uZmlnX2NoYW5nZWRgLCB3aGljaCBpcyB0aGVuIGNhbGxlZCBieSB0aGUgYGFwX3NjYW5fYnVzYCBmdW5jdGlvbi4gU28sIHdlIGhhdmUgdGhpcyBuZXN0ZWQgY2hhaW4sIGZyb20gdGhlIGxvdy1sZXZlbCBjaGFuZ2UgZGV0ZWN0aW9uLCBhbGwgdGhlIHdheSB1cCB0byB3aGVyZSB0aGUgYnVzIGlzIHNjYW5uZWQuCgpOb3csIGBhcF9zY2FuX2J1c2AgY2FuIGJlIHRyaWdnZXJlZCBlaXRoZXIgYnkgYSB0aW1lciBmaXJpbmcgb3IgYnkgYGFwX2J1c19mb3JjZV9yZXNjYW5gLiBUaGF0IGxhc3QgcGllY2UgaXMgd2hhdCBoYXMgbWUgdGhpbmtpbmc6IGlzIHRoZXJlIGEgc3lzZnMgYXR0cmlidXRlLCBhIHdheSB0byBtYW51YWxseSBmb3JjZSB0aGUgZHJpdmVyIHRvIHJlc2NhbiB0aGUgYnVzPyBJZiBzbywgdGhhdCYjMzk7cyBpbmNyZWRpYmx5IHVzZWZ1bCBmb3IgZGVidWdnaW5nIGFuZCBjb250cm9sLiBJdCYjMzk7cyB0aGUgZXF1aXZhbGVudCBvZiBhIHNvZnR3YXJlIHJlc2V0IGFuZCBjb3VsZCBzaGVkIGxpZ2h0IG9uIHNvbWUgb3RoZXIgaXNzdWVzLiBJIG5lZWQgdG8gbG9vayBmb3IgdGhhdCBhbmQgc2VlIGlmIGl0IGlzIGF2YWlsYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXBfYnVzX2ZvcmNlX3Jlc2NhbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9jcnlwdG8vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTExMj1FWFBPUlRfU1lNQk9MKGFwX2RyaXZlcl91bnJlZ2lzdGVyKTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExMTgtICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjExMTk6Ym9vbCBhcF9idXNfZm9yY2VfcmVzY2FuKHZvaWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExMjAte1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTEzMy1cdCAqIGFsbCBjYXJkcyBhcmUgb2ZmbGluZSBzbyBhIHJlc2NhbiBpcyB0cmlnZ2VyZWQgd2hpY2ggY2F1c2VzXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjExMzQ6XHQgKiBhIHJlY3Vyc2l2ZSBjYWxsIG9mIGFwX2J1c19mb3JjZV9yZXNjYW4oKS4gQSBzaW1wbGUgcmV0dXJuIGlmXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExMzUtXHQgKiB0aGUgbXV0ZXggaXMgYWxyZWFkeSBsb2NrZWQgYnkgdGhpcyB0aHJlYWQgc29sdmVzIHRoaXMuXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTY5LX1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTE3MDpFWFBPUlRfU1lNQk9MKGFwX2J1c19mb3JjZV9yZXNjYW4pO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTcxLVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTE3NT1zdGF0aWMgaW50IGFwX2J1c19jZmdfY2hnKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTgyLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMTgzOlx0YXBfYnVzX2ZvcmNlX3Jlc2NhbigpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTg0LVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTcxMD1zdGF0aWMgc3NpemVfdCBzY2Fuc19zdG9yZShjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY29uc3QgY2hhciAqYnVmLFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTcxNC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTcxNTpcdGFwX2J1c19mb3JjZV9yZXNjYW4oKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTcxNi1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5oPTI1Nj12b2lkIGFwX3JlcXVlc3RfdGltZW91dChzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5oOjI1Nzpib29sIGFwX2J1c19mb3JjZV9yZXNjYW4odm9pZCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5oLTI1OC1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3pjcnlwdF9hcGkuYz04MD1zdGF0aWMgaW5saW5lIGJvb2wgemNyeXB0X3Byb2Nlc3NfcmVzY2FuKHZvaWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3pjcnlwdF9hcGkuYy04MS17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3pjcnlwdF9hcGkuYzo4MjpcdHJldHVybiBhcF9idXNfZm9yY2VfcmVzY2FuKCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3pjcnlwdF9hcGkuYy04My19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2ODk1CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBBUCBCdXMgUmVzY2FuIExvZ2ljKioKCk9rYXksIHNvIGhlcmUmIzM5O3MgaG93IHRoaXMgYWxsIHdvcmtzLiBgc2NhbnNfc3RvcmVgIHVsdGltYXRlbHkgY2FsbHMgYGFwX2J1c19mb3JjZV9yZXNjYW5gLiBBIHVzZXIgY2FuIHRyaWdnZXIgdGhpcyB2aWEgdGhlIGAvc3lzL2J1cy9hcC9zY2Fuc2AgaW50ZXJmYWNlLiBUaGF0JiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZC4gSG93ZXZlciwgYGFwX3NjYW5fYnVzYCB0aGVuICpvbmx5KiBjYWxscyBgbm90aWZ5X2NvbmZpZ19jaGFuZ2VkYCBpZiBgYXBfZ2V0X2NvbmZpZ3VyYXRpb25gIHJldHVybnMgdHJ1ZS4gVGhhdCYjMzk7cyB0aGUgY3J1eCBvZiBpdC4gQW5kIGBhcF9nZXRfY29uZmlndXJhdGlvbmAgb25seSByZXR1cm5zIHRydWUgaWYgYGFwX3FjaV9pbmZvYCBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgbGFzdCBjYWxsLiAgYGFwX3FjaV9pbmZvYCBpcywgaW4gdHVybiwgcG9wdWxhdGVkIGJ5IGBhcF9xY2lgLCB3aGljaCBleGVjdXRlcyB0aGUgYFBRQVAoUUNJKWAgaW5zdHJ1Y3Rpb24uCgpTbywgaGVyZSYjMzk7cyB3aGF0IGl0IGNvbWVzIGRvd24gdG86IHVubGVzcyBgUFFBUChRQ0kpYCByZXN1bHRzIGluIGEgY2hhbmdlZCBgYXBfcWNpX2luZm9gLCBgbm90aWZ5X2NvbmZpZ19jaGFuZ2VkYCAqd29uJiMzOTt0KiBiZSB0cmlnZ2VyZWQsIG5vIG1hdHRlciBob3cgbWFueSB0aW1lcyB3ZSB3cml0ZSB0byBgL3N5cy9idXMvYXAvc2NhbnNgLiAgVGhpcyBzZWVtcyB0byBzdWdnZXN0IHRoZSBoeXBlcnZpc29yIChRRU1VLCBpbiB0aGlzIGNhc2UpIGhhcyB0byBjaGFuZ2UgdGhlIHVuZGVybHlpbmcgY29uZmlndXJhdGlvbi4gSWYgUUVNVSBkb2VzbiYjMzk7dCBjaGFuZ2UgYW55dGhpbmcsIHRoaXMgd2hvbGUgY29kZSBwYXRoIGFwcGVhcnMgdG8gYmUgaW5lcnQuCgpUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBjYW4gYSB1c2VyLXNwYWNlIHByb2Nlc3MgKndpdGhpbiB0aGUgZ3Vlc3QqIGFjdHVhbGx5IG1vZGlmeSB0aGlzIEFQIGNvbmZpZ3VyYXRpb24gaW4gYSB3YXkgdGhhdCB3b3VsZCB0cmlnZ2VyIHRoaXM/ICBSZWFsaXN0aWNhbGx5LCBuby4gVGhlIEFQIGNvbmZpZ3VyYXRpb24gaXMgcHJvdmlkZWQgYnkgdGhlIGh5cGVydmlzb3IuICBVbmxlc3Mgc29tZW9uZSBoYXMgZm91bmQgc29tZSBjcmF6eSBoYWNrLCBvciB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIG1lY2hhbmlzbSBJJiMzOTttIG1pc3NpbmcgdG8gbW9jayBvciBpbmplY3QgY2hhbmdlcyBmcm9tICp3aXRoaW4qIHRoZSBndWVzdCwgdGhpcyBzZWVtcyB0byBiZSB0cmlnZ2VyZWQgb25seSBieSBoeXBlcnZpc29yLWxldmVsIGNoYW5nZXMsIGxpa2UgaG90cGx1Z2dpbmcuCgpCdXQgd2FpdCwgd2hhdCBhYm91dCB0aGUgY2FzZSB3aGVyZSB0aGUgZ3Vlc3QgaXMgcnVubmluZyBvbiBRRU1VLCBidXQgUUVNVSBkb2VzbiYjMzk7dCBzdXBwb3J0IEFQIGNhcmRzIGF0IGFsbCwgb3IgaGFzIG5vbmUgY29uZmlndXJlZD8gIEluIHRoYXQgc2NlbmFyaW8sIGBhcF9xY2lfaW5mby0mZ3Q7ZmxhZ3NgIHdpbGwgbGlrZWx5IGJlIHplcm8sIGluZGljYXRpbmcgUUNJIGlzbiYjMzk7dCBzdXBwb3J0ZWQsIGFuZCBgYXBfZ2V0X2NvbmZpZ3VyYXRpb25gIHdpbGwgY29uc2lzdGVudGx5IHJldHVybiBmYWxzZS4gVGhpcyBtYWtlcyBzZW5zZS4KCkFscmlnaHQsIGlzIHRoZXJlIGFueSBraW5kIG9mIHNvZnR3YXJlIGVtdWxhdGlvbiBvZiBBUCBjYXJkcyB3aXRoaW4gdGhlIGtlcm5lbCB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGludGVydmVuZSBoZXJlPyBJIG5lZWQgdG8gY2hlY2sgaWYgYW55IHRlc3Qgb3IgbW9jayBkcml2ZXJzIGV4aXN0IGZvciB0aGUgQVAgYnVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGEgc2lkZSBwYXRoIHRoYXQmIzM5O3MgZW11bGF0aW5nIEFQIGNoYW5nZXMgd2l0aG91dCBoeXBlcnZpc29yIGlucHV0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthcF9xY2kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTEwNz1zdGF0aWMgc3RydWN0IGFwX2NvbmZpZ19pbmZvIHFjaVsyXTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTA4OnN0YXRpYyBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmNvbnN0IGFwX3FjaV9pbmZvID0gXHUwMDI2cWNpWzBdO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMDk6c3RhdGljIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqY29uc3QgYXBfcWNpX2luZm9fb2xkID0gXHUwMDI2cWNpWzFdO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTAtXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yMDk9c3RhdGljIGludCBhcF9pbnRlcnJ1cHRzX2F2YWlsYWJsZSh2b2lkKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjE0LS8qKlxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMTU6ICogYXBfcWNpX2F2YWlsYWJsZSgpOiBUZXN0IGlmIEFQIGNvbmZpZ3VyYXRpb25cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjE2LSAqIGluZm9ybWF0aW9uIGNhbiBiZSBxdWVyaWVkIHZpYSBRQ0kgc3ViZnVuY3Rpb24uXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMTktICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIyMDpzdGF0aWMgaW50IGFwX3FjaV9hdmFpbGFibGUodm9pZClcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjIxLXtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTI0MT1zdGF0aWMgaW5saW5lIGludCBhcF9xYWN0X2F2YWlsYWJsZSh2b2lkKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDIte1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDM6XHRyZXR1cm4gYXBfcWNpX2luZm8tXHUwMDNlcWFjdDtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ0LX1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTI1MT1pbnQgYXBfc2JfYXZhaWxhYmxlKHZvaWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI1Mi17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI1MzpcdHJldHVybiBhcF9xY2lfaW5mby1cdTAwM2VhcHNiO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNTQtfVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjcwPXN0YXRpYyB2b2lkIF9faW5pdCBhcF9pbml0X3FjaV9pbmZvKHZvaWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI3MS17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI3MjpcdGlmICghYXBfcWNpX2F2YWlsYWJsZSgpIHx8XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI3MzpcdCAgICBhcF9xY2koYXBfcWNpX2luZm8pKSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI3NC1cdFx0QVBfREJGX0lORk8oXCYjMzQ7JXMgUUNJIG5vdCBzdXBwb3J0ZWRcXG5cJiMzNDssIF9fZnVuY19fKTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI3Ni1cdH1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6Mjc3Olx0bWVtY3B5KGFwX3FjaV9pbmZvX29sZCwgYXBfcWNpX2luZm8sIHNpemVvZigqYXBfcWNpX2luZm8pKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjc4LVx0QVBfREJGX0lORk8oXCYjMzQ7JXMgc3VjY2Vzc2Z1bCBmZXRjaGVkIGluaXRpYWwgcWNpIGluZm9cXG5cJiMzNDssIF9fZnVuY19fKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjc5LVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyODA6XHRpZiAoYXBfcWNpX2luZm8tXHUwMDNlYXB4YSkge1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyODE6XHRcdGlmIChhcF9xY2lfaW5mby1cdTAwM2VuYSkge1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyODI6XHRcdFx0YXBfbWF4X2FkYXB0ZXJfaWQgPSBhcF9xY2lfaW5mby1cdTAwM2VuYTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjgzLVx0XHRcdEFQX0RCRl9JTkZPKFwmIzM0OyVzIG5ldyBhcF9tYXhfYWRhcHRlcl9pZCBpcyAlZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI4NS1cdFx0fVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyODY6XHRcdGlmIChhcF9xY2lfaW5mby1cdTAwM2VuZCkge1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyODc6XHRcdFx0YXBfbWF4X2RvbWFpbl9pZCA9IGFwX3FjaV9pbmZvLVx1MDAzZW5kO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yODgtXHRcdFx0QVBfREJGX0lORk8oXCYjMzQ7JXMgbmV3IGFwX21heF9kb21haW5faWQgaXMgJWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0zMTA9c3RhdGljIGlubGluZSBpbnQgYXBfdGVzdF9jb25maWdfY2FyZF9pZCh1bnNpZ25lZCBpbnQgaWQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zMTMtXHRcdHJldHVybiAwO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzozMTQ6XHRpZiAoYXBfcWNpX2luZm8tXHUwMDNlZmxhZ3MpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjMxNTpcdFx0cmV0dXJuIGFwX3Rlc3RfY29uZmlnKGFwX3FjaV9pbmZvLVx1MDAzZWFwbSwgaWQpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zMTYtXHRyZXR1cm4gMTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTMyNz1pbnQgYXBfdGVzdF9jb25maWdfdXNhZ2VfZG9tYWluKHVuc2lnbmVkIGludCBkb21haW4pXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zMzAtXHRcdHJldHVybiAwO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzozMzE6XHRpZiAoYXBfcWNpX2luZm8tXHUwMDNlZmxhZ3MpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjMzMjpcdFx0cmV0dXJuIGFwX3Rlc3RfY29uZmlnKGFwX3FjaV9pbmZvLVx1MDAzZWFxbSwgZG9tYWluKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzMzLVx0cmV0dXJuIDE7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0zNDU9aW50IGFwX3Rlc3RfY29uZmlnX2N0cmxfZG9tYWluKHVuc2lnbmVkIGludCBkb21haW4pXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTM0Ni17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjM0NzpcdGlmICghYXBfcWNpX2luZm8gfHwgZG9tYWluIFx1MDAzZSBhcF9tYXhfZG9tYWluX2lkKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zNDgtXHRcdHJldHVybiAwO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzozNDk6XHRyZXR1cm4gYXBfdGVzdF9jb25maWcoYXBfcWNpX2luZm8tXHUwMDNlYWRtLCBkb21haW4pO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zNTAtfVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTM0OT1zdGF0aWMgc3NpemVfdCBhcF9jb250cm9sX2RvbWFpbl9tYXNrX3Nob3coY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNoYXIgKmJ1ZilcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM1MC17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNTE6XHRpZiAoIWFwX3FjaV9pbmZvLVx1MDAzZWZsYWdzKVx0LyogUUNJIG5vdCBzdXBwb3J0ZWQgKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM1Mi1cdFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDtub3Qgc3VwcG9ydGVkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNTQtXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0OzB4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHhcXG5cJiMzNDssXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNTU6XHRcdFx0ICBhcF9xY2lfaW5mby1cdTAwM2VhZG1bMF0sIGFwX3FjaV9pbmZvLVx1MDAzZWFkbVsxXSxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM1NjpcdFx0XHQgIGFwX3FjaV9pbmZvLVx1MDAzZWFkbVsyXSwgYXBfcWNpX2luZm8tXHUwMDNlYWRtWzNdLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzU3Olx0XHRcdCAgYXBfcWNpX2luZm8tXHUwMDNlYWRtWzRdLCBhcF9xY2lfaW5mby1cdTAwM2VhZG1bNV0sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNTg6XHRcdFx0ICBhcF9xY2lfaW5mby1cdTAwM2VhZG1bNl0sIGFwX3FjaV9pbmZvLVx1MDAzZWFkbVs3XSk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNTktfVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTM2Mz1zdGF0aWMgc3NpemVfdCBhcF91c2FnZV9kb21haW5fbWFza19zaG93KGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjaGFyICpidWYpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNjQte1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzY1Olx0aWYgKCFhcF9xY2lfaW5mby1cdTAwM2VmbGFncylcdC8qIFFDSSBub3Qgc3VwcG9ydGVkICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNjYtXHRcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7bm90IHN1cHBvcnRlZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzY4LVx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDsweCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4XFxuXCYjMzQ7LFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzY5Olx0XHRcdCAgYXBfcWNpX2luZm8tXHUwMDNlYXFtWzBdLCBhcF9xY2lfaW5mby1cdTAwM2VhcW1bMV0sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNzA6XHRcdFx0ICBhcF9xY2lfaW5mby1cdTAwM2VhcW1bMl0sIGFwX3FjaV9pbmZvLVx1MDAzZWFxbVszXSxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM3MTpcdFx0XHQgIGFwX3FjaV9pbmZvLVx1MDAzZWFxbVs0XSwgYXBfcWNpX2luZm8tXHUwMDNlYXFtWzVdLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzcyOlx0XHRcdCAgYXBfcWNpX2luZm8tXHUwMDNlYXFtWzZdLCBhcF9xY2lfaW5mby1cdTAwM2VhcW1bN10pO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzczLX1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTEzNzc9c3RhdGljIHNzaXplX3QgYXBfYWRhcHRlcl9tYXNrX3Nob3coY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNoYXIgKmJ1ZilcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM3OC17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNzk6XHRpZiAoIWFwX3FjaV9pbmZvLVx1MDAzZWZsYWdzKVx0LyogUUNJIG5vdCBzdXBwb3J0ZWQgKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM4MC1cdFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDtub3Qgc3VwcG9ydGVkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzODItXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0OzB4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHhcXG5cJiMzNDssXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzODM6XHRcdFx0ICBhcF9xY2lfaW5mby1cdTAwM2VhcG1bMF0sIGFwX3FjaV9pbmZvLVx1MDAzZWFwbVsxXSxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM4NDpcdFx0XHQgIGFwX3FjaV9pbmZvLVx1MDAzZWFwbVsyXSwgYXBfcWNpX2luZm8tXHUwMDNlYXBtWzNdLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzg1Olx0XHRcdCAgYXBfcWNpX2luZm8tXHUwMDNlYXBtWzRdLCBhcF9xY2lfaW5mby1cdTAwM2VhcG1bNV0sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzODY6XHRcdFx0ICBhcF9xY2lfaW5mby1cdTAwM2VhcG1bNl0sIGFwX3FjaV9pbmZvLVx1MDAzZWFwbVs3XSk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzODctfVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTc0Nz1zdGF0aWMgc3NpemVfdCBmZWF0dXJlc19zaG93KGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjaGFyICpidWYpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzUwLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzUxOlx0aWYgKCFhcF9xY2lfaW5mby1cdTAwM2VmbGFncylcdC8qIFFDSSBub3Qgc3VwcG9ydGVkICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NTItXHRcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7LVxcblwmIzM0Oyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NTMtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3NTQ6XHRpZiAoYXBfcWNpX2luZm8tXHUwMDNlYXBzYylcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc1NS1cdFx0biAmIzQzOz0gc3lzZnNfZW1pdF9hdChidWYsIG4sIFwmIzM0O0FQU0MgXCYjMzQ7KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTc1NjpcdGlmIChhcF9xY2lfaW5mby1cdTAwM2VhcHhhKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzU3LVx0XHRuICYjNDM7PSBzeXNmc19lbWl0X2F0KGJ1ZiwgbiwgXCYjMzQ7QVBYQSBcJiMzNDspO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzU4Olx0aWYgKGFwX3FjaV9pbmZvLVx1MDAzZXFhY3QpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NTktXHRcdG4gJiM0Mzs9IHN5c2ZzX2VtaXRfYXQoYnVmLCBuLCBcJiMzNDtRQUNUIFwmIzM0Oyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3NjA6XHRpZiAoYXBfcWNpX2luZm8tXHUwMDNlcmM4YSlcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc2MS1cdFx0biAmIzQzOz0gc3lzZnNfZW1pdF9hdChidWYsIG4sIFwmIzM0O1JDOEEgXCYjMzQ7KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTc2MjpcdGlmIChhcF9xY2lfaW5mby1cdTAwM2VhcHNiKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzYzLVx0XHRuICYjNDM7PSBzeXNmc19lbWl0X2F0KGJ1ZiwgbiwgXCYjMzQ7QVBTQiBcJiMzNDspO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTkyMz1zdGF0aWMgaW50IF9fZHJ2X25vdGlmeV9jb25maWdfY2hhbmdlZChzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2LCB2b2lkICpkYXRhKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTkyOC1cdFx0aWYgKGFwX2Rydi1cdTAwM2Vvbl9jb25maWdfY2hhbmdlZClcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTkyOTpcdFx0XHRhcF9kcnYtXHUwMDNlb25fY29uZmlnX2NoYW5nZWQoYXBfcWNpX2luZm8sIGFwX3FjaV9pbmZvX29sZCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5MzAtXHRcdG1vZHVsZV9wdXQoZHJ2LVx1MDAzZW93bmVyKTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTE5NDQ9c3RhdGljIGludCBfX2Rydl9ub3RpZnlfc2Nhbl9jb21wbGV0ZShzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2LCB2b2lkICpkYXRhKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTk0OS1cdFx0aWYgKGFwX2Rydi1cdTAwM2Vvbl9zY2FuX2NvbXBsZXRlKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTUwOlx0XHRcdGFwX2Rydi1cdTAwM2Vvbl9zY2FuX2NvbXBsZXRlKGFwX3FjaV9pbmZvLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTUxOlx0XHRcdFx0XHRcdCBhcF9xY2lfaW5mb19vbGQpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTUyLVx0XHRtb2R1bGVfcHV0KGRydi1cdTAwM2Vvd25lcik7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yMzExPXN0YXRpYyBib29sIGFwX2dldF9jb25maWd1cmF0aW9uKHZvaWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMTIte1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzEzOlx0aWYgKCFhcF9xY2lfaW5mby1cdTAwM2VmbGFncylcdC8qIFFDSSBub3Qgc3VwcG9ydGVkICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMTQtXHRcdHJldHVybiBmYWxzZTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMxNS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMxNjpcdG1lbWNweShhcF9xY2lfaW5mb19vbGQsIGFwX3FjaV9pbmZvLCBzaXplb2YoKmFwX3FjaV9pbmZvKSk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMTc6XHRhcF9xY2koYXBfcWNpX2luZm8pO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzE4LVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzE5Olx0cmV0dXJuIG1lbWNtcChhcF9xY2lfaW5mbywgYXBfcWNpX2luZm9fb2xkLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzIwLVx0XHQgICAgICBzaXplb2Yoc3RydWN0IGFwX2NvbmZpZ19pbmZvKSkgIT0gMDtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTIzMjk9c3RhdGljIGJvb2wgYXBfY29uZmlnX2hhc19uZXdfYXBzKHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzMzLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzM0Olx0aWYgKCFhcF9xY2lfaW5mby1cdTAwM2VmbGFncylcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMzNS1cdFx0cmV0dXJuIGZhbHNlO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzM2LVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzM3Olx0Yml0bWFwX2FuZG5vdChtLCAodW5zaWduZWQgbG9uZyAqKWFwX3FjaV9pbmZvLVx1MDAzZWFwbSxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMzODpcdFx0ICAgICAgKHVuc2lnbmVkIGxvbmcgKilhcF9xY2lfaW5mb19vbGQtXHUwMDNlYXBtLCBBUF9ERVZJQ0VTKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMzOS1cdGlmICghYml0bWFwX2VtcHR5KG0sIEFQX0RFVklDRVMpKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjM1MT1zdGF0aWMgYm9vbCBhcF9jb25maWdfaGFzX25ld19kb21zKHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzU0LVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzU1Olx0aWYgKCFhcF9xY2lfaW5mby1cdTAwM2VmbGFncylcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM1Ni1cdFx0cmV0dXJuIGZhbHNlO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzU3LVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzU4Olx0Yml0bWFwX2FuZG5vdChtLCAodW5zaWduZWQgbG9uZyAqKWFwX3FjaV9pbmZvLVx1MDAzZWFxbSxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjM1OTpcdFx0ICAgICAgKHVuc2lnbmVkIGxvbmcgKilhcF9xY2lfaW5mb19vbGQtXHUwMDNlYXFtLCBBUF9ET01BSU5TKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM2MC1cdGlmICghYml0bWFwX2VtcHR5KG0sIEFQX0RPTUFJTlMpKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYz04Nj1zdGF0aWMgaW50IHZmaW9fYXBfbWF0cml4X2Rldl9jcmVhdGUodm9pZClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTA2LVx0aWYgKHRlc3RfZmFjaWxpdHkoMTIpKSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTA3Olx0XHRyZXQgPSBhcF9xY2koXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VpbmZvKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xMDgtXHRcdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNTMxCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMzAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlYCBDYWxsYmFjayoqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBubyAmIzM0O21vY2sgZHJpdmVyJiMzNDsgaW52b2x2ZWQgaGVyZSwgdGhlIGBhcF9xY2lgIGluc3RydWN0aW9uIGlzIGV4ZWN1dGVkIGRpcmVjdGx5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpZiB0aGUgaHlwZXJ2aXNvciBkb2VzbiYjMzk7dCBzdXBwb3J0IGl0IG9yIGlmIHRoZSBjb25maWd1cmF0aW9uIHJlbWFpbnMgdW5jaGFuZ2VkLCB0aGUgcmVsYXRlZCBjb2RlIHBhdGggd29uJiMzOTt0IGJlIHRyaWdnZXJlZC4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGJlY29tZXMsIGNhbiBzeXprYWxsZXIgZXZlbiBydW4gb24gYW4gczM5MHggVk0gd2l0aCBBUCBjYXJkcyBwcm9wZXJseSBjb25maWd1cmVkPwoKSSBrbm93IHN5emthbGxlciBoYXMgczM5MHggc3VwcG9ydCwgYnV0IHdoYXQgYWJvdXQgQVAgY2FyZHMgc3BlY2lmaWNhbGx5PyBMZXQmIzM5O3MgcmUtZXhhbWluZSB0aGUgb3JpZ2luYWwgcHJvbXB0Li4uIGl0IG1lbnRpb25zIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBlbXVsYXRlZCBoYXJkd2FyZS4gSXQgYWxzbyBzcGVjaWZpY2FsbHkgaGlnaGxpZ2h0cyAmIzM0Oy5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyYjMzQ7LiBUaGlzIGlzIGEgY2x1ZS4KCkFoLCBgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmVgLiBUaGlzIGlzIHRyaWdnZXJlZCBkdXJpbmcgaG90LXVucGx1ZyBldmVudHMg4oCTIHBhcnRpY3VsYXJseSB3aGVuIEFQIGNvbmZpZ3VyYXRpb24gY2hhbmdlcywgc2F5LCB3aGVuIGFkYXB0ZXJzIG9yIGRvbWFpbnMgYXJlIHJlbW92ZWQuIFRoaW5raW5nIGl0IHRocm91Z2guLi4gYHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlYCBpcyBjYWxsZWQgZnJvbSBgdmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmVgLCB3aGljaCBpcyBjYWxsZWQgd2hlbiB0aGUgQVAgY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBEb2VzIHRoaXMgY2FsbGJhY2sgY291bnQgYXMgYSB0ZWFyZG93biBmdW5jdGlvbj8gWWVzLCBpdCYjMzk7cyBleHBsaWNpdGx5IGZvciBob3QtdW5wbHVnIHNjZW5hcmlvcywgd2hpY2ggY29uZmlybXMgdGhlIHJlbGV2YW5jZSB0byB0aGUgc3RhdGVkIGNvbnRleHQuCgpOb3csIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSwgYSBxdWljayBjaGVjayBvZiB0aGUgY29tbWVudCBmb3IgYHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlYCBpcyBpbiBvcmRlciB0byBiZSBjb21wbGV0ZWx5IGNlcnRhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjU4NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyNTg1Olx0LyoqXG4yNTg2Olx0ICogdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUgLSBkZXRlcm1pbmVzIHdoaWNoIGd1ZXN0cyBhcmUgdXNpbmcgdGhlIGFkYXB0ZXJzLFxuMjU4NzpcdCAqXHRcdFx0ICAgICBkb21haW5zIGFuZCBjb250cm9sIGRvbWFpbnMgdGhhdCBoYXZlIGJlZW4gcmVtb3ZlZFxuMjU4ODpcdCAqXHRcdFx0ICAgICBmcm9tIHRoZSBob3N0IEFQIGNvbmZpZ3VyYXRpb24gYW5kIHVucGx1Z3MgdGhlbVxuMjU4OTpcdCAqXHRcdFx0ICAgICBmcm9tIHRob3NlIGd1ZXN0cy5cbjI1OTA6XHQgKlxuMjU5MTpcdCAqIEBhcF9yZW1vdmU6XHRiaXRtYXAgc3BlY2lmeWluZyB3aGljaCBhZGFwdGVycyBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBob3N0XG4yNTkyOlx0ICpcdFx0Y29uZmlnLlxuMjU5MzpcdCAqIEBhcV9yZW1vdmU6XHRiaXRtYXAgc3BlY2lmeWluZyB3aGljaCBkb21haW5zIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIGhvc3RcbjI1OTQ6XHQgKlx0XHRjb25maWcuXG4yNTk1Olx0ICogQGNkX3JlbW92ZTpcdGJpdG1hcCBzcGVjaWZ5aW5nIHdoaWNoIGNvbnRyb2wgZG9tYWlucyBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tXG4yNTk2Olx0ICpcdFx0dGhlIGhvc3QgY29uZmlnLlxuMjU5NzpcdCAqL1xuMjU5ODpcdHN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlKHVuc2lnbmVkIGxvbmcgKmFwX3JlbW92ZSxcbjI1OTk6XHRcdFx0XHRcdCAgICB1bnNpZ25lZCBsb25nICphcV9yZW1vdmUsXG4yNjAwOlx0XHRcdFx0XHQgICAgdW5zaWduZWQgbG9uZyAqY2RfcmVtb3ZlKVxuMjYwMTpcdHtcbjI2MDI6XHRcdHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXY7XG4yNjAzOlx0XHRERUNMQVJFX0JJVE1BUChhcHJlbSwgQVBfREVWSUNFUyk7XG4yNjA0Olx0XHRERUNMQVJFX0JJVE1BUChhcXJlbSwgQVBfRE9NQUlOUyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNTY0CgkJCQkJCQlvdXRwdXQ6IDEwNAoJCQkJCQkJdGhvdWdodHM6IDY0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgRGVjaXNpb246IE5vKioKCk9rYXksIGhlcmUmIzM5O3MgdGhlIGJyZWFrZG93biBvZiBteSB0aGlua2luZy4gVGhlIGNvZGUgaW4gcXVlc3Rpb24gY2xlYXJseSB0YXJnZXRzIGhvdC11bnBsdWcgc2NlbmFyaW9zLCBzcGVjaWZpY2FsbHkgcmVnYXJkaW5nIEFQIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgaW5zdHJ1Y3RzIG1lIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyBsaWtlIGAucmVtb3ZlYCBvciBgLnNodXRkb3duYCB0aGF0IGFyZSAqb25seSogZXhlY3V0ZWQgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4gVGhpcyBwYXRjaCBmYWxscyBzcXVhcmVseSBpbnRvIHRoYXQgY2F0ZWdvcnksIGRlYWxpbmcgd2l0aCB0aGUgcmVtb3ZhbCBvZiBndWVzdHMgdXNpbmcgY2VydGFpbiBhZGFwdGVycywgZG9tYWlucywgYW5kIGNvbnRyb2wgZG9tYWlucyBhZnRlciB0aGUgaG9zdCBBUCBjb25maWd1cmF0aW9uIGlzIGNoYW5nZWQuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHRyYWNlZCB0aGUgY2FsbCBjaGFpbi4gYHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlYCBpcyB0cmlnZ2VyZWQgdGhyb3VnaCBgdmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmVgLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBieSBgdmZpb19hcF9vbl9jZmdfY2hhbmdlZGAuIFRoaXMgZnVuY3Rpb24gaXMgaW5pdGlhdGVkIGJ5IGBfX2Rydl9ub3RpZnlfY29uZmlnX2NoYW5nZWRgLCB3aGljaCBpcyBkaXJlY3RseSBsaW5rZWQgdG8gQVAgYnVzIGNvbmZpZ3VyYXRpb24gY2hhbmdlcywgaS5lLiwgaG90cGx1Zy9ob3R1bnBsdWcgZXZlbnRzLiAgVGhlcmUmIzM5O3Mgbm8gd2F5IGFyb3VuZCBpdDsgdGhpcyBpcyBhIHB1cmUgaG90LXVucGx1ZyBldmVudCBoYW5kbGVyLiBNeSByZWFkaW5nIG9mIHRoZSBpbnN0cnVjdGlvbnMgaXMgY2xlYXIsIHNvIHRoaXMgaXMgbm90IHdvcnRoIGZ1enppbmcuCgpJIHF1aWNrbHkgcmV2aWV3ZWQgdGhlIHBhdGNoIGl0c2VsZiwgYW5kIGl0IG1vZGlmaWVzIHRoZSBmdW5jdGlvbiBgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmVgLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgYSBgYml0bWFwX2FuZG5vdGAgb3BlcmF0aW9uIHRvIGBiaXRtYXBfYW5kYC4gVGhhdCYjMzk7cyBhIGJ1ZyBmaXggd2l0aGluIHRoaXMgaG90LXVucGx1ZyBwYXRoLiBUaGUgZmFjdCB0aGF0IGl0IHJlbGF0ZXMgdG8gczM5MCBBUCBjcnlwdG8sIGFuZCB0aGF0IGl0IHJlcXVpcmVzIGh5cGVydmlzb3IgY29uZmlndXJhdGlvbiBjaGFuZ2VzIHRvIGV2ZW4gYmUgdHJpZ2dlcmVkLCBmdXJ0aGVyIHJlaW5mb3JjZXMgdGhlICYjMzQ7aG90LXVucGx1ZyYjMzQ7IGV4Y2VwdGlvbi4KClRoZXJlZm9yZSwgSSYjMzk7bSBjb25maWRlbnQgaW4gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhIGhvdC11bnBsdWcgY2FsbGJhY2sgKGB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZWApIGluIHRoZSBzMzkwIFZGSU8gQVAgY3J5cHRvIGRyaXZlciwgd2hpY2ggaXMgZXhlY3V0ZWQgb25seSB3aGVuIEFQIGFkYXB0ZXJzIG9yIGRvbWFpbnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgaG9zdCBBUCBjb25maWd1cmF0aW9uLiBBY2NvcmRpbmcgdG8gdGhlIGluc3RydWN0aW9ucywgdGVhcmRvd24gY2FsbGJhY2tzIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIGhvdC11bnBsdWcgb3BlcmF0aW9ucyBhcmUgbm90IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhIGhvdC11bnBsdWcgY2FsbGJhY2sgKGB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZWApIGluIHRoZSBzMzkwIFZGSU8gQVAgY3J5cHRvIGRyaXZlciwgd2hpY2ggaXMgZXhlY3V0ZWQgb25seSB3aGVuIEFQIGFkYXB0ZXJzIG9yIGRvbWFpbnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgaG9zdCBBUCBjb25maWd1cmF0aW9uLiBBY2NvcmRpbmcgdG8gdGhlIGluc3RydWN0aW9ucywgdGVhcmRvd24gY2FsbGJhY2tzIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIGhvdC11bnBsdWcgb3BlcmF0aW9ucyBhcmUgbm90IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTY6NTguMjAwMTY0NjkxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxMzI4NjYyMzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYSBob3QtdW5wbHVnIGNhbGxiYWNrIChgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmVgKSBpbiB0aGUgczM5MCBWRklPIEFQIGNyeXB0byBkcml2ZXIsIHdoaWNoIGlzIGV4ZWN1dGVkIG9ubHkgd2hlbiBBUCBhZGFwdGVycyBvciBkb21haW5zIGFyZSByZW1vdmVkIGZyb20gdGhlIGhvc3QgQVAgY29uZmlndXJhdGlvbi4gQWNjb3JkaW5nIHRvIHRoZSBpbnN0cnVjdGlvbnMsIHRlYXJkb3duIGNhbGxiYWNrcyBleGVjdXRlZCBvbmx5IGR1cmluZyBob3QtdW5wbHVnIG9wZXJhdGlvbnMgYXJlIG5vdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTY6NTguMjAwMTcwMjYxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjk0MDM4NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3ZTM2MTkzMjI0ZTZiYTVlMWUzZmUzNTBjMzU0N2Y2MzYxYzdlMTA4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDcgMjM6MTY6NTcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jIGIvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jXFxuaW5kZXggNDRiM2ExZGNjMWIzNi4uMWJmZGJlODUwMjNkZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmNcXG4rKysgYi9kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmNcXG5AQCAtMjYxNSw5ICsyNjE1LDkgQEAgc3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUodW5zaWduZWQgbG9uZyAqYXBfcmVtb3ZlLFxcbiBcXHRcXHRkb19yZW1vdmUgfD0gYml0bWFwX2FuZChhcXJlbSwgYXFfcmVtb3ZlLFxcbiBcXHRcXHRcXHRcXHRcXHQgIG1hdHJpeF9tZGV2LVxcdTAwM2VtYXRyaXguYXFtLFxcbiBcXHRcXHRcXHRcXHRcXHQgIEFQX0RPTUFJTlMpO1xcbi1cXHRcXHRkb19yZW1vdmUgfD0gYml0bWFwX2FuZG5vdChjZHJlbSwgY2RfcmVtb3ZlLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgIG1hdHJpeF9tZGV2LVxcdTAwM2VtYXRyaXguYWRtLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgIEFQX0RPTUFJTlMpO1xcbitcXHRcXHRkb19yZW1vdmUgfD0gYml0bWFwX2FuZChjZHJlbSwgY2RfcmVtb3ZlLFxcbitcXHRcXHRcXHRcXHRcXHRtYXRyaXhfbWRldi1cXHUwMDNlbWF0cml4LmFkbSxcXG4rXFx0XFx0XFx0XFx0XFx0QVBfRE9NQUlOUyk7XFxuIFxcbiBcXHRcXHRpZiAoZG9fcmVtb3ZlKVxcbiBcXHRcXHRcXHR2ZmlvX2FwX21kZXZfaG90X3VucGx1Z19jZmcobWF0cml4X21kZXYsIGFwcmVtLCBhcXJlbSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTY6NTguNTcwMjU0OTg3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTAwOTU4NTU2NTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhIGhvdC11bnBsdWcgY2FsbGJhY2sgKGB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZWApIGluIHRoZSBzMzkwIFZGSU8gQVAgY3J5cHRvIGRyaXZlciwgd2hpY2ggaXMgZXhlY3V0ZWQgb25seSB3aGVuIEFQIGFkYXB0ZXJzIG9yIGRvbWFpbnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgaG9zdCBBUCBjb25maWd1cmF0aW9uLiBBY2NvcmRpbmcgdG8gdGhlIGluc3RydWN0aW9ucywgdGVhcmRvd24gY2FsbGJhY2tzIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIGhvdC11bnBsdWcgb3BlcmF0aW9ucyBhcmUgbm90IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3ZTM2MTkzMjI0ZTZiYTVlMWUzZmUzNTBjMzU0N2Y2MzYxYzdlMTA4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAyMzoxNjo1NyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYyBiL2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuY1xuaW5kZXggNDRiM2ExZGNjMWIzNi4uMWJmZGJlODUwMjNkZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuY1xuKysrIGIvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jXG5AQCAtMjYxNSw5ICsyNjE1LDkgQEAgc3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUodW5zaWduZWQgbG9uZyAqYXBfcmVtb3ZlLFxuIFx0XHRkb19yZW1vdmUgfD0gYml0bWFwX2FuZChhcXJlbSwgYXFfcmVtb3ZlLFxuIFx0XHRcdFx0XHQgIG1hdHJpeF9tZGV2LVx1MDAzZW1hdHJpeC5hcW0sXG4gXHRcdFx0XHRcdCAgQVBfRE9NQUlOUyk7XG4tXHRcdGRvX3JlbW92ZSB8PSBiaXRtYXBfYW5kbm90KGNkcmVtLCBjZF9yZW1vdmUsXG4tXHRcdFx0XHRcdCAgICAgbWF0cml4X21kZXYtXHUwMDNlbWF0cml4LmFkbSxcbi1cdFx0XHRcdFx0ICAgICBBUF9ET01BSU5TKTtcbitcdFx0ZG9fcmVtb3ZlIHw9IGJpdG1hcF9hbmQoY2RyZW0sIGNkX3JlbW92ZSxcbitcdFx0XHRcdFx0bWF0cml4X21kZXYtXHUwMDNlbWF0cml4LmFkbSxcbitcdFx0XHRcdFx0QVBfRE9NQUlOUyk7XG4gXG4gXHRcdGlmIChkb19yZW1vdmUpXG4gXHRcdFx0dmZpb19hcF9tZGV2X2hvdF91bnBsdWdfY2ZnKG1hdHJpeF9tZGV2LCBhcHJlbSwgYXFyZW0sXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxNjo1OC41NzAyNTYzMDdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTYyODMwMjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIENyeXB0byBEcml2ZXIgQ2hhbmdlKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBpbiBgZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jYC4gUmlnaHQgYXdheSwgdGhhdCB0ZWxscyBtZSBpdCdzIHMzOTAtc3BlY2lmaWMsIHNvIHdlJ3JlIHRhbGtpbmcgbWFpbmZyYW1lIHRlcnJpdG9yeS4gSXQncyBhIGBiaXRtYXBfYW5kbm90YCB0byBgYml0bWFwX2FuZGAgY2hhbmdlIHdpdGhpbiB0aGUgYHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlYCBmdW5jdGlvbi4gVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgY29kZSBwYXRoIGlzIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUuIFdlIGNhbiBlbXVsYXRlIHMzOTB4IGluIFFFTVUsIGJ1dCBkb2VzIGl0IG5lY2Vzc2l0YXRlIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIHRvIGhpdCB0aGlzIHNlY3Rpb24gb2YgY29kZT9cblxuVkZJTyBBUCBpcyBzcGVjaWZpY2FsbHkgZm9yIEFkanVuY3QgUHJvY2Vzc29yIGNyeXB0byBjYXJkcyBvbiBzMzkwLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIuIE5vdywgY2FuIHRoaXMgYmUgZnV6emVkPyBUaGUgcHJvbXB0IHN0YXRlcyB0aGF0IHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6YXRpb24sIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSwgc2hvdWxkbid0IGJlIGNvbnNpZGVyZWQuIFRoZSBwcm9tcHQgbWVudGlvbnMgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgYW5kIHRlYXJkb3duIGNhbGxiYWNrcyBhcyBhcmVhcyB0byBiZSB3YXJ5IG9mLCBlc3BlY2lhbGx5IHRob3NlIGV4ZWN1dGVkIGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuIEkgbmVlZCB0byBmb2N1cyBvbiBgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmVgIHRvIGFzc2VzcyB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiB0aGUgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTksIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxNzowMy41MzMwODkzOTNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY5NDA0MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmZpb19hcF9tZGV2X2NmZ19yZW1vdmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yNTU3PXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9ob3RfdW5wbHVnX2NmZyhzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2LFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1ODUtLyoqXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI1ODY6ICogdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUgLSBkZXRlcm1pbmVzIHdoaWNoIGd1ZXN0cyBhcmUgdXNpbmcgdGhlIGFkYXB0ZXJzLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNTg3LSAqXFx0XFx0XFx0ICAgICBkb21haW5zIGFuZCBjb250cm9sIGRvbWFpbnMgdGhhdCBoYXZlIGJlZW4gcmVtb3ZlZFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1OTctICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI1OTg6c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUodW5zaWduZWQgbG9uZyAqYXBfcmVtb3ZlLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNTk5LVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nICphcV9yZW1vdmUsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjYzOT1zdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZShzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jb25maWdfaW5mbyxcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjYwLVxcdGlmIChkb19yZW1vdmUpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI2NjE6XFx0XFx0dmZpb19hcF9tZGV2X2NmZ19yZW1vdmUoYXByZW0sIGFxcmVtLCBjZHJlbSk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2NjItfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxNzowMy41ODAwMzUwMzJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTY0OTQzNTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFraW5nIG9uIHRoZSBwZXJzb25hIHlvdSd2ZSByZXF1ZXN0ZWQsIGFpbWVkIGF0IGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgYHZmaW9fYXBfbWRldl9vbl9jZmdfcmVtb3ZlYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byBgdmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmVgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGF0J3MgdGhlIGNvbnRleHQgaGVyZT9cIiBUaGlzIG5hbWUgc2NyZWFtcyBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgYWR2YW5jZWQgcHJvZ3JhbW1pbmcgKEFQKSBtb2RlIHdpdGhpbiBWRklPLCBhbmQgc3BlY2lmaWNhbGx5LCB0aGUgaGFuZGxpbmcgb2YgbWVkaWF0ZWQgZGV2aWNlcyAobWRldnMpLiBUaGUgXCJvbl9jZmdfcmVtb3ZlXCIgcGFydCBzdHJvbmdseSBzdWdnZXN0cyB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgdHJpZ2dlcmVkIHdoZW4gYSBjb25maWd1cmF0aW9uIGZvciBhbiBtZGV2IGlzIGJlaW5nIHJlbW92ZWQsIGxpa2VseSBkdXJpbmcgZGV2aWNlIHVuYmluZGluZywgZHJpdmVyIGRldGFjaG1lbnQsIG9yIGEgc2ltaWxhciB0ZWFyZG93biBzZXF1ZW5jZS5cblxuSeKAmW0gYWxyZWFkeSBtZW50YWxseSBtYXBwaW5nIHRoaXMgdG8gcG90ZW50aWFsIGFyZWFzIG9mIGludGVyZXN0OlxuXG4qICAgKipSZXNvdXJjZSBDbGVhbnVwOioqIElzIHRoaXMgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgYWxsb2NhdGVkIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlIG1kZXYncyBjb25maWd1cmF0aW9uPyBJIHN1c3BlY3Qgc28uIEkgbmVlZCB0byBiZSB0aGlua2luZyBhYm91dCBtZW1vcnkgYWxsb2NhdGlvbnMsIGludGVycnVwdCB2ZWN0b3JzLCBETUEgbWFwcGluZ3MsIGFuZCBhbnl0aGluZyBlbHNlIHRoZSBjb25maWd1cmF0aW9uIG1pZ2h0IGhhdmUgc2V0IHVwLlxuKiAgICoqU3luY2hyb25pemF0aW9uOioqIEdpdmVuIHRoZSBjb21wbGV4aXR5IG9mIFZGSU8gYW5kIHRoZSBtdWx0aS10aHJlYWRlZCBuYXR1cmUgb2YgdGhlIGtlcm5lbCwgSSdtIGdvaW5nIHRvIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgYW55IHNoYXJlZCBkYXRhIHN0cnVjdHVyZXMgYXJlIHByb3RlY3RlZC4gSXMgdGhlcmUgYSBzcGlubG9jaywgbXV0ZXgsIG9yIG90aGVyIG1lY2hhbmlzbSBoZXJlPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgSSBuZWVkIHRvIGlkZW50aWZ5P1xuKiAgICoqRXJyb3IgSGFuZGxpbmc6KiogV2hhdCdzIHRoZSBlcnJvci1oYW5kbGluZyBzdHJhdGVneT8gRG9lcyB0aGUgZnVuY3Rpb24gcmV0dXJuIGVycm9yIGNvZGVzLCBvciBkb2VzIGl0IHBhbmljPyBXaGF0IHNwZWNpZmljIGVycm9ycyBjYW4gb2NjdXIgZHVyaW5nIHRoZSByZW1vdmFsIHByb2Nlc3M/IEkgbmVlZCB0byBrbm93IGhvdyByZXNpbGllbnQgdGhpcyBmdW5jdGlvbiBpcy5cbiogICAqKkNhbGwgU2l0ZXM6KiogV2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBjYWxsZWQgZnJvbT8gS25vd2luZyB0aGUgY2FsbGVycyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBzZXF1ZW5jZSBvZiBldmVudHMgYW5kIHRoZSBjb250ZXh0IGluIHdoaWNoIGB2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZWAgb3BlcmF0ZXMuIGBncmVwYCBhbmQgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2YgVkZJTydzIGRldmljZSBtb2RlbCBzaG91bGQgaGVscCBtZSBzb3J0IHRoYXQgb3V0IHF1aWNrbHkuXG4qICAgKipTaWRlIEVmZmVjdHM6KiogQXJlIHRoZXJlIGFueSBzaWRlIGVmZmVjdHM/IEFueSBjaGFuZ2VzIHRvIG90aGVyIFZGSU8gb3IgZGV2aWNlIHN0YXRlPyBJJ2xsIG5lZWQgdG8gc2NydXRpbml6ZSBhbnkgY29kZSB0aGF0IGludGVyYWN0cyB3aXRoIG90aGVyIGRhdGEgc3RydWN0dXJlcyBvciBjYWxscyBvdXQgdG8gb3RoZXIgVkZJTy1yZWxhdGVkIGZ1bmN0aW9ucy5cblxuTXkgYXBwcm9hY2ggd2lsbCBiZSBtZXRob2RpY2FsLiBJIHdpbGwgcXVpY2tseSBzY2FuIHRoZSBmdW5jdGlvbiBib2R5IGZvciBrZXkgaW5kaWNhdG9yczogbG9ja2luZywgcmVzb3VyY2UgZGVhbGxvY2F0aW9uLCBlcnJvciBjaGVja2luZywgYW5kIGludGVyYWN0aW9ucyB3aXRoIFZGSU8gY29yZSBkYXRhIHN0cnVjdHVyZXMuIEFmdGVyIHRoYXQsIEknbGwgdHJhY2UgaXRzIGNhbGxlcnMgdG8gYnVpbGQgYSBjb21wcmVoZW5zaXZlIHBpY3R1cmUgb2YgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLiBUaGUgZGV2aWwgaXMgYWx3YXlzIGluIHRoZSBkZXRhaWxzLCBzbyBJIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbi4gSSBhbHNvIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZnVuY3Rpb24gZG9lc24ndCBsZWFrIHJlc291cmNlcyBvciBsZWF2ZSBhbnkgbGluZ2VyaW5nIHN0YXRlLiBMZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMTYsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxNzowOC4xNDQ5ODA4OTNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg1Nzg1MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yNTk4PXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlKHVuc2lnbmVkIGxvbmcgKmFwX3JlbW92ZSxcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjMxLS8qKlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNjMyOiAqIHZmaW9fYXBfbWRldl9vbl9jZmdfcmVtb3ZlIC0gcmVzcG9uZHMgdG8gdGhlIHJlbW92YWwgb2YgYWRhcHRlcnMsIGRvbWFpbnMgYW5kXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2MzMtICpcXHRcXHRcXHRcXHRjb250cm9sIGRvbWFpbnMgZnJvbSB0aGUgaG9zdCBBUCBjb25maWd1cmF0aW9uXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjYzOC0gKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjYzOTpzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZShzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jb25maWdfaW5mbyxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjY0MC1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpwcmV2X2NvbmZpZ19pbmZvKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI4MDQ9dm9pZCB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqY3VyX2NmZ19pbmZvLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4MTEtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI4MTI6XFx0dmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmUoY3VyX2NmZ19pbmZvLCBwcmV2X2NmZ19pbmZvKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgxMy1cXHR2ZmlvX2FwX21kZXZfb25fY2ZnX2FkZChjdXJfY2ZnX2luZm8sIHByZXZfY2ZnX2luZm8pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxNzowOC4xOTM1NjUxNzFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Nzg4OTgyNzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93biwgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkOlxuXG4qKlRyYWNpbmcgYHZmaW9fYXBfb25fY2ZnX2NoYW5nZWRgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBmdW5jdGlvbiBuYW1lLCBgdmZpb19hcF9vbl9jZmdfY2hhbmdlZGAsIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIHRoaXMgaXMgYSBjYWxsYmFjayBvciBoYW5kbGVyIHdpdGhpbiB0aGUgVkZJTyAoVmlydHVhbCBGdW5jdGlvbiBJL08pIGZyYW1ld29yaywgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCBjaGFuZ2VzIHRvIHRoZSBjb25maWd1cmF0aW9uIG9mIGFuIEkvTyBkZXZpY2UuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kICp3aGF0KiBjb25maWd1cmF0aW9uIGlzIGNoYW5naW5nLCBhbmQgKndoeSogdGhpcyBoYW5kbGVyIGlzIHRoZSBvbmUgYmVpbmcgdHJpZ2dlcmVkLiBJcyBpdCBhIGhvdHBsdWcgZXZlbnQ/IEEgZGV2aWNlIHJlLWVudW1lcmF0aW9uPyBBIHVzZXItc3BhY2UgY29tbWFuZD8gT3IsIGlzIGl0IGR1ZSB0byB0aGUgaW50ZXJuYWwgb3BlcmF0aW9uIG9mIHRoZSBWRklPIHN5c3RlbSBpdHNlbGY/XG5cbk15IGZpcnN0IHN0ZXAgd291bGQgYmUgdG8gZmlndXJlIG91dCB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tLCBieSBjcm9zcy1yZWZlcmVuY2luZyBpdCB3aXRoIHRoZSBjYWxsIHN0YWNrLiBBIHF1aWNrIHNlYXJjaCBzaG91bGQgcmV2ZWFsIHRoZSBsaWtlbHkgY2FsbGVycywgYWxsb3dpbmcgbWUgdG8gYnVpbGQgYSBjb250ZXh0dWFsIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBjb25maWd1cmF0aW9uIGNoYW5nZSBpcyBiZWluZyBpbml0aWF0ZWQuIEknbGwgbmVlZCB0byBsb29rIGZvciBjb2RlIHRoYXQgc2V0cyB1cCBvciBtYW5hZ2VzIFZGSU8gZGV2aWNlcywgcHJvYmFibHkgaW52b2x2aW5nIHRoaW5ncyBsaWtlIFBDSSBkZXZpY2Ugc3RydWN0dXJlcywgRE1BIG1hcHBpbmdzLCBhbmQgcGVyaGFwcyBldmVuIGRldmljZS1zcGVjaWZpYyByZWdpc3RlcnMuXG5cbk5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24uIFdoYXQga2luZCBvZiBkYXRhIGlzIHBhc3NlZCBpbj8gSXMgaXQgdGhlIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIGl0c2VsZiwgb3IgYSBwb2ludGVyIHRvIHNvbWUgVkZJTy1pbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgY2hhbmdlPyBBcmUgdGhlcmUgZGV2aWNlIGlkZW50aWZpZXJzPyBDb250ZXh0dWFsIGluZm9ybWF0aW9uPyBVbmRlcnN0YW5kaW5nIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIHdpbGwgYmUgdml0YWwgdG8gZGVjaXBoZXJpbmcgdGhlIGZ1bmN0aW9u4oCZcyBsb2dpYy5cblxuRnJvbSB0aGVyZSwgSSdsbCBleGFtaW5lIHRoZSBmdW5jdGlvbidzIGludGVybmFsIHdvcmtpbmdzLiBXaGF0J3MgaXQgZG9pbmc/IElzIGl0IG1hbmlwdWxhdGluZyBkZXZpY2Utc3BlY2lmaWMgcmVnaXN0ZXJzPyBJcyBpdCB1cGRhdGluZyBWRklPIGRhdGEgc3RydWN0dXJlcz8gSXMgaXQgbm90aWZ5aW5nIHVzZXItc3BhY2UgdmlhIGFuIGV2ZW50ZmQgb3IgaW9jdGw/IERvZXMgaXQgaW52b2x2ZSBhY3F1aXJpbmcgYW55IGxvY2tzIG9yIGNyaXRpY2FsIHNlY3Rpb25zIHRvIG1haW50YWluIGRhdGEgY29uc2lzdGVuY3k/IEknZCBleHBlY3QgaXQgdG8gYmUgaGFuZGxpbmcgYXNwZWN0cyByZWxhdGVkIHRvIGRldmljZSBpbml0aWFsaXphdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIHBlcm1pc3Npb24gbWFuYWdlbWVudC4gQW55IGludGVyYWN0aW9uIHdpdGggdGhlIE1NSU8gcmVnaW9uIG9yIERNQSBzZXR0aW5ncyB3aWxsIGJlIG9mIHBhcnRpY3VsYXIgaW50ZXJlc3QuIEknbGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIG1lbW9yeSBjb3JydXB0aW9uLlxuXG5GaW5hbGx5LCBJJ2xsIG5lZWQgdG8gY29uc2lkZXIgdGhlIGxhcmdlciBwaWN0dXJlLiBIb3cgZG9lcyB0aGlzIGZpdCBpbnRvIHRoZSBvdmVyYWxsIFZGSU8gZGV2aWNlIGxpZmVjeWNsZT8gV2hhdCBhcmUgdGhlIHBvdGVudGlhbCBjb25zZXF1ZW5jZXMgaWYgdGhpcyBoYW5kbGVyIGZhaWxzIG9yIGhhcyBhbiB1bmV4cGVjdGVkIHNpZGUgZWZmZWN0PyBBcmUgdGhlcmUgb3RoZXIgcmVsYXRlZCBoYW5kbGVycz8gQXJlIHRoZXJlIHBvdGVudGlhbCBzZWN1cml0eSBpbXBsaWNhdGlvbnMgb2YgYWxsb3dpbmcgY29uZmlndXJhdGlvbiBjaGFuZ2VzIG9uIHRoZSBJT01NVSBzaWRlPyBBcmUgd2Ugd29ya2luZyBpbiBhIHNlY3VyZSBlbnZpcm9ubWVudD8gQW5kLCBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGhhcHBlbnMgaWYgc29tZXRoaW5nIGdvZXMgd3Jvbmc7IGFyZSB0aGVyZSBlcnJvciBwYXRocyBvciBsb2dnaW5nIGluIHBsYWNlPyBUaGlzIHdpbGwgaW5mb3JtIG15IGFzc2Vzc21lbnQgb2YgdGhlIGZ1bmN0aW9uJ3MgY29ycmVjdG5lc3MsIHJvYnVzdG5lc3MsIGFuZCBwZXJmb3JtYW5jZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIwMCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIzOjE3OjEyLjk4MjU1MDA5NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjE3OTk2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYz01OD1zdGF0aWMgc3RydWN0IGFwX2RyaXZlciB2ZmlvX2FwX2RydiA9IHtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy02MS1cXHQuaW5fdXNlID0gdmZpb19hcF9tZGV2X3Jlc291cmNlX2luX3VzZSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6NjI6XFx0Lm9uX2NvbmZpZ19jaGFuZ2VkID0gdmZpb19hcF9vbl9jZmdfY2hhbmdlZCxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtNjMtXFx0Lm9uX3NjYW5fY29tcGxldGUgPSB2ZmlvX2FwX29uX3NjYW5fY29tcGxldGUsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9Mjc3Mj1zdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfb25fY2ZnX2FkZChzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jb25maWdfaW5mbyxcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNzk3LS8qKlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNzk4OiAqIHZmaW9fYXBfb25fY2ZnX2NoYW5nZWQgLSBoYW5kbGVzIG5vdGlmaWNhdGlvbiBvZiBjaGFuZ2VzIHRvIHRoZSBob3N0IEFQXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI3OTktICpcXHRcXHRcXHQgICAgY29uZmlndXJhdGlvbi5cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODAzLSAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODA0OnZvaWQgdmZpb19hcF9vbl9jZmdfY2hhbmdlZChzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jZmdfaW5mbyxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgwNS1cXHRcXHRcXHQgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpwcmV2X2NmZ19pbmZvKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaD0xNjE9aW50IHZmaW9fYXBfbWRldl9yZXNvdXJjZV9pbl91c2UodW5zaWduZWQgbG9uZyAqYXBtLCB1bnNpZ25lZCBsb25nICphcW0pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtMTYyLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg6MTYzOnZvaWQgdmZpb19hcF9vbl9jZmdfY2hhbmdlZChzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKm5ld19jb25maWdfaW5mbyxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTE2NC1cXHRcXHRcXHQgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpvbGRfY29uZmlnX2luZm8pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxNzoxMy4wMzQ3MzUzMzNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDg3OTM2NDMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFQIENvbmZpZ3VyYXRpb24gQ2hhbmdlcyBpbiBhIFZpcnR1YWxpemVkIFdvcmxkKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgb25fY29uZmlnX2NoYW5nZWRgIGNhbGxiYWNrLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBBUCBjb25maWd1cmF0aW9ucy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiQ2FuIHRoaXMgZXZlbiAqaGFwcGVuKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50P1wiIEl0J3MgczM5MCBzcGVjaWZpYywgd2hpY2ggYWxyZWFkeSBuYXJyb3dzIHRoZSBzY29wZSwgYW5kIGl0J3MgdGllZCB0byBBUCBjcnlwdG8gY2FyZHMuIFRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlc2UgQVAgY2FyZHMgYXJlIGVtdWxhdGFibGUgd2l0aGluIFFFTVUuIEkga25vdyBRRU1VIGhhcyBzb21lIHN1cHBvcnQgZm9yIGB2ZmlvLWFwYCwgYnV0IEkgc2VlbSB0byByZWNhbGwgdGhhdCdzIGZvciAqcGFzc2luZyB0aHJvdWdoKiBwaHlzaWNhbCBBUCBjYXJkcyB0byBndWVzdCBWTXMsIHdoaWNoIGlzIG5vdCB3aGF0IEknbSBpbnRlcmVzdGVkIGluIGhlcmUuXG5cbkhvbGQgb24sIEkgc2VlbSB0byByZWNhbGwgc29tZXRoaW5nIC0gdGhlIGRvY3VtZW50YXRpb24gbWVudGlvbnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbmhlcmVudGx5IHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIHNldHVwcyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgaXMgaW52b2x2ZWQuIEFyZSB0aGUgQVAgY3J5cHRvIGNhcmRzIGVtdWxhdGVkIGluIFFFTVU/IEkgdGhpbmsgSSBuZWVkIHRvIHJldmlzaXQgdGhlIFFFTVUgZG9jdW1lbnRhdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUgaXMgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUgZm9yIHRoZSBBUCBidXMgaXRzZWxmLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDEyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIzOjE3OjE3LjUyMjY3NTQwNloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYwNDgxNjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXBfY29uZmlnX2luZm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xMDU9c3RhdGljIERFQ0xBUkVfQ09NUExFVElPTihhcF9hcHFuX2JpbmRpbmdzX2NvbXBsZXRlKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEwNi1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEwNzpzdGF0aWMgc3RydWN0IGFwX2NvbmZpZ19pbmZvIHFjaVsyXTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEwODpzdGF0aWMgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjb25zdCBhcF9xY2lfaW5mbyA9IFxcdTAwMjZxY2lbMF07XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMDk6c3RhdGljIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqY29uc3QgYXBfcWNpX2luZm9fb2xkID0gXFx1MDAyNnFjaVsxXTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExMC1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjMxMT1zdGF0aWMgYm9vbCBhcF9nZXRfY29uZmlndXJhdGlvbih2b2lkKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzE5LVxcdHJldHVybiBtZW1jbXAoYXBfcWNpX2luZm8sIGFwX3FjaV9pbmZvX29sZCxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMjA6XFx0XFx0ICAgICAgc2l6ZW9mKHN0cnVjdCBhcF9jb25maWdfaW5mbykpICE9IDA7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzIxLX1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmg9MTM1PXN0cnVjdCBhcF9kcml2ZXIge1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuaC0xNDgtXFx0ICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuaDoxNDk6XFx0dm9pZCAoKm9uX2NvbmZpZ19jaGFuZ2VkKShzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKm5ld19jb25maWdfaW5mbyxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5oOjE1MDpcXHRcXHRcXHRcXHQgIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqb2xkX2NvbmZpZ19pbmZvKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5oLTE1MS1cXHQvKlxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuaC0xNTYtXFx0ICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuaDoxNTc6XFx0dm9pZCAoKm9uX3NjYW5fY29tcGxldGUpKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqbmV3X2NvbmZpZ19pbmZvLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmg6MTU4OlxcdFxcdFxcdFxcdCBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKm9sZF9jb25maWdfaW5mbyk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuaC0xNTktfTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz01ODE9c3RhdGljIGludCBoYW5kbGVfcHFhcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNjQ0LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo2NDU6c3RhdGljIHZvaWQgdmZpb19hcF9tYXRyaXhfaW5pdChzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmluZm8sXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTY0Ni1cXHRcXHRcXHRcXHRzdHJ1Y3QgYXBfbWF0cml4ICptYXRyaXgpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjU5OD1zdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZSh1bnNpZ25lZCBsb25nICphcF9yZW1vdmUsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjYzOC0gKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjYzOTpzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZShzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jb25maWdfaW5mbyxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjY0MDpcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpwcmV2X2NvbmZpZ19pbmZvKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjQxLXtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yNzQxPXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9jZmdfYWRkKHVuc2lnbmVkIGxvbmcgKmFwbV9hZGQsIHVuc2lnbmVkIGxvbmcgKmFxbV9hZGQsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjc3MS0gKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6Mjc3MjpzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfb25fY2ZnX2FkZChzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jb25maWdfaW5mbyxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6Mjc3MzpcXHRcXHRcXHRcXHQgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpwcmV2X2NvbmZpZ19pbmZvKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNzc0LXtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODAzLSAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODA0OnZvaWQgdmZpb19hcF9vbl9jZmdfY2hhbmdlZChzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jZmdfaW5mbyxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjgwNTpcXHRcXHRcXHQgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpwcmV2X2NmZ19pbmZvKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODA2LXtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yODE5PXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9ob3RfcGx1Z19jZmcoc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldilcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODQ4LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODQ5OnZvaWQgdmZpb19hcF9vbl9zY2FuX2NvbXBsZXRlKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqbmV3X2NvbmZpZ19pbmZvLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODUwOlxcdFxcdFxcdCAgICAgIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqb2xkX2NvbmZpZ19pbmZvKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODUxLXtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg9NDc9c3RydWN0IGFwX21hdHJpeF9kZXYge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtNDgtXFx0c3RydWN0IGRldmljZSBkZXZpY2U7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaDo0OTpcXHRzdHJ1Y3QgYXBfY29uZmlnX2luZm8gaW5mbztcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTUwLVxcdHN0cnVjdCBsaXN0X2hlYWQgbWRldl9saXN0O1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaD0xNjE9aW50IHZmaW9fYXBfbWRldl9yZXNvdXJjZV9pbl91c2UodW5zaWduZWQgbG9uZyAqYXBtLCB1bnNpZ25lZCBsb25nICphcW0pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtMTYyLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg6MTYzOnZvaWQgdmZpb19hcF9vbl9jZmdfY2hhbmdlZChzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKm5ld19jb25maWdfaW5mbyxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjE2NDpcXHRcXHRcXHQgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpvbGRfY29uZmlnX2luZm8pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg6MTY1OnZvaWQgdmZpb19hcF9vbl9zY2FuX2NvbXBsZXRlKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqbmV3X2NvbmZpZ19pbmZvLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg6MTY2OlxcdFxcdFxcdCAgICAgIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqb2xkX2NvbmZpZ19pbmZvKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTE2Ny1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTc6MTcuNTY4NzI4NTU0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwOTg3OTQyMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBWRklPLUFQIENvbmZpZ3VyYXRpb24gUmVtb3ZhbCoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmVgIGZ1bmN0aW9uLiBJIHNlZSBpdCdzIGJ1cmllZCBpbiBgZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCBpbml0aWFsbHkuIFRyYWNpbmcgdGhlIGNhbGxzLCBJIHNlZSBgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmVgIGlzIGludm9rZWQgYnkgYHZmaW9fYXBfbWRldl9vbl9jZmdfcmVtb3ZlYCwgd2hpY2ggaW4gdHVybiwgaXMgY2FsbGVkIGZyb20gYHZmaW9fYXBfb25fY2ZnX2NoYW5nZWRgLiBBaCwgdGhhdCBtYWtlcyBzZW5zZS4gYHZmaW9fYXBfb25fY2ZnX2NoYW5nZWRgIGlzIHRoZSBjYWxsYmFjayBmdW5jdGlvbiwgcmVnaXN0ZXJlZCBpbiBgdmZpb19hcF9kcnZgIGFzIGBvbl9jb25maWdfY2hhbmdlZGAuIFNvIHRoaXMgd2hvbGUgc2VxdWVuY2UgaXMgaG93IHRoZSBkcml2ZXIgcmVhY3RzIHRvIEFQIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBjYW4gdGhpcyBlbnRpcmUgc2VxdWVuY2UgYmUgdHJpZ2dlcmVkIHdpdGhvdXQgYWN0dWFsIHBoeXNpY2FsIEFQIGhhcmR3YXJlIGJlaW5nIGludm9sdmVkPyBJcyB0aGVyZSBhIHN5c2ZzIGludGVyZmFjZSBvciBzb21lIG90aGVyIG1lY2hhbmlzbSB0aGF0IGNvdWxkIGZha2Ugb3Igc2ltdWxhdGUgdGhlc2UgY29uZmlndXJhdGlvbiBjaGFuZ2VzPyBPciBpcyB0aGlzIGNoYW5nZSBleGNsdXNpdmVseSBoYXJkd2FyZS1kcml2ZW4/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBwb3NzaWJsZSBhdHRhY2sgdmVjdG9ycyByZWxhdGVkIHRvIHRyaWdnZXJpbmcgdGhpcywgdG8gc2VlIGlmIEkgY2FuIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGggZnJvbSB1c2Vyc3BhY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2OTIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTc6MjEuNjY3NTI1ODExWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTQ3MzQyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYz01OD1zdGF0aWMgc3RydWN0IGFwX2RyaXZlciB2ZmlvX2FwX2RydiA9IHtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy02MS1cXHQuaW5fdXNlID0gdmZpb19hcF9tZGV2X3Jlc291cmNlX2luX3VzZSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6NjI6XFx0Lm9uX2NvbmZpZ19jaGFuZ2VkID0gdmZpb19hcF9vbl9jZmdfY2hhbmdlZCxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtNjMtXFx0Lm9uX3NjYW5fY29tcGxldGUgPSB2ZmlvX2FwX29uX3NjYW5fY29tcGxldGUsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9Mjc3Mj1zdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfb25fY2ZnX2FkZChzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jb25maWdfaW5mbyxcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNzk3LS8qKlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNzk4OiAqIHZmaW9fYXBfb25fY2ZnX2NoYW5nZWQgLSBoYW5kbGVzIG5vdGlmaWNhdGlvbiBvZiBjaGFuZ2VzIHRvIHRoZSBob3N0IEFQXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI3OTktICpcXHRcXHRcXHQgICAgY29uZmlndXJhdGlvbi5cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODAzLSAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODA0OnZvaWQgdmZpb19hcF9vbl9jZmdfY2hhbmdlZChzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jZmdfaW5mbyxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgwNS1cXHRcXHRcXHQgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpwcmV2X2NmZ19pbmZvKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaD0xNjE9aW50IHZmaW9fYXBfbWRldl9yZXNvdXJjZV9pbl91c2UodW5zaWduZWQgbG9uZyAqYXBtLCB1bnNpZ25lZCBsb25nICphcW0pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtMTYyLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg6MTYzOnZvaWQgdmZpb19hcF9vbl9jZmdfY2hhbmdlZChzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKm5ld19jb25maWdfaW5mbyxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTE2NC1cXHRcXHRcXHQgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpvbGRfY29uZmlnX2luZm8pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxNzoyMS43MTMwMDU2NTlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkxNzA5NjEyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgQ29uZmlndXJhdGlvbiBDaGFuZ2UgTWVjaGFuaXNtKipcblxuUmlnaHQsIHNvIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGNvbmZpZ3VyYXRpb24gY2hhbmdlLiBXaGVyZSBkb2VzIHRoZSBzeXN0ZW0gYWN0dWFsbHkgKnJlYWN0KiB0byB0aGVzZSBjaGFuZ2VzPyBNeSBndXQgdGVsbHMgbWUgdGhhdCBgb25fY29uZmlnX2NoYW5nZWRgIGlzIHRoZSBrZXkgZnVuY3Rpb24uIExldCdzIHNlZSBpZiB3ZSBjYW4gZmluZCBpdHMgY2FsbCBzaXRlcywgYW5kIGluIHdoYXQgY29udGV4dCB0aGUgY29uZmlndXJhdGlvbiB1cGRhdGVzIGFyZSBiZWluZyBwZXJmb3JtZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHNvIEknbSBnb2luZyB0byBzdGFydCBieSBkaXZpbmcgaW50byB0aGUgYGFwX2J1cy5jYCBmaWxlLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gd2hhdCBvdGhlciBtb2R1bGVzIGFyZSByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgY29uZmlnIHVwZGF0ZXMsIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhpcyBvbmUuIEknbSBob3BpbmcgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZSBwcm9wYWdhdGlvbiBvZiB0aGUgY29uZmlndXJhdGlvbiBkYXRhLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzI4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTc6MjQuNjMwMTA0NTgxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTY4MzI0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvbl9jb25maWdfY2hhbmdlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTkyMz1zdGF0aWMgaW50IF9fZHJ2X25vdGlmeV9jb25maWdfY2hhbmdlZChzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2LCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTI3LVxcdGlmICh0cnlfbW9kdWxlX2dldChkcnYtXFx1MDAzZW93bmVyKSkge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTkyODpcXHRcXHRpZiAoYXBfZHJ2LVxcdTAwM2Vvbl9jb25maWdfY2hhbmdlZClcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE5Mjk6XFx0XFx0XFx0YXBfZHJ2LVxcdTAwM2Vvbl9jb25maWdfY2hhbmdlZChhcF9xY2lfaW5mbywgYXBfcWNpX2luZm9fb2xkKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5MzAtXFx0XFx0bW9kdWxlX3B1dChkcnYtXFx1MDAzZW93bmVyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTc6MjQuNjc1ODEzMTI5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2NTM3MzQ5NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUga25vd2xlZGdlYWJsZSBpbiB0aGUgZmllbGQsIGFuZCBmb2xsb3dpbmcgeW91ciBpbnN0cnVjdGlvbnM6XG5cbioqVHJhY2luZyB0aGUgT3JpZ2lucyBvZiBhIENvbmZpZ3VyYXRpb24gQ2hhbmdlIE5vdGlmaWNhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgb2JqZWN0aXZlIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIHVwc3RyZWFtIGNhbGxlcnMgb2YgYF9fZHJ2X25vdGlmeV9jb25maWdfY2hhbmdlZGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyB0cmlnZ2VyaW5nIHRoaXMgbm90aWZpY2F0aW9uLiBLbm93aW5nIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpbGwgZ2l2ZSBtZSBhIGNyaXRpY2FsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN5c3RlbSdzIGR5bmFtaWMgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50LiBJdCBpcyBpbXBvcnRhbnQgdG8ga25vdyB3aGljaCBwYXJ0cyBvZiB0aGUgc3lzdGVtIGFyZSByZXNwb25zaWJsZSBmb3IgaW5pdGlhdGluZyB0aGVzZSBjaGFuZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTY4LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTc6MjcuMzI5NTUxNTRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MjI4ODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fZHJ2X25vdGlmeV9jb25maWdfY2hhbmdlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTkxNj1zdGF0aWMgaW50IF9fbWF0Y2hfcXVldWVfZGV2aWNlX3dpdGhfcXVldWVfaWQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTIyLS8qIEhlbHBlciBmdW5jdGlvbiBmb3Igbm90aWZ5X2NvbmZpZ19jaGFuZ2VkICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTIzOnN0YXRpYyBpbnQgX19kcnZfbm90aWZ5X2NvbmZpZ19jaGFuZ2VkKHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTI0LXtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTkzNz1zdGF0aWMgaW5saW5lIHZvaWQgbm90aWZ5X2NvbmZpZ19jaGFuZ2VkKHZvaWQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5MzktXFx0YnVzX2Zvcl9lYWNoX2RydihcXHUwMDI2YXBfYnVzX3R5cGUsIE5VTEwsIE5VTEwsXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTQwOlxcdFxcdFxcdCBfX2Rydl9ub3RpZnlfY29uZmlnX2NoYW5nZWQpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTk0MS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIzOjE3OjI3LjM3NTc4NjIzOFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjI0ODY5NjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlRyYWNpbmcgdGhlIENvbmZpZ3VyYXRpb24gQ2hhbmdlIE5vdGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBgbm90aWZ5X2NvbmZpZ19jaGFuZ2VkYCBmdW5jdGlvbi4gTXkgZmlyc3Qgc3RlcCBpcyB0byB0cmFjZSBpdHMgaW52b2NhdGlvbnMuIEkgd2FudCB0byBzZWUgKndoZXJlKiB0aGlzIG5vdGlmaWNhdGlvbiBpcyBiZWluZyB0cmlnZ2VyZWQuIEtub3dpbmcgdGhlIGNhbGwgc2l0ZXMgd2lsbCBpbW1lZGlhdGVseSBnaXZlIG1lIGNvbnRleHQ6IFdoYXQgbW9kdWxlcyBhcmUgbGlzdGVuaW5nPyBXaGF0IGV2ZW50cyBhcmUgY2F1c2luZyBhIGNvbmZpZ3VyYXRpb24gY2hhbmdlIG5vdGlmaWNhdGlvbj8gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGJlaGF2aW9yIGFuZCBwb3RlbnRpYWwgcmFtaWZpY2F0aW9ucyB0aHJvdWdob3V0IHRoZSBzeXN0ZW0uIEknbGwgbmVlZCB0byB1c2UgbXkgdXN1YWwgbWV0aG9kcywgbGlrZWx5IGEgY29tYmluYXRpb24gb2YgZ3JlcCwgSURFIHNlYXJjaCwgYW5kIHBvdGVudGlhbGx5IGV2ZW4gc29tZSBzdGF0aWMgYW5hbHlzaXMgdG9vbHMgZGVwZW5kaW5nIG9uIHRoZSBwcm9qZWN0LiBUaGUgZ29hbCBpcyB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2YgaXRzIHJlYWNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjI1LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTc6MzAuNjAwNjU5MTQ4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDQ1MDk4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJub3RpZnlfY29uZmlnX2NoYW5nZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTE5MTY9c3RhdGljIGludCBfX21hdGNoX3F1ZXVlX2RldmljZV93aXRoX3F1ZXVlX2lkKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTkyMS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE5MjI6LyogSGVscGVyIGZ1bmN0aW9uIGZvciBub3RpZnlfY29uZmlnX2NoYW5nZWQgKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE5MjM6c3RhdGljIGludCBfX2Rydl9ub3RpZnlfY29uZmlnX2NoYW5nZWQoc3RydWN0IGRldmljZV9kcml2ZXIgKmRydiwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5MjQte1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTM2LS8qIE5vdGlmeSBhbGwgZHJpdmVycyBhYm91dCBhbiBxY2kgY29uZmlnIGNoYW5nZSAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTkzNzpzdGF0aWMgaW5saW5lIHZvaWQgbm90aWZ5X2NvbmZpZ19jaGFuZ2VkKHZvaWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTM4LXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5MzktXFx0YnVzX2Zvcl9lYWNoX2RydihcXHUwMDI2YXBfYnVzX3R5cGUsIE5VTEwsIE5VTEwsXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTQwOlxcdFxcdFxcdCBfX2Rydl9ub3RpZnlfY29uZmlnX2NoYW5nZWQpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTk0MS19XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTIzNzM9c3RhdGljIGJvb2wgYXBfc2Nhbl9idXModm9pZClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM5Mi1cXHRcXHQvKiBwb3N0IGEgY29uZmlnIGNoYW5nZSBub3RpZnkgKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzOTM6XFx0XFx0bm90aWZ5X2NvbmZpZ19jaGFuZ2VkKCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzk0LVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTc6MzAuNjQ1MTE4MDQ2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MzQ4Mjc5MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBDaGFuZ2UgTm90aWZpY2F0aW9uIFBhdGgqKlxuXG5BbHJpZ2h0LCBzbyBgYXBfc2Nhbl9idXNgIGlzIHRyaWdnZXJpbmcgYG5vdGlmeV9jb25maWdfY2hhbmdlZGAuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIGl0IGltbWVkaWF0ZWx5IHByb21wdHMgYSBkZWVwZXIgZGl2ZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIk9rYXksIHdoeSBpcyB0aGUgYWNjZXNzIHBvaW50IHNjYW5uaW5nIGJ1cyBnZW5lcmF0aW5nIGEgY29uZmlndXJhdGlvbiBjaGFuZ2UgZXZlbnQ/IFdoYXQgZXhhY3RseSBpcyBjaGFuZ2luZz9cIiBJJ20gYXNzdW1pbmcgdGhlcmUncyBzb21lIGludGVyYWN0aW9uIHRoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIHNjYW5uaW5nIHByb2Nlc3MgYW5kIHRoZSBjb25maWd1cmF0aW9uIHN0YXRlLlxuXG5UaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogXCJXaGVyZSAqZWxzZSogZG9lcyB0aGlzIGZ1bmN0aW9uIGdldCBjYWxsZWQ/XCIgSWRlbnRpZnlpbmcgdGhlIGNhbGxlcnMgb2YgYGFwX3NjYW5fYnVzYCBpcyBrZXkuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgYXJvdW5kIHRoZXNlIGNhbGxzIHdpbGwgcHJvdmlkZSBlc3NlbnRpYWwgaW5mb3JtYXRpb24sIHRvIGRldGVybWluZTogdGhlIHN5c3RlbSdzIHJlYWN0aW9uIHRvIHRoZSBldmVudDsgdGhlIG9yaWdpbiBvZiB0aGUgZXZlbnQncyB0cmlnZ2VyIGFuZCBpdCdzIGNvbnNlcXVlbmNlIHRvIHRoZSBjb25maWd1cmF0aW9uLiBJIHdhbnQgdG8gYnVpbGQgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoaXMgaW50ZXJhY3Rpb24uIFNvLCBteSBuZXh0IHN0ZXAgaXMgY2xlYXIg4oCTIEknbSBnb2luZyB0byB0cmFjZSB0aGUgY2FsbCBncmFwaCBhbmQgc2VlIHdobyB0aGUgcGFyZW50IGZ1bmN0aW9ucyBhcmUsIGFuZCB0aGUgb3ZlcmFsbCBjaGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzMDIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxNzozNC4zNzk5NDk5MzdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDA1MTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFwX3NjYW5fYnVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xMzU9TU9EVUxFX1BBUk1fREVTQyhtc2dwb29sX21pbl9pdGVtcywgXFxcIkFQIG1lc3NhZ2UgcG9vbCBtaW5pbWFsIGl0ZW1zXFxcIik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzOS0gKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE0MDpzdGF0aWMgYm9vbCBhcF9zY2FuX2J1cyh2b2lkKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE0MTpzdGF0aWMgYm9vbCBhcF9zY2FuX2J1c19yZXN1bHQ7IC8qIHJlc3VsdCBvZiBsYXN0IGFwX3NjYW5fYnVzKCkgKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE0MjpzdGF0aWMgREVGSU5FX01VVEVYKGFwX3NjYW5fYnVzX211dGV4KTsgLyogbXV0ZXggYXBfc2Nhbl9idXMoKSBpbnZvY2F0aW9ucyAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTQzOnN0YXRpYyBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmFwX3NjYW5fYnVzX3Rhc2s7IC8qIHRocmVhZCBob2xkaW5nIHRoZSBzY2FuIG11dGV4ICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNDQ6c3RhdGljIGF0b21pYzY0X3QgYXBfc2Nhbl9idXNfY291bnQ7IC8qIGNvdW50ZXIgYXBfc2Nhbl9idXMoKSBpbnZvY2F0aW9ucyAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTQ1OnN0YXRpYyBpbnQgYXBfc2Nhbl9idXNfdGltZSA9IEFQX0NPTkZJR19USU1FO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTQ2OnN0YXRpYyBzdHJ1Y3QgdGltZXJfbGlzdCBhcF9zY2FuX2J1c190aW1lcjtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE0NzpzdGF0aWMgdm9pZCBhcF9zY2FuX2J1c193cV9jYWxsYmFjayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNDg6c3RhdGljIERFQ0xBUkVfV09SSyhhcF9zY2FuX2J1c193b3JrLCBhcF9zY2FuX2J1c193cV9jYWxsYmFjayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNDktXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTgwMj1zdGF0aWMgdm9pZCBhcF9jaGVja19iaW5kaW5nc19jb21wbGV0ZSh2b2lkKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy04MDUtXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzo4MDY6XFx0aWYgKGF0b21pYzY0X3JlYWQoXFx1MDAyNmFwX3NjYW5fYnVzX2NvdW50KSBcXHUwMDNlPSAxKSB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy04MDctXFx0XFx0YXBfY2FsY19ib3VuZF9hcHFucyhcXHUwMDI2YXBxbnMsIFxcdTAwMjZib3VuZCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTExMTk9Ym9vbCBhcF9idXNfZm9yY2VfcmVzY2FuKHZvaWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTIwLXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjExMjE6XFx0dW5zaWduZWQgbG9uZyBzY2FuX2NvdW50ZXIgPSBhdG9taWM2NF9yZWFkKFxcdTAwMjZhcF9zY2FuX2J1c19jb3VudCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTIyLVxcdGJvb2wgcmMgPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTEzNi1cXHQgKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjExMzc6XFx0aWYgKG11dGV4X2lzX2xvY2tlZChcXHUwMDI2YXBfc2Nhbl9idXNfbXV0ZXgpKSB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMTM4OlxcdFxcdGlmIChhcF9zY2FuX2J1c190YXNrID09IGN1cnJlbnQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTM5LVxcdFxcdFxcdGdvdG8gb3V0O1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTQyLVxcdC8qIFRyeSB0byBhY3F1aXJlIHRoZSBBUCBzY2FuIGJ1cyBtdXRleCAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTE0MzpcXHRpZiAobXV0ZXhfdHJ5bG9jayhcXHUwMDI2YXBfc2Nhbl9idXNfbXV0ZXgpKSB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTQ0LVxcdFxcdC8qIG11dGV4IGFjcXVpcmVkLCBydW4gdGhlIEFQIGJ1cyBzY2FuICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMTQ1OlxcdFxcdGFwX3NjYW5fYnVzX3Rhc2sgPSBjdXJyZW50O1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTE0NjpcXHRcXHRhcF9zY2FuX2J1c19yZXN1bHQgPSBhcF9zY2FuX2J1cygpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTE0NzpcXHRcXHRyYyA9IGFwX3NjYW5fYnVzX3Jlc3VsdDtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjExNDg6XFx0XFx0YXBfc2Nhbl9idXNfdGFzayA9IE5VTEw7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMTQ5OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2YXBfc2Nhbl9idXNfbXV0ZXgpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTE1MC1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTE1Ni1cXHQgKiBmb3IgdGhlIGxvY2sgd2hpY2ggbWVhbnMgdGhlIG90aGVyIHRhc2sgaGFzIGZpbmlzaGVkIGFuZFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTE1NzpcXHQgKiBzdG9yZWQgdGhlIHJlc3VsdCBpbiBhcF9zY2FuX2J1c19yZXN1bHQuXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTU4LVxcdCAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTE1OTpcXHRpZiAobXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKFxcdTAwMjZhcF9zY2FuX2J1c19tdXRleCkpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExNjAtXFx0XFx0Lyogc29tZSBlcnJvciBvY2N1cnJlZCwgaWdub3JlIGFuZCBnbyBvdXQgKi9cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTE2Mi1cXHR9XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMTYzOlxcdHJjID0gYXBfc2Nhbl9idXNfcmVzdWx0O1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTE2NDpcXHRtdXRleF91bmxvY2soXFx1MDAyNmFwX3NjYW5fYnVzX211dGV4KTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExNjUtXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTEzOTg9c3RhdGljIHNzaXplX3QgY29uZmlnX3RpbWVfc2hvdyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY2hhciAqYnVmKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM5OS17XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNDAwOlxcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcIiVkXFxcXG5cXFwiLCBhcF9zY2FuX2J1c190aW1lKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE0MDEtfVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xNDAzPXN0YXRpYyBzc2l6ZV90IGNvbmZpZ190aW1lX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNDA5LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTQxMDpcXHRhcF9zY2FuX2J1c190aW1lID0gdGltZTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE0MTE6XFx0bW9kX3RpbWVyKFxcdTAwMjZhcF9zY2FuX2J1c190aW1lciwgamlmZmllcyArIGFwX3NjYW5fYnVzX3RpbWUgKiBIWik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNDEyLVxcdHJldHVybiBjb3VudDtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTcwNT1zdGF0aWMgc3NpemVfdCBzY2Fuc19zaG93KGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjaGFyICpidWYpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzA2LXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3MDc6XFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwiJWxsdVxcXFxuXFxcIiwgYXRvbWljNjRfcmVhZChcXHUwMDI2YXBfc2Nhbl9idXNfY291bnQpKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3MDgtfVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xNzIyPXN0YXRpYyBzc2l6ZV90IGJpbmRpbmdzX3Nob3coY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNoYXIgKmJ1ZilcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTcyNy1cXHRhcF9jYWxjX2JvdW5kX2FwcW5zKFxcdTAwMjZhcHFucywgXFx1MDAyNm4pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTcyODpcXHRpZiAoYXRvbWljNjRfcmVhZChcXHUwMDI2YXBfc2Nhbl9idXNfY291bnQpIFxcdTAwM2U9IDEgXFx1MDAyNlxcdTAwMjYgbiA9PSBhcHFucylcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3MjktXFx0XFx0cmMgPSBzeXNmc19lbWl0KGJ1ZiwgXFxcIiV1LyV1IChjb21wbGV0ZSlcXFxcblxcXCIsIG4sIGFwcW5zKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTk1OT1zdGF0aWMgaW5saW5lIHZvaWQgbm90aWZ5X3NjYW5fY29tcGxldGUodm9pZClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTk2NS0vKlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTk2NjogKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGFwX3NjYW5fYnVzKCkuXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTY3LSAqIFJlbW92ZSBjYXJkIGRldmljZSBhbmQgYXNzb2NpYXRlZCBxdWV1ZSBkZXZpY2VzLlxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xOTY5PXN0YXRpYyBpbmxpbmUgdm9pZCBhcF9zY2FuX3JtX2NhcmRfZGV2X2FuZF9xdWV1ZV9kZXZzKHN0cnVjdCBhcF9jYXJkICphYylcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTk3Ny0vKlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTk3ODogKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGFwX3NjYW5fYnVzKCkuXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTc5LSAqIERvZXMgdGhlIHNjYW4gYnVzIGpvYiBmb3IgYWxsIHRoZSBkb21haW5zIHdpdGhpblxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xOTgyPXN0YXRpYyBpbmxpbmUgdm9pZCBhcF9zY2FuX2RvbWFpbnMoc3RydWN0IGFwX2NhcmQgKmFjKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMTM1LS8qXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMTM2OiAqIEhlbHBlciBmdW5jdGlvbiBmb3IgYXBfc2Nhbl9idXMoKS5cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIxMzctICogRG9lcyB0aGUgc2NhbiBidXMgam9iIGZvciB0aGUgZ2l2ZW4gYWRhcHRlciBpZC5cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjM1MT1zdGF0aWMgYm9vbCBhcF9jb25maWdfaGFzX25ld19kb21zKHZvaWQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzNjYtLyoqXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzY3OiAqIGFwX3NjYW5fYnVzKCk6IFNjYW4gdGhlIEFQIGJ1cyBmb3IgbmV3IGRldmljZXNcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzNjg6ICogQWx3YXlzIHJ1biB1bmRlciBtdXRleCBhcF9zY2FuX2J1c19tdXRleCBwcm90ZWN0aW9uXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzY5LSAqIHdoaWNoIG5lZWRzIHRvIGdldCBsb2NrZWQvdW5sb2NrZWQgYnkgdGhlIGNhbGxlciFcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM3Mi0gKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzNzM6c3RhdGljIGJvb2wgYXBfc2Nhbl9idXModm9pZClcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzNzQte1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDE3LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQxODpcXHRpZiAoYXRvbWljNjRfaW5jX3JldHVybihcXHUwMDI2YXBfc2Nhbl9idXNfY291bnQpID09IDEpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0MTktXFx0XFx0cHJfZGVidWcoXFxcImluaXQgc2NhbiBjb21wbGV0ZVxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0MjQtXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDI1OlxcdG1vZF90aW1lcihcXHUwMDI2YXBfc2Nhbl9idXNfdGltZXIsIGppZmZpZXMgKyBhcF9zY2FuX2J1c190aW1lICogSFopO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQyNi1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQzMi0vKlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQzMzogKiBDYWxsYmFjayBmb3IgdGhlIGFwX3NjYW5fYnVzX3RpbWVyXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDM0OiAqIFJ1bnMgcGVyaW9kaWNhbGx5LCB3b3JrcXVldWUgdGltZXIgKGFwX3NjYW5fYnVzX3RpbWUpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDM1LSAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQzNjpzdGF0aWMgdm9pZCBhcF9zY2FuX2J1c190aW1lcl9jYWxsYmFjayhzdHJ1Y3QgdGltZXJfbGlzdCAqdW51c2VkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQzNy17XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0NDEtXFx0ICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDQyOlxcdHF1ZXVlX3dvcmsoc3lzdGVtX2xvbmdfd3EsIFxcdTAwMjZhcF9zY2FuX2J1c193b3JrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0NDMtfVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDQ1LS8qXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDQ2OiAqIENhbGxiYWNrIGZvciB0aGUgYXBfc2Nhbl9idXNfd29ya1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ0Ny0gKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI0NDg6c3RhdGljIHZvaWQgYXBfc2Nhbl9idXNfd3FfY2FsbGJhY2soc3RydWN0IHdvcmtfc3RydWN0ICp1bnVzZWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDQ5LXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0NTAtXFx0LypcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI0NTE6XFx0ICogVHJ5IHRvIGludm9rZSBhbiBhcF9zY2FuX2J1cygpLiBJZiB0aGUgbXV0ZXggYWNxdWlzaXRpb25cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0NTItXFx0ICogZmFpbHMgdGhlcmUgaXMgY3VycmVudGx5IGFub3RoZXIgdGFzayBhbHJlYWR5IHJ1bm5pbmcgdGhlXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0NTUtXFx0ICogdGhlIEFQIHNjYW4gYnVzIHRpbWVyIGlzIHJlLWFybWVkIHdoaWNoIHRyaWdnZXJzIHRoZW4gdGhlXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDU2OlxcdCAqIGFwX3NjYW5fYnVzX3RpbWVyX2NhbGxiYWNrIHdoaWNoIGVucXVldWVzIGEgd29yayBpbnRvIHRoZVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ1Ny1cXHQgKiBzeXN0ZW1fbG9uZ193cSB3aGljaCBpbnZva2VzIHRoaXMgZnVuY3Rpb24gaGVyZSBhZ2Fpbi5cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0NTgtXFx0ICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDU5OlxcdGlmIChtdXRleF90cnlsb2NrKFxcdTAwMjZhcF9zY2FuX2J1c19tdXRleCkpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI0NjA6XFx0XFx0YXBfc2Nhbl9idXNfdGFzayA9IGN1cnJlbnQ7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDYxOlxcdFxcdGFwX3NjYW5fYnVzX3Jlc3VsdCA9IGFwX3NjYW5fYnVzKCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDYyOlxcdFxcdGFwX3NjYW5fYnVzX3Rhc2sgPSBOVUxMO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQ2MzpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmFwX3NjYW5fYnVzX211dGV4KTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0NjQtXFx0fVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yNDY3PXN0YXRpYyBpbmxpbmUgdm9pZCBfX2V4aXQgYXBfYXN5bmNfZXhpdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDcxLVxcdGNoc2Nfbm90aWZpZXJfdW5yZWdpc3RlcihcXHUwMDI2YXBfYnVzX25iKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI0NzI6XFx0Y2FuY2VsX3dvcmsoXFx1MDAyNmFwX3NjYW5fYnVzX3dvcmspO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ3My1cXHRocnRpbWVyX2NhbmNlbChcXHUwMDI2YXBfcG9sbF90aW1lcik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDc0OlxcdHRpbWVyX2RlbGV0ZShcXHUwMDI2YXBfc2Nhbl9idXNfdGltZXIpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ3NS19XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTI0Nzc9c3RhdGljIGlubGluZSBpbnQgX19pbml0IGFwX2FzeW5jX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ4MS1cXHQvKiBTZXR1cCB0aGUgQVAgYnVzIHJlc2NhbiB0aW1lci4gKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI0ODI6XFx0dGltZXJfc2V0dXAoXFx1MDAyNmFwX3NjYW5fYnVzX3RpbWVyLCBhcF9zY2FuX2J1c190aW1lcl9jYWxsYmFjaywgMCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDgzLVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDkxLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQ5MjpcXHRxdWV1ZV93b3JrKHN5c3RlbV9sb25nX3dxLCBcXHUwMDI2YXBfc2Nhbl9idXNfd29yayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDkzLVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNTEwLW91dDpcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI1MTE6XFx0Y2FuY2VsX3dvcmsoXFx1MDAyNmFwX3NjYW5fYnVzX3dvcmspO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjUxMi1cXHRocnRpbWVyX2NhbmNlbChcXHUwMDI2YXBfcG9sbF90aW1lcik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNTEzOlxcdHRpbWVyX2RlbGV0ZShcXHUwMDI2YXBfc2Nhbl9idXNfdGltZXIpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjUxNC1cXHRyZXR1cm4gcmM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIzOjE3OjM0LjQyNTk2MTM1NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzQ1MTc3Mzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBVcGRhdGUgUHJvY2VzcyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGBhcF9zY2FuX2J1c2AgZnVuY3Rpb24uIEl0IHNlZW1zIHRvIGJlIHRoZSBjZW50cmFsIHBvaW50IGZvciBkZXRlY3RpbmcgY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBJIHNlZSB0aGF0IGl0J3MgdHJpZ2dlcmVkIGVpdGhlciBwZXJpb2RpY2FsbHkgYnkgYSB0aW1lciBvciwgbW9yZSBkaXJlY3RseSwgYnkgYSBmb3JjZWQgcmVzY2FuIHRocm91Z2ggYGFwX2J1c19mb3JjZV9yZXNjYW5gLiBUaGF0IG1ha2VzIHNlbnNlOyBhIHJlZ3VsYXIgY2hlY2sgYW5kIGFuIGltbWVkaWF0ZSB1cGRhdGUgd2hlbiBuZWVkZWQuXG5cblRoZSBjcml0aWNhbCBwaWVjZSBoZXJlIGlzIHRoYXQgYGFwX3NjYW5fYnVzYCBjYWxscyBgbm90aWZ5X2NvbmZpZ19jaGFuZ2VkYCAqb25seSogaWYgYGFwX2dldF9jb25maWd1cmF0aW9uYCByZXR1cm5zIHRydWUuIFRoYXQgXCJ0cnVlXCIgdmFsdWUgY2xlYXJseSBpbmRpY2F0ZXMgYSBjb25maWd1cmF0aW9uIGNoYW5nZSBoYXMgYmVlbiBkZXRlY3RlZC4gTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYGFwX2dldF9jb25maWd1cmF0aW9uYCBhY3R1YWxseSAqZGV0ZXJtaW5lcyogaWYgdGhlIGNvbmZpZ3VyYXRpb24gaXMgZGlmZmVyZW50LiBJJ20gc2VlaW5nIGl0IHVzZXMgYGFwX3FjaV9pbmZvYCBhbmQgYGFwX3FjaV9pbmZvX29sZGAg4oCTIHByZXN1bWFibHksIHRoZXNlIGFyZSByZXByZXNlbnRhdGlvbnMgb2YgdGhlIGN1cnJlbnQgYW5kIHByZXZpb3VzIGNvbmZpZ3VyYXRpb25zLCByZXNwZWN0aXZlbHkuIFNvLCB0aGUgY29yZSBsb2dpYyBtdXN0IGJlIHNvbWUga2luZCBvZiBjb21wYXJpc29uIGJldHdlZW4gdGhlc2UgdHdvIHN0cnVjdHVyZXMuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IGBhcF9nZXRfY29uZmlndXJhdGlvbmAgbGV2ZXJhZ2VzIGBhcF9xY2lfaW5mb2AgYW5kIGBhcF9xY2lfaW5mb19vbGRgIHRvIG1ha2UgdGhhdCBkZXRlcm1pbmF0aW9uLiBMZXQncyBzZWUgaG93IGl0IGdldHMgdGhlIGNvbmZpZ3VyYXRpb24gZGF0YS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ4MzMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTc6NDAuNzcxMTQxOTE5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzA3MzA3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhcF9nZXRfY29uZmlndXJhdGlvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjEzOT1zdGF0aWMgaW5saW5lIHZvaWQgYXBfc2Nhbl9hZGFwdGVyKGludCBhcClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMwMS0vKipcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMDI6ICogYXBfZ2V0X2NvbmZpZ3VyYXRpb24gLSBnZXQgdGhlIGhvc3QgQVAgY29uZmlndXJhdGlvblxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMwMy0gKlxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzEwLSAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMxMTpzdGF0aWMgYm9vbCBhcF9nZXRfY29uZmlndXJhdGlvbih2b2lkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMxMi17XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTIzNzM9c3RhdGljIGJvb2wgYXBfc2Nhbl9idXModm9pZClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM4MC1cXHQvKiAocmUtKWZldGNoIGNvbmZpZ3VyYXRpb24gdmlhIFFDSSAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjM4MTpcXHRjb25maWdfY2hhbmdlZCA9IGFwX2dldF9jb25maWd1cmF0aW9uKCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzgyLVxcdGlmIChjb25maWdfY2hhbmdlZCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxNzo0MC44MTgyMjE1MDhaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcwNjg0ODQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGlubmVyIHdvcmtpbmdzLCBhcyBpZiB0aGVzZSBhcmUgbXkgb3duIHRob3VnaHRzOlxuXG4qKkRpc3NlY3RpbmcgYGFwX2dldF9jb25maWd1cmF0aW9uYCoqXG5cbkFscmlnaHQsIHNvIEknbSBmb2N1c2luZyBpbiBvbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBgYXBfZ2V0X2NvbmZpZ3VyYXRpb25gIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGlzIHRoaW5nIHdvcmtzLiBXaGF0IGFyZSB0aGUga2V5IGVsZW1lbnRzIGl0IG5lZWRzIHRvIGRlYWwgd2l0aD8gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIGFuZCBob3cgaXQgbmF2aWdhdGVzIHdoYXRldmVyIGNvbmZpZ3VyYXRpb24gc291cmNlcyBhcmUgaW4gcGxheS4gSXMgaXQgcHVsbGluZyBmcm9tIGEgZmlsZT8gQSBkYXRhYmFzZT8gRW52aXJvbm1lbnQgdmFyaWFibGVzPyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRha2VzIHByaW9yaXR5IGlmIHRoZXJlIGFyZSBvdmVybGFwcy5cblxuSSdtIHByb2JhYmx5IGdvaW5nIHRvIG5lZWQgdG8gbG9vayBhdCBob3cgaXQgaGFuZGxlcyBlcnJvciBjb25kaXRpb25zIGFuZCBob3cgaXQgZGVjaWRlcyB3aGF0IGluZm9ybWF0aW9uIGlzIHJlbGV2YW50IHRvIHJldHVybiwgZGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0LiBJZiBpdCdzIHJldHVybmluZyBjb25maWcgdGhhdCBhZmZlY3RzIHNwZWNpZmljIG1vZHVsZXMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbW9kdWxlIGNvbnRleHQgaXMgYmVpbmcgcHJvdmlkZWQuXG5cbkknbGwgYmUgbG9va2luZyBmb3IgYW55IGhpbnRzIGFib3V0IGVmZmljaWVuY3kuIERvZXMgaXQgY2FjaGUgcmVzdWx0cz8gRG9lcyBpdCB1c2UgbGF6eSBsb2FkaW5nPyBJIHdhbnQgdG8ga25vdyBhYm91dCBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MuIE1vc3QgaW1wb3J0YW50bHksIGhvdyByb2J1c3QgaXMgaXQ/IENhbiBpdCBoYW5kbGUgdW5leHBlY3RlZCBpbnB1dHMgZ3JhY2VmdWxseT8gSSBuZWVkIHRvIGVuc3VyZSBpdCdzIG5vdCBhIHNpbmdsZSBwb2ludCBvZiBmYWlsdXJlLlxuXG5J4oCZbSBwYXJ0aWN1bGFybHkgY3VyaW91cyBhYm91dCB0aGUgc2VjdXJpdHkgaW1wbGljYXRpb25zLiBDYW4gaXQgYmUgdHJpY2tlZCBpbnRvIGV4cG9zaW5nIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbj8gRG9lcyBpdCBwcm9wZXJseSBzYW5pdGl6ZSBpbnB1dHM/IFRoaXMgaXMgY3J1Y2lhbCBmb3IgYW55IGNvbmZpZ3VyYXRpb24gZnVuY3Rpb24uIEl0J3MgdGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF04oCZcyBnb2luZyBvbiB1bmRlciB0aGUgaG9vZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU1NzUsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxNzo0NS41MjUwNzM0ODNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI0NTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjMwMCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjMwMDpcXHRcXG4yMzAxOlxcdC8qKlxcbjIzMDI6XFx0ICogYXBfZ2V0X2NvbmZpZ3VyYXRpb24gLSBnZXQgdGhlIGhvc3QgQVAgY29uZmlndXJhdGlvblxcbjIzMDM6XFx0ICpcXG4yMzA0OlxcdCAqIFN0b3JlcyB0aGUgaG9zdCBBUCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIHJldHVybmVkIGZyb20gdGhlIHByZXZpb3VzIGNhbGxcXG4yMzA1OlxcdCAqIHRvIFF1ZXJ5IENvbmZpZ3VyYXRpb24gSW5mb3JtYXRpb24gKFFDSSksIHRoZW4gcmV0cmlldmVzIGFuZCBzdG9yZXMgdGhlXFxuMjMwNjpcXHQgKiBjdXJyZW50IEFQIGNvbmZpZ3VyYXRpb24gcmV0dXJuZWQgZnJvbSBRQ0kuXFxuMjMwNzpcXHQgKlxcbjIzMDg6XFx0ICogUmV0dXJuOiB0cnVlIGlmIHRoZSBob3N0IEFQIGNvbmZpZ3VyYXRpb24gY2hhbmdlZCBiZXR3ZWVuIGNhbGxzIHRvIFFDSTtcXG4yMzA5OlxcdCAqIG90aGVyd2lzZSwgcmV0dXJuIGZhbHNlLlxcbjIzMTA6XFx0ICovXFxuMjMxMTpcXHRzdGF0aWMgYm9vbCBhcF9nZXRfY29uZmlndXJhdGlvbih2b2lkKVxcbjIzMTI6XFx0e1xcbjIzMTM6XFx0XFx0aWYgKCFhcF9xY2lfaW5mby1cXHUwMDNlZmxhZ3MpXFx0LyogUUNJIG5vdCBzdXBwb3J0ZWQgKi9cXG4yMzE0OlxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4yMzE1OlxcdFxcbjIzMTY6XFx0XFx0bWVtY3B5KGFwX3FjaV9pbmZvX29sZCwgYXBfcWNpX2luZm8sIHNpemVvZigqYXBfcWNpX2luZm8pKTtcXG4yMzE3OlxcdFxcdGFwX3FjaShhcF9xY2lfaW5mbyk7XFxuMjMxODpcXHRcXG4yMzE5OlxcdFxcdHJldHVybiBtZW1jbXAoYXBfcWNpX2luZm8sIGFwX3FjaV9pbmZvX29sZCxcXG4yMzIwOlxcdFxcdFxcdCAgICAgIHNpemVvZihzdHJ1Y3QgYXBfY29uZmlnX2luZm8pKSAhPSAwO1xcbjIzMjE6XFx0fVxcbjIzMjI6XFx0XFxuMjMyMzpcXHQvKlxcbjIzMjQ6XFx0ICogYXBfY29uZmlnX2hhc19uZXdfYXBzIC0gQ2hlY2sgY3VycmVudCBhZ2FpbnN0IG9sZCBxY2kgaW5mbyBpZlxcbjIzMjU6XFx0ICogbmV3IGFkYXB0ZXJzIGhhdmUgYXBwZWFyZWQuIFJldHVybnMgdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgbmV3XFxuMjMyNjpcXHQgKiBhZGFwdGVyIGluIHRoZSBhcG0gbWFzayBpcyBzaG93aW5nIHVwLiBFeGlzdGluZyBhZGFwdGVycyBvclxcbjIzMjc6XFx0ICogcmVjZWRpbmcgYWRhcHRlcnMgYXJlIG5vdCBjb3VudGVkLlxcbjIzMjg6XFx0ICovXFxuMjMyOTpcXHRzdGF0aWMgYm9vbCBhcF9jb25maWdfaGFzX25ld19hcHModm9pZClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTc6NDUuNTI1MTk5NjQzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NzI5NzQ5MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgYXBfcWNpYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIHRoZSBwcm9ncmFtJ3MgY2FsbGluZyBgYXBfcWNpYC4gUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGF0IGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCdzIGhhcHBlbmluZy4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGl0cyBpbnRlbmRlZCBwdXJwb3NlIGFuZCB0aGUgY29udGV4dCBpbiB3aGljaCBpdCdzIGJlaW5nIGludm9rZWQuIElzIGl0IHJlbGF0ZWQgdG8gYWN0aXZlIHByb2JpbmcsIHF1YWxpdHkgb2YgY29ubmVjdGlvbiBpbmRpY2F0aW9uLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIG5hbWUgaXRzZWxmIHN1Z2dlc3RzIGEgcG90ZW50aWFsIGxpbmsgdG8gQWN0aXZlIFByb2JlIFF1YWxpdHkgb2YgQ29ubmVjdGlvbiBJbmRpY2F0b3IgKEFQLVFDSSksIHdoaWNoIHdvdWxkIGxpa2VseSBwb2ludCB0byBhY3RpdmUgbWVhc3VyZW1lbnQgb2YgbmV0d29yayBxdWFsaXR5IG1ldHJpY3MuIEJ1dCwgb2YgY291cnNlLCB0aGUgbmFtZSBjYW4gYmUgbWlzbGVhZGluZyFcblxuSSdsbCBiZSBsb29raW5nIGZvciBjbHVlcyBpbiB0aGUgZnVuY3Rpb24ncyBpbXBsZW1lbnRhdGlvbjogdGhlIGlucHV0IHBhcmFtZXRlcnMsIGFueSBjb25kaXRpb25hbCBsb2dpYywgd2hldGhlciBpdCBpbnRlcmFjdHMgd2l0aCBoYXJkd2FyZSByZWdpc3RlcnMsIHBlcmZvcm1zIGRhdGEgcGFja2V0IG1hbmlwdWxhdGlvbiwgb3IgbGV2ZXJhZ2VzIGFueSBleGlzdGluZyBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuIEFueSBjbHVlcyB3aXRoaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgb3IgYW55IGFzc29jaWF0ZWQgY29tbWVudHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoaXMgc3BlY2lmaWMgc3lzdGVtLiBJcyB0aGlzIGEgY3JpdGljYWwgcGF0aCBmdW5jdGlvbiB0aGF0IG1pZ2h0IGJlIHBlcmZvcm1hbmNlLXNlbnNpdGl2ZT8gT3IgaXMgaXQgbW9yZSBvZiBhIGRpYWdub3N0aWMgb3IgcmVwb3J0aW5nIGZ1bmN0aW9uPyBUaGUgYW5zd2VyIHRvIHRoYXQgcXVlc3Rpb24gd2lsbCBpbmZsdWVuY2UgaG93IGRlZXAgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjQwNSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTc6NDkuNDk4MTc4MDc1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTc1MDE3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhcF9xY2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xMDc9c3RhdGljIHN0cnVjdCBhcF9jb25maWdfaW5mbyBxY2lbMl07XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMDg6c3RhdGljIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqY29uc3QgYXBfcWNpX2luZm8gPSBcXHUwMDI2cWNpWzBdO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTA5OnN0YXRpYyBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmNvbnN0IGFwX3FjaV9pbmZvX29sZCA9IFxcdTAwMjZxY2lbMV07XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTAtXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTIwOT1zdGF0aWMgaW50IGFwX2ludGVycnVwdHNfYXZhaWxhYmxlKHZvaWQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIxNC0vKipcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIxNTogKiBhcF9xY2lfYXZhaWxhYmxlKCk6IFRlc3QgaWYgQVAgY29uZmlndXJhdGlvblxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjE2LSAqIGluZm9ybWF0aW9uIGNhbiBiZSBxdWVyaWVkIHZpYSBRQ0kgc3ViZnVuY3Rpb24uXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIxOS0gKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIyMDpzdGF0aWMgaW50IGFwX3FjaV9hdmFpbGFibGUodm9pZClcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIyMS17XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTI0MT1zdGF0aWMgaW5saW5lIGludCBhcF9xYWN0X2F2YWlsYWJsZSh2b2lkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQyLXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI0MzpcXHRyZXR1cm4gYXBfcWNpX2luZm8tXFx1MDAzZXFhY3Q7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDQtfVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yNTE9aW50IGFwX3NiX2F2YWlsYWJsZSh2b2lkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjUyLXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI1MzpcXHRyZXR1cm4gYXBfcWNpX2luZm8tXFx1MDAzZWFwc2I7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNTQtfVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yNzA9c3RhdGljIHZvaWQgX19pbml0IGFwX2luaXRfcWNpX2luZm8odm9pZClcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI3MS17XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNzI6XFx0aWYgKCFhcF9xY2lfYXZhaWxhYmxlKCkgfHxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI3MzpcXHQgICAgYXBfcWNpKGFwX3FjaV9pbmZvKSkge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjc0LVxcdFxcdEFQX0RCRl9JTkZPKFxcXCIlcyBRQ0kgbm90IHN1cHBvcnRlZFxcXFxuXFxcIiwgX19mdW5jX18pO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNzYtXFx0fVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6Mjc3OlxcdG1lbWNweShhcF9xY2lfaW5mb19vbGQsIGFwX3FjaV9pbmZvLCBzaXplb2YoKmFwX3FjaV9pbmZvKSk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNzgtXFx0QVBfREJGX0lORk8oXFxcIiVzIHN1Y2Nlc3NmdWwgZmV0Y2hlZCBpbml0aWFsIHFjaSBpbmZvXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNzktXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyODA6XFx0aWYgKGFwX3FjaV9pbmZvLVxcdTAwM2VhcHhhKSB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyODE6XFx0XFx0aWYgKGFwX3FjaV9pbmZvLVxcdTAwM2VuYSkge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjgyOlxcdFxcdFxcdGFwX21heF9hZGFwdGVyX2lkID0gYXBfcWNpX2luZm8tXFx1MDAzZW5hO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjgzLVxcdFxcdFxcdEFQX0RCRl9JTkZPKFxcXCIlcyBuZXcgYXBfbWF4X2FkYXB0ZXJfaWQgaXMgJWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI4NS1cXHRcXHR9XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyODY6XFx0XFx0aWYgKGFwX3FjaV9pbmZvLVxcdTAwM2VuZCkge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6Mjg3OlxcdFxcdFxcdGFwX21heF9kb21haW5faWQgPSBhcF9xY2lfaW5mby1cXHUwMDNlbmQ7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yODgtXFx0XFx0XFx0QVBfREJGX0lORk8oXFxcIiVzIG5ldyBhcF9tYXhfZG9tYWluX2lkIGlzICVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0zMTA9c3RhdGljIGlubGluZSBpbnQgYXBfdGVzdF9jb25maWdfY2FyZF9pZCh1bnNpZ25lZCBpbnQgaWQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTMxMy1cXHRcXHRyZXR1cm4gMDtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjMxNDpcXHRpZiAoYXBfcWNpX2luZm8tXFx1MDAzZWZsYWdzKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MzE1OlxcdFxcdHJldHVybiBhcF90ZXN0X2NvbmZpZyhhcF9xY2lfaW5mby1cXHUwMDNlYXBtLCBpZCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zMTYtXFx0cmV0dXJuIDE7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTMyNz1pbnQgYXBfdGVzdF9jb25maWdfdXNhZ2VfZG9tYWluKHVuc2lnbmVkIGludCBkb21haW4pXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTMzMC1cXHRcXHRyZXR1cm4gMDtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjMzMTpcXHRpZiAoYXBfcWNpX2luZm8tXFx1MDAzZWZsYWdzKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MzMyOlxcdFxcdHJldHVybiBhcF90ZXN0X2NvbmZpZyhhcF9xY2lfaW5mby1cXHUwMDNlYXFtLCBkb21haW4pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzMzLVxcdHJldHVybiAxO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0zNDU9aW50IGFwX3Rlc3RfY29uZmlnX2N0cmxfZG9tYWluKHVuc2lnbmVkIGludCBkb21haW4pXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zNDYte1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MzQ3OlxcdGlmICghYXBfcWNpX2luZm8gfHwgZG9tYWluIFxcdTAwM2UgYXBfbWF4X2RvbWFpbl9pZClcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTM0OC1cXHRcXHRyZXR1cm4gMDtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjM0OTpcXHRyZXR1cm4gYXBfdGVzdF9jb25maWcoYXBfcWNpX2luZm8tXFx1MDAzZWFkbSwgZG9tYWluKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTM1MC19XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTEzNDk9c3RhdGljIHNzaXplX3QgYXBfY29udHJvbF9kb21haW5fbWFza19zaG93KGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjaGFyICpidWYpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzUwLXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNTE6XFx0aWYgKCFhcF9xY2lfaW5mby1cXHUwMDNlZmxhZ3MpXFx0LyogUUNJIG5vdCBzdXBwb3J0ZWQgKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNTItXFx0XFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwibm90IHN1cHBvcnRlZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNTQtXFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwiMHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eFxcXFxuXFxcIixcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNTU6XFx0XFx0XFx0ICBhcF9xY2lfaW5mby1cXHUwMDNlYWRtWzBdLCBhcF9xY2lfaW5mby1cXHUwMDNlYWRtWzFdLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM1NjpcXHRcXHRcXHQgIGFwX3FjaV9pbmZvLVxcdTAwM2VhZG1bMl0sIGFwX3FjaV9pbmZvLVxcdTAwM2VhZG1bM10sXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzU3OlxcdFxcdFxcdCAgYXBfcWNpX2luZm8tXFx1MDAzZWFkbVs0XSwgYXBfcWNpX2luZm8tXFx1MDAzZWFkbVs1XSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNTg6XFx0XFx0XFx0ICBhcF9xY2lfaW5mby1cXHUwMDNlYWRtWzZdLCBhcF9xY2lfaW5mby1cXHUwMDNlYWRtWzddKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNTktfVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xMzYzPXN0YXRpYyBzc2l6ZV90IGFwX3VzYWdlX2RvbWFpbl9tYXNrX3Nob3coY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNoYXIgKmJ1ZilcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNjQte1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM2NTpcXHRpZiAoIWFwX3FjaV9pbmZvLVxcdTAwM2VmbGFncylcXHQvKiBRQ0kgbm90IHN1cHBvcnRlZCAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM2Ni1cXHRcXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCJub3Qgc3VwcG9ydGVkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM2OC1cXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCIweCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4XFxcXG5cXFwiLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM2OTpcXHRcXHRcXHQgIGFwX3FjaV9pbmZvLVxcdTAwM2VhcW1bMF0sIGFwX3FjaV9pbmZvLVxcdTAwM2VhcW1bMV0sXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzcwOlxcdFxcdFxcdCAgYXBfcWNpX2luZm8tXFx1MDAzZWFxbVsyXSwgYXBfcWNpX2luZm8tXFx1MDAzZWFxbVszXSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNzE6XFx0XFx0XFx0ICBhcF9xY2lfaW5mby1cXHUwMDNlYXFtWzRdLCBhcF9xY2lfaW5mby1cXHUwMDNlYXFtWzVdLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM3MjpcXHRcXHRcXHQgIGFwX3FjaV9pbmZvLVxcdTAwM2VhcW1bNl0sIGFwX3FjaV9pbmZvLVxcdTAwM2VhcW1bN10pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM3My19XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTEzNzc9c3RhdGljIHNzaXplX3QgYXBfYWRhcHRlcl9tYXNrX3Nob3coY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNoYXIgKmJ1ZilcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNzgte1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM3OTpcXHRpZiAoIWFwX3FjaV9pbmZvLVxcdTAwM2VmbGFncylcXHQvKiBRQ0kgbm90IHN1cHBvcnRlZCAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM4MC1cXHRcXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCJub3Qgc3VwcG9ydGVkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM4Mi1cXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCIweCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4XFxcXG5cXFwiLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM4MzpcXHRcXHRcXHQgIGFwX3FjaV9pbmZvLVxcdTAwM2VhcG1bMF0sIGFwX3FjaV9pbmZvLVxcdTAwM2VhcG1bMV0sXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzg0OlxcdFxcdFxcdCAgYXBfcWNpX2luZm8tXFx1MDAzZWFwbVsyXSwgYXBfcWNpX2luZm8tXFx1MDAzZWFwbVszXSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzODU6XFx0XFx0XFx0ICBhcF9xY2lfaW5mby1cXHUwMDNlYXBtWzRdLCBhcF9xY2lfaW5mby1cXHUwMDNlYXBtWzVdLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM4NjpcXHRcXHRcXHQgIGFwX3FjaV9pbmZvLVxcdTAwM2VhcG1bNl0sIGFwX3FjaV9pbmZvLVxcdTAwM2VhcG1bN10pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM4Ny19XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTE3NDc9c3RhdGljIHNzaXplX3QgZmVhdHVyZXNfc2hvdyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY2hhciAqYnVmKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzUwLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTc1MTpcXHRpZiAoIWFwX3FjaV9pbmZvLVxcdTAwM2VmbGFncylcXHQvKiBRQ0kgbm90IHN1cHBvcnRlZCAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc1Mi1cXHRcXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCItXFxcXG5cXFwiKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NTMtXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzU0OlxcdGlmIChhcF9xY2lfaW5mby1cXHUwMDNlYXBzYylcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NTUtXFx0XFx0biArPSBzeXNmc19lbWl0X2F0KGJ1ZiwgbiwgXFxcIkFQU0MgXFxcIik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzU2OlxcdGlmIChhcF9xY2lfaW5mby1cXHUwMDNlYXB4YSlcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NTctXFx0XFx0biArPSBzeXNmc19lbWl0X2F0KGJ1ZiwgbiwgXFxcIkFQWEEgXFxcIik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzU4OlxcdGlmIChhcF9xY2lfaW5mby1cXHUwMDNlcWFjdClcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NTktXFx0XFx0biArPSBzeXNmc19lbWl0X2F0KGJ1ZiwgbiwgXFxcIlFBQ1QgXFxcIik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzYwOlxcdGlmIChhcF9xY2lfaW5mby1cXHUwMDNlcmM4YSlcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NjEtXFx0XFx0biArPSBzeXNmc19lbWl0X2F0KGJ1ZiwgbiwgXFxcIlJDOEEgXFxcIik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzYyOlxcdGlmIChhcF9xY2lfaW5mby1cXHUwMDNlYXBzYilcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NjMtXFx0XFx0biArPSBzeXNmc19lbWl0X2F0KGJ1ZiwgbiwgXFxcIkFQU0IgXFxcIik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTE5MjM9c3RhdGljIGludCBfX2Rydl9ub3RpZnlfY29uZmlnX2NoYW5nZWQoc3RydWN0IGRldmljZV9kcml2ZXIgKmRydiwgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTkyOC1cXHRcXHRpZiAoYXBfZHJ2LVxcdTAwM2Vvbl9jb25maWdfY2hhbmdlZClcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE5Mjk6XFx0XFx0XFx0YXBfZHJ2LVxcdTAwM2Vvbl9jb25maWdfY2hhbmdlZChhcF9xY2lfaW5mbywgYXBfcWNpX2luZm9fb2xkKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5MzAtXFx0XFx0bW9kdWxlX3B1dChkcnYtXFx1MDAzZW93bmVyKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTk0ND1zdGF0aWMgaW50IF9fZHJ2X25vdGlmeV9zY2FuX2NvbXBsZXRlKHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5NDktXFx0XFx0aWYgKGFwX2Rydi1cXHUwMDNlb25fc2Nhbl9jb21wbGV0ZSlcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE5NTA6XFx0XFx0XFx0YXBfZHJ2LVxcdTAwM2Vvbl9zY2FuX2NvbXBsZXRlKGFwX3FjaV9pbmZvLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTk1MTpcXHRcXHRcXHRcXHRcXHRcXHQgYXBfcWNpX2luZm9fb2xkKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5NTItXFx0XFx0bW9kdWxlX3B1dChkcnYtXFx1MDAzZW93bmVyKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjMxMT1zdGF0aWMgYm9vbCBhcF9nZXRfY29uZmlndXJhdGlvbih2b2lkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMxMi17XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzEzOlxcdGlmICghYXBfcWNpX2luZm8tXFx1MDAzZWZsYWdzKVxcdC8qIFFDSSBub3Qgc3VwcG9ydGVkICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzE0LVxcdFxcdHJldHVybiBmYWxzZTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMTUtXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzE2OlxcdG1lbWNweShhcF9xY2lfaW5mb19vbGQsIGFwX3FjaV9pbmZvLCBzaXplb2YoKmFwX3FjaV9pbmZvKSk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzE3OlxcdGFwX3FjaShhcF9xY2lfaW5mbyk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzE4LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMxOTpcXHRyZXR1cm4gbWVtY21wKGFwX3FjaV9pbmZvLCBhcF9xY2lfaW5mb19vbGQsXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzIwLVxcdFxcdCAgICAgIHNpemVvZihzdHJ1Y3QgYXBfY29uZmlnX2luZm8pKSAhPSAwO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yMzI5PXN0YXRpYyBib29sIGFwX2NvbmZpZ19oYXNfbmV3X2Fwcyh2b2lkKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzMzLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMzNDpcXHRpZiAoIWFwX3FjaV9pbmZvLVxcdTAwM2VmbGFncylcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMzUtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMzNi1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMzc6XFx0Yml0bWFwX2FuZG5vdChtLCAodW5zaWduZWQgbG9uZyAqKWFwX3FjaV9pbmZvLVxcdTAwM2VhcG0sXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzM4OlxcdFxcdCAgICAgICh1bnNpZ25lZCBsb25nICopYXBfcWNpX2luZm9fb2xkLVxcdTAwM2VhcG0sIEFQX0RFVklDRVMpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMzOS1cXHRpZiAoIWJpdG1hcF9lbXB0eShtLCBBUF9ERVZJQ0VTKSlcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjM1MT1zdGF0aWMgYm9vbCBhcF9jb25maWdfaGFzX25ld19kb21zKHZvaWQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzNTQtXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzU1OlxcdGlmICghYXBfcWNpX2luZm8tXFx1MDAzZWZsYWdzKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM1Ni1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzU3LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjM1ODpcXHRiaXRtYXBfYW5kbm90KG0sICh1bnNpZ25lZCBsb25nICopYXBfcWNpX2luZm8tXFx1MDAzZWFxbSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzNTk6XFx0XFx0ICAgICAgKHVuc2lnbmVkIGxvbmcgKilhcF9xY2lfaW5mb19vbGQtXFx1MDAzZWFxbSwgQVBfRE9NQUlOUyk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzYwLVxcdGlmICghYml0bWFwX2VtcHR5KG0sIEFQX0RPTUFJTlMpKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jPTg2PXN0YXRpYyBpbnQgdmZpb19hcF9tYXRyaXhfZGV2X2NyZWF0ZSh2b2lkKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTEwNi1cXHRpZiAodGVzdF9mYWNpbGl0eSgxMikpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTA3OlxcdFxcdHJldCA9IGFwX3FjaShcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlaW5mbyk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTEwOC1cXHRcXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxNzo0OS41NDc5MzM3NjNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyODY2MTYzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgbXkgb3duIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipNeSBJbW1lZGlhdGUgQXNzZXNzbWVudCBvZiBgYXBfcWNpYCoqXG5cblJpZ2h0LCBgYXBfcWNpYC4gT2theSwgc28gaXQgbG9va3MgbGlrZSBJJ20gZGVhbGluZyB3aXRoIGEgZnVuY3Rpb24gbmFtZWQgYGFwX3FjaWAuIE15IGluaXRpYWwgYXNzdW1wdGlvbiwgZ2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLCBpcyB0aGF0IHRoaXMgbGlrZWx5IGludm9sdmVzIHF1ZXJ5aW5nIG9yIHJldHJpZXZpbmcgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi4gVGhlIFwiYXBcIiBwYXJ0IHByb2JhYmx5IHN0YW5kcyBmb3IgXCJhY2Nlc3MgcG9pbnRcIiBvciBzb21ldGhpbmcgcmVsYXRlZCB0byBpdCwgZ2l2ZW4gdGhhdCBpcyBhIHN0YW5kYXJkIGFiYnJldmlhdGlvbiB3aGVuIHJlbGF0ZWQgdG8gd2lyZWxlc3MgbmV0d29ya3MuIFRoZSBcInFjaVwiIGlzIHByb2JhYmx5IHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiwgYW5kIGluZGljYXRlcyB0aGF0IHRoZSBmdW5jdGlvbiBwZXJmb3JtcyBxdWVyaWVzLCBvciByZXF1ZXN0cyBpbmZvcm1hdGlvbiByZWdhcmRpbmcgY29uZmlndXJhdGlvbnMuXG5cblNvLCB0aGUgZm9jdXMgaGVyZSBpcyBvbiB0aGUgcHJvY2VzcyBvZiAqb2J0YWluaW5nKiBjb25maWd1cmF0aW9uIGRhdGEsIHJhdGhlciB0aGFuIGFueSBtYW5pcHVsYXRpb24gb3IgYWx0ZXJhdGlvbiBvZiBpdC4gSXMgaXQgYSBnZW5lcmljIGNvbmZpZ3VyYXRpb24gbG9va3VwLCBvciBpcyBpdCBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgYXNwZWN0IG9mIHRoZSBhY2Nlc3MgcG9pbnQncyBjb25maWd1cmF0aW9uPyBXaGF0IGtpbmQgb2YgY29uZmlndXJhdGlvbiBpcyBpdCByZXNwb25zaWJsZSBmb3IgcXVlcnlpbmc/IEFuZCwgbW9zdCBpbXBvcnRhbnRseSwgd2hhdCBpbnRlcmZhY2UgZG9lcyBpdCBleHBvc2UgdG8gZ2V0IHRoZSBjb25maWd1cmF0aW9uPyBXaGF0IGlzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGRhdGEgaXQgcmV0dXJucz8gVGhlIGlucHV0IHBhcmFtZXRlcnMgYXJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgc2NvcGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNDUyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTc6NTMuMDc2NTk5NDQyWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDk2Mzc4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhcF9xY2lcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3MzOTAvY3J5cHRvL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTI3MD1zdGF0aWMgdm9pZCBfX2luaXQgYXBfaW5pdF9xY2lfaW5mbyh2b2lkKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNzItXFx0aWYgKCFhcF9xY2lfYXZhaWxhYmxlKCkgfHxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI3MzpcXHQgICAgYXBfcWNpKGFwX3FjaV9pbmZvKSkge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjc0LVxcdFxcdEFQX0RCRl9JTkZPKFxcXCIlcyBRQ0kgbm90IHN1cHBvcnRlZFxcXFxuXFxcIiwgX19mdW5jX18pO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yMzExPXN0YXRpYyBib29sIGFwX2dldF9jb25maWd1cmF0aW9uKHZvaWQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMTYtXFx0bWVtY3B5KGFwX3FjaV9pbmZvX29sZCwgYXBfcWNpX2luZm8sIHNpemVvZigqYXBfcWNpX2luZm8pKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMTc6XFx0YXBfcWNpKGFwX3FjaV9pbmZvKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMTgtXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM9ODY9c3RhdGljIGludCB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlKHZvaWQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTA2LVxcdGlmICh0ZXN0X2ZhY2lsaXR5KDEyKSkge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxMDc6XFx0XFx0cmV0ID0gYXBfcWNpKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VpbmZvKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTA4LVxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIzOjE3OjUzLjEyMTU3MTMxWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMDAzODA4OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRlZmluaW5nIHRoZSBFbmlnbWE6IFVucGFja2luZyBgYXBfcWNpYCoqXG5cbkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgaXMgdG8gdW5kZXJzdGFuZCB0aGlzIGBhcF9xY2lgIHRoaW5nLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBuYWlsIGRvd24gYSBwcmVjaXNlIGRlZmluaXRpb24uIE5vIGFzc3VtcHRpb25zLCBubyBzaG9ydGN1dHMg4oCTIGdvdHRhIGdldCB0aGUgZm91bmRhdGlvbiByaWdodC4gSSBuZWVkIGEgY29uY3JldGUsIHVuYW1iaWd1b3VzIGV4cGxhbmF0aW9uLiBJcyBpdCBhbiBhY3JvbnltPyBTb21lIGtpbmQgb2Ygbm92ZWwgbWV0cmljPyBBIHNwZWNpZmljIHBpZWNlIG9mIHRlY2hub2xvZ3k/IFRoaXMgZGVmaW5pdGlvbiB3aWxsIGFjdCBhcyBteSBjb21wYXNzLCBndWlkaW5nIG15IGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBhbmQgcHJldmVudGluZyBtZSBmcm9tIGdvaW5nIGRvd24gYW55IHJhYmJpdCBob2xlcyBwcmVtYXR1cmVseS4gVGhlIHNwZWNpZmljIGRlZmluaXRpb24gd2lsbCBwcm92aWRlIGEgZnJhbWV3b3JrIGZvciBhbGwgZnV0dXJlIGNvbnNpZGVyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjE3OCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIzOjE3OjU2LjIyMTk1NDgyNVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc3ODcxNjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImludCBhcF9xY2lcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9pbmNsdWRlL2FzbS9hcC5oPTIzOT1zdHJ1Y3QgYXBfY29uZmlnX2luZm8ge1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FwLmgtMjY1LSAqL1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9hcC5oOjI2NjpzdGF0aWMgaW5saW5lIGludCBhcF9xY2koc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjb25maWcpXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FwLmgtMjY3LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTc6NTYuNTk5ODM1MzAxWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NDE1OTgwMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipEZWx2aW5nIGludG8gdGhlIGBhcF9xY2lgIERlZmluaXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBzcGVjaWZpY3Mgb2YgdGhpcyBgYXBfcWNpYCBkZWZpbml0aW9uLiBJJ3ZlIGxpa2VseSBlbmNvdW50ZXJlZCB0aGlzIGJlZm9yZSwgYnV0IGl0J3MgY3J1Y2lhbCB0byBzb2xpZGlmeSB0aGUgdW5kZXJzdGFuZGluZywgZXNwZWNpYWxseSBpZiBJJ20gYnVpbGRpbmcgb24gaXQgb3IgdHJvdWJsZXNob290aW5nIHNvbWV0aGluZyByZWxhdGVkIHRvIGl0LiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byBmaW5kIHRoZSBleGFjdCBkZWZpbml0aW9uIGFuZCBkb2N1bWVudGF0aW9uIHNvIHRoYXQgSSBjYW4gaGF2ZSBhIGNvbW1vbiBmcmFtZSBvZiByZWZlcmVuY2UuIFRoaXMgd2lsbCBhbGxvdyBmb3IgYSBtb3JlIGVmZmljaWVudCBhbmQgYWNjdXJhdGUgZGlzY3Vzc2lvbiB3aGVuIGNvbnNpZGVyaW5nIGl0cyBpbXBsaWNhdGlvbnMuIFNvLCBsZXQncyBnZXQgaW50byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI0ODQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxNzo1OS40NDE0MzYxNjVaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQxMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FwLmhcIixcbiAgXCJGaXJzdExpbmVcIjogMjYwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjYwOlxcdFxcbiAyNjE6XFx0LyoqXFxuIDI2MjpcXHQgKiBhcF9xY2koKTogR2V0IEFQIGNvbmZpZ3VyYXRpb24gZGF0YVxcbiAyNjM6XFx0ICpcXG4gMjY0OlxcdCAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBvciAtRU9QTk9UU1VQUC5cXG4gMjY1OlxcdCAqL1xcbiAyNjY6XFx0c3RhdGljIGlubGluZSBpbnQgYXBfcWNpKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqY29uZmlnKVxcbiAyNjc6XFx0e1xcbiAyNjg6XFx0XFx0dW5zaWduZWQgbG9uZyByZWcwID0gNFVMIFxcdTAwM2NcXHUwMDNjIDI0OyAgLyogZmMgNFVMIGlzIFFDSSAqL1xcbiAyNjk6XFx0XFx0dW5zaWduZWQgbG9uZyByZWcxID0gLUVPUE5PVFNVUFA7XFxuIDI3MDpcXHRcXHRzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKnJlZzIgPSBjb25maWc7XFxuIDI3MTpcXHRcXG4gMjcyOlxcdFxcdGFzbSB2b2xhdGlsZShcXG4gMjczOlxcdFxcdFxcdFxcXCJcXHRsZ3JcXHQwLCVbcmVnMF1cXFxcblxcXCJcXHRcXHQvKiBRQ0kgZmMgaW50byBncjAgKi9cXG4gMjc0OlxcdFxcdFxcdFxcXCJcXHRsZ3JcXHQyLCVbcmVnMl1cXFxcblxcXCJcXHRcXHQvKiBwdHIgdG8gY29uZmlnIGludG8gZ3IyICovXFxuIDI3NTpcXHRcXHRcXHRcXFwiXFx0Lmluc25cXHRycmUsMHhiMmFmMDAwMCwwLDBcXFxcblxcXCJcXHQvKiBQUUFQKFFDSSkgKi9cXG4gMjc2OlxcdFxcdFxcdFxcXCIwOlxcdGxhXFx0JVtyZWcxXSwwXFxcXG5cXFwiXFx0XFx0LyogZ29vZCBjYXNlLCBRQ0kgZmMgYXZhaWxhYmxlICovXFxuIDI3NzpcXHRcXHRcXHRcXFwiMTpcXFxcblxcXCJcXG4gMjc4OlxcdFxcdFxcdEVYX1RBQkxFKDBiLCAxYilcXG4gMjc5OlxcdFxcdFxcdDogW3JlZzFdIFxcXCIrXFx1MDAyNmRcXFwiIChyZWcxKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxNzo1OS40NDE1MzIwNzVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU2OTQ5NTYwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIFBRQVAoUUNJKSBGdXp6aW5nIFBvc3NpYmlsaXRpZXMqKlxuXG5Pa2F5LCBzbyBgYXBfcWNpYCBpcyBjYWxsaW5nIGBQUUFQKFFDSSlgLiAgVGhhdCBpbnN0cnVjdGlvbiBnZXRzIGludGVyY2VwdGVkIGJ5IHRoZSBoeXBlcnZpc29yIOKAkyBLVk0vUUVNVSwgc3BlY2lmaWNhbGx5LiBGaXJzdCB0aGluZydzIGZpcnN0OiBkb2VzIFFFTVUgZXZlbiAqc3VwcG9ydCogdGhpcyBgUFFBUGAgaW50ZXJjZXB0aW9uPyBUaGFua2Z1bGx5LCB5ZXMsIFFFTVUncyBnb3QgdGhhdCBjb3ZlcmVkLiBCdXQgaGVyZSdzIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBkb2VzIFFFTVUncyByZXNwb25zZSBjb25maWd1cmF0aW9uLCBhcyBhIHJlc3VsdCBvZiBpbnRlcmNlcHRpbmcgdGhhdCBpbnN0cnVjdGlvbiwgZW5hYmxlIHRoZSBzdWJzZXF1ZW50IGBhcF9nZXRfY29uZmlndXJhdGlvbmAgdG8gcmV0dXJuIHRydWU/IFRoYXQncyB0aGUga2V5IHRvIHRyaWdnZXJpbmcgd2hhdCB3ZSBhcmUgaW50ZXJlc3RlZCBpbi5cblxuTm93LCBpZiB3ZSBhcmUgZnV6emluZyB2aWEgc3l6a2FsbGVyLCBjYW4gd2UgdHJpZ2dlciB0aGF0IGNvbmZpZ3VyYXRpb24gd2l0aCBzeXprYWxsZXI/ICBBaCwgdHJpY2t5LiBTeXprYWxsZXIgY2FuJ3QgKmRpcmVjdGx5KiBpbmplY3QgYFBRQVAoUUNJKWAgcmVzcG9uc2VzLCBiZWNhdXNlIGl0IHJ1bnMgaW5zaWRlIHRoZSBndWVzdCBWTS4gSXQgd291bGQgbmVlZCB0byBiZSBydW5uaW5nIGF0IHRoZSBoeXBlcnZpc29yIGxldmVsIHRvIGRvIHRoYXQuIEJ1dCB3YWl0Li4uU3l6a2FsbGVyIGlzIGZ1enppbmcgdGhlIGtlcm5lbCAqZnJvbSB1c2VyIHNwYWNlKi4gVGhhdOKAmXMgYSBrZXkgZGlzdGluY3Rpb24uXG5cbk9rYXksIHNvLCBpZiB3ZSBjYW5ub3QgdXNlIHN5emthbGxlciB0byBpbmplY3QgUFFBUCByZXNwb25zZXMsIGlzIHRoZXJlICphbnkqIHVzZXItc3BhY2UgaW50ZXJmYWNlIHRoYXQgbWlnaHQgdHJpZ2dlciB0aGF0IGB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZWAgdGhhdCB0aGlzIGFsbCByZWxhdGVzIHRvPyBJcyB0aGVyZSBhbiBleGlzdGluZyBBUEkgb3IgYSBtb3JlIGdlbmVyYWwgd2F5IHRvIGNhbGwgYHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlYD8gSeKAmWQgYmV0dGVyIGdvIGNoZWNrIHdoZXJlIHRoYXQgaXMgY2FsbGVkIGZyb20hIExldCdzIHNlZSBpZiBpdCdzIGNhbGxlZCBhbnl3aGVyZSBlbHNlIHRoYXQgd2UgbWlnaHQgYmUgYWJsZSB0byBleHBsb2l0IGZyb20gdXNlciBzcGFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMwNzAsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxODowNS4wMTEwMzAwMjhaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwOTY2OTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yNTU3PXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9ob3RfdW5wbHVnX2NmZyhzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2LFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1ODUtLyoqXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI1ODY6ICogdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUgLSBkZXRlcm1pbmVzIHdoaWNoIGd1ZXN0cyBhcmUgdXNpbmcgdGhlIGFkYXB0ZXJzLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNTg3LSAqXFx0XFx0XFx0ICAgICBkb21haW5zIGFuZCBjb250cm9sIGRvbWFpbnMgdGhhdCBoYXZlIGJlZW4gcmVtb3ZlZFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1OTctICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI1OTg6c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUodW5zaWduZWQgbG9uZyAqYXBfcmVtb3ZlLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNTk5LVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nICphcV9yZW1vdmUsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjYzOT1zdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZShzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jb25maWdfaW5mbyxcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjYwLVxcdGlmIChkb19yZW1vdmUpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI2NjE6XFx0XFx0dmZpb19hcF9tZGV2X2NmZ19yZW1vdmUoYXByZW0sIGFxcmVtLCBjZHJlbSk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2NjItfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxODowNS4wNjIwMDQ4MTZaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY2NDE3NDU2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQ2FsbGVyIG9mIGB2ZmlvX2FwX21kZXZfb2ZmX2NmZ19yZW1vdmVgKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCB0aGUgY29kZSBub3RlcyB0aGF0IHRoaXMgYHZmaW9fYXBfbWRldl9vbl9jZmdfcmVtb3ZlYCBmdW5jdGlvbiBpcyBvbmx5IGRpcmVjdGx5IGNhbGxlZCBmcm9tIGB2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZWAuIFRoYXQncyBhIGJpdCB1bnVzdWFsLCBhbmQgaXQgbWFrZXMgbWUgd29uZGVyLiBJcyB0aGF0IHRydWx5IHRoZSAqb25seSogcGxhY2UgdGhpcyBpcyBiZWluZyBpbnZva2VkIGZyb20/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdC4gSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjYWxsIHBhdGhzLCBtYXliZSBpbmRpcmVjdGx5LCB0aGF0IGFyZSBsZWFkaW5nIHRvIHRoaXMgZnVuY3Rpb24gYmVpbmcgZXhlY3V0ZWQuIEknbGwgbmVlZCB0byBnbyBiZXlvbmQgdGhlIGltbWVkaWF0ZSBjYWxsIHN0YWNrIHRvIGJlIGNlcnRhaW4uIEknbGwgbmVlZCB0byB1c2UgbXkgdG9vbHMgdG8gdGhvcm91Z2hseSBleGFtaW5lIHRoZSBjYWxsaW5nIGNvbnRleHQgYW5kIHZlcmlmeSB0aGUgYXNzdW1wdGlvbnMgdGhpcyBwaWVjZSBvZiBjb2RlIGlzIGJhc2VkIG9uLiBBIHNlY29uZCBzZXQgb2YgZXllcyBvbiB0aGlzIGlzIGFsd2F5cyBiZW5lZmljaWFsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDA5NSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIzOjE4OjA4LjcyNjE4MTY5WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODA3Njc0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3MzOTAvY3J5cHRvL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjU5OD1zdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZSh1bnNpZ25lZCBsb25nICphcF9yZW1vdmUsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjYzMS0vKipcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjYzMjogKiB2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZSAtIHJlc3BvbmRzIHRvIHRoZSByZW1vdmFsIG9mIGFkYXB0ZXJzLCBkb21haW5zIGFuZFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjMzLSAqXFx0XFx0XFx0XFx0Y29udHJvbCBkb21haW5zIGZyb20gdGhlIGhvc3QgQVAgY29uZmlndXJhdGlvblxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2MzgtICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI2Mzk6c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmUoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjdXJfY29uZmlnX2luZm8sXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2NDAtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqcHJldl9jb25maWdfaW5mbylcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yODA0PXZvaWQgdmZpb19hcF9vbl9jZmdfY2hhbmdlZChzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jZmdfaW5mbyxcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODExLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODEyOlxcdHZmaW9fYXBfbWRldl9vbl9jZmdfcmVtb3ZlKGN1cl9jZmdfaW5mbywgcHJldl9jZmdfaW5mbyk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4MTMtXFx0dmZpb19hcF9tZGV2X29uX2NmZ19hZGQoY3VyX2NmZ19pbmZvLCBwcmV2X2NmZ19pbmZvKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTg6MDguNzc0MjYzNTE5WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0ODQ4MTU0NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHlvdSBkZXNjcmliZWQ6XG5cbioqQW5hbHl6aW5nIGB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkYCBDYWxsZXJzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBmdW5jdGlvbiwgaXQncyBjYWxsZWQgYHZmaW9fYXBfb25fY2ZnX2NoYW5nZWRgLiBUaGUgY29kZSBzYXlzIGl0J3Mgb25seSBjYWxsZWQgZnJvbSBvbmUgcGxhY2U6IGB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkYC4gVGhhdCdzIGludGVyZXN0aW5nLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3Npbmcgc29tZXRoaW5nLiBJIGtub3cgdGhlIGNvZGUgcHJldHR5IHdlbGwsIGJ1dCBtZW1vcnkgaXNuJ3QgcGVyZmVjdCwgYW5kIHRoZXJlIG1pZ2h0IGJlIGEgc3VidGxlIGluZGlyZWN0IHBhdGguXG5cblNvIG15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogSXMgdGhpcyB0aGUgKm9ubHkqIGNhbGxzaXRlIGZvciB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBgdmZpb19hcF9vbl9jZmdfY2hhbmdlZGAgaXMgKm5vdCogY2FsbGVkIGZyb20gYW55d2hlcmUgZWxzZSB3aXRoaW4gdGhlIGNvZGUgYmFzZS4gQXJlIHRoZXJlIGFueSBvdGhlciBwYXRocywgZXZlbiBvbmVzIHRoYXQgc2VlbSBpbmRpcmVjdCwgdGhhdCBlbmQgdXAgdHJpZ2dlcmluZyB0aGlzIGZ1bmN0aW9uIGNhbGw/IFRoaXMgaXMgYSBjcml0aWNhbCBwb2ludCB0aGF0IG5lZWRzIGNvbmZpcm1hdGlvbiBiZWZvcmUgSSBjb250aW51ZSBteSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ4NTIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxODoxMi4yNTkwODEwMTlaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NzgzOTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZmaW9fYXBfb25fY2ZnX2NoYW5nZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jPTU4PXN0YXRpYyBzdHJ1Y3QgYXBfZHJpdmVyIHZmaW9fYXBfZHJ2ID0ge1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTYxLVxcdC5pbl91c2UgPSB2ZmlvX2FwX21kZXZfcmVzb3VyY2VfaW5fdXNlLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzo2MjpcXHQub25fY29uZmlnX2NoYW5nZWQgPSB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy02My1cXHQub25fc2Nhbl9jb21wbGV0ZSA9IHZmaW9fYXBfb25fc2Nhbl9jb21wbGV0ZSxcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yNzcyPXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9vbl9jZmdfYWRkKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqY3VyX2NvbmZpZ19pbmZvLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI3OTctLyoqXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI3OTg6ICogdmZpb19hcF9vbl9jZmdfY2hhbmdlZCAtIGhhbmRsZXMgbm90aWZpY2F0aW9uIG9mIGNoYW5nZXMgdG8gdGhlIGhvc3QgQVBcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjc5OS0gKlxcdFxcdFxcdCAgICBjb25maWd1cmF0aW9uLlxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4MDMtICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI4MDQ6dm9pZCB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqY3VyX2NmZ19pbmZvLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODA1LVxcdFxcdFxcdCAgICBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKnByZXZfY2ZnX2luZm8pXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oPTE2MT1pbnQgdmZpb19hcF9tZGV2X3Jlc291cmNlX2luX3VzZSh1bnNpZ25lZCBsb25nICphcG0sIHVuc2lnbmVkIGxvbmcgKmFxbSk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaC0xNjItXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaDoxNjM6dm9pZCB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqbmV3X2NvbmZpZ19pbmZvLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtMTY0LVxcdFxcdFxcdCAgICBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKm9sZF9jb25maWdfaW5mbyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIzOjE4OjEyLjMwNjg3MDQwN1oiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTMwNzYxNzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBWRklPLUFQIERyaXZlciBDb25maWd1cmF0aW9uIENoYW5nZSBNZWNoYW5pc20qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyB0aGUgY29uZmlndXJhdGlvbiBjaGFuZ2UgZXZlbnRzIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGUgYHZmaW9fYXBfZHJ2YCBkcml2ZXIuIE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCB0aGUgY29yZSBtZWNoYW5pc20gc2VlbXMgdG8gYmUgcm9vdGVkIGluIHRoZSBgLm9uX2NvbmZpZ19jaGFuZ2VkYCBjYWxsYmFjay4gVGhhdCdzIHRoZSBrZXkgZW50cnkgcG9pbnQsIHRoZSB0aGluZyB0aGF0IGdldHMgdHJpZ2dlcmVkIHdoZW4gc29tZXRoaW5nICphY3R1YWxseSogY2hhbmdlcy5cblxuQW5kIHRoZW4gSSdtIHRyYWNpbmcgdGhhdCBjYWxsYmFjayDigJMgaXQncyBjYWxsZWQgYnkgYF9fZHJ2X25vdGlmeV9jb25maWdfY2hhbmdlZGAuIFRoYXQgZnVuY3Rpb24sIGluIHR1cm4sIGlzIGludm9rZWQgYnkgYG5vdGlmeV9jb25maWdfY2hhbmdlZGAsIHdoaWNoIGlzIHRoZW4gY2FsbGVkIGJ5IHRoZSBgYXBfc2Nhbl9idXNgIGZ1bmN0aW9uLiBTbywgd2UgaGF2ZSB0aGlzIG5lc3RlZCBjaGFpbiwgZnJvbSB0aGUgbG93LWxldmVsIGNoYW5nZSBkZXRlY3Rpb24sIGFsbCB0aGUgd2F5IHVwIHRvIHdoZXJlIHRoZSBidXMgaXMgc2Nhbm5lZC5cblxuTm93LCBgYXBfc2Nhbl9idXNgIGNhbiBiZSB0cmlnZ2VyZWQgZWl0aGVyIGJ5IGEgdGltZXIgZmlyaW5nIG9yIGJ5IGBhcF9idXNfZm9yY2VfcmVzY2FuYC4gVGhhdCBsYXN0IHBpZWNlIGlzIHdoYXQgaGFzIG1lIHRoaW5raW5nOiBpcyB0aGVyZSBhIHN5c2ZzIGF0dHJpYnV0ZSwgYSB3YXkgdG8gbWFudWFsbHkgZm9yY2UgdGhlIGRyaXZlciB0byByZXNjYW4gdGhlIGJ1cz8gSWYgc28sIHRoYXQncyBpbmNyZWRpYmx5IHVzZWZ1bCBmb3IgZGVidWdnaW5nIGFuZCBjb250cm9sLiBJdCdzIHRoZSBlcXVpdmFsZW50IG9mIGEgc29mdHdhcmUgcmVzZXQgYW5kIGNvdWxkIHNoZWQgbGlnaHQgb24gc29tZSBvdGhlciBpc3N1ZXMuIEkgbmVlZCB0byBsb29rIGZvciB0aGF0IGFuZCBzZWUgaWYgaXQgaXMgYXZhaWxhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTc0MiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxODoxNi44Mzc2MzUwNDhaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxMjY5NTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFwX2J1c19mb3JjZV9yZXNjYW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xMTEyPUVYUE9SVF9TWU1CT0woYXBfZHJpdmVyX3VucmVnaXN0ZXIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTE4LSAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTExOTpib29sIGFwX2J1c19mb3JjZV9yZXNjYW4odm9pZClcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExMjAte1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTMzLVxcdCAqIGFsbCBjYXJkcyBhcmUgb2ZmbGluZSBzbyBhIHJlc2NhbiBpcyB0cmlnZ2VyZWQgd2hpY2ggY2F1c2VzXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMTM0OlxcdCAqIGEgcmVjdXJzaXZlIGNhbGwgb2YgYXBfYnVzX2ZvcmNlX3Jlc2NhbigpLiBBIHNpbXBsZSByZXR1cm4gaWZcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExMzUtXFx0ICogdGhlIG11dGV4IGlzIGFscmVhZHkgbG9ja2VkIGJ5IHRoaXMgdGhyZWFkIHNvbHZlcyB0aGlzLlxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTY5LX1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjExNzA6RVhQT1JUX1NZTUJPTChhcF9idXNfZm9yY2VfcmVzY2FuKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExNzEtXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTExNzU9c3RhdGljIGludCBhcF9idXNfY2ZnX2NoZyhzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTgyLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTE4MzpcXHRhcF9idXNfZm9yY2VfcmVzY2FuKCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTg0LVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xNzEwPXN0YXRpYyBzc2l6ZV90IHNjYW5zX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjb25zdCBjaGFyICpidWYsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3MTQtXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzE1OlxcdGFwX2J1c19mb3JjZV9yZXNjYW4oKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3MTYtXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5oPTI1Nj12b2lkIGFwX3JlcXVlc3RfdGltZW91dChzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuaDoyNTc6Ym9vbCBhcF9idXNfZm9yY2VfcmVzY2FuKHZvaWQpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmgtMjU4LVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by96Y3J5cHRfYXBpLmM9ODA9c3RhdGljIGlubGluZSBib29sIHpjcnlwdF9wcm9jZXNzX3Jlc2Nhbih2b2lkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vemNyeXB0X2FwaS5jLTgxLXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3pjcnlwdF9hcGkuYzo4MjpcXHRyZXR1cm4gYXBfYnVzX2ZvcmNlX3Jlc2NhbigpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vemNyeXB0X2FwaS5jLTgzLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTg6MTYuODg4OTExNTA3WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4MTA1MDc4NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEFQIEJ1cyBSZXNjYW4gTG9naWMqKlxuXG5Pa2F5LCBzbyBoZXJlJ3MgaG93IHRoaXMgYWxsIHdvcmtzLiBgc2NhbnNfc3RvcmVgIHVsdGltYXRlbHkgY2FsbHMgYGFwX2J1c19mb3JjZV9yZXNjYW5gLiBBIHVzZXIgY2FuIHRyaWdnZXIgdGhpcyB2aWEgdGhlIGAvc3lzL2J1cy9hcC9zY2Fuc2AgaW50ZXJmYWNlLiBUaGF0J3Mgc3RyYWlnaHRmb3J3YXJkLiBIb3dldmVyLCBgYXBfc2Nhbl9idXNgIHRoZW4gKm9ubHkqIGNhbGxzIGBub3RpZnlfY29uZmlnX2NoYW5nZWRgIGlmIGBhcF9nZXRfY29uZmlndXJhdGlvbmAgcmV0dXJucyB0cnVlLiBUaGF0J3MgdGhlIGNydXggb2YgaXQuIEFuZCBgYXBfZ2V0X2NvbmZpZ3VyYXRpb25gIG9ubHkgcmV0dXJucyB0cnVlIGlmIGBhcF9xY2lfaW5mb2AgaGFzIGNoYW5nZWQgc2luY2UgdGhlIGxhc3QgY2FsbC4gIGBhcF9xY2lfaW5mb2AgaXMsIGluIHR1cm4sIHBvcHVsYXRlZCBieSBgYXBfcWNpYCwgd2hpY2ggZXhlY3V0ZXMgdGhlIGBQUUFQKFFDSSlgIGluc3RydWN0aW9uLlxuXG5TbywgaGVyZSdzIHdoYXQgaXQgY29tZXMgZG93biB0bzogdW5sZXNzIGBQUUFQKFFDSSlgIHJlc3VsdHMgaW4gYSBjaGFuZ2VkIGBhcF9xY2lfaW5mb2AsIGBub3RpZnlfY29uZmlnX2NoYW5nZWRgICp3b24ndCogYmUgdHJpZ2dlcmVkLCBubyBtYXR0ZXIgaG93IG1hbnkgdGltZXMgd2Ugd3JpdGUgdG8gYC9zeXMvYnVzL2FwL3NjYW5zYC4gIFRoaXMgc2VlbXMgdG8gc3VnZ2VzdCB0aGUgaHlwZXJ2aXNvciAoUUVNVSwgaW4gdGhpcyBjYXNlKSBoYXMgdG8gY2hhbmdlIHRoZSB1bmRlcmx5aW5nIGNvbmZpZ3VyYXRpb24uIElmIFFFTVUgZG9lc24ndCBjaGFuZ2UgYW55dGhpbmcsIHRoaXMgd2hvbGUgY29kZSBwYXRoIGFwcGVhcnMgdG8gYmUgaW5lcnQuXG5cblRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXM6IGNhbiBhIHVzZXItc3BhY2UgcHJvY2VzcyAqd2l0aGluIHRoZSBndWVzdCogYWN0dWFsbHkgbW9kaWZ5IHRoaXMgQVAgY29uZmlndXJhdGlvbiBpbiBhIHdheSB0aGF0IHdvdWxkIHRyaWdnZXIgdGhpcz8gIFJlYWxpc3RpY2FsbHksIG5vLiBUaGUgQVAgY29uZmlndXJhdGlvbiBpcyBwcm92aWRlZCBieSB0aGUgaHlwZXJ2aXNvci4gIFVubGVzcyBzb21lb25lIGhhcyBmb3VuZCBzb21lIGNyYXp5IGhhY2ssIG9yIHRoZXJlJ3MgYSBzcGVjaWZpYyBtZWNoYW5pc20gSSdtIG1pc3NpbmcgdG8gbW9jayBvciBpbmplY3QgY2hhbmdlcyBmcm9tICp3aXRoaW4qIHRoZSBndWVzdCwgdGhpcyBzZWVtcyB0byBiZSB0cmlnZ2VyZWQgb25seSBieSBoeXBlcnZpc29yLWxldmVsIGNoYW5nZXMsIGxpa2UgaG90cGx1Z2dpbmcuXG5cbkJ1dCB3YWl0LCB3aGF0IGFib3V0IHRoZSBjYXNlIHdoZXJlIHRoZSBndWVzdCBpcyBydW5uaW5nIG9uIFFFTVUsIGJ1dCBRRU1VIGRvZXNuJ3Qgc3VwcG9ydCBBUCBjYXJkcyBhdCBhbGwsIG9yIGhhcyBub25lIGNvbmZpZ3VyZWQ/ICBJbiB0aGF0IHNjZW5hcmlvLCBgYXBfcWNpX2luZm8tXHUwMDNlZmxhZ3NgIHdpbGwgbGlrZWx5IGJlIHplcm8sIGluZGljYXRpbmcgUUNJIGlzbid0IHN1cHBvcnRlZCwgYW5kIGBhcF9nZXRfY29uZmlndXJhdGlvbmAgd2lsbCBjb25zaXN0ZW50bHkgcmV0dXJuIGZhbHNlLiBUaGlzIG1ha2VzIHNlbnNlLlxuXG5BbHJpZ2h0LCBpcyB0aGVyZSBhbnkga2luZCBvZiBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgQVAgY2FyZHMgd2l0aGluIHRoZSBrZXJuZWwgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBpbnRlcnZlbmUgaGVyZT8gSSBuZWVkIHRvIGNoZWNrIGlmIGFueSB0ZXN0IG9yIG1vY2sgZHJpdmVycyBleGlzdCBmb3IgdGhlIEFQIGJ1cy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGEgc2lkZSBwYXRoIHRoYXQncyBlbXVsYXRpbmcgQVAgY2hhbmdlcyB3aXRob3V0IGh5cGVydmlzb3IgaW5wdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2ODk1LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIzOjE4OjI0LjY5OTQyMjQwN1oiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg3ODQ5NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXBfcWNpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTA3PXN0YXRpYyBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gcWNpWzJdO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTA4OnN0YXRpYyBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmNvbnN0IGFwX3FjaV9pbmZvID0gXFx1MDAyNnFjaVswXTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEwOTpzdGF0aWMgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjb25zdCBhcF9xY2lfaW5mb19vbGQgPSBcXHUwMDI2cWNpWzFdO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTEwLVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yMDk9c3RhdGljIGludCBhcF9pbnRlcnJ1cHRzX2F2YWlsYWJsZSh2b2lkKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMTQtLyoqXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMTU6ICogYXBfcWNpX2F2YWlsYWJsZSgpOiBUZXN0IGlmIEFQIGNvbmZpZ3VyYXRpb25cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIxNi0gKiBpbmZvcm1hdGlvbiBjYW4gYmUgcXVlcmllZCB2aWEgUUNJIHN1YmZ1bmN0aW9uLlxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMTktICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMjA6c3RhdGljIGludCBhcF9xY2lfYXZhaWxhYmxlKHZvaWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMjEte1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yNDE9c3RhdGljIGlubGluZSBpbnQgYXBfcWFjdF9hdmFpbGFibGUodm9pZClcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0Mi17XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDM6XFx0cmV0dXJuIGFwX3FjaV9pbmZvLVxcdTAwM2VxYWN0O1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ0LX1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjUxPWludCBhcF9zYl9hdmFpbGFibGUodm9pZClcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI1Mi17XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNTM6XFx0cmV0dXJuIGFwX3FjaV9pbmZvLVxcdTAwM2VhcHNiO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjU0LX1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjcwPXN0YXRpYyB2b2lkIF9faW5pdCBhcF9pbml0X3FjaV9pbmZvKHZvaWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNzEte1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjcyOlxcdGlmICghYXBfcWNpX2F2YWlsYWJsZSgpIHx8XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNzM6XFx0ICAgIGFwX3FjaShhcF9xY2lfaW5mbykpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI3NC1cXHRcXHRBUF9EQkZfSU5GTyhcXFwiJXMgUUNJIG5vdCBzdXBwb3J0ZWRcXFxcblxcXCIsIF9fZnVuY19fKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjc2LVxcdH1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI3NzpcXHRtZW1jcHkoYXBfcWNpX2luZm9fb2xkLCBhcF9xY2lfaW5mbywgc2l6ZW9mKCphcF9xY2lfaW5mbykpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjc4LVxcdEFQX0RCRl9JTkZPKFxcXCIlcyBzdWNjZXNzZnVsIGZldGNoZWQgaW5pdGlhbCBxY2kgaW5mb1xcXFxuXFxcIiwgX19mdW5jX18pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjc5LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjgwOlxcdGlmIChhcF9xY2lfaW5mby1cXHUwMDNlYXB4YSkge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjgxOlxcdFxcdGlmIChhcF9xY2lfaW5mby1cXHUwMDNlbmEpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI4MjpcXHRcXHRcXHRhcF9tYXhfYWRhcHRlcl9pZCA9IGFwX3FjaV9pbmZvLVxcdTAwM2VuYTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI4My1cXHRcXHRcXHRBUF9EQkZfSU5GTyhcXFwiJXMgbmV3IGFwX21heF9hZGFwdGVyX2lkIGlzICVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yODUtXFx0XFx0fVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6Mjg2OlxcdFxcdGlmIChhcF9xY2lfaW5mby1cXHUwMDNlbmQpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI4NzpcXHRcXHRcXHRhcF9tYXhfZG9tYWluX2lkID0gYXBfcWNpX2luZm8tXFx1MDAzZW5kO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjg4LVxcdFxcdFxcdEFQX0RCRl9JTkZPKFxcXCIlcyBuZXcgYXBfbWF4X2RvbWFpbl9pZCBpcyAlZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MzEwPXN0YXRpYyBpbmxpbmUgaW50IGFwX3Rlc3RfY29uZmlnX2NhcmRfaWQodW5zaWduZWQgaW50IGlkKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zMTMtXFx0XFx0cmV0dXJuIDA7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzozMTQ6XFx0aWYgKGFwX3FjaV9pbmZvLVxcdTAwM2VmbGFncylcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjMxNTpcXHRcXHRyZXR1cm4gYXBfdGVzdF9jb25maWcoYXBfcWNpX2luZm8tXFx1MDAzZWFwbSwgaWQpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzE2LVxcdHJldHVybiAxO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0zMjc9aW50IGFwX3Rlc3RfY29uZmlnX3VzYWdlX2RvbWFpbih1bnNpZ25lZCBpbnQgZG9tYWluKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zMzAtXFx0XFx0cmV0dXJuIDA7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzozMzE6XFx0aWYgKGFwX3FjaV9pbmZvLVxcdTAwM2VmbGFncylcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjMzMjpcXHRcXHRyZXR1cm4gYXBfdGVzdF9jb25maWcoYXBfcWNpX2luZm8tXFx1MDAzZWFxbSwgZG9tYWluKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTMzMy1cXHRyZXR1cm4gMTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MzQ1PWludCBhcF90ZXN0X2NvbmZpZ19jdHJsX2RvbWFpbih1bnNpZ25lZCBpbnQgZG9tYWluKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzQ2LXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjM0NzpcXHRpZiAoIWFwX3FjaV9pbmZvIHx8IGRvbWFpbiBcXHUwMDNlIGFwX21heF9kb21haW5faWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zNDgtXFx0XFx0cmV0dXJuIDA7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzozNDk6XFx0cmV0dXJuIGFwX3Rlc3RfY29uZmlnKGFwX3FjaV9pbmZvLVxcdTAwM2VhZG0sIGRvbWFpbik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zNTAtfVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xMzQ5PXN0YXRpYyBzc2l6ZV90IGFwX2NvbnRyb2xfZG9tYWluX21hc2tfc2hvdyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY2hhciAqYnVmKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM1MC17XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzUxOlxcdGlmICghYXBfcWNpX2luZm8tXFx1MDAzZWZsYWdzKVxcdC8qIFFDSSBub3Qgc3VwcG9ydGVkICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzUyLVxcdFxcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcIm5vdCBzdXBwb3J0ZWRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzU0LVxcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcIjB4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHhcXFxcblxcXCIsXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzU1OlxcdFxcdFxcdCAgYXBfcWNpX2luZm8tXFx1MDAzZWFkbVswXSwgYXBfcWNpX2luZm8tXFx1MDAzZWFkbVsxXSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNTY6XFx0XFx0XFx0ICBhcF9xY2lfaW5mby1cXHUwMDNlYWRtWzJdLCBhcF9xY2lfaW5mby1cXHUwMDNlYWRtWzNdLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM1NzpcXHRcXHRcXHQgIGFwX3FjaV9pbmZvLVxcdTAwM2VhZG1bNF0sIGFwX3FjaV9pbmZvLVxcdTAwM2VhZG1bNV0sXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzU4OlxcdFxcdFxcdCAgYXBfcWNpX2luZm8tXFx1MDAzZWFkbVs2XSwgYXBfcWNpX2luZm8tXFx1MDAzZWFkbVs3XSk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzU5LX1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTM2Mz1zdGF0aWMgc3NpemVfdCBhcF91c2FnZV9kb21haW5fbWFza19zaG93KGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjaGFyICpidWYpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzY0LXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNjU6XFx0aWYgKCFhcF9xY2lfaW5mby1cXHUwMDNlZmxhZ3MpXFx0LyogUUNJIG5vdCBzdXBwb3J0ZWQgKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNjYtXFx0XFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwibm90IHN1cHBvcnRlZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNjgtXFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwiMHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eFxcXFxuXFxcIixcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNjk6XFx0XFx0XFx0ICBhcF9xY2lfaW5mby1cXHUwMDNlYXFtWzBdLCBhcF9xY2lfaW5mby1cXHUwMDNlYXFtWzFdLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM3MDpcXHRcXHRcXHQgIGFwX3FjaV9pbmZvLVxcdTAwM2VhcW1bMl0sIGFwX3FjaV9pbmZvLVxcdTAwM2VhcW1bM10sXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzcxOlxcdFxcdFxcdCAgYXBfcWNpX2luZm8tXFx1MDAzZWFxbVs0XSwgYXBfcWNpX2luZm8tXFx1MDAzZWFxbVs1XSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNzI6XFx0XFx0XFx0ICBhcF9xY2lfaW5mby1cXHUwMDNlYXFtWzZdLCBhcF9xY2lfaW5mby1cXHUwMDNlYXFtWzddKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNzMtfVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xMzc3PXN0YXRpYyBzc2l6ZV90IGFwX2FkYXB0ZXJfbWFza19zaG93KGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjaGFyICpidWYpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzc4LXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNzk6XFx0aWYgKCFhcF9xY2lfaW5mby1cXHUwMDNlZmxhZ3MpXFx0LyogUUNJIG5vdCBzdXBwb3J0ZWQgKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzODAtXFx0XFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwibm90IHN1cHBvcnRlZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzODItXFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwiMHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eFxcXFxuXFxcIixcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzODM6XFx0XFx0XFx0ICBhcF9xY2lfaW5mby1cXHUwMDNlYXBtWzBdLCBhcF9xY2lfaW5mby1cXHUwMDNlYXBtWzFdLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM4NDpcXHRcXHRcXHQgIGFwX3FjaV9pbmZvLVxcdTAwM2VhcG1bMl0sIGFwX3FjaV9pbmZvLVxcdTAwM2VhcG1bM10sXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzg1OlxcdFxcdFxcdCAgYXBfcWNpX2luZm8tXFx1MDAzZWFwbVs0XSwgYXBfcWNpX2luZm8tXFx1MDAzZWFwbVs1XSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzODY6XFx0XFx0XFx0ICBhcF9xY2lfaW5mby1cXHUwMDNlYXBtWzZdLCBhcF9xY2lfaW5mby1cXHUwMDNlYXBtWzddKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzODctfVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xNzQ3PXN0YXRpYyBzc2l6ZV90IGZlYXR1cmVzX3Nob3coY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNoYXIgKmJ1ZilcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc1MC1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3NTE6XFx0aWYgKCFhcF9xY2lfaW5mby1cXHUwMDNlZmxhZ3MpXFx0LyogUUNJIG5vdCBzdXBwb3J0ZWQgKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NTItXFx0XFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwiLVxcXFxuXFxcIik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzUzLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTc1NDpcXHRpZiAoYXBfcWNpX2luZm8tXFx1MDAzZWFwc2MpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzU1LVxcdFxcdG4gKz0gc3lzZnNfZW1pdF9hdChidWYsIG4sIFxcXCJBUFNDIFxcXCIpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTc1NjpcXHRpZiAoYXBfcWNpX2luZm8tXFx1MDAzZWFweGEpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzU3LVxcdFxcdG4gKz0gc3lzZnNfZW1pdF9hdChidWYsIG4sIFxcXCJBUFhBIFxcXCIpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTc1ODpcXHRpZiAoYXBfcWNpX2luZm8tXFx1MDAzZXFhY3QpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzU5LVxcdFxcdG4gKz0gc3lzZnNfZW1pdF9hdChidWYsIG4sIFxcXCJRQUNUIFxcXCIpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTc2MDpcXHRpZiAoYXBfcWNpX2luZm8tXFx1MDAzZXJjOGEpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzYxLVxcdFxcdG4gKz0gc3lzZnNfZW1pdF9hdChidWYsIG4sIFxcXCJSQzhBIFxcXCIpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTc2MjpcXHRpZiAoYXBfcWNpX2luZm8tXFx1MDAzZWFwc2IpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzYzLVxcdFxcdG4gKz0gc3lzZnNfZW1pdF9hdChidWYsIG4sIFxcXCJBUFNCIFxcXCIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xOTIzPXN0YXRpYyBpbnQgX19kcnZfbm90aWZ5X2NvbmZpZ19jaGFuZ2VkKHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5MjgtXFx0XFx0aWYgKGFwX2Rydi1cXHUwMDNlb25fY29uZmlnX2NoYW5nZWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTI5OlxcdFxcdFxcdGFwX2Rydi1cXHUwMDNlb25fY29uZmlnX2NoYW5nZWQoYXBfcWNpX2luZm8sIGFwX3FjaV9pbmZvX29sZCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTMwLVxcdFxcdG1vZHVsZV9wdXQoZHJ2LVxcdTAwM2Vvd25lcik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTE5NDQ9c3RhdGljIGludCBfX2Rydl9ub3RpZnlfc2Nhbl9jb21wbGV0ZShzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2LCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTQ5LVxcdFxcdGlmIChhcF9kcnYtXFx1MDAzZW9uX3NjYW5fY29tcGxldGUpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTUwOlxcdFxcdFxcdGFwX2Rydi1cXHUwMDNlb25fc2Nhbl9jb21wbGV0ZShhcF9xY2lfaW5mbyxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE5NTE6XFx0XFx0XFx0XFx0XFx0XFx0IGFwX3FjaV9pbmZvX29sZCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTUyLVxcdFxcdG1vZHVsZV9wdXQoZHJ2LVxcdTAwM2Vvd25lcik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTIzMTE9c3RhdGljIGJvb2wgYXBfZ2V0X2NvbmZpZ3VyYXRpb24odm9pZClcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMTIte1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMxMzpcXHRpZiAoIWFwX3FjaV9pbmZvLVxcdTAwM2VmbGFncylcXHQvKiBRQ0kgbm90IHN1cHBvcnRlZCAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMxNC1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzE1LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMxNjpcXHRtZW1jcHkoYXBfcWNpX2luZm9fb2xkLCBhcF9xY2lfaW5mbywgc2l6ZW9mKCphcF9xY2lfaW5mbykpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMxNzpcXHRhcF9xY2koYXBfcWNpX2luZm8pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMxOC1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMTk6XFx0cmV0dXJuIG1lbWNtcChhcF9xY2lfaW5mbywgYXBfcWNpX2luZm9fb2xkLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMyMC1cXHRcXHQgICAgICBzaXplb2Yoc3RydWN0IGFwX2NvbmZpZ19pbmZvKSkgIT0gMDtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjMyOT1zdGF0aWMgYm9vbCBhcF9jb25maWdfaGFzX25ld19hcHModm9pZClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMzMy1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMzQ6XFx0aWYgKCFhcF9xY2lfaW5mby1cXHUwMDNlZmxhZ3MpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzM1LVxcdFxcdHJldHVybiBmYWxzZTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMzYtXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzM3OlxcdGJpdG1hcF9hbmRub3QobSwgKHVuc2lnbmVkIGxvbmcgKilhcF9xY2lfaW5mby1cXHUwMDNlYXBtLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMzODpcXHRcXHQgICAgICAodW5zaWduZWQgbG9uZyAqKWFwX3FjaV9pbmZvX29sZC1cXHUwMDNlYXBtLCBBUF9ERVZJQ0VTKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMzktXFx0aWYgKCFiaXRtYXBfZW1wdHkobSwgQVBfREVWSUNFUykpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTIzNTE9c3RhdGljIGJvb2wgYXBfY29uZmlnX2hhc19uZXdfZG9tcyh2b2lkKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzU0LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjM1NTpcXHRpZiAoIWFwX3FjaV9pbmZvLVxcdTAwM2VmbGFncylcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzNTYtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM1Ny1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzNTg6XFx0Yml0bWFwX2FuZG5vdChtLCAodW5zaWduZWQgbG9uZyAqKWFwX3FjaV9pbmZvLVxcdTAwM2VhcW0sXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzU5OlxcdFxcdCAgICAgICh1bnNpZ25lZCBsb25nICopYXBfcWNpX2luZm9fb2xkLVxcdTAwM2VhcW0sIEFQX0RPTUFJTlMpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM2MC1cXHRpZiAoIWJpdG1hcF9lbXB0eShtLCBBUF9ET01BSU5TKSlcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYz04Nj1zdGF0aWMgaW50IHZmaW9fYXBfbWF0cml4X2Rldl9jcmVhdGUodm9pZClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xMDYtXFx0aWYgKHRlc3RfZmFjaWxpdHkoMTIpKSB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjEwNzpcXHRcXHRyZXQgPSBhcF9xY2koXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZWluZm8pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xMDgtXFx0XFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTg6MjQuNzQ4MjEzNTE0WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5ODc4MDQwOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmVgIENhbGxiYWNrKipcblxuT2theSwgc28gdGhlcmUncyBubyBcIm1vY2sgZHJpdmVyXCIgaW52b2x2ZWQgaGVyZSwgdGhlIGBhcF9xY2lgIGluc3RydWN0aW9uIGlzIGV4ZWN1dGVkIGRpcmVjdGx5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpZiB0aGUgaHlwZXJ2aXNvciBkb2Vzbid0IHN1cHBvcnQgaXQgb3IgaWYgdGhlIGNvbmZpZ3VyYXRpb24gcmVtYWlucyB1bmNoYW5nZWQsIHRoZSByZWxhdGVkIGNvZGUgcGF0aCB3b24ndCBiZSB0cmlnZ2VyZWQuIFRoZSBjcml0aWNhbCBxdWVzdGlvbiBiZWNvbWVzLCBjYW4gc3l6a2FsbGVyIGV2ZW4gcnVuIG9uIGFuIHMzOTB4IFZNIHdpdGggQVAgY2FyZHMgcHJvcGVybHkgY29uZmlndXJlZD9cblxuSSBrbm93IHN5emthbGxlciBoYXMgczM5MHggc3VwcG9ydCwgYnV0IHdoYXQgYWJvdXQgQVAgY2FyZHMgc3BlY2lmaWNhbGx5PyBMZXQncyByZS1leGFtaW5lIHRoZSBvcmlnaW5hbCBwcm9tcHQuLi4gaXQgbWVudGlvbnMgdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlLiBJdCBhbHNvIHNwZWNpZmljYWxseSBoaWdobGlnaHRzIFwiLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzXCIuIFRoaXMgaXMgYSBjbHVlLlxuXG5BaCwgYHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlYC4gVGhpcyBpcyB0cmlnZ2VyZWQgZHVyaW5nIGhvdC11bnBsdWcgZXZlbnRzIOKAkyBwYXJ0aWN1bGFybHkgd2hlbiBBUCBjb25maWd1cmF0aW9uIGNoYW5nZXMsIHNheSwgd2hlbiBhZGFwdGVycyBvciBkb21haW5zIGFyZSByZW1vdmVkLiBUaGlua2luZyBpdCB0aHJvdWdoLi4uIGB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZWAgaXMgY2FsbGVkIGZyb20gYHZmaW9fYXBfbWRldl9vbl9jZmdfcmVtb3ZlYCwgd2hpY2ggaXMgY2FsbGVkIHdoZW4gdGhlIEFQIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4gRG9lcyB0aGlzIGNhbGxiYWNrIGNvdW50IGFzIGEgdGVhcmRvd24gZnVuY3Rpb24/IFllcywgaXQncyBleHBsaWNpdGx5IGZvciBob3QtdW5wbHVnIHNjZW5hcmlvcywgd2hpY2ggY29uZmlybXMgdGhlIHJlbGV2YW5jZSB0byB0aGUgc3RhdGVkIGNvbnRleHQuXG5cbk5vdywgbGV0J3MganVzdCBtYWtlIHN1cmUsIGEgcXVpY2sgY2hlY2sgb2YgdGhlIGNvbW1lbnQgZm9yIGB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZWAgaXMgaW4gb3JkZXIgdG8gYmUgY29tcGxldGVseSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjUzMSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxODozMC43MzYwMTk5MzJaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1MzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNTg1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNTg1OlxcdC8qKlxcbjI1ODY6XFx0ICogdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUgLSBkZXRlcm1pbmVzIHdoaWNoIGd1ZXN0cyBhcmUgdXNpbmcgdGhlIGFkYXB0ZXJzLFxcbjI1ODc6XFx0ICpcXHRcXHRcXHQgICAgIGRvbWFpbnMgYW5kIGNvbnRyb2wgZG9tYWlucyB0aGF0IGhhdmUgYmVlbiByZW1vdmVkXFxuMjU4ODpcXHQgKlxcdFxcdFxcdCAgICAgZnJvbSB0aGUgaG9zdCBBUCBjb25maWd1cmF0aW9uIGFuZCB1bnBsdWdzIHRoZW1cXG4yNTg5OlxcdCAqXFx0XFx0XFx0ICAgICBmcm9tIHRob3NlIGd1ZXN0cy5cXG4yNTkwOlxcdCAqXFxuMjU5MTpcXHQgKiBAYXBfcmVtb3ZlOlxcdGJpdG1hcCBzcGVjaWZ5aW5nIHdoaWNoIGFkYXB0ZXJzIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIGhvc3RcXG4yNTkyOlxcdCAqXFx0XFx0Y29uZmlnLlxcbjI1OTM6XFx0ICogQGFxX3JlbW92ZTpcXHRiaXRtYXAgc3BlY2lmeWluZyB3aGljaCBkb21haW5zIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIGhvc3RcXG4yNTk0OlxcdCAqXFx0XFx0Y29uZmlnLlxcbjI1OTU6XFx0ICogQGNkX3JlbW92ZTpcXHRiaXRtYXAgc3BlY2lmeWluZyB3aGljaCBjb250cm9sIGRvbWFpbnMgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbVxcbjI1OTY6XFx0ICpcXHRcXHR0aGUgaG9zdCBjb25maWcuXFxuMjU5NzpcXHQgKi9cXG4yNTk4OlxcdHN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlKHVuc2lnbmVkIGxvbmcgKmFwX3JlbW92ZSxcXG4yNTk5OlxcdFxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nICphcV9yZW1vdmUsXFxuMjYwMDpcXHRcXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgbG9uZyAqY2RfcmVtb3ZlKVxcbjI2MDE6XFx0e1xcbjI2MDI6XFx0XFx0c3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldjtcXG4yNjAzOlxcdFxcdERFQ0xBUkVfQklUTUFQKGFwcmVtLCBBUF9ERVZJQ0VTKTtcXG4yNjA0OlxcdFxcdERFQ0xBUkVfQklUTUFQKGFxcmVtLCBBUF9ET01BSU5TKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTg6MzAuNzM2MTU2ODYyWiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg3OTI2MTE0MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIERlY2lzaW9uOiBObyoqXG5cbk9rYXksIGhlcmUncyB0aGUgYnJlYWtkb3duIG9mIG15IHRoaW5raW5nLiBUaGUgY29kZSBpbiBxdWVzdGlvbiBjbGVhcmx5IHRhcmdldHMgaG90LXVucGx1ZyBzY2VuYXJpb3MsIHNwZWNpZmljYWxseSByZWdhcmRpbmcgQVAgY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBpbnN0cnVjdHMgbWUgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIGxpa2UgYC5yZW1vdmVgIG9yIGAuc2h1dGRvd25gIHRoYXQgYXJlICpvbmx5KiBleGVjdXRlZCBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLiBUaGlzIHBhdGNoIGZhbGxzIHNxdWFyZWx5IGludG8gdGhhdCBjYXRlZ29yeSwgZGVhbGluZyB3aXRoIHRoZSByZW1vdmFsIG9mIGd1ZXN0cyB1c2luZyBjZXJ0YWluIGFkYXB0ZXJzLCBkb21haW5zLCBhbmQgY29udHJvbCBkb21haW5zIGFmdGVyIHRoZSBob3N0IEFQIGNvbmZpZ3VyYXRpb24gaXMgY2hhbmdlZC5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSB0cmFjZWQgdGhlIGNhbGwgY2hhaW4uIGB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZWAgaXMgdHJpZ2dlcmVkIHRocm91Z2ggYHZmaW9fYXBfbWRldl9vbl9jZmdfcmVtb3ZlYCwgd2hpY2ggaW4gdHVybiBpcyBjYWxsZWQgYnkgYHZmaW9fYXBfb25fY2ZnX2NoYW5nZWRgLiBUaGlzIGZ1bmN0aW9uIGlzIGluaXRpYXRlZCBieSBgX19kcnZfbm90aWZ5X2NvbmZpZ19jaGFuZ2VkYCwgd2hpY2ggaXMgZGlyZWN0bHkgbGlua2VkIHRvIEFQIGJ1cyBjb25maWd1cmF0aW9uIGNoYW5nZXMsIGkuZS4sIGhvdHBsdWcvaG90dW5wbHVnIGV2ZW50cy4gIFRoZXJlJ3Mgbm8gd2F5IGFyb3VuZCBpdDsgdGhpcyBpcyBhIHB1cmUgaG90LXVucGx1ZyBldmVudCBoYW5kbGVyLiBNeSByZWFkaW5nIG9mIHRoZSBpbnN0cnVjdGlvbnMgaXMgY2xlYXIsIHNvIHRoaXMgaXMgbm90IHdvcnRoIGZ1enppbmcuXG5cbkkgcXVpY2tseSByZXZpZXdlZCB0aGUgcGF0Y2ggaXRzZWxmLCBhbmQgaXQgbW9kaWZpZXMgdGhlIGZ1bmN0aW9uIGB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZWAsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBhIGBiaXRtYXBfYW5kbm90YCBvcGVyYXRpb24gdG8gYGJpdG1hcF9hbmRgLiBUaGF0J3MgYSBidWcgZml4IHdpdGhpbiB0aGlzIGhvdC11bnBsdWcgcGF0aC4gVGhlIGZhY3QgdGhhdCBpdCByZWxhdGVzIHRvIHMzOTAgQVAgY3J5cHRvLCBhbmQgdGhhdCBpdCByZXF1aXJlcyBoeXBlcnZpc29yIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyB0byBldmVuIGJlIHRyaWdnZXJlZCwgZnVydGhlciByZWluZm9yY2VzIHRoZSBcImhvdC11bnBsdWdcIiBleGNlcHRpb24uXG5cblRoZXJlZm9yZSwgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzU2NCwiT3V0cHV0VG9rZW5zIjoxMDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxODozOS41Mjg3NzIzNzRaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzUzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhIGhvdC11bnBsdWcgY2FsbGJhY2sgKGB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZWApIGluIHRoZSBzMzkwIFZGSU8gQVAgY3J5cHRvIGRyaXZlciwgd2hpY2ggaXMgZXhlY3V0ZWQgb25seSB3aGVuIEFQIGFkYXB0ZXJzIG9yIGRvbWFpbnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgaG9zdCBBUCBjb25maWd1cmF0aW9uLiBBY2NvcmRpbmcgdG8gdGhlIGluc3RydWN0aW9ucywgdGVhcmRvd24gY2FsbGJhY2tzIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIGhvdC11bnBsdWcgb3BlcmF0aW9ucyBhcmUgbm90IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhIGhvdC11bnBsdWcgY2FsbGJhY2sgKGB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZWApIGluIHRoZSBzMzkwIFZGSU8gQVAgY3J5cHRvIGRyaXZlciwgd2hpY2ggaXMgZXhlY3V0ZWQgb25seSB3aGVuIEFQIGFkYXB0ZXJzIG9yIGRvbWFpbnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgaG9zdCBBUCBjb25maWd1cmF0aW9uLiBBY2NvcmRpbmcgdG8gdGhlIGluc3RydWN0aW9ucywgdGVhcmRvd24gY2FsbGJhY2tzIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIGhvdC11bnBsdWcgb3BlcmF0aW9ucyBhcmUgbm90IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxODozOS41Mjg4MTM4NDRaIiwiU2VxIjo0NywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvpssq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-07 22:48:43 +0000 UTC FinishedAt: 2026-08-07 23:18:41 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYSBob3QtdW5wbHVnIGNhbGxiYWNrIChgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmVgKSBpbiB0aGUgczM5MCBWRklPIEFQIGNyeXB0byBkcml2ZXIsIHdoaWNoIGlzIGV4ZWN1dGVkIG9ubHkgd2hlbiBBUCBhZGFwdGVycyBvciBkb21haW5zIGFyZSByZW1vdmVkIGZyb20gdGhlIGhvc3QgQVAgY29uZmlndXJhdGlvbi4gQWNjb3JkaW5nIHRvIHRoZSBpbnN0cnVjdGlvbnMsIHRlYXJkb3duIGNhbGxiYWNrcyBleGVjdXRlZCBvbmx5IGR1cmluZyBob3QtdW5wbHVnIG9wZXJhdGlvbnMgYXJlIG5vdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDdlMzYxOTMyMjRlNmJhNWUxZTNmZTM1MGMzNTQ3ZjYzNjFjN2UxMDhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyA3IDIzOjE2OjU3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYyBiL2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuY1xuaW5kZXggNDRiM2ExZGNjMWIzNi4uMWJmZGJlODUwMjNkZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jXG5AQCAtMjYxNSw5ICYjNDM7MjYxNSw5IEBAIHN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlKHVuc2lnbmVkIGxvbmcgKmFwX3JlbW92ZSxcbiBcdFx0ZG9fcmVtb3ZlIHw9IGJpdG1hcF9hbmQoYXFyZW0sIGFxX3JlbW92ZSxcbiBcdFx0XHRcdFx0ICBtYXRyaXhfbWRldi1cdTAwM2VtYXRyaXguYXFtLFxuIFx0XHRcdFx0XHQgIEFQX0RPTUFJTlMpO1xuLVx0XHRkb19yZW1vdmUgfD0gYml0bWFwX2FuZG5vdChjZHJlbSwgY2RfcmVtb3ZlLFxuLVx0XHRcdFx0XHQgICAgIG1hdHJpeF9tZGV2LVx1MDAzZW1hdHJpeC5hZG0sXG4tXHRcdFx0XHRcdCAgICAgQVBfRE9NQUlOUyk7XG4mIzQzO1x0XHRkb19yZW1vdmUgfD0gYml0bWFwX2FuZChjZHJlbSwgY2RfcmVtb3ZlLFxuJiM0MztcdFx0XHRcdFx0bWF0cml4X21kZXYtXHUwMDNlbWF0cml4LmFkbSxcbiYjNDM7XHRcdFx0XHRcdEFQX0RPTUFJTlMpO1xuIFxuIFx0XHRpZiAoZG9fcmVtb3ZlKVxuIFx0XHRcdHZmaW9fYXBfbWRldl9ob3RfdW5wbHVnX2NmZyhtYXRyaXhfbWRldiwgYXByZW0sIGFxcmVtLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhIGhvdC11bnBsdWcgY2FsbGJhY2sgKGB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZWApIGluIHRoZSBzMzkwIFZGSU8gQVAgY3J5cHRvIGRyaXZlciwgd2hpY2ggaXMgZXhlY3V0ZWQgb25seSB3aGVuIEFQIGFkYXB0ZXJzIG9yIGRvbWFpbnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgaG9zdCBBUCBjb25maWd1cmF0aW9uLiBBY2NvcmRpbmcgdG8gdGhlIGluc3RydWN0aW9ucywgdGVhcmRvd24gY2FsbGJhY2tzIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIGhvdC11bnBsdWcgb3BlcmF0aW9ucyBhcmUgbm90IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgN2UzNjE5MzIyNGU2YmE1ZTFlM2ZlMzUwYzM1NDdmNjM2MWM3ZTEwOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDcgMjM6MTY6NTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMgYi9kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMKaW5kZXggNDRiM2ExZGNjMWIzNi4uMWJmZGJlODUwMjNkZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYwpAQCAtMjYxNSw5ICYjNDM7MjYxNSw5IEBAIHN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlKHVuc2lnbmVkIGxvbmcgKmFwX3JlbW92ZSwKIAkJZG9fcmVtb3ZlIHw9IGJpdG1hcF9hbmQoYXFyZW0sIGFxX3JlbW92ZSwKIAkJCQkJICBtYXRyaXhfbWRldi0mZ3Q7bWF0cml4LmFxbSwKIAkJCQkJICBBUF9ET01BSU5TKTsKLQkJZG9fcmVtb3ZlIHw9IGJpdG1hcF9hbmRub3QoY2RyZW0sIGNkX3JlbW92ZSwKLQkJCQkJICAgICBtYXRyaXhfbWRldi0mZ3Q7bWF0cml4LmFkbSwKLQkJCQkJICAgICBBUF9ET01BSU5TKTsKJiM0MzsJCWRvX3JlbW92ZSB8PSBiaXRtYXBfYW5kKGNkcmVtLCBjZF9yZW1vdmUsCiYjNDM7CQkJCQltYXRyaXhfbWRldi0mZ3Q7bWF0cml4LmFkbSwKJiM0MzsJCQkJCUFQX0RPTUFJTlMpOwogCiAJCWlmIChkb19yZW1vdmUpCiAJCQl2ZmlvX2FwX21kZXZfaG90X3VucGx1Z19jZmcobWF0cml4X21kZXYsIGFwcmVtLCBhcXJlbSwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5OQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDI2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDcnlwdG8gRHJpdmVyIENoYW5nZSoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGluIGBkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmNgLiBSaWdodCBhd2F5LCB0aGF0IHRlbGxzIG1lIGl0JiMzOTtzIHMzOTAtc3BlY2lmaWMsIHNvIHdlJiMzOTtyZSB0YWxraW5nIG1haW5mcmFtZSB0ZXJyaXRvcnkuIEl0JiMzOTtzIGEgYGJpdG1hcF9hbmRub3RgIHRvIGBiaXRtYXBfYW5kYCBjaGFuZ2Ugd2l0aGluIHRoZSBgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmVgIGZ1bmN0aW9uLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjb2RlIHBhdGggaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVS4gV2UgY2FuIGVtdWxhdGUgczM5MHggaW4gUUVNVSwgYnV0IGRvZXMgaXQgbmVjZXNzaXRhdGUgc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgdG8gaGl0IHRoaXMgc2VjdGlvbiBvZiBjb2RlPwoKVkZJTyBBUCBpcyBzcGVjaWZpY2FsbHkgZm9yIEFkanVuY3QgUHJvY2Vzc29yIGNyeXB0byBjYXJkcyBvbiBzMzkwLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIuIE5vdywgY2FuIHRoaXMgYmUgZnV6emVkPyBUaGUgcHJvbXB0IHN0YXRlcyB0aGF0IHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6YXRpb24sIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSwgc2hvdWxkbiYjMzk7dCBiZSBjb25zaWRlcmVkLiBUaGUgcHJvbXB0IG1lbnRpb25zIGAucmVtb3ZlYCwgYC5zaHV0ZG93bmAsIGFuZCB0ZWFyZG93biBjYWxsYmFja3MgYXMgYXJlYXMgdG8gYmUgd2FyeSBvZiwgZXNwZWNpYWxseSB0aG9zZSBleGVjdXRlZCBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLiBJIG5lZWQgdG8gZm9jdXMgb24gYHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlYCB0byBhc3Nlc3MgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgdGhlIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yNTU3PXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9ob3RfdW5wbHVnX2NmZyhzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2LFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNTg1LS8qKlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI1ODY6ICogdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUgLSBkZXRlcm1pbmVzIHdoaWNoIGd1ZXN0cyBhcmUgdXNpbmcgdGhlIGFkYXB0ZXJzLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1ODctICpcdFx0XHQgICAgIGRvbWFpbnMgYW5kIGNvbnRyb2wgZG9tYWlucyB0aGF0IGhhdmUgYmVlbiByZW1vdmVkXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1OTctICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjU5ODpzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZSh1bnNpZ25lZCBsb25nICphcF9yZW1vdmUsXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjU5OS1cdFx0XHRcdCAgICB1bnNpZ25lZCBsb25nICphcV9yZW1vdmUsXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI2Mzk9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmUoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjdXJfY29uZmlnX2luZm8sXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2NjAtXHRpZiAoZG9fcmVtb3ZlKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI2NjE6XHRcdHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlKGFwcmVtLCBhcXJlbSwgY2RyZW0pO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2NjItfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTYKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91JiMzOTt2ZSByZXF1ZXN0ZWQsIGFpbWVkIGF0IGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGB2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZWAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byBgdmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmVgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGF0JiMzOTtzIHRoZSBjb250ZXh0IGhlcmU/JiMzNDsgVGhpcyBuYW1lIHNjcmVhbXMgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGFkdmFuY2VkIHByb2dyYW1taW5nIChBUCkgbW9kZSB3aXRoaW4gVkZJTywgYW5kIHNwZWNpZmljYWxseSwgdGhlIGhhbmRsaW5nIG9mIG1lZGlhdGVkIGRldmljZXMgKG1kZXZzKS4gVGhlICYjMzQ7b25fY2ZnX3JlbW92ZSYjMzQ7IHBhcnQgc3Ryb25nbHkgc3VnZ2VzdHMgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIHRyaWdnZXJlZCB3aGVuIGEgY29uZmlndXJhdGlvbiBmb3IgYW4gbWRldiBpcyBiZWluZyByZW1vdmVkLCBsaWtlbHkgZHVyaW5nIGRldmljZSB1bmJpbmRpbmcsIGRyaXZlciBkZXRhY2htZW50LCBvciBhIHNpbWlsYXIgdGVhcmRvd24gc2VxdWVuY2UuCgpJ4oCZbSBhbHJlYWR5IG1lbnRhbGx5IG1hcHBpbmcgdGhpcyB0byBwb3RlbnRpYWwgYXJlYXMgb2YgaW50ZXJlc3Q6CgoqICAgKipSZXNvdXJjZSBDbGVhbnVwOioqIElzIHRoaXMgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgYWxsb2NhdGVkIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlIG1kZXYmIzM5O3MgY29uZmlndXJhdGlvbj8gSSBzdXNwZWN0IHNvLiBJIG5lZWQgdG8gYmUgdGhpbmtpbmcgYWJvdXQgbWVtb3J5IGFsbG9jYXRpb25zLCBpbnRlcnJ1cHQgdmVjdG9ycywgRE1BIG1hcHBpbmdzLCBhbmQgYW55dGhpbmcgZWxzZSB0aGUgY29uZmlndXJhdGlvbiBtaWdodCBoYXZlIHNldCB1cC4KKiAgICoqU3luY2hyb25pemF0aW9uOioqIEdpdmVuIHRoZSBjb21wbGV4aXR5IG9mIFZGSU8gYW5kIHRoZSBtdWx0aS10aHJlYWRlZCBuYXR1cmUgb2YgdGhlIGtlcm5lbCwgSSYjMzk7bSBnb2luZyB0byBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IGFueSBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBwcm90ZWN0ZWQuIElzIHRoZXJlIGEgc3BpbmxvY2ssIG11dGV4LCBvciBvdGhlciBtZWNoYW5pc20gaGVyZT8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIEkgbmVlZCB0byBpZGVudGlmeT8KKiAgICoqRXJyb3IgSGFuZGxpbmc6KiogV2hhdCYjMzk7cyB0aGUgZXJyb3ItaGFuZGxpbmcgc3RyYXRlZ3k/IERvZXMgdGhlIGZ1bmN0aW9uIHJldHVybiBlcnJvciBjb2Rlcywgb3IgZG9lcyBpdCBwYW5pYz8gV2hhdCBzcGVjaWZpYyBlcnJvcnMgY2FuIG9jY3VyIGR1cmluZyB0aGUgcmVtb3ZhbCBwcm9jZXNzPyBJIG5lZWQgdG8ga25vdyBob3cgcmVzaWxpZW50IHRoaXMgZnVuY3Rpb24gaXMuCiogICAqKkNhbGwgU2l0ZXM6KiogV2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBjYWxsZWQgZnJvbT8gS25vd2luZyB0aGUgY2FsbGVycyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBzZXF1ZW5jZSBvZiBldmVudHMgYW5kIHRoZSBjb250ZXh0IGluIHdoaWNoIGB2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZWAgb3BlcmF0ZXMuIGBncmVwYCBhbmQgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2YgVkZJTyYjMzk7cyBkZXZpY2UgbW9kZWwgc2hvdWxkIGhlbHAgbWUgc29ydCB0aGF0IG91dCBxdWlja2x5LgoqICAgKipTaWRlIEVmZmVjdHM6KiogQXJlIHRoZXJlIGFueSBzaWRlIGVmZmVjdHM/IEFueSBjaGFuZ2VzIHRvIG90aGVyIFZGSU8gb3IgZGV2aWNlIHN0YXRlPyBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgYW55IGNvZGUgdGhhdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBkYXRhIHN0cnVjdHVyZXMgb3IgY2FsbHMgb3V0IHRvIG90aGVyIFZGSU8tcmVsYXRlZCBmdW5jdGlvbnMuCgpNeSBhcHByb2FjaCB3aWxsIGJlIG1ldGhvZGljYWwuIEkgd2lsbCBxdWlja2x5IHNjYW4gdGhlIGZ1bmN0aW9uIGJvZHkgZm9yIGtleSBpbmRpY2F0b3JzOiBsb2NraW5nLCByZXNvdXJjZSBkZWFsbG9jYXRpb24sIGVycm9yIGNoZWNraW5nLCBhbmQgaW50ZXJhY3Rpb25zIHdpdGggVkZJTyBjb3JlIGRhdGEgc3RydWN0dXJlcy4gQWZ0ZXIgdGhhdCwgSSYjMzk7bGwgdHJhY2UgaXRzIGNhbGxlcnMgdG8gYnVpbGQgYSBjb21wcmVoZW5zaXZlIHBpY3R1cmUgb2YgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLiBUaGUgZGV2aWwgaXMgYWx3YXlzIGluIHRoZSBkZXRhaWxzLCBzbyBJIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbi4gSSBhbHNvIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZnVuY3Rpb24gZG9lc24mIzM5O3QgbGVhayByZXNvdXJjZXMgb3IgbGVhdmUgYW55IGxpbmdlcmluZyBzdGF0ZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI1OTg9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUodW5zaWduZWQgbG9uZyAqYXBfcmVtb3ZlLFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjMxLS8qKlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI2MzI6ICogdmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmUgLSByZXNwb25kcyB0byB0aGUgcmVtb3ZhbCBvZiBhZGFwdGVycywgZG9tYWlucyBhbmRcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjMzLSAqXHRcdFx0XHRjb250cm9sIGRvbWFpbnMgZnJvbSB0aGUgaG9zdCBBUCBjb25maWd1cmF0aW9uXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2MzgtICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjYzOTpzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZShzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jb25maWdfaW5mbyxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjQwLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqcHJldl9jb25maWdfaW5mbylcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjgwND12b2lkIHZmaW9fYXBfb25fY2ZnX2NoYW5nZWQoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjdXJfY2ZnX2luZm8sXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4MTEtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjgxMjpcdHZmaW9fYXBfbWRldl9vbl9jZmdfcmVtb3ZlKGN1cl9jZmdfaW5mbywgcHJldl9jZmdfaW5mbyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgxMy1cdHZmaW9fYXBfbWRldl9vbl9jZmdfYWRkKGN1cl9jZmdfaW5mbywgcHJldl9jZmdfaW5mbyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIwMAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd24sIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQ6CgoqKlRyYWNpbmcgYHZmaW9fYXBfb25fY2ZnX2NoYW5nZWRgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIGZ1bmN0aW9uIG5hbWUsIGB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkYCwgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgdGhpcyBpcyBhIGNhbGxiYWNrIG9yIGhhbmRsZXIgd2l0aGluIHRoZSBWRklPIChWaXJ0dWFsIEZ1bmN0aW9uIEkvTykgZnJhbWV3b3JrLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIGNoYW5nZXMgdG8gdGhlIGNvbmZpZ3VyYXRpb24gb2YgYW4gSS9PIGRldmljZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgKndoYXQqIGNvbmZpZ3VyYXRpb24gaXMgY2hhbmdpbmcsIGFuZCAqd2h5KiB0aGlzIGhhbmRsZXIgaXMgdGhlIG9uZSBiZWluZyB0cmlnZ2VyZWQuIElzIGl0IGEgaG90cGx1ZyBldmVudD8gQSBkZXZpY2UgcmUtZW51bWVyYXRpb24/IEEgdXNlci1zcGFjZSBjb21tYW5kPyBPciwgaXMgaXQgZHVlIHRvIHRoZSBpbnRlcm5hbCBvcGVyYXRpb24gb2YgdGhlIFZGSU8gc3lzdGVtIGl0c2VsZj8KCk15IGZpcnN0IHN0ZXAgd291bGQgYmUgdG8gZmlndXJlIG91dCB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tLCBieSBjcm9zcy1yZWZlcmVuY2luZyBpdCB3aXRoIHRoZSBjYWxsIHN0YWNrLiBBIHF1aWNrIHNlYXJjaCBzaG91bGQgcmV2ZWFsIHRoZSBsaWtlbHkgY2FsbGVycywgYWxsb3dpbmcgbWUgdG8gYnVpbGQgYSBjb250ZXh0dWFsIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBjb25maWd1cmF0aW9uIGNoYW5nZSBpcyBiZWluZyBpbml0aWF0ZWQuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBmb3IgY29kZSB0aGF0IHNldHMgdXAgb3IgbWFuYWdlcyBWRklPIGRldmljZXMsIHByb2JhYmx5IGludm9sdmluZyB0aGluZ3MgbGlrZSBQQ0kgZGV2aWNlIHN0cnVjdHVyZXMsIERNQSBtYXBwaW5ncywgYW5kIHBlcmhhcHMgZXZlbiBkZXZpY2Utc3BlY2lmaWMgcmVnaXN0ZXJzLgoKTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbi4gV2hhdCBraW5kIG9mIGRhdGEgaXMgcGFzc2VkIGluPyBJcyBpdCB0aGUgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgaXRzZWxmLCBvciBhIHBvaW50ZXIgdG8gc29tZSBWRklPLWludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjaGFuZ2U/IEFyZSB0aGVyZSBkZXZpY2UgaWRlbnRpZmllcnM/IENvbnRleHR1YWwgaW5mb3JtYXRpb24/IFVuZGVyc3RhbmRpbmcgdGhlIGlucHV0IHBhcmFtZXRlcnMgd2lsbCBiZSB2aXRhbCB0byBkZWNpcGhlcmluZyB0aGUgZnVuY3Rpb27igJlzIGxvZ2ljLgoKRnJvbSB0aGVyZSwgSSYjMzk7bGwgZXhhbWluZSB0aGUgZnVuY3Rpb24mIzM5O3MgaW50ZXJuYWwgd29ya2luZ3MuIFdoYXQmIzM5O3MgaXQgZG9pbmc/IElzIGl0IG1hbmlwdWxhdGluZyBkZXZpY2Utc3BlY2lmaWMgcmVnaXN0ZXJzPyBJcyBpdCB1cGRhdGluZyBWRklPIGRhdGEgc3RydWN0dXJlcz8gSXMgaXQgbm90aWZ5aW5nIHVzZXItc3BhY2UgdmlhIGFuIGV2ZW50ZmQgb3IgaW9jdGw/IERvZXMgaXQgaW52b2x2ZSBhY3F1aXJpbmcgYW55IGxvY2tzIG9yIGNyaXRpY2FsIHNlY3Rpb25zIHRvIG1haW50YWluIGRhdGEgY29uc2lzdGVuY3k/IEkmIzM5O2QgZXhwZWN0IGl0IHRvIGJlIGhhbmRsaW5nIGFzcGVjdHMgcmVsYXRlZCB0byBkZXZpY2UgaW5pdGlhbGl6YXRpb24sIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBwZXJtaXNzaW9uIG1hbmFnZW1lbnQuIEFueSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBNTUlPIHJlZ2lvbiBvciBETUEgc2V0dGluZ3Mgd2lsbCBiZSBvZiBwYXJ0aWN1bGFyIGludGVyZXN0LiBJJiMzOTtsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgbWVtb3J5IGNvcnJ1cHRpb24uCgpGaW5hbGx5LCBJJiMzOTtsbCBuZWVkIHRvIGNvbnNpZGVyIHRoZSBsYXJnZXIgcGljdHVyZS4gSG93IGRvZXMgdGhpcyBmaXQgaW50byB0aGUgb3ZlcmFsbCBWRklPIGRldmljZSBsaWZlY3ljbGU/IFdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgY29uc2VxdWVuY2VzIGlmIHRoaXMgaGFuZGxlciBmYWlscyBvciBoYXMgYW4gdW5leHBlY3RlZCBzaWRlIGVmZmVjdD8gQXJlIHRoZXJlIG90aGVyIHJlbGF0ZWQgaGFuZGxlcnM/IEFyZSB0aGVyZSBwb3RlbnRpYWwgc2VjdXJpdHkgaW1wbGljYXRpb25zIG9mIGFsbG93aW5nIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyBvbiB0aGUgSU9NTVUgc2lkZT8gQXJlIHdlIHdvcmtpbmcgaW4gYSBzZWN1cmUgZW52aXJvbm1lbnQ/IEFuZCwgSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgaGFwcGVucyBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZzsgYXJlIHRoZXJlIGVycm9yIHBhdGhzIG9yIGxvZ2dpbmcgaW4gcGxhY2U/IFRoaXMgd2lsbCBpbmZvcm0gbXkgYXNzZXNzbWVudCBvZiB0aGUgZnVuY3Rpb24mIzM5O3MgY29ycmVjdG5lc3MsIHJvYnVzdG5lc3MsIGFuZCBwZXJmb3JtYW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jPTU4PXN0YXRpYyBzdHJ1Y3QgYXBfZHJpdmVyIHZmaW9fYXBfZHJ2ID0ge1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy02MS1cdC5pbl91c2UgPSB2ZmlvX2FwX21kZXZfcmVzb3VyY2VfaW5fdXNlLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjYyOlx0Lm9uX2NvbmZpZ19jaGFuZ2VkID0gdmZpb19hcF9vbl9jZmdfY2hhbmdlZCxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy02My1cdC5vbl9zY2FuX2NvbXBsZXRlID0gdmZpb19hcF9vbl9zY2FuX2NvbXBsZXRlLFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yNzcyPXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9vbl9jZmdfYWRkKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqY3VyX2NvbmZpZ19pbmZvLFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNzk3LS8qKlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI3OTg6ICogdmZpb19hcF9vbl9jZmdfY2hhbmdlZCAtIGhhbmRsZXMgbm90aWZpY2F0aW9uIG9mIGNoYW5nZXMgdG8gdGhlIGhvc3QgQVBcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNzk5LSAqXHRcdFx0ICAgIGNvbmZpZ3VyYXRpb24uXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4MDMtICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjgwNDp2b2lkIHZmaW9fYXBfb25fY2ZnX2NoYW5nZWQoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjdXJfY2ZnX2luZm8sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgwNS1cdFx0XHQgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpwcmV2X2NmZ19pbmZvKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg9MTYxPWludCB2ZmlvX2FwX21kZXZfcmVzb3VyY2VfaW5fdXNlKHVuc2lnbmVkIGxvbmcgKmFwbSwgdW5zaWduZWQgbG9uZyAqYXFtKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtMTYyLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaDoxNjM6dm9pZCB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqbmV3X2NvbmZpZ19pbmZvLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaC0xNjQtXHRcdFx0ICAgIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqb2xkX2NvbmZpZ19pbmZvKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDEyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFQIENvbmZpZ3VyYXRpb24gQ2hhbmdlcyBpbiBhIFZpcnR1YWxpemVkIFdvcmxkKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBvbl9jb25maWdfY2hhbmdlZGAgY2FsbGJhY2ssIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIEFQIGNvbmZpZ3VyYXRpb25zLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtDYW4gdGhpcyBldmVuICpoYXBwZW4qIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/JiMzNDsgSXQmIzM5O3MgczM5MCBzcGVjaWZpYywgd2hpY2ggYWxyZWFkeSBuYXJyb3dzIHRoZSBzY29wZSwgYW5kIGl0JiMzOTtzIHRpZWQgdG8gQVAgY3J5cHRvIGNhcmRzLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZXNlIEFQIGNhcmRzIGFyZSBlbXVsYXRhYmxlIHdpdGhpbiBRRU1VLiBJIGtub3cgUUVNVSBoYXMgc29tZSBzdXBwb3J0IGZvciBgdmZpby1hcGAsIGJ1dCBJIHNlZW0gdG8gcmVjYWxsIHRoYXQmIzM5O3MgZm9yICpwYXNzaW5nIHRocm91Z2gqIHBoeXNpY2FsIEFQIGNhcmRzIHRvIGd1ZXN0IFZNcywgd2hpY2ggaXMgbm90IHdoYXQgSSYjMzk7bSBpbnRlcmVzdGVkIGluIGhlcmUuCgpIb2xkIG9uLCBJIHNlZW0gdG8gcmVjYWxsIHNvbWV0aGluZyAtIHRoZSBkb2N1bWVudGF0aW9uIG1lbnRpb25zIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW5oZXJlbnRseSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBzZXR1cHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGlzIGludm9sdmVkLiBBcmUgdGhlIEFQIGNyeXB0byBjYXJkcyBlbXVsYXRlZCBpbiBRRU1VPyBJIHRoaW5rIEkgbmVlZCB0byByZXZpc2l0IHRoZSBRRU1VIGRvY3VtZW50YXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlIGlzIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gYXZhaWxhYmxlIGZvciB0aGUgQVAgYnVzIGl0c2VsZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXBfY29uZmlnX2luZm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTEwNT1zdGF0aWMgREVDTEFSRV9DT01QTEVUSU9OKGFwX2FwcW5fYmluZGluZ3NfY29tcGxldGUpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMDYtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEwNzpzdGF0aWMgc3RydWN0IGFwX2NvbmZpZ19pbmZvIHFjaVsyXTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTA4OnN0YXRpYyBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmNvbnN0IGFwX3FjaV9pbmZvID0gXHUwMDI2cWNpWzBdO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMDk6c3RhdGljIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqY29uc3QgYXBfcWNpX2luZm9fb2xkID0gXHUwMDI2cWNpWzFdO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTAtXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yMzExPXN0YXRpYyBib29sIGFwX2dldF9jb25maWd1cmF0aW9uKHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzE5LVx0cmV0dXJuIG1lbWNtcChhcF9xY2lfaW5mbywgYXBfcWNpX2luZm9fb2xkLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzIwOlx0XHQgICAgICBzaXplb2Yoc3RydWN0IGFwX2NvbmZpZ19pbmZvKSkgIT0gMDtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMyMS19XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuaD0xMzU9c3RydWN0IGFwX2RyaXZlciB7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuaC0xNDgtXHQgKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmg6MTQ5Olx0dm9pZCAoKm9uX2NvbmZpZ19jaGFuZ2VkKShzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKm5ld19jb25maWdfaW5mbyxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmg6MTUwOlx0XHRcdFx0ICBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKm9sZF9jb25maWdfaW5mbyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5oLTE1MS1cdC8qXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuaC0xNTYtXHQgKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmg6MTU3Olx0dm9pZCAoKm9uX3NjYW5fY29tcGxldGUpKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqbmV3X2NvbmZpZ19pbmZvLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuaDoxNTg6XHRcdFx0XHQgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpvbGRfY29uZmlnX2luZm8pO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuaC0xNTktfTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9NTgxPXN0YXRpYyBpbnQgaGFuZGxlX3BxYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy02NDQtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6NjQ1OnN0YXRpYyB2b2lkIHZmaW9fYXBfbWF0cml4X2luaXQoc3RydWN0IGFwX2NvbmZpZ19pbmZvICppbmZvLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTY0Ni1cdFx0XHRcdHN0cnVjdCBhcF9tYXRyaXggKm1hdHJpeClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjU5OD1zdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZSh1bnNpZ25lZCBsb25nICphcF9yZW1vdmUsXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2MzgtICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjYzOTpzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZShzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jb25maWdfaW5mbyxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNjQwOlx0XHRcdFx0ICAgICAgIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqcHJldl9jb25maWdfaW5mbylcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjQxLXtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9Mjc0MT1zdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfY2ZnX2FkZCh1bnNpZ25lZCBsb25nICphcG1fYWRkLCB1bnNpZ25lZCBsb25nICphcW1fYWRkLFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNzcxLSAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI3NzI6c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X29uX2NmZ19hZGQoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjdXJfY29uZmlnX2luZm8sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6Mjc3MzpcdFx0XHRcdCAgICBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKnByZXZfY29uZmlnX2luZm8pXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjc3NC17XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4MDMtICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjgwNDp2b2lkIHZmaW9fYXBfb25fY2ZnX2NoYW5nZWQoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjdXJfY2ZnX2luZm8sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjgwNTpcdFx0XHQgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpwcmV2X2NmZ19pbmZvKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4MDYte1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yODE5PXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9ob3RfcGx1Z19jZmcoc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldilcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjg0OC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODQ5OnZvaWQgdmZpb19hcF9vbl9zY2FuX2NvbXBsZXRlKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqbmV3X2NvbmZpZ19pbmZvLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI4NTA6XHRcdFx0ICAgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpvbGRfY29uZmlnX2luZm8pXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjg1MS17XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaD00Nz1zdHJ1Y3QgYXBfbWF0cml4X2RldiB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTQ4LVx0c3RydWN0IGRldmljZSBkZXZpY2U7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjQ5Olx0c3RydWN0IGFwX2NvbmZpZ19pbmZvIGluZm87XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTUwLVx0c3RydWN0IGxpc3RfaGVhZCBtZGV2X2xpc3Q7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaD0xNjE9aW50IHZmaW9fYXBfbWRldl9yZXNvdXJjZV9pbl91c2UodW5zaWduZWQgbG9uZyAqYXBtLCB1bnNpZ25lZCBsb25nICphcW0pO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaC0xNjItXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjE2Mzp2b2lkIHZmaW9fYXBfb25fY2ZnX2NoYW5nZWQoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpuZXdfY29uZmlnX2luZm8sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjE2NDpcdFx0XHQgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpvbGRfY29uZmlnX2luZm8pO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaDoxNjU6dm9pZCB2ZmlvX2FwX29uX3NjYW5fY29tcGxldGUoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpuZXdfY29uZmlnX2luZm8sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjE2NjpcdFx0XHQgICAgICBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKm9sZF9jb25maWdfaW5mbyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTE2Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzY5MgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFZGSU8tQVAgQ29uZmlndXJhdGlvbiBSZW1vdmFsKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlYCBmdW5jdGlvbi4gSSBzZWUgaXQmIzM5O3MgYnVyaWVkIGluIGBkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmNgLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoIGluaXRpYWxseS4gVHJhY2luZyB0aGUgY2FsbHMsIEkgc2VlIGB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZWAgaXMgaW52b2tlZCBieSBgdmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmVgLCB3aGljaCBpbiB0dXJuLCBpcyBjYWxsZWQgZnJvbSBgdmZpb19hcF9vbl9jZmdfY2hhbmdlZGAuIEFoLCB0aGF0IG1ha2VzIHNlbnNlLiBgdmZpb19hcF9vbl9jZmdfY2hhbmdlZGAgaXMgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLCByZWdpc3RlcmVkIGluIGB2ZmlvX2FwX2RydmAgYXMgYG9uX2NvbmZpZ19jaGFuZ2VkYC4gU28gdGhpcyB3aG9sZSBzZXF1ZW5jZSBpcyBob3cgdGhlIGRyaXZlciByZWFjdHMgdG8gQVAgY29uZmlndXJhdGlvbiBjaGFuZ2VzLgoKTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBjYW4gdGhpcyBlbnRpcmUgc2VxdWVuY2UgYmUgdHJpZ2dlcmVkIHdpdGhvdXQgYWN0dWFsIHBoeXNpY2FsIEFQIGhhcmR3YXJlIGJlaW5nIGludm9sdmVkPyBJcyB0aGVyZSBhIHN5c2ZzIGludGVyZmFjZSBvciBzb21lIG90aGVyIG1lY2hhbmlzbSB0aGF0IGNvdWxkIGZha2Ugb3Igc2ltdWxhdGUgdGhlc2UgY29uZmlndXJhdGlvbiBjaGFuZ2VzPyBPciBpcyB0aGlzIGNoYW5nZSBleGNsdXNpdmVseSBoYXJkd2FyZS1kcml2ZW4/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBwb3NzaWJsZSBhdHRhY2sgdmVjdG9ycyByZWxhdGVkIHRvIHRyaWdnZXJpbmcgdGhpcywgdG8gc2VlIGlmIEkgY2FuIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGggZnJvbSB1c2Vyc3BhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fYXBfb25fY2ZnX2NoYW5nZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM9NTg9c3RhdGljIHN0cnVjdCBhcF9kcml2ZXIgdmZpb19hcF9kcnYgPSB7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTYxLVx0LmluX3VzZSA9IHZmaW9fYXBfbWRldl9yZXNvdXJjZV9pbl91c2UsXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6NjI6XHQub25fY29uZmlnX2NoYW5nZWQgPSB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTYzLVx0Lm9uX3NjYW5fY29tcGxldGUgPSB2ZmlvX2FwX29uX3NjYW5fY29tcGxldGUsXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI3NzI9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X29uX2NmZ19hZGQoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjdXJfY29uZmlnX2luZm8sXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI3OTctLyoqXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6Mjc5ODogKiB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkIC0gaGFuZGxlcyBub3RpZmljYXRpb24gb2YgY2hhbmdlcyB0byB0aGUgaG9zdCBBUFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI3OTktICpcdFx0XHQgICAgY29uZmlndXJhdGlvbi5cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgwMy0gKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODA0OnZvaWQgdmZpb19hcF9vbl9jZmdfY2hhbmdlZChzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jZmdfaW5mbyxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODA1LVx0XHRcdCAgICBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKnByZXZfY2ZnX2luZm8pXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaD0xNjE9aW50IHZmaW9fYXBfbWRldl9yZXNvdXJjZV9pbl91c2UodW5zaWduZWQgbG9uZyAqYXBtLCB1bnNpZ25lZCBsb25nICphcW0pO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaC0xNjItXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjE2Mzp2b2lkIHZmaW9fYXBfb25fY2ZnX2NoYW5nZWQoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpuZXdfY29uZmlnX2luZm8sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTE2NC1cdFx0XHQgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpvbGRfY29uZmlnX2luZm8pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzI4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpZ2dpbmcgaW50byB0aGUgQ29uZmlndXJhdGlvbiBDaGFuZ2UgTWVjaGFuaXNtKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgY29uZmlndXJhdGlvbiBjaGFuZ2UuIFdoZXJlIGRvZXMgdGhlIHN5c3RlbSBhY3R1YWxseSAqcmVhY3QqIHRvIHRoZXNlIGNoYW5nZXM/IE15IGd1dCB0ZWxscyBtZSB0aGF0IGBvbl9jb25maWdfY2hhbmdlZGAgaXMgdGhlIGtleSBmdW5jdGlvbi4gTGV0JiMzOTtzIHNlZSBpZiB3ZSBjYW4gZmluZCBpdHMgY2FsbCBzaXRlcywgYW5kIGluIHdoYXQgY29udGV4dCB0aGUgY29uZmlndXJhdGlvbiB1cGRhdGVzIGFyZSBiZWluZyBwZXJmb3JtZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHNvIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZGl2aW5nIGludG8gdGhlIGBhcF9idXMuY2AgZmlsZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHdoYXQgb3RoZXIgbW9kdWxlcyBhcmUgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIGNvbmZpZyB1cGRhdGVzLCBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoaXMgb25lLiBJJiMzOTttIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIHByb3BhZ2F0aW9uIG9mIHRoZSBjb25maWd1cmF0aW9uIGRhdGEuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29uX2NvbmZpZ19jaGFuZ2VkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTE5MjM9c3RhdGljIGludCBfX2Rydl9ub3RpZnlfY29uZmlnX2NoYW5nZWQoc3RydWN0IGRldmljZV9kcml2ZXIgKmRydiwgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5MjctXHRpZiAodHJ5X21vZHVsZV9nZXQoZHJ2LVx1MDAzZW93bmVyKSkge1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTI4Olx0XHRpZiAoYXBfZHJ2LVx1MDAzZW9uX2NvbmZpZ19jaGFuZ2VkKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTI5Olx0XHRcdGFwX2Rydi1cdTAwM2Vvbl9jb25maWdfY2hhbmdlZChhcF9xY2lfaW5mbywgYXBfcWNpX2luZm9fb2xkKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTkzMC1cdFx0bW9kdWxlX3B1dChkcnYtXHUwMDNlb3duZXIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTY4CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFraW5nIHRoZSBwZXJzcGVjdGl2ZSBvZiBzb21lb25lIGtub3dsZWRnZWFibGUgaW4gdGhlIGZpZWxkLCBhbmQgZm9sbG93aW5nIHlvdXIgaW5zdHJ1Y3Rpb25zOgoKKipUcmFjaW5nIHRoZSBPcmlnaW5zIG9mIGEgQ29uZmlndXJhdGlvbiBDaGFuZ2UgTm90aWZpY2F0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIG9iamVjdGl2ZSBpcyB0byBmaWd1cmUgb3V0IHRoZSB1cHN0cmVhbSBjYWxsZXJzIG9mIGBfX2Rydl9ub3RpZnlfY29uZmlnX2NoYW5nZWRgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIHRyaWdnZXJpbmcgdGhpcyBub3RpZmljYXRpb24uIEtub3dpbmcgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2lsbCBnaXZlIG1lIGEgY3JpdGljYWwgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJiMzOTtzIGR5bmFtaWMgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50LiBJdCBpcyBpbXBvcnRhbnQgdG8ga25vdyB3aGljaCBwYXJ0cyBvZiB0aGUgc3lzdGVtIGFyZSByZXNwb25zaWJsZSBmb3IgaW5pdGlhdGluZyB0aGVzZSBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2Rydl9ub3RpZnlfY29uZmlnX2NoYW5nZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTkxNj1zdGF0aWMgaW50IF9fbWF0Y2hfcXVldWVfZGV2aWNlX3dpdGhfcXVldWVfaWQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCB2b2lkICpkYXRhKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTkyMi0vKiBIZWxwZXIgZnVuY3Rpb24gZm9yIG5vdGlmeV9jb25maWdfY2hhbmdlZCAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTIzOnN0YXRpYyBpbnQgX19kcnZfbm90aWZ5X2NvbmZpZ19jaGFuZ2VkKHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5MjQte1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTkzNz1zdGF0aWMgaW5saW5lIHZvaWQgbm90aWZ5X2NvbmZpZ19jaGFuZ2VkKHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTM5LVx0YnVzX2Zvcl9lYWNoX2RydihcdTAwMjZhcF9idXNfdHlwZSwgTlVMTCwgTlVMTCxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTk0MDpcdFx0XHQgX19kcnZfbm90aWZ5X2NvbmZpZ19jaGFuZ2VkKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTk0MS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2MjUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlRyYWNpbmcgdGhlIENvbmZpZ3VyYXRpb24gQ2hhbmdlIE5vdGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgYG5vdGlmeV9jb25maWdfY2hhbmdlZGAgZnVuY3Rpb24uIE15IGZpcnN0IHN0ZXAgaXMgdG8gdHJhY2UgaXRzIGludm9jYXRpb25zLiBJIHdhbnQgdG8gc2VlICp3aGVyZSogdGhpcyBub3RpZmljYXRpb24gaXMgYmVpbmcgdHJpZ2dlcmVkLiBLbm93aW5nIHRoZSBjYWxsIHNpdGVzIHdpbGwgaW1tZWRpYXRlbHkgZ2l2ZSBtZSBjb250ZXh0OiBXaGF0IG1vZHVsZXMgYXJlIGxpc3RlbmluZz8gV2hhdCBldmVudHMgYXJlIGNhdXNpbmcgYSBjb25maWd1cmF0aW9uIGNoYW5nZSBub3RpZmljYXRpb24/IFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGl0cyBiZWhhdmlvciBhbmQgcG90ZW50aWFsIHJhbWlmaWNhdGlvbnMgdGhyb3VnaG91dCB0aGUgc3lzdGVtLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCBtZXRob2RzLCBsaWtlbHkgYSBjb21iaW5hdGlvbiBvZiBncmVwLCBJREUgc2VhcmNoLCBhbmQgcG90ZW50aWFsbHkgZXZlbiBzb21lIHN0YXRpYyBhbmFseXNpcyB0b29scyBkZXBlbmRpbmcgb24gdGhlIHByb2plY3QuIFRoZSBnb2FsIGlzIHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiBpdHMgcmVhY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25vdGlmeV9jb25maWdfY2hhbmdlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xOTE2PXN0YXRpYyBpbnQgX19tYXRjaF9xdWV1ZV9kZXZpY2Vfd2l0aF9xdWV1ZV9pZChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTIxLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTIyOi8qIEhlbHBlciBmdW5jdGlvbiBmb3Igbm90aWZ5X2NvbmZpZ19jaGFuZ2VkICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE5MjM6c3RhdGljIGludCBfX2Rydl9ub3RpZnlfY29uZmlnX2NoYW5nZWQoc3RydWN0IGRldmljZV9kcml2ZXIgKmRydiwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTkyNC17XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTM2LS8qIE5vdGlmeSBhbGwgZHJpdmVycyBhYm91dCBhbiBxY2kgY29uZmlnIGNoYW5nZSAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTM3OnN0YXRpYyBpbmxpbmUgdm9pZCBub3RpZnlfY29uZmlnX2NoYW5nZWQodm9pZClcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTkzOC17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5MzktXHRidXNfZm9yX2VhY2hfZHJ2KFx1MDAyNmFwX2J1c190eXBlLCBOVUxMLCBOVUxMLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTQwOlx0XHRcdCBfX2Rydl9ub3RpZnlfY29uZmlnX2NoYW5nZWQpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTQxLX1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTIzNzM9c3RhdGljIGJvb2wgYXBfc2Nhbl9idXModm9pZClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzOTItXHRcdC8qIHBvc3QgYSBjb25maWcgY2hhbmdlIG5vdGlmeSAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzkzOlx0XHRub3RpZnlfY29uZmlnX2NoYW5nZWQoKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM5NC1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAzMDIKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gQ2hhbmdlIE5vdGlmaWNhdGlvbiBQYXRoKioKCkFscmlnaHQsIHNvIGBhcF9zY2FuX2J1c2AgaXMgdHJpZ2dlcmluZyBgbm90aWZ5X2NvbmZpZ19jaGFuZ2VkYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIGl0IGltbWVkaWF0ZWx5IHByb21wdHMgYSBkZWVwZXIgZGl2ZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O09rYXksIHdoeSBpcyB0aGUgYWNjZXNzIHBvaW50IHNjYW5uaW5nIGJ1cyBnZW5lcmF0aW5nIGEgY29uZmlndXJhdGlvbiBjaGFuZ2UgZXZlbnQ/IFdoYXQgZXhhY3RseSBpcyBjaGFuZ2luZz8mIzM0OyBJJiMzOTttIGFzc3VtaW5nIHRoZXJlJiMzOTtzIHNvbWUgaW50ZXJhY3Rpb24gdGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgc2Nhbm5pbmcgcHJvY2VzcyBhbmQgdGhlIGNvbmZpZ3VyYXRpb24gc3RhdGUuCgpUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogJiMzNDtXaGVyZSAqZWxzZSogZG9lcyB0aGlzIGZ1bmN0aW9uIGdldCBjYWxsZWQ/JiMzNDsgSWRlbnRpZnlpbmcgdGhlIGNhbGxlcnMgb2YgYGFwX3NjYW5fYnVzYCBpcyBrZXkuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgYXJvdW5kIHRoZXNlIGNhbGxzIHdpbGwgcHJvdmlkZSBlc3NlbnRpYWwgaW5mb3JtYXRpb24sIHRvIGRldGVybWluZTogdGhlIHN5c3RlbSYjMzk7cyByZWFjdGlvbiB0byB0aGUgZXZlbnQ7IHRoZSBvcmlnaW4gb2YgdGhlIGV2ZW50JiMzOTtzIHRyaWdnZXIgYW5kIGl0JiMzOTtzIGNvbnNlcXVlbmNlIHRvIHRoZSBjb25maWd1cmF0aW9uLiBJIHdhbnQgdG8gYnVpbGQgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoaXMgaW50ZXJhY3Rpb24uIFNvLCBteSBuZXh0IHN0ZXAgaXMgY2xlYXIg4oCTIEkmIzM5O20gZ29pbmcgdG8gdHJhY2UgdGhlIGNhbGwgZ3JhcGggYW5kIHNlZSB3aG8gdGhlIHBhcmVudCBmdW5jdGlvbnMgYXJlLCBhbmQgdGhlIG92ZXJhbGwgY2hhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FwX3NjYW5fYnVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTEzNT1NT0RVTEVfUEFSTV9ERVNDKG1zZ3Bvb2xfbWluX2l0ZW1zLCBcJiMzNDtBUCBtZXNzYWdlIHBvb2wgbWluaW1hbCBpdGVtc1wmIzM0Oyk7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzktICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE0MDpzdGF0aWMgYm9vbCBhcF9zY2FuX2J1cyh2b2lkKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTQxOnN0YXRpYyBib29sIGFwX3NjYW5fYnVzX3Jlc3VsdDsgLyogcmVzdWx0IG9mIGxhc3QgYXBfc2Nhbl9idXMoKSAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNDI6c3RhdGljIERFRklORV9NVVRFWChhcF9zY2FuX2J1c19tdXRleCk7IC8qIG11dGV4IGFwX3NjYW5fYnVzKCkgaW52b2NhdGlvbnMgKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTQzOnN0YXRpYyBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmFwX3NjYW5fYnVzX3Rhc2s7IC8qIHRocmVhZCBob2xkaW5nIHRoZSBzY2FuIG11dGV4ICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE0NDpzdGF0aWMgYXRvbWljNjRfdCBhcF9zY2FuX2J1c19jb3VudDsgLyogY291bnRlciBhcF9zY2FuX2J1cygpIGludm9jYXRpb25zICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE0NTpzdGF0aWMgaW50IGFwX3NjYW5fYnVzX3RpbWUgPSBBUF9DT05GSUdfVElNRTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTQ2OnN0YXRpYyBzdHJ1Y3QgdGltZXJfbGlzdCBhcF9zY2FuX2J1c190aW1lcjtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTQ3OnN0YXRpYyB2b2lkIGFwX3NjYW5fYnVzX3dxX2NhbGxiYWNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTQ4OnN0YXRpYyBERUNMQVJFX1dPUksoYXBfc2Nhbl9idXNfd29yaywgYXBfc2Nhbl9idXNfd3FfY2FsbGJhY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNDktXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz04MDI9c3RhdGljIHZvaWQgYXBfY2hlY2tfYmluZGluZ3NfY29tcGxldGUodm9pZClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTgwNS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6ODA2Olx0aWYgKGF0b21pYzY0X3JlYWQoXHUwMDI2YXBfc2Nhbl9idXNfY291bnQpIFx1MDAzZT0gMSkge1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy04MDctXHRcdGFwX2NhbGNfYm91bmRfYXBxbnMoXHUwMDI2YXBxbnMsIFx1MDAyNmJvdW5kKTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTExMTk9Ym9vbCBhcF9idXNfZm9yY2VfcmVzY2FuKHZvaWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExMjAte1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMTIxOlx0dW5zaWduZWQgbG9uZyBzY2FuX2NvdW50ZXIgPSBhdG9taWM2NF9yZWFkKFx1MDAyNmFwX3NjYW5fYnVzX2NvdW50KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTEyMi1cdGJvb2wgcmMgPSBmYWxzZTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExMzYtXHQgKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTEzNzpcdGlmIChtdXRleF9pc19sb2NrZWQoXHUwMDI2YXBfc2Nhbl9idXNfbXV0ZXgpKSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjExMzg6XHRcdGlmIChhcF9zY2FuX2J1c190YXNrID09IGN1cnJlbnQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExMzktXHRcdFx0Z290byBvdXQ7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTQyLVx0LyogVHJ5IHRvIGFjcXVpcmUgdGhlIEFQIHNjYW4gYnVzIG11dGV4ICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjExNDM6XHRpZiAobXV0ZXhfdHJ5bG9jayhcdTAwMjZhcF9zY2FuX2J1c19tdXRleCkpIHtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTE0NC1cdFx0LyogbXV0ZXggYWNxdWlyZWQsIHJ1biB0aGUgQVAgYnVzIHNjYW4gKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTE0NTpcdFx0YXBfc2Nhbl9idXNfdGFzayA9IGN1cnJlbnQ7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjExNDY6XHRcdGFwX3NjYW5fYnVzX3Jlc3VsdCA9IGFwX3NjYW5fYnVzKCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjExNDc6XHRcdHJjID0gYXBfc2Nhbl9idXNfcmVzdWx0O1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMTQ4Olx0XHRhcF9zY2FuX2J1c190YXNrID0gTlVMTDtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTE0OTpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmFwX3NjYW5fYnVzX211dGV4KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTE1MC1cdFx0Z290byBvdXQ7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTU2LVx0ICogZm9yIHRoZSBsb2NrIHdoaWNoIG1lYW5zIHRoZSBvdGhlciB0YXNrIGhhcyBmaW5pc2hlZCBhbmRcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTE1NzpcdCAqIHN0b3JlZCB0aGUgcmVzdWx0IGluIGFwX3NjYW5fYnVzX3Jlc3VsdC5cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTE1OC1cdCAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMTU5Olx0aWYgKG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZShcdTAwMjZhcF9zY2FuX2J1c19tdXRleCkpIHtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTE2MC1cdFx0Lyogc29tZSBlcnJvciBvY2N1cnJlZCwgaWdub3JlIGFuZCBnbyBvdXQgKi9cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExNjItXHR9XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjExNjM6XHRyYyA9IGFwX3NjYW5fYnVzX3Jlc3VsdDtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTE2NDpcdG11dGV4X3VubG9jayhcdTAwMjZhcF9zY2FuX2J1c19tdXRleCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExNjUtXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xMzk4PXN0YXRpYyBzc2l6ZV90IGNvbmZpZ190aW1lX3Nob3coY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNoYXIgKmJ1ZilcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM5OS17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE0MDA6XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0OyVkXFxuXCYjMzQ7LCBhcF9zY2FuX2J1c190aW1lKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTQwMS19XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xNDAzPXN0YXRpYyBzc2l6ZV90IGNvbmZpZ190aW1lX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTQwOS1cdFx0cmV0dXJuIC1FSU5WQUw7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE0MTA6XHRhcF9zY2FuX2J1c190aW1lID0gdGltZTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTQxMTpcdG1vZF90aW1lcihcdTAwMjZhcF9zY2FuX2J1c190aW1lciwgamlmZmllcyAmIzQzOyBhcF9zY2FuX2J1c190aW1lICogSFopO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNDEyLVx0cmV0dXJuIGNvdW50O1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTcwNT1zdGF0aWMgc3NpemVfdCBzY2Fuc19zaG93KGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjaGFyICpidWYpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3MDYte1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzA3Olx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDslbGx1XFxuXCYjMzQ7LCBhdG9taWM2NF9yZWFkKFx1MDAyNmFwX3NjYW5fYnVzX2NvdW50KSk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3MDgtfVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTcyMj1zdGF0aWMgc3NpemVfdCBiaW5kaW5nc19zaG93KGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjaGFyICpidWYpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzI3LVx0YXBfY2FsY19ib3VuZF9hcHFucyhcdTAwMjZhcHFucywgXHUwMDI2bik7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3Mjg6XHRpZiAoYXRvbWljNjRfcmVhZChcdTAwMjZhcF9zY2FuX2J1c19jb3VudCkgXHUwMDNlPSAxIFx1MDAyNlx1MDAyNiBuID09IGFwcW5zKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzI5LVx0XHRyYyA9IHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDsldS8ldSAoY29tcGxldGUpXFxuXCYjMzQ7LCBuLCBhcHFucyk7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xOTU5PXN0YXRpYyBpbmxpbmUgdm9pZCBub3RpZnlfc2Nhbl9jb21wbGV0ZSh2b2lkKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTk2NS0vKlxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTY2OiAqIEhlbHBlciBmdW5jdGlvbiBmb3IgYXBfc2Nhbl9idXMoKS5cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTk2Ny0gKiBSZW1vdmUgY2FyZCBkZXZpY2UgYW5kIGFzc29jaWF0ZWQgcXVldWUgZGV2aWNlcy5cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTE5Njk9c3RhdGljIGlubGluZSB2b2lkIGFwX3NjYW5fcm1fY2FyZF9kZXZfYW5kX3F1ZXVlX2RldnMoc3RydWN0IGFwX2NhcmQgKmFjKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTk3Ny0vKlxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTc4OiAqIEhlbHBlciBmdW5jdGlvbiBmb3IgYXBfc2Nhbl9idXMoKS5cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTk3OS0gKiBEb2VzIHRoZSBzY2FuIGJ1cyBqb2IgZm9yIGFsbCB0aGUgZG9tYWlucyB3aXRoaW5cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTE5ODI9c3RhdGljIGlubGluZSB2b2lkIGFwX3NjYW5fZG9tYWlucyhzdHJ1Y3QgYXBfY2FyZCAqYWMpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMTM1LS8qXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIxMzY6ICogSGVscGVyIGZ1bmN0aW9uIGZvciBhcF9zY2FuX2J1cygpLlxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMTM3LSAqIERvZXMgdGhlIHNjYW4gYnVzIGpvYiBmb3IgdGhlIGdpdmVuIGFkYXB0ZXIgaWQuXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yMzUxPXN0YXRpYyBib29sIGFwX2NvbmZpZ19oYXNfbmV3X2RvbXModm9pZClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzNjYtLyoqXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzNjc6ICogYXBfc2Nhbl9idXMoKTogU2NhbiB0aGUgQVAgYnVzIGZvciBuZXcgZGV2aWNlc1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzY4OiAqIEFsd2F5cyBydW4gdW5kZXIgbXV0ZXggYXBfc2Nhbl9idXNfbXV0ZXggcHJvdGVjdGlvblxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzY5LSAqIHdoaWNoIG5lZWRzIHRvIGdldCBsb2NrZWQvdW5sb2NrZWQgYnkgdGhlIGNhbGxlciFcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzNzItICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzNzM6c3RhdGljIGJvb2wgYXBfc2Nhbl9idXModm9pZClcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM3NC17XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDE3LVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDE4Olx0aWYgKGF0b21pYzY0X2luY19yZXR1cm4oXHUwMDI2YXBfc2Nhbl9idXNfY291bnQpID09IDEpIHtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQxOS1cdFx0cHJfZGVidWcoXCYjMzQ7aW5pdCBzY2FuIGNvbXBsZXRlXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0MjQtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI0MjU6XHRtb2RfdGltZXIoXHUwMDI2YXBfc2Nhbl9idXNfdGltZXIsIGppZmZpZXMgJiM0MzsgYXBfc2Nhbl9idXNfdGltZSAqIEhaKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQyNi1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0MzItLypcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQzMzogKiBDYWxsYmFjayBmb3IgdGhlIGFwX3NjYW5fYnVzX3RpbWVyXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI0MzQ6ICogUnVucyBwZXJpb2RpY2FsbHksIHdvcmtxdWV1ZSB0aW1lciAoYXBfc2Nhbl9idXNfdGltZSlcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQzNS0gKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQzNjpzdGF0aWMgdm9pZCBhcF9zY2FuX2J1c190aW1lcl9jYWxsYmFjayhzdHJ1Y3QgdGltZXJfbGlzdCAqdW51c2VkKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDM3LXtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0NDEtXHQgKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQ0MjpcdHF1ZXVlX3dvcmsoc3lzdGVtX2xvbmdfd3EsIFx1MDAyNmFwX3NjYW5fYnVzX3dvcmspO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDQzLX1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0NDUtLypcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQ0NjogKiBDYWxsYmFjayBmb3IgdGhlIGFwX3NjYW5fYnVzX3dvcmtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ0Ny0gKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQ0ODpzdGF0aWMgdm9pZCBhcF9zY2FuX2J1c193cV9jYWxsYmFjayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKnVudXNlZClcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ0OS17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0NTAtXHQvKlxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDUxOlx0ICogVHJ5IHRvIGludm9rZSBhbiBhcF9zY2FuX2J1cygpLiBJZiB0aGUgbXV0ZXggYWNxdWlzaXRpb25cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ1Mi1cdCAqIGZhaWxzIHRoZXJlIGlzIGN1cnJlbnRseSBhbm90aGVyIHRhc2sgYWxyZWFkeSBydW5uaW5nIHRoZVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ1NS1cdCAqIHRoZSBBUCBzY2FuIGJ1cyB0aW1lciBpcyByZS1hcm1lZCB3aGljaCB0cmlnZ2VycyB0aGVuIHRoZVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDU2Olx0ICogYXBfc2Nhbl9idXNfdGltZXJfY2FsbGJhY2sgd2hpY2ggZW5xdWV1ZXMgYSB3b3JrIGludG8gdGhlXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0NTctXHQgKiBzeXN0ZW1fbG9uZ193cSB3aGljaCBpbnZva2VzIHRoaXMgZnVuY3Rpb24gaGVyZSBhZ2Fpbi5cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ1OC1cdCAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDU5Olx0aWYgKG11dGV4X3RyeWxvY2soXHUwMDI2YXBfc2Nhbl9idXNfbXV0ZXgpKSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI0NjA6XHRcdGFwX3NjYW5fYnVzX3Rhc2sgPSBjdXJyZW50O1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDYxOlx0XHRhcF9zY2FuX2J1c19yZXN1bHQgPSBhcF9zY2FuX2J1cygpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDYyOlx0XHRhcF9zY2FuX2J1c190YXNrID0gTlVMTDtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQ2MzpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmFwX3NjYW5fYnVzX211dGV4KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ2NC1cdH1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTI0Njc9c3RhdGljIGlubGluZSB2b2lkIF9fZXhpdCBhcF9hc3luY19leGl0KHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDcxLVx0Y2hzY19ub3RpZmllcl91bnJlZ2lzdGVyKFx1MDAyNmFwX2J1c19uYik7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI0NzI6XHRjYW5jZWxfd29yayhcdTAwMjZhcF9zY2FuX2J1c193b3JrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ3My1cdGhydGltZXJfY2FuY2VsKFx1MDAyNmFwX3BvbGxfdGltZXIpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDc0Olx0dGltZXJfZGVsZXRlKFx1MDAyNmFwX3NjYW5fYnVzX3RpbWVyKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ3NS19XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yNDc3PXN0YXRpYyBpbmxpbmUgaW50IF9faW5pdCBhcF9hc3luY19pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDgxLVx0LyogU2V0dXAgdGhlIEFQIGJ1cyByZXNjYW4gdGltZXIuICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI0ODI6XHR0aW1lcl9zZXR1cChcdTAwMjZhcF9zY2FuX2J1c190aW1lciwgYXBfc2Nhbl9idXNfdGltZXJfY2FsbGJhY2ssIDApO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDgzLVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ5MS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQ5MjpcdHF1ZXVlX3dvcmsoc3lzdGVtX2xvbmdfd3EsIFx1MDAyNmFwX3NjYW5fYnVzX3dvcmspO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDkzLVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjUxMC1vdXQ6XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI1MTE6XHRjYW5jZWxfd29yayhcdTAwMjZhcF9zY2FuX2J1c193b3JrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjUxMi1cdGhydGltZXJfY2FuY2VsKFx1MDAyNmFwX3BvbGxfdGltZXIpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNTEzOlx0dGltZXJfZGVsZXRlKFx1MDAyNmFwX3NjYW5fYnVzX3RpbWVyKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjUxNC1cdHJldHVybiByYztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4MzMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIFVwZGF0ZSBQcm9jZXNzKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgYXBfc2Nhbl9idXNgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0byBiZSB0aGUgY2VudHJhbCBwb2ludCBmb3IgZGV0ZWN0aW5nIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4gSSBzZWUgdGhhdCBpdCYjMzk7cyB0cmlnZ2VyZWQgZWl0aGVyIHBlcmlvZGljYWxseSBieSBhIHRpbWVyIG9yLCBtb3JlIGRpcmVjdGx5LCBieSBhIGZvcmNlZCByZXNjYW4gdGhyb3VnaCBgYXBfYnVzX2ZvcmNlX3Jlc2NhbmAuIFRoYXQgbWFrZXMgc2Vuc2U7IGEgcmVndWxhciBjaGVjayBhbmQgYW4gaW1tZWRpYXRlIHVwZGF0ZSB3aGVuIG5lZWRlZC4KClRoZSBjcml0aWNhbCBwaWVjZSBoZXJlIGlzIHRoYXQgYGFwX3NjYW5fYnVzYCBjYWxscyBgbm90aWZ5X2NvbmZpZ19jaGFuZ2VkYCAqb25seSogaWYgYGFwX2dldF9jb25maWd1cmF0aW9uYCByZXR1cm5zIHRydWUuIFRoYXQgJiMzNDt0cnVlJiMzNDsgdmFsdWUgY2xlYXJseSBpbmRpY2F0ZXMgYSBjb25maWd1cmF0aW9uIGNoYW5nZSBoYXMgYmVlbiBkZXRlY3RlZC4gTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYGFwX2dldF9jb25maWd1cmF0aW9uYCBhY3R1YWxseSAqZGV0ZXJtaW5lcyogaWYgdGhlIGNvbmZpZ3VyYXRpb24gaXMgZGlmZmVyZW50LiBJJiMzOTttIHNlZWluZyBpdCB1c2VzIGBhcF9xY2lfaW5mb2AgYW5kIGBhcF9xY2lfaW5mb19vbGRgIOKAkyBwcmVzdW1hYmx5LCB0aGVzZSBhcmUgcmVwcmVzZW50YXRpb25zIG9mIHRoZSBjdXJyZW50IGFuZCBwcmV2aW91cyBjb25maWd1cmF0aW9ucywgcmVzcGVjdGl2ZWx5LiBTbywgdGhlIGNvcmUgbG9naWMgbXVzdCBiZSBzb21lIGtpbmQgb2YgY29tcGFyaXNvbiBiZXR3ZWVuIHRoZXNlIHR3byBzdHJ1Y3R1cmVzLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgYGFwX2dldF9jb25maWd1cmF0aW9uYCBsZXZlcmFnZXMgYGFwX3FjaV9pbmZvYCBhbmQgYGFwX3FjaV9pbmZvX29sZGAgdG8gbWFrZSB0aGF0IGRldGVybWluYXRpb24uIExldCYjMzk7cyBzZWUgaG93IGl0IGdldHMgdGhlIGNvbmZpZ3VyYXRpb24gZGF0YS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXBfZ2V0X2NvbmZpZ3VyYXRpb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjEzOT1zdGF0aWMgaW5saW5lIHZvaWQgYXBfc2Nhbl9hZGFwdGVyKGludCBhcClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMDEtLyoqXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMDI6ICogYXBfZ2V0X2NvbmZpZ3VyYXRpb24gLSBnZXQgdGhlIGhvc3QgQVAgY29uZmlndXJhdGlvblxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzAzLSAqXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzEwLSAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzExOnN0YXRpYyBib29sIGFwX2dldF9jb25maWd1cmF0aW9uKHZvaWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMTIte1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjM3Mz1zdGF0aWMgYm9vbCBhcF9zY2FuX2J1cyh2b2lkKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM4MC1cdC8qIChyZS0pZmV0Y2ggY29uZmlndXJhdGlvbiB2aWEgUUNJICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzODE6XHRjb25maWdfY2hhbmdlZCA9IGFwX2dldF9jb25maWd1cmF0aW9uKCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzODItXHRpZiAoY29uZmlnX2NoYW5nZWQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU1NzUKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdW5kZXJzdGFuZGluZyB0aGUgaW5uZXIgd29ya2luZ3MsIGFzIGlmIHRoZXNlIGFyZSBteSBvd24gdGhvdWdodHM6CgoqKkRpc3NlY3RpbmcgYGFwX2dldF9jb25maWd1cmF0aW9uYCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGZvY3VzaW5nIGluIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGBhcF9nZXRfY29uZmlndXJhdGlvbmAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoaXMgdGhpbmcgd29ya3MuIFdoYXQgYXJlIHRoZSBrZXkgZWxlbWVudHMgaXQgbmVlZHMgdG8gZGVhbCB3aXRoPyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIGFuZCBob3cgaXQgbmF2aWdhdGVzIHdoYXRldmVyIGNvbmZpZ3VyYXRpb24gc291cmNlcyBhcmUgaW4gcGxheS4gSXMgaXQgcHVsbGluZyBmcm9tIGEgZmlsZT8gQSBkYXRhYmFzZT8gRW52aXJvbm1lbnQgdmFyaWFibGVzPyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRha2VzIHByaW9yaXR5IGlmIHRoZXJlIGFyZSBvdmVybGFwcy4KCkkmIzM5O20gcHJvYmFibHkgZ29pbmcgdG8gbmVlZCB0byBsb29rIGF0IGhvdyBpdCBoYW5kbGVzIGVycm9yIGNvbmRpdGlvbnMgYW5kIGhvdyBpdCBkZWNpZGVzIHdoYXQgaW5mb3JtYXRpb24gaXMgcmVsZXZhbnQgdG8gcmV0dXJuLCBkZXBlbmRpbmcgb24gdGhlIGNvbnRleHQuIElmIGl0JiMzOTtzIHJldHVybmluZyBjb25maWcgdGhhdCBhZmZlY3RzIHNwZWNpZmljIG1vZHVsZXMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbW9kdWxlIGNvbnRleHQgaXMgYmVpbmcgcHJvdmlkZWQuCgpJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgaGludHMgYWJvdXQgZWZmaWNpZW5jeS4gRG9lcyBpdCBjYWNoZSByZXN1bHRzPyBEb2VzIGl0IHVzZSBsYXp5IGxvYWRpbmc/IEkgd2FudCB0byBrbm93IGFib3V0IHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcy4gTW9zdCBpbXBvcnRhbnRseSwgaG93IHJvYnVzdCBpcyBpdD8gQ2FuIGl0IGhhbmRsZSB1bmV4cGVjdGVkIGlucHV0cyBncmFjZWZ1bGx5PyBJIG5lZWQgdG8gZW5zdXJlIGl0JiMzOTtzIG5vdCBhIHNpbmdsZSBwb2ludCBvZiBmYWlsdXJlLgoKSeKAmW0gcGFydGljdWxhcmx5IGN1cmlvdXMgYWJvdXQgdGhlIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4gQ2FuIGl0IGJlIHRyaWNrZWQgaW50byBleHBvc2luZyBzZW5zaXRpdmUgaW5mb3JtYXRpb24/IERvZXMgaXQgcHJvcGVybHkgc2FuaXRpemUgaW5wdXRzPyBUaGlzIGlzIGNydWNpYWwgZm9yIGFueSBjb25maWd1cmF0aW9uIGZ1bmN0aW9uLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXTigJlzIGdvaW5nIG9uIHVuZGVyIHRoZSBob29kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMzAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzIzMDA6XHRcbjIzMDE6XHQvKipcbjIzMDI6XHQgKiBhcF9nZXRfY29uZmlndXJhdGlvbiAtIGdldCB0aGUgaG9zdCBBUCBjb25maWd1cmF0aW9uXG4yMzAzOlx0ICpcbjIzMDQ6XHQgKiBTdG9yZXMgdGhlIGhvc3QgQVAgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiByZXR1cm5lZCBmcm9tIHRoZSBwcmV2aW91cyBjYWxsXG4yMzA1Olx0ICogdG8gUXVlcnkgQ29uZmlndXJhdGlvbiBJbmZvcm1hdGlvbiAoUUNJKSwgdGhlbiByZXRyaWV2ZXMgYW5kIHN0b3JlcyB0aGVcbjIzMDY6XHQgKiBjdXJyZW50IEFQIGNvbmZpZ3VyYXRpb24gcmV0dXJuZWQgZnJvbSBRQ0kuXG4yMzA3Olx0ICpcbjIzMDg6XHQgKiBSZXR1cm46IHRydWUgaWYgdGhlIGhvc3QgQVAgY29uZmlndXJhdGlvbiBjaGFuZ2VkIGJldHdlZW4gY2FsbHMgdG8gUUNJO1xuMjMwOTpcdCAqIG90aGVyd2lzZSwgcmV0dXJuIGZhbHNlLlxuMjMxMDpcdCAqL1xuMjMxMTpcdHN0YXRpYyBib29sIGFwX2dldF9jb25maWd1cmF0aW9uKHZvaWQpXG4yMzEyOlx0e1xuMjMxMzpcdFx0aWYgKCFhcF9xY2lfaW5mby1cdTAwM2VmbGFncylcdC8qIFFDSSBub3Qgc3VwcG9ydGVkICovXG4yMzE0Olx0XHRcdHJldHVybiBmYWxzZTtcbjIzMTU6XHRcbjIzMTY6XHRcdG1lbWNweShhcF9xY2lfaW5mb19vbGQsIGFwX3FjaV9pbmZvLCBzaXplb2YoKmFwX3FjaV9pbmZvKSk7XG4yMzE3Olx0XHRhcF9xY2koYXBfcWNpX2luZm8pO1xuMjMxODpcdFxuMjMxOTpcdFx0cmV0dXJuIG1lbWNtcChhcF9xY2lfaW5mbywgYXBfcWNpX2luZm9fb2xkLFxuMjMyMDpcdFx0XHQgICAgICBzaXplb2Yoc3RydWN0IGFwX2NvbmZpZ19pbmZvKSkgIT0gMDtcbjIzMjE6XHR9XG4yMzIyOlx0XG4yMzIzOlx0LypcbjIzMjQ6XHQgKiBhcF9jb25maWdfaGFzX25ld19hcHMgLSBDaGVjayBjdXJyZW50IGFnYWluc3Qgb2xkIHFjaSBpbmZvIGlmXG4yMzI1Olx0ICogbmV3IGFkYXB0ZXJzIGhhdmUgYXBwZWFyZWQuIFJldHVybnMgdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgbmV3XG4yMzI2Olx0ICogYWRhcHRlciBpbiB0aGUgYXBtIG1hc2sgaXMgc2hvd2luZyB1cC4gRXhpc3RpbmcgYWRhcHRlcnMgb3JcbjIzMjc6XHQgKiByZWNlZGluZyBhZGFwdGVycyBhcmUgbm90IGNvdW50ZWQuXG4yMzI4Olx0ICovXG4yMzI5Olx0c3RhdGljIGJvb2wgYXBfY29uZmlnX2hhc19uZXdfYXBzKHZvaWQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NDA1CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIGBhcF9xY2lgIEZ1bmN0aW9uKioKCk9rYXksIHNvIHRoZSBwcm9ncmFtJiMzOTtzIGNhbGxpbmcgYGFwX3FjaWAuIFJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoYXQgZnVuY3Rpb24gYW5kIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZy4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGl0cyBpbnRlbmRlZCBwdXJwb3NlIGFuZCB0aGUgY29udGV4dCBpbiB3aGljaCBpdCYjMzk7cyBiZWluZyBpbnZva2VkLiBJcyBpdCByZWxhdGVkIHRvIGFjdGl2ZSBwcm9iaW5nLCBxdWFsaXR5IG9mIGNvbm5lY3Rpb24gaW5kaWNhdGlvbiwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBuYW1lIGl0c2VsZiBzdWdnZXN0cyBhIHBvdGVudGlhbCBsaW5rIHRvIEFjdGl2ZSBQcm9iZSBRdWFsaXR5IG9mIENvbm5lY3Rpb24gSW5kaWNhdG9yIChBUC1RQ0kpLCB3aGljaCB3b3VsZCBsaWtlbHkgcG9pbnQgdG8gYWN0aXZlIG1lYXN1cmVtZW50IG9mIG5ldHdvcmsgcXVhbGl0eSBtZXRyaWNzLiBCdXQsIG9mIGNvdXJzZSwgdGhlIG5hbWUgY2FuIGJlIG1pc2xlYWRpbmchCgpJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjbHVlcyBpbiB0aGUgZnVuY3Rpb24mIzM5O3MgaW1wbGVtZW50YXRpb246IHRoZSBpbnB1dCBwYXJhbWV0ZXJzLCBhbnkgY29uZGl0aW9uYWwgbG9naWMsIHdoZXRoZXIgaXQgaW50ZXJhY3RzIHdpdGggaGFyZHdhcmUgcmVnaXN0ZXJzLCBwZXJmb3JtcyBkYXRhIHBhY2tldCBtYW5pcHVsYXRpb24sIG9yIGxldmVyYWdlcyBhbnkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLiBBbnkgY2x1ZXMgd2l0aGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIG9yIGFueSBhc3NvY2lhdGVkIGNvbW1lbnRzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGlzIHNwZWNpZmljIHN5c3RlbS4gSXMgdGhpcyBhIGNyaXRpY2FsIHBhdGggZnVuY3Rpb24gdGhhdCBtaWdodCBiZSBwZXJmb3JtYW5jZS1zZW5zaXRpdmU/IE9yIGlzIGl0IG1vcmUgb2YgYSBkaWFnbm9zdGljIG9yIHJlcG9ydGluZyBmdW5jdGlvbj8gVGhlIGFuc3dlciB0byB0aGF0IHF1ZXN0aW9uIHdpbGwgaW5mbHVlbmNlIGhvdyBkZWVwIEkgbmVlZCB0byBkaWcgaW50byB0aGUgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXBfcWNpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xMDc9c3RhdGljIHN0cnVjdCBhcF9jb25maWdfaW5mbyBxY2lbMl07XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEwODpzdGF0aWMgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjb25zdCBhcF9xY2lfaW5mbyA9IFx1MDAyNnFjaVswXTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTA5OnN0YXRpYyBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmNvbnN0IGFwX3FjaV9pbmZvX29sZCA9IFx1MDAyNnFjaVsxXTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTEwLVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjA5PXN0YXRpYyBpbnQgYXBfaW50ZXJydXB0c19hdmFpbGFibGUodm9pZClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIxNC0vKipcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjE1OiAqIGFwX3FjaV9hdmFpbGFibGUoKTogVGVzdCBpZiBBUCBjb25maWd1cmF0aW9uXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIxNi0gKiBpbmZvcm1hdGlvbiBjYW4gYmUgcXVlcmllZCB2aWEgUUNJIHN1YmZ1bmN0aW9uLlxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjE5LSAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMjA6c3RhdGljIGludCBhcF9xY2lfYXZhaWxhYmxlKHZvaWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIyMS17XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yNDE9c3RhdGljIGlubGluZSBpbnQgYXBfcWFjdF9hdmFpbGFibGUodm9pZClcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQyLXtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQzOlx0cmV0dXJuIGFwX3FjaV9pbmZvLVx1MDAzZXFhY3Q7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0NC19XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yNTE9aW50IGFwX3NiX2F2YWlsYWJsZSh2b2lkKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNTIte1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNTM6XHRyZXR1cm4gYXBfcWNpX2luZm8tXHUwMDNlYXBzYjtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjU0LX1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTI3MD1zdGF0aWMgdm9pZCBfX2luaXQgYXBfaW5pdF9xY2lfaW5mbyh2b2lkKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNzEte1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNzI6XHRpZiAoIWFwX3FjaV9hdmFpbGFibGUoKSB8fFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNzM6XHQgICAgYXBfcWNpKGFwX3FjaV9pbmZvKSkge1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNzQtXHRcdEFQX0RCRl9JTkZPKFwmIzM0OyVzIFFDSSBub3Qgc3VwcG9ydGVkXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNzYtXHR9XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI3NzpcdG1lbWNweShhcF9xY2lfaW5mb19vbGQsIGFwX3FjaV9pbmZvLCBzaXplb2YoKmFwX3FjaV9pbmZvKSk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI3OC1cdEFQX0RCRl9JTkZPKFwmIzM0OyVzIHN1Y2Nlc3NmdWwgZmV0Y2hlZCBpbml0aWFsIHFjaSBpbmZvXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI3OS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjgwOlx0aWYgKGFwX3FjaV9pbmZvLVx1MDAzZWFweGEpIHtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjgxOlx0XHRpZiAoYXBfcWNpX2luZm8tXHUwMDNlbmEpIHtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjgyOlx0XHRcdGFwX21heF9hZGFwdGVyX2lkID0gYXBfcWNpX2luZm8tXHUwMDNlbmE7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI4My1cdFx0XHRBUF9EQkZfSU5GTyhcJiMzNDslcyBuZXcgYXBfbWF4X2FkYXB0ZXJfaWQgaXMgJWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yODUtXHRcdH1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6Mjg2Olx0XHRpZiAoYXBfcWNpX2luZm8tXHUwMDNlbmQpIHtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6Mjg3Olx0XHRcdGFwX21heF9kb21haW5faWQgPSBhcF9xY2lfaW5mby1cdTAwM2VuZDtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjg4LVx0XHRcdEFQX0RCRl9JTkZPKFwmIzM0OyVzIG5ldyBhcF9tYXhfZG9tYWluX2lkIGlzICVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MzEwPXN0YXRpYyBpbmxpbmUgaW50IGFwX3Rlc3RfY29uZmlnX2NhcmRfaWQodW5zaWduZWQgaW50IGlkKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzEzLVx0XHRyZXR1cm4gMDtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MzE0Olx0aWYgKGFwX3FjaV9pbmZvLVx1MDAzZWZsYWdzKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzozMTU6XHRcdHJldHVybiBhcF90ZXN0X2NvbmZpZyhhcF9xY2lfaW5mby1cdTAwM2VhcG0sIGlkKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzE2LVx0cmV0dXJuIDE7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0zMjc9aW50IGFwX3Rlc3RfY29uZmlnX3VzYWdlX2RvbWFpbih1bnNpZ25lZCBpbnQgZG9tYWluKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzMwLVx0XHRyZXR1cm4gMDtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MzMxOlx0aWYgKGFwX3FjaV9pbmZvLVx1MDAzZWZsYWdzKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzozMzI6XHRcdHJldHVybiBhcF90ZXN0X2NvbmZpZyhhcF9xY2lfaW5mby1cdTAwM2VhcW0sIGRvbWFpbik7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTMzMy1cdHJldHVybiAxO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MzQ1PWludCBhcF90ZXN0X2NvbmZpZ19jdHJsX2RvbWFpbih1bnNpZ25lZCBpbnQgZG9tYWluKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zNDYte1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzozNDc6XHRpZiAoIWFwX3FjaV9pbmZvIHx8IGRvbWFpbiBcdTAwM2UgYXBfbWF4X2RvbWFpbl9pZClcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzQ4LVx0XHRyZXR1cm4gMDtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MzQ5Olx0cmV0dXJuIGFwX3Rlc3RfY29uZmlnKGFwX3FjaV9pbmZvLVx1MDAzZWFkbSwgZG9tYWluKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzUwLX1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTEzNDk9c3RhdGljIHNzaXplX3QgYXBfY29udHJvbF9kb21haW5fbWFza19zaG93KGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjaGFyICpidWYpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNTAte1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzUxOlx0aWYgKCFhcF9xY2lfaW5mby1cdTAwM2VmbGFncylcdC8qIFFDSSBub3Qgc3VwcG9ydGVkICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNTItXHRcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7bm90IHN1cHBvcnRlZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzU0LVx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDsweCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4XFxuXCYjMzQ7LFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzU1Olx0XHRcdCAgYXBfcWNpX2luZm8tXHUwMDNlYWRtWzBdLCBhcF9xY2lfaW5mby1cdTAwM2VhZG1bMV0sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNTY6XHRcdFx0ICBhcF9xY2lfaW5mby1cdTAwM2VhZG1bMl0sIGFwX3FjaV9pbmZvLVx1MDAzZWFkbVszXSxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM1NzpcdFx0XHQgIGFwX3FjaV9pbmZvLVx1MDAzZWFkbVs0XSwgYXBfcWNpX2luZm8tXHUwMDNlYWRtWzVdLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzU4Olx0XHRcdCAgYXBfcWNpX2luZm8tXHUwMDNlYWRtWzZdLCBhcF9xY2lfaW5mby1cdTAwM2VhZG1bN10pO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzU5LX1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTEzNjM9c3RhdGljIHNzaXplX3QgYXBfdXNhZ2VfZG9tYWluX21hc2tfc2hvdyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY2hhciAqYnVmKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzY0LXtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM2NTpcdGlmICghYXBfcWNpX2luZm8tXHUwMDNlZmxhZ3MpXHQvKiBRQ0kgbm90IHN1cHBvcnRlZCAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzY2LVx0XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0O25vdCBzdXBwb3J0ZWRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM2OC1cdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7MHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eFxcblwmIzM0OyxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM2OTpcdFx0XHQgIGFwX3FjaV9pbmZvLVx1MDAzZWFxbVswXSwgYXBfcWNpX2luZm8tXHUwMDNlYXFtWzFdLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzcwOlx0XHRcdCAgYXBfcWNpX2luZm8tXHUwMDNlYXFtWzJdLCBhcF9xY2lfaW5mby1cdTAwM2VhcW1bM10sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNzE6XHRcdFx0ICBhcF9xY2lfaW5mby1cdTAwM2VhcW1bNF0sIGFwX3FjaV9pbmZvLVx1MDAzZWFxbVs1XSxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM3MjpcdFx0XHQgIGFwX3FjaV9pbmZvLVx1MDAzZWFxbVs2XSwgYXBfcWNpX2luZm8tXHUwMDNlYXFtWzddKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM3My19XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xMzc3PXN0YXRpYyBzc2l6ZV90IGFwX2FkYXB0ZXJfbWFza19zaG93KGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjaGFyICpidWYpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNzgte1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzc5Olx0aWYgKCFhcF9xY2lfaW5mby1cdTAwM2VmbGFncylcdC8qIFFDSSBub3Qgc3VwcG9ydGVkICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzODAtXHRcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7bm90IHN1cHBvcnRlZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzgyLVx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDsweCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4XFxuXCYjMzQ7LFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzgzOlx0XHRcdCAgYXBfcWNpX2luZm8tXHUwMDNlYXBtWzBdLCBhcF9xY2lfaW5mby1cdTAwM2VhcG1bMV0sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzODQ6XHRcdFx0ICBhcF9xY2lfaW5mby1cdTAwM2VhcG1bMl0sIGFwX3FjaV9pbmZvLVx1MDAzZWFwbVszXSxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM4NTpcdFx0XHQgIGFwX3FjaV9pbmZvLVx1MDAzZWFwbVs0XSwgYXBfcWNpX2luZm8tXHUwMDNlYXBtWzVdLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzg2Olx0XHRcdCAgYXBfcWNpX2luZm8tXHUwMDNlYXBtWzZdLCBhcF9xY2lfaW5mby1cdTAwM2VhcG1bN10pO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzg3LX1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTE3NDc9c3RhdGljIHNzaXplX3QgZmVhdHVyZXNfc2hvdyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY2hhciAqYnVmKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc1MC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTc1MTpcdGlmICghYXBfcWNpX2luZm8tXHUwMDNlZmxhZ3MpXHQvKiBRQ0kgbm90IHN1cHBvcnRlZCAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzUyLVx0XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0Oy1cXG5cJiMzNDspO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzUzLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzU0Olx0aWYgKGFwX3FjaV9pbmZvLVx1MDAzZWFwc2MpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NTUtXHRcdG4gJiM0Mzs9IHN5c2ZzX2VtaXRfYXQoYnVmLCBuLCBcJiMzNDtBUFNDIFwmIzM0Oyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3NTY6XHRpZiAoYXBfcWNpX2luZm8tXHUwMDNlYXB4YSlcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc1Ny1cdFx0biAmIzQzOz0gc3lzZnNfZW1pdF9hdChidWYsIG4sIFwmIzM0O0FQWEEgXCYjMzQ7KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTc1ODpcdGlmIChhcF9xY2lfaW5mby1cdTAwM2VxYWN0KVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzU5LVx0XHRuICYjNDM7PSBzeXNmc19lbWl0X2F0KGJ1ZiwgbiwgXCYjMzQ7UUFDVCBcJiMzNDspO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzYwOlx0aWYgKGFwX3FjaV9pbmZvLVx1MDAzZXJjOGEpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NjEtXHRcdG4gJiM0Mzs9IHN5c2ZzX2VtaXRfYXQoYnVmLCBuLCBcJiMzNDtSQzhBIFwmIzM0Oyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3NjI6XHRpZiAoYXBfcWNpX2luZm8tXHUwMDNlYXBzYilcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc2My1cdFx0biAmIzQzOz0gc3lzZnNfZW1pdF9hdChidWYsIG4sIFwmIzM0O0FQU0IgXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTE5MjM9c3RhdGljIGludCBfX2Rydl9ub3RpZnlfY29uZmlnX2NoYW5nZWQoc3RydWN0IGRldmljZV9kcml2ZXIgKmRydiwgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5MjgtXHRcdGlmIChhcF9kcnYtXHUwMDNlb25fY29uZmlnX2NoYW5nZWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE5Mjk6XHRcdFx0YXBfZHJ2LVx1MDAzZW9uX2NvbmZpZ19jaGFuZ2VkKGFwX3FjaV9pbmZvLCBhcF9xY2lfaW5mb19vbGQpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTMwLVx0XHRtb2R1bGVfcHV0KGRydi1cdTAwM2Vvd25lcik7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xOTQ0PXN0YXRpYyBpbnQgX19kcnZfbm90aWZ5X3NjYW5fY29tcGxldGUoc3RydWN0IGRldmljZV9kcml2ZXIgKmRydiwgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5NDktXHRcdGlmIChhcF9kcnYtXHUwMDNlb25fc2Nhbl9jb21wbGV0ZSlcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTk1MDpcdFx0XHRhcF9kcnYtXHUwMDNlb25fc2Nhbl9jb21wbGV0ZShhcF9xY2lfaW5mbyxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTk1MTpcdFx0XHRcdFx0XHQgYXBfcWNpX2luZm9fb2xkKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTk1Mi1cdFx0bW9kdWxlX3B1dChkcnYtXHUwMDNlb3duZXIpO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjMxMT1zdGF0aWMgYm9vbCBhcF9nZXRfY29uZmlndXJhdGlvbih2b2lkKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzEyLXtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMxMzpcdGlmICghYXBfcWNpX2luZm8tXHUwMDNlZmxhZ3MpXHQvKiBRQ0kgbm90IHN1cHBvcnRlZCAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzE0LVx0XHRyZXR1cm4gZmFsc2U7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMTUtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMTY6XHRtZW1jcHkoYXBfcWNpX2luZm9fb2xkLCBhcF9xY2lfaW5mbywgc2l6ZW9mKCphcF9xY2lfaW5mbykpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzE3Olx0YXBfcWNpKGFwX3FjaV9pbmZvKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMxOC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMxOTpcdHJldHVybiBtZW1jbXAoYXBfcWNpX2luZm8sIGFwX3FjaV9pbmZvX29sZCxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMyMC1cdFx0ICAgICAgc2l6ZW9mKHN0cnVjdCBhcF9jb25maWdfaW5mbykpICE9IDA7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yMzI5PXN0YXRpYyBib29sIGFwX2NvbmZpZ19oYXNfbmV3X2Fwcyh2b2lkKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMzMy1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMzNDpcdGlmICghYXBfcWNpX2luZm8tXHUwMDNlZmxhZ3MpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMzUtXHRcdHJldHVybiBmYWxzZTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMzNi1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMzNzpcdGJpdG1hcF9hbmRub3QobSwgKHVuc2lnbmVkIGxvbmcgKilhcF9xY2lfaW5mby1cdTAwM2VhcG0sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMzg6XHRcdCAgICAgICh1bnNpZ25lZCBsb25nICopYXBfcWNpX2luZm9fb2xkLVx1MDAzZWFwbSwgQVBfREVWSUNFUyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMzktXHRpZiAoIWJpdG1hcF9lbXB0eShtLCBBUF9ERVZJQ0VTKSlcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTIzNTE9c3RhdGljIGJvb2wgYXBfY29uZmlnX2hhc19uZXdfZG9tcyh2b2lkKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM1NC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjM1NTpcdGlmICghYXBfcWNpX2luZm8tXHUwMDNlZmxhZ3MpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzNTYtXHRcdHJldHVybiBmYWxzZTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM1Ny1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjM1ODpcdGJpdG1hcF9hbmRub3QobSwgKHVuc2lnbmVkIGxvbmcgKilhcF9xY2lfaW5mby1cdTAwM2VhcW0sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzNTk6XHRcdCAgICAgICh1bnNpZ25lZCBsb25nICopYXBfcWNpX2luZm9fb2xkLVx1MDAzZWFxbSwgQVBfRE9NQUlOUyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzNjAtXHRpZiAoIWJpdG1hcF9lbXB0eShtLCBBUF9ET01BSU5TKSlcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM9ODY9c3RhdGljIGludCB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlKHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTEwNi1cdGlmICh0ZXN0X2ZhY2lsaXR5KDEyKSkge1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjEwNzpcdFx0cmV0ID0gYXBfcWNpKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlaW5mbyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTA4LVx0XHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTQ1MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgbXkgb3duIGludGVybmFsIG1vbm9sb2d1ZToKCioqTXkgSW1tZWRpYXRlIEFzc2Vzc21lbnQgb2YgYGFwX3FjaWAqKgoKUmlnaHQsIGBhcF9xY2lgLiBPa2F5LCBzbyBpdCBsb29rcyBsaWtlIEkmIzM5O20gZGVhbGluZyB3aXRoIGEgZnVuY3Rpb24gbmFtZWQgYGFwX3FjaWAuIE15IGluaXRpYWwgYXNzdW1wdGlvbiwgZ2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLCBpcyB0aGF0IHRoaXMgbGlrZWx5IGludm9sdmVzIHF1ZXJ5aW5nIG9yIHJldHJpZXZpbmcgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi4gVGhlICYjMzQ7YXAmIzM0OyBwYXJ0IHByb2JhYmx5IHN0YW5kcyBmb3IgJiMzNDthY2Nlc3MgcG9pbnQmIzM0OyBvciBzb21ldGhpbmcgcmVsYXRlZCB0byBpdCwgZ2l2ZW4gdGhhdCBpcyBhIHN0YW5kYXJkIGFiYnJldmlhdGlvbiB3aGVuIHJlbGF0ZWQgdG8gd2lyZWxlc3MgbmV0d29ya3MuIFRoZSAmIzM0O3FjaSYjMzQ7IGlzIHByb2JhYmx5IHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiwgYW5kIGluZGljYXRlcyB0aGF0IHRoZSBmdW5jdGlvbiBwZXJmb3JtcyBxdWVyaWVzLCBvciByZXF1ZXN0cyBpbmZvcm1hdGlvbiByZWdhcmRpbmcgY29uZmlndXJhdGlvbnMuCgpTbywgdGhlIGZvY3VzIGhlcmUgaXMgb24gdGhlIHByb2Nlc3Mgb2YgKm9idGFpbmluZyogY29uZmlndXJhdGlvbiBkYXRhLCByYXRoZXIgdGhhbiBhbnkgbWFuaXB1bGF0aW9uIG9yIGFsdGVyYXRpb24gb2YgaXQuIElzIGl0IGEgZ2VuZXJpYyBjb25maWd1cmF0aW9uIGxvb2t1cCwgb3IgaXMgaXQgc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyIGFzcGVjdCBvZiB0aGUgYWNjZXNzIHBvaW50JiMzOTtzIGNvbmZpZ3VyYXRpb24/IFdoYXQga2luZCBvZiBjb25maWd1cmF0aW9uIGlzIGl0IHJlc3BvbnNpYmxlIGZvciBxdWVyeWluZz8gQW5kLCBtb3N0IGltcG9ydGFudGx5LCB3aGF0IGludGVyZmFjZSBkb2VzIGl0IGV4cG9zZSB0byBnZXQgdGhlIGNvbmZpZ3VyYXRpb24/IFdoYXQgaXMgdGhlIHN0cnVjdHVyZSBvZiB0aGUgZGF0YSBpdCByZXR1cm5zPyBUaGUgaW5wdXQgcGFyYW1ldGVycyBhcmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBzY29wZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXBfcWNpXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yNzA9c3RhdGljIHZvaWQgX19pbml0IGFwX2luaXRfcWNpX2luZm8odm9pZClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI3Mi1cdGlmICghYXBfcWNpX2F2YWlsYWJsZSgpIHx8XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI3MzpcdCAgICBhcF9xY2koYXBfcWNpX2luZm8pKSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI3NC1cdFx0QVBfREJGX0lORk8oXCYjMzQ7JXMgUUNJIG5vdCBzdXBwb3J0ZWRcXG5cJiMzNDssIF9fZnVuY19fKTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTIzMTE9c3RhdGljIGJvb2wgYXBfZ2V0X2NvbmZpZ3VyYXRpb24odm9pZClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMTYtXHRtZW1jcHkoYXBfcWNpX2luZm9fb2xkLCBhcF9xY2lfaW5mbywgc2l6ZW9mKCphcF9xY2lfaW5mbykpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzE3Olx0YXBfcWNpKGFwX3FjaV9pbmZvKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMxOC1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM9ODY9c3RhdGljIGludCB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlKHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTEwNi1cdGlmICh0ZXN0X2ZhY2lsaXR5KDEyKSkge1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjEwNzpcdFx0cmV0ID0gYXBfcWNpKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlaW5mbyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTA4LVx0XHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjE3OAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRlZmluaW5nIHRoZSBFbmlnbWE6IFVucGFja2luZyBgYXBfcWNpYCoqCgpBbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGlzIHRvIHVuZGVyc3RhbmQgdGhpcyBgYXBfcWNpYCB0aGluZy4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gbmFpbCBkb3duIGEgcHJlY2lzZSBkZWZpbml0aW9uLiBObyBhc3N1bXB0aW9ucywgbm8gc2hvcnRjdXRzIOKAkyBnb3R0YSBnZXQgdGhlIGZvdW5kYXRpb24gcmlnaHQuIEkgbmVlZCBhIGNvbmNyZXRlLCB1bmFtYmlndW91cyBleHBsYW5hdGlvbi4gSXMgaXQgYW4gYWNyb255bT8gU29tZSBraW5kIG9mIG5vdmVsIG1ldHJpYz8gQSBzcGVjaWZpYyBwaWVjZSBvZiB0ZWNobm9sb2d5PyBUaGlzIGRlZmluaXRpb24gd2lsbCBhY3QgYXMgbXkgY29tcGFzcywgZ3VpZGluZyBteSBmdXJ0aGVyIGludmVzdGlnYXRpb24gYW5kIHByZXZlbnRpbmcgbWUgZnJvbSBnb2luZyBkb3duIGFueSByYWJiaXQgaG9sZXMgcHJlbWF0dXJlbHkuIFRoZSBzcGVjaWZpYyBkZWZpbml0aW9uIHdpbGwgcHJvdmlkZSBhIGZyYW1ld29yayBmb3IgYWxsIGZ1dHVyZSBjb25zaWRlcmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50IGFwX3FjaVxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FwLmg9MjM5PXN0cnVjdCBhcF9jb25maWdfaW5mbyB7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FwLmgtMjY1LSAqL1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FwLmg6MjY2OnN0YXRpYyBpbmxpbmUgaW50IGFwX3FjaShzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmNvbmZpZylcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9hcC5oLTI2Ny17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNDg0CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipEZWx2aW5nIGludG8gdGhlIGBhcF9xY2lgIERlZmluaXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHNwZWNpZmljcyBvZiB0aGlzIGBhcF9xY2lgIGRlZmluaXRpb24uIEkmIzM5O3ZlIGxpa2VseSBlbmNvdW50ZXJlZCB0aGlzIGJlZm9yZSwgYnV0IGl0JiMzOTtzIGNydWNpYWwgdG8gc29saWRpZnkgdGhlIHVuZGVyc3RhbmRpbmcsIGVzcGVjaWFsbHkgaWYgSSYjMzk7bSBidWlsZGluZyBvbiBpdCBvciB0cm91Ymxlc2hvb3Rpbmcgc29tZXRoaW5nIHJlbGF0ZWQgdG8gaXQuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRvIGZpbmQgdGhlIGV4YWN0IGRlZmluaXRpb24gYW5kIGRvY3VtZW50YXRpb24gc28gdGhhdCBJIGNhbiBoYXZlIGEgY29tbW9uIGZyYW1lIG9mIHJlZmVyZW5jZS4gVGhpcyB3aWxsIGFsbG93IGZvciBhIG1vcmUgZWZmaWNpZW50IGFuZCBhY2N1cmF0ZSBkaXNjdXNzaW9uIHdoZW4gY29uc2lkZXJpbmcgaXRzIGltcGxpY2F0aW9ucy4gU28sIGxldCYjMzk7cyBnZXQgaW50byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3MzOTAvaW5jbHVkZS9hc20vYXAuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjYwOlx0XG4gMjYxOlx0LyoqXG4gMjYyOlx0ICogYXBfcWNpKCk6IEdldCBBUCBjb25maWd1cmF0aW9uIGRhdGFcbiAyNjM6XHQgKlxuIDI2NDpcdCAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBvciAtRU9QTk9UU1VQUC5cbiAyNjU6XHQgKi9cbiAyNjY6XHRzdGF0aWMgaW5saW5lIGludCBhcF9xY2koc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjb25maWcpXG4gMjY3Olx0e1xuIDI2ODpcdFx0dW5zaWduZWQgbG9uZyByZWcwID0gNFVMIFx1MDAzY1x1MDAzYyAyNDsgIC8qIGZjIDRVTCBpcyBRQ0kgKi9cbiAyNjk6XHRcdHVuc2lnbmVkIGxvbmcgcmVnMSA9IC1FT1BOT1RTVVBQO1xuIDI3MDpcdFx0c3RydWN0IGFwX2NvbmZpZ19pbmZvICpyZWcyID0gY29uZmlnO1xuIDI3MTpcdFxuIDI3MjpcdFx0YXNtIHZvbGF0aWxlKFxuIDI3MzpcdFx0XHRcJiMzNDtcdGxnclx0MCwlW3JlZzBdXFxuXCYjMzQ7XHRcdC8qIFFDSSBmYyBpbnRvIGdyMCAqL1xuIDI3NDpcdFx0XHRcJiMzNDtcdGxnclx0MiwlW3JlZzJdXFxuXCYjMzQ7XHRcdC8qIHB0ciB0byBjb25maWcgaW50byBncjIgKi9cbiAyNzU6XHRcdFx0XCYjMzQ7XHQuaW5zblx0cnJlLDB4YjJhZjAwMDAsMCwwXFxuXCYjMzQ7XHQvKiBQUUFQKFFDSSkgKi9cbiAyNzY6XHRcdFx0XCYjMzQ7MDpcdGxhXHQlW3JlZzFdLDBcXG5cJiMzNDtcdFx0LyogZ29vZCBjYXNlLCBRQ0kgZmMgYXZhaWxhYmxlICovXG4gMjc3Olx0XHRcdFwmIzM0OzE6XFxuXCYjMzQ7XG4gMjc4Olx0XHRcdEVYX1RBQkxFKDBiLCAxYilcbiAyNzk6XHRcdFx0OiBbcmVnMV0gXCYjMzQ7JiM0MztcdTAwMjZkXCYjMzQ7IChyZWcxKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzA3MAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIFBRQVAoUUNJKSBGdXp6aW5nIFBvc3NpYmlsaXRpZXMqKgoKT2theSwgc28gYGFwX3FjaWAgaXMgY2FsbGluZyBgUFFBUChRQ0kpYC4gIFRoYXQgaW5zdHJ1Y3Rpb24gZ2V0cyBpbnRlcmNlcHRlZCBieSB0aGUgaHlwZXJ2aXNvciDigJMgS1ZNL1FFTVUsIHNwZWNpZmljYWxseS4gRmlyc3QgdGhpbmcmIzM5O3MgZmlyc3Q6IGRvZXMgUUVNVSBldmVuICpzdXBwb3J0KiB0aGlzIGBQUUFQYCBpbnRlcmNlcHRpb24/IFRoYW5rZnVsbHksIHllcywgUUVNVSYjMzk7cyBnb3QgdGhhdCBjb3ZlcmVkLiBCdXQgaGVyZSYjMzk7cyB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogZG9lcyBRRU1VJiMzOTtzIHJlc3BvbnNlIGNvbmZpZ3VyYXRpb24sIGFzIGEgcmVzdWx0IG9mIGludGVyY2VwdGluZyB0aGF0IGluc3RydWN0aW9uLCBlbmFibGUgdGhlIHN1YnNlcXVlbnQgYGFwX2dldF9jb25maWd1cmF0aW9uYCB0byByZXR1cm4gdHJ1ZT8gVGhhdCYjMzk7cyB0aGUga2V5IHRvIHRyaWdnZXJpbmcgd2hhdCB3ZSBhcmUgaW50ZXJlc3RlZCBpbi4KCk5vdywgaWYgd2UgYXJlIGZ1enppbmcgdmlhIHN5emthbGxlciwgY2FuIHdlIHRyaWdnZXIgdGhhdCBjb25maWd1cmF0aW9uIHdpdGggc3l6a2FsbGVyPyAgQWgsIHRyaWNreS4gU3l6a2FsbGVyIGNhbiYjMzk7dCAqZGlyZWN0bHkqIGluamVjdCBgUFFBUChRQ0kpYCByZXNwb25zZXMsIGJlY2F1c2UgaXQgcnVucyBpbnNpZGUgdGhlIGd1ZXN0IFZNLiBJdCB3b3VsZCBuZWVkIHRvIGJlIHJ1bm5pbmcgYXQgdGhlIGh5cGVydmlzb3IgbGV2ZWwgdG8gZG8gdGhhdC4gQnV0IHdhaXQuLi5TeXprYWxsZXIgaXMgZnV6emluZyB0aGUga2VybmVsICpmcm9tIHVzZXIgc3BhY2UqLiBUaGF04oCZcyBhIGtleSBkaXN0aW5jdGlvbi4KCk9rYXksIHNvLCBpZiB3ZSBjYW5ub3QgdXNlIHN5emthbGxlciB0byBpbmplY3QgUFFBUCByZXNwb25zZXMsIGlzIHRoZXJlICphbnkqIHVzZXItc3BhY2UgaW50ZXJmYWNlIHRoYXQgbWlnaHQgdHJpZ2dlciB0aGF0IGB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZWAgdGhhdCB0aGlzIGFsbCByZWxhdGVzIHRvPyBJcyB0aGVyZSBhbiBleGlzdGluZyBBUEkgb3IgYSBtb3JlIGdlbmVyYWwgd2F5IHRvIGNhbGwgYHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlYD8gSeKAmWQgYmV0dGVyIGdvIGNoZWNrIHdoZXJlIHRoYXQgaXMgY2FsbGVkIGZyb20hIExldCYjMzk7cyBzZWUgaWYgaXQmIzM5O3MgY2FsbGVkIGFueXdoZXJlIGVsc2UgdGhhdCB3ZSBtaWdodCBiZSBhYmxlIHRvIGV4cGxvaXQgZnJvbSB1c2VyIHNwYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9jcnlwdG8vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yNTU3PXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9ob3RfdW5wbHVnX2NmZyhzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2LFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNTg1LS8qKlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI1ODY6ICogdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUgLSBkZXRlcm1pbmVzIHdoaWNoIGd1ZXN0cyBhcmUgdXNpbmcgdGhlIGFkYXB0ZXJzLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1ODctICpcdFx0XHQgICAgIGRvbWFpbnMgYW5kIGNvbnRyb2wgZG9tYWlucyB0aGF0IGhhdmUgYmVlbiByZW1vdmVkXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1OTctICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjU5ODpzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZSh1bnNpZ25lZCBsb25nICphcF9yZW1vdmUsXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjU5OS1cdFx0XHRcdCAgICB1bnNpZ25lZCBsb25nICphcV9yZW1vdmUsXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI2Mzk9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmUoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjdXJfY29uZmlnX2luZm8sXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2NjAtXHRpZiAoZG9fcmVtb3ZlKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI2NjE6XHRcdHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlKGFwcmVtLCBhcXJlbSwgY2RyZW0pO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2NjItfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDA5NQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBDYWxsZXIgb2YgYHZmaW9fYXBfbWRldl9vZmZfY2ZnX3JlbW92ZWAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSwgdGhlIGNvZGUgbm90ZXMgdGhhdCB0aGlzIGB2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZWAgZnVuY3Rpb24gaXMgb25seSBkaXJlY3RseSBjYWxsZWQgZnJvbSBgdmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmVgLiBUaGF0JiMzOTtzIGEgYml0IHVudXN1YWwsIGFuZCBpdCBtYWtlcyBtZSB3b25kZXIuIElzIHRoYXQgdHJ1bHkgdGhlICpvbmx5KiBwbGFjZSB0aGlzIGlzIGJlaW5nIGludm9rZWQgZnJvbT8gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LiBJIG5lZWQgdG8gbWFrZSAqYWJzb2x1dGVseSogc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBjYWxsIHBhdGhzLCBtYXliZSBpbmRpcmVjdGx5LCB0aGF0IGFyZSBsZWFkaW5nIHRvIHRoaXMgZnVuY3Rpb24gYmVpbmcgZXhlY3V0ZWQuIEkmIzM5O2xsIG5lZWQgdG8gZ28gYmV5b25kIHRoZSBpbW1lZGlhdGUgY2FsbCBzdGFjayB0byBiZSBjZXJ0YWluLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBteSB0b29scyB0byB0aG9yb3VnaGx5IGV4YW1pbmUgdGhlIGNhbGxpbmcgY29udGV4dCBhbmQgdmVyaWZ5IHRoZSBhc3N1bXB0aW9ucyB0aGlzIHBpZWNlIG9mIGNvZGUgaXMgYmFzZWQgb24uIEEgc2Vjb25kIHNldCBvZiBleWVzIG9uIHRoaXMgaXMgYWx3YXlzIGJlbmVmaWNpYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fYXBfbWRldl9vbl9jZmdfcmVtb3ZlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI1OTg9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUodW5zaWduZWQgbG9uZyAqYXBfcmVtb3ZlLFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjMxLS8qKlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI2MzI6ICogdmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmUgLSByZXNwb25kcyB0byB0aGUgcmVtb3ZhbCBvZiBhZGFwdGVycywgZG9tYWlucyBhbmRcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjMzLSAqXHRcdFx0XHRjb250cm9sIGRvbWFpbnMgZnJvbSB0aGUgaG9zdCBBUCBjb25maWd1cmF0aW9uXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2MzgtICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjYzOTpzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZShzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jb25maWdfaW5mbyxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjQwLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqcHJldl9jb25maWdfaW5mbylcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjgwND12b2lkIHZmaW9fYXBfb25fY2ZnX2NoYW5nZWQoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjdXJfY2ZnX2luZm8sXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4MTEtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjgxMjpcdHZmaW9fYXBfbWRldl9vbl9jZmdfcmVtb3ZlKGN1cl9jZmdfaW5mbywgcHJldl9jZmdfaW5mbyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgxMy1cdHZmaW9fYXBfbWRldl9vbl9jZmdfYWRkKGN1cl9jZmdfaW5mbywgcHJldl9jZmdfaW5mbyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0ODUyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB5b3UgZGVzY3JpYmVkOgoKKipBbmFseXppbmcgYHZmaW9fYXBfb25fY2ZnX2NoYW5nZWRgIENhbGxlcnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZnVuY3Rpb24sIGl0JiMzOTtzIGNhbGxlZCBgdmZpb19hcF9vbl9jZmdfY2hhbmdlZGAuIFRoZSBjb2RlIHNheXMgaXQmIzM5O3Mgb25seSBjYWxsZWQgZnJvbSBvbmUgcGxhY2U6IGB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBzb21ldGhpbmcuIEkga25vdyB0aGUgY29kZSBwcmV0dHkgd2VsbCwgYnV0IG1lbW9yeSBpc24mIzM5O3QgcGVyZmVjdCwgYW5kIHRoZXJlIG1pZ2h0IGJlIGEgc3VidGxlIGluZGlyZWN0IHBhdGguCgpTbyBteSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IElzIHRoaXMgdGhlICpvbmx5KiBjYWxsc2l0ZSBmb3IgdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uPyBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgYHZmaW9fYXBfb25fY2ZnX2NoYW5nZWRgIGlzICpub3QqIGNhbGxlZCBmcm9tIGFueXdoZXJlIGVsc2Ugd2l0aGluIHRoZSBjb2RlIGJhc2UuIEFyZSB0aGVyZSBhbnkgb3RoZXIgcGF0aHMsIGV2ZW4gb25lcyB0aGF0IHNlZW0gaW5kaXJlY3QsIHRoYXQgZW5kIHVwIHRyaWdnZXJpbmcgdGhpcyBmdW5jdGlvbiBjYWxsPyBUaGlzIGlzIGEgY3JpdGljYWwgcG9pbnQgdGhhdCBuZWVkcyBjb25maXJtYXRpb24gYmVmb3JlIEkgY29udGludWUgbXkgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fYXBfb25fY2ZnX2NoYW5nZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM9NTg9c3RhdGljIHN0cnVjdCBhcF9kcml2ZXIgdmZpb19hcF9kcnYgPSB7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTYxLVx0LmluX3VzZSA9IHZmaW9fYXBfbWRldl9yZXNvdXJjZV9pbl91c2UsXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6NjI6XHQub25fY29uZmlnX2NoYW5nZWQgPSB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTYzLVx0Lm9uX3NjYW5fY29tcGxldGUgPSB2ZmlvX2FwX29uX3NjYW5fY29tcGxldGUsXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI3NzI9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X29uX2NmZ19hZGQoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjdXJfY29uZmlnX2luZm8sXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI3OTctLyoqXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6Mjc5ODogKiB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkIC0gaGFuZGxlcyBub3RpZmljYXRpb24gb2YgY2hhbmdlcyB0byB0aGUgaG9zdCBBUFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI3OTktICpcdFx0XHQgICAgY29uZmlndXJhdGlvbi5cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgwMy0gKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODA0OnZvaWQgdmZpb19hcF9vbl9jZmdfY2hhbmdlZChzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jZmdfaW5mbyxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODA1LVx0XHRcdCAgICBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKnByZXZfY2ZnX2luZm8pXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaD0xNjE9aW50IHZmaW9fYXBfbWRldl9yZXNvdXJjZV9pbl91c2UodW5zaWduZWQgbG9uZyAqYXBtLCB1bnNpZ25lZCBsb25nICphcW0pO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaC0xNjItXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjE2Mzp2b2lkIHZmaW9fYXBfb25fY2ZnX2NoYW5nZWQoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpuZXdfY29uZmlnX2luZm8sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTE2NC1cdFx0XHQgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpvbGRfY29uZmlnX2luZm8pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTc0MgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgVkZJTy1BUCBEcml2ZXIgQ29uZmlndXJhdGlvbiBDaGFuZ2UgTWVjaGFuaXNtKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyB0aGUgY29uZmlndXJhdGlvbiBjaGFuZ2UgZXZlbnRzIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGUgYHZmaW9fYXBfZHJ2YCBkcml2ZXIuIE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCB0aGUgY29yZSBtZWNoYW5pc20gc2VlbXMgdG8gYmUgcm9vdGVkIGluIHRoZSBgLm9uX2NvbmZpZ19jaGFuZ2VkYCBjYWxsYmFjay4gVGhhdCYjMzk7cyB0aGUga2V5IGVudHJ5IHBvaW50LCB0aGUgdGhpbmcgdGhhdCBnZXRzIHRyaWdnZXJlZCB3aGVuIHNvbWV0aGluZyAqYWN0dWFsbHkqIGNoYW5nZXMuCgpBbmQgdGhlbiBJJiMzOTttIHRyYWNpbmcgdGhhdCBjYWxsYmFjayDigJMgaXQmIzM5O3MgY2FsbGVkIGJ5IGBfX2Rydl9ub3RpZnlfY29uZmlnX2NoYW5nZWRgLiBUaGF0IGZ1bmN0aW9uLCBpbiB0dXJuLCBpcyBpbnZva2VkIGJ5IGBub3RpZnlfY29uZmlnX2NoYW5nZWRgLCB3aGljaCBpcyB0aGVuIGNhbGxlZCBieSB0aGUgYGFwX3NjYW5fYnVzYCBmdW5jdGlvbi4gU28sIHdlIGhhdmUgdGhpcyBuZXN0ZWQgY2hhaW4sIGZyb20gdGhlIGxvdy1sZXZlbCBjaGFuZ2UgZGV0ZWN0aW9uLCBhbGwgdGhlIHdheSB1cCB0byB3aGVyZSB0aGUgYnVzIGlzIHNjYW5uZWQuCgpOb3csIGBhcF9zY2FuX2J1c2AgY2FuIGJlIHRyaWdnZXJlZCBlaXRoZXIgYnkgYSB0aW1lciBmaXJpbmcgb3IgYnkgYGFwX2J1c19mb3JjZV9yZXNjYW5gLiBUaGF0IGxhc3QgcGllY2UgaXMgd2hhdCBoYXMgbWUgdGhpbmtpbmc6IGlzIHRoZXJlIGEgc3lzZnMgYXR0cmlidXRlLCBhIHdheSB0byBtYW51YWxseSBmb3JjZSB0aGUgZHJpdmVyIHRvIHJlc2NhbiB0aGUgYnVzPyBJZiBzbywgdGhhdCYjMzk7cyBpbmNyZWRpYmx5IHVzZWZ1bCBmb3IgZGVidWdnaW5nIGFuZCBjb250cm9sLiBJdCYjMzk7cyB0aGUgZXF1aXZhbGVudCBvZiBhIHNvZnR3YXJlIHJlc2V0IGFuZCBjb3VsZCBzaGVkIGxpZ2h0IG9uIHNvbWUgb3RoZXIgaXNzdWVzLiBJIG5lZWQgdG8gbG9vayBmb3IgdGhhdCBhbmQgc2VlIGlmIGl0IGlzIGF2YWlsYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXBfYnVzX2ZvcmNlX3Jlc2NhbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9jcnlwdG8vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTExMj1FWFBPUlRfU1lNQk9MKGFwX2RyaXZlcl91bnJlZ2lzdGVyKTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExMTgtICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjExMTk6Ym9vbCBhcF9idXNfZm9yY2VfcmVzY2FuKHZvaWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExMjAte1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTEzMy1cdCAqIGFsbCBjYXJkcyBhcmUgb2ZmbGluZSBzbyBhIHJlc2NhbiBpcyB0cmlnZ2VyZWQgd2hpY2ggY2F1c2VzXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjExMzQ6XHQgKiBhIHJlY3Vyc2l2ZSBjYWxsIG9mIGFwX2J1c19mb3JjZV9yZXNjYW4oKS4gQSBzaW1wbGUgcmV0dXJuIGlmXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExMzUtXHQgKiB0aGUgbXV0ZXggaXMgYWxyZWFkeSBsb2NrZWQgYnkgdGhpcyB0aHJlYWQgc29sdmVzIHRoaXMuXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTY5LX1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTE3MDpFWFBPUlRfU1lNQk9MKGFwX2J1c19mb3JjZV9yZXNjYW4pO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTcxLVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTE3NT1zdGF0aWMgaW50IGFwX2J1c19jZmdfY2hnKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTgyLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMTgzOlx0YXBfYnVzX2ZvcmNlX3Jlc2NhbigpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTg0LVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTcxMD1zdGF0aWMgc3NpemVfdCBzY2Fuc19zdG9yZShjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY29uc3QgY2hhciAqYnVmLFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTcxNC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTcxNTpcdGFwX2J1c19mb3JjZV9yZXNjYW4oKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTcxNi1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5oPTI1Nj12b2lkIGFwX3JlcXVlc3RfdGltZW91dChzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5oOjI1Nzpib29sIGFwX2J1c19mb3JjZV9yZXNjYW4odm9pZCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5oLTI1OC1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3pjcnlwdF9hcGkuYz04MD1zdGF0aWMgaW5saW5lIGJvb2wgemNyeXB0X3Byb2Nlc3NfcmVzY2FuKHZvaWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3pjcnlwdF9hcGkuYy04MS17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3pjcnlwdF9hcGkuYzo4MjpcdHJldHVybiBhcF9idXNfZm9yY2VfcmVzY2FuKCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3pjcnlwdF9hcGkuYy04My19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2ODk1CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBBUCBCdXMgUmVzY2FuIExvZ2ljKioKCk9rYXksIHNvIGhlcmUmIzM5O3MgaG93IHRoaXMgYWxsIHdvcmtzLiBgc2NhbnNfc3RvcmVgIHVsdGltYXRlbHkgY2FsbHMgYGFwX2J1c19mb3JjZV9yZXNjYW5gLiBBIHVzZXIgY2FuIHRyaWdnZXIgdGhpcyB2aWEgdGhlIGAvc3lzL2J1cy9hcC9zY2Fuc2AgaW50ZXJmYWNlLiBUaGF0JiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZC4gSG93ZXZlciwgYGFwX3NjYW5fYnVzYCB0aGVuICpvbmx5KiBjYWxscyBgbm90aWZ5X2NvbmZpZ19jaGFuZ2VkYCBpZiBgYXBfZ2V0X2NvbmZpZ3VyYXRpb25gIHJldHVybnMgdHJ1ZS4gVGhhdCYjMzk7cyB0aGUgY3J1eCBvZiBpdC4gQW5kIGBhcF9nZXRfY29uZmlndXJhdGlvbmAgb25seSByZXR1cm5zIHRydWUgaWYgYGFwX3FjaV9pbmZvYCBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgbGFzdCBjYWxsLiAgYGFwX3FjaV9pbmZvYCBpcywgaW4gdHVybiwgcG9wdWxhdGVkIGJ5IGBhcF9xY2lgLCB3aGljaCBleGVjdXRlcyB0aGUgYFBRQVAoUUNJKWAgaW5zdHJ1Y3Rpb24uCgpTbywgaGVyZSYjMzk7cyB3aGF0IGl0IGNvbWVzIGRvd24gdG86IHVubGVzcyBgUFFBUChRQ0kpYCByZXN1bHRzIGluIGEgY2hhbmdlZCBgYXBfcWNpX2luZm9gLCBgbm90aWZ5X2NvbmZpZ19jaGFuZ2VkYCAqd29uJiMzOTt0KiBiZSB0cmlnZ2VyZWQsIG5vIG1hdHRlciBob3cgbWFueSB0aW1lcyB3ZSB3cml0ZSB0byBgL3N5cy9idXMvYXAvc2NhbnNgLiAgVGhpcyBzZWVtcyB0byBzdWdnZXN0IHRoZSBoeXBlcnZpc29yIChRRU1VLCBpbiB0aGlzIGNhc2UpIGhhcyB0byBjaGFuZ2UgdGhlIHVuZGVybHlpbmcgY29uZmlndXJhdGlvbi4gSWYgUUVNVSBkb2VzbiYjMzk7dCBjaGFuZ2UgYW55dGhpbmcsIHRoaXMgd2hvbGUgY29kZSBwYXRoIGFwcGVhcnMgdG8gYmUgaW5lcnQuCgpUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBjYW4gYSB1c2VyLXNwYWNlIHByb2Nlc3MgKndpdGhpbiB0aGUgZ3Vlc3QqIGFjdHVhbGx5IG1vZGlmeSB0aGlzIEFQIGNvbmZpZ3VyYXRpb24gaW4gYSB3YXkgdGhhdCB3b3VsZCB0cmlnZ2VyIHRoaXM/ICBSZWFsaXN0aWNhbGx5LCBuby4gVGhlIEFQIGNvbmZpZ3VyYXRpb24gaXMgcHJvdmlkZWQgYnkgdGhlIGh5cGVydmlzb3IuICBVbmxlc3Mgc29tZW9uZSBoYXMgZm91bmQgc29tZSBjcmF6eSBoYWNrLCBvciB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIG1lY2hhbmlzbSBJJiMzOTttIG1pc3NpbmcgdG8gbW9jayBvciBpbmplY3QgY2hhbmdlcyBmcm9tICp3aXRoaW4qIHRoZSBndWVzdCwgdGhpcyBzZWVtcyB0byBiZSB0cmlnZ2VyZWQgb25seSBieSBoeXBlcnZpc29yLWxldmVsIGNoYW5nZXMsIGxpa2UgaG90cGx1Z2dpbmcuCgpCdXQgd2FpdCwgd2hhdCBhYm91dCB0aGUgY2FzZSB3aGVyZSB0aGUgZ3Vlc3QgaXMgcnVubmluZyBvbiBRRU1VLCBidXQgUUVNVSBkb2VzbiYjMzk7dCBzdXBwb3J0IEFQIGNhcmRzIGF0IGFsbCwgb3IgaGFzIG5vbmUgY29uZmlndXJlZD8gIEluIHRoYXQgc2NlbmFyaW8sIGBhcF9xY2lfaW5mby0mZ3Q7ZmxhZ3NgIHdpbGwgbGlrZWx5IGJlIHplcm8sIGluZGljYXRpbmcgUUNJIGlzbiYjMzk7dCBzdXBwb3J0ZWQsIGFuZCBgYXBfZ2V0X2NvbmZpZ3VyYXRpb25gIHdpbGwgY29uc2lzdGVudGx5IHJldHVybiBmYWxzZS4gVGhpcyBtYWtlcyBzZW5zZS4KCkFscmlnaHQsIGlzIHRoZXJlIGFueSBraW5kIG9mIHNvZnR3YXJlIGVtdWxhdGlvbiBvZiBBUCBjYXJkcyB3aXRoaW4gdGhlIGtlcm5lbCB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGludGVydmVuZSBoZXJlPyBJIG5lZWQgdG8gY2hlY2sgaWYgYW55IHRlc3Qgb3IgbW9jayBkcml2ZXJzIGV4aXN0IGZvciB0aGUgQVAgYnVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGEgc2lkZSBwYXRoIHRoYXQmIzM5O3MgZW11bGF0aW5nIEFQIGNoYW5nZXMgd2l0aG91dCBoeXBlcnZpc29yIGlucHV0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthcF9xY2kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTEwNz1zdGF0aWMgc3RydWN0IGFwX2NvbmZpZ19pbmZvIHFjaVsyXTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTA4OnN0YXRpYyBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmNvbnN0IGFwX3FjaV9pbmZvID0gXHUwMDI2cWNpWzBdO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMDk6c3RhdGljIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqY29uc3QgYXBfcWNpX2luZm9fb2xkID0gXHUwMDI2cWNpWzFdO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTAtXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yMDk9c3RhdGljIGludCBhcF9pbnRlcnJ1cHRzX2F2YWlsYWJsZSh2b2lkKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjE0LS8qKlxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMTU6ICogYXBfcWNpX2F2YWlsYWJsZSgpOiBUZXN0IGlmIEFQIGNvbmZpZ3VyYXRpb25cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjE2LSAqIGluZm9ybWF0aW9uIGNhbiBiZSBxdWVyaWVkIHZpYSBRQ0kgc3ViZnVuY3Rpb24uXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMTktICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIyMDpzdGF0aWMgaW50IGFwX3FjaV9hdmFpbGFibGUodm9pZClcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjIxLXtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTI0MT1zdGF0aWMgaW5saW5lIGludCBhcF9xYWN0X2F2YWlsYWJsZSh2b2lkKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDIte1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDM6XHRyZXR1cm4gYXBfcWNpX2luZm8tXHUwMDNlcWFjdDtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ0LX1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTI1MT1pbnQgYXBfc2JfYXZhaWxhYmxlKHZvaWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI1Mi17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI1MzpcdHJldHVybiBhcF9xY2lfaW5mby1cdTAwM2VhcHNiO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNTQtfVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjcwPXN0YXRpYyB2b2lkIF9faW5pdCBhcF9pbml0X3FjaV9pbmZvKHZvaWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI3MS17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI3MjpcdGlmICghYXBfcWNpX2F2YWlsYWJsZSgpIHx8XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI3MzpcdCAgICBhcF9xY2koYXBfcWNpX2luZm8pKSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI3NC1cdFx0QVBfREJGX0lORk8oXCYjMzQ7JXMgUUNJIG5vdCBzdXBwb3J0ZWRcXG5cJiMzNDssIF9fZnVuY19fKTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI3Ni1cdH1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6Mjc3Olx0bWVtY3B5KGFwX3FjaV9pbmZvX29sZCwgYXBfcWNpX2luZm8sIHNpemVvZigqYXBfcWNpX2luZm8pKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjc4LVx0QVBfREJGX0lORk8oXCYjMzQ7JXMgc3VjY2Vzc2Z1bCBmZXRjaGVkIGluaXRpYWwgcWNpIGluZm9cXG5cJiMzNDssIF9fZnVuY19fKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjc5LVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyODA6XHRpZiAoYXBfcWNpX2luZm8tXHUwMDNlYXB4YSkge1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyODE6XHRcdGlmIChhcF9xY2lfaW5mby1cdTAwM2VuYSkge1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyODI6XHRcdFx0YXBfbWF4X2FkYXB0ZXJfaWQgPSBhcF9xY2lfaW5mby1cdTAwM2VuYTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjgzLVx0XHRcdEFQX0RCRl9JTkZPKFwmIzM0OyVzIG5ldyBhcF9tYXhfYWRhcHRlcl9pZCBpcyAlZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI4NS1cdFx0fVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyODY6XHRcdGlmIChhcF9xY2lfaW5mby1cdTAwM2VuZCkge1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyODc6XHRcdFx0YXBfbWF4X2RvbWFpbl9pZCA9IGFwX3FjaV9pbmZvLVx1MDAzZW5kO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yODgtXHRcdFx0QVBfREJGX0lORk8oXCYjMzQ7JXMgbmV3IGFwX21heF9kb21haW5faWQgaXMgJWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0zMTA9c3RhdGljIGlubGluZSBpbnQgYXBfdGVzdF9jb25maWdfY2FyZF9pZCh1bnNpZ25lZCBpbnQgaWQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zMTMtXHRcdHJldHVybiAwO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzozMTQ6XHRpZiAoYXBfcWNpX2luZm8tXHUwMDNlZmxhZ3MpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjMxNTpcdFx0cmV0dXJuIGFwX3Rlc3RfY29uZmlnKGFwX3FjaV9pbmZvLVx1MDAzZWFwbSwgaWQpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zMTYtXHRyZXR1cm4gMTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTMyNz1pbnQgYXBfdGVzdF9jb25maWdfdXNhZ2VfZG9tYWluKHVuc2lnbmVkIGludCBkb21haW4pXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zMzAtXHRcdHJldHVybiAwO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzozMzE6XHRpZiAoYXBfcWNpX2luZm8tXHUwMDNlZmxhZ3MpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjMzMjpcdFx0cmV0dXJuIGFwX3Rlc3RfY29uZmlnKGFwX3FjaV9pbmZvLVx1MDAzZWFxbSwgZG9tYWluKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzMzLVx0cmV0dXJuIDE7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0zNDU9aW50IGFwX3Rlc3RfY29uZmlnX2N0cmxfZG9tYWluKHVuc2lnbmVkIGludCBkb21haW4pXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTM0Ni17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjM0NzpcdGlmICghYXBfcWNpX2luZm8gfHwgZG9tYWluIFx1MDAzZSBhcF9tYXhfZG9tYWluX2lkKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zNDgtXHRcdHJldHVybiAwO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzozNDk6XHRyZXR1cm4gYXBfdGVzdF9jb25maWcoYXBfcWNpX2luZm8tXHUwMDNlYWRtLCBkb21haW4pO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zNTAtfVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTM0OT1zdGF0aWMgc3NpemVfdCBhcF9jb250cm9sX2RvbWFpbl9tYXNrX3Nob3coY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNoYXIgKmJ1ZilcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM1MC17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNTE6XHRpZiAoIWFwX3FjaV9pbmZvLVx1MDAzZWZsYWdzKVx0LyogUUNJIG5vdCBzdXBwb3J0ZWQgKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM1Mi1cdFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDtub3Qgc3VwcG9ydGVkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNTQtXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0OzB4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHhcXG5cJiMzNDssXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNTU6XHRcdFx0ICBhcF9xY2lfaW5mby1cdTAwM2VhZG1bMF0sIGFwX3FjaV9pbmZvLVx1MDAzZWFkbVsxXSxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM1NjpcdFx0XHQgIGFwX3FjaV9pbmZvLVx1MDAzZWFkbVsyXSwgYXBfcWNpX2luZm8tXHUwMDNlYWRtWzNdLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzU3Olx0XHRcdCAgYXBfcWNpX2luZm8tXHUwMDNlYWRtWzRdLCBhcF9xY2lfaW5mby1cdTAwM2VhZG1bNV0sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNTg6XHRcdFx0ICBhcF9xY2lfaW5mby1cdTAwM2VhZG1bNl0sIGFwX3FjaV9pbmZvLVx1MDAzZWFkbVs3XSk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNTktfVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTM2Mz1zdGF0aWMgc3NpemVfdCBhcF91c2FnZV9kb21haW5fbWFza19zaG93KGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjaGFyICpidWYpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNjQte1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzY1Olx0aWYgKCFhcF9xY2lfaW5mby1cdTAwM2VmbGFncylcdC8qIFFDSSBub3Qgc3VwcG9ydGVkICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNjYtXHRcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7bm90IHN1cHBvcnRlZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzY4LVx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDsweCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4XFxuXCYjMzQ7LFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzY5Olx0XHRcdCAgYXBfcWNpX2luZm8tXHUwMDNlYXFtWzBdLCBhcF9xY2lfaW5mby1cdTAwM2VhcW1bMV0sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNzA6XHRcdFx0ICBhcF9xY2lfaW5mby1cdTAwM2VhcW1bMl0sIGFwX3FjaV9pbmZvLVx1MDAzZWFxbVszXSxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM3MTpcdFx0XHQgIGFwX3FjaV9pbmZvLVx1MDAzZWFxbVs0XSwgYXBfcWNpX2luZm8tXHUwMDNlYXFtWzVdLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzcyOlx0XHRcdCAgYXBfcWNpX2luZm8tXHUwMDNlYXFtWzZdLCBhcF9xY2lfaW5mby1cdTAwM2VhcW1bN10pO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzczLX1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTEzNzc9c3RhdGljIHNzaXplX3QgYXBfYWRhcHRlcl9tYXNrX3Nob3coY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNoYXIgKmJ1ZilcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM3OC17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNzk6XHRpZiAoIWFwX3FjaV9pbmZvLVx1MDAzZWZsYWdzKVx0LyogUUNJIG5vdCBzdXBwb3J0ZWQgKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM4MC1cdFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDtub3Qgc3VwcG9ydGVkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzODItXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0OzB4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHhcXG5cJiMzNDssXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzODM6XHRcdFx0ICBhcF9xY2lfaW5mby1cdTAwM2VhcG1bMF0sIGFwX3FjaV9pbmZvLVx1MDAzZWFwbVsxXSxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM4NDpcdFx0XHQgIGFwX3FjaV9pbmZvLVx1MDAzZWFwbVsyXSwgYXBfcWNpX2luZm8tXHUwMDNlYXBtWzNdLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzg1Olx0XHRcdCAgYXBfcWNpX2luZm8tXHUwMDNlYXBtWzRdLCBhcF9xY2lfaW5mby1cdTAwM2VhcG1bNV0sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzODY6XHRcdFx0ICBhcF9xY2lfaW5mby1cdTAwM2VhcG1bNl0sIGFwX3FjaV9pbmZvLVx1MDAzZWFwbVs3XSk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzODctfVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTc0Nz1zdGF0aWMgc3NpemVfdCBmZWF0dXJlc19zaG93KGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjaGFyICpidWYpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzUwLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzUxOlx0aWYgKCFhcF9xY2lfaW5mby1cdTAwM2VmbGFncylcdC8qIFFDSSBub3Qgc3VwcG9ydGVkICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NTItXHRcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7LVxcblwmIzM0Oyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NTMtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3NTQ6XHRpZiAoYXBfcWNpX2luZm8tXHUwMDNlYXBzYylcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc1NS1cdFx0biAmIzQzOz0gc3lzZnNfZW1pdF9hdChidWYsIG4sIFwmIzM0O0FQU0MgXCYjMzQ7KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTc1NjpcdGlmIChhcF9xY2lfaW5mby1cdTAwM2VhcHhhKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzU3LVx0XHRuICYjNDM7PSBzeXNmc19lbWl0X2F0KGJ1ZiwgbiwgXCYjMzQ7QVBYQSBcJiMzNDspO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzU4Olx0aWYgKGFwX3FjaV9pbmZvLVx1MDAzZXFhY3QpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NTktXHRcdG4gJiM0Mzs9IHN5c2ZzX2VtaXRfYXQoYnVmLCBuLCBcJiMzNDtRQUNUIFwmIzM0Oyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3NjA6XHRpZiAoYXBfcWNpX2luZm8tXHUwMDNlcmM4YSlcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc2MS1cdFx0biAmIzQzOz0gc3lzZnNfZW1pdF9hdChidWYsIG4sIFwmIzM0O1JDOEEgXCYjMzQ7KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTc2MjpcdGlmIChhcF9xY2lfaW5mby1cdTAwM2VhcHNiKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzYzLVx0XHRuICYjNDM7PSBzeXNmc19lbWl0X2F0KGJ1ZiwgbiwgXCYjMzQ7QVBTQiBcJiMzNDspO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTkyMz1zdGF0aWMgaW50IF9fZHJ2X25vdGlmeV9jb25maWdfY2hhbmdlZChzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2LCB2b2lkICpkYXRhKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTkyOC1cdFx0aWYgKGFwX2Rydi1cdTAwM2Vvbl9jb25maWdfY2hhbmdlZClcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTkyOTpcdFx0XHRhcF9kcnYtXHUwMDNlb25fY29uZmlnX2NoYW5nZWQoYXBfcWNpX2luZm8sIGFwX3FjaV9pbmZvX29sZCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5MzAtXHRcdG1vZHVsZV9wdXQoZHJ2LVx1MDAzZW93bmVyKTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTE5NDQ9c3RhdGljIGludCBfX2Rydl9ub3RpZnlfc2Nhbl9jb21wbGV0ZShzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2LCB2b2lkICpkYXRhKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTk0OS1cdFx0aWYgKGFwX2Rydi1cdTAwM2Vvbl9zY2FuX2NvbXBsZXRlKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTUwOlx0XHRcdGFwX2Rydi1cdTAwM2Vvbl9zY2FuX2NvbXBsZXRlKGFwX3FjaV9pbmZvLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTUxOlx0XHRcdFx0XHRcdCBhcF9xY2lfaW5mb19vbGQpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTUyLVx0XHRtb2R1bGVfcHV0KGRydi1cdTAwM2Vvd25lcik7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yMzExPXN0YXRpYyBib29sIGFwX2dldF9jb25maWd1cmF0aW9uKHZvaWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMTIte1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzEzOlx0aWYgKCFhcF9xY2lfaW5mby1cdTAwM2VmbGFncylcdC8qIFFDSSBub3Qgc3VwcG9ydGVkICovXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMTQtXHRcdHJldHVybiBmYWxzZTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMxNS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMxNjpcdG1lbWNweShhcF9xY2lfaW5mb19vbGQsIGFwX3FjaV9pbmZvLCBzaXplb2YoKmFwX3FjaV9pbmZvKSk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMTc6XHRhcF9xY2koYXBfcWNpX2luZm8pO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzE4LVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzE5Olx0cmV0dXJuIG1lbWNtcChhcF9xY2lfaW5mbywgYXBfcWNpX2luZm9fb2xkLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzIwLVx0XHQgICAgICBzaXplb2Yoc3RydWN0IGFwX2NvbmZpZ19pbmZvKSkgIT0gMDtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTIzMjk9c3RhdGljIGJvb2wgYXBfY29uZmlnX2hhc19uZXdfYXBzKHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzMzLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzM0Olx0aWYgKCFhcF9xY2lfaW5mby1cdTAwM2VmbGFncylcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMzNS1cdFx0cmV0dXJuIGZhbHNlO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzM2LVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzM3Olx0Yml0bWFwX2FuZG5vdChtLCAodW5zaWduZWQgbG9uZyAqKWFwX3FjaV9pbmZvLVx1MDAzZWFwbSxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMzODpcdFx0ICAgICAgKHVuc2lnbmVkIGxvbmcgKilhcF9xY2lfaW5mb19vbGQtXHUwMDNlYXBtLCBBUF9ERVZJQ0VTKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMzOS1cdGlmICghYml0bWFwX2VtcHR5KG0sIEFQX0RFVklDRVMpKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjM1MT1zdGF0aWMgYm9vbCBhcF9jb25maWdfaGFzX25ld19kb21zKHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzU0LVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzU1Olx0aWYgKCFhcF9xY2lfaW5mby1cdTAwM2VmbGFncylcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM1Ni1cdFx0cmV0dXJuIGZhbHNlO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzU3LVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzU4Olx0Yml0bWFwX2FuZG5vdChtLCAodW5zaWduZWQgbG9uZyAqKWFwX3FjaV9pbmZvLVx1MDAzZWFxbSxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjM1OTpcdFx0ICAgICAgKHVuc2lnbmVkIGxvbmcgKilhcF9xY2lfaW5mb19vbGQtXHUwMDNlYXFtLCBBUF9ET01BSU5TKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM2MC1cdGlmICghYml0bWFwX2VtcHR5KG0sIEFQX0RPTUFJTlMpKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYz04Nj1zdGF0aWMgaW50IHZmaW9fYXBfbWF0cml4X2Rldl9jcmVhdGUodm9pZClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTA2LVx0aWYgKHRlc3RfZmFjaWxpdHkoMTIpKSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTA3Olx0XHRyZXQgPSBhcF9xY2koXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VpbmZvKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xMDgtXHRcdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNTMxCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMzAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlYCBDYWxsYmFjayoqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBubyAmIzM0O21vY2sgZHJpdmVyJiMzNDsgaW52b2x2ZWQgaGVyZSwgdGhlIGBhcF9xY2lgIGluc3RydWN0aW9uIGlzIGV4ZWN1dGVkIGRpcmVjdGx5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpZiB0aGUgaHlwZXJ2aXNvciBkb2VzbiYjMzk7dCBzdXBwb3J0IGl0IG9yIGlmIHRoZSBjb25maWd1cmF0aW9uIHJlbWFpbnMgdW5jaGFuZ2VkLCB0aGUgcmVsYXRlZCBjb2RlIHBhdGggd29uJiMzOTt0IGJlIHRyaWdnZXJlZC4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGJlY29tZXMsIGNhbiBzeXprYWxsZXIgZXZlbiBydW4gb24gYW4gczM5MHggVk0gd2l0aCBBUCBjYXJkcyBwcm9wZXJseSBjb25maWd1cmVkPwoKSSBrbm93IHN5emthbGxlciBoYXMgczM5MHggc3VwcG9ydCwgYnV0IHdoYXQgYWJvdXQgQVAgY2FyZHMgc3BlY2lmaWNhbGx5PyBMZXQmIzM5O3MgcmUtZXhhbWluZSB0aGUgb3JpZ2luYWwgcHJvbXB0Li4uIGl0IG1lbnRpb25zIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBlbXVsYXRlZCBoYXJkd2FyZS4gSXQgYWxzbyBzcGVjaWZpY2FsbHkgaGlnaGxpZ2h0cyAmIzM0Oy5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyYjMzQ7LiBUaGlzIGlzIGEgY2x1ZS4KCkFoLCBgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmVgLiBUaGlzIGlzIHRyaWdnZXJlZCBkdXJpbmcgaG90LXVucGx1ZyBldmVudHMg4oCTIHBhcnRpY3VsYXJseSB3aGVuIEFQIGNvbmZpZ3VyYXRpb24gY2hhbmdlcywgc2F5LCB3aGVuIGFkYXB0ZXJzIG9yIGRvbWFpbnMgYXJlIHJlbW92ZWQuIFRoaW5raW5nIGl0IHRocm91Z2guLi4gYHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlYCBpcyBjYWxsZWQgZnJvbSBgdmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmVgLCB3aGljaCBpcyBjYWxsZWQgd2hlbiB0aGUgQVAgY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBEb2VzIHRoaXMgY2FsbGJhY2sgY291bnQgYXMgYSB0ZWFyZG93biBmdW5jdGlvbj8gWWVzLCBpdCYjMzk7cyBleHBsaWNpdGx5IGZvciBob3QtdW5wbHVnIHNjZW5hcmlvcywgd2hpY2ggY29uZmlybXMgdGhlIHJlbGV2YW5jZSB0byB0aGUgc3RhdGVkIGNvbnRleHQuCgpOb3csIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSwgYSBxdWljayBjaGVjayBvZiB0aGUgY29tbWVudCBmb3IgYHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlYCBpcyBpbiBvcmRlciB0byBiZSBjb21wbGV0ZWx5IGNlcnRhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjU4NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyNTg1Olx0LyoqXG4yNTg2Olx0ICogdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUgLSBkZXRlcm1pbmVzIHdoaWNoIGd1ZXN0cyBhcmUgdXNpbmcgdGhlIGFkYXB0ZXJzLFxuMjU4NzpcdCAqXHRcdFx0ICAgICBkb21haW5zIGFuZCBjb250cm9sIGRvbWFpbnMgdGhhdCBoYXZlIGJlZW4gcmVtb3ZlZFxuMjU4ODpcdCAqXHRcdFx0ICAgICBmcm9tIHRoZSBob3N0IEFQIGNvbmZpZ3VyYXRpb24gYW5kIHVucGx1Z3MgdGhlbVxuMjU4OTpcdCAqXHRcdFx0ICAgICBmcm9tIHRob3NlIGd1ZXN0cy5cbjI1OTA6XHQgKlxuMjU5MTpcdCAqIEBhcF9yZW1vdmU6XHRiaXRtYXAgc3BlY2lmeWluZyB3aGljaCBhZGFwdGVycyBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBob3N0XG4yNTkyOlx0ICpcdFx0Y29uZmlnLlxuMjU5MzpcdCAqIEBhcV9yZW1vdmU6XHRiaXRtYXAgc3BlY2lmeWluZyB3aGljaCBkb21haW5zIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIGhvc3RcbjI1OTQ6XHQgKlx0XHRjb25maWcuXG4yNTk1Olx0ICogQGNkX3JlbW92ZTpcdGJpdG1hcCBzcGVjaWZ5aW5nIHdoaWNoIGNvbnRyb2wgZG9tYWlucyBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tXG4yNTk2Olx0ICpcdFx0dGhlIGhvc3QgY29uZmlnLlxuMjU5NzpcdCAqL1xuMjU5ODpcdHN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlKHVuc2lnbmVkIGxvbmcgKmFwX3JlbW92ZSxcbjI1OTk6XHRcdFx0XHRcdCAgICB1bnNpZ25lZCBsb25nICphcV9yZW1vdmUsXG4yNjAwOlx0XHRcdFx0XHQgICAgdW5zaWduZWQgbG9uZyAqY2RfcmVtb3ZlKVxuMjYwMTpcdHtcbjI2MDI6XHRcdHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXY7XG4yNjAzOlx0XHRERUNMQVJFX0JJVE1BUChhcHJlbSwgQVBfREVWSUNFUyk7XG4yNjA0Olx0XHRERUNMQVJFX0JJVE1BUChhcXJlbSwgQVBfRE9NQUlOUyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNTY0CgkJCQkJCQlvdXRwdXQ6IDEwNAoJCQkJCQkJdGhvdWdodHM6IDY0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgRGVjaXNpb246IE5vKioKCk9rYXksIGhlcmUmIzM5O3MgdGhlIGJyZWFrZG93biBvZiBteSB0aGlua2luZy4gVGhlIGNvZGUgaW4gcXVlc3Rpb24gY2xlYXJseSB0YXJnZXRzIGhvdC11bnBsdWcgc2NlbmFyaW9zLCBzcGVjaWZpY2FsbHkgcmVnYXJkaW5nIEFQIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgaW5zdHJ1Y3RzIG1lIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyBsaWtlIGAucmVtb3ZlYCBvciBgLnNodXRkb3duYCB0aGF0IGFyZSAqb25seSogZXhlY3V0ZWQgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4gVGhpcyBwYXRjaCBmYWxscyBzcXVhcmVseSBpbnRvIHRoYXQgY2F0ZWdvcnksIGRlYWxpbmcgd2l0aCB0aGUgcmVtb3ZhbCBvZiBndWVzdHMgdXNpbmcgY2VydGFpbiBhZGFwdGVycywgZG9tYWlucywgYW5kIGNvbnRyb2wgZG9tYWlucyBhZnRlciB0aGUgaG9zdCBBUCBjb25maWd1cmF0aW9uIGlzIGNoYW5nZWQuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHRyYWNlZCB0aGUgY2FsbCBjaGFpbi4gYHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlYCBpcyB0cmlnZ2VyZWQgdGhyb3VnaCBgdmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmVgLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBieSBgdmZpb19hcF9vbl9jZmdfY2hhbmdlZGAuIFRoaXMgZnVuY3Rpb24gaXMgaW5pdGlhdGVkIGJ5IGBfX2Rydl9ub3RpZnlfY29uZmlnX2NoYW5nZWRgLCB3aGljaCBpcyBkaXJlY3RseSBsaW5rZWQgdG8gQVAgYnVzIGNvbmZpZ3VyYXRpb24gY2hhbmdlcywgaS5lLiwgaG90cGx1Zy9ob3R1bnBsdWcgZXZlbnRzLiAgVGhlcmUmIzM5O3Mgbm8gd2F5IGFyb3VuZCBpdDsgdGhpcyBpcyBhIHB1cmUgaG90LXVucGx1ZyBldmVudCBoYW5kbGVyLiBNeSByZWFkaW5nIG9mIHRoZSBpbnN0cnVjdGlvbnMgaXMgY2xlYXIsIHNvIHRoaXMgaXMgbm90IHdvcnRoIGZ1enppbmcuCgpJIHF1aWNrbHkgcmV2aWV3ZWQgdGhlIHBhdGNoIGl0c2VsZiwgYW5kIGl0IG1vZGlmaWVzIHRoZSBmdW5jdGlvbiBgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmVgLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgYSBgYml0bWFwX2FuZG5vdGAgb3BlcmF0aW9uIHRvIGBiaXRtYXBfYW5kYC4gVGhhdCYjMzk7cyBhIGJ1ZyBmaXggd2l0aGluIHRoaXMgaG90LXVucGx1ZyBwYXRoLiBUaGUgZmFjdCB0aGF0IGl0IHJlbGF0ZXMgdG8gczM5MCBBUCBjcnlwdG8sIGFuZCB0aGF0IGl0IHJlcXVpcmVzIGh5cGVydmlzb3IgY29uZmlndXJhdGlvbiBjaGFuZ2VzIHRvIGV2ZW4gYmUgdHJpZ2dlcmVkLCBmdXJ0aGVyIHJlaW5mb3JjZXMgdGhlICYjMzQ7aG90LXVucGx1ZyYjMzQ7IGV4Y2VwdGlvbi4KClRoZXJlZm9yZSwgSSYjMzk7bSBjb25maWRlbnQgaW4gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjM6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhIGhvdC11bnBsdWcgY2FsbGJhY2sgKGB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZWApIGluIHRoZSBzMzkwIFZGSU8gQVAgY3J5cHRvIGRyaXZlciwgd2hpY2ggaXMgZXhlY3V0ZWQgb25seSB3aGVuIEFQIGFkYXB0ZXJzIG9yIGRvbWFpbnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgaG9zdCBBUCBjb25maWd1cmF0aW9uLiBBY2NvcmRpbmcgdG8gdGhlIGluc3RydWN0aW9ucywgdGVhcmRvd24gY2FsbGJhY2tzIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIGhvdC11bnBsdWcgb3BlcmF0aW9ucyBhcmUgbm90IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhIGhvdC11bnBsdWcgY2FsbGJhY2sgKGB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZWApIGluIHRoZSBzMzkwIFZGSU8gQVAgY3J5cHRvIGRyaXZlciwgd2hpY2ggaXMgZXhlY3V0ZWQgb25seSB3aGVuIEFQIGFkYXB0ZXJzIG9yIGRvbWFpbnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgaG9zdCBBUCBjb25maWd1cmF0aW9uLiBBY2NvcmRpbmcgdG8gdGhlIGluc3RydWN0aW9ucywgdGVhcmRvd24gY2FsbGJhY2tzIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIGhvdC11bnBsdWcgb3BlcmF0aW9ucyBhcmUgbm90IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMzoxODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTY6NTguMjAwMTY0NjkxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxMzI4NjYyMzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYSBob3QtdW5wbHVnIGNhbGxiYWNrIChgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmVgKSBpbiB0aGUgczM5MCBWRklPIEFQIGNyeXB0byBkcml2ZXIsIHdoaWNoIGlzIGV4ZWN1dGVkIG9ubHkgd2hlbiBBUCBhZGFwdGVycyBvciBkb21haW5zIGFyZSByZW1vdmVkIGZyb20gdGhlIGhvc3QgQVAgY29uZmlndXJhdGlvbi4gQWNjb3JkaW5nIHRvIHRoZSBpbnN0cnVjdGlvbnMsIHRlYXJkb3duIGNhbGxiYWNrcyBleGVjdXRlZCBvbmx5IGR1cmluZyBob3QtdW5wbHVnIG9wZXJhdGlvbnMgYXJlIG5vdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTY6NTguMjAwMTcwMjYxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjk0MDM4NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3ZTM2MTkzMjI0ZTZiYTVlMWUzZmUzNTBjMzU0N2Y2MzYxYzdlMTA4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDcgMjM6MTY6NTcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jIGIvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jXFxuaW5kZXggNDRiM2ExZGNjMWIzNi4uMWJmZGJlODUwMjNkZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmNcXG4rKysgYi9kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmNcXG5AQCAtMjYxNSw5ICsyNjE1LDkgQEAgc3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUodW5zaWduZWQgbG9uZyAqYXBfcmVtb3ZlLFxcbiBcXHRcXHRkb19yZW1vdmUgfD0gYml0bWFwX2FuZChhcXJlbSwgYXFfcmVtb3ZlLFxcbiBcXHRcXHRcXHRcXHRcXHQgIG1hdHJpeF9tZGV2LVxcdTAwM2VtYXRyaXguYXFtLFxcbiBcXHRcXHRcXHRcXHRcXHQgIEFQX0RPTUFJTlMpO1xcbi1cXHRcXHRkb19yZW1vdmUgfD0gYml0bWFwX2FuZG5vdChjZHJlbSwgY2RfcmVtb3ZlLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgIG1hdHJpeF9tZGV2LVxcdTAwM2VtYXRyaXguYWRtLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgIEFQX0RPTUFJTlMpO1xcbitcXHRcXHRkb19yZW1vdmUgfD0gYml0bWFwX2FuZChjZHJlbSwgY2RfcmVtb3ZlLFxcbitcXHRcXHRcXHRcXHRcXHRtYXRyaXhfbWRldi1cXHUwMDNlbWF0cml4LmFkbSxcXG4rXFx0XFx0XFx0XFx0XFx0QVBfRE9NQUlOUyk7XFxuIFxcbiBcXHRcXHRpZiAoZG9fcmVtb3ZlKVxcbiBcXHRcXHRcXHR2ZmlvX2FwX21kZXZfaG90X3VucGx1Z19jZmcobWF0cml4X21kZXYsIGFwcmVtLCBhcXJlbSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTY6NTguNTcwMjU0OTg3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTAwOTU4NTU2NTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhIGhvdC11bnBsdWcgY2FsbGJhY2sgKGB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZWApIGluIHRoZSBzMzkwIFZGSU8gQVAgY3J5cHRvIGRyaXZlciwgd2hpY2ggaXMgZXhlY3V0ZWQgb25seSB3aGVuIEFQIGFkYXB0ZXJzIG9yIGRvbWFpbnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgaG9zdCBBUCBjb25maWd1cmF0aW9uLiBBY2NvcmRpbmcgdG8gdGhlIGluc3RydWN0aW9ucywgdGVhcmRvd24gY2FsbGJhY2tzIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIGhvdC11bnBsdWcgb3BlcmF0aW9ucyBhcmUgbm90IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3ZTM2MTkzMjI0ZTZiYTVlMWUzZmUzNTBjMzU0N2Y2MzYxYzdlMTA4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAyMzoxNjo1NyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYyBiL2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuY1xuaW5kZXggNDRiM2ExZGNjMWIzNi4uMWJmZGJlODUwMjNkZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuY1xuKysrIGIvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jXG5AQCAtMjYxNSw5ICsyNjE1LDkgQEAgc3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUodW5zaWduZWQgbG9uZyAqYXBfcmVtb3ZlLFxuIFx0XHRkb19yZW1vdmUgfD0gYml0bWFwX2FuZChhcXJlbSwgYXFfcmVtb3ZlLFxuIFx0XHRcdFx0XHQgIG1hdHJpeF9tZGV2LVx1MDAzZW1hdHJpeC5hcW0sXG4gXHRcdFx0XHRcdCAgQVBfRE9NQUlOUyk7XG4tXHRcdGRvX3JlbW92ZSB8PSBiaXRtYXBfYW5kbm90KGNkcmVtLCBjZF9yZW1vdmUsXG4tXHRcdFx0XHRcdCAgICAgbWF0cml4X21kZXYtXHUwMDNlbWF0cml4LmFkbSxcbi1cdFx0XHRcdFx0ICAgICBBUF9ET01BSU5TKTtcbitcdFx0ZG9fcmVtb3ZlIHw9IGJpdG1hcF9hbmQoY2RyZW0sIGNkX3JlbW92ZSxcbitcdFx0XHRcdFx0bWF0cml4X21kZXYtXHUwMDNlbWF0cml4LmFkbSxcbitcdFx0XHRcdFx0QVBfRE9NQUlOUyk7XG4gXG4gXHRcdGlmIChkb19yZW1vdmUpXG4gXHRcdFx0dmZpb19hcF9tZGV2X2hvdF91bnBsdWdfY2ZnKG1hdHJpeF9tZGV2LCBhcHJlbSwgYXFyZW0sXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxNjo1OC41NzAyNTYzMDdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTYyODMwMjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIENyeXB0byBEcml2ZXIgQ2hhbmdlKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBpbiBgZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jYC4gUmlnaHQgYXdheSwgdGhhdCB0ZWxscyBtZSBpdCdzIHMzOTAtc3BlY2lmaWMsIHNvIHdlJ3JlIHRhbGtpbmcgbWFpbmZyYW1lIHRlcnJpdG9yeS4gSXQncyBhIGBiaXRtYXBfYW5kbm90YCB0byBgYml0bWFwX2FuZGAgY2hhbmdlIHdpdGhpbiB0aGUgYHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlYCBmdW5jdGlvbi4gVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgY29kZSBwYXRoIGlzIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUuIFdlIGNhbiBlbXVsYXRlIHMzOTB4IGluIFFFTVUsIGJ1dCBkb2VzIGl0IG5lY2Vzc2l0YXRlIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIHRvIGhpdCB0aGlzIHNlY3Rpb24gb2YgY29kZT9cblxuVkZJTyBBUCBpcyBzcGVjaWZpY2FsbHkgZm9yIEFkanVuY3QgUHJvY2Vzc29yIGNyeXB0byBjYXJkcyBvbiBzMzkwLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIuIE5vdywgY2FuIHRoaXMgYmUgZnV6emVkPyBUaGUgcHJvbXB0IHN0YXRlcyB0aGF0IHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6YXRpb24sIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSwgc2hvdWxkbid0IGJlIGNvbnNpZGVyZWQuIFRoZSBwcm9tcHQgbWVudGlvbnMgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgYW5kIHRlYXJkb3duIGNhbGxiYWNrcyBhcyBhcmVhcyB0byBiZSB3YXJ5IG9mLCBlc3BlY2lhbGx5IHRob3NlIGV4ZWN1dGVkIGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuIEkgbmVlZCB0byBmb2N1cyBvbiBgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmVgIHRvIGFzc2VzcyB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiB0aGUgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTksIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxNzowMy41MzMwODkzOTNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY5NDA0MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmZpb19hcF9tZGV2X2NmZ19yZW1vdmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yNTU3PXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9ob3RfdW5wbHVnX2NmZyhzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2LFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1ODUtLyoqXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI1ODY6ICogdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUgLSBkZXRlcm1pbmVzIHdoaWNoIGd1ZXN0cyBhcmUgdXNpbmcgdGhlIGFkYXB0ZXJzLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNTg3LSAqXFx0XFx0XFx0ICAgICBkb21haW5zIGFuZCBjb250cm9sIGRvbWFpbnMgdGhhdCBoYXZlIGJlZW4gcmVtb3ZlZFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1OTctICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI1OTg6c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUodW5zaWduZWQgbG9uZyAqYXBfcmVtb3ZlLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNTk5LVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nICphcV9yZW1vdmUsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjYzOT1zdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZShzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jb25maWdfaW5mbyxcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjYwLVxcdGlmIChkb19yZW1vdmUpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI2NjE6XFx0XFx0dmZpb19hcF9tZGV2X2NmZ19yZW1vdmUoYXByZW0sIGFxcmVtLCBjZHJlbSk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2NjItfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxNzowMy41ODAwMzUwMzJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTY0OTQzNTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFraW5nIG9uIHRoZSBwZXJzb25hIHlvdSd2ZSByZXF1ZXN0ZWQsIGFpbWVkIGF0IGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgYHZmaW9fYXBfbWRldl9vbl9jZmdfcmVtb3ZlYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byBgdmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmVgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGF0J3MgdGhlIGNvbnRleHQgaGVyZT9cIiBUaGlzIG5hbWUgc2NyZWFtcyBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgYWR2YW5jZWQgcHJvZ3JhbW1pbmcgKEFQKSBtb2RlIHdpdGhpbiBWRklPLCBhbmQgc3BlY2lmaWNhbGx5LCB0aGUgaGFuZGxpbmcgb2YgbWVkaWF0ZWQgZGV2aWNlcyAobWRldnMpLiBUaGUgXCJvbl9jZmdfcmVtb3ZlXCIgcGFydCBzdHJvbmdseSBzdWdnZXN0cyB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgdHJpZ2dlcmVkIHdoZW4gYSBjb25maWd1cmF0aW9uIGZvciBhbiBtZGV2IGlzIGJlaW5nIHJlbW92ZWQsIGxpa2VseSBkdXJpbmcgZGV2aWNlIHVuYmluZGluZywgZHJpdmVyIGRldGFjaG1lbnQsIG9yIGEgc2ltaWxhciB0ZWFyZG93biBzZXF1ZW5jZS5cblxuSeKAmW0gYWxyZWFkeSBtZW50YWxseSBtYXBwaW5nIHRoaXMgdG8gcG90ZW50aWFsIGFyZWFzIG9mIGludGVyZXN0OlxuXG4qICAgKipSZXNvdXJjZSBDbGVhbnVwOioqIElzIHRoaXMgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgYWxsb2NhdGVkIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlIG1kZXYncyBjb25maWd1cmF0aW9uPyBJIHN1c3BlY3Qgc28uIEkgbmVlZCB0byBiZSB0aGlua2luZyBhYm91dCBtZW1vcnkgYWxsb2NhdGlvbnMsIGludGVycnVwdCB2ZWN0b3JzLCBETUEgbWFwcGluZ3MsIGFuZCBhbnl0aGluZyBlbHNlIHRoZSBjb25maWd1cmF0aW9uIG1pZ2h0IGhhdmUgc2V0IHVwLlxuKiAgICoqU3luY2hyb25pemF0aW9uOioqIEdpdmVuIHRoZSBjb21wbGV4aXR5IG9mIFZGSU8gYW5kIHRoZSBtdWx0aS10aHJlYWRlZCBuYXR1cmUgb2YgdGhlIGtlcm5lbCwgSSdtIGdvaW5nIHRvIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgYW55IHNoYXJlZCBkYXRhIHN0cnVjdHVyZXMgYXJlIHByb3RlY3RlZC4gSXMgdGhlcmUgYSBzcGlubG9jaywgbXV0ZXgsIG9yIG90aGVyIG1lY2hhbmlzbSBoZXJlPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgSSBuZWVkIHRvIGlkZW50aWZ5P1xuKiAgICoqRXJyb3IgSGFuZGxpbmc6KiogV2hhdCdzIHRoZSBlcnJvci1oYW5kbGluZyBzdHJhdGVneT8gRG9lcyB0aGUgZnVuY3Rpb24gcmV0dXJuIGVycm9yIGNvZGVzLCBvciBkb2VzIGl0IHBhbmljPyBXaGF0IHNwZWNpZmljIGVycm9ycyBjYW4gb2NjdXIgZHVyaW5nIHRoZSByZW1vdmFsIHByb2Nlc3M/IEkgbmVlZCB0byBrbm93IGhvdyByZXNpbGllbnQgdGhpcyBmdW5jdGlvbiBpcy5cbiogICAqKkNhbGwgU2l0ZXM6KiogV2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBjYWxsZWQgZnJvbT8gS25vd2luZyB0aGUgY2FsbGVycyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBzZXF1ZW5jZSBvZiBldmVudHMgYW5kIHRoZSBjb250ZXh0IGluIHdoaWNoIGB2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZWAgb3BlcmF0ZXMuIGBncmVwYCBhbmQgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2YgVkZJTydzIGRldmljZSBtb2RlbCBzaG91bGQgaGVscCBtZSBzb3J0IHRoYXQgb3V0IHF1aWNrbHkuXG4qICAgKipTaWRlIEVmZmVjdHM6KiogQXJlIHRoZXJlIGFueSBzaWRlIGVmZmVjdHM/IEFueSBjaGFuZ2VzIHRvIG90aGVyIFZGSU8gb3IgZGV2aWNlIHN0YXRlPyBJJ2xsIG5lZWQgdG8gc2NydXRpbml6ZSBhbnkgY29kZSB0aGF0IGludGVyYWN0cyB3aXRoIG90aGVyIGRhdGEgc3RydWN0dXJlcyBvciBjYWxscyBvdXQgdG8gb3RoZXIgVkZJTy1yZWxhdGVkIGZ1bmN0aW9ucy5cblxuTXkgYXBwcm9hY2ggd2lsbCBiZSBtZXRob2RpY2FsLiBJIHdpbGwgcXVpY2tseSBzY2FuIHRoZSBmdW5jdGlvbiBib2R5IGZvciBrZXkgaW5kaWNhdG9yczogbG9ja2luZywgcmVzb3VyY2UgZGVhbGxvY2F0aW9uLCBlcnJvciBjaGVja2luZywgYW5kIGludGVyYWN0aW9ucyB3aXRoIFZGSU8gY29yZSBkYXRhIHN0cnVjdHVyZXMuIEFmdGVyIHRoYXQsIEknbGwgdHJhY2UgaXRzIGNhbGxlcnMgdG8gYnVpbGQgYSBjb21wcmVoZW5zaXZlIHBpY3R1cmUgb2YgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLiBUaGUgZGV2aWwgaXMgYWx3YXlzIGluIHRoZSBkZXRhaWxzLCBzbyBJIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbi4gSSBhbHNvIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZnVuY3Rpb24gZG9lc24ndCBsZWFrIHJlc291cmNlcyBvciBsZWF2ZSBhbnkgbGluZ2VyaW5nIHN0YXRlLiBMZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMTYsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxNzowOC4xNDQ5ODA4OTNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg1Nzg1MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yNTk4PXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlKHVuc2lnbmVkIGxvbmcgKmFwX3JlbW92ZSxcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjMxLS8qKlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNjMyOiAqIHZmaW9fYXBfbWRldl9vbl9jZmdfcmVtb3ZlIC0gcmVzcG9uZHMgdG8gdGhlIHJlbW92YWwgb2YgYWRhcHRlcnMsIGRvbWFpbnMgYW5kXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2MzMtICpcXHRcXHRcXHRcXHRjb250cm9sIGRvbWFpbnMgZnJvbSB0aGUgaG9zdCBBUCBjb25maWd1cmF0aW9uXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjYzOC0gKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjYzOTpzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZShzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jb25maWdfaW5mbyxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjY0MC1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpwcmV2X2NvbmZpZ19pbmZvKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI4MDQ9dm9pZCB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqY3VyX2NmZ19pbmZvLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4MTEtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI4MTI6XFx0dmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmUoY3VyX2NmZ19pbmZvLCBwcmV2X2NmZ19pbmZvKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgxMy1cXHR2ZmlvX2FwX21kZXZfb25fY2ZnX2FkZChjdXJfY2ZnX2luZm8sIHByZXZfY2ZnX2luZm8pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxNzowOC4xOTM1NjUxNzFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Nzg4OTgyNzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93biwgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkOlxuXG4qKlRyYWNpbmcgYHZmaW9fYXBfb25fY2ZnX2NoYW5nZWRgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBmdW5jdGlvbiBuYW1lLCBgdmZpb19hcF9vbl9jZmdfY2hhbmdlZGAsIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIHRoaXMgaXMgYSBjYWxsYmFjayBvciBoYW5kbGVyIHdpdGhpbiB0aGUgVkZJTyAoVmlydHVhbCBGdW5jdGlvbiBJL08pIGZyYW1ld29yaywgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCBjaGFuZ2VzIHRvIHRoZSBjb25maWd1cmF0aW9uIG9mIGFuIEkvTyBkZXZpY2UuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kICp3aGF0KiBjb25maWd1cmF0aW9uIGlzIGNoYW5naW5nLCBhbmQgKndoeSogdGhpcyBoYW5kbGVyIGlzIHRoZSBvbmUgYmVpbmcgdHJpZ2dlcmVkLiBJcyBpdCBhIGhvdHBsdWcgZXZlbnQ/IEEgZGV2aWNlIHJlLWVudW1lcmF0aW9uPyBBIHVzZXItc3BhY2UgY29tbWFuZD8gT3IsIGlzIGl0IGR1ZSB0byB0aGUgaW50ZXJuYWwgb3BlcmF0aW9uIG9mIHRoZSBWRklPIHN5c3RlbSBpdHNlbGY/XG5cbk15IGZpcnN0IHN0ZXAgd291bGQgYmUgdG8gZmlndXJlIG91dCB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tLCBieSBjcm9zcy1yZWZlcmVuY2luZyBpdCB3aXRoIHRoZSBjYWxsIHN0YWNrLiBBIHF1aWNrIHNlYXJjaCBzaG91bGQgcmV2ZWFsIHRoZSBsaWtlbHkgY2FsbGVycywgYWxsb3dpbmcgbWUgdG8gYnVpbGQgYSBjb250ZXh0dWFsIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBjb25maWd1cmF0aW9uIGNoYW5nZSBpcyBiZWluZyBpbml0aWF0ZWQuIEknbGwgbmVlZCB0byBsb29rIGZvciBjb2RlIHRoYXQgc2V0cyB1cCBvciBtYW5hZ2VzIFZGSU8gZGV2aWNlcywgcHJvYmFibHkgaW52b2x2aW5nIHRoaW5ncyBsaWtlIFBDSSBkZXZpY2Ugc3RydWN0dXJlcywgRE1BIG1hcHBpbmdzLCBhbmQgcGVyaGFwcyBldmVuIGRldmljZS1zcGVjaWZpYyByZWdpc3RlcnMuXG5cbk5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24uIFdoYXQga2luZCBvZiBkYXRhIGlzIHBhc3NlZCBpbj8gSXMgaXQgdGhlIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIGl0c2VsZiwgb3IgYSBwb2ludGVyIHRvIHNvbWUgVkZJTy1pbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgY2hhbmdlPyBBcmUgdGhlcmUgZGV2aWNlIGlkZW50aWZpZXJzPyBDb250ZXh0dWFsIGluZm9ybWF0aW9uPyBVbmRlcnN0YW5kaW5nIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIHdpbGwgYmUgdml0YWwgdG8gZGVjaXBoZXJpbmcgdGhlIGZ1bmN0aW9u4oCZcyBsb2dpYy5cblxuRnJvbSB0aGVyZSwgSSdsbCBleGFtaW5lIHRoZSBmdW5jdGlvbidzIGludGVybmFsIHdvcmtpbmdzLiBXaGF0J3MgaXQgZG9pbmc/IElzIGl0IG1hbmlwdWxhdGluZyBkZXZpY2Utc3BlY2lmaWMgcmVnaXN0ZXJzPyBJcyBpdCB1cGRhdGluZyBWRklPIGRhdGEgc3RydWN0dXJlcz8gSXMgaXQgbm90aWZ5aW5nIHVzZXItc3BhY2UgdmlhIGFuIGV2ZW50ZmQgb3IgaW9jdGw/IERvZXMgaXQgaW52b2x2ZSBhY3F1aXJpbmcgYW55IGxvY2tzIG9yIGNyaXRpY2FsIHNlY3Rpb25zIHRvIG1haW50YWluIGRhdGEgY29uc2lzdGVuY3k/IEknZCBleHBlY3QgaXQgdG8gYmUgaGFuZGxpbmcgYXNwZWN0cyByZWxhdGVkIHRvIGRldmljZSBpbml0aWFsaXphdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIHBlcm1pc3Npb24gbWFuYWdlbWVudC4gQW55IGludGVyYWN0aW9uIHdpdGggdGhlIE1NSU8gcmVnaW9uIG9yIERNQSBzZXR0aW5ncyB3aWxsIGJlIG9mIHBhcnRpY3VsYXIgaW50ZXJlc3QuIEknbGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIG1lbW9yeSBjb3JydXB0aW9uLlxuXG5GaW5hbGx5LCBJJ2xsIG5lZWQgdG8gY29uc2lkZXIgdGhlIGxhcmdlciBwaWN0dXJlLiBIb3cgZG9lcyB0aGlzIGZpdCBpbnRvIHRoZSBvdmVyYWxsIFZGSU8gZGV2aWNlIGxpZmVjeWNsZT8gV2hhdCBhcmUgdGhlIHBvdGVudGlhbCBjb25zZXF1ZW5jZXMgaWYgdGhpcyBoYW5kbGVyIGZhaWxzIG9yIGhhcyBhbiB1bmV4cGVjdGVkIHNpZGUgZWZmZWN0PyBBcmUgdGhlcmUgb3RoZXIgcmVsYXRlZCBoYW5kbGVycz8gQXJlIHRoZXJlIHBvdGVudGlhbCBzZWN1cml0eSBpbXBsaWNhdGlvbnMgb2YgYWxsb3dpbmcgY29uZmlndXJhdGlvbiBjaGFuZ2VzIG9uIHRoZSBJT01NVSBzaWRlPyBBcmUgd2Ugd29ya2luZyBpbiBhIHNlY3VyZSBlbnZpcm9ubWVudD8gQW5kLCBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGhhcHBlbnMgaWYgc29tZXRoaW5nIGdvZXMgd3Jvbmc7IGFyZSB0aGVyZSBlcnJvciBwYXRocyBvciBsb2dnaW5nIGluIHBsYWNlPyBUaGlzIHdpbGwgaW5mb3JtIG15IGFzc2Vzc21lbnQgb2YgdGhlIGZ1bmN0aW9uJ3MgY29ycmVjdG5lc3MsIHJvYnVzdG5lc3MsIGFuZCBwZXJmb3JtYW5jZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIwMCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIzOjE3OjEyLjk4MjU1MDA5NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjE3OTk2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYz01OD1zdGF0aWMgc3RydWN0IGFwX2RyaXZlciB2ZmlvX2FwX2RydiA9IHtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy02MS1cXHQuaW5fdXNlID0gdmZpb19hcF9tZGV2X3Jlc291cmNlX2luX3VzZSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6NjI6XFx0Lm9uX2NvbmZpZ19jaGFuZ2VkID0gdmZpb19hcF9vbl9jZmdfY2hhbmdlZCxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtNjMtXFx0Lm9uX3NjYW5fY29tcGxldGUgPSB2ZmlvX2FwX29uX3NjYW5fY29tcGxldGUsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9Mjc3Mj1zdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfb25fY2ZnX2FkZChzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jb25maWdfaW5mbyxcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNzk3LS8qKlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNzk4OiAqIHZmaW9fYXBfb25fY2ZnX2NoYW5nZWQgLSBoYW5kbGVzIG5vdGlmaWNhdGlvbiBvZiBjaGFuZ2VzIHRvIHRoZSBob3N0IEFQXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI3OTktICpcXHRcXHRcXHQgICAgY29uZmlndXJhdGlvbi5cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODAzLSAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODA0OnZvaWQgdmZpb19hcF9vbl9jZmdfY2hhbmdlZChzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jZmdfaW5mbyxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgwNS1cXHRcXHRcXHQgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpwcmV2X2NmZ19pbmZvKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaD0xNjE9aW50IHZmaW9fYXBfbWRldl9yZXNvdXJjZV9pbl91c2UodW5zaWduZWQgbG9uZyAqYXBtLCB1bnNpZ25lZCBsb25nICphcW0pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtMTYyLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg6MTYzOnZvaWQgdmZpb19hcF9vbl9jZmdfY2hhbmdlZChzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKm5ld19jb25maWdfaW5mbyxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTE2NC1cXHRcXHRcXHQgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpvbGRfY29uZmlnX2luZm8pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxNzoxMy4wMzQ3MzUzMzNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDg3OTM2NDMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFQIENvbmZpZ3VyYXRpb24gQ2hhbmdlcyBpbiBhIFZpcnR1YWxpemVkIFdvcmxkKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgb25fY29uZmlnX2NoYW5nZWRgIGNhbGxiYWNrLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBBUCBjb25maWd1cmF0aW9ucy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiQ2FuIHRoaXMgZXZlbiAqaGFwcGVuKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50P1wiIEl0J3MgczM5MCBzcGVjaWZpYywgd2hpY2ggYWxyZWFkeSBuYXJyb3dzIHRoZSBzY29wZSwgYW5kIGl0J3MgdGllZCB0byBBUCBjcnlwdG8gY2FyZHMuIFRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlc2UgQVAgY2FyZHMgYXJlIGVtdWxhdGFibGUgd2l0aGluIFFFTVUuIEkga25vdyBRRU1VIGhhcyBzb21lIHN1cHBvcnQgZm9yIGB2ZmlvLWFwYCwgYnV0IEkgc2VlbSB0byByZWNhbGwgdGhhdCdzIGZvciAqcGFzc2luZyB0aHJvdWdoKiBwaHlzaWNhbCBBUCBjYXJkcyB0byBndWVzdCBWTXMsIHdoaWNoIGlzIG5vdCB3aGF0IEknbSBpbnRlcmVzdGVkIGluIGhlcmUuXG5cbkhvbGQgb24sIEkgc2VlbSB0byByZWNhbGwgc29tZXRoaW5nIC0gdGhlIGRvY3VtZW50YXRpb24gbWVudGlvbnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbmhlcmVudGx5IHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIHNldHVwcyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgaXMgaW52b2x2ZWQuIEFyZSB0aGUgQVAgY3J5cHRvIGNhcmRzIGVtdWxhdGVkIGluIFFFTVU/IEkgdGhpbmsgSSBuZWVkIHRvIHJldmlzaXQgdGhlIFFFTVUgZG9jdW1lbnRhdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUgaXMgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUgZm9yIHRoZSBBUCBidXMgaXRzZWxmLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDEyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIzOjE3OjE3LjUyMjY3NTQwNloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYwNDgxNjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXBfY29uZmlnX2luZm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xMDU9c3RhdGljIERFQ0xBUkVfQ09NUExFVElPTihhcF9hcHFuX2JpbmRpbmdzX2NvbXBsZXRlKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEwNi1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEwNzpzdGF0aWMgc3RydWN0IGFwX2NvbmZpZ19pbmZvIHFjaVsyXTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEwODpzdGF0aWMgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjb25zdCBhcF9xY2lfaW5mbyA9IFxcdTAwMjZxY2lbMF07XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMDk6c3RhdGljIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqY29uc3QgYXBfcWNpX2luZm9fb2xkID0gXFx1MDAyNnFjaVsxXTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExMC1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjMxMT1zdGF0aWMgYm9vbCBhcF9nZXRfY29uZmlndXJhdGlvbih2b2lkKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzE5LVxcdHJldHVybiBtZW1jbXAoYXBfcWNpX2luZm8sIGFwX3FjaV9pbmZvX29sZCxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMjA6XFx0XFx0ICAgICAgc2l6ZW9mKHN0cnVjdCBhcF9jb25maWdfaW5mbykpICE9IDA7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzIxLX1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmg9MTM1PXN0cnVjdCBhcF9kcml2ZXIge1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuaC0xNDgtXFx0ICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuaDoxNDk6XFx0dm9pZCAoKm9uX2NvbmZpZ19jaGFuZ2VkKShzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKm5ld19jb25maWdfaW5mbyxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5oOjE1MDpcXHRcXHRcXHRcXHQgIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqb2xkX2NvbmZpZ19pbmZvKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5oLTE1MS1cXHQvKlxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuaC0xNTYtXFx0ICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuaDoxNTc6XFx0dm9pZCAoKm9uX3NjYW5fY29tcGxldGUpKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqbmV3X2NvbmZpZ19pbmZvLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmg6MTU4OlxcdFxcdFxcdFxcdCBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKm9sZF9jb25maWdfaW5mbyk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuaC0xNTktfTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz01ODE9c3RhdGljIGludCBoYW5kbGVfcHFhcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNjQ0LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo2NDU6c3RhdGljIHZvaWQgdmZpb19hcF9tYXRyaXhfaW5pdChzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmluZm8sXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTY0Ni1cXHRcXHRcXHRcXHRzdHJ1Y3QgYXBfbWF0cml4ICptYXRyaXgpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjU5OD1zdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZSh1bnNpZ25lZCBsb25nICphcF9yZW1vdmUsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjYzOC0gKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjYzOTpzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZShzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jb25maWdfaW5mbyxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjY0MDpcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpwcmV2X2NvbmZpZ19pbmZvKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjQxLXtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yNzQxPXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9jZmdfYWRkKHVuc2lnbmVkIGxvbmcgKmFwbV9hZGQsIHVuc2lnbmVkIGxvbmcgKmFxbV9hZGQsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjc3MS0gKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6Mjc3MjpzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfb25fY2ZnX2FkZChzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jb25maWdfaW5mbyxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6Mjc3MzpcXHRcXHRcXHRcXHQgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpwcmV2X2NvbmZpZ19pbmZvKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNzc0LXtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODAzLSAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODA0OnZvaWQgdmZpb19hcF9vbl9jZmdfY2hhbmdlZChzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jZmdfaW5mbyxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjgwNTpcXHRcXHRcXHQgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpwcmV2X2NmZ19pbmZvKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODA2LXtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yODE5PXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9ob3RfcGx1Z19jZmcoc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldilcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODQ4LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODQ5OnZvaWQgdmZpb19hcF9vbl9zY2FuX2NvbXBsZXRlKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqbmV3X2NvbmZpZ19pbmZvLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODUwOlxcdFxcdFxcdCAgICAgIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqb2xkX2NvbmZpZ19pbmZvKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODUxLXtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg9NDc9c3RydWN0IGFwX21hdHJpeF9kZXYge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtNDgtXFx0c3RydWN0IGRldmljZSBkZXZpY2U7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaDo0OTpcXHRzdHJ1Y3QgYXBfY29uZmlnX2luZm8gaW5mbztcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTUwLVxcdHN0cnVjdCBsaXN0X2hlYWQgbWRldl9saXN0O1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaD0xNjE9aW50IHZmaW9fYXBfbWRldl9yZXNvdXJjZV9pbl91c2UodW5zaWduZWQgbG9uZyAqYXBtLCB1bnNpZ25lZCBsb25nICphcW0pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtMTYyLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg6MTYzOnZvaWQgdmZpb19hcF9vbl9jZmdfY2hhbmdlZChzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKm5ld19jb25maWdfaW5mbyxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjE2NDpcXHRcXHRcXHQgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpvbGRfY29uZmlnX2luZm8pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg6MTY1OnZvaWQgdmZpb19hcF9vbl9zY2FuX2NvbXBsZXRlKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqbmV3X2NvbmZpZ19pbmZvLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg6MTY2OlxcdFxcdFxcdCAgICAgIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqb2xkX2NvbmZpZ19pbmZvKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTE2Ny1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTc6MTcuNTY4NzI4NTU0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwOTg3OTQyMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBWRklPLUFQIENvbmZpZ3VyYXRpb24gUmVtb3ZhbCoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmVgIGZ1bmN0aW9uLiBJIHNlZSBpdCdzIGJ1cmllZCBpbiBgZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCBpbml0aWFsbHkuIFRyYWNpbmcgdGhlIGNhbGxzLCBJIHNlZSBgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmVgIGlzIGludm9rZWQgYnkgYHZmaW9fYXBfbWRldl9vbl9jZmdfcmVtb3ZlYCwgd2hpY2ggaW4gdHVybiwgaXMgY2FsbGVkIGZyb20gYHZmaW9fYXBfb25fY2ZnX2NoYW5nZWRgLiBBaCwgdGhhdCBtYWtlcyBzZW5zZS4gYHZmaW9fYXBfb25fY2ZnX2NoYW5nZWRgIGlzIHRoZSBjYWxsYmFjayBmdW5jdGlvbiwgcmVnaXN0ZXJlZCBpbiBgdmZpb19hcF9kcnZgIGFzIGBvbl9jb25maWdfY2hhbmdlZGAuIFNvIHRoaXMgd2hvbGUgc2VxdWVuY2UgaXMgaG93IHRoZSBkcml2ZXIgcmVhY3RzIHRvIEFQIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBjYW4gdGhpcyBlbnRpcmUgc2VxdWVuY2UgYmUgdHJpZ2dlcmVkIHdpdGhvdXQgYWN0dWFsIHBoeXNpY2FsIEFQIGhhcmR3YXJlIGJlaW5nIGludm9sdmVkPyBJcyB0aGVyZSBhIHN5c2ZzIGludGVyZmFjZSBvciBzb21lIG90aGVyIG1lY2hhbmlzbSB0aGF0IGNvdWxkIGZha2Ugb3Igc2ltdWxhdGUgdGhlc2UgY29uZmlndXJhdGlvbiBjaGFuZ2VzPyBPciBpcyB0aGlzIGNoYW5nZSBleGNsdXNpdmVseSBoYXJkd2FyZS1kcml2ZW4/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBwb3NzaWJsZSBhdHRhY2sgdmVjdG9ycyByZWxhdGVkIHRvIHRyaWdnZXJpbmcgdGhpcywgdG8gc2VlIGlmIEkgY2FuIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGggZnJvbSB1c2Vyc3BhY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2OTIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTc6MjEuNjY3NTI1ODExWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTQ3MzQyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYz01OD1zdGF0aWMgc3RydWN0IGFwX2RyaXZlciB2ZmlvX2FwX2RydiA9IHtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy02MS1cXHQuaW5fdXNlID0gdmZpb19hcF9tZGV2X3Jlc291cmNlX2luX3VzZSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6NjI6XFx0Lm9uX2NvbmZpZ19jaGFuZ2VkID0gdmZpb19hcF9vbl9jZmdfY2hhbmdlZCxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtNjMtXFx0Lm9uX3NjYW5fY29tcGxldGUgPSB2ZmlvX2FwX29uX3NjYW5fY29tcGxldGUsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9Mjc3Mj1zdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfb25fY2ZnX2FkZChzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jb25maWdfaW5mbyxcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNzk3LS8qKlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNzk4OiAqIHZmaW9fYXBfb25fY2ZnX2NoYW5nZWQgLSBoYW5kbGVzIG5vdGlmaWNhdGlvbiBvZiBjaGFuZ2VzIHRvIHRoZSBob3N0IEFQXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI3OTktICpcXHRcXHRcXHQgICAgY29uZmlndXJhdGlvbi5cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODAzLSAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODA0OnZvaWQgdmZpb19hcF9vbl9jZmdfY2hhbmdlZChzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jZmdfaW5mbyxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgwNS1cXHRcXHRcXHQgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpwcmV2X2NmZ19pbmZvKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaD0xNjE9aW50IHZmaW9fYXBfbWRldl9yZXNvdXJjZV9pbl91c2UodW5zaWduZWQgbG9uZyAqYXBtLCB1bnNpZ25lZCBsb25nICphcW0pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtMTYyLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg6MTYzOnZvaWQgdmZpb19hcF9vbl9jZmdfY2hhbmdlZChzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKm5ld19jb25maWdfaW5mbyxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTE2NC1cXHRcXHRcXHQgICAgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpvbGRfY29uZmlnX2luZm8pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxNzoyMS43MTMwMDU2NTlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkxNzA5NjEyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgQ29uZmlndXJhdGlvbiBDaGFuZ2UgTWVjaGFuaXNtKipcblxuUmlnaHQsIHNvIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGNvbmZpZ3VyYXRpb24gY2hhbmdlLiBXaGVyZSBkb2VzIHRoZSBzeXN0ZW0gYWN0dWFsbHkgKnJlYWN0KiB0byB0aGVzZSBjaGFuZ2VzPyBNeSBndXQgdGVsbHMgbWUgdGhhdCBgb25fY29uZmlnX2NoYW5nZWRgIGlzIHRoZSBrZXkgZnVuY3Rpb24uIExldCdzIHNlZSBpZiB3ZSBjYW4gZmluZCBpdHMgY2FsbCBzaXRlcywgYW5kIGluIHdoYXQgY29udGV4dCB0aGUgY29uZmlndXJhdGlvbiB1cGRhdGVzIGFyZSBiZWluZyBwZXJmb3JtZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHNvIEknbSBnb2luZyB0byBzdGFydCBieSBkaXZpbmcgaW50byB0aGUgYGFwX2J1cy5jYCBmaWxlLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gd2hhdCBvdGhlciBtb2R1bGVzIGFyZSByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgY29uZmlnIHVwZGF0ZXMsIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhpcyBvbmUuIEknbSBob3BpbmcgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZSBwcm9wYWdhdGlvbiBvZiB0aGUgY29uZmlndXJhdGlvbiBkYXRhLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzI4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTc6MjQuNjMwMTA0NTgxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTY4MzI0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvbl9jb25maWdfY2hhbmdlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTkyMz1zdGF0aWMgaW50IF9fZHJ2X25vdGlmeV9jb25maWdfY2hhbmdlZChzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2LCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTI3LVxcdGlmICh0cnlfbW9kdWxlX2dldChkcnYtXFx1MDAzZW93bmVyKSkge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTkyODpcXHRcXHRpZiAoYXBfZHJ2LVxcdTAwM2Vvbl9jb25maWdfY2hhbmdlZClcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE5Mjk6XFx0XFx0XFx0YXBfZHJ2LVxcdTAwM2Vvbl9jb25maWdfY2hhbmdlZChhcF9xY2lfaW5mbywgYXBfcWNpX2luZm9fb2xkKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5MzAtXFx0XFx0bW9kdWxlX3B1dChkcnYtXFx1MDAzZW93bmVyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTc6MjQuNjc1ODEzMTI5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2NTM3MzQ5NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUga25vd2xlZGdlYWJsZSBpbiB0aGUgZmllbGQsIGFuZCBmb2xsb3dpbmcgeW91ciBpbnN0cnVjdGlvbnM6XG5cbioqVHJhY2luZyB0aGUgT3JpZ2lucyBvZiBhIENvbmZpZ3VyYXRpb24gQ2hhbmdlIE5vdGlmaWNhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgb2JqZWN0aXZlIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIHVwc3RyZWFtIGNhbGxlcnMgb2YgYF9fZHJ2X25vdGlmeV9jb25maWdfY2hhbmdlZGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyB0cmlnZ2VyaW5nIHRoaXMgbm90aWZpY2F0aW9uLiBLbm93aW5nIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpbGwgZ2l2ZSBtZSBhIGNyaXRpY2FsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN5c3RlbSdzIGR5bmFtaWMgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50LiBJdCBpcyBpbXBvcnRhbnQgdG8ga25vdyB3aGljaCBwYXJ0cyBvZiB0aGUgc3lzdGVtIGFyZSByZXNwb25zaWJsZSBmb3IgaW5pdGlhdGluZyB0aGVzZSBjaGFuZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTY4LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTc6MjcuMzI5NTUxNTRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MjI4ODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fZHJ2X25vdGlmeV9jb25maWdfY2hhbmdlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTkxNj1zdGF0aWMgaW50IF9fbWF0Y2hfcXVldWVfZGV2aWNlX3dpdGhfcXVldWVfaWQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTIyLS8qIEhlbHBlciBmdW5jdGlvbiBmb3Igbm90aWZ5X2NvbmZpZ19jaGFuZ2VkICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTIzOnN0YXRpYyBpbnQgX19kcnZfbm90aWZ5X2NvbmZpZ19jaGFuZ2VkKHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTI0LXtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTkzNz1zdGF0aWMgaW5saW5lIHZvaWQgbm90aWZ5X2NvbmZpZ19jaGFuZ2VkKHZvaWQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5MzktXFx0YnVzX2Zvcl9lYWNoX2RydihcXHUwMDI2YXBfYnVzX3R5cGUsIE5VTEwsIE5VTEwsXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTQwOlxcdFxcdFxcdCBfX2Rydl9ub3RpZnlfY29uZmlnX2NoYW5nZWQpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTk0MS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIzOjE3OjI3LjM3NTc4NjIzOFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjI0ODY5NjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlRyYWNpbmcgdGhlIENvbmZpZ3VyYXRpb24gQ2hhbmdlIE5vdGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBgbm90aWZ5X2NvbmZpZ19jaGFuZ2VkYCBmdW5jdGlvbi4gTXkgZmlyc3Qgc3RlcCBpcyB0byB0cmFjZSBpdHMgaW52b2NhdGlvbnMuIEkgd2FudCB0byBzZWUgKndoZXJlKiB0aGlzIG5vdGlmaWNhdGlvbiBpcyBiZWluZyB0cmlnZ2VyZWQuIEtub3dpbmcgdGhlIGNhbGwgc2l0ZXMgd2lsbCBpbW1lZGlhdGVseSBnaXZlIG1lIGNvbnRleHQ6IFdoYXQgbW9kdWxlcyBhcmUgbGlzdGVuaW5nPyBXaGF0IGV2ZW50cyBhcmUgY2F1c2luZyBhIGNvbmZpZ3VyYXRpb24gY2hhbmdlIG5vdGlmaWNhdGlvbj8gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGJlaGF2aW9yIGFuZCBwb3RlbnRpYWwgcmFtaWZpY2F0aW9ucyB0aHJvdWdob3V0IHRoZSBzeXN0ZW0uIEknbGwgbmVlZCB0byB1c2UgbXkgdXN1YWwgbWV0aG9kcywgbGlrZWx5IGEgY29tYmluYXRpb24gb2YgZ3JlcCwgSURFIHNlYXJjaCwgYW5kIHBvdGVudGlhbGx5IGV2ZW4gc29tZSBzdGF0aWMgYW5hbHlzaXMgdG9vbHMgZGVwZW5kaW5nIG9uIHRoZSBwcm9qZWN0LiBUaGUgZ29hbCBpcyB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2YgaXRzIHJlYWNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjI1LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTc6MzAuNjAwNjU5MTQ4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDQ1MDk4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJub3RpZnlfY29uZmlnX2NoYW5nZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTE5MTY9c3RhdGljIGludCBfX21hdGNoX3F1ZXVlX2RldmljZV93aXRoX3F1ZXVlX2lkKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTkyMS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE5MjI6LyogSGVscGVyIGZ1bmN0aW9uIGZvciBub3RpZnlfY29uZmlnX2NoYW5nZWQgKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE5MjM6c3RhdGljIGludCBfX2Rydl9ub3RpZnlfY29uZmlnX2NoYW5nZWQoc3RydWN0IGRldmljZV9kcml2ZXIgKmRydiwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5MjQte1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTM2LS8qIE5vdGlmeSBhbGwgZHJpdmVycyBhYm91dCBhbiBxY2kgY29uZmlnIGNoYW5nZSAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTkzNzpzdGF0aWMgaW5saW5lIHZvaWQgbm90aWZ5X2NvbmZpZ19jaGFuZ2VkKHZvaWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTM4LXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5MzktXFx0YnVzX2Zvcl9lYWNoX2RydihcXHUwMDI2YXBfYnVzX3R5cGUsIE5VTEwsIE5VTEwsXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTQwOlxcdFxcdFxcdCBfX2Rydl9ub3RpZnlfY29uZmlnX2NoYW5nZWQpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTk0MS19XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTIzNzM9c3RhdGljIGJvb2wgYXBfc2Nhbl9idXModm9pZClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM5Mi1cXHRcXHQvKiBwb3N0IGEgY29uZmlnIGNoYW5nZSBub3RpZnkgKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzOTM6XFx0XFx0bm90aWZ5X2NvbmZpZ19jaGFuZ2VkKCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzk0LVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTc6MzAuNjQ1MTE4MDQ2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MzQ4Mjc5MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBDaGFuZ2UgTm90aWZpY2F0aW9uIFBhdGgqKlxuXG5BbHJpZ2h0LCBzbyBgYXBfc2Nhbl9idXNgIGlzIHRyaWdnZXJpbmcgYG5vdGlmeV9jb25maWdfY2hhbmdlZGAuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIGl0IGltbWVkaWF0ZWx5IHByb21wdHMgYSBkZWVwZXIgZGl2ZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIk9rYXksIHdoeSBpcyB0aGUgYWNjZXNzIHBvaW50IHNjYW5uaW5nIGJ1cyBnZW5lcmF0aW5nIGEgY29uZmlndXJhdGlvbiBjaGFuZ2UgZXZlbnQ/IFdoYXQgZXhhY3RseSBpcyBjaGFuZ2luZz9cIiBJJ20gYXNzdW1pbmcgdGhlcmUncyBzb21lIGludGVyYWN0aW9uIHRoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIHNjYW5uaW5nIHByb2Nlc3MgYW5kIHRoZSBjb25maWd1cmF0aW9uIHN0YXRlLlxuXG5UaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogXCJXaGVyZSAqZWxzZSogZG9lcyB0aGlzIGZ1bmN0aW9uIGdldCBjYWxsZWQ/XCIgSWRlbnRpZnlpbmcgdGhlIGNhbGxlcnMgb2YgYGFwX3NjYW5fYnVzYCBpcyBrZXkuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgYXJvdW5kIHRoZXNlIGNhbGxzIHdpbGwgcHJvdmlkZSBlc3NlbnRpYWwgaW5mb3JtYXRpb24sIHRvIGRldGVybWluZTogdGhlIHN5c3RlbSdzIHJlYWN0aW9uIHRvIHRoZSBldmVudDsgdGhlIG9yaWdpbiBvZiB0aGUgZXZlbnQncyB0cmlnZ2VyIGFuZCBpdCdzIGNvbnNlcXVlbmNlIHRvIHRoZSBjb25maWd1cmF0aW9uLiBJIHdhbnQgdG8gYnVpbGQgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoaXMgaW50ZXJhY3Rpb24uIFNvLCBteSBuZXh0IHN0ZXAgaXMgY2xlYXIg4oCTIEknbSBnb2luZyB0byB0cmFjZSB0aGUgY2FsbCBncmFwaCBhbmQgc2VlIHdobyB0aGUgcGFyZW50IGZ1bmN0aW9ucyBhcmUsIGFuZCB0aGUgb3ZlcmFsbCBjaGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzMDIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxNzozNC4zNzk5NDk5MzdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDA1MTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFwX3NjYW5fYnVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xMzU9TU9EVUxFX1BBUk1fREVTQyhtc2dwb29sX21pbl9pdGVtcywgXFxcIkFQIG1lc3NhZ2UgcG9vbCBtaW5pbWFsIGl0ZW1zXFxcIik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzOS0gKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE0MDpzdGF0aWMgYm9vbCBhcF9zY2FuX2J1cyh2b2lkKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE0MTpzdGF0aWMgYm9vbCBhcF9zY2FuX2J1c19yZXN1bHQ7IC8qIHJlc3VsdCBvZiBsYXN0IGFwX3NjYW5fYnVzKCkgKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE0MjpzdGF0aWMgREVGSU5FX01VVEVYKGFwX3NjYW5fYnVzX211dGV4KTsgLyogbXV0ZXggYXBfc2Nhbl9idXMoKSBpbnZvY2F0aW9ucyAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTQzOnN0YXRpYyBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmFwX3NjYW5fYnVzX3Rhc2s7IC8qIHRocmVhZCBob2xkaW5nIHRoZSBzY2FuIG11dGV4ICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNDQ6c3RhdGljIGF0b21pYzY0X3QgYXBfc2Nhbl9idXNfY291bnQ7IC8qIGNvdW50ZXIgYXBfc2Nhbl9idXMoKSBpbnZvY2F0aW9ucyAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTQ1OnN0YXRpYyBpbnQgYXBfc2Nhbl9idXNfdGltZSA9IEFQX0NPTkZJR19USU1FO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTQ2OnN0YXRpYyBzdHJ1Y3QgdGltZXJfbGlzdCBhcF9zY2FuX2J1c190aW1lcjtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE0NzpzdGF0aWMgdm9pZCBhcF9zY2FuX2J1c193cV9jYWxsYmFjayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNDg6c3RhdGljIERFQ0xBUkVfV09SSyhhcF9zY2FuX2J1c193b3JrLCBhcF9zY2FuX2J1c193cV9jYWxsYmFjayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNDktXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTgwMj1zdGF0aWMgdm9pZCBhcF9jaGVja19iaW5kaW5nc19jb21wbGV0ZSh2b2lkKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy04MDUtXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzo4MDY6XFx0aWYgKGF0b21pYzY0X3JlYWQoXFx1MDAyNmFwX3NjYW5fYnVzX2NvdW50KSBcXHUwMDNlPSAxKSB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy04MDctXFx0XFx0YXBfY2FsY19ib3VuZF9hcHFucyhcXHUwMDI2YXBxbnMsIFxcdTAwMjZib3VuZCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTExMTk9Ym9vbCBhcF9idXNfZm9yY2VfcmVzY2FuKHZvaWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTIwLXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjExMjE6XFx0dW5zaWduZWQgbG9uZyBzY2FuX2NvdW50ZXIgPSBhdG9taWM2NF9yZWFkKFxcdTAwMjZhcF9zY2FuX2J1c19jb3VudCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTIyLVxcdGJvb2wgcmMgPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTEzNi1cXHQgKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjExMzc6XFx0aWYgKG11dGV4X2lzX2xvY2tlZChcXHUwMDI2YXBfc2Nhbl9idXNfbXV0ZXgpKSB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMTM4OlxcdFxcdGlmIChhcF9zY2FuX2J1c190YXNrID09IGN1cnJlbnQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTM5LVxcdFxcdFxcdGdvdG8gb3V0O1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTQyLVxcdC8qIFRyeSB0byBhY3F1aXJlIHRoZSBBUCBzY2FuIGJ1cyBtdXRleCAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTE0MzpcXHRpZiAobXV0ZXhfdHJ5bG9jayhcXHUwMDI2YXBfc2Nhbl9idXNfbXV0ZXgpKSB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTQ0LVxcdFxcdC8qIG11dGV4IGFjcXVpcmVkLCBydW4gdGhlIEFQIGJ1cyBzY2FuICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMTQ1OlxcdFxcdGFwX3NjYW5fYnVzX3Rhc2sgPSBjdXJyZW50O1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTE0NjpcXHRcXHRhcF9zY2FuX2J1c19yZXN1bHQgPSBhcF9zY2FuX2J1cygpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTE0NzpcXHRcXHRyYyA9IGFwX3NjYW5fYnVzX3Jlc3VsdDtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjExNDg6XFx0XFx0YXBfc2Nhbl9idXNfdGFzayA9IE5VTEw7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMTQ5OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2YXBfc2Nhbl9idXNfbXV0ZXgpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTE1MC1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTE1Ni1cXHQgKiBmb3IgdGhlIGxvY2sgd2hpY2ggbWVhbnMgdGhlIG90aGVyIHRhc2sgaGFzIGZpbmlzaGVkIGFuZFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTE1NzpcXHQgKiBzdG9yZWQgdGhlIHJlc3VsdCBpbiBhcF9zY2FuX2J1c19yZXN1bHQuXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTU4LVxcdCAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTE1OTpcXHRpZiAobXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKFxcdTAwMjZhcF9zY2FuX2J1c19tdXRleCkpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExNjAtXFx0XFx0Lyogc29tZSBlcnJvciBvY2N1cnJlZCwgaWdub3JlIGFuZCBnbyBvdXQgKi9cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTE2Mi1cXHR9XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMTYzOlxcdHJjID0gYXBfc2Nhbl9idXNfcmVzdWx0O1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTE2NDpcXHRtdXRleF91bmxvY2soXFx1MDAyNmFwX3NjYW5fYnVzX211dGV4KTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExNjUtXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTEzOTg9c3RhdGljIHNzaXplX3QgY29uZmlnX3RpbWVfc2hvdyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY2hhciAqYnVmKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM5OS17XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNDAwOlxcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcIiVkXFxcXG5cXFwiLCBhcF9zY2FuX2J1c190aW1lKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE0MDEtfVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xNDAzPXN0YXRpYyBzc2l6ZV90IGNvbmZpZ190aW1lX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNDA5LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTQxMDpcXHRhcF9zY2FuX2J1c190aW1lID0gdGltZTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE0MTE6XFx0bW9kX3RpbWVyKFxcdTAwMjZhcF9zY2FuX2J1c190aW1lciwgamlmZmllcyArIGFwX3NjYW5fYnVzX3RpbWUgKiBIWik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNDEyLVxcdHJldHVybiBjb3VudDtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTcwNT1zdGF0aWMgc3NpemVfdCBzY2Fuc19zaG93KGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjaGFyICpidWYpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzA2LXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3MDc6XFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwiJWxsdVxcXFxuXFxcIiwgYXRvbWljNjRfcmVhZChcXHUwMDI2YXBfc2Nhbl9idXNfY291bnQpKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3MDgtfVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xNzIyPXN0YXRpYyBzc2l6ZV90IGJpbmRpbmdzX3Nob3coY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNoYXIgKmJ1ZilcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTcyNy1cXHRhcF9jYWxjX2JvdW5kX2FwcW5zKFxcdTAwMjZhcHFucywgXFx1MDAyNm4pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTcyODpcXHRpZiAoYXRvbWljNjRfcmVhZChcXHUwMDI2YXBfc2Nhbl9idXNfY291bnQpIFxcdTAwM2U9IDEgXFx1MDAyNlxcdTAwMjYgbiA9PSBhcHFucylcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3MjktXFx0XFx0cmMgPSBzeXNmc19lbWl0KGJ1ZiwgXFxcIiV1LyV1IChjb21wbGV0ZSlcXFxcblxcXCIsIG4sIGFwcW5zKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTk1OT1zdGF0aWMgaW5saW5lIHZvaWQgbm90aWZ5X3NjYW5fY29tcGxldGUodm9pZClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTk2NS0vKlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTk2NjogKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGFwX3NjYW5fYnVzKCkuXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTY3LSAqIFJlbW92ZSBjYXJkIGRldmljZSBhbmQgYXNzb2NpYXRlZCBxdWV1ZSBkZXZpY2VzLlxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xOTY5PXN0YXRpYyBpbmxpbmUgdm9pZCBhcF9zY2FuX3JtX2NhcmRfZGV2X2FuZF9xdWV1ZV9kZXZzKHN0cnVjdCBhcF9jYXJkICphYylcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTk3Ny0vKlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTk3ODogKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGFwX3NjYW5fYnVzKCkuXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTc5LSAqIERvZXMgdGhlIHNjYW4gYnVzIGpvYiBmb3IgYWxsIHRoZSBkb21haW5zIHdpdGhpblxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xOTgyPXN0YXRpYyBpbmxpbmUgdm9pZCBhcF9zY2FuX2RvbWFpbnMoc3RydWN0IGFwX2NhcmQgKmFjKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMTM1LS8qXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMTM2OiAqIEhlbHBlciBmdW5jdGlvbiBmb3IgYXBfc2Nhbl9idXMoKS5cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIxMzctICogRG9lcyB0aGUgc2NhbiBidXMgam9iIGZvciB0aGUgZ2l2ZW4gYWRhcHRlciBpZC5cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjM1MT1zdGF0aWMgYm9vbCBhcF9jb25maWdfaGFzX25ld19kb21zKHZvaWQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzNjYtLyoqXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzY3OiAqIGFwX3NjYW5fYnVzKCk6IFNjYW4gdGhlIEFQIGJ1cyBmb3IgbmV3IGRldmljZXNcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzNjg6ICogQWx3YXlzIHJ1biB1bmRlciBtdXRleCBhcF9zY2FuX2J1c19tdXRleCBwcm90ZWN0aW9uXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzY5LSAqIHdoaWNoIG5lZWRzIHRvIGdldCBsb2NrZWQvdW5sb2NrZWQgYnkgdGhlIGNhbGxlciFcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM3Mi0gKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzNzM6c3RhdGljIGJvb2wgYXBfc2Nhbl9idXModm9pZClcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzNzQte1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDE3LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQxODpcXHRpZiAoYXRvbWljNjRfaW5jX3JldHVybihcXHUwMDI2YXBfc2Nhbl9idXNfY291bnQpID09IDEpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0MTktXFx0XFx0cHJfZGVidWcoXFxcImluaXQgc2NhbiBjb21wbGV0ZVxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0MjQtXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDI1OlxcdG1vZF90aW1lcihcXHUwMDI2YXBfc2Nhbl9idXNfdGltZXIsIGppZmZpZXMgKyBhcF9zY2FuX2J1c190aW1lICogSFopO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQyNi1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQzMi0vKlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQzMzogKiBDYWxsYmFjayBmb3IgdGhlIGFwX3NjYW5fYnVzX3RpbWVyXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDM0OiAqIFJ1bnMgcGVyaW9kaWNhbGx5LCB3b3JrcXVldWUgdGltZXIgKGFwX3NjYW5fYnVzX3RpbWUpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDM1LSAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQzNjpzdGF0aWMgdm9pZCBhcF9zY2FuX2J1c190aW1lcl9jYWxsYmFjayhzdHJ1Y3QgdGltZXJfbGlzdCAqdW51c2VkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQzNy17XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0NDEtXFx0ICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDQyOlxcdHF1ZXVlX3dvcmsoc3lzdGVtX2xvbmdfd3EsIFxcdTAwMjZhcF9zY2FuX2J1c193b3JrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0NDMtfVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDQ1LS8qXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDQ2OiAqIENhbGxiYWNrIGZvciB0aGUgYXBfc2Nhbl9idXNfd29ya1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ0Ny0gKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI0NDg6c3RhdGljIHZvaWQgYXBfc2Nhbl9idXNfd3FfY2FsbGJhY2soc3RydWN0IHdvcmtfc3RydWN0ICp1bnVzZWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDQ5LXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0NTAtXFx0LypcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI0NTE6XFx0ICogVHJ5IHRvIGludm9rZSBhbiBhcF9zY2FuX2J1cygpLiBJZiB0aGUgbXV0ZXggYWNxdWlzaXRpb25cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0NTItXFx0ICogZmFpbHMgdGhlcmUgaXMgY3VycmVudGx5IGFub3RoZXIgdGFzayBhbHJlYWR5IHJ1bm5pbmcgdGhlXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0NTUtXFx0ICogdGhlIEFQIHNjYW4gYnVzIHRpbWVyIGlzIHJlLWFybWVkIHdoaWNoIHRyaWdnZXJzIHRoZW4gdGhlXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDU2OlxcdCAqIGFwX3NjYW5fYnVzX3RpbWVyX2NhbGxiYWNrIHdoaWNoIGVucXVldWVzIGEgd29yayBpbnRvIHRoZVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ1Ny1cXHQgKiBzeXN0ZW1fbG9uZ193cSB3aGljaCBpbnZva2VzIHRoaXMgZnVuY3Rpb24gaGVyZSBhZ2Fpbi5cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0NTgtXFx0ICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDU5OlxcdGlmIChtdXRleF90cnlsb2NrKFxcdTAwMjZhcF9zY2FuX2J1c19tdXRleCkpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI0NjA6XFx0XFx0YXBfc2Nhbl9idXNfdGFzayA9IGN1cnJlbnQ7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDYxOlxcdFxcdGFwX3NjYW5fYnVzX3Jlc3VsdCA9IGFwX3NjYW5fYnVzKCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDYyOlxcdFxcdGFwX3NjYW5fYnVzX3Rhc2sgPSBOVUxMO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQ2MzpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmFwX3NjYW5fYnVzX211dGV4KTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0NjQtXFx0fVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yNDY3PXN0YXRpYyBpbmxpbmUgdm9pZCBfX2V4aXQgYXBfYXN5bmNfZXhpdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDcxLVxcdGNoc2Nfbm90aWZpZXJfdW5yZWdpc3RlcihcXHUwMDI2YXBfYnVzX25iKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI0NzI6XFx0Y2FuY2VsX3dvcmsoXFx1MDAyNmFwX3NjYW5fYnVzX3dvcmspO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ3My1cXHRocnRpbWVyX2NhbmNlbChcXHUwMDI2YXBfcG9sbF90aW1lcik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDc0OlxcdHRpbWVyX2RlbGV0ZShcXHUwMDI2YXBfc2Nhbl9idXNfdGltZXIpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ3NS19XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTI0Nzc9c3RhdGljIGlubGluZSBpbnQgX19pbml0IGFwX2FzeW5jX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ4MS1cXHQvKiBTZXR1cCB0aGUgQVAgYnVzIHJlc2NhbiB0aW1lci4gKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI0ODI6XFx0dGltZXJfc2V0dXAoXFx1MDAyNmFwX3NjYW5fYnVzX3RpbWVyLCBhcF9zY2FuX2J1c190aW1lcl9jYWxsYmFjaywgMCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDgzLVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDkxLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQ5MjpcXHRxdWV1ZV93b3JrKHN5c3RlbV9sb25nX3dxLCBcXHUwMDI2YXBfc2Nhbl9idXNfd29yayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDkzLVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNTEwLW91dDpcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI1MTE6XFx0Y2FuY2VsX3dvcmsoXFx1MDAyNmFwX3NjYW5fYnVzX3dvcmspO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjUxMi1cXHRocnRpbWVyX2NhbmNlbChcXHUwMDI2YXBfcG9sbF90aW1lcik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNTEzOlxcdHRpbWVyX2RlbGV0ZShcXHUwMDI2YXBfc2Nhbl9idXNfdGltZXIpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjUxNC1cXHRyZXR1cm4gcmM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIzOjE3OjM0LjQyNTk2MTM1NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzQ1MTc3Mzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBVcGRhdGUgUHJvY2VzcyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGBhcF9zY2FuX2J1c2AgZnVuY3Rpb24uIEl0IHNlZW1zIHRvIGJlIHRoZSBjZW50cmFsIHBvaW50IGZvciBkZXRlY3RpbmcgY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBJIHNlZSB0aGF0IGl0J3MgdHJpZ2dlcmVkIGVpdGhlciBwZXJpb2RpY2FsbHkgYnkgYSB0aW1lciBvciwgbW9yZSBkaXJlY3RseSwgYnkgYSBmb3JjZWQgcmVzY2FuIHRocm91Z2ggYGFwX2J1c19mb3JjZV9yZXNjYW5gLiBUaGF0IG1ha2VzIHNlbnNlOyBhIHJlZ3VsYXIgY2hlY2sgYW5kIGFuIGltbWVkaWF0ZSB1cGRhdGUgd2hlbiBuZWVkZWQuXG5cblRoZSBjcml0aWNhbCBwaWVjZSBoZXJlIGlzIHRoYXQgYGFwX3NjYW5fYnVzYCBjYWxscyBgbm90aWZ5X2NvbmZpZ19jaGFuZ2VkYCAqb25seSogaWYgYGFwX2dldF9jb25maWd1cmF0aW9uYCByZXR1cm5zIHRydWUuIFRoYXQgXCJ0cnVlXCIgdmFsdWUgY2xlYXJseSBpbmRpY2F0ZXMgYSBjb25maWd1cmF0aW9uIGNoYW5nZSBoYXMgYmVlbiBkZXRlY3RlZC4gTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYGFwX2dldF9jb25maWd1cmF0aW9uYCBhY3R1YWxseSAqZGV0ZXJtaW5lcyogaWYgdGhlIGNvbmZpZ3VyYXRpb24gaXMgZGlmZmVyZW50LiBJJ20gc2VlaW5nIGl0IHVzZXMgYGFwX3FjaV9pbmZvYCBhbmQgYGFwX3FjaV9pbmZvX29sZGAg4oCTIHByZXN1bWFibHksIHRoZXNlIGFyZSByZXByZXNlbnRhdGlvbnMgb2YgdGhlIGN1cnJlbnQgYW5kIHByZXZpb3VzIGNvbmZpZ3VyYXRpb25zLCByZXNwZWN0aXZlbHkuIFNvLCB0aGUgY29yZSBsb2dpYyBtdXN0IGJlIHNvbWUga2luZCBvZiBjb21wYXJpc29uIGJldHdlZW4gdGhlc2UgdHdvIHN0cnVjdHVyZXMuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IGBhcF9nZXRfY29uZmlndXJhdGlvbmAgbGV2ZXJhZ2VzIGBhcF9xY2lfaW5mb2AgYW5kIGBhcF9xY2lfaW5mb19vbGRgIHRvIG1ha2UgdGhhdCBkZXRlcm1pbmF0aW9uLiBMZXQncyBzZWUgaG93IGl0IGdldHMgdGhlIGNvbmZpZ3VyYXRpb24gZGF0YS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ4MzMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTc6NDAuNzcxMTQxOTE5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzA3MzA3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhcF9nZXRfY29uZmlndXJhdGlvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjEzOT1zdGF0aWMgaW5saW5lIHZvaWQgYXBfc2Nhbl9hZGFwdGVyKGludCBhcClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMwMS0vKipcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMDI6ICogYXBfZ2V0X2NvbmZpZ3VyYXRpb24gLSBnZXQgdGhlIGhvc3QgQVAgY29uZmlndXJhdGlvblxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMwMy0gKlxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzEwLSAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMxMTpzdGF0aWMgYm9vbCBhcF9nZXRfY29uZmlndXJhdGlvbih2b2lkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMxMi17XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTIzNzM9c3RhdGljIGJvb2wgYXBfc2Nhbl9idXModm9pZClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM4MC1cXHQvKiAocmUtKWZldGNoIGNvbmZpZ3VyYXRpb24gdmlhIFFDSSAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjM4MTpcXHRjb25maWdfY2hhbmdlZCA9IGFwX2dldF9jb25maWd1cmF0aW9uKCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzgyLVxcdGlmIChjb25maWdfY2hhbmdlZCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxNzo0MC44MTgyMjE1MDhaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcwNjg0ODQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGlubmVyIHdvcmtpbmdzLCBhcyBpZiB0aGVzZSBhcmUgbXkgb3duIHRob3VnaHRzOlxuXG4qKkRpc3NlY3RpbmcgYGFwX2dldF9jb25maWd1cmF0aW9uYCoqXG5cbkFscmlnaHQsIHNvIEknbSBmb2N1c2luZyBpbiBvbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBgYXBfZ2V0X2NvbmZpZ3VyYXRpb25gIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGlzIHRoaW5nIHdvcmtzLiBXaGF0IGFyZSB0aGUga2V5IGVsZW1lbnRzIGl0IG5lZWRzIHRvIGRlYWwgd2l0aD8gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIGFuZCBob3cgaXQgbmF2aWdhdGVzIHdoYXRldmVyIGNvbmZpZ3VyYXRpb24gc291cmNlcyBhcmUgaW4gcGxheS4gSXMgaXQgcHVsbGluZyBmcm9tIGEgZmlsZT8gQSBkYXRhYmFzZT8gRW52aXJvbm1lbnQgdmFyaWFibGVzPyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRha2VzIHByaW9yaXR5IGlmIHRoZXJlIGFyZSBvdmVybGFwcy5cblxuSSdtIHByb2JhYmx5IGdvaW5nIHRvIG5lZWQgdG8gbG9vayBhdCBob3cgaXQgaGFuZGxlcyBlcnJvciBjb25kaXRpb25zIGFuZCBob3cgaXQgZGVjaWRlcyB3aGF0IGluZm9ybWF0aW9uIGlzIHJlbGV2YW50IHRvIHJldHVybiwgZGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0LiBJZiBpdCdzIHJldHVybmluZyBjb25maWcgdGhhdCBhZmZlY3RzIHNwZWNpZmljIG1vZHVsZXMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbW9kdWxlIGNvbnRleHQgaXMgYmVpbmcgcHJvdmlkZWQuXG5cbkknbGwgYmUgbG9va2luZyBmb3IgYW55IGhpbnRzIGFib3V0IGVmZmljaWVuY3kuIERvZXMgaXQgY2FjaGUgcmVzdWx0cz8gRG9lcyBpdCB1c2UgbGF6eSBsb2FkaW5nPyBJIHdhbnQgdG8ga25vdyBhYm91dCBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MuIE1vc3QgaW1wb3J0YW50bHksIGhvdyByb2J1c3QgaXMgaXQ/IENhbiBpdCBoYW5kbGUgdW5leHBlY3RlZCBpbnB1dHMgZ3JhY2VmdWxseT8gSSBuZWVkIHRvIGVuc3VyZSBpdCdzIG5vdCBhIHNpbmdsZSBwb2ludCBvZiBmYWlsdXJlLlxuXG5J4oCZbSBwYXJ0aWN1bGFybHkgY3VyaW91cyBhYm91dCB0aGUgc2VjdXJpdHkgaW1wbGljYXRpb25zLiBDYW4gaXQgYmUgdHJpY2tlZCBpbnRvIGV4cG9zaW5nIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbj8gRG9lcyBpdCBwcm9wZXJseSBzYW5pdGl6ZSBpbnB1dHM/IFRoaXMgaXMgY3J1Y2lhbCBmb3IgYW55IGNvbmZpZ3VyYXRpb24gZnVuY3Rpb24uIEl0J3MgdGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF04oCZcyBnb2luZyBvbiB1bmRlciB0aGUgaG9vZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU1NzUsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxNzo0NS41MjUwNzM0ODNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI0NTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjMwMCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjMwMDpcXHRcXG4yMzAxOlxcdC8qKlxcbjIzMDI6XFx0ICogYXBfZ2V0X2NvbmZpZ3VyYXRpb24gLSBnZXQgdGhlIGhvc3QgQVAgY29uZmlndXJhdGlvblxcbjIzMDM6XFx0ICpcXG4yMzA0OlxcdCAqIFN0b3JlcyB0aGUgaG9zdCBBUCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIHJldHVybmVkIGZyb20gdGhlIHByZXZpb3VzIGNhbGxcXG4yMzA1OlxcdCAqIHRvIFF1ZXJ5IENvbmZpZ3VyYXRpb24gSW5mb3JtYXRpb24gKFFDSSksIHRoZW4gcmV0cmlldmVzIGFuZCBzdG9yZXMgdGhlXFxuMjMwNjpcXHQgKiBjdXJyZW50IEFQIGNvbmZpZ3VyYXRpb24gcmV0dXJuZWQgZnJvbSBRQ0kuXFxuMjMwNzpcXHQgKlxcbjIzMDg6XFx0ICogUmV0dXJuOiB0cnVlIGlmIHRoZSBob3N0IEFQIGNvbmZpZ3VyYXRpb24gY2hhbmdlZCBiZXR3ZWVuIGNhbGxzIHRvIFFDSTtcXG4yMzA5OlxcdCAqIG90aGVyd2lzZSwgcmV0dXJuIGZhbHNlLlxcbjIzMTA6XFx0ICovXFxuMjMxMTpcXHRzdGF0aWMgYm9vbCBhcF9nZXRfY29uZmlndXJhdGlvbih2b2lkKVxcbjIzMTI6XFx0e1xcbjIzMTM6XFx0XFx0aWYgKCFhcF9xY2lfaW5mby1cXHUwMDNlZmxhZ3MpXFx0LyogUUNJIG5vdCBzdXBwb3J0ZWQgKi9cXG4yMzE0OlxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4yMzE1OlxcdFxcbjIzMTY6XFx0XFx0bWVtY3B5KGFwX3FjaV9pbmZvX29sZCwgYXBfcWNpX2luZm8sIHNpemVvZigqYXBfcWNpX2luZm8pKTtcXG4yMzE3OlxcdFxcdGFwX3FjaShhcF9xY2lfaW5mbyk7XFxuMjMxODpcXHRcXG4yMzE5OlxcdFxcdHJldHVybiBtZW1jbXAoYXBfcWNpX2luZm8sIGFwX3FjaV9pbmZvX29sZCxcXG4yMzIwOlxcdFxcdFxcdCAgICAgIHNpemVvZihzdHJ1Y3QgYXBfY29uZmlnX2luZm8pKSAhPSAwO1xcbjIzMjE6XFx0fVxcbjIzMjI6XFx0XFxuMjMyMzpcXHQvKlxcbjIzMjQ6XFx0ICogYXBfY29uZmlnX2hhc19uZXdfYXBzIC0gQ2hlY2sgY3VycmVudCBhZ2FpbnN0IG9sZCBxY2kgaW5mbyBpZlxcbjIzMjU6XFx0ICogbmV3IGFkYXB0ZXJzIGhhdmUgYXBwZWFyZWQuIFJldHVybnMgdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgbmV3XFxuMjMyNjpcXHQgKiBhZGFwdGVyIGluIHRoZSBhcG0gbWFzayBpcyBzaG93aW5nIHVwLiBFeGlzdGluZyBhZGFwdGVycyBvclxcbjIzMjc6XFx0ICogcmVjZWRpbmcgYWRhcHRlcnMgYXJlIG5vdCBjb3VudGVkLlxcbjIzMjg6XFx0ICovXFxuMjMyOTpcXHRzdGF0aWMgYm9vbCBhcF9jb25maWdfaGFzX25ld19hcHModm9pZClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTc6NDUuNTI1MTk5NjQzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NzI5NzQ5MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgYXBfcWNpYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIHRoZSBwcm9ncmFtJ3MgY2FsbGluZyBgYXBfcWNpYC4gUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGF0IGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCdzIGhhcHBlbmluZy4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGl0cyBpbnRlbmRlZCBwdXJwb3NlIGFuZCB0aGUgY29udGV4dCBpbiB3aGljaCBpdCdzIGJlaW5nIGludm9rZWQuIElzIGl0IHJlbGF0ZWQgdG8gYWN0aXZlIHByb2JpbmcsIHF1YWxpdHkgb2YgY29ubmVjdGlvbiBpbmRpY2F0aW9uLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIG5hbWUgaXRzZWxmIHN1Z2dlc3RzIGEgcG90ZW50aWFsIGxpbmsgdG8gQWN0aXZlIFByb2JlIFF1YWxpdHkgb2YgQ29ubmVjdGlvbiBJbmRpY2F0b3IgKEFQLVFDSSksIHdoaWNoIHdvdWxkIGxpa2VseSBwb2ludCB0byBhY3RpdmUgbWVhc3VyZW1lbnQgb2YgbmV0d29yayBxdWFsaXR5IG1ldHJpY3MuIEJ1dCwgb2YgY291cnNlLCB0aGUgbmFtZSBjYW4gYmUgbWlzbGVhZGluZyFcblxuSSdsbCBiZSBsb29raW5nIGZvciBjbHVlcyBpbiB0aGUgZnVuY3Rpb24ncyBpbXBsZW1lbnRhdGlvbjogdGhlIGlucHV0IHBhcmFtZXRlcnMsIGFueSBjb25kaXRpb25hbCBsb2dpYywgd2hldGhlciBpdCBpbnRlcmFjdHMgd2l0aCBoYXJkd2FyZSByZWdpc3RlcnMsIHBlcmZvcm1zIGRhdGEgcGFja2V0IG1hbmlwdWxhdGlvbiwgb3IgbGV2ZXJhZ2VzIGFueSBleGlzdGluZyBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuIEFueSBjbHVlcyB3aXRoaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgb3IgYW55IGFzc29jaWF0ZWQgY29tbWVudHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoaXMgc3BlY2lmaWMgc3lzdGVtLiBJcyB0aGlzIGEgY3JpdGljYWwgcGF0aCBmdW5jdGlvbiB0aGF0IG1pZ2h0IGJlIHBlcmZvcm1hbmNlLXNlbnNpdGl2ZT8gT3IgaXMgaXQgbW9yZSBvZiBhIGRpYWdub3N0aWMgb3IgcmVwb3J0aW5nIGZ1bmN0aW9uPyBUaGUgYW5zd2VyIHRvIHRoYXQgcXVlc3Rpb24gd2lsbCBpbmZsdWVuY2UgaG93IGRlZXAgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjQwNSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTc6NDkuNDk4MTc4MDc1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTc1MDE3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhcF9xY2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xMDc9c3RhdGljIHN0cnVjdCBhcF9jb25maWdfaW5mbyBxY2lbMl07XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMDg6c3RhdGljIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqY29uc3QgYXBfcWNpX2luZm8gPSBcXHUwMDI2cWNpWzBdO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTA5OnN0YXRpYyBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmNvbnN0IGFwX3FjaV9pbmZvX29sZCA9IFxcdTAwMjZxY2lbMV07XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTAtXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTIwOT1zdGF0aWMgaW50IGFwX2ludGVycnVwdHNfYXZhaWxhYmxlKHZvaWQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIxNC0vKipcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIxNTogKiBhcF9xY2lfYXZhaWxhYmxlKCk6IFRlc3QgaWYgQVAgY29uZmlndXJhdGlvblxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjE2LSAqIGluZm9ybWF0aW9uIGNhbiBiZSBxdWVyaWVkIHZpYSBRQ0kgc3ViZnVuY3Rpb24uXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIxOS0gKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIyMDpzdGF0aWMgaW50IGFwX3FjaV9hdmFpbGFibGUodm9pZClcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIyMS17XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTI0MT1zdGF0aWMgaW5saW5lIGludCBhcF9xYWN0X2F2YWlsYWJsZSh2b2lkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQyLXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI0MzpcXHRyZXR1cm4gYXBfcWNpX2luZm8tXFx1MDAzZXFhY3Q7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDQtfVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yNTE9aW50IGFwX3NiX2F2YWlsYWJsZSh2b2lkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjUyLXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI1MzpcXHRyZXR1cm4gYXBfcWNpX2luZm8tXFx1MDAzZWFwc2I7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNTQtfVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yNzA9c3RhdGljIHZvaWQgX19pbml0IGFwX2luaXRfcWNpX2luZm8odm9pZClcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI3MS17XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNzI6XFx0aWYgKCFhcF9xY2lfYXZhaWxhYmxlKCkgfHxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI3MzpcXHQgICAgYXBfcWNpKGFwX3FjaV9pbmZvKSkge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjc0LVxcdFxcdEFQX0RCRl9JTkZPKFxcXCIlcyBRQ0kgbm90IHN1cHBvcnRlZFxcXFxuXFxcIiwgX19mdW5jX18pO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNzYtXFx0fVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6Mjc3OlxcdG1lbWNweShhcF9xY2lfaW5mb19vbGQsIGFwX3FjaV9pbmZvLCBzaXplb2YoKmFwX3FjaV9pbmZvKSk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNzgtXFx0QVBfREJGX0lORk8oXFxcIiVzIHN1Y2Nlc3NmdWwgZmV0Y2hlZCBpbml0aWFsIHFjaSBpbmZvXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNzktXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyODA6XFx0aWYgKGFwX3FjaV9pbmZvLVxcdTAwM2VhcHhhKSB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyODE6XFx0XFx0aWYgKGFwX3FjaV9pbmZvLVxcdTAwM2VuYSkge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjgyOlxcdFxcdFxcdGFwX21heF9hZGFwdGVyX2lkID0gYXBfcWNpX2luZm8tXFx1MDAzZW5hO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjgzLVxcdFxcdFxcdEFQX0RCRl9JTkZPKFxcXCIlcyBuZXcgYXBfbWF4X2FkYXB0ZXJfaWQgaXMgJWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI4NS1cXHRcXHR9XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyODY6XFx0XFx0aWYgKGFwX3FjaV9pbmZvLVxcdTAwM2VuZCkge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6Mjg3OlxcdFxcdFxcdGFwX21heF9kb21haW5faWQgPSBhcF9xY2lfaW5mby1cXHUwMDNlbmQ7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yODgtXFx0XFx0XFx0QVBfREJGX0lORk8oXFxcIiVzIG5ldyBhcF9tYXhfZG9tYWluX2lkIGlzICVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0zMTA9c3RhdGljIGlubGluZSBpbnQgYXBfdGVzdF9jb25maWdfY2FyZF9pZCh1bnNpZ25lZCBpbnQgaWQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTMxMy1cXHRcXHRyZXR1cm4gMDtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjMxNDpcXHRpZiAoYXBfcWNpX2luZm8tXFx1MDAzZWZsYWdzKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MzE1OlxcdFxcdHJldHVybiBhcF90ZXN0X2NvbmZpZyhhcF9xY2lfaW5mby1cXHUwMDNlYXBtLCBpZCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zMTYtXFx0cmV0dXJuIDE7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTMyNz1pbnQgYXBfdGVzdF9jb25maWdfdXNhZ2VfZG9tYWluKHVuc2lnbmVkIGludCBkb21haW4pXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTMzMC1cXHRcXHRyZXR1cm4gMDtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjMzMTpcXHRpZiAoYXBfcWNpX2luZm8tXFx1MDAzZWZsYWdzKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MzMyOlxcdFxcdHJldHVybiBhcF90ZXN0X2NvbmZpZyhhcF9xY2lfaW5mby1cXHUwMDNlYXFtLCBkb21haW4pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzMzLVxcdHJldHVybiAxO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0zNDU9aW50IGFwX3Rlc3RfY29uZmlnX2N0cmxfZG9tYWluKHVuc2lnbmVkIGludCBkb21haW4pXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zNDYte1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MzQ3OlxcdGlmICghYXBfcWNpX2luZm8gfHwgZG9tYWluIFxcdTAwM2UgYXBfbWF4X2RvbWFpbl9pZClcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTM0OC1cXHRcXHRyZXR1cm4gMDtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjM0OTpcXHRyZXR1cm4gYXBfdGVzdF9jb25maWcoYXBfcWNpX2luZm8tXFx1MDAzZWFkbSwgZG9tYWluKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTM1MC19XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTEzNDk9c3RhdGljIHNzaXplX3QgYXBfY29udHJvbF9kb21haW5fbWFza19zaG93KGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjaGFyICpidWYpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzUwLXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNTE6XFx0aWYgKCFhcF9xY2lfaW5mby1cXHUwMDNlZmxhZ3MpXFx0LyogUUNJIG5vdCBzdXBwb3J0ZWQgKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNTItXFx0XFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwibm90IHN1cHBvcnRlZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNTQtXFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwiMHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eFxcXFxuXFxcIixcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNTU6XFx0XFx0XFx0ICBhcF9xY2lfaW5mby1cXHUwMDNlYWRtWzBdLCBhcF9xY2lfaW5mby1cXHUwMDNlYWRtWzFdLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM1NjpcXHRcXHRcXHQgIGFwX3FjaV9pbmZvLVxcdTAwM2VhZG1bMl0sIGFwX3FjaV9pbmZvLVxcdTAwM2VhZG1bM10sXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzU3OlxcdFxcdFxcdCAgYXBfcWNpX2luZm8tXFx1MDAzZWFkbVs0XSwgYXBfcWNpX2luZm8tXFx1MDAzZWFkbVs1XSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNTg6XFx0XFx0XFx0ICBhcF9xY2lfaW5mby1cXHUwMDNlYWRtWzZdLCBhcF9xY2lfaW5mby1cXHUwMDNlYWRtWzddKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNTktfVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xMzYzPXN0YXRpYyBzc2l6ZV90IGFwX3VzYWdlX2RvbWFpbl9tYXNrX3Nob3coY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNoYXIgKmJ1ZilcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNjQte1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM2NTpcXHRpZiAoIWFwX3FjaV9pbmZvLVxcdTAwM2VmbGFncylcXHQvKiBRQ0kgbm90IHN1cHBvcnRlZCAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM2Ni1cXHRcXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCJub3Qgc3VwcG9ydGVkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM2OC1cXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCIweCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4XFxcXG5cXFwiLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM2OTpcXHRcXHRcXHQgIGFwX3FjaV9pbmZvLVxcdTAwM2VhcW1bMF0sIGFwX3FjaV9pbmZvLVxcdTAwM2VhcW1bMV0sXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzcwOlxcdFxcdFxcdCAgYXBfcWNpX2luZm8tXFx1MDAzZWFxbVsyXSwgYXBfcWNpX2luZm8tXFx1MDAzZWFxbVszXSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNzE6XFx0XFx0XFx0ICBhcF9xY2lfaW5mby1cXHUwMDNlYXFtWzRdLCBhcF9xY2lfaW5mby1cXHUwMDNlYXFtWzVdLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM3MjpcXHRcXHRcXHQgIGFwX3FjaV9pbmZvLVxcdTAwM2VhcW1bNl0sIGFwX3FjaV9pbmZvLVxcdTAwM2VhcW1bN10pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM3My19XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTEzNzc9c3RhdGljIHNzaXplX3QgYXBfYWRhcHRlcl9tYXNrX3Nob3coY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNoYXIgKmJ1ZilcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNzgte1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM3OTpcXHRpZiAoIWFwX3FjaV9pbmZvLVxcdTAwM2VmbGFncylcXHQvKiBRQ0kgbm90IHN1cHBvcnRlZCAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM4MC1cXHRcXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCJub3Qgc3VwcG9ydGVkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM4Mi1cXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCIweCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4XFxcXG5cXFwiLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM4MzpcXHRcXHRcXHQgIGFwX3FjaV9pbmZvLVxcdTAwM2VhcG1bMF0sIGFwX3FjaV9pbmZvLVxcdTAwM2VhcG1bMV0sXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzg0OlxcdFxcdFxcdCAgYXBfcWNpX2luZm8tXFx1MDAzZWFwbVsyXSwgYXBfcWNpX2luZm8tXFx1MDAzZWFwbVszXSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzODU6XFx0XFx0XFx0ICBhcF9xY2lfaW5mby1cXHUwMDNlYXBtWzRdLCBhcF9xY2lfaW5mby1cXHUwMDNlYXBtWzVdLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM4NjpcXHRcXHRcXHQgIGFwX3FjaV9pbmZvLVxcdTAwM2VhcG1bNl0sIGFwX3FjaV9pbmZvLVxcdTAwM2VhcG1bN10pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM4Ny19XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTE3NDc9c3RhdGljIHNzaXplX3QgZmVhdHVyZXNfc2hvdyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY2hhciAqYnVmKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzUwLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTc1MTpcXHRpZiAoIWFwX3FjaV9pbmZvLVxcdTAwM2VmbGFncylcXHQvKiBRQ0kgbm90IHN1cHBvcnRlZCAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc1Mi1cXHRcXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCItXFxcXG5cXFwiKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NTMtXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzU0OlxcdGlmIChhcF9xY2lfaW5mby1cXHUwMDNlYXBzYylcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NTUtXFx0XFx0biArPSBzeXNmc19lbWl0X2F0KGJ1ZiwgbiwgXFxcIkFQU0MgXFxcIik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzU2OlxcdGlmIChhcF9xY2lfaW5mby1cXHUwMDNlYXB4YSlcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NTctXFx0XFx0biArPSBzeXNmc19lbWl0X2F0KGJ1ZiwgbiwgXFxcIkFQWEEgXFxcIik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzU4OlxcdGlmIChhcF9xY2lfaW5mby1cXHUwMDNlcWFjdClcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NTktXFx0XFx0biArPSBzeXNmc19lbWl0X2F0KGJ1ZiwgbiwgXFxcIlFBQ1QgXFxcIik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzYwOlxcdGlmIChhcF9xY2lfaW5mby1cXHUwMDNlcmM4YSlcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NjEtXFx0XFx0biArPSBzeXNmc19lbWl0X2F0KGJ1ZiwgbiwgXFxcIlJDOEEgXFxcIik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzYyOlxcdGlmIChhcF9xY2lfaW5mby1cXHUwMDNlYXBzYilcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NjMtXFx0XFx0biArPSBzeXNmc19lbWl0X2F0KGJ1ZiwgbiwgXFxcIkFQU0IgXFxcIik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTE5MjM9c3RhdGljIGludCBfX2Rydl9ub3RpZnlfY29uZmlnX2NoYW5nZWQoc3RydWN0IGRldmljZV9kcml2ZXIgKmRydiwgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTkyOC1cXHRcXHRpZiAoYXBfZHJ2LVxcdTAwM2Vvbl9jb25maWdfY2hhbmdlZClcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE5Mjk6XFx0XFx0XFx0YXBfZHJ2LVxcdTAwM2Vvbl9jb25maWdfY2hhbmdlZChhcF9xY2lfaW5mbywgYXBfcWNpX2luZm9fb2xkKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5MzAtXFx0XFx0bW9kdWxlX3B1dChkcnYtXFx1MDAzZW93bmVyKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTk0ND1zdGF0aWMgaW50IF9fZHJ2X25vdGlmeV9zY2FuX2NvbXBsZXRlKHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5NDktXFx0XFx0aWYgKGFwX2Rydi1cXHUwMDNlb25fc2Nhbl9jb21wbGV0ZSlcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE5NTA6XFx0XFx0XFx0YXBfZHJ2LVxcdTAwM2Vvbl9zY2FuX2NvbXBsZXRlKGFwX3FjaV9pbmZvLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTk1MTpcXHRcXHRcXHRcXHRcXHRcXHQgYXBfcWNpX2luZm9fb2xkKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5NTItXFx0XFx0bW9kdWxlX3B1dChkcnYtXFx1MDAzZW93bmVyKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjMxMT1zdGF0aWMgYm9vbCBhcF9nZXRfY29uZmlndXJhdGlvbih2b2lkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMxMi17XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzEzOlxcdGlmICghYXBfcWNpX2luZm8tXFx1MDAzZWZsYWdzKVxcdC8qIFFDSSBub3Qgc3VwcG9ydGVkICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzE0LVxcdFxcdHJldHVybiBmYWxzZTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMTUtXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzE2OlxcdG1lbWNweShhcF9xY2lfaW5mb19vbGQsIGFwX3FjaV9pbmZvLCBzaXplb2YoKmFwX3FjaV9pbmZvKSk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzE3OlxcdGFwX3FjaShhcF9xY2lfaW5mbyk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzE4LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMxOTpcXHRyZXR1cm4gbWVtY21wKGFwX3FjaV9pbmZvLCBhcF9xY2lfaW5mb19vbGQsXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzIwLVxcdFxcdCAgICAgIHNpemVvZihzdHJ1Y3QgYXBfY29uZmlnX2luZm8pKSAhPSAwO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yMzI5PXN0YXRpYyBib29sIGFwX2NvbmZpZ19oYXNfbmV3X2Fwcyh2b2lkKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzMzLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMzNDpcXHRpZiAoIWFwX3FjaV9pbmZvLVxcdTAwM2VmbGFncylcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMzUtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMzNi1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMzc6XFx0Yml0bWFwX2FuZG5vdChtLCAodW5zaWduZWQgbG9uZyAqKWFwX3FjaV9pbmZvLVxcdTAwM2VhcG0sXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzM4OlxcdFxcdCAgICAgICh1bnNpZ25lZCBsb25nICopYXBfcWNpX2luZm9fb2xkLVxcdTAwM2VhcG0sIEFQX0RFVklDRVMpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMzOS1cXHRpZiAoIWJpdG1hcF9lbXB0eShtLCBBUF9ERVZJQ0VTKSlcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjM1MT1zdGF0aWMgYm9vbCBhcF9jb25maWdfaGFzX25ld19kb21zKHZvaWQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzNTQtXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzU1OlxcdGlmICghYXBfcWNpX2luZm8tXFx1MDAzZWZsYWdzKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM1Ni1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzU3LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjM1ODpcXHRiaXRtYXBfYW5kbm90KG0sICh1bnNpZ25lZCBsb25nICopYXBfcWNpX2luZm8tXFx1MDAzZWFxbSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzNTk6XFx0XFx0ICAgICAgKHVuc2lnbmVkIGxvbmcgKilhcF9xY2lfaW5mb19vbGQtXFx1MDAzZWFxbSwgQVBfRE9NQUlOUyk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzYwLVxcdGlmICghYml0bWFwX2VtcHR5KG0sIEFQX0RPTUFJTlMpKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jPTg2PXN0YXRpYyBpbnQgdmZpb19hcF9tYXRyaXhfZGV2X2NyZWF0ZSh2b2lkKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTEwNi1cXHRpZiAodGVzdF9mYWNpbGl0eSgxMikpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTA3OlxcdFxcdHJldCA9IGFwX3FjaShcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlaW5mbyk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTEwOC1cXHRcXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxNzo0OS41NDc5MzM3NjNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyODY2MTYzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgbXkgb3duIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipNeSBJbW1lZGlhdGUgQXNzZXNzbWVudCBvZiBgYXBfcWNpYCoqXG5cblJpZ2h0LCBgYXBfcWNpYC4gT2theSwgc28gaXQgbG9va3MgbGlrZSBJJ20gZGVhbGluZyB3aXRoIGEgZnVuY3Rpb24gbmFtZWQgYGFwX3FjaWAuIE15IGluaXRpYWwgYXNzdW1wdGlvbiwgZ2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLCBpcyB0aGF0IHRoaXMgbGlrZWx5IGludm9sdmVzIHF1ZXJ5aW5nIG9yIHJldHJpZXZpbmcgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi4gVGhlIFwiYXBcIiBwYXJ0IHByb2JhYmx5IHN0YW5kcyBmb3IgXCJhY2Nlc3MgcG9pbnRcIiBvciBzb21ldGhpbmcgcmVsYXRlZCB0byBpdCwgZ2l2ZW4gdGhhdCBpcyBhIHN0YW5kYXJkIGFiYnJldmlhdGlvbiB3aGVuIHJlbGF0ZWQgdG8gd2lyZWxlc3MgbmV0d29ya3MuIFRoZSBcInFjaVwiIGlzIHByb2JhYmx5IHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiwgYW5kIGluZGljYXRlcyB0aGF0IHRoZSBmdW5jdGlvbiBwZXJmb3JtcyBxdWVyaWVzLCBvciByZXF1ZXN0cyBpbmZvcm1hdGlvbiByZWdhcmRpbmcgY29uZmlndXJhdGlvbnMuXG5cblNvLCB0aGUgZm9jdXMgaGVyZSBpcyBvbiB0aGUgcHJvY2VzcyBvZiAqb2J0YWluaW5nKiBjb25maWd1cmF0aW9uIGRhdGEsIHJhdGhlciB0aGFuIGFueSBtYW5pcHVsYXRpb24gb3IgYWx0ZXJhdGlvbiBvZiBpdC4gSXMgaXQgYSBnZW5lcmljIGNvbmZpZ3VyYXRpb24gbG9va3VwLCBvciBpcyBpdCBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgYXNwZWN0IG9mIHRoZSBhY2Nlc3MgcG9pbnQncyBjb25maWd1cmF0aW9uPyBXaGF0IGtpbmQgb2YgY29uZmlndXJhdGlvbiBpcyBpdCByZXNwb25zaWJsZSBmb3IgcXVlcnlpbmc/IEFuZCwgbW9zdCBpbXBvcnRhbnRseSwgd2hhdCBpbnRlcmZhY2UgZG9lcyBpdCBleHBvc2UgdG8gZ2V0IHRoZSBjb25maWd1cmF0aW9uPyBXaGF0IGlzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGRhdGEgaXQgcmV0dXJucz8gVGhlIGlucHV0IHBhcmFtZXRlcnMgYXJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgc2NvcGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNDUyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTc6NTMuMDc2NTk5NDQyWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDk2Mzc4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhcF9xY2lcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3MzOTAvY3J5cHRvL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTI3MD1zdGF0aWMgdm9pZCBfX2luaXQgYXBfaW5pdF9xY2lfaW5mbyh2b2lkKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNzItXFx0aWYgKCFhcF9xY2lfYXZhaWxhYmxlKCkgfHxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI3MzpcXHQgICAgYXBfcWNpKGFwX3FjaV9pbmZvKSkge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjc0LVxcdFxcdEFQX0RCRl9JTkZPKFxcXCIlcyBRQ0kgbm90IHN1cHBvcnRlZFxcXFxuXFxcIiwgX19mdW5jX18pO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yMzExPXN0YXRpYyBib29sIGFwX2dldF9jb25maWd1cmF0aW9uKHZvaWQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMTYtXFx0bWVtY3B5KGFwX3FjaV9pbmZvX29sZCwgYXBfcWNpX2luZm8sIHNpemVvZigqYXBfcWNpX2luZm8pKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMTc6XFx0YXBfcWNpKGFwX3FjaV9pbmZvKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMTgtXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM9ODY9c3RhdGljIGludCB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlKHZvaWQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTA2LVxcdGlmICh0ZXN0X2ZhY2lsaXR5KDEyKSkge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxMDc6XFx0XFx0cmV0ID0gYXBfcWNpKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VpbmZvKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTA4LVxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIzOjE3OjUzLjEyMTU3MTMxWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMDAzODA4OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRlZmluaW5nIHRoZSBFbmlnbWE6IFVucGFja2luZyBgYXBfcWNpYCoqXG5cbkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgaXMgdG8gdW5kZXJzdGFuZCB0aGlzIGBhcF9xY2lgIHRoaW5nLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBuYWlsIGRvd24gYSBwcmVjaXNlIGRlZmluaXRpb24uIE5vIGFzc3VtcHRpb25zLCBubyBzaG9ydGN1dHMg4oCTIGdvdHRhIGdldCB0aGUgZm91bmRhdGlvbiByaWdodC4gSSBuZWVkIGEgY29uY3JldGUsIHVuYW1iaWd1b3VzIGV4cGxhbmF0aW9uLiBJcyBpdCBhbiBhY3JvbnltPyBTb21lIGtpbmQgb2Ygbm92ZWwgbWV0cmljPyBBIHNwZWNpZmljIHBpZWNlIG9mIHRlY2hub2xvZ3k/IFRoaXMgZGVmaW5pdGlvbiB3aWxsIGFjdCBhcyBteSBjb21wYXNzLCBndWlkaW5nIG15IGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBhbmQgcHJldmVudGluZyBtZSBmcm9tIGdvaW5nIGRvd24gYW55IHJhYmJpdCBob2xlcyBwcmVtYXR1cmVseS4gVGhlIHNwZWNpZmljIGRlZmluaXRpb24gd2lsbCBwcm92aWRlIGEgZnJhbWV3b3JrIGZvciBhbGwgZnV0dXJlIGNvbnNpZGVyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjE3OCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIzOjE3OjU2LjIyMTk1NDgyNVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc3ODcxNjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImludCBhcF9xY2lcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9pbmNsdWRlL2FzbS9hcC5oPTIzOT1zdHJ1Y3QgYXBfY29uZmlnX2luZm8ge1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FwLmgtMjY1LSAqL1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9hcC5oOjI2NjpzdGF0aWMgaW5saW5lIGludCBhcF9xY2koc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjb25maWcpXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FwLmgtMjY3LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTc6NTYuNTk5ODM1MzAxWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NDE1OTgwMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipEZWx2aW5nIGludG8gdGhlIGBhcF9xY2lgIERlZmluaXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBzcGVjaWZpY3Mgb2YgdGhpcyBgYXBfcWNpYCBkZWZpbml0aW9uLiBJJ3ZlIGxpa2VseSBlbmNvdW50ZXJlZCB0aGlzIGJlZm9yZSwgYnV0IGl0J3MgY3J1Y2lhbCB0byBzb2xpZGlmeSB0aGUgdW5kZXJzdGFuZGluZywgZXNwZWNpYWxseSBpZiBJJ20gYnVpbGRpbmcgb24gaXQgb3IgdHJvdWJsZXNob290aW5nIHNvbWV0aGluZyByZWxhdGVkIHRvIGl0LiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byBmaW5kIHRoZSBleGFjdCBkZWZpbml0aW9uIGFuZCBkb2N1bWVudGF0aW9uIHNvIHRoYXQgSSBjYW4gaGF2ZSBhIGNvbW1vbiBmcmFtZSBvZiByZWZlcmVuY2UuIFRoaXMgd2lsbCBhbGxvdyBmb3IgYSBtb3JlIGVmZmljaWVudCBhbmQgYWNjdXJhdGUgZGlzY3Vzc2lvbiB3aGVuIGNvbnNpZGVyaW5nIGl0cyBpbXBsaWNhdGlvbnMuIFNvLCBsZXQncyBnZXQgaW50byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI0ODQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxNzo1OS40NDE0MzYxNjVaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQxMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FwLmhcIixcbiAgXCJGaXJzdExpbmVcIjogMjYwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjYwOlxcdFxcbiAyNjE6XFx0LyoqXFxuIDI2MjpcXHQgKiBhcF9xY2koKTogR2V0IEFQIGNvbmZpZ3VyYXRpb24gZGF0YVxcbiAyNjM6XFx0ICpcXG4gMjY0OlxcdCAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBvciAtRU9QTk9UU1VQUC5cXG4gMjY1OlxcdCAqL1xcbiAyNjY6XFx0c3RhdGljIGlubGluZSBpbnQgYXBfcWNpKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqY29uZmlnKVxcbiAyNjc6XFx0e1xcbiAyNjg6XFx0XFx0dW5zaWduZWQgbG9uZyByZWcwID0gNFVMIFxcdTAwM2NcXHUwMDNjIDI0OyAgLyogZmMgNFVMIGlzIFFDSSAqL1xcbiAyNjk6XFx0XFx0dW5zaWduZWQgbG9uZyByZWcxID0gLUVPUE5PVFNVUFA7XFxuIDI3MDpcXHRcXHRzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKnJlZzIgPSBjb25maWc7XFxuIDI3MTpcXHRcXG4gMjcyOlxcdFxcdGFzbSB2b2xhdGlsZShcXG4gMjczOlxcdFxcdFxcdFxcXCJcXHRsZ3JcXHQwLCVbcmVnMF1cXFxcblxcXCJcXHRcXHQvKiBRQ0kgZmMgaW50byBncjAgKi9cXG4gMjc0OlxcdFxcdFxcdFxcXCJcXHRsZ3JcXHQyLCVbcmVnMl1cXFxcblxcXCJcXHRcXHQvKiBwdHIgdG8gY29uZmlnIGludG8gZ3IyICovXFxuIDI3NTpcXHRcXHRcXHRcXFwiXFx0Lmluc25cXHRycmUsMHhiMmFmMDAwMCwwLDBcXFxcblxcXCJcXHQvKiBQUUFQKFFDSSkgKi9cXG4gMjc2OlxcdFxcdFxcdFxcXCIwOlxcdGxhXFx0JVtyZWcxXSwwXFxcXG5cXFwiXFx0XFx0LyogZ29vZCBjYXNlLCBRQ0kgZmMgYXZhaWxhYmxlICovXFxuIDI3NzpcXHRcXHRcXHRcXFwiMTpcXFxcblxcXCJcXG4gMjc4OlxcdFxcdFxcdEVYX1RBQkxFKDBiLCAxYilcXG4gMjc5OlxcdFxcdFxcdDogW3JlZzFdIFxcXCIrXFx1MDAyNmRcXFwiIChyZWcxKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxNzo1OS40NDE1MzIwNzVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU2OTQ5NTYwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIFBRQVAoUUNJKSBGdXp6aW5nIFBvc3NpYmlsaXRpZXMqKlxuXG5Pa2F5LCBzbyBgYXBfcWNpYCBpcyBjYWxsaW5nIGBQUUFQKFFDSSlgLiAgVGhhdCBpbnN0cnVjdGlvbiBnZXRzIGludGVyY2VwdGVkIGJ5IHRoZSBoeXBlcnZpc29yIOKAkyBLVk0vUUVNVSwgc3BlY2lmaWNhbGx5LiBGaXJzdCB0aGluZydzIGZpcnN0OiBkb2VzIFFFTVUgZXZlbiAqc3VwcG9ydCogdGhpcyBgUFFBUGAgaW50ZXJjZXB0aW9uPyBUaGFua2Z1bGx5LCB5ZXMsIFFFTVUncyBnb3QgdGhhdCBjb3ZlcmVkLiBCdXQgaGVyZSdzIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBkb2VzIFFFTVUncyByZXNwb25zZSBjb25maWd1cmF0aW9uLCBhcyBhIHJlc3VsdCBvZiBpbnRlcmNlcHRpbmcgdGhhdCBpbnN0cnVjdGlvbiwgZW5hYmxlIHRoZSBzdWJzZXF1ZW50IGBhcF9nZXRfY29uZmlndXJhdGlvbmAgdG8gcmV0dXJuIHRydWU/IFRoYXQncyB0aGUga2V5IHRvIHRyaWdnZXJpbmcgd2hhdCB3ZSBhcmUgaW50ZXJlc3RlZCBpbi5cblxuTm93LCBpZiB3ZSBhcmUgZnV6emluZyB2aWEgc3l6a2FsbGVyLCBjYW4gd2UgdHJpZ2dlciB0aGF0IGNvbmZpZ3VyYXRpb24gd2l0aCBzeXprYWxsZXI/ICBBaCwgdHJpY2t5LiBTeXprYWxsZXIgY2FuJ3QgKmRpcmVjdGx5KiBpbmplY3QgYFBRQVAoUUNJKWAgcmVzcG9uc2VzLCBiZWNhdXNlIGl0IHJ1bnMgaW5zaWRlIHRoZSBndWVzdCBWTS4gSXQgd291bGQgbmVlZCB0byBiZSBydW5uaW5nIGF0IHRoZSBoeXBlcnZpc29yIGxldmVsIHRvIGRvIHRoYXQuIEJ1dCB3YWl0Li4uU3l6a2FsbGVyIGlzIGZ1enppbmcgdGhlIGtlcm5lbCAqZnJvbSB1c2VyIHNwYWNlKi4gVGhhdOKAmXMgYSBrZXkgZGlzdGluY3Rpb24uXG5cbk9rYXksIHNvLCBpZiB3ZSBjYW5ub3QgdXNlIHN5emthbGxlciB0byBpbmplY3QgUFFBUCByZXNwb25zZXMsIGlzIHRoZXJlICphbnkqIHVzZXItc3BhY2UgaW50ZXJmYWNlIHRoYXQgbWlnaHQgdHJpZ2dlciB0aGF0IGB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZWAgdGhhdCB0aGlzIGFsbCByZWxhdGVzIHRvPyBJcyB0aGVyZSBhbiBleGlzdGluZyBBUEkgb3IgYSBtb3JlIGdlbmVyYWwgd2F5IHRvIGNhbGwgYHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlYD8gSeKAmWQgYmV0dGVyIGdvIGNoZWNrIHdoZXJlIHRoYXQgaXMgY2FsbGVkIGZyb20hIExldCdzIHNlZSBpZiBpdCdzIGNhbGxlZCBhbnl3aGVyZSBlbHNlIHRoYXQgd2UgbWlnaHQgYmUgYWJsZSB0byBleHBsb2l0IGZyb20gdXNlciBzcGFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMwNzAsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxODowNS4wMTEwMzAwMjhaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwOTY2OTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yNTU3PXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9ob3RfdW5wbHVnX2NmZyhzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2LFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1ODUtLyoqXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI1ODY6ICogdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUgLSBkZXRlcm1pbmVzIHdoaWNoIGd1ZXN0cyBhcmUgdXNpbmcgdGhlIGFkYXB0ZXJzLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNTg3LSAqXFx0XFx0XFx0ICAgICBkb21haW5zIGFuZCBjb250cm9sIGRvbWFpbnMgdGhhdCBoYXZlIGJlZW4gcmVtb3ZlZFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1OTctICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI1OTg6c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUodW5zaWduZWQgbG9uZyAqYXBfcmVtb3ZlLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNTk5LVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nICphcV9yZW1vdmUsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjYzOT1zdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZShzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jb25maWdfaW5mbyxcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjYwLVxcdGlmIChkb19yZW1vdmUpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI2NjE6XFx0XFx0dmZpb19hcF9tZGV2X2NmZ19yZW1vdmUoYXByZW0sIGFxcmVtLCBjZHJlbSk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2NjItfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxODowNS4wNjIwMDQ4MTZaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY2NDE3NDU2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQ2FsbGVyIG9mIGB2ZmlvX2FwX21kZXZfb2ZmX2NmZ19yZW1vdmVgKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCB0aGUgY29kZSBub3RlcyB0aGF0IHRoaXMgYHZmaW9fYXBfbWRldl9vbl9jZmdfcmVtb3ZlYCBmdW5jdGlvbiBpcyBvbmx5IGRpcmVjdGx5IGNhbGxlZCBmcm9tIGB2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZWAuIFRoYXQncyBhIGJpdCB1bnVzdWFsLCBhbmQgaXQgbWFrZXMgbWUgd29uZGVyLiBJcyB0aGF0IHRydWx5IHRoZSAqb25seSogcGxhY2UgdGhpcyBpcyBiZWluZyBpbnZva2VkIGZyb20/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdC4gSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjYWxsIHBhdGhzLCBtYXliZSBpbmRpcmVjdGx5LCB0aGF0IGFyZSBsZWFkaW5nIHRvIHRoaXMgZnVuY3Rpb24gYmVpbmcgZXhlY3V0ZWQuIEknbGwgbmVlZCB0byBnbyBiZXlvbmQgdGhlIGltbWVkaWF0ZSBjYWxsIHN0YWNrIHRvIGJlIGNlcnRhaW4uIEknbGwgbmVlZCB0byB1c2UgbXkgdG9vbHMgdG8gdGhvcm91Z2hseSBleGFtaW5lIHRoZSBjYWxsaW5nIGNvbnRleHQgYW5kIHZlcmlmeSB0aGUgYXNzdW1wdGlvbnMgdGhpcyBwaWVjZSBvZiBjb2RlIGlzIGJhc2VkIG9uLiBBIHNlY29uZCBzZXQgb2YgZXllcyBvbiB0aGlzIGlzIGFsd2F5cyBiZW5lZmljaWFsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDA5NSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIzOjE4OjA4LjcyNjE4MTY5WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODA3Njc0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3MzOTAvY3J5cHRvL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjU5OD1zdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZSh1bnNpZ25lZCBsb25nICphcF9yZW1vdmUsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjYzMS0vKipcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjYzMjogKiB2ZmlvX2FwX21kZXZfb25fY2ZnX3JlbW92ZSAtIHJlc3BvbmRzIHRvIHRoZSByZW1vdmFsIG9mIGFkYXB0ZXJzLCBkb21haW5zIGFuZFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjMzLSAqXFx0XFx0XFx0XFx0Y29udHJvbCBkb21haW5zIGZyb20gdGhlIGhvc3QgQVAgY29uZmlndXJhdGlvblxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2MzgtICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI2Mzk6c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X29uX2NmZ19yZW1vdmUoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjdXJfY29uZmlnX2luZm8sXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2NDAtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqcHJldl9jb25maWdfaW5mbylcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yODA0PXZvaWQgdmZpb19hcF9vbl9jZmdfY2hhbmdlZChzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmN1cl9jZmdfaW5mbyxcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODExLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODEyOlxcdHZmaW9fYXBfbWRldl9vbl9jZmdfcmVtb3ZlKGN1cl9jZmdfaW5mbywgcHJldl9jZmdfaW5mbyk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4MTMtXFx0dmZpb19hcF9tZGV2X29uX2NmZ19hZGQoY3VyX2NmZ19pbmZvLCBwcmV2X2NmZ19pbmZvKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTg6MDguNzc0MjYzNTE5WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0ODQ4MTU0NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHlvdSBkZXNjcmliZWQ6XG5cbioqQW5hbHl6aW5nIGB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkYCBDYWxsZXJzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBmdW5jdGlvbiwgaXQncyBjYWxsZWQgYHZmaW9fYXBfb25fY2ZnX2NoYW5nZWRgLiBUaGUgY29kZSBzYXlzIGl0J3Mgb25seSBjYWxsZWQgZnJvbSBvbmUgcGxhY2U6IGB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkYC4gVGhhdCdzIGludGVyZXN0aW5nLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3Npbmcgc29tZXRoaW5nLiBJIGtub3cgdGhlIGNvZGUgcHJldHR5IHdlbGwsIGJ1dCBtZW1vcnkgaXNuJ3QgcGVyZmVjdCwgYW5kIHRoZXJlIG1pZ2h0IGJlIGEgc3VidGxlIGluZGlyZWN0IHBhdGguXG5cblNvIG15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogSXMgdGhpcyB0aGUgKm9ubHkqIGNhbGxzaXRlIGZvciB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBgdmZpb19hcF9vbl9jZmdfY2hhbmdlZGAgaXMgKm5vdCogY2FsbGVkIGZyb20gYW55d2hlcmUgZWxzZSB3aXRoaW4gdGhlIGNvZGUgYmFzZS4gQXJlIHRoZXJlIGFueSBvdGhlciBwYXRocywgZXZlbiBvbmVzIHRoYXQgc2VlbSBpbmRpcmVjdCwgdGhhdCBlbmQgdXAgdHJpZ2dlcmluZyB0aGlzIGZ1bmN0aW9uIGNhbGw/IFRoaXMgaXMgYSBjcml0aWNhbCBwb2ludCB0aGF0IG5lZWRzIGNvbmZpcm1hdGlvbiBiZWZvcmUgSSBjb250aW51ZSBteSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ4NTIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxODoxMi4yNTkwODEwMTlaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NzgzOTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZmaW9fYXBfb25fY2ZnX2NoYW5nZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jPTU4PXN0YXRpYyBzdHJ1Y3QgYXBfZHJpdmVyIHZmaW9fYXBfZHJ2ID0ge1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTYxLVxcdC5pbl91c2UgPSB2ZmlvX2FwX21kZXZfcmVzb3VyY2VfaW5fdXNlLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzo2MjpcXHQub25fY29uZmlnX2NoYW5nZWQgPSB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy02My1cXHQub25fc2Nhbl9jb21wbGV0ZSA9IHZmaW9fYXBfb25fc2Nhbl9jb21wbGV0ZSxcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yNzcyPXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9vbl9jZmdfYWRkKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqY3VyX2NvbmZpZ19pbmZvLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI3OTctLyoqXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI3OTg6ICogdmZpb19hcF9vbl9jZmdfY2hhbmdlZCAtIGhhbmRsZXMgbm90aWZpY2F0aW9uIG9mIGNoYW5nZXMgdG8gdGhlIGhvc3QgQVBcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjc5OS0gKlxcdFxcdFxcdCAgICBjb25maWd1cmF0aW9uLlxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4MDMtICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI4MDQ6dm9pZCB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqY3VyX2NmZ19pbmZvLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODA1LVxcdFxcdFxcdCAgICBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKnByZXZfY2ZnX2luZm8pXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oPTE2MT1pbnQgdmZpb19hcF9tZGV2X3Jlc291cmNlX2luX3VzZSh1bnNpZ25lZCBsb25nICphcG0sIHVuc2lnbmVkIGxvbmcgKmFxbSk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaC0xNjItXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaDoxNjM6dm9pZCB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqbmV3X2NvbmZpZ19pbmZvLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtMTY0LVxcdFxcdFxcdCAgICBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKm9sZF9jb25maWdfaW5mbyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIzOjE4OjEyLjMwNjg3MDQwN1oiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTMwNzYxNzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBWRklPLUFQIERyaXZlciBDb25maWd1cmF0aW9uIENoYW5nZSBNZWNoYW5pc20qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyB0aGUgY29uZmlndXJhdGlvbiBjaGFuZ2UgZXZlbnRzIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGUgYHZmaW9fYXBfZHJ2YCBkcml2ZXIuIE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCB0aGUgY29yZSBtZWNoYW5pc20gc2VlbXMgdG8gYmUgcm9vdGVkIGluIHRoZSBgLm9uX2NvbmZpZ19jaGFuZ2VkYCBjYWxsYmFjay4gVGhhdCdzIHRoZSBrZXkgZW50cnkgcG9pbnQsIHRoZSB0aGluZyB0aGF0IGdldHMgdHJpZ2dlcmVkIHdoZW4gc29tZXRoaW5nICphY3R1YWxseSogY2hhbmdlcy5cblxuQW5kIHRoZW4gSSdtIHRyYWNpbmcgdGhhdCBjYWxsYmFjayDigJMgaXQncyBjYWxsZWQgYnkgYF9fZHJ2X25vdGlmeV9jb25maWdfY2hhbmdlZGAuIFRoYXQgZnVuY3Rpb24sIGluIHR1cm4sIGlzIGludm9rZWQgYnkgYG5vdGlmeV9jb25maWdfY2hhbmdlZGAsIHdoaWNoIGlzIHRoZW4gY2FsbGVkIGJ5IHRoZSBgYXBfc2Nhbl9idXNgIGZ1bmN0aW9uLiBTbywgd2UgaGF2ZSB0aGlzIG5lc3RlZCBjaGFpbiwgZnJvbSB0aGUgbG93LWxldmVsIGNoYW5nZSBkZXRlY3Rpb24sIGFsbCB0aGUgd2F5IHVwIHRvIHdoZXJlIHRoZSBidXMgaXMgc2Nhbm5lZC5cblxuTm93LCBgYXBfc2Nhbl9idXNgIGNhbiBiZSB0cmlnZ2VyZWQgZWl0aGVyIGJ5IGEgdGltZXIgZmlyaW5nIG9yIGJ5IGBhcF9idXNfZm9yY2VfcmVzY2FuYC4gVGhhdCBsYXN0IHBpZWNlIGlzIHdoYXQgaGFzIG1lIHRoaW5raW5nOiBpcyB0aGVyZSBhIHN5c2ZzIGF0dHJpYnV0ZSwgYSB3YXkgdG8gbWFudWFsbHkgZm9yY2UgdGhlIGRyaXZlciB0byByZXNjYW4gdGhlIGJ1cz8gSWYgc28sIHRoYXQncyBpbmNyZWRpYmx5IHVzZWZ1bCBmb3IgZGVidWdnaW5nIGFuZCBjb250cm9sLiBJdCdzIHRoZSBlcXVpdmFsZW50IG9mIGEgc29mdHdhcmUgcmVzZXQgYW5kIGNvdWxkIHNoZWQgbGlnaHQgb24gc29tZSBvdGhlciBpc3N1ZXMuIEkgbmVlZCB0byBsb29rIGZvciB0aGF0IGFuZCBzZWUgaWYgaXQgaXMgYXZhaWxhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTc0MiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxODoxNi44Mzc2MzUwNDhaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxMjY5NTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFwX2J1c19mb3JjZV9yZXNjYW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xMTEyPUVYUE9SVF9TWU1CT0woYXBfZHJpdmVyX3VucmVnaXN0ZXIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTE4LSAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTExOTpib29sIGFwX2J1c19mb3JjZV9yZXNjYW4odm9pZClcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExMjAte1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTMzLVxcdCAqIGFsbCBjYXJkcyBhcmUgb2ZmbGluZSBzbyBhIHJlc2NhbiBpcyB0cmlnZ2VyZWQgd2hpY2ggY2F1c2VzXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMTM0OlxcdCAqIGEgcmVjdXJzaXZlIGNhbGwgb2YgYXBfYnVzX2ZvcmNlX3Jlc2NhbigpLiBBIHNpbXBsZSByZXR1cm4gaWZcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExMzUtXFx0ICogdGhlIG11dGV4IGlzIGFscmVhZHkgbG9ja2VkIGJ5IHRoaXMgdGhyZWFkIHNvbHZlcyB0aGlzLlxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTY5LX1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjExNzA6RVhQT1JUX1NZTUJPTChhcF9idXNfZm9yY2VfcmVzY2FuKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExNzEtXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTExNzU9c3RhdGljIGludCBhcF9idXNfY2ZnX2NoZyhzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTgyLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTE4MzpcXHRhcF9idXNfZm9yY2VfcmVzY2FuKCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMTg0LVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xNzEwPXN0YXRpYyBzc2l6ZV90IHNjYW5zX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjb25zdCBjaGFyICpidWYsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3MTQtXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzE1OlxcdGFwX2J1c19mb3JjZV9yZXNjYW4oKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3MTYtXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5oPTI1Nj12b2lkIGFwX3JlcXVlc3RfdGltZW91dChzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuaDoyNTc6Ym9vbCBhcF9idXNfZm9yY2VfcmVzY2FuKHZvaWQpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmgtMjU4LVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by96Y3J5cHRfYXBpLmM9ODA9c3RhdGljIGlubGluZSBib29sIHpjcnlwdF9wcm9jZXNzX3Jlc2Nhbih2b2lkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vemNyeXB0X2FwaS5jLTgxLXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3pjcnlwdF9hcGkuYzo4MjpcXHRyZXR1cm4gYXBfYnVzX2ZvcmNlX3Jlc2NhbigpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vemNyeXB0X2FwaS5jLTgzLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTg6MTYuODg4OTExNTA3WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4MTA1MDc4NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEFQIEJ1cyBSZXNjYW4gTG9naWMqKlxuXG5Pa2F5LCBzbyBoZXJlJ3MgaG93IHRoaXMgYWxsIHdvcmtzLiBgc2NhbnNfc3RvcmVgIHVsdGltYXRlbHkgY2FsbHMgYGFwX2J1c19mb3JjZV9yZXNjYW5gLiBBIHVzZXIgY2FuIHRyaWdnZXIgdGhpcyB2aWEgdGhlIGAvc3lzL2J1cy9hcC9zY2Fuc2AgaW50ZXJmYWNlLiBUaGF0J3Mgc3RyYWlnaHRmb3J3YXJkLiBIb3dldmVyLCBgYXBfc2Nhbl9idXNgIHRoZW4gKm9ubHkqIGNhbGxzIGBub3RpZnlfY29uZmlnX2NoYW5nZWRgIGlmIGBhcF9nZXRfY29uZmlndXJhdGlvbmAgcmV0dXJucyB0cnVlLiBUaGF0J3MgdGhlIGNydXggb2YgaXQuIEFuZCBgYXBfZ2V0X2NvbmZpZ3VyYXRpb25gIG9ubHkgcmV0dXJucyB0cnVlIGlmIGBhcF9xY2lfaW5mb2AgaGFzIGNoYW5nZWQgc2luY2UgdGhlIGxhc3QgY2FsbC4gIGBhcF9xY2lfaW5mb2AgaXMsIGluIHR1cm4sIHBvcHVsYXRlZCBieSBgYXBfcWNpYCwgd2hpY2ggZXhlY3V0ZXMgdGhlIGBQUUFQKFFDSSlgIGluc3RydWN0aW9uLlxuXG5TbywgaGVyZSdzIHdoYXQgaXQgY29tZXMgZG93biB0bzogdW5sZXNzIGBQUUFQKFFDSSlgIHJlc3VsdHMgaW4gYSBjaGFuZ2VkIGBhcF9xY2lfaW5mb2AsIGBub3RpZnlfY29uZmlnX2NoYW5nZWRgICp3b24ndCogYmUgdHJpZ2dlcmVkLCBubyBtYXR0ZXIgaG93IG1hbnkgdGltZXMgd2Ugd3JpdGUgdG8gYC9zeXMvYnVzL2FwL3NjYW5zYC4gIFRoaXMgc2VlbXMgdG8gc3VnZ2VzdCB0aGUgaHlwZXJ2aXNvciAoUUVNVSwgaW4gdGhpcyBjYXNlKSBoYXMgdG8gY2hhbmdlIHRoZSB1bmRlcmx5aW5nIGNvbmZpZ3VyYXRpb24uIElmIFFFTVUgZG9lc24ndCBjaGFuZ2UgYW55dGhpbmcsIHRoaXMgd2hvbGUgY29kZSBwYXRoIGFwcGVhcnMgdG8gYmUgaW5lcnQuXG5cblRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXM6IGNhbiBhIHVzZXItc3BhY2UgcHJvY2VzcyAqd2l0aGluIHRoZSBndWVzdCogYWN0dWFsbHkgbW9kaWZ5IHRoaXMgQVAgY29uZmlndXJhdGlvbiBpbiBhIHdheSB0aGF0IHdvdWxkIHRyaWdnZXIgdGhpcz8gIFJlYWxpc3RpY2FsbHksIG5vLiBUaGUgQVAgY29uZmlndXJhdGlvbiBpcyBwcm92aWRlZCBieSB0aGUgaHlwZXJ2aXNvci4gIFVubGVzcyBzb21lb25lIGhhcyBmb3VuZCBzb21lIGNyYXp5IGhhY2ssIG9yIHRoZXJlJ3MgYSBzcGVjaWZpYyBtZWNoYW5pc20gSSdtIG1pc3NpbmcgdG8gbW9jayBvciBpbmplY3QgY2hhbmdlcyBmcm9tICp3aXRoaW4qIHRoZSBndWVzdCwgdGhpcyBzZWVtcyB0byBiZSB0cmlnZ2VyZWQgb25seSBieSBoeXBlcnZpc29yLWxldmVsIGNoYW5nZXMsIGxpa2UgaG90cGx1Z2dpbmcuXG5cbkJ1dCB3YWl0LCB3aGF0IGFib3V0IHRoZSBjYXNlIHdoZXJlIHRoZSBndWVzdCBpcyBydW5uaW5nIG9uIFFFTVUsIGJ1dCBRRU1VIGRvZXNuJ3Qgc3VwcG9ydCBBUCBjYXJkcyBhdCBhbGwsIG9yIGhhcyBub25lIGNvbmZpZ3VyZWQ/ICBJbiB0aGF0IHNjZW5hcmlvLCBgYXBfcWNpX2luZm8tXHUwMDNlZmxhZ3NgIHdpbGwgbGlrZWx5IGJlIHplcm8sIGluZGljYXRpbmcgUUNJIGlzbid0IHN1cHBvcnRlZCwgYW5kIGBhcF9nZXRfY29uZmlndXJhdGlvbmAgd2lsbCBjb25zaXN0ZW50bHkgcmV0dXJuIGZhbHNlLiBUaGlzIG1ha2VzIHNlbnNlLlxuXG5BbHJpZ2h0LCBpcyB0aGVyZSBhbnkga2luZCBvZiBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgQVAgY2FyZHMgd2l0aGluIHRoZSBrZXJuZWwgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBpbnRlcnZlbmUgaGVyZT8gSSBuZWVkIHRvIGNoZWNrIGlmIGFueSB0ZXN0IG9yIG1vY2sgZHJpdmVycyBleGlzdCBmb3IgdGhlIEFQIGJ1cy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGEgc2lkZSBwYXRoIHRoYXQncyBlbXVsYXRpbmcgQVAgY2hhbmdlcyB3aXRob3V0IGh5cGVydmlzb3IgaW5wdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2ODk1LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIzOjE4OjI0LjY5OTQyMjQwN1oiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg3ODQ5NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXBfcWNpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTA3PXN0YXRpYyBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gcWNpWzJdO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTA4OnN0YXRpYyBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gKmNvbnN0IGFwX3FjaV9pbmZvID0gXFx1MDAyNnFjaVswXTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEwOTpzdGF0aWMgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjb25zdCBhcF9xY2lfaW5mb19vbGQgPSBcXHUwMDI2cWNpWzFdO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTEwLVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yMDk9c3RhdGljIGludCBhcF9pbnRlcnJ1cHRzX2F2YWlsYWJsZSh2b2lkKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMTQtLyoqXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMTU6ICogYXBfcWNpX2F2YWlsYWJsZSgpOiBUZXN0IGlmIEFQIGNvbmZpZ3VyYXRpb25cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIxNi0gKiBpbmZvcm1hdGlvbiBjYW4gYmUgcXVlcmllZCB2aWEgUUNJIHN1YmZ1bmN0aW9uLlxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMTktICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMjA6c3RhdGljIGludCBhcF9xY2lfYXZhaWxhYmxlKHZvaWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMjEte1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yNDE9c3RhdGljIGlubGluZSBpbnQgYXBfcWFjdF9hdmFpbGFibGUodm9pZClcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0Mi17XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNDM6XFx0cmV0dXJuIGFwX3FjaV9pbmZvLVxcdTAwM2VxYWN0O1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjQ0LX1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjUxPWludCBhcF9zYl9hdmFpbGFibGUodm9pZClcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI1Mi17XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNTM6XFx0cmV0dXJuIGFwX3FjaV9pbmZvLVxcdTAwM2VhcHNiO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjU0LX1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjcwPXN0YXRpYyB2b2lkIF9faW5pdCBhcF9pbml0X3FjaV9pbmZvKHZvaWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNzEte1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjcyOlxcdGlmICghYXBfcWNpX2F2YWlsYWJsZSgpIHx8XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNzM6XFx0ICAgIGFwX3FjaShhcF9xY2lfaW5mbykpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI3NC1cXHRcXHRBUF9EQkZfSU5GTyhcXFwiJXMgUUNJIG5vdCBzdXBwb3J0ZWRcXFxcblxcXCIsIF9fZnVuY19fKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjc2LVxcdH1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI3NzpcXHRtZW1jcHkoYXBfcWNpX2luZm9fb2xkLCBhcF9xY2lfaW5mbywgc2l6ZW9mKCphcF9xY2lfaW5mbykpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjc4LVxcdEFQX0RCRl9JTkZPKFxcXCIlcyBzdWNjZXNzZnVsIGZldGNoZWQgaW5pdGlhbCBxY2kgaW5mb1xcXFxuXFxcIiwgX19mdW5jX18pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjc5LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjgwOlxcdGlmIChhcF9xY2lfaW5mby1cXHUwMDNlYXB4YSkge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjgxOlxcdFxcdGlmIChhcF9xY2lfaW5mby1cXHUwMDNlbmEpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI4MjpcXHRcXHRcXHRhcF9tYXhfYWRhcHRlcl9pZCA9IGFwX3FjaV9pbmZvLVxcdTAwM2VuYTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI4My1cXHRcXHRcXHRBUF9EQkZfSU5GTyhcXFwiJXMgbmV3IGFwX21heF9hZGFwdGVyX2lkIGlzICVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yODUtXFx0XFx0fVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6Mjg2OlxcdFxcdGlmIChhcF9xY2lfaW5mby1cXHUwMDNlbmQpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI4NzpcXHRcXHRcXHRhcF9tYXhfZG9tYWluX2lkID0gYXBfcWNpX2luZm8tXFx1MDAzZW5kO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjg4LVxcdFxcdFxcdEFQX0RCRl9JTkZPKFxcXCIlcyBuZXcgYXBfbWF4X2RvbWFpbl9pZCBpcyAlZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MzEwPXN0YXRpYyBpbmxpbmUgaW50IGFwX3Rlc3RfY29uZmlnX2NhcmRfaWQodW5zaWduZWQgaW50IGlkKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zMTMtXFx0XFx0cmV0dXJuIDA7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzozMTQ6XFx0aWYgKGFwX3FjaV9pbmZvLVxcdTAwM2VmbGFncylcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjMxNTpcXHRcXHRyZXR1cm4gYXBfdGVzdF9jb25maWcoYXBfcWNpX2luZm8tXFx1MDAzZWFwbSwgaWQpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzE2LVxcdHJldHVybiAxO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0zMjc9aW50IGFwX3Rlc3RfY29uZmlnX3VzYWdlX2RvbWFpbih1bnNpZ25lZCBpbnQgZG9tYWluKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zMzAtXFx0XFx0cmV0dXJuIDA7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzozMzE6XFx0aWYgKGFwX3FjaV9pbmZvLVxcdTAwM2VmbGFncylcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjMzMjpcXHRcXHRyZXR1cm4gYXBfdGVzdF9jb25maWcoYXBfcWNpX2luZm8tXFx1MDAzZWFxbSwgZG9tYWluKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTMzMy1cXHRyZXR1cm4gMTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MzQ1PWludCBhcF90ZXN0X2NvbmZpZ19jdHJsX2RvbWFpbih1bnNpZ25lZCBpbnQgZG9tYWluKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzQ2LXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjM0NzpcXHRpZiAoIWFwX3FjaV9pbmZvIHx8IGRvbWFpbiBcXHUwMDNlIGFwX21heF9kb21haW5faWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zNDgtXFx0XFx0cmV0dXJuIDA7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzozNDk6XFx0cmV0dXJuIGFwX3Rlc3RfY29uZmlnKGFwX3FjaV9pbmZvLVxcdTAwM2VhZG0sIGRvbWFpbik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zNTAtfVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xMzQ5PXN0YXRpYyBzc2l6ZV90IGFwX2NvbnRyb2xfZG9tYWluX21hc2tfc2hvdyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY2hhciAqYnVmKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM1MC17XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzUxOlxcdGlmICghYXBfcWNpX2luZm8tXFx1MDAzZWZsYWdzKVxcdC8qIFFDSSBub3Qgc3VwcG9ydGVkICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzUyLVxcdFxcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcIm5vdCBzdXBwb3J0ZWRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzU0LVxcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcIjB4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHhcXFxcblxcXCIsXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzU1OlxcdFxcdFxcdCAgYXBfcWNpX2luZm8tXFx1MDAzZWFkbVswXSwgYXBfcWNpX2luZm8tXFx1MDAzZWFkbVsxXSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNTY6XFx0XFx0XFx0ICBhcF9xY2lfaW5mby1cXHUwMDNlYWRtWzJdLCBhcF9xY2lfaW5mby1cXHUwMDNlYWRtWzNdLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM1NzpcXHRcXHRcXHQgIGFwX3FjaV9pbmZvLVxcdTAwM2VhZG1bNF0sIGFwX3FjaV9pbmZvLVxcdTAwM2VhZG1bNV0sXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzU4OlxcdFxcdFxcdCAgYXBfcWNpX2luZm8tXFx1MDAzZWFkbVs2XSwgYXBfcWNpX2luZm8tXFx1MDAzZWFkbVs3XSk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzU5LX1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTM2Mz1zdGF0aWMgc3NpemVfdCBhcF91c2FnZV9kb21haW5fbWFza19zaG93KGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjaGFyICpidWYpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzY0LXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNjU6XFx0aWYgKCFhcF9xY2lfaW5mby1cXHUwMDNlZmxhZ3MpXFx0LyogUUNJIG5vdCBzdXBwb3J0ZWQgKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNjYtXFx0XFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwibm90IHN1cHBvcnRlZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNjgtXFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwiMHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eFxcXFxuXFxcIixcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNjk6XFx0XFx0XFx0ICBhcF9xY2lfaW5mby1cXHUwMDNlYXFtWzBdLCBhcF9xY2lfaW5mby1cXHUwMDNlYXFtWzFdLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM3MDpcXHRcXHRcXHQgIGFwX3FjaV9pbmZvLVxcdTAwM2VhcW1bMl0sIGFwX3FjaV9pbmZvLVxcdTAwM2VhcW1bM10sXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzcxOlxcdFxcdFxcdCAgYXBfcWNpX2luZm8tXFx1MDAzZWFxbVs0XSwgYXBfcWNpX2luZm8tXFx1MDAzZWFxbVs1XSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNzI6XFx0XFx0XFx0ICBhcF9xY2lfaW5mby1cXHUwMDNlYXFtWzZdLCBhcF9xY2lfaW5mby1cXHUwMDNlYXFtWzddKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNzMtfVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xMzc3PXN0YXRpYyBzc2l6ZV90IGFwX2FkYXB0ZXJfbWFza19zaG93KGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjaGFyICpidWYpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzc4LXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNzk6XFx0aWYgKCFhcF9xY2lfaW5mby1cXHUwMDNlZmxhZ3MpXFx0LyogUUNJIG5vdCBzdXBwb3J0ZWQgKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzODAtXFx0XFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwibm90IHN1cHBvcnRlZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzODItXFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwiMHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eFxcXFxuXFxcIixcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzODM6XFx0XFx0XFx0ICBhcF9xY2lfaW5mby1cXHUwMDNlYXBtWzBdLCBhcF9xY2lfaW5mby1cXHUwMDNlYXBtWzFdLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM4NDpcXHRcXHRcXHQgIGFwX3FjaV9pbmZvLVxcdTAwM2VhcG1bMl0sIGFwX3FjaV9pbmZvLVxcdTAwM2VhcG1bM10sXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzg1OlxcdFxcdFxcdCAgYXBfcWNpX2luZm8tXFx1MDAzZWFwbVs0XSwgYXBfcWNpX2luZm8tXFx1MDAzZWFwbVs1XSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzODY6XFx0XFx0XFx0ICBhcF9xY2lfaW5mby1cXHUwMDNlYXBtWzZdLCBhcF9xY2lfaW5mby1cXHUwMDNlYXBtWzddKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzODctfVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xNzQ3PXN0YXRpYyBzc2l6ZV90IGZlYXR1cmVzX3Nob3coY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNoYXIgKmJ1ZilcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc1MC1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3NTE6XFx0aWYgKCFhcF9xY2lfaW5mby1cXHUwMDNlZmxhZ3MpXFx0LyogUUNJIG5vdCBzdXBwb3J0ZWQgKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NTItXFx0XFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwiLVxcXFxuXFxcIik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzUzLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTc1NDpcXHRpZiAoYXBfcWNpX2luZm8tXFx1MDAzZWFwc2MpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzU1LVxcdFxcdG4gKz0gc3lzZnNfZW1pdF9hdChidWYsIG4sIFxcXCJBUFNDIFxcXCIpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTc1NjpcXHRpZiAoYXBfcWNpX2luZm8tXFx1MDAzZWFweGEpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzU3LVxcdFxcdG4gKz0gc3lzZnNfZW1pdF9hdChidWYsIG4sIFxcXCJBUFhBIFxcXCIpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTc1ODpcXHRpZiAoYXBfcWNpX2luZm8tXFx1MDAzZXFhY3QpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzU5LVxcdFxcdG4gKz0gc3lzZnNfZW1pdF9hdChidWYsIG4sIFxcXCJRQUNUIFxcXCIpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTc2MDpcXHRpZiAoYXBfcWNpX2luZm8tXFx1MDAzZXJjOGEpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzYxLVxcdFxcdG4gKz0gc3lzZnNfZW1pdF9hdChidWYsIG4sIFxcXCJSQzhBIFxcXCIpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTc2MjpcXHRpZiAoYXBfcWNpX2luZm8tXFx1MDAzZWFwc2IpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzYzLVxcdFxcdG4gKz0gc3lzZnNfZW1pdF9hdChidWYsIG4sIFxcXCJBUFNCIFxcXCIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xOTIzPXN0YXRpYyBpbnQgX19kcnZfbm90aWZ5X2NvbmZpZ19jaGFuZ2VkKHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5MjgtXFx0XFx0aWYgKGFwX2Rydi1cXHUwMDNlb25fY29uZmlnX2NoYW5nZWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTI5OlxcdFxcdFxcdGFwX2Rydi1cXHUwMDNlb25fY29uZmlnX2NoYW5nZWQoYXBfcWNpX2luZm8sIGFwX3FjaV9pbmZvX29sZCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTMwLVxcdFxcdG1vZHVsZV9wdXQoZHJ2LVxcdTAwM2Vvd25lcik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTE5NDQ9c3RhdGljIGludCBfX2Rydl9ub3RpZnlfc2Nhbl9jb21wbGV0ZShzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2LCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTQ5LVxcdFxcdGlmIChhcF9kcnYtXFx1MDAzZW9uX3NjYW5fY29tcGxldGUpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTUwOlxcdFxcdFxcdGFwX2Rydi1cXHUwMDNlb25fc2Nhbl9jb21wbGV0ZShhcF9xY2lfaW5mbyxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE5NTE6XFx0XFx0XFx0XFx0XFx0XFx0IGFwX3FjaV9pbmZvX29sZCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTUyLVxcdFxcdG1vZHVsZV9wdXQoZHJ2LVxcdTAwM2Vvd25lcik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTIzMTE9c3RhdGljIGJvb2wgYXBfZ2V0X2NvbmZpZ3VyYXRpb24odm9pZClcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMTIte1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMxMzpcXHRpZiAoIWFwX3FjaV9pbmZvLVxcdTAwM2VmbGFncylcXHQvKiBRQ0kgbm90IHN1cHBvcnRlZCAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMxNC1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzE1LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMxNjpcXHRtZW1jcHkoYXBfcWNpX2luZm9fb2xkLCBhcF9xY2lfaW5mbywgc2l6ZW9mKCphcF9xY2lfaW5mbykpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMxNzpcXHRhcF9xY2koYXBfcWNpX2luZm8pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMxOC1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMTk6XFx0cmV0dXJuIG1lbWNtcChhcF9xY2lfaW5mbywgYXBfcWNpX2luZm9fb2xkLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMyMC1cXHRcXHQgICAgICBzaXplb2Yoc3RydWN0IGFwX2NvbmZpZ19pbmZvKSkgIT0gMDtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjMyOT1zdGF0aWMgYm9vbCBhcF9jb25maWdfaGFzX25ld19hcHModm9pZClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMzMy1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMzQ6XFx0aWYgKCFhcF9xY2lfaW5mby1cXHUwMDNlZmxhZ3MpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzM1LVxcdFxcdHJldHVybiBmYWxzZTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMzYtXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzM3OlxcdGJpdG1hcF9hbmRub3QobSwgKHVuc2lnbmVkIGxvbmcgKilhcF9xY2lfaW5mby1cXHUwMDNlYXBtLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMzODpcXHRcXHQgICAgICAodW5zaWduZWQgbG9uZyAqKWFwX3FjaV9pbmZvX29sZC1cXHUwMDNlYXBtLCBBUF9ERVZJQ0VTKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMzktXFx0aWYgKCFiaXRtYXBfZW1wdHkobSwgQVBfREVWSUNFUykpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTIzNTE9c3RhdGljIGJvb2wgYXBfY29uZmlnX2hhc19uZXdfZG9tcyh2b2lkKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzU0LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjM1NTpcXHRpZiAoIWFwX3FjaV9pbmZvLVxcdTAwM2VmbGFncylcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzNTYtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM1Ny1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzNTg6XFx0Yml0bWFwX2FuZG5vdChtLCAodW5zaWduZWQgbG9uZyAqKWFwX3FjaV9pbmZvLVxcdTAwM2VhcW0sXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzU5OlxcdFxcdCAgICAgICh1bnNpZ25lZCBsb25nICopYXBfcWNpX2luZm9fb2xkLVxcdTAwM2VhcW0sIEFQX0RPTUFJTlMpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM2MC1cXHRpZiAoIWJpdG1hcF9lbXB0eShtLCBBUF9ET01BSU5TKSlcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYz04Nj1zdGF0aWMgaW50IHZmaW9fYXBfbWF0cml4X2Rldl9jcmVhdGUodm9pZClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xMDYtXFx0aWYgKHRlc3RfZmFjaWxpdHkoMTIpKSB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjEwNzpcXHRcXHRyZXQgPSBhcF9xY2koXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZWluZm8pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xMDgtXFx0XFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTg6MjQuNzQ4MjEzNTE0WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5ODc4MDQwOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmVgIENhbGxiYWNrKipcblxuT2theSwgc28gdGhlcmUncyBubyBcIm1vY2sgZHJpdmVyXCIgaW52b2x2ZWQgaGVyZSwgdGhlIGBhcF9xY2lgIGluc3RydWN0aW9uIGlzIGV4ZWN1dGVkIGRpcmVjdGx5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpZiB0aGUgaHlwZXJ2aXNvciBkb2Vzbid0IHN1cHBvcnQgaXQgb3IgaWYgdGhlIGNvbmZpZ3VyYXRpb24gcmVtYWlucyB1bmNoYW5nZWQsIHRoZSByZWxhdGVkIGNvZGUgcGF0aCB3b24ndCBiZSB0cmlnZ2VyZWQuIFRoZSBjcml0aWNhbCBxdWVzdGlvbiBiZWNvbWVzLCBjYW4gc3l6a2FsbGVyIGV2ZW4gcnVuIG9uIGFuIHMzOTB4IFZNIHdpdGggQVAgY2FyZHMgcHJvcGVybHkgY29uZmlndXJlZD9cblxuSSBrbm93IHN5emthbGxlciBoYXMgczM5MHggc3VwcG9ydCwgYnV0IHdoYXQgYWJvdXQgQVAgY2FyZHMgc3BlY2lmaWNhbGx5PyBMZXQncyByZS1leGFtaW5lIHRoZSBvcmlnaW5hbCBwcm9tcHQuLi4gaXQgbWVudGlvbnMgdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlLiBJdCBhbHNvIHNwZWNpZmljYWxseSBoaWdobGlnaHRzIFwiLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzXCIuIFRoaXMgaXMgYSBjbHVlLlxuXG5BaCwgYHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlYC4gVGhpcyBpcyB0cmlnZ2VyZWQgZHVyaW5nIGhvdC11bnBsdWcgZXZlbnRzIOKAkyBwYXJ0aWN1bGFybHkgd2hlbiBBUCBjb25maWd1cmF0aW9uIGNoYW5nZXMsIHNheSwgd2hlbiBhZGFwdGVycyBvciBkb21haW5zIGFyZSByZW1vdmVkLiBUaGlua2luZyBpdCB0aHJvdWdoLi4uIGB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZWAgaXMgY2FsbGVkIGZyb20gYHZmaW9fYXBfbWRldl9vbl9jZmdfcmVtb3ZlYCwgd2hpY2ggaXMgY2FsbGVkIHdoZW4gdGhlIEFQIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4gRG9lcyB0aGlzIGNhbGxiYWNrIGNvdW50IGFzIGEgdGVhcmRvd24gZnVuY3Rpb24/IFllcywgaXQncyBleHBsaWNpdGx5IGZvciBob3QtdW5wbHVnIHNjZW5hcmlvcywgd2hpY2ggY29uZmlybXMgdGhlIHJlbGV2YW5jZSB0byB0aGUgc3RhdGVkIGNvbnRleHQuXG5cbk5vdywgbGV0J3MganVzdCBtYWtlIHN1cmUsIGEgcXVpY2sgY2hlY2sgb2YgdGhlIGNvbW1lbnQgZm9yIGB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZWAgaXMgaW4gb3JkZXIgdG8gYmUgY29tcGxldGVseSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjUzMSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxODozMC43MzYwMTk5MzJaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1MzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNTg1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNTg1OlxcdC8qKlxcbjI1ODY6XFx0ICogdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUgLSBkZXRlcm1pbmVzIHdoaWNoIGd1ZXN0cyBhcmUgdXNpbmcgdGhlIGFkYXB0ZXJzLFxcbjI1ODc6XFx0ICpcXHRcXHRcXHQgICAgIGRvbWFpbnMgYW5kIGNvbnRyb2wgZG9tYWlucyB0aGF0IGhhdmUgYmVlbiByZW1vdmVkXFxuMjU4ODpcXHQgKlxcdFxcdFxcdCAgICAgZnJvbSB0aGUgaG9zdCBBUCBjb25maWd1cmF0aW9uIGFuZCB1bnBsdWdzIHRoZW1cXG4yNTg5OlxcdCAqXFx0XFx0XFx0ICAgICBmcm9tIHRob3NlIGd1ZXN0cy5cXG4yNTkwOlxcdCAqXFxuMjU5MTpcXHQgKiBAYXBfcmVtb3ZlOlxcdGJpdG1hcCBzcGVjaWZ5aW5nIHdoaWNoIGFkYXB0ZXJzIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIGhvc3RcXG4yNTkyOlxcdCAqXFx0XFx0Y29uZmlnLlxcbjI1OTM6XFx0ICogQGFxX3JlbW92ZTpcXHRiaXRtYXAgc3BlY2lmeWluZyB3aGljaCBkb21haW5zIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIGhvc3RcXG4yNTk0OlxcdCAqXFx0XFx0Y29uZmlnLlxcbjI1OTU6XFx0ICogQGNkX3JlbW92ZTpcXHRiaXRtYXAgc3BlY2lmeWluZyB3aGljaCBjb250cm9sIGRvbWFpbnMgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbVxcbjI1OTY6XFx0ICpcXHRcXHR0aGUgaG9zdCBjb25maWcuXFxuMjU5NzpcXHQgKi9cXG4yNTk4OlxcdHN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9jZmdfcmVtb3ZlKHVuc2lnbmVkIGxvbmcgKmFwX3JlbW92ZSxcXG4yNTk5OlxcdFxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nICphcV9yZW1vdmUsXFxuMjYwMDpcXHRcXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgbG9uZyAqY2RfcmVtb3ZlKVxcbjI2MDE6XFx0e1xcbjI2MDI6XFx0XFx0c3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldjtcXG4yNjAzOlxcdFxcdERFQ0xBUkVfQklUTUFQKGFwcmVtLCBBUF9ERVZJQ0VTKTtcXG4yNjA0OlxcdFxcdERFQ0xBUkVfQklUTUFQKGFxcmVtLCBBUF9ET01BSU5TKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjM6MTg6MzAuNzM2MTU2ODYyWiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg3OTI2MTE0MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIERlY2lzaW9uOiBObyoqXG5cbk9rYXksIGhlcmUncyB0aGUgYnJlYWtkb3duIG9mIG15IHRoaW5raW5nLiBUaGUgY29kZSBpbiBxdWVzdGlvbiBjbGVhcmx5IHRhcmdldHMgaG90LXVucGx1ZyBzY2VuYXJpb3MsIHNwZWNpZmljYWxseSByZWdhcmRpbmcgQVAgY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBpbnN0cnVjdHMgbWUgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIGxpa2UgYC5yZW1vdmVgIG9yIGAuc2h1dGRvd25gIHRoYXQgYXJlICpvbmx5KiBleGVjdXRlZCBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLiBUaGlzIHBhdGNoIGZhbGxzIHNxdWFyZWx5IGludG8gdGhhdCBjYXRlZ29yeSwgZGVhbGluZyB3aXRoIHRoZSByZW1vdmFsIG9mIGd1ZXN0cyB1c2luZyBjZXJ0YWluIGFkYXB0ZXJzLCBkb21haW5zLCBhbmQgY29udHJvbCBkb21haW5zIGFmdGVyIHRoZSBob3N0IEFQIGNvbmZpZ3VyYXRpb24gaXMgY2hhbmdlZC5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSB0cmFjZWQgdGhlIGNhbGwgY2hhaW4uIGB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZWAgaXMgdHJpZ2dlcmVkIHRocm91Z2ggYHZmaW9fYXBfbWRldl9vbl9jZmdfcmVtb3ZlYCwgd2hpY2ggaW4gdHVybiBpcyBjYWxsZWQgYnkgYHZmaW9fYXBfb25fY2ZnX2NoYW5nZWRgLiBUaGlzIGZ1bmN0aW9uIGlzIGluaXRpYXRlZCBieSBgX19kcnZfbm90aWZ5X2NvbmZpZ19jaGFuZ2VkYCwgd2hpY2ggaXMgZGlyZWN0bHkgbGlua2VkIHRvIEFQIGJ1cyBjb25maWd1cmF0aW9uIGNoYW5nZXMsIGkuZS4sIGhvdHBsdWcvaG90dW5wbHVnIGV2ZW50cy4gIFRoZXJlJ3Mgbm8gd2F5IGFyb3VuZCBpdDsgdGhpcyBpcyBhIHB1cmUgaG90LXVucGx1ZyBldmVudCBoYW5kbGVyLiBNeSByZWFkaW5nIG9mIHRoZSBpbnN0cnVjdGlvbnMgaXMgY2xlYXIsIHNvIHRoaXMgaXMgbm90IHdvcnRoIGZ1enppbmcuXG5cbkkgcXVpY2tseSByZXZpZXdlZCB0aGUgcGF0Y2ggaXRzZWxmLCBhbmQgaXQgbW9kaWZpZXMgdGhlIGZ1bmN0aW9uIGB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZWAsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBhIGBiaXRtYXBfYW5kbm90YCBvcGVyYXRpb24gdG8gYGJpdG1hcF9hbmRgLiBUaGF0J3MgYSBidWcgZml4IHdpdGhpbiB0aGlzIGhvdC11bnBsdWcgcGF0aC4gVGhlIGZhY3QgdGhhdCBpdCByZWxhdGVzIHRvIHMzOTAgQVAgY3J5cHRvLCBhbmQgdGhhdCBpdCByZXF1aXJlcyBoeXBlcnZpc29yIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyB0byBldmVuIGJlIHRyaWdnZXJlZCwgZnVydGhlciByZWluZm9yY2VzIHRoZSBcImhvdC11bnBsdWdcIiBleGNlcHRpb24uXG5cblRoZXJlZm9yZSwgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzU2NCwiT3V0cHV0VG9rZW5zIjoxMDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxODozOS41Mjg3NzIzNzRaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzUzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhIGhvdC11bnBsdWcgY2FsbGJhY2sgKGB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZWApIGluIHRoZSBzMzkwIFZGSU8gQVAgY3J5cHRvIGRyaXZlciwgd2hpY2ggaXMgZXhlY3V0ZWQgb25seSB3aGVuIEFQIGFkYXB0ZXJzIG9yIGRvbWFpbnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgaG9zdCBBUCBjb25maWd1cmF0aW9uLiBBY2NvcmRpbmcgdG8gdGhlIGluc3RydWN0aW9ucywgdGVhcmRvd24gY2FsbGJhY2tzIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIGhvdC11bnBsdWcgb3BlcmF0aW9ucyBhcmUgbm90IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhIGhvdC11bnBsdWcgY2FsbGJhY2sgKGB2ZmlvX2FwX21kZXZfY2ZnX3JlbW92ZWApIGluIHRoZSBzMzkwIFZGSU8gQVAgY3J5cHRvIGRyaXZlciwgd2hpY2ggaXMgZXhlY3V0ZWQgb25seSB3aGVuIEFQIGFkYXB0ZXJzIG9yIGRvbWFpbnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgaG9zdCBBUCBjb25maWd1cmF0aW9uLiBBY2NvcmRpbmcgdG8gdGhlIGluc3RydWN0aW9ucywgdGVhcmRvd24gY2FsbGJhY2tzIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIGhvdC11bnBsdWcgb3BlcmF0aW9ucyBhcmUgbm90IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMzoxODozOS41Mjg4MTM4NDRaIiwiU2VxIjo0NywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvpssq[1] Phase: Running StartedAt: 2026-08-07 23:18:51 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvpssq[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-07 23:18:51 +0000 UTC FinishedAt: 2026-08-07 23:18:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}