Name: series-workflowtfkkn Phase: Failed StartedAt: 2026-09-03 09:50:01 +0000 UTC FinishedAt: 2026-09-03 10:32:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtfkkn[0] Phase: Succeeded StartedAt: 2026-09-03 09:50:01 +0000 UTC FinishedAt: 2026-09-03 10:32:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtfkkn[0].run-triage Phase: Succeeded StartedAt: 2026-09-03 09:50:01 +0000 UTC FinishedAt: 2026-09-03 10:32:05 +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+CgkJCTx0ZD4yMDI2LzA5LzAzIDEwOjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgYW5kIGNsZWFudXAgbG9naWMgKGlzbV9hbGxvY19kbWIgYW5kIGlzbV9mcmVlX2RtYikgaW4gZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMuIFRoZSBJU00gZHJpdmVyIGlzIHNwZWNpZmljIHRvIHRoZSBzMzkwIGFyY2hpdGVjdHVyZSBhbmQgcmVxdWlyZXMgSUJNIFogSW50ZXJuYWwgU2hhcmVkIE1lbW9yeSAoSVNNKSBQQ0kgaGFyZHdhcmUvZmlybXdhcmUsIHdoaWNoIGNhbm5vdCBiZSBlbXVsYXRlZCBvciByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxMDozMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGNlNjRjMDZkMTRkMzQyYTVhNjQ5ZTQ1ZmFkOGQ3MzlmYzA4Y2I0NzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAzIDEwOjMwOjU5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jIGIvZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmNcbmluZGV4IDI0MmRhMjBmMjdlMGUuLjAzNWIyMzNhYmI0ZTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmNcbkBAIC0yMzEsNiAmIzQzOzIzMSw3IEBAIHN0YXRpYyB2b2lkIGlzbV9mcmVlX2RtYihzdHJ1Y3QgaXNtX2RldiAqaXNtLCBzdHJ1Y3QgZGlic19kbWIgKmRtYilcbiBcdGRtYV91bm1hcF9wYWdlKFx1MDAyNmlzbS1cdTAwM2VwZGV2LVx1MDAzZWRldiwgZG1iLVx1MDAzZWRtYV9hZGRyLCBkbWItXHUwMDNlZG1iX2xlbixcbiBcdFx0ICAgICAgIERNQV9GUk9NX0RFVklDRSk7XG4gXHRmb2xpb19wdXQodmlydF90b19mb2xpbyhkbWItXHUwMDNlY3B1X2FkZHIpKTtcbiYjNDM7XHRkbWItXHUwMDNlY3B1X2FkZHIgPSBOVUxMO1xuIH1cbiBcbiBzdGF0aWMgaW50IGlzbV9hbGxvY19kbWIoc3RydWN0IGlzbV9kZXYgKmlzbSwgc3RydWN0IGRpYnNfZG1iICpkbWIpXG5AQCAtMjc0LDcgJiM0MzsyNzUsOCBAQCBzdGF0aWMgaW50IGlzbV9hbGxvY19kbWIoc3RydWN0IGlzbV9kZXYgKmlzbSwgc3RydWN0IGRpYnNfZG1iICpkbWIpXG4gXHRyZXR1cm4gMDtcbiBcbiBvdXRfZnJlZTpcbi1cdGtmcmVlKGRtYi1cdTAwM2VjcHVfYWRkcik7XG4mIzQzO1x0Zm9saW9fcHV0KGZvbGlvKTtcbiYjNDM7XHRkbWItXHUwMDNlY3B1X2FkZHIgPSBOVUxMO1xuIG91dF9iaXQ6XG4gXHRjbGVhcl9iaXQoZG1iLVx1MDAzZWlkeCwgaXNtLVx1MDAzZXNiYV9iaXRtYXApO1xuIFx0cmV0dXJuIHJjO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDEwOjMxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGFuZCBjbGVhbnVwIGxvZ2ljIChpc21fYWxsb2NfZG1iIGFuZCBpc21fZnJlZV9kbWIpIGluIGRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLiBUaGUgSVNNIGRyaXZlciBpcyBzcGVjaWZpYyB0byB0aGUgczM5MCBhcmNoaXRlY3R1cmUgYW5kIHJlcXVpcmVzIElCTSBaIEludGVybmFsIFNoYXJlZCBNZW1vcnkgKElTTSkgUENJIGhhcmR3YXJlL2Zpcm13YXJlLCB3aGljaCBjYW5ub3QgYmUgZW11bGF0ZWQgb3IgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjZTY0YzA2ZDE0ZDM0MmE1YTY0OWU0NWZhZDhkNzM5ZmMwOGNiNDc3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMyAxMDozMDo1OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jIGIvZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMKaW5kZXggMjQyZGEyMGYyN2UwZS4uMDM1YjIzM2FiYjRlOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMKQEAgLTIzMSw2ICYjNDM7MjMxLDcgQEAgc3RhdGljIHZvaWQgaXNtX2ZyZWVfZG1iKHN0cnVjdCBpc21fZGV2ICppc20sIHN0cnVjdCBkaWJzX2RtYiAqZG1iKQogCWRtYV91bm1hcF9wYWdlKCZhbXA7aXNtLSZndDtwZGV2LSZndDtkZXYsIGRtYi0mZ3Q7ZG1hX2FkZHIsIGRtYi0mZ3Q7ZG1iX2xlbiwKIAkJICAgICAgIERNQV9GUk9NX0RFVklDRSk7CiAJZm9saW9fcHV0KHZpcnRfdG9fZm9saW8oZG1iLSZndDtjcHVfYWRkcikpOwomIzQzOwlkbWItJmd0O2NwdV9hZGRyID0gTlVMTDsKIH0KIAogc3RhdGljIGludCBpc21fYWxsb2NfZG1iKHN0cnVjdCBpc21fZGV2ICppc20sIHN0cnVjdCBkaWJzX2RtYiAqZG1iKQpAQCAtMjc0LDcgJiM0MzsyNzUsOCBAQCBzdGF0aWMgaW50IGlzbV9hbGxvY19kbWIoc3RydWN0IGlzbV9kZXYgKmlzbSwgc3RydWN0IGRpYnNfZG1iICpkbWIpCiAJcmV0dXJuIDA7CiAKIG91dF9mcmVlOgotCWtmcmVlKGRtYi0mZ3Q7Y3B1X2FkZHIpOwomIzQzOwlmb2xpb19wdXQoZm9saW8pOwomIzQzOwlkbWItJmd0O2NwdV9hZGRyID0gTlVMTDsKIG91dF9iaXQ6CiAJY2xlYXJfYml0KGRtYi0mZ3Q7aWR4LCBpc20tJmd0O3NiYV9iaXRtYXApOwogCXJldHVybiByYzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTA6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI0NwoJCQkJCQkJb3V0cHV0OiA2OQoJCQkJCQkJdGhvdWdodHM6IDI5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpcyAtIHMzOTAgSVNNIERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEZpcnN0IHRoaW5ncyBmaXJzdCwgaXQmIzM5O3MgaGl0dGluZyBgZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmNgLiBSaWdodCwgc28gdGhpcyBpcyB0aGUgczM5MCBJbnRlZ3JhdGVkIFNoYXJlZCBNZW1vcnkgKElTTSkgZGV2aWNlIGRyaXZlci4gTm93LCBhIGNyaXRpY2FsIHF1ZXN0aW9uIGFyaXNlczogaXMgdGhpcyBzb21ldGhpbmcgdGhhdCBpbmhlcmVudGx5IHJlcXVpcmVzIHBoeXNpY2FsIHMzOTAgaGFyZHdhcmUg4oCTIHRoaW5rIElCTSB6L0FyY2hpdGVjdHVyZSDigJMgb3IgY2FuIHdlIGFjdHVhbGx5IGdldCBhdCBpdCwgZWl0aGVyIHRocm91Z2ggZW11bGF0aW9uIG9yIGEgc3RhbmRhcmQgZnV6emluZyBzZXR1cCBsaWtlIFFFTVUgb3IgZXZlbiBHQ0U/IEJlZm9yZSBJIGdvIGZ1cnRoZXIgZG93biB0aGF0IHJhYmJpdCBob2xlLCBob2xkIG9uLCBJIG5lZWQgdG8gcmVyZWFkIHRoZSBndWlkZWxpbmVzLiBJdCYjMzk7cyB0b28gZWFzeSB0byB3YXN0ZSB0aW1lIG9uIHNvbWV0aGluZyB0aGF0IGlzIG5vdCB3b3J0aCBmdXp6aW5nLgoKQWxyaWdodCwgbGV0JiMzOTtzIHJlZnJlc2g6IEkgbmVlZCB0byBmbGFnIGl0IGFzICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgaWYgaXQmIzM5O3Mgc29tZXRoaW5nIGZ1bmRhbWVudGFsbHkgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nLCBsaWtlIHRob3NlIFBDSWUgc3dpdGNoIGRyaXZlcnMgb3IsIHNwZWNpZmljYWxseSwgZHJpdmVyIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHJlbW92ZSwgc2h1dGRvd24gb3IgdW5yZWdpc3RlcmluZy4gT2theSwgdGhhdCYjMzk7cyBjbGVhci4KClNvLCBiYWNrIHRvIGBpc21fZHJ2LmNgLiBNeSBuZXh0IHN0ZXAgaXMgdG8gY2FyZWZ1bGx5IGNoZWNrIGl0cyBzb3VyY2UgY29kZSBhbmQgS2NvbmZpZy9hcmNoaXRlY3R1cmUgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoYXQgaXQmIzM5O3MgZG9pbmcgYW5kLCBjcnVjaWFsbHksIHdoYXQgaGFyZHdhcmUgY29udGV4dCBpdCByZWxpZXMgdXBvbi4gVGhhdCBLY29uZmlnIHN0dWZmIGlzIGdvaW5nIHRvIGJlIG15IGJlc3QgZnJpZW5kIGhlcmUuIElmIGl0IHNjcmVhbXMgJiMzNDtzMzkwIG9ubHksJiMzNDsgdGhlbiB3ZeKAmXJlIHByb2JhYmx5IGRlYWQgaW4gdGhlIHdhdGVyLCBidXQgbWF5YmUgd2UgY2FuIGdldCBsdWNreS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJU00mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvbmV0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9uZXQvS2NvbmZpZz03OD1jb25maWcgQ0NXR1JPVVBcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWctODEtXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWc6ODI6Y29uZmlnIElTTVxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnOjgzOlx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBmb3IgSVNNIHZQQ0kgQWRhcHRlclwmIzM0O1xuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnLTg0LVx0ZGVwZW5kcyBvbiBQQ0kgXHUwMDI2XHUwMDI2IERJQlNcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L01ha2VmaWxlPTE5PWlzbS15IDo9IGlzbV9kcnYub1xuZHJpdmVycy9zMzkwL25ldC9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfSVNNKSAmIzQzOz0gaXNtLm9cbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTEtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MjojaWZuZGVmIFMzOTBfSVNNX0hcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MzojZGVmaW5lIFMzOTBfSVNNX0hcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtNC1cbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTExLSNkZWZpbmUgVVRJTF9TVFJfTEVOXHQxNlxuZHJpdmVycy9zMzkwL25ldC9pc20uaDoxMjojZGVmaW5lIElTTV9FUlJPUlx0MHhGRkZGXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTEzLVxuZHJpdmVycy9zMzkwL25ldC9pc20uaDoxNDojZGVmaW5lIElTTV9OUl9ETUJTXHQxOTIwXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTE1LVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMTgtICovXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjE5OiNkZWZpbmUgSVNNX0RNQl9XT1JEX09GRlNFVFx0MVxuZHJpdmVycy9zMzkwL25ldC9pc20uaDoyMDojZGVmaW5lIElTTV9ETUJfQklUX09GRlNFVFx0KElTTV9ETUJfV09SRF9PRkZTRVQgKiAzMilcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjEtXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjIyOiNkZWZpbmUgSVNNX1JFR19TQkFcdDB4MVxuZHJpdmVycy9zMzkwL25ldC9pc20uaDoyMzojZGVmaW5lIElTTV9SRUdfSUVRXHQweDJcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MjQ6I2RlZmluZSBJU01fUkVBRF9HSURcdDB4M1xuZHJpdmVycy9zMzkwL25ldC9pc20uaDoyNTojZGVmaW5lIElTTV9BRERfVkxBTl9JRFx0MHg0XG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjI2OiNkZWZpbmUgSVNNX0RFTF9WTEFOX0lEXHQweDVcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6Mjc6I2RlZmluZSBJU01fU0VUX1ZMQU5cdDB4NlxuZHJpdmVycy9zMzkwL25ldC9pc20uaDoyODojZGVmaW5lIElTTV9SRVNFVF9WTEFOXHQweDdcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6Mjk6I2RlZmluZSBJU01fUVVFUllfSU5GT1x0MHg4XG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjMwOiNkZWZpbmUgSVNNX1FVRVJZX1JHSURcdDB4OVxuZHJpdmVycy9zMzkwL25ldC9pc20uaDozMTojZGVmaW5lIElTTV9SRUdfRE1CXHQweEFcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MzI6I2RlZmluZSBJU01fVU5SRUdfRE1CXHQweEJcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MzM6I2RlZmluZSBJU01fU0lHTkFMX0lFUVx0MHhFXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjM0OiNkZWZpbmUgSVNNX1VOUkVHX1NCQVx0MHgxMVxuZHJpdmVycy9zMzkwL25ldC9pc20uaDozNTojZGVmaW5lIElTTV9VTlJFR19JRVFcdDB4MTJcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMzYtXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oPTM3PWVudW0gaXNtX2V2ZW50X3R5cGUge1xuZHJpdmVycy9zMzkwL25ldC9pc20uaDozODpcdElTTV9FVkVOVF9CVUYgPSAweDAwLFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDozOTpcdElTTV9FVkVOVF9ERVYgPSAweDAxLFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDo0MDpcdElTTV9FVkVOVF9TV1IgPSAweDAyXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTQxLX07XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc20uaD00Mz1lbnVtIGlzbV9ldmVudF9jb2RlIHtcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6NDQ6XHRJU01fQlVGX0RNQl9VTlJFR0lTVEVSRUQgPSAweDA0LFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDo0NTpcdElTTV9CVUZfVVNJTkdfSVNNX0RFVl9ESVNBQkxFRCA9IDB4MDgsXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjQ2Olx0SVNNX0JVRl9PV05JTkdfSVNNX0RFVl9JTl9FUlJfU1RBVEUgPSAweDAyLFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDo0NzpcdElTTV9CVUZfVVNJTkdfSVNNX0RFVl9JTl9FUlJfU1RBVEUgPSAweDAzLFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDo0ODpcdElTTV9CVUZfVkxBTl9NSVNNQVRDSF9XSVRIX09XTkVSID0gMHgwNSxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6NDk6XHRJU01fQlVGX1ZMQU5fTUlTTUFUQ0hfV0lUSF9VU0VSID0gMHgwNixcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6NTA6XHRJU01fREVWX0dJRF9ESVNBQkxFRCA9IDB4MDcsXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjUxOlx0SVNNX0RFVl9HSURfRVJSX1NUQVRFID0gMHgwMVxuZHJpdmVycy9zMzkwL25ldC9pc20uaC01Mi19O1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg9NzY9dW5pb24gaXNtX3JlZ19pZXEge1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtODYtXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjg3Oi8qIElTTS12UENJIGRldmljZXMgcHJvdmlkZSA2NCBCaXQgR0lEc1xuZHJpdmVycy9zMzkwL25ldC9pc20uaDo4ODogKiBNYXAgdGhlbSB0byBJU00gVVVJRCBHSURzIGxpa2UgdGhpczpcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtODktICogIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjkwOiAqIHwgNjQgQml0IElTTS12UENJIEdJRCB8IDAwMDAwMDAwXzAwMDAwMDAwIHxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtOTEtICogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc20uaD0yMTg9c3RydWN0IGlzbV9zYmEge1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjIxLVx0dTMyIDogMzA7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjIyMjpcdHUzMiBkbWJfYml0c1tJU01fTlJfRE1CUyAvIDMyXTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjIzLVx0dTMyIHJlc2VydmVkWzNdO1xuZHJpdmVycy9zMzkwL25ldC9pc20uaDoyMjQ6XHR1MTYgZG1iZV9tYXNrW0lTTV9OUl9ETUJTXTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjI1LX07XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc20uaD0yMjc9c3RydWN0IGlzbV9kZXYge1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjMyLVx0ZG1hX2FkZHJfdCBzYmFfZG1hX2FkZHI7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjIzMzpcdERFQ0xBUkVfQklUTUFQKHNiYV9iaXRtYXAsIElTTV9OUl9ETUJTKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjM0LVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjM5LVxuZHJpdmVycy9zMzkwL25ldC9pc20uaDoyNDA6I2RlZmluZSBJU01fQ1JFQVRFX1JFUShkbWIsIGlkeCwgc2YsIG9mZnNldClcdFx0XFxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjQxLVx0KChkbWIpIHwgKGlkeCkgXHUwMDNjXHUwMDNjIDI0IHwgKHNmKSBcdTAwM2NcdTAwM2MgMjMgfCAob2Zmc2V0KSlcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oPTI2Nz1zdGF0aWMgaW5saW5lIGludCBfX2lzbV9tb3ZlKHN0cnVjdCBpc21fZGV2ICppc20sIHU2NCBkbWJfcmVxLCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjc1LVxuZHJpdmVycy9zMzkwL25ldC9pc20uaDoyNzY6I2VuZGlmIC8qIFMzOTBfSVNNX0ggKi9cbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yLS8qXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzozOiAqIElTTSBkcml2ZXIgZm9yIHMzOTAuXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00LSAqXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMTktXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoyMDpNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7SVNNIGRyaXZlciBmb3IgczM5MFwmIzM0Oyk7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yMS1NT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTI1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBpc21fZGV2aWNlX3RhYmxlW10gPSB7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoyNjpcdHsgUENJX1ZERVZJQ0UoSUJNLCBQQ0lfREVWSUNFX0lEX0lCTV9JU00pIH0sXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yNy1cdHsgfVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTMzPXN0YXRpYyBpbnQgaXNtX2NtZChzdHJ1Y3QgaXNtX2RldiAqaXNtLCB2b2lkICpjbWQpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNDEtXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo0MjpcdFdSSVRFX09OQ0UocmVzcC1cdTAwM2VyZXQsIElTTV9FUlJPUik7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00My1cbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz02Nz1zdGF0aWMgaW50IHF1ZXJ5X2luZm8oc3RydWN0IGlzbV9kZXYgKmlzbSlcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy03MS1cdG1lbXNldChcdTAwMjZjbWQsIDAsIHNpemVvZihjbWQpKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjcyOlx0Y21kLnJlcXVlc3QuaGRyLmNtZCA9IElTTV9RVUVSWV9JTkZPO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNzMtXHRjbWQucmVxdWVzdC5oZHIubGVuID0gc2l6ZW9mKGNtZC5yZXF1ZXN0KTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz04ND1zdGF0aWMgaW50IHJlZ2lzdGVyX3NiYShzdHJ1Y3QgaXNtX2RldiAqaXNtKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTk1LVx0bWVtc2V0KFx1MDAyNmNtZCwgMCwgc2l6ZW9mKGNtZCkpO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6OTY6XHRjbWQucmVxdWVzdC5oZHIuY21kID0gSVNNX1JFR19TQkE7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy05Ny1cdGNtZC5yZXF1ZXN0Lmhkci5sZW4gPSBzaXplb2YoY21kLnJlcXVlc3QpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTExMT1zdGF0aWMgaW50IHJlZ2lzdGVyX2llcShzdHJ1Y3QgaXNtX2RldiAqaXNtKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTEyMi1cdG1lbXNldChcdTAwMjZjbWQsIDAsIHNpemVvZihjbWQpKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjEyMzpcdGNtZC5yZXF1ZXN0Lmhkci5jbWQgPSBJU01fUkVHX0lFUTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTEyNC1cdGNtZC5yZXF1ZXN0Lmhkci5sZW4gPSBzaXplb2YoY21kLnJlcXVlc3QpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTE0MD1zdGF0aWMgaW50IHVucmVnaXN0ZXJfc2JhKHN0cnVjdCBpc21fZGV2ICppc20pXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMTQ2LVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MTQ3Olx0cmV0ID0gaXNtX2NtZF9zaW1wbGUoaXNtLCBJU01fVU5SRUdfU0JBKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjE0ODpcdGlmIChyZXQgXHUwMDI2XHUwMDI2IHJldCAhPSBJU01fRVJST1IpXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0xNDktXHRcdHJldHVybiAtRUlPO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTE2Mz1zdGF0aWMgaW50IHVucmVnaXN0ZXJfaWVxKHN0cnVjdCBpc21fZGV2ICppc20pXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMTY5LVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MTcwOlx0cmV0ID0gaXNtX2NtZF9zaW1wbGUoaXNtLCBJU01fVU5SRUdfSUVRKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjE3MTpcdGlmIChyZXQgXHUwMDI2XHUwMDI2IHJldCAhPSBJU01fRVJST1IpXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0xNzItXHRcdHJldHVybiAtRUlPO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTE4Nj1zdGF0aWMgaW50IGlzbV9yZWFkX2xvY2FsX2dpZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMTkyLVx0bWVtc2V0KFx1MDAyNmNtZCwgMCwgc2l6ZW9mKGNtZCkpO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MTkzOlx0Y21kLnJlcXVlc3QuaGRyLmNtZCA9IElTTV9SRUFEX0dJRDtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTE5NC1cdGNtZC5yZXF1ZXN0Lmhkci5sZW4gPSBzaXplb2YoY21kLnJlcXVlc3QpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTIwNj1zdGF0aWMgaW50IGlzbV9xdWVyeV9yZ2lkKHN0cnVjdCBkaWJzX2RldiAqZGlicywgY29uc3QgdXVpZF90ICpyZ2lkLFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTIxMi1cdG1lbXNldChcdTAwMjZjbWQsIDAsIHNpemVvZihjbWQpKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjIxMzpcdGNtZC5yZXF1ZXN0Lmhkci5jbWQgPSBJU01fUVVFUllfUkdJRDtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTIxNC1cdGNtZC5yZXF1ZXN0Lmhkci5sZW4gPSBzaXplb2YoY21kLnJlcXVlc3QpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTIyMz1zdGF0aWMgaW50IGlzbV9tYXhfZG1icyh2b2lkKVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjI0LXtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjIyNTpcdHJldHVybiBJU01fTlJfRE1CUztcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTIyNi19XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MjM3PXN0YXRpYyBpbnQgaXNtX2FsbG9jX2RtYihzdHJ1Y3QgaXNtX2RldiAqaXNtLCBzdHJ1Y3QgZGlic19kbWIgKmRtYilcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yNDYtXHRpZiAoIWRtYi1cdTAwM2VpZHgpIHtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjI0NzpcdFx0Yml0ID0gZmluZF9uZXh0X3plcm9fYml0KGlzbS1cdTAwM2VzYmFfYml0bWFwLCBJU01fTlJfRE1CUyxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjI0ODpcdFx0XHRcdFx0IElTTV9ETUJfQklUX09GRlNFVCk7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoyNDk6XHRcdGlmIChiaXQgPT0gSVNNX05SX0RNQlMpXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yNTAtXHRcdFx0cmV0dXJuIC1FTk9TUEM7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjUzLVx0fVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MjU0Olx0aWYgKGRtYi1cdTAwM2VpZHggXHUwMDNjIElTTV9ETUJfQklUX09GRlNFVCB8fFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjU1LVx0ICAgIHRlc3RfYW5kX3NldF9iaXQoZG1iLVx1MDAzZWlkeCwgaXNtLVx1MDAzZXNiYV9iaXRtYXApKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTI4NT1zdGF0aWMgaW50IGlzbV9yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYixcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yOTctXHRtZW1zZXQoXHUwMDI2Y21kLCAwLCBzaXplb2YoY21kKSk7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoyOTg6XHRjbWQucmVxdWVzdC5oZHIuY21kID0gSVNNX1JFR19ETUI7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yOTktXHRjbWQucmVxdWVzdC5oZHIubGVuID0gc2l6ZW9mKGNtZC5yZXF1ZXN0KTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zMTQtXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjMxNTpcdGRpYnMtXHUwMDNlZG1iX2NsaWVudGlkX2FycltkbWItXHUwMDNlaWR4IC0gSVNNX0RNQl9CSVRfT0ZGU0VUXSA9IGNsaWVudC1cdTAwM2VpZDtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTMxNi1cdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MzIxPXN0YXRpYyBpbnQgaXNtX3VucmVnaXN0ZXJfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgc3RydWN0IGRpYnNfZG1iICpkbWIpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzI4LVx0bWVtc2V0KFx1MDAyNmNtZCwgMCwgc2l6ZW9mKGNtZCkpO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MzI5Olx0Y21kLnJlcXVlc3QuaGRyLmNtZCA9IElTTV9VTlJFR19ETUI7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zMzAtXHRjbWQucmVxdWVzdC5oZHIubGVuID0gc2l6ZW9mKGNtZC5yZXF1ZXN0KTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zMzQtXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjMzNTpcdGRpYnMtXHUwMDNlZG1iX2NsaWVudGlkX2FycltkbWItXHUwMDNlaWR4IC0gSVNNX0RNQl9CSVRfT0ZGU0VUXSA9IE5PX0RJQlNfQ0xJRU5UO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzM2LVx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zMzgtXHRyZXQgPSBpc21fY21kKGlzbSwgXHUwMDI2Y21kKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjMzOTpcdGlmIChyZXQgXHUwMDI2XHUwMDI2IHJldCAhPSBJU01fRVJST1IpXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zNDAtXHRcdGdvdG8gb3V0O1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTM0Nz1zdGF0aWMgaW50IGlzbV9hZGRfdmxhbl9pZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHU2NCB2bGFuX2lkKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTM1Mi1cdG1lbXNldChcdTAwMjZjbWQsIDAsIHNpemVvZihjbWQpKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjM1MzpcdGNtZC5yZXF1ZXN0Lmhkci5jbWQgPSBJU01fQUREX1ZMQU5fSUQ7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zNTQtXHRjbWQucmVxdWVzdC5oZHIubGVuID0gc2l6ZW9mKGNtZC5yZXF1ZXN0KTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz0zNjE9c3RhdGljIGludCBpc21fZGVsX3ZsYW5faWQoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgdmxhbl9pZClcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zNjYtXHRtZW1zZXQoXHUwMDI2Y21kLCAwLCBzaXplb2YoY21kKSk7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzozNjc6XHRjbWQucmVxdWVzdC5oZHIuY21kID0gSVNNX0RFTF9WTEFOX0lEO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzY4LVx0Y21kLnJlcXVlc3QuaGRyLmxlbiA9IHNpemVvZihjbWQucmVxdWVzdCk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9Mzc1PXN0YXRpYyBpbnQgaXNtX3NpZ25hbF9pZXEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBjb25zdCB1dWlkX3QgKnJnaWQsXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzgxLVx0bWVtc2V0KFx1MDAyNmNtZCwgMCwgc2l6ZW9mKGNtZCkpO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MzgyOlx0Y21kLnJlcXVlc3QuaGRyLmNtZCA9IElTTV9TSUdOQUxfSUVRO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzgzLVx0Y21kLnJlcXVlc3QuaGRyLmxlbiA9IHNpemVvZihjbWQucmVxdWVzdCk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9Mzk5PXN0YXRpYyBpbnQgaXNtX21vdmUoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvaywgdW5zaWduZWQgaW50IGlkeCxcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00MDktXHRcdGJ5dGVzID0gbWF4X2J5dGVzKG9mZnNldCwgc2l6ZSwgUEFHRV9TSVpFKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjQxMDpcdFx0ZG1iX3JlcSA9IElTTV9DUkVBVEVfUkVRKGRtYl90b2ssIGlkeCwgc2l6ZSA9PSBieXRlcyA/IHNmIDogMCxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQxMS1cdFx0XHRcdFx0IG9mZnNldCk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9NDM1PXN0YXRpYyBpbnQgaXNtX21hdGNoX2V2ZW50X3R5cGUodTMyIHMzOTBfZXZlbnRfdHlwZSlcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00MzctXHRzd2l0Y2ggKHMzOTBfZXZlbnRfdHlwZSkge1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NDM4Olx0Y2FzZSBJU01fRVZFTlRfQlVGOlxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNDM5LVx0XHRyZXR1cm4gRElCU19CVUZfRVZFTlQ7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo0NDA6XHRjYXNlIElTTV9FVkVOVF9ERVY6XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00NDEtXHRcdHJldHVybiBESUJTX0RFVl9FVkVOVDtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjQ0MjpcdGNhc2UgSVNNX0VWRU5UX1NXUjpcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQ0My1cdFx0cmV0dXJuIERJQlNfU1dfRVZFTlQ7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9NDQ5PXN0YXRpYyBpbnQgaXNtX21hdGNoX2V2ZW50X3N1YnR5cGUodTMyIHMzOTBfZXZlbnRfc3VidHlwZSlcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00NTEtXHRzd2l0Y2ggKHMzOTBfZXZlbnRfc3VidHlwZSkge1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NDUyOlx0Y2FzZSBJU01fQlVGX0RNQl9VTlJFR0lTVEVSRUQ6XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00NTMtXHRcdHJldHVybiBESUJTX0JVRl9VTlJFR0lTVEVSRUQ7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo0NTQ6XHRjYXNlIElTTV9ERVZfR0lEX0RJU0FCTEVEOlxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNDU1LVx0XHRyZXR1cm4gRElCU19ERVZfRElTQUJMRUQ7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo0NTY6XHRjYXNlIElTTV9ERVZfR0lEX0VSUl9TVEFURTpcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQ1Ny1cdFx0cmV0dXJuIERJQlNfREVWX0VSUl9TVEFURTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz01MDE9c3RhdGljIGlycXJldHVybl90IGlzbV9oYW5kbGVfaXJxKGludCBpcnEsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNTExLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NTEyOlx0YnYgPSAodm9pZCAqKSBcdTAwMjZpc20tXHUwMDNlc2JhLVx1MDAzZWRtYl9iaXRzW0lTTV9ETUJfV09SRF9PRkZTRVRdO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NTEzOlx0ZW5kID0gc2l6ZW9mKGlzbS1cdTAwM2VzYmEtXHUwMDNlZG1iX2JpdHMpICogQklUU19QRVJfQllURSAtIElTTV9ETUJfQklUX09GRlNFVDtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTUxNC1cbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy01MjMtXHRcdGNsZWFyX2JpdF9pbnYoYml0LCBidik7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo1MjQ6XHRcdGRtYmVtYXNrID0gaXNtLVx1MDAzZXNiYS1cdTAwM2VkbWJlX21hc2tbYml0ICYjNDM7IElTTV9ETUJfQklUX09GRlNFVF07XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo1MjU6XHRcdGlzbS1cdTAwM2VzYmEtXHUwMDNlZG1iZV9tYXNrW2JpdCAmIzQzOyBJU01fRE1CX0JJVF9PRkZTRVRdID0gMDtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTUyNi1cdFx0YmFycmllcigpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTUzMS1cdFx0ZGlicy1cdTAwM2VzdWJzW2NsaWVudF9pZF0tXHUwMDNlb3BzLVx1MDAzZWhhbmRsZV9pcnEoZGlicyxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjUzMjpcdFx0XHRcdFx0XHQgICAgICAgYml0ICYjNDM7IElTTV9ETUJfQklUX09GRlNFVCxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTUzMy1cdFx0XHRcdFx0XHQgICAgICAgZG1iZW1hc2spO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5jPTE0Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGlwYV9yY19tc2cgcWV0aF9pcGFfcmNfZGVmX21zZ1tdID0ge1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5jLTE0OS1cdHtJUEFfUkNfSURfTk9UX0ZPVU5ELFx0XHRcJiMzNDtJZGVudGlmaWVyIG5vdCBmb3VuZFwmIzM0O30sXG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfY29yZV9tcGMuYzoxNTA6XHR7SVBBX1JDX0xBTl9GUkFNRV9NSVNNQVRDSCxcdFwmIzM0O0xBTiBhbmQgZnJhbWUgbWlzbWF0Y2hcJiMzNDt9LFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmMtMTUxLVx0e0lQQV9SQ19MMl9VTlNVUFBPUlRFRF9DTUQsXHRcJiMzNDtVbnN1cHBvcnRlZCBsYXllciAyIGNvbW1hbmRcJiMzNDt9LFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5jLTE1My1cdHtJUEFfUkNfTDJfTUFDX05PVF9BVVRIX0JZX0FEUCxcdFwmIzM0O0wyIG1hYyBub3QgYXV0aG9yaXplZCBieSBhZGFwdGVyXCYjMzQ7fSxcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5jOjE1NDpcdHtJUEFfUkNfREFUQV9NSVNNQVRDSCxcdFx0XCYjMzQ7RGF0YSBmaWVsZCBtaXNtYXRjaCAodjQvdjYgbWl4ZWQpXCYjMzQ7fSxcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5jLTE1NS1cdHtJUEFfUkNfSU5WQUxJRF9NVFVfU0laRSxcdFwmIzM0O0ludmFsaWQgTVRVIHNpemVcJiMzNDt9LFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5jPTE4OD1zdGF0aWMgY29uc3Qgc3RydWN0IGlwYV9yY19tc2cgcWV0aF9pcGFfcmNfc2JwX2lxZF9tc2dbXSA9IHtcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5jLTE4OS1cdHtJUEFfUkNfU0JQX0lRRF9OT1RfQ09ORklHVVJFRCxcdFwmIzM0O05vdCBjb25maWd1cmVkIGZvciBicmlkZ2Vwb3J0XCYjMzQ7fSxcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5jOjE5MDpcdHtJUEFfUkNfU0JQX0lRRF9PU19NSVNNQVRDSCxcdFwmIzM0O09TIG1pc21hdGNoXCYjMzQ7fSxcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5jLTE5MS1cdHtJUEFfUkNfU0JQX0lRRF9BTk9fREVWX1BSSU1BUlksIFwmIzM0O1ByaW1hcnkgYnJpZGdlcG9ydCBleGlzdHMgYWxyZWFkeVwmIzM0O30sXG4tLVxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmM9MTk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXBhX3JjX21zZyBxZXRoX2lwYV9yY19zYnBfb3NhX21zZ1tdID0ge1xuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmMtMjAwLVx0e0lQQV9SQ19TQlBfT1NBX05PVF9DT05GSUdVUkVELFx0XCYjMzQ7Tm90IGNvbmZpZ3VyZWQgZm9yIGJyaWRnZXBvcnRcJiMzNDt9LFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmM6MjAxOlx0e0lQQV9SQ19TQlBfT1NBX09TX01JU01BVENILFx0XCYjMzQ7T1MgbWlzbWF0Y2hcJiMzNDt9LFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmMtMjAyLVx0e0lQQV9SQ19TQlBfT1NBX0FOT19ERVZfUFJJTUFSWSwgXCYjMzQ7UHJpbWFyeSBicmlkZ2Vwb3J0IGV4aXN0cyBhbHJlYWR5XCYjMzQ7fSxcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfY29yZV9tcGMuaD0xNTg9ZW51bSBxZXRoX2lwYV9yZXR1cm5fY29kZXMge1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5oLTE3MS1cdElQQV9SQ19EVVBfSVBWNl9IT01FXHRcdD0gMHgwMDEwLFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmg6MTcyOlx0SVBBX1JDX1NCUF9JUURfT1NfTUlTTUFUQ0hcdD0gMHgwMDEwLFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmgtMTczLVx0SVBBX1JDX1VOUkVHSVNURVJFRF9BRERSXHQ9IDB4MDAxMSxcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfY29yZV9tcGMuaC0xODEtXHRJUEFfUkNfU0JQX0lRRF9DVVJSRU5UX1BSSU1BUllcdD0gMHgwMDI0LFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmg6MTgyOlx0SVBBX1JDX0xBTl9GUkFNRV9NSVNNQVRDSFx0PSAweDAwNDAsXG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfY29yZV9tcGMuaC0xODMtXHRJUEFfUkNfU0JQX0lRRF9OT19RRElPX1FVRVVFU1x0PSAweDAwRUIsXG4tLVxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmgtMTk3LVx0SVBBX1JDX1NCUF9PU0FfTk9UX0NPTkZJR1VSRURcdD0gMHgyQjBDLFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmg6MTk4Olx0SVBBX1JDX1NCUF9PU0FfT1NfTUlTTUFUQ0hcdD0gMHgyQjEwLFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmgtMTk5LVx0SVBBX1JDX1NCUF9PU0FfQU5PX0RFVl9QUklNQVJZXHQ9IDB4MkIxNCxcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfY29yZV9tcGMuaC0yMDQtXHRJUEFfUkNfU0JQX09TQV9OT19RRElPX1FVRVVFU1x0PSAweDJCRUIsXG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfY29yZV9tcGMuaDoyMDU6XHRJUEFfUkNfREFUQV9NSVNNQVRDSFx0XHQ9IDB4ZTAwMSxcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5oLTIwNi1cdElQQV9SQ19JTlZBTElEX01UVV9TSVpFXHRcdD0gMHhlMDAyLFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9sMl9tYWluLmM9MTU1Mj1zdGF0aWMgaW50IHFldGhfYnJpZGdlcG9ydF9tYWtlcmMoc3RydWN0IHFldGhfY2FyZCAqY2FyZCxcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfbWFpbi5jLTE1NzktXHRcdFx0YnJlYWs7XG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfbWFpbi5jOjE1ODA6XHRcdGNhc2UgSVBBX1JDX1NCUF9PU0FfT1NfTUlTTUFUQ0g6XG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfbWFpbi5jOjE1ODE6XHRcdGNhc2UgSVBBX1JDX1NCUF9JUURfT1NfTUlTTUFUQ0g6XG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfbWFpbi5jLTE1ODItXHRcdFx0cmMgPSAtRVBFUk07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0LypcbiAgIDM6XHQgKiBJU00gZHJpdmVyIGZvciBzMzkwLlxuICAgNDpcdCAqXG4gICA1Olx0ICogQ29weXJpZ2h0IElCTSBDb3JwLiAyMDE4XG4gICA2Olx0ICovXG4gICA3Olx0I2RlZmluZSBwcl9mbXQoZm10KSBcJiMzNDtpc206IFwmIzM0OyBmbXRcbiAgIDg6XHRcbiAgIDk6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9leHBvcnQuaFx1MDAzZVxuICAxMDpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4gIDExOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuICAxMjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2ludGVycnVwdC5oXHUwMDNlXG4gIDEzOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvZGV2aWNlLmhcdTAwM2VcbiAgMTQ6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnIuaFx1MDAzZVxuICAxNTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2N0eXBlLmhcdTAwM2VcbiAgMTY6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9wcm9jZXNzb3IuaFx1MDAzZVxuICAxNzpcdFxuICAxODpcdCNpbmNsdWRlIFwmIzM0O2lzbS5oXCYjMzQ7XG4gIDE5Olx0XG4gIDIwOlx0TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O0lTTSBkcml2ZXIgZm9yIHMzOTBcJiMzNDspO1xuICAyMTpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4gIDIyOlx0XG4gIDIzOlx0I2RlZmluZSBEUlZfTkFNRSBcJiMzNDtpc21cJiMzNDtcbiAgMjQ6XHRcbiAgMjU6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaXNtX2RldmljZV90YWJsZVtdID0ge1xuICAyNjpcdFx0eyBQQ0lfVkRFVklDRShJQk0sIFBDSV9ERVZJQ0VfSURfSUJNX0lTTSkgfSxcbiAgMjc6XHRcdHsgfVxuICAyODpcdH07XG4gIDI5Olx0TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGlzbV9kZXZpY2VfdGFibGUpO1xuICAzMDpcdFxuICAzMTpcdHN0YXRpYyBkZWJ1Z19pbmZvX3QgKmlzbV9kZWJ1Z19pbmZvO1xuICAzMjpcdFxuICAzMzpcdHN0YXRpYyBpbnQgaXNtX2NtZChzdHJ1Y3QgaXNtX2RldiAqaXNtLCB2b2lkICpjbWQpXG4gIDM0Olx0e1xuICAzNTpcdFx0c3RydWN0IGlzbV9yZXFfaGRyICpyZXEgPSBjbWQ7XG4gIDM2Olx0XHRzdHJ1Y3QgaXNtX3Jlc3BfaGRyICpyZXNwID0gY21kO1xuICAzNzpcdFxuICAzODpcdFx0c3Bpbl9sb2NrKFx1MDAyNmlzbS1cdTAwM2VjbWRfbG9jayk7XG4gIDM5Olx0XHRfX2lzbV93cml0ZV9jbWQoaXNtLCByZXEgJiM0MzsgMSwgc2l6ZW9mKCpyZXEpLCByZXEtXHUwMDNlbGVuIC0gc2l6ZW9mKCpyZXEpKTtcbiAgNDA6XHRcdF9faXNtX3dyaXRlX2NtZChpc20sIHJlcSwgMCwgc2l6ZW9mKCpyZXEpKTtcbiAgNDE6XHRcbiAgNDI6XHRcdFdSSVRFX09OQ0UocmVzcC1cdTAwM2VyZXQsIElTTV9FUlJPUik7XG4gIDQzOlx0XG4gIDQ0Olx0XHRfX2lzbV9yZWFkX2NtZChpc20sIHJlc3AsIDAsIHNpemVvZigqcmVzcCkpO1xuICA0NTpcdFx0aWYgKHJlc3AtXHUwMDNlcmV0KSB7XG4gIDQ2Olx0XHRcdGRlYnVnX3RleHRfZXZlbnQoaXNtX2RlYnVnX2luZm8sIDAsIFwmIzM0O2NtZCBmYWlsdXJlXCYjMzQ7KTtcbiAgNDc6XHRcdFx0ZGVidWdfZXZlbnQoaXNtX2RlYnVnX2luZm8sIDAsIHJlc3AsIHNpemVvZigqcmVzcCkpO1xuICA0ODpcdFx0XHRnb3RvIG91dDtcbiAgNDk6XHRcdH1cbiAgNTA6XHRcdF9faXNtX3JlYWRfY21kKGlzbSwgcmVzcCAmIzQzOyAxLCBzaXplb2YoKnJlc3ApLCByZXNwLVx1MDAzZWxlbiAtIHNpemVvZigqcmVzcCkpO1xuICA1MTpcdG91dDpcbiAgNTI6XHRcdHNwaW5fdW5sb2NrKFx1MDAyNmlzbS1cdTAwM2VjbWRfbG9jayk7XG4gIDUzOlx0XHRyZXR1cm4gcmVzcC1cdTAwM2VyZXQ7XG4gIDU0Olx0fVxuICA1NTpcdFxuICA1NjpcdHN0YXRpYyBpbnQgaXNtX2NtZF9zaW1wbGUoc3RydWN0IGlzbV9kZXYgKmlzbSwgdTMyIGNtZF9jb2RlKVxuICA1NzpcdHtcbiAgNTg6XHRcdHVuaW9uIGlzbV9jbWRfc2ltcGxlIGNtZDtcbiAgNTk6XHRcbiAgNjA6XHRcdG1lbXNldChcdTAwMjZjbWQsIDAsIHNpemVvZihjbWQpKTtcbiAgNjE6XHRcdGNtZC5yZXF1ZXN0Lmhkci5jbWQgPSBjbWRfY29kZTtcbiAgNjI6XHRcdGNtZC5yZXF1ZXN0Lmhkci5sZW4gPSBzaXplb2YoY21kLnJlcXVlc3QpO1xuICA2MzpcdFxuICA2NDpcdFx0cmV0dXJuIGlzbV9jbWQoaXNtLCBcdTAwMjZjbWQpO1xuICA2NTpcdH1cbiAgNjY6XHRcbiAgNjc6XHRzdGF0aWMgaW50IHF1ZXJ5X2luZm8oc3RydWN0IGlzbV9kZXYgKmlzbSlcbiAgNjg6XHR7XG4gIDY5Olx0XHR1bmlvbiBpc21fcWkgY21kO1xuICA3MDpcdFxuICA3MTpcdFx0bWVtc2V0KFx1MDAyNmNtZCwgMCwgc2l6ZW9mKGNtZCkpO1xuICA3MjpcdFx0Y21kLnJlcXVlc3QuaGRyLmNtZCA9IElTTV9RVUVSWV9JTkZPO1xuICA3MzpcdFx0Y21kLnJlcXVlc3QuaGRyLmxlbiA9IHNpemVvZihjbWQucmVxdWVzdCk7XG4gIDc0Olx0XG4gIDc1Olx0XHRpZiAoaXNtX2NtZChpc20sIFx1MDAyNmNtZCkpXG4gIDc2Olx0XHRcdGdvdG8gb3V0O1xuICA3NzpcdFxuICA3ODpcdFx0ZGVidWdfdGV4dF9ldmVudChpc21fZGVidWdfaW5mbywgMywgXCYjMzQ7cXVlcnkgaW5mb1wmIzM0Oyk7XG4gIDc5Olx0XHRkZWJ1Z19ldmVudChpc21fZGVidWdfaW5mbywgMywgXHUwMDI2Y21kLnJlc3BvbnNlLCBzaXplb2YoY21kLnJlc3BvbnNlKSk7XG4gIDgwOlx0b3V0OlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDEwOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNjUyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhpbmtpbmcgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIHMzOTAgSVNNIERyaXZlciBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgaXNtX2Rydi5jYCwgd2hpY2gsIGFzIHRoZSBuYW1lIGltcGxpZXMsIGlzIHRoZSBkcml2ZXIgZm9yIHRoZSBzMzkwIElTTSB2UENJIEFkYXB0ZXIuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBJU00gaW50ZXJmYWNlIHdvcmtzLCBzcGVjaWZpY2FsbHkgdGhlIGNvbW1hbmQgd3JpdGVzIGFuZCBkYXRhIG1vdmVzLCBzbyBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYF9faXNtX3dyaXRlX2NtZGAgYW5kIGBfX2lzbV9tb3ZlYCBhcmUgZGVmaW5lZC4gVGhlc2UgYXJlIGxpa2VseSB0aGUgY29yZSBmdW5jdGlvbnMgaW1wbGVtZW50aW5nIHRoZSBhZGFwdGVyJiMzOTtzIGNvbW11bmljYXRpb24gcHJvdG9jb2wuIFRpbWUgdG8gdHJhY2UgdGhvc2UgZnVuY3Rpb24gZGVmaW5pdGlvbnMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19pc21fd3JpdGVfY21kJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9uZXQvaXNtLmg9MjQzPXN0YXRpYyBpbmxpbmUgdm9pZCBfX2lzbV9yZWFkX2NtZChzdHJ1Y3QgaXNtX2RldiAqaXNtLCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjU2LVxuZHJpdmVycy9zMzkwL25ldC9pc20uaDoyNTc6c3RhdGljIGlubGluZSB2b2lkIF9faXNtX3dyaXRlX2NtZChzdHJ1Y3QgaXNtX2RldiAqaXNtLCB2b2lkICpkYXRhLFxuZHJpdmVycy9zMzkwL25ldC9pc20uaC0yNTgtXHRcdFx0XHQgICB1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBsZW4pXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MzM9c3RhdGljIGludCBpc21fY21kKHN0cnVjdCBpc21fZGV2ICppc20sIHZvaWQgKmNtZClcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zOC1cdHNwaW5fbG9jayhcdTAwMjZpc20tXHUwMDNlY21kX2xvY2spO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6Mzk6XHRfX2lzbV93cml0ZV9jbWQoaXNtLCByZXEgJiM0MzsgMSwgc2l6ZW9mKCpyZXEpLCByZXEtXHUwMDNlbGVuIC0gc2l6ZW9mKCpyZXEpKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjQwOlx0X19pc21fd3JpdGVfY21kKGlzbSwgcmVxLCAwLCBzaXplb2YoKnJlcSkpO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNDEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19pc21fbW92ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvbmV0L2lzbS5oPTI1Nz1zdGF0aWMgaW5saW5lIHZvaWQgX19pc21fd3JpdGVfY21kKHN0cnVjdCBpc21fZGV2ICppc20sIHZvaWQgKmRhdGEsXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc20uaC0yNjYtXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjI2NzpzdGF0aWMgaW5saW5lIGludCBfX2lzbV9tb3ZlKHN0cnVjdCBpc21fZGV2ICppc20sIHU2NCBkbWJfcmVxLCB2b2lkICpkYXRhLFxuZHJpdmVycy9zMzkwL25ldC9pc20uaC0yNjgtXHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgc2l6ZSlcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz0zOTk9c3RhdGljIGludCBpc21fbW92ZShzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHU2NCBkbWJfdG9rLCB1bnNpZ25lZCBpbnQgaWR4LFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQxMi1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjQxMzpcdFx0cmV0ID0gX19pc21fbW92ZShpc20sIGRtYl9yZXEsIGRhdGEsIGJ5dGVzKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQxNC1cdFx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxMDozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjQ2MAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBJU00gRHJpdmVyKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIHRoZSBJU00gZHJpdmVyIG9uIHMzOTAgYXJjaGl0ZWN0dXJlLiBJJiMzOTttIGdvaW5nIHRvIGhlYWQgc3RyYWlnaHQgaW50byBgZHJpdmVycy9zMzkwL25ldC9pc20uaGAsIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGxpbmVzIDI0MCB0byAyNzUuIFRoYXQgYXJlYSBzaG91bGQgY29udGFpbiBzb21lIGNyaXRpY2FsIGRlZmluaXRpb25zIG9yIHN0cnVjdHVyZXMgcmVsYXRlZCB0byBbbGlrZWx5IHNwZWNpZnkgdGhlIGV4cGVjdGVkIGNvbnRlbnQgaGVyZSwgZS5nLiwgJiMzNDt0aGUgc2hhcmVkIG1lbW9yeSBsYXlvdXQmIzM0Oywgb3IgJiMzNDt0aGUgaW50ZXJydXB0IGhhbmRsaW5nIG1lY2hhbmlzbSYjMzQ7LCBvciAmIzM0O3RoZSBkZXZpY2UgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzJiMzNDssIGJhc2VkIG9uIG15IHByaW9yIGV4cGVyaWVuY2Ugd2l0aCB0aGlzIGRyaXZlciBhbmQgdGhlIHMzOTAgYXJjaGl0ZWN0dXJlXS4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBkZXRhaWxzIGFyb3VuZCBbc3BlY2lmeSB0aGUgYW50aWNpcGF0ZWQgZGV0YWlscywgZS5nLiwgJiMzNDtob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUmIzM0Oywgb3IgJiMzNDtob3cgdGhlIERNQSBjaGFubmVscyBhcmUgbWFuYWdlZCYjMzQ7LCBvciAmIzM0O3RoZSBkYXRhIHN0cnVjdHVyZXMgdXNlZCBmb3IgcGFja2V0IGJ1ZmZlcnMmIzM0O10uIFRoaXMgcmFuZ2UgaXMgdXN1YWxseSB3aGVyZSBbZ2l2ZSB0aGUgcmVhc29ucyB3aHkgeW91IGZvY3VzIG9uIHRoYXQgYXJlYSwgZS5nLiwgJiMzNDt0aGUgY29yZSBkYXRhIHN0cnVjdHVyZXMgZm9yIGRldmljZSBjb25maWd1cmF0aW9uIGxpdmUmIzM0Oywgb3IgJiMzNDt0aGUgaW50ZXJydXB0IHZlY3RvcnMgYXJlIGRlZmluZWQmIzM0Oywgb3IgJiMzNDt0aGUgY29tbWFuZCBkZXNjcmlwdG9ycyBhcmUgZGVjbGFyZWQmIzM0O10uIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBwb3RlbnRpYWwgY2x1ZXMgYWJvdXQgW21lbnRpb24gd2hhdCB5b3UmIzM5O3JlIHRyeWluZyB0byBmaWd1cmUgb3V0LCBlLmcuLCAmIzM0O2EgcGVyZm9ybWFuY2UgYm90dGxlbmVjayYjMzQ7LCBvciAmIzM0O2Egc3BlY2lmaWMgYnVnJiMzNDssIG9yICYjMzQ7YSBwYXJ0aWN1bGFyIGZlYXR1cmUgaW1wbGVtZW50YXRpb24mIzM0O10sIHdoaWNoIG1heSBiZSByZWZsZWN0ZWQgaW4gdGhlIGNvZGUgc3RydWN0dXJlIG9yIHZhcmlhYmxlIG5hbWVzIGFyb3VuZCB0aGlzIHBhcnQgb2YgdGhlIGRyaXZlci4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9uZXQvaXNtLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI0MDpcdCNkZWZpbmUgSVNNX0NSRUFURV9SRVEoZG1iLCBpZHgsIHNmLCBvZmZzZXQpXHRcdFxcXG4gMjQxOlx0XHQoKGRtYikgfCAoaWR4KSBcdTAwM2NcdTAwM2MgMjQgfCAoc2YpIFx1MDAzY1x1MDAzYyAyMyB8IChvZmZzZXQpKVxuIDI0MjpcdFxuIDI0MzpcdHN0YXRpYyBpbmxpbmUgdm9pZCBfX2lzbV9yZWFkX2NtZChzdHJ1Y3QgaXNtX2RldiAqaXNtLCB2b2lkICpkYXRhLFxuIDI0NDpcdFx0XHRcdFx0ICB1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBsZW4pXG4gMjQ1Olx0e1xuIDI0NjpcdFx0c3RydWN0IHpwY2lfZGV2ICp6ZGV2ID0gdG9fenBjaShpc20tXHUwMDNlcGRldik7XG4gMjQ3Olx0XHR1NjQgcmVxID0gWlBDSV9DUkVBVEVfUkVRKHpkZXYtXHUwMDNlZmgsIDIsIDgpO1xuIDI0ODpcdFxuIDI0OTpcdFx0d2hpbGUgKGxlbiBcdTAwM2UgMCkge1xuIDI1MDpcdFx0XHRfX3pwY2lfbG9hZChkYXRhLCByZXEsIG9mZnNldCk7XG4gMjUxOlx0XHRcdG9mZnNldCAmIzQzOz0gODtcbiAyNTI6XHRcdFx0ZGF0YSAmIzQzOz0gODtcbiAyNTM6XHRcdFx0bGVuIC09IDg7XG4gMjU0Olx0XHR9XG4gMjU1Olx0fVxuIDI1NjpcdFxuIDI1NzpcdHN0YXRpYyBpbmxpbmUgdm9pZCBfX2lzbV93cml0ZV9jbWQoc3RydWN0IGlzbV9kZXYgKmlzbSwgdm9pZCAqZGF0YSxcbiAyNTg6XHRcdFx0XHRcdCAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIGxlbilcbiAyNTk6XHR7XG4gMjYwOlx0XHRzdHJ1Y3QgenBjaV9kZXYgKnpkZXYgPSB0b196cGNpKGlzbS1cdTAwM2VwZGV2KTtcbiAyNjE6XHRcdHU2NCByZXEgPSBaUENJX0NSRUFURV9SRVEoemRldi1cdTAwM2VmaCwgMiwgbGVuKTtcbiAyNjI6XHRcbiAyNjM6XHRcdGlmIChsZW4pXG4gMjY0Olx0XHRcdF9fenBjaV9zdG9yZV9ibG9jayhkYXRhLCByZXEsIG9mZnNldCk7XG4gMjY1Olx0fVxuIDI2NjpcdFxuIDI2NzpcdHN0YXRpYyBpbmxpbmUgaW50IF9faXNtX21vdmUoc3RydWN0IGlzbV9kZXYgKmlzbSwgdTY0IGRtYl9yZXEsIHZvaWQgKmRhdGEsXG4gMjY4Olx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgc2l6ZSlcbiAyNjk6XHR7XG4gMjcwOlx0XHRzdHJ1Y3QgenBjaV9kZXYgKnpkZXYgPSB0b196cGNpKGlzbS1cdTAwM2VwZGV2KTtcbiAyNzE6XHRcdHU2NCByZXEgPSBaUENJX0NSRUFURV9SRVEoemRldi1cdTAwM2VmaCwgMCwgc2l6ZSk7XG4gMjcyOlx0XG4gMjczOlx0XHRyZXR1cm4gX196cGNpX3N0b3JlX2Jsb2NrKGRhdGEsIHJlcSwgZG1iX3JlcSk7XG4gMjc0Olx0fVxuIDI3NTpcdFxuIDI3NjpcdCNlbmRpZiAvKiBTMzkwX0lTTV9IICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDEwOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNDYzCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMjU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gczM5MCBJU00gdlBDSSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJJiMzOTttIHNlZWluZyByZWZlcmVuY2VzIHRvIGBfX3pwY2lfbG9hZGAsIGBfX3pwY2lfc3RvcmVfYmxvY2tgLCBgenBjaV9kZXZgLCBhbmQgdGhlIElCTSBJU00gdlBDSSBBZGFwdGVyLiBUaGlzIGltbWVkaWF0ZWx5IGZsYWdzIG15IHJhZGFyIGFzIHMzOTAgYXJjaGl0ZWN0dXJlIHRlcnJpdG9yeSwgc3BlY2lmaWNhbGx5IElCTSYjMzk7cyB6L0FyY2hpdGVjdHVyZS4gQSBxdWljayB0aG91Z2h0IC0gaXMgdGhpcyBzb21ldGhpbmcgUUVNVSBlbXVsYXRlcz8gQ2FuIElTTSBldmVuIGJlIHZpcnR1YWxpemVkLCBlaXRoZXIgaW4gUUVNVSBvciBwZXJoYXBzIHNvbWV0aGluZyBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZT8KCkhhbmcgb24sIGJlZm9yZSBJIGRpdmUgaW50byBlbXVsYXRpb24gc3BlY2lmaWNzLCBJIG5lZWQgdG8gY29uZmlybSB3aGF0ICYjMzQ7SVNNJiMzNDsgKmlzKiBpbiB0aGlzIGNvbnRleHQuIEFoLCAmIzM0O0ludGVybmFsIFNoYXJlZCBNZW1vcnkmIzM0OyBhZGFwdGVyIGZvciBJQk0gWiAoczM5MHgpLiBTcGVjaWZpY2FsbHksIHRoaXMgc2VlbXMgdG8gYmUgcmVsYXRlZCB0byBTTUMtRCAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucyAtIERpcmVjdCBtZW1vcnkgYWNjZXNzKSBvciBESUJTIG92ZXIgSVNNLiBPa2F5LCBzbyBub3cgSSYjMzk7bSB0aGlua2luZywgY2FuIGFuIElTTSBkZXZpY2UgZXhpc3QgaW4gc3RhbmRhcmQgUUVNVSBzMzkweD8gT3IgaXMgdGhpcyBhIHByb3ByaWV0YXJ5IElCTSB6L1ZNIC8gTFBBUiB2aXJ0dWFsIFBDSSBkZXZpY2UgdGhhdCBmdW5kYW1lbnRhbGx5IHJlcXVpcmVzIElCTSBaIGZpcm13YXJlLCBsaWtlIHovVk0gb3IgcnVubmluZyB3aXRoaW4gYSBQUi9TTSBMUEFSIGVudmlyb25tZW50PwoKVGhlIHJlYWwgcXVlc3Rpb24gaGVyZSwgZG9lcyBRRU1VIGV2ZW4gc3VwcG9ydCBJU00/IFRoaXMgbmVlZHMgdG8gYmUgY2xhcmlmaWVkLCBxdWlja2x5LiBMZXQgbWUgbG9vayBhdCB0aGUga2VybmVsIHNvdXJjZS4uLiBJJiMzOTtsbCBjaGVjayBmb3IgYW55IG90aGVyIHJlZmVyZW5jZXMgYW5kIHZlcmlmeSBpZiBJU00gaXMgYWN0dWFsbHkgcmVjb2duaXplZCBhcyBhbiBJQk0geiBQQ0kgZGV2aWNlIHdpdGggaXRzIHNwZWNpZmljIGBQQ0lfREVWSUNFX0lEX0lCTV9JU01gIGlkZW50aWZpZXIuIExldCYjMzk7cyBzdGFydCB3aXRoIGNoZWNraW5nIHRoYXQgYFBDSV9ERVZJQ0VfSURfSUJNX0lTTWAgZGVmaW5pdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UENJX0RFVklDRV9JRF9JQk1fSVNNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmM9MjE9REVDTEFSRV9QQ0lfRklYVVBfRUFSTFkoUENJX1ZFTkRPUl9JRF9JQk0sXG5hcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jOjIyOlx0XHRcdFBDSV9ERVZJQ0VfSURfSUJNX0lTTSxcbmFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmMtMjMtXHRcdFx0enBjaV9pc21fYmFyX25vX21tYXApO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTI1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBpc21fZGV2aWNlX3RhYmxlW10gPSB7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoyNjpcdHsgUENJX1ZERVZJQ0UoSUJNLCBQQ0lfREVWSUNFX0lEX0lCTV9JU00pIH0sXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yNy1cdHsgfVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYz0zODg9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGlzbV9kZXZpY2VfdGFibGVbXSA9IHtcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYy0zODktXHR7IFBDSV9EUklWRVJfT1ZFUlJJREVfREVWSUNFX1ZGSU8oUENJX1ZFTkRPUl9JRF9JQk0sXG5kcml2ZXJzL3ZmaW8vcGNpL2lzbS9tYWluLmM6MzkwOlx0XHRcdFx0XHQgIFBDSV9ERVZJQ0VfSURfSUJNX0lTTSkgfSxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYy0zOTEtXHR7fVxuLS1cbmluY2x1ZGUvbGludXgvcGNpX2lkcy5oLTUyMC0jZGVmaW5lIFBDSV9ERVZJQ0VfSURfSUJNX0lDT01fRk9VUl9QT1JUX01PREVMXHQweDI1MlxuaW5jbHVkZS9saW51eC9wY2lfaWRzLmg6NTIxOiNkZWZpbmUgUENJX0RFVklDRV9JRF9JQk1fSVNNXHRcdDB4MDRlZFxuaW5jbHVkZS9saW51eC9wY2lfaWRzLmgtNTIyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxMDozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDUyMQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgd2VudCBkb3duOgoKKipESUJTLCBTTUMtRCwgYW5kIE1lbW9yeSBCYXJyaWVycyAtIExldCYjMzk7cyBEaWcgSW4qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gRElCUyBhbmQgU01DLUQuIFRoZSBxdWVzdGlvbiB0aGF0JiMzOTtzIGRyaXZpbmcgbWUgaXMgd2hldGhlciB0aGVzZSBgaXNtX2FsbG9jX2RtYmAgYW5kIGBpc21fZnJlZV9kbWJgIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgZ2V0dGluZyBoaXQuIFRoZXkgYXJlIG9idmlvdXNseSBpbXBvcnRhbnQsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcGF0aCB0byB0aGVtLgoKV2FpdCBhIHNlY29uZCwgRElCUy4uLiB3aGF0IGV4YWN0bHkgKmlzKiBESUJTIGFnYWluPyBJIG5lZWQgdG8gcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGF0IHBpZWNlLiBMZXQgbWUgZ28gY2hlY2sgdGhlIGtlcm5lbCBkb2N1bWVudGF0aW9uIG9yIHJlbGV2YW50IHNvdXJjZSBmaWxlcyBvbiBESUJTLiBHb3QgdG8gaGF2ZSBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgdGhhdCBiZWZvcmUgSSBjYW4gbWVhbmluZ2Z1bGx5IGNvbnRpbnVlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfRElCUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9MTMzPUNPTkZJR19TTUNfRElBRz1tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6MTM0OkNPTkZJR19ESUJTPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxMzU6Q09ORklHX0RJQlNfTE89eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTEzNi1DT05GSUdfWERQX1NPQ0tFVFM9eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0xMjQ9Q09ORklHX1NNQ19ESUFHPW1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxMjU6Q09ORklHX0RJQlM9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjEyNjpDT05GSUdfRElCU19MTz15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMTI3LUNPTkZJR19YRFBfU09DS0VUUz15XG4tLVxuZHJpdmVycy9NYWtlZmlsZT0xOTc9b2JqLXlcdFx0XHRcdCYjNDM7PSByZXNjdHJsL1xuZHJpdmVycy9NYWtlZmlsZS0xOTgtXG5kcml2ZXJzL01ha2VmaWxlOjE5OTpvYmotJChDT05GSUdfRElCUylcdFx0JiM0Mzs9IGRpYnMvXG5kcml2ZXJzL01ha2VmaWxlLTIwMC1vYmotJChDT05GSUdfUzM5MClcdFx0JiM0Mzs9IHMzOTAvXG4tLVxuZHJpdmVycy9kaWJzL01ha2VmaWxlPTY9ZGlicy15ICYjNDM7PSBkaWJzX21haW4ub1xuZHJpdmVycy9kaWJzL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX0RJQlMpICYjNDM7PSBkaWJzLm9cbmRyaXZlcnMvZGlicy9NYWtlZmlsZTo4OmRpYnMtJChDT05GSUdfRElCU19MTykgJiM0Mzs9IGRpYnNfbG9vcGJhY2sub1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMjAtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjIxOiNpZiBJU19FTkFCTEVEKENPTkZJR19ESUJTX0xPKVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0yMi0jZGVmaW5lIERJQlNfTE9fRE1CU19IQVNIX0JJVFNcdDEyXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZz0xMzU9Q09ORklHX1NNQ19IU19DVFJMX0JQRj15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnOjEzNjpDT05GSUdfRElCUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnOjEzNzpDT05GSUdfRElCU19MTz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLTEzOC1DT05GSUdfUE1fV0FLRUxPQ0tTPXlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTA6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUzMTkKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgczM5MCBOZXR3b3JrIERyaXZlciBSZWdpc3RyYXRpb24qKgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGd1dHMgb2YgdGhpcyBzMzkwIG5ldHdvcmsgZHJpdmVyLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBvdXQgYGRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgcHJlY2lzZWx5IGhvdyB0aGlzIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgRElCUyAoRGV2aWNlIEludGVyZmFjZSBCbG9jayBTdHJ1Y3R1cmUpIGFuZCB0aGUgUENJIHN1YnN5c3RlbS4gSSYjMzk7bSBhc3N1bWluZyBpdCByZWdpc3RlcnMgaXRzZWxmIHNvbWVob3csIGJ1dCB0aGUgZGV2aWwgaXMgYWx3YXlzIGluIHRoZSBkZXRhaWxzLCBpc24mIzM5O3QgaXQ/IEkgd2FudCB0byBzZWUgdGhlIHNwZWNpZmljIHNlcXVlbmNlLCB0aGUgY2FsbHMsIHRoZSBkYXRhIHN0cnVjdHVyZXMgdXNlZC4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgc3RhbmRhcmQgUENJIHByb2JlIGFuZCByZWdpc3RyYXRpb24gc2VxdWVuY2UsIGJ1dCB3aXRoIHRoZSBhZGRlZCB3cmlua2xlIG9mIGhvdyBESUJTIGNvbWVzIGludG8gcGxheSBvbiBzMzkwLiBJcyBpdCB1c2luZyB0aGUgc3RhbmRhcmQgYHBjaV9yZWdpc3Rlcl9kcml2ZXJgIHdpdGggc29tZSBzMzkwLXNwZWNpZmljIGhvb2tzLCBvciBpcyB0aGVyZSBhIG1vcmUgaW52b2x2ZWQgRElCUy1jZW50cmljIGFwcHJvYWNoPyBMZXQmIzM5O3MgZ2V0IHJlYWRpbmcgYW5kIGZpZ3VyZSBvdXQgdGhpcyBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gZGFuY2UuIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSBjYWxscyBsaWtlIGBkaWJzX3JlZ2lzdGVyX2RyaXZlcmAgb3Igc29tZXRoaW5nIHNpbWlsYXIgaWYgaXQmIzM5O3MgZGV2aWF0aW5nIGZyb20gdGhlIHN0YW5kYXJkIFBDSSBpbml0aWFsaXphdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDU0MDpcdFx0fVxuIDU0MTpcdFx0c3Bpbl91bmxvY2soXHUwMDI2ZGlicy1cdTAwM2Vsb2NrKTtcbiA1NDI6XHRcdHJldHVybiBJUlFfSEFORExFRDtcbiA1NDM6XHR9XG4gNTQ0Olx0XG4gNTQ1Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBkaWJzX2Rldl9vcHMgaXNtX29wcyA9IHtcbiA1NDY6XHRcdC5nZXRfZmFicmljX2lkID0gaXNtX2dldF9jaGlkLFxuIDU0NzpcdFx0LnF1ZXJ5X3JlbW90ZV9naWQgPSBpc21fcXVlcnlfcmdpZCxcbiA1NDg6XHRcdC5tYXhfZG1icyA9IGlzbV9tYXhfZG1icyxcbiA1NDk6XHRcdC5yZWdpc3Rlcl9kbWIgPSBpc21fcmVnaXN0ZXJfZG1iLFxuIDU1MDpcdFx0LnVucmVnaXN0ZXJfZG1iID0gaXNtX3VucmVnaXN0ZXJfZG1iLFxuIDU1MTpcdFx0Lm1vdmVfZGF0YSA9IGlzbV9tb3ZlLFxuIDU1MjpcdFx0LmFkZF92bGFuX2lkID0gaXNtX2FkZF92bGFuX2lkLFxuIDU1MzpcdFx0LmRlbF92bGFuX2lkID0gaXNtX2RlbF92bGFuX2lkLFxuIDU1NDpcdFx0LnNpZ25hbF9ldmVudCA9IGlzbV9zaWduYWxfaWVxLFxuIDU1NTpcdH07XG4gNTU2Olx0XG4gNTU3Olx0c3RhdGljIGludCBpc21fZGV2X2luaXQoc3RydWN0IGlzbV9kZXYgKmlzbSlcbiA1NTg6XHR7XG4gNTU5Olx0XHRzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGlzbS1cdTAwM2VwZGV2O1xuIDU2MDpcdFx0aW50IHJldDtcbiA1NjE6XHRcbiA1NjI6XHRcdHJldCA9IHBjaV9hbGxvY19pcnFfdmVjdG9ycyhwZGV2LCAxLCAxLCBQQ0lfSVJRX01TSSk7XG4gNTYzOlx0XHRpZiAocmV0IFx1MDAzYz0gMClcbiA1NjQ6XHRcdFx0Z290byBvdXQ7XG4gNTY1Olx0XG4gNTY2Olx0XHRyZXQgPSByZXF1ZXN0X2lycShwY2lfaXJxX3ZlY3RvcihwZGV2LCAwKSwgaXNtX2hhbmRsZV9pcnEsIDAsXG4gNTY3Olx0XHRcdFx0ICBwY2lfbmFtZShwZGV2KSwgaXNtKTtcbiA1Njg6XHRcdGlmIChyZXQpXG4gNTY5Olx0XHRcdGdvdG8gZnJlZV92ZWN0b3JzO1xuIDU3MDpcdFxuIDU3MTpcdFx0cmV0ID0gcmVnaXN0ZXJfc2JhKGlzbSk7XG4gNTcyOlx0XHRpZiAocmV0KVxuIDU3MzpcdFx0XHRnb3RvIGZyZWVfaXJxO1xuIDU3NDpcdFxuIDU3NTpcdFx0cmV0ID0gcmVnaXN0ZXJfaWVxKGlzbSk7XG4gNTc2Olx0XHRpZiAocmV0KVxuIDU3NzpcdFx0XHRnb3RvIHVucmVnX3NiYTtcbiA1Nzg6XHRcbiA1Nzk6XHRcdHF1ZXJ5X2luZm8oaXNtKTtcbiA1ODA6XHRcdHJldHVybiAwO1xuIDU4MTpcdFxuIDU4MjpcdHVucmVnX3NiYTpcbiA1ODM6XHRcdHVucmVnaXN0ZXJfc2JhKGlzbSk7XG4gNTg0Olx0XHRpc21fZnJlZV9zYmEoaXNtKTtcbiA1ODU6XHRmcmVlX2lycTpcbiA1ODY6XHRcdGZyZWVfaXJxKHBjaV9pcnFfdmVjdG9yKHBkZXYsIDApLCBpc20pO1xuIDU4NzpcdGZyZWVfdmVjdG9yczpcbiA1ODg6XHRcdHBjaV9mcmVlX2lycV92ZWN0b3JzKHBkZXYpO1xuIDU4OTpcdG91dDpcbiA1OTA6XHRcdHJldHVybiByZXQ7XG4gNTkxOlx0fVxuIDU5MjpcdFxuIDU5MzpcdHN0YXRpYyB2b2lkIGlzbV9kZXZfZXhpdChzdHJ1Y3QgaXNtX2RldiAqaXNtKVxuIDU5NDpcdHtcbiA1OTU6XHRcdHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gaXNtLVx1MDAzZXBkZXY7XG4gNTk2Olx0XG4gNTk3Olx0XHQvKiBpc20gd2lsbCBvbmx5IGdlbmVyYXRlIG5ldyBJUlFzIHdoaWxlIGllcSBcdTAwMjYgc2JhIGFyZSByZWdpc3RlcmVkICovXG4gNTk4Olx0XHR1bnJlZ2lzdGVyX2llcShpc20pO1xuIDU5OTpcdFx0dW5yZWdpc3Rlcl9zYmEoaXNtKTtcbiA2MDA6XHRcdC8qIGRyYWluIG9uZ29pbmcgaXJwdCBoYW5kbGVycyAqL1xuIDYwMTpcdFx0ZnJlZV9pcnEocGNpX2lycV92ZWN0b3IocGRldiwgMCksIGlzbSk7XG4gNjAyOlx0XHRpc21fZnJlZV9pZXEoaXNtKTtcbiA2MDM6XHRcdGlzbV9mcmVlX3NiYShpc20pO1xuIDYwNDpcdFx0cGNpX2ZyZWVfaXJxX3ZlY3RvcnMocGRldik7XG4gNjA1Olx0fVxuIDYwNjpcdFxuIDYwNzpcdHN0YXRpYyBpbnQgaXNtX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4gNjA4Olx0e1xuIDYwOTpcdFx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xuIDYxMDpcdFx0c3RydWN0IHpwY2lfZGV2ICp6ZGV2O1xuIDYxMTpcdFx0c3RydWN0IGlzbV9kZXYgKmlzbTtcbiA2MTI6XHRcdGludCByZXQ7XG4gNjEzOlx0XG4gNjE0Olx0XHRpc20gPSBremFsbG9jX29iaigqaXNtKTtcbiA2MTU6XHRcdGlmICghaXNtKVxuIDYxNjpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiA2MTc6XHRcbiA2MTg6XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmlzbS1cdTAwM2VjbWRfbG9jayk7XG4gNjE5Olx0XHRkZXZfc2V0X2RydmRhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYsIGlzbSk7XG4gNjIwOlx0XHRpc20tXHUwMDNlcGRldiA9IHBkZXY7XG4gNjIxOlx0XG4gNjIyOlx0XHRyZXQgPSBwY2lfZW5hYmxlX2RldmljZV9tZW0ocGRldik7XG4gNjIzOlx0XHRpZiAocmV0KVxuIDYyNDpcdFx0XHRnb3RvIGVycl9kZXY7XG4gNjI1Olx0XG4gNjI2Olx0XHRyZXQgPSBwY2lfcmVxdWVzdF9tZW1fcmVnaW9ucyhwZGV2LCBEUlZfTkFNRSk7XG4gNjI3Olx0XHRpZiAocmV0KVxuIDYyODpcdFx0XHRnb3RvIGVycl9kaXNhYmxlO1xuIDYyOTpcdFxuIDYzMDpcdFx0cmV0ID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudChcdTAwMjZwZGV2LVx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDY0KSk7XG4gNjMxOlx0XHRpZiAocmV0KVxuIDYzMjpcdFx0XHRnb3RvIGVycl9yZXNvdXJjZTtcbiA2MzM6XHRcbiA2MzQ6XHRcdGRtYV9zZXRfc2VnX2JvdW5kYXJ5KFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBTWl8xTSAtIDEpO1xuIDYzNTpcdFx0ZG1hX3NldF9tYXhfc2VnX3NpemUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFNaXzFNKTtcbiA2MzY6XHRcdHBjaV9zZXRfbWFzdGVyKHBkZXYpO1xuIDYzNzpcdFxuIDYzODpcdFx0ZGlicyA9IGRpYnNfZGV2X2FsbG9jKCk7XG4gNjM5Olx0XHRpZiAoIWRpYnMpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTA6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcxNjIKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA3MDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGlzbV9kcnYuY2AgUHJvYmUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBpc21fcHJvYmVgIGlzIGNsZWFybHkgdGllZCB0byBhIHNwZWNpZmljIElCTSBJU00gUENJIGRldmljZSwgaWRlbnRpZmllZCBieSBgUENJX0RFVklDRV9JRF9JQk1fSVNNYC4gSSBpbW1lZGlhdGVseSByZWNhbGwgdGhhdCBgaXNtX2Rydi5jYCBpcyBvbmx5IGJ1aWx0IGlmIGBDT05GSUdfSVNNYCBpcyBlbmFibGVkLCB3aGljaCwgZGlnZ2luZyBhIGJpdCwgaXMgY29udHJvbGxlZCBieSB0aGUgYGRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZ2AgZmlsZS4gRnVydGhlcm1vcmUsIHRoYXQgc3BlY2lmaWMgYEtjb25maWdgIGZpbGUgaXMgb25seSBzb3VyY2VkIGlmIHRoZSBlbnRpcmUgYHMzOTBgIGFyY2hpdGVjdHVyZSBpcyBlbmFibGVkIHZpYSBgQ09ORklHX1MzOTA9eWAuIE15IGJhY2tncm91bmQgYWxsb3dzIG1lIHRvIGluZmVyIHRoYXQgYGlzbWAgbGlrZWx5IHJlZmVycyB0byBhIGhhcmR3YXJlIG9yIGh5cGVydmlzb3Itc3BlY2lmaWMgdmlydHVhbCBQQ0kgYWRhcHRlciwgZXhjbHVzaXZlIHRvIHRoZSBJQk0gWiAoczM5MHgpIG1haW5mcmFtZSBhcmNoaXRlY3R1cmUuCgpOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgZnV6emluZyBhbmQgdmlydHVhbCBlbnZpcm9ubWVudHMuIERvZXMgc3l6a2FsbGVyIG9yIGEgdmlydHVhbGl6ZWQgc2V0dXAgbGlrZSBRRU1VIG9yIEdDRSBldmVuIHRvdWNoIGBpc21fZHJ2LmNgPyBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyBpZiBgUENJX0RFVklDRV9JRF9JQk1fSVNNYCBpcyBlbXVsYXRhYmxlIGluIHN0YW5kYXJkIFFFTVUuIEdpdmVuIGl0cyBJQk0gWiBzcGVjaWZpYyBuYXR1cmUsIEkgc3Ryb25nbHkgc3VzcGVjdCBpdCYjMzk7cyBub3QuIEkga25vdyBmcm9tIG15IHdvcmsgdGhhdCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIGludHJpY2FjaWVzIG9mIHRoZSBJQk0gSVNNIFBDSSBkZXZpY2UsIHBhcnRpY3VsYXJseSB0aGUgYHpwY2lgIGluc3RydWN0aW9uIGV4ZWN1dGlvbiB3aXRoIHRoZSBJU00gY29tbWFuZCBpbnRlcmZhY2UuIEl0JiMzOTtzIGEga2V5IHBvaW50LgoKSSBoYXZlIGFuIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNyaXRlcmlhIGZvciBkZXRlcm1pbmluZyBpZiBhIHBhdGNoIGlzICYjMzQ7V29ydGhGdXp6aW5nLiYjMzQ7IEkgcXVpY2tseSBzY2FuIHRoZSBsaXN0IG9mIGV4Y2VwdGlvbnMuIEkgc2VlIGl0ZW1zIHRoYXQgdHJpZ2dlciByZWQgZmxhZ3MuIE15IHRob3VnaHRzIGFyZTogSXMgdGhpcyBhIG1vZGlmaWNhdGlvbiB0byBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBvciBjb21tZW50cz8gT3IgaXMgaXQgYSBwdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2U/IFRoYXQgd291bGQgbWFrZSBpdCBub3Qgd29ydGggZnV6emluZy4gSXMgaXQgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgUUVNVT8gT3IgaXMgaXQgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlciwgb3IgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzPyBJbiB0aGlzIGNhc2UsIGlzIGl0IGFib3V0IHRoZSBzMzkwIElTTT8KClRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgd2hldGhlciBJU00gaXMgZ2VudWluZWx5IGVtdWxhdGVkIHdpdGhpbiBRRU1VLCBvciBpZiBpdCYjMzk7cyBmdW5kYW1lbnRhbGx5IGEgaGFyZHdhcmUtc3BlY2lmaWMgb3Igei9WTS1zcGVjaWZpYyBQQ0kgZGV2aWNlLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIEkgbmVlZCB0byBzcGVjaWZpY2FsbHkgY2hlY2sgUUVNVSYjMzk7cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgSVNNIGRldmljZSBzdXBwb3J0LgoKQ2hlY2tpbmcgUUVNVSwgdGhlIHMzOTB4IHRhcmdldCBpbmNsdWRlcyBmZWF0dXJlcyBsaWtlIGBzMzkwLXBjaS1idXNgIGFuZCBgczM5MC1wY2ktZGV2aWNlYCwgbGlrZWx5IGZvciBwYXNzdGhyb3VnaCAodmZpby1wY2kpLiBIb3dldmVyLCBhbmQgdGhpcyBpcyBjcnVjaWFsLCBRRU1VICpkb2VzIG5vdCogaGF2ZSBhbiBlbXVsYXRlZCBJU00gZGV2aWNlLiBGcm9tIHdoYXQgSSYjMzk7dmUgc2VlbiwgSVNNIGRldmljZXMgKm9ubHkqIGV4aXN0IGluIHMzOTB4IFFFTVUgdGhyb3VnaCBWRklPIHBhc3N0aHJvdWdoLCByZXF1aXJpbmcgYSByZWFsIElCTSBJU00gdmlydHVhbCBQQ0kgZnVuY3Rpb24gZnJvbSBhbiBJQk0gWiBob3N0LgoKRmluYWxseSwgSSYjMzk7bGwgcXVpY2tseSBjaGVjayB0aGUgRElCUyBsb29wYmFjayAoYENPTkZJR19ESUJTX0xPYCBpbiBgZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suY2ApIGFzIGEgZmluYWwsIHJlbW90ZSBwb3NzaWJpbGl0eS4gRG9lcyB0aGF0IGxvb3BiYWNrIGNvZGUgaW50ZXJmYWNlIHdpdGggYGlzbV9kcnYuY2A/IEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSBieSBxdWlja2x5IGNoZWNraW5nIGBkcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXNtX2FsbG9jX2RtYiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz0yMjg9c3RhdGljIHZvaWQgaXNtX2ZyZWVfZG1iKHN0cnVjdCBpc21fZGV2ICppc20sIHN0cnVjdCBkaWJzX2RtYiAqZG1iKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTIzNi1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjIzNzpzdGF0aWMgaW50IGlzbV9hbGxvY19kbWIoc3RydWN0IGlzbV9kZXYgKmlzbSwgc3RydWN0IGRpYnNfZG1iICpkbWIpXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yMzgte1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTI4NT1zdGF0aWMgaW50IGlzbV9yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYixcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yOTItXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoyOTM6XHRyZXQgPSBpc21fYWxsb2NfZG1iKGlzbSwgZG1iKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTI5NC1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDEwOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4ODUyCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBgZGlic19sb29wYmFjay5jYCoqCgpPa2F5LCB0aW1lIHRvIGNyYWNrIG9wZW4gYGRpYnNfbG9vcGJhY2suY2AuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiBpbiB0aGlzIHBhcnRpY3VsYXIgY29ybmVyIG9mIHRoZSBjb2RlYmFzZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyB0aGlzIGxvb3BiYWNrIGZ1bmN0aW9uYWxpdHkgaXMgaW1wbGVtZW50ZWQg4oCTIEkga25vdyB0aGUgZ2VuZXJhbCBhcmNoaXRlY3R1cmUsIGJ1dCB0aGUgc3BlY2lmaWNzIGFyZSBhbHdheXMgd2hlcmUgdGhlIGludGVyZXN0aW5nIGJpdHMgbGl2ZS4gSSYjMzk7bSBwcmltYXJpbHkgbG9va2luZyBmb3IgdGhlIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBjcml0aWNhbCBwYXRoIGxvZ2ljLiBBcmUgdGhleSB1c2luZyBhbnkgY2xldmVyIHN5bmNocm9uaXphdGlvbiB0ZWNobmlxdWVzPyBBbnkgbm9uLW9idmlvdXMgb3B0aW1pemF0aW9ucz8gSSB3YW50IHRvIHF1aWNrbHkgaWRlbnRpZnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIHByb25lIHRvIHJhY2UgY29uZGl0aW9ucy4gSSYjMzk7bSBhbHNvIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgaG93IHRoZXkgaGFuZGxlIGVycm9yIGNvbmRpdGlvbnMgYW5kIHJlc291cmNlIGNsZWFudXA7IGEgY29tbW9uIHNvdXJjZSBvZiBzdWJ0bGUgYnVncy4gSeKAmWxsIHN0YXJ0IGJ5IHRyYWNpbmcgYSB0eXBpY2FsIGRhdGEgZmxvdywgZm9jdXNpbmcgb24gcmVhZHMgYW5kIHdyaXRlcywgbG9va2luZyBmb3IgaG93IGRhdGEgaXMgbWFuYWdlZCBiZXR3ZWVuIHRoZSBsYXllcnMgYW5kIHdoZXRoZXIgdGhlIGRlc2lnbiBpcyBlZmZpY2llbnQgZnJvbSBhIHBlcmZvcm1hbmNlIHBvaW50IG9mIHZpZXcuIFNwZWNpZmljYWxseSBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgaGludHMgb2YgYW4gaW1wbGVtZW50YXRpb24gdGhhdCBtaWdodCBiZSBwcm9uZSB0byBidWZmZXIgb3ZlcmZsb3dzLCBvZmYtYnktb25lIGVycm9ycywgb3Igb3RoZXIgY29tbW9uIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3Vlcywgc28gSSBrbm93IHdoZXJlIHRvIGZvY3VzIG15IGF0dGVudGlvbi4gSXQmIzM5O3MgdGltZSB0byBwdXQgb24gbXkgZGVidWdnaW5nIGhhdCBhbmQgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkbWImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2RpYnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYz0zND1zdGF0aWMgaW50IGRpYnNfbG9fcXVlcnlfcmdpZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIGNvbnN0IHV1aWRfdCAqcmdpZCxcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTQyLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo0MzpzdGF0aWMgaW50IGRpYnNfbG9fbWF4X2RtYnModm9pZClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNDQte1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNDctXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjQ4OnN0YXRpYyBpbnQgZGlic19sb19yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYixcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNDktXHRcdFx0XHRzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNTAte1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo1MTpcdHN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlICpkbWJfbm9kZSwgKnRtcF9ub2RlO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy01Mi1cdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTU3LVx0bGRldiA9IGRpYnMtXHUwMDNlZHJ2X3ByaXY7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjU4Olx0c2JhX2lkeCA9IGRtYi1cdTAwM2VpZHg7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjU5Olx0LyogY2hlY2sgc3BhY2UgZm9yIG5ldyBkbWIgKi9cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNjAtXHRmb3JfZWFjaF9jbGVhcl9iaXQoc2JhX2lkeCwgbGRldi1cdTAwM2VzYmFfaWR4X21hc2ssIERJQlNfTE9fTUFYX0RNQlMpIHtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTY2LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo2NzpcdGRtYl9ub2RlID0ga3phbGxvY19vYmooKmRtYl9ub2RlKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Njg6XHRpZiAoIWRtYl9ub2RlKSB7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTY5LVx0XHRyYyA9IC1FTk9NRU07XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy03Mi1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6NzM6XHRkbWJfbm9kZS1cdTAwM2VzYmFfaWR4ID0gc2JhX2lkeDtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6NzQ6XHRkbWJfbm9kZS1cdTAwM2VsZW4gPSBkbWItXHUwMDNlZG1iX2xlbjtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNzUtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy03OC1cdFx0XHQgICAgX19HRlBfTk9SRVRSWSB8IF9fR0ZQX1pFUk8sXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjc5Olx0XHRcdCAgICBnZXRfb3JkZXIoZG1iX25vZGUtXHUwMDNlbGVuKSk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTgwLVx0aWYgKCFmb2xpbykge1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtODMtXHR9XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjg0Olx0ZG1iX25vZGUtXHUwMDNlY3B1X2FkZHIgPSBmb2xpb19hZGRyZXNzKGZvbGlvKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6ODU6XHRkbWJfbm9kZS1cdTAwM2VkbWFfYWRkciA9IERJQlNfRE1BX0FERFJfSU5WQUxJRDtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6ODY6XHRyZWZjb3VudF9zZXQoXHUwMDI2ZG1iX25vZGUtXHUwMDNlcmVmY250LCAxKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtODctXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTg4LWFnYWluOlxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo4OTpcdC8qIGFkZCBuZXcgZG1iIGludG8gaGFzaCB0YWJsZSAqL1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo5MDpcdGdldF9yYW5kb21fYnl0ZXMoXHUwMDI2ZG1iX25vZGUtXHUwMDNldG9rZW4sIHNpemVvZihkbWJfbm9kZS1cdTAwM2V0b2tlbikpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo5MTpcdHdyaXRlX2xvY2tfYmgoXHUwMDI2bGRldi1cdTAwM2VkbWJfaHRfbG9jayk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjkyOlx0aGFzaF9mb3JfZWFjaF9wb3NzaWJsZShsZGV2LVx1MDAzZWRtYl9odCwgdG1wX25vZGUsIGxpc3QsIGRtYl9ub2RlLVx1MDAzZXRva2VuKSB7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjkzOlx0XHRpZiAodG1wX25vZGUtXHUwMDNldG9rZW4gPT0gZG1iX25vZGUtXHUwMDNldG9rZW4pIHtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6OTQ6XHRcdFx0d3JpdGVfdW5sb2NrX2JoKFx1MDAyNmxkZXYtXHUwMDNlZG1iX2h0X2xvY2spO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy05NS1cdFx0XHRnb3RvIGFnYWluO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtOTctXHR9XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjk4Olx0aGFzaF9hZGQobGRldi1cdTAwM2VkbWJfaHQsIFx1MDAyNmRtYl9ub2RlLVx1MDAzZWxpc3QsIGRtYl9ub2RlLVx1MDAzZXRva2VuKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6OTk6XHR3cml0ZV91bmxvY2tfYmgoXHUwMDI2bGRldi1cdTAwM2VkbWJfaHRfbG9jayk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEwMDpcdGF0b21pY19pbmMoXHUwMDI2bGRldi1cdTAwM2VkbWJfY250KTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTAxLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMDI6XHRkbWItXHUwMDNlaWR4ID0gZG1iX25vZGUtXHUwMDNlc2JhX2lkeDtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTAzOlx0ZG1iLVx1MDAzZWRtYl90b2sgPSBkbWJfbm9kZS1cdTAwM2V0b2tlbjtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTA0Olx0ZG1iLVx1MDAzZWNwdV9hZGRyID0gZG1iX25vZGUtXHUwMDNlY3B1X2FkZHI7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEwNTpcdGRtYi1cdTAwM2VkbWFfYWRkciA9IGRtYl9ub2RlLVx1MDAzZWRtYV9hZGRyO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMDY6XHRkbWItXHUwMDNlZG1iX2xlbiA9IGRtYl9ub2RlLVx1MDAzZWxlbjtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTA3LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMDgtXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTA5Olx0ZGlicy1cdTAwM2VkbWJfY2xpZW50aWRfYXJyW3NiYV9pZHhdID0gY2xpZW50LVx1MDAzZWlkO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMTAtXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTE0LWVycl9ub2RlOlxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMTU6XHRrZnJlZShkbWJfbm9kZSk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTExNi1lcnJfYml0OlxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTIwLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMjE6c3RhdGljIHZvaWQgZGlic19sb19mcmVlX2RtYihzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXYsXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEyMjpcdFx0XHQgICAgIHN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlICpkbWJfbm9kZSlcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTIzLXtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTI0Olx0Y2xlYXJfYml0KGRtYl9ub2RlLVx1MDAzZXNiYV9pZHgsIGxkZXYtXHUwMDNlc2JhX2lkeF9tYXNrKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTI1Olx0Zm9saW9fcHV0KHZpcnRfdG9fZm9saW8oZG1iX25vZGUtXHUwMDNlY3B1X2FkZHIpKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTI2Olx0a2ZyZWUoZG1iX25vZGUpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMjctXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEyODpcdGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KFx1MDAyNmxkZXYtXHUwMDNlZG1iX2NudCkpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTEyOS1cdFx0d2FrZV91cChcdTAwMjZsZGV2LVx1MDAzZWxkZXZfcmVsZWFzZSk7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMzEtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEzMjpzdGF0aWMgaW50IGRpYnNfbG9fdW5yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYilcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTMzLXtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTM0Olx0c3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKmRtYl9ub2RlID0gTlVMTCwgKnRtcF9ub2RlO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMzUtXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNDAtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE0MTpcdC8qIGZpbmQgZG1iIGZyb20gaGFzaCB0YWJsZSAqL1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNDI6XHR3cml0ZV9sb2NrX2JoKFx1MDAyNmxkZXYtXHUwMDNlZG1iX2h0X2xvY2spO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNDM6XHRoYXNoX2Zvcl9lYWNoX3Bvc3NpYmxlKGxkZXYtXHUwMDNlZG1iX2h0LCB0bXBfbm9kZSwgbGlzdCwgZG1iLVx1MDAzZWRtYl90b2spIHtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTQ0Olx0XHRpZiAodG1wX25vZGUtXHUwMDNldG9rZW4gPT0gZG1iLVx1MDAzZWRtYl90b2spIHtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTQ1Olx0XHRcdGRtYl9ub2RlID0gdG1wX25vZGU7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE0Ni1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE0OC1cdH1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTQ5Olx0aWYgKCFkbWJfbm9kZSkge1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNTA6XHRcdHdyaXRlX3VubG9ja19iaChcdTAwMjZsZGV2LVx1MDAzZWRtYl9odF9sb2NrKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTUxLVx0XHRyZXR1cm4gLUVJTlZBTDtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTUyLVx0fVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNTM6XHRsYXN0ID0gcmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNmRtYl9ub2RlLVx1MDAzZXJlZmNudCk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE1NC1cdGlmIChsYXN0KVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNTU6XHRcdGhhc2hfZGVsKFx1MDAyNmRtYl9ub2RlLVx1MDAzZWxpc3QpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNTY6XHR3cml0ZV91bmxvY2tfYmgoXHUwMDI2bGRldi1cdTAwM2VkbWJfaHRfbG9jayk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE1Ny1cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE1OS1cdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE2MDpcdFx0ZGlicy1cdTAwM2VkbWJfY2xpZW50aWRfYXJyW2RtYl9ub2RlLVx1MDAzZXNiYV9pZHhdID0gTk9fRElCU19DTElFTlQ7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2MS1cdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTYyLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNjM6XHRcdGRpYnNfbG9fZnJlZV9kbWIobGRldiwgZG1iX25vZGUpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNjQtXHR9XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNjctXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE2ODpzdGF0aWMgaW50IGRpYnNfbG9fc3VwcG9ydF9kbWJfbm9jb3B5KHN0cnVjdCBkaWJzX2RldiAqZGlicylcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTY5LXtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE3Mi1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTczOnN0YXRpYyBpbnQgZGlic19sb19hdHRhY2hfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgc3RydWN0IGRpYnNfZG1iICpkbWIpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE3NC17XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE3NTpcdHN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlICpkbWJfbm9kZSA9IE5VTEwsICp0bXBfbm9kZTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTc2LVx0c3RydWN0IGRpYnNfbG9fZGV2ICpsZGV2O1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTc5LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxODA6XHQvKiBmaW5kIGRtYl9ub2RlIGFjY29yZGluZyB0byBkbWItXHUwMDNlZG1iX3RvayAqL1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxODE6XHRyZWFkX2xvY2tfYmgoXHUwMDI2bGRldi1cdTAwM2VkbWJfaHRfbG9jayk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE4MjpcdGhhc2hfZm9yX2VhY2hfcG9zc2libGUobGRldi1cdTAwM2VkbWJfaHQsIHRtcF9ub2RlLCBsaXN0LCBkbWItXHUwMDNlZG1iX3Rvaykge1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxODM6XHRcdGlmICh0bXBfbm9kZS1cdTAwM2V0b2tlbiA9PSBkbWItXHUwMDNlZG1iX3Rvaykge1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxODQ6XHRcdFx0ZG1iX25vZGUgPSB0bXBfbm9kZTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTg1LVx0XHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTg3LVx0fVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxODg6XHRpZiAoIWRtYl9ub2RlKSB7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE4OTpcdFx0cmVhZF91bmxvY2tfYmgoXHUwMDI2bGRldi1cdTAwM2VkbWJfaHRfbG9jayk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE5MC1cdFx0cmV0dXJuIC1FSU5WQUw7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE5MS1cdH1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTkyOlx0cmVmY291bnRfaW5jKFx1MDAyNmRtYl9ub2RlLVx1MDAzZXJlZmNudCk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE5MzpcdHJlYWRfdW5sb2NrX2JoKFx1MDAyNmxkZXYtXHUwMDNlZG1iX2h0X2xvY2spO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xOTQtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE5NTpcdC8qIHByb3ZpZGUgZG1iIGluZm9ybWF0aW9uICovXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE5NjpcdGRtYi1cdTAwM2VpZHggPSBkbWJfbm9kZS1cdTAwM2VzYmFfaWR4O1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxOTc6XHRkbWItXHUwMDNlZG1iX3RvayA9IGRtYl9ub2RlLVx1MDAzZXRva2VuO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxOTg6XHRkbWItXHUwMDNlY3B1X2FkZHIgPSBkbWJfbm9kZS1cdTAwM2VjcHVfYWRkcjtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTk5Olx0ZG1iLVx1MDAzZWRtYV9hZGRyID0gZG1iX25vZGUtXHUwMDNlZG1hX2FkZHI7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIwMDpcdGRtYi1cdTAwM2VkbWJfbGVuID0gZG1iX25vZGUtXHUwMDNlbGVuO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMDEtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIwMy1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjA0OnN0YXRpYyBpbnQgZGlic19sb19kZXRhY2hfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IHRva2VuKVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMDUte1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMDY6XHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqZG1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIwNy1cdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIxMS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjEyOlx0LyogZmluZCBkbWJfbm9kZSBhY2NvcmRpbmcgdG8gZG1iLVx1MDAzZWRtYl90b2sgKi9cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjEzOlx0d3JpdGVfbG9ja19iaChcdTAwMjZsZGV2LVx1MDAzZWRtYl9odF9sb2NrKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjE0Olx0aGFzaF9mb3JfZWFjaF9wb3NzaWJsZShsZGV2LVx1MDAzZWRtYl9odCwgdG1wX25vZGUsIGxpc3QsIHRva2VuKSB7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIxNS1cdFx0aWYgKHRtcF9ub2RlLVx1MDAzZXRva2VuID09IHRva2VuKSB7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIxNjpcdFx0XHRkbWJfbm9kZSA9IHRtcF9ub2RlO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMTctXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMTktXHR9XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIyMDpcdGlmICghZG1iX25vZGUpIHtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjIxOlx0XHR3cml0ZV91bmxvY2tfYmgoXHUwMDI2bGRldi1cdTAwM2VkbWJfaHRfbG9jayk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIyMi1cdFx0cmV0dXJuIC1FSU5WQUw7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIyMy1cdH1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjI0Olx0bGFzdCA9IHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZkbWJfbm9kZS1cdTAwM2VyZWZjbnQpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMjUtXHRpZiAobGFzdClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjI2Olx0XHRoYXNoX2RlbChcdTAwMjZkbWJfbm9kZS1cdTAwM2VsaXN0KTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjI3Olx0d3JpdGVfdW5sb2NrX2JoKFx1MDAyNmxkZXYtXHUwMDNlZG1iX2h0X2xvY2spO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMjgtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIyOS1cdGlmIChsYXN0KVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMzA6XHRcdGRpYnNfbG9fZnJlZV9kbWIobGRldiwgZG1iX25vZGUpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMzEtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMzQtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIzNTpzdGF0aWMgaW50IGRpYnNfbG9fbW92ZV9kYXRhKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IGRtYl90b2ssXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIzNi1cdFx0XHQgICAgIHVuc2lnbmVkIGludCBpZHgsIGJvb2wgc2YsIHVuc2lnbmVkIGludCBvZmZzZXQsXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMzgte1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMzk6XHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqcm1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI0MC1cdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI0Ni1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjQ3Olx0cmVhZF9sb2NrX2JoKFx1MDAyNmxkZXYtXHUwMDNlZG1iX2h0X2xvY2spO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNDg6XHRoYXNoX2Zvcl9lYWNoX3Bvc3NpYmxlKGxkZXYtXHUwMDNlZG1iX2h0LCB0bXBfbm9kZSwgbGlzdCwgZG1iX3Rvaykge1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNDk6XHRcdGlmICh0bXBfbm9kZS1cdTAwM2V0b2tlbiA9PSBkbWJfdG9rKSB7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI1MC1cdFx0XHRybWJfbm9kZSA9IHRtcF9ub2RlO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjU0LVx0aWYgKCFybWJfbm9kZSkge1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNTU6XHRcdHJlYWRfdW5sb2NrX2JoKFx1MDAyNmxkZXYtXHUwMDNlZG1iX2h0X2xvY2spO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNTYtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjU4LVx0aWYgKCh1NjQpb2Zmc2V0ICYjNDM7IHNpemUgXHUwMDNlIHJtYl9ub2RlLVx1MDAzZWxlbikge1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNTk6XHRcdHJlYWRfdW5sb2NrX2JoKFx1MDAyNmxkZXYtXHUwMDNlZG1iX2h0X2xvY2spO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNjAtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjY0LVx0c2JhX2lkeCA9IHJtYl9ub2RlLVx1MDAzZXNiYV9pZHg7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI2NTpcdHJlYWRfdW5sb2NrX2JoKFx1MDAyNmxkZXYtXHUwMDNlZG1iX2h0X2xvY2spO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNjYtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNzAtXHRzcGluX2xvY2soXHUwMDI2ZGlicy1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjcxOlx0Y2xpZW50X2lkID0gZGlicy1cdTAwM2VkbWJfY2xpZW50aWRfYXJyW3NiYV9pZHhdO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNzItXHRzX21hc2sgPSByb3IxNigweDEwMDAsIGlkeCk7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYz0yODA9c3RhdGljIGNvbnN0IHN0cnVjdCBkaWJzX2Rldl9vcHMgZGlic19sb19vcHMgPSB7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yODItXHQucXVlcnlfcmVtb3RlX2dpZCA9IGRpYnNfbG9fcXVlcnlfcmdpZCxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjgzOlx0Lm1heF9kbWJzID0gZGlic19sb19tYXhfZG1icyxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjg0Olx0LnJlZ2lzdGVyX2RtYiA9IGRpYnNfbG9fcmVnaXN0ZXJfZG1iLFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODU6XHQudW5yZWdpc3Rlcl9kbWIgPSBkaWJzX2xvX3VucmVnaXN0ZXJfZG1iLFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yODYtXHQubW92ZV9kYXRhID0gZGlic19sb19tb3ZlX2RhdGEsXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4NzpcdC5zdXBwb3J0X21tYXBwZWRfcmRtYiA9IGRpYnNfbG9fc3VwcG9ydF9kbWJfbm9jb3B5LFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODg6XHQuYXR0YWNoX2RtYiA9IGRpYnNfbG9fYXR0YWNoX2RtYixcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjg5Olx0LmRldGFjaF9kbWIgPSBkaWJzX2xvX2RldGFjaF9kbWIsXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI5MC19O1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM9MjkyPXN0YXRpYyB2b2lkIGRpYnNfbG9fZGV2X2luaXQoc3RydWN0IGRpYnNfbG9fZGV2ICpsZGV2KVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yOTMte1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyOTQ6XHRyd2xvY2tfaW5pdChcdTAwMjZsZGV2LVx1MDAzZWRtYl9odF9sb2NrKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjk1Olx0aGFzaF9pbml0KGxkZXYtXHUwMDNlZG1iX2h0KTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjk2Olx0YXRvbWljX3NldChcdTAwMjZsZGV2LVx1MDAzZWRtYl9jbnQsIDApO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yOTctXHRpbml0X3dhaXRxdWV1ZV9oZWFkKFx1MDAyNmxkZXYtXHUwMDNlbGRldl9yZWxlYXNlKTtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jPTMwMD1zdGF0aWMgdm9pZCBkaWJzX2xvX2Rldl9leGl0KHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldilcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzAxLXtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzAyOlx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmxkZXYtXHUwMDNlZG1iX2NudCkpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMwMzpcdFx0d2FpdF9ldmVudChsZGV2LVx1MDAzZWxkZXZfcmVsZWFzZSwgIWF0b21pY19yZWFkKFx1MDAyNmxkZXYtXHUwMDNlZG1iX2NudCkpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMDQtfVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMjQtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjI1OnN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlIHtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMjYtXHRzdHJ1Y3QgaGxpc3Rfbm9kZSBsaXN0O1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg9MzU9c3RydWN0IGRpYnNfbG9fZGV2IHtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMzYtXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjM3Olx0YXRvbWljX3QgZG1iX2NudDtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6Mzg6XHRyd2xvY2tfdCBkbWJfaHRfbG9jaztcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMzktXHRERUNMQVJFX0JJVE1BUChzYmFfaWR4X21hc2ssIERJQlNfTE9fTUFYX0RNQlMpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDo0MDpcdERFQ0xBUkVfSEFTSFRBQkxFKGRtYl9odCwgRElCU19MT19ETUJTX0hBU0hfQklUUyk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTQxLVx0d2FpdF9xdWV1ZV9oZWFkX3QgbGRldl9yZWxlYXNlO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz04Mz1pbnQgZGlic191bnJlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtODYtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjg3Olx0aW50IG1heF9kbWJzO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTg4LVx0aW50IHJjID0gMDtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtOTItXHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjkzOlx0XHRtYXhfZG1icyA9IGRpYnMtXHUwMDNlb3BzLVx1MDAzZW1heF9kbWJzKCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6OTQ6XHRcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBtYXhfZG1iczsgJiM0MzsmIzQzO2kpIHtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo5NTpcdFx0XHRpZiAoZGlicy1cdTAwM2VkbWJfY2xpZW50aWRfYXJyW2ldID09IGNsaWVudC1cdTAwM2VpZCkge1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjk2Olx0XHRcdFx0V0FSTigxLCBcJiMzNDslczogYXR0ZW1wdCB0byB1bnJlZ2lzdGVyICYjMzk7JXMmIzM5OyB3aXRoIHJlZ2lzdGVyZWQgZG1iKHMpXFxuXCYjMzQ7LFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTk3LVx0XHRcdFx0ICAgICBfX2Z1bmNfXywgY2xpZW50LVx1MDAzZW5hbWUpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTk4LVx0XHRcdFx0cmMgPSAtRUJVU1k7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6OTk6XHRcdFx0XHRnb3RvIGVycl9yZWdfZG1iO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEwMC1cdFx0XHR9XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTExNy1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMTg6ZXJyX3JlZ19kbWI6XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTE5LVx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM9MTI1PXN0YXRpYyB2b2lkIGRpYnNfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMzAtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTMxOlx0a2ZyZWUoZGlicy1cdTAwM2VkbWJfY2xpZW50aWRfYXJyKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMzItXHRrZnJlZShkaWJzKTtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM9MTg1PWludCBkaWJzX2Rldl9hZGQoc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE4Ni17XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTg3Olx0aW50IG1heF9kbWJzO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE4OC1cdGludCBpLCByZXQ7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTg5LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE5MDpcdG1heF9kbWJzID0gZGlicy1cdTAwM2VvcHMtXHUwMDNlbWF4X2RtYnMoKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxOTE6XHRkaWJzLVx1MDAzZWRtYl9jbGllbnRpZF9hcnIgPSBremFsbG9jKG1heF9kbWJzLCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxOTI6XHRpZiAoIWRpYnMtXHUwMDNlZG1iX2NsaWVudGlkX2FycilcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xOTMtXHRcdHJldHVybiAtRU5PTUVNO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE5NDpcdG1lbXNldChkaWJzLVx1MDAzZWRtYl9jbGllbnRpZF9hcnIsIE5PX0RJQlNfQ0xJRU5ULCBtYXhfZG1icyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTk1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxMDozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjE1MQoJCQkJCQkJb3V0cHV0OiAxMTkKCQkJCQkJCXRob3VnaHRzOiAxMTQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIFBhdGNoJiMzOTtzIEZ1enppbmcgV29ydGhpbmVzcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoIGxpa2VseSBkb2VzbiYjMzk7dCB3YXJyYW50IGZ1enppbmcsIGJ1dCBJIG5lZWQgdG8gYmUgdGhvcm91Z2guIEkgc2VlIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgaXNtX2Rydi5jYCBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgYGlzbV9hbGxvY19kbWJgIGFuZCBgaXNtX2ZyZWVfZG1iYCBmdW5jdGlvbnMuIFRoZXNlIGZ1bmN0aW9ucyBtYW5hZ2UgRE1BIGJ1ZmZlcnMgKGBkaWJzX2RtYmApIGZvciB0aGUgSUJNIElTTSB2UENJIGFkYXB0ZXIuIFRoZSBjaGFuZ2VzIGludm9sdmUgY29ycmVjdGluZyBhIG1lbW9yeSBmcmVlaW5nIGlzc3VlIHdpdGggYGZvbGlvX3B1dGAgYW5kIGVuc3VyaW5nIGBkbWItJmd0O2NwdV9hZGRyYCBpcyBudWxsZWQgYWZ0ZXIgZnJlZWluZyBpbiBib3RoIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBjb2RlIHBhdGhzLgoKSG93ZXZlciwgYSBjcml0aWNhbCBwb2ludCBsZWFwcyBvdXQgYXQgbWU6IGBpc21fZHJ2LmNgIGlzIGV4cGxpY2l0bHkgdGllZCB0byB0aGUgYFBDSV9ERVZJQ0VfSURfSUJNX0lTTWAsIHdoaWNoIGlzIGFuIHMzOTAtc3BlY2lmaWMgdlBDSSBkZXZpY2UuIFRoaXMgaXMgcmVsZXZhbnQgKm9ubHkqIHRvIElCTSBaIG1haW5mcmFtZSBoYXJkd2FyZS4gSXQmIzM5O3Mgbm90IGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy4gRXZlbiBpZiBJIHdlcmUgdG8gYm9vdCBzMzkweCBRRU1VLCB0aGUgSUJNIElTTSBkZXZpY2Ugd291bGRuJiMzOTt0IGJlIHByZXNlbnQgYmVjYXVzZSB0aGUgZGV2aWNlIGlzbiYjMzk7dCBlbXVsYXRlZCBpbiBzb2Z0d2FyZS4KClJldmlld2luZyB0aGUgcnVsZSBzZXQgZm9yIGBXb3J0aEZ1enppbmdgLCB0aGlzIHBhdGNoIHNxdWFyZWx5IGZhbGxzIHVuZGVyIHR3byBjYXRlZ29yaWVzOiAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSYjMzQ7IGFuZCAmIzM0O0NvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLi4uIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDsgQmVjYXVzZSB0aGUgSVNNIHZQQ0kgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgZGV2aWNlIGFuZCByZXF1aXJlcyBhY3R1YWwgSUJNIFogaGFyZHdhcmUsIHRoaXMgY29kZSBjYW4mIzM5O3QgYmUgcmVhY2hlZCBpbiBhbnkgcmVhc29uYWJsZSB2aXJ0dWFsaXplZCB0ZXN0aW5nIGVudmlyb25tZW50LCBpbmNsdWRpbmcgczM5MHggUUVNVS4KClRoZXJlZm9yZSwgZ2l2ZW4gdGhlIGhhcmR3YXJlIGRlcGVuZGVuY3kgYW5kIHRoZSBydWxlIHNldCwgSSYjMzk7bSBjb25maWRlbnQgdGhhdCBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuIEkgbmVlZCB0byBub3cgZG91YmxlLWNoZWNrIHRoZSBkZXRhaWxzIGFuZCBwcmVwYXJlIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgY2FsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBlcnJvciBoYW5kbGluZyBhbmQgY2xlYW51cCBsb2dpYyAoaXNtX2FsbG9jX2RtYiBhbmQgaXNtX2ZyZWVfZG1iKSBpbiBkcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy4gVGhlIElTTSBkcml2ZXIgaXMgc3BlY2lmaWMgdG8gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlIGFuZCByZXF1aXJlcyBJQk0gWiBJbnRlcm5hbCBTaGFyZWQgTWVtb3J5IChJU00pIFBDSSBoYXJkd2FyZS9maXJtd2FyZSwgd2hpY2ggY2Fubm90IGJlIGVtdWxhdGVkIG9yIHJlYWNoZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBlcnJvciBoYW5kbGluZyBhbmQgY2xlYW51cCBsb2dpYyAoaXNtX2FsbG9jX2RtYiBhbmQgaXNtX2ZyZWVfZG1iKSBpbiBkcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy4gVGhlIElTTSBkcml2ZXIgaXMgc3BlY2lmaWMgdG8gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlIGFuZCByZXF1aXJlcyBJQk0gWiBJbnRlcm5hbCBTaGFyZWQgTWVtb3J5IChJU00pIFBDSSBoYXJkd2FyZS9maXJtd2FyZSwgd2hpY2ggY2Fubm90IGJlIGVtdWxhdGVkIG9yIHJlYWNoZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxMDozMTwvdGQ+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+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDNUMTA6MzE6MDAuODQ0Mjg1NjJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mzc2NTEyMzcwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGFuZCBjbGVhbnVwIGxvZ2ljIChpc21fYWxsb2NfZG1iIGFuZCBpc21fZnJlZV9kbWIpIGluIGRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLiBUaGUgSVNNIGRyaXZlciBpcyBzcGVjaWZpYyB0byB0aGUgczM5MCBhcmNoaXRlY3R1cmUgYW5kIHJlcXVpcmVzIElCTSBaIEludGVybmFsIFNoYXJlZCBNZW1vcnkgKElTTSkgUENJIGhhcmR3YXJlL2Zpcm13YXJlLCB3aGljaCBjYW5ub3QgYmUgZW11bGF0ZWQgb3IgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDEwOjMxOjAwLjg0NDI5MDc0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjU4MDMzNzQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgY2U2NGMwNmQxNGQzNDJhNWE2NDllNDVmYWQ4ZDczOWZjMDhjYjQ3N1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IFNlcCAzIDEwOjMwOjU5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jIGIvZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmNcXG5pbmRleCAyNDJkYTIwZjI3ZTBlLi4wMzViMjMzYWJiNGU5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jXFxuKysrIGIvZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmNcXG5AQCAtMjMxLDYgKzIzMSw3IEBAIHN0YXRpYyB2b2lkIGlzbV9mcmVlX2RtYihzdHJ1Y3QgaXNtX2RldiAqaXNtLCBzdHJ1Y3QgZGlic19kbWIgKmRtYilcXG4gXFx0ZG1hX3VubWFwX3BhZ2UoXFx1MDAyNmlzbS1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LCBkbWItXFx1MDAzZWRtYV9hZGRyLCBkbWItXFx1MDAzZWRtYl9sZW4sXFxuIFxcdFxcdCAgICAgICBETUFfRlJPTV9ERVZJQ0UpO1xcbiBcXHRmb2xpb19wdXQodmlydF90b19mb2xpbyhkbWItXFx1MDAzZWNwdV9hZGRyKSk7XFxuK1xcdGRtYi1cXHUwMDNlY3B1X2FkZHIgPSBOVUxMO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGlzbV9hbGxvY19kbWIoc3RydWN0IGlzbV9kZXYgKmlzbSwgc3RydWN0IGRpYnNfZG1iICpkbWIpXFxuQEAgLTI3NCw3ICsyNzUsOCBAQCBzdGF0aWMgaW50IGlzbV9hbGxvY19kbWIoc3RydWN0IGlzbV9kZXYgKmlzbSwgc3RydWN0IGRpYnNfZG1iICpkbWIpXFxuIFxcdHJldHVybiAwO1xcbiBcXG4gb3V0X2ZyZWU6XFxuLVxcdGtmcmVlKGRtYi1cXHUwMDNlY3B1X2FkZHIpO1xcbitcXHRmb2xpb19wdXQoZm9saW8pO1xcbitcXHRkbWItXFx1MDAzZWNwdV9hZGRyID0gTlVMTDtcXG4gb3V0X2JpdDpcXG4gXFx0Y2xlYXJfYml0KGRtYi1cXHUwMDNlaWR4LCBpc20tXFx1MDAzZXNiYV9iaXRtYXApO1xcbiBcXHRyZXR1cm4gcmM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDEwOjMxOjAyLjEwMjk3ODc5NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NTI1MDY0MTg5MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGFuZCBjbGVhbnVwIGxvZ2ljIChpc21fYWxsb2NfZG1iIGFuZCBpc21fZnJlZV9kbWIpIGluIGRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLiBUaGUgSVNNIGRyaXZlciBpcyBzcGVjaWZpYyB0byB0aGUgczM5MCBhcmNoaXRlY3R1cmUgYW5kIHJlcXVpcmVzIElCTSBaIEludGVybmFsIFNoYXJlZCBNZW1vcnkgKElTTSkgUENJIGhhcmR3YXJlL2Zpcm13YXJlLCB3aGljaCBjYW5ub3QgYmUgZW11bGF0ZWQgb3IgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGNlNjRjMDZkMTRkMzQyYTVhNjQ5ZTQ1ZmFkOGQ3MzlmYzA4Y2I0NzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAzIDEwOjMwOjU5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMgYi9kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuY1xuaW5kZXggMjQyZGEyMGYyN2UwZS4uMDM1YjIzM2FiYjRlOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jXG4rKysgYi9kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuY1xuQEAgLTIzMSw2ICsyMzEsNyBAQCBzdGF0aWMgdm9pZCBpc21fZnJlZV9kbWIoc3RydWN0IGlzbV9kZXYgKmlzbSwgc3RydWN0IGRpYnNfZG1iICpkbWIpXG4gXHRkbWFfdW5tYXBfcGFnZShcdTAwMjZpc20tXHUwMDNlcGRldi1cdTAwM2VkZXYsIGRtYi1cdTAwM2VkbWFfYWRkciwgZG1iLVx1MDAzZWRtYl9sZW4sXG4gXHRcdCAgICAgICBETUFfRlJPTV9ERVZJQ0UpO1xuIFx0Zm9saW9fcHV0KHZpcnRfdG9fZm9saW8oZG1iLVx1MDAzZWNwdV9hZGRyKSk7XG4rXHRkbWItXHUwMDNlY3B1X2FkZHIgPSBOVUxMO1xuIH1cbiBcbiBzdGF0aWMgaW50IGlzbV9hbGxvY19kbWIoc3RydWN0IGlzbV9kZXYgKmlzbSwgc3RydWN0IGRpYnNfZG1iICpkbWIpXG5AQCAtMjc0LDcgKzI3NSw4IEBAIHN0YXRpYyBpbnQgaXNtX2FsbG9jX2RtYihzdHJ1Y3QgaXNtX2RldiAqaXNtLCBzdHJ1Y3QgZGlic19kbWIgKmRtYilcbiBcdHJldHVybiAwO1xuIFxuIG91dF9mcmVlOlxuLVx0a2ZyZWUoZG1iLVx1MDAzZWNwdV9hZGRyKTtcbitcdGZvbGlvX3B1dChmb2xpbyk7XG4rXHRkbWItXHUwMDNlY3B1X2FkZHIgPSBOVUxMO1xuIG91dF9iaXQ6XG4gXHRjbGVhcl9iaXQoZG1iLVx1MDAzZWlkeCwgaXNtLVx1MDAzZXNiYV9iaXRtYXApO1xuIFx0cmV0dXJuIHJjO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTA6MzE6MDIuMTAyOTgwMzk2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTY0NDI2NTk1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBBbmFseXNpcyAtIHMzOTAgSVNNIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGl0J3MgaGl0dGluZyBgZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmNgLiBSaWdodCwgc28gdGhpcyBpcyB0aGUgczM5MCBJbnRlZ3JhdGVkIFNoYXJlZCBNZW1vcnkgKElTTSkgZGV2aWNlIGRyaXZlci4gTm93LCBhIGNyaXRpY2FsIHF1ZXN0aW9uIGFyaXNlczogaXMgdGhpcyBzb21ldGhpbmcgdGhhdCBpbmhlcmVudGx5IHJlcXVpcmVzIHBoeXNpY2FsIHMzOTAgaGFyZHdhcmUg4oCTIHRoaW5rIElCTSB6L0FyY2hpdGVjdHVyZSDigJMgb3IgY2FuIHdlIGFjdHVhbGx5IGdldCBhdCBpdCwgZWl0aGVyIHRocm91Z2ggZW11bGF0aW9uIG9yIGEgc3RhbmRhcmQgZnV6emluZyBzZXR1cCBsaWtlIFFFTVUgb3IgZXZlbiBHQ0U/IEJlZm9yZSBJIGdvIGZ1cnRoZXIgZG93biB0aGF0IHJhYmJpdCBob2xlLCBob2xkIG9uLCBJIG5lZWQgdG8gcmVyZWFkIHRoZSBndWlkZWxpbmVzLiBJdCdzIHRvbyBlYXN5IHRvIHdhc3RlIHRpbWUgb24gc29tZXRoaW5nIHRoYXQgaXMgbm90IHdvcnRoIGZ1enppbmcuXG5cbkFscmlnaHQsIGxldCdzIHJlZnJlc2g6IEkgbmVlZCB0byBmbGFnIGl0IGFzIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgaWYgaXQncyBzb21ldGhpbmcgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcsIGxpa2UgdGhvc2UgUENJZSBzd2l0Y2ggZHJpdmVycyBvciwgc3BlY2lmaWNhbGx5LCBkcml2ZXIgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gcmVtb3ZlLCBzaHV0ZG93biBvciB1bnJlZ2lzdGVyaW5nLiBPa2F5LCB0aGF0J3MgY2xlYXIuXG5cblNvLCBiYWNrIHRvIGBpc21fZHJ2LmNgLiBNeSBuZXh0IHN0ZXAgaXMgdG8gY2FyZWZ1bGx5IGNoZWNrIGl0cyBzb3VyY2UgY29kZSBhbmQgS2NvbmZpZy9hcmNoaXRlY3R1cmUgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoYXQgaXQncyBkb2luZyBhbmQsIGNydWNpYWxseSwgd2hhdCBoYXJkd2FyZSBjb250ZXh0IGl0IHJlbGllcyB1cG9uLiBUaGF0IEtjb25maWcgc3R1ZmYgaXMgZ29pbmcgdG8gYmUgbXkgYmVzdCBmcmllbmQgaGVyZS4gSWYgaXQgc2NyZWFtcyBcInMzOTAgb25seSxcIiB0aGVuIHdl4oCZcmUgcHJvYmFibHkgZGVhZCBpbiB0aGUgd2F0ZXIsIGJ1dCBtYXliZSB3ZSBjYW4gZ2V0IGx1Y2t5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjQ3LCJPdXRwdXRUb2tlbnMiOjY5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjkwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTA6MzE6MDcuNzQ3MjQ5MzE5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDQ1OTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIklTTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3MzOTAvbmV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZz03OD1jb25maWcgQ0NXR1JPVVBcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZy04MS1cXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWc6ODI6Y29uZmlnIElTTVxcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZzo4MzpcXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBmb3IgSVNNIHZQQ0kgQWRhcHRlclxcXCJcXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWctODQtXFx0ZGVwZW5kcyBvbiBQQ0kgXFx1MDAyNlxcdTAwMjYgRElCU1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9NYWtlZmlsZT0xOT1pc20teSA6PSBpc21fZHJ2Lm9cXG5kcml2ZXJzL3MzOTAvbmV0L01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19JU00pICs9IGlzbS5vXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTEtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjI6I2lmbmRlZiBTMzkwX0lTTV9IXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDozOiNkZWZpbmUgUzM5MF9JU01fSFxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtNC1cXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMTEtI2RlZmluZSBVVElMX1NUUl9MRU5cXHQxNlxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MTI6I2RlZmluZSBJU01fRVJST1JcXHQweEZGRkZcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTEzLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MTQ6I2RlZmluZSBJU01fTlJfRE1CU1xcdDE5MjBcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTE1LVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaC0xOC0gKi9cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjE5OiNkZWZpbmUgSVNNX0RNQl9XT1JEX09GRlNFVFxcdDFcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjIwOiNkZWZpbmUgSVNNX0RNQl9CSVRfT0ZGU0VUXFx0KElTTV9ETUJfV09SRF9PRkZTRVQgKiAzMilcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTIxLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MjI6I2RlZmluZSBJU01fUkVHX1NCQVxcdDB4MVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MjM6I2RlZmluZSBJU01fUkVHX0lFUVxcdDB4MlxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MjQ6I2RlZmluZSBJU01fUkVBRF9HSURcXHQweDNcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjI1OiNkZWZpbmUgSVNNX0FERF9WTEFOX0lEXFx0MHg0XFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDoyNjojZGVmaW5lIElTTV9ERUxfVkxBTl9JRFxcdDB4NVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6Mjc6I2RlZmluZSBJU01fU0VUX1ZMQU5cXHQweDZcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjI4OiNkZWZpbmUgSVNNX1JFU0VUX1ZMQU5cXHQweDdcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjI5OiNkZWZpbmUgSVNNX1FVRVJZX0lORk9cXHQweDhcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjMwOiNkZWZpbmUgSVNNX1FVRVJZX1JHSURcXHQweDlcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjMxOiNkZWZpbmUgSVNNX1JFR19ETUJcXHQweEFcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjMyOiNkZWZpbmUgSVNNX1VOUkVHX0RNQlxcdDB4QlxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MzM6I2RlZmluZSBJU01fU0lHTkFMX0lFUVxcdDB4RVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MzQ6I2RlZmluZSBJU01fVU5SRUdfU0JBXFx0MHgxMVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MzU6I2RlZmluZSBJU01fVU5SRUdfSUVRXFx0MHgxMlxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMzYtXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaD0zNz1lbnVtIGlzbV9ldmVudF90eXBlIHtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjM4OlxcdElTTV9FVkVOVF9CVUYgPSAweDAwLFxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6Mzk6XFx0SVNNX0VWRU5UX0RFViA9IDB4MDEsXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDo0MDpcXHRJU01fRVZFTlRfU1dSID0gMHgwMlxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtNDEtfTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg9NDM9ZW51bSBpc21fZXZlbnRfY29kZSB7XFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDo0NDpcXHRJU01fQlVGX0RNQl9VTlJFR0lTVEVSRUQgPSAweDA0LFxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6NDU6XFx0SVNNX0JVRl9VU0lOR19JU01fREVWX0RJU0FCTEVEID0gMHgwOCxcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjQ2OlxcdElTTV9CVUZfT1dOSU5HX0lTTV9ERVZfSU5fRVJSX1NUQVRFID0gMHgwMixcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjQ3OlxcdElTTV9CVUZfVVNJTkdfSVNNX0RFVl9JTl9FUlJfU1RBVEUgPSAweDAzLFxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6NDg6XFx0SVNNX0JVRl9WTEFOX01JU01BVENIX1dJVEhfT1dORVIgPSAweDA1LFxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6NDk6XFx0SVNNX0JVRl9WTEFOX01JU01BVENIX1dJVEhfVVNFUiA9IDB4MDYsXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDo1MDpcXHRJU01fREVWX0dJRF9ESVNBQkxFRCA9IDB4MDcsXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDo1MTpcXHRJU01fREVWX0dJRF9FUlJfU1RBVEUgPSAweDAxXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaC01Mi19O1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaD03Nj11bmlvbiBpc21fcmVnX2llcSB7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTg2LVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6ODc6LyogSVNNLXZQQ0kgZGV2aWNlcyBwcm92aWRlIDY0IEJpdCBHSURzXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDo4ODogKiBNYXAgdGhlbSB0byBJU00gVVVJRCBHSURzIGxpa2UgdGhpczpcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTg5LSAqICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6OTA6ICogfCA2NCBCaXQgSVNNLXZQQ0kgR0lEIHwgMDAwMDAwMDBfMDAwMDAwMDAgfFxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtOTEtICogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oPTIxOD1zdHJ1Y3QgaXNtX3NiYSB7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTIyMS1cXHR1MzIgOiAzMDtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjIyMjpcXHR1MzIgZG1iX2JpdHNbSVNNX05SX0RNQlMgLyAzMl07XFxuZHJpdmVycy9zMzkwL25ldC9pc20uaC0yMjMtXFx0dTMyIHJlc2VydmVkWzNdO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MjI0OlxcdHUxNiBkbWJlX21hc2tbSVNNX05SX0RNQlNdO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjI1LX07XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oPTIyNz1zdHJ1Y3QgaXNtX2RldiB7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTIzMi1cXHRkbWFfYWRkcl90IHNiYV9kbWFfYWRkcjtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjIzMzpcXHRERUNMQVJFX0JJVE1BUChzYmFfYml0bWFwLCBJU01fTlJfRE1CUyk7XFxuZHJpdmVycy9zMzkwL25ldC9pc20uaC0yMzQtXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTIzOS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjI0MDojZGVmaW5lIElTTV9DUkVBVEVfUkVRKGRtYiwgaWR4LCBzZiwgb2Zmc2V0KVxcdFxcdFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTI0MS1cXHQoKGRtYikgfCAoaWR4KSBcXHUwMDNjXFx1MDAzYyAyNCB8IChzZikgXFx1MDAzY1xcdTAwM2MgMjMgfCAob2Zmc2V0KSlcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg9MjY3PXN0YXRpYyBpbmxpbmUgaW50IF9faXNtX21vdmUoc3RydWN0IGlzbV9kZXYgKmlzbSwgdTY0IGRtYl9yZXEsIHZvaWQgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTI3NS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjI3NjojZW5kaWYgLyogUzM5MF9JU01fSCAqL1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMi0vKlxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjM6ICogSVNNIGRyaXZlciBmb3IgczM5MC5cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00LSAqXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0xOS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoyMDpNT0RVTEVfREVTQ1JJUFRJT04oXFxcIklTTSBkcml2ZXIgZm9yIHMzOTBcXFwiKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yMS1NT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz0yNT1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaXNtX2RldmljZV90YWJsZVtdID0ge1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjI2OlxcdHsgUENJX1ZERVZJQ0UoSUJNLCBQQ0lfREVWSUNFX0lEX0lCTV9JU00pIH0sXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjctXFx0eyB9XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz0zMz1zdGF0aWMgaW50IGlzbV9jbWQoc3RydWN0IGlzbV9kZXYgKmlzbSwgdm9pZCAqY21kKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNDEtXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NDI6XFx0V1JJVEVfT05DRShyZXNwLVxcdTAwM2VyZXQsIElTTV9FUlJPUik7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNDMtXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz02Nz1zdGF0aWMgaW50IHF1ZXJ5X2luZm8oc3RydWN0IGlzbV9kZXYgKmlzbSlcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTcxLVxcdG1lbXNldChcXHUwMDI2Y21kLCAwLCBzaXplb2YoY21kKSk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NzI6XFx0Y21kLnJlcXVlc3QuaGRyLmNtZCA9IElTTV9RVUVSWV9JTkZPO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTczLVxcdGNtZC5yZXF1ZXN0Lmhkci5sZW4gPSBzaXplb2YoY21kLnJlcXVlc3QpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9ODQ9c3RhdGljIGludCByZWdpc3Rlcl9zYmEoc3RydWN0IGlzbV9kZXYgKmlzbSlcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTk1LVxcdG1lbXNldChcXHUwMDI2Y21kLCAwLCBzaXplb2YoY21kKSk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6OTY6XFx0Y21kLnJlcXVlc3QuaGRyLmNtZCA9IElTTV9SRUdfU0JBO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTk3LVxcdGNtZC5yZXF1ZXN0Lmhkci5sZW4gPSBzaXplb2YoY21kLnJlcXVlc3QpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MTExPXN0YXRpYyBpbnQgcmVnaXN0ZXJfaWVxKHN0cnVjdCBpc21fZGV2ICppc20pXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0xMjItXFx0bWVtc2V0KFxcdTAwMjZjbWQsIDAsIHNpemVvZihjbWQpKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoxMjM6XFx0Y21kLnJlcXVlc3QuaGRyLmNtZCA9IElTTV9SRUdfSUVRO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTEyNC1cXHRjbWQucmVxdWVzdC5oZHIubGVuID0gc2l6ZW9mKGNtZC5yZXF1ZXN0KTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTE0MD1zdGF0aWMgaW50IHVucmVnaXN0ZXJfc2JhKHN0cnVjdCBpc21fZGV2ICppc20pXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0xNDYtXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MTQ3OlxcdHJldCA9IGlzbV9jbWRfc2ltcGxlKGlzbSwgSVNNX1VOUkVHX1NCQSk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MTQ4OlxcdGlmIChyZXQgXFx1MDAyNlxcdTAwMjYgcmV0ICE9IElTTV9FUlJPUilcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0xNDktXFx0XFx0cmV0dXJuIC1FSU87XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz0xNjM9c3RhdGljIGludCB1bnJlZ2lzdGVyX2llcShzdHJ1Y3QgaXNtX2RldiAqaXNtKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMTY5LVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjE3MDpcXHRyZXQgPSBpc21fY21kX3NpbXBsZShpc20sIElTTV9VTlJFR19JRVEpO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjE3MTpcXHRpZiAocmV0IFxcdTAwMjZcXHUwMDI2IHJldCAhPSBJU01fRVJST1IpXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMTcyLVxcdFxcdHJldHVybiAtRUlPO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MTg2PXN0YXRpYyBpbnQgaXNtX3JlYWRfbG9jYWxfZ2lkKHN0cnVjdCBkaWJzX2RldiAqZGlicylcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTE5Mi1cXHRtZW1zZXQoXFx1MDAyNmNtZCwgMCwgc2l6ZW9mKGNtZCkpO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjE5MzpcXHRjbWQucmVxdWVzdC5oZHIuY21kID0gSVNNX1JFQURfR0lEO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTE5NC1cXHRjbWQucmVxdWVzdC5oZHIubGVuID0gc2l6ZW9mKGNtZC5yZXF1ZXN0KTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTIwNj1zdGF0aWMgaW50IGlzbV9xdWVyeV9yZ2lkKHN0cnVjdCBkaWJzX2RldiAqZGlicywgY29uc3QgdXVpZF90ICpyZ2lkLFxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjEyLVxcdG1lbXNldChcXHUwMDI2Y21kLCAwLCBzaXplb2YoY21kKSk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MjEzOlxcdGNtZC5yZXF1ZXN0Lmhkci5jbWQgPSBJU01fUVVFUllfUkdJRDtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yMTQtXFx0Y21kLnJlcXVlc3QuaGRyLmxlbiA9IHNpemVvZihjbWQucmVxdWVzdCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz0yMjM9c3RhdGljIGludCBpc21fbWF4X2RtYnModm9pZClcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yMjQte1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjIyNTpcXHRyZXR1cm4gSVNNX05SX0RNQlM7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjI2LX1cXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTIzNz1zdGF0aWMgaW50IGlzbV9hbGxvY19kbWIoc3RydWN0IGlzbV9kZXYgKmlzbSwgc3RydWN0IGRpYnNfZG1iICpkbWIpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yNDYtXFx0aWYgKCFkbWItXFx1MDAzZWlkeCkge1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjI0NzpcXHRcXHRiaXQgPSBmaW5kX25leHRfemVyb19iaXQoaXNtLVxcdTAwM2VzYmFfYml0bWFwLCBJU01fTlJfRE1CUyxcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoyNDg6XFx0XFx0XFx0XFx0XFx0IElTTV9ETUJfQklUX09GRlNFVCk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MjQ5OlxcdFxcdGlmIChiaXQgPT0gSVNNX05SX0RNQlMpXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjUwLVxcdFxcdFxcdHJldHVybiAtRU5PU1BDO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjUzLVxcdH1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoyNTQ6XFx0aWYgKGRtYi1cXHUwMDNlaWR4IFxcdTAwM2MgSVNNX0RNQl9CSVRfT0ZGU0VUIHx8XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjU1LVxcdCAgICB0ZXN0X2FuZF9zZXRfYml0KGRtYi1cXHUwMDNlaWR4LCBpc20tXFx1MDAzZXNiYV9iaXRtYXApKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9Mjg1PXN0YXRpYyBpbnQgaXNtX3JlZ2lzdGVyX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHN0cnVjdCBkaWJzX2RtYiAqZG1iLFxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjk3LVxcdG1lbXNldChcXHUwMDI2Y21kLCAwLCBzaXplb2YoY21kKSk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6Mjk4OlxcdGNtZC5yZXF1ZXN0Lmhkci5jbWQgPSBJU01fUkVHX0RNQjtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yOTktXFx0Y21kLnJlcXVlc3QuaGRyLmxlbiA9IHNpemVvZihjbWQucmVxdWVzdCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zMTQtXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzozMTU6XFx0ZGlicy1cXHUwMDNlZG1iX2NsaWVudGlkX2FycltkbWItXFx1MDAzZWlkeCAtIElTTV9ETUJfQklUX09GRlNFVF0gPSBjbGllbnQtXFx1MDAzZWlkO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTMxNi1cXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz0zMjE9c3RhdGljIGludCBpc21fdW5yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYilcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTMyOC1cXHRtZW1zZXQoXFx1MDAyNmNtZCwgMCwgc2l6ZW9mKGNtZCkpO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjMyOTpcXHRjbWQucmVxdWVzdC5oZHIuY21kID0gSVNNX1VOUkVHX0RNQjtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zMzAtXFx0Y21kLnJlcXVlc3QuaGRyLmxlbiA9IHNpemVvZihjbWQucmVxdWVzdCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zMzQtXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzozMzU6XFx0ZGlicy1cXHUwMDNlZG1iX2NsaWVudGlkX2FycltkbWItXFx1MDAzZWlkeCAtIElTTV9ETUJfQklUX09GRlNFVF0gPSBOT19ESUJTX0NMSUVOVDtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zMzYtXFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzM4LVxcdHJldCA9IGlzbV9jbWQoaXNtLCBcXHUwMDI2Y21kKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzozMzk6XFx0aWYgKHJldCBcXHUwMDI2XFx1MDAyNiByZXQgIT0gSVNNX0VSUk9SKVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTM0MC1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTM0Nz1zdGF0aWMgaW50IGlzbV9hZGRfdmxhbl9pZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHU2NCB2bGFuX2lkKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzUyLVxcdG1lbXNldChcXHUwMDI2Y21kLCAwLCBzaXplb2YoY21kKSk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MzUzOlxcdGNtZC5yZXF1ZXN0Lmhkci5jbWQgPSBJU01fQUREX1ZMQU5fSUQ7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzU0LVxcdGNtZC5yZXF1ZXN0Lmhkci5sZW4gPSBzaXplb2YoY21kLnJlcXVlc3QpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MzYxPXN0YXRpYyBpbnQgaXNtX2RlbF92bGFuX2lkKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IHZsYW5faWQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zNjYtXFx0bWVtc2V0KFxcdTAwMjZjbWQsIDAsIHNpemVvZihjbWQpKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzozNjc6XFx0Y21kLnJlcXVlc3QuaGRyLmNtZCA9IElTTV9ERUxfVkxBTl9JRDtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zNjgtXFx0Y21kLnJlcXVlc3QuaGRyLmxlbiA9IHNpemVvZihjbWQucmVxdWVzdCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz0zNzU9c3RhdGljIGludCBpc21fc2lnbmFsX2llcShzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIGNvbnN0IHV1aWRfdCAqcmdpZCxcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTM4MS1cXHRtZW1zZXQoXFx1MDAyNmNtZCwgMCwgc2l6ZW9mKGNtZCkpO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjM4MjpcXHRjbWQucmVxdWVzdC5oZHIuY21kID0gSVNNX1NJR05BTF9JRVE7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzgzLVxcdGNtZC5yZXF1ZXN0Lmhkci5sZW4gPSBzaXplb2YoY21kLnJlcXVlc3QpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9Mzk5PXN0YXRpYyBpbnQgaXNtX21vdmUoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvaywgdW5zaWduZWQgaW50IGlkeCxcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQwOS1cXHRcXHRieXRlcyA9IG1heF9ieXRlcyhvZmZzZXQsIHNpemUsIFBBR0VfU0laRSk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NDEwOlxcdFxcdGRtYl9yZXEgPSBJU01fQ1JFQVRFX1JFUShkbWJfdG9rLCBpZHgsIHNpemUgPT0gYnl0ZXMgPyBzZiA6IDAsXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNDExLVxcdFxcdFxcdFxcdFxcdCBvZmZzZXQpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9NDM1PXN0YXRpYyBpbnQgaXNtX21hdGNoX2V2ZW50X3R5cGUodTMyIHMzOTBfZXZlbnRfdHlwZSlcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQzNy1cXHRzd2l0Y2ggKHMzOTBfZXZlbnRfdHlwZSkge1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjQzODpcXHRjYXNlIElTTV9FVkVOVF9CVUY6XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNDM5LVxcdFxcdHJldHVybiBESUJTX0JVRl9FVkVOVDtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo0NDA6XFx0Y2FzZSBJU01fRVZFTlRfREVWOlxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQ0MS1cXHRcXHRyZXR1cm4gRElCU19ERVZfRVZFTlQ7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NDQyOlxcdGNhc2UgSVNNX0VWRU5UX1NXUjpcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00NDMtXFx0XFx0cmV0dXJuIERJQlNfU1dfRVZFTlQ7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz00NDk9c3RhdGljIGludCBpc21fbWF0Y2hfZXZlbnRfc3VidHlwZSh1MzIgczM5MF9ldmVudF9zdWJ0eXBlKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNDUxLVxcdHN3aXRjaCAoczM5MF9ldmVudF9zdWJ0eXBlKSB7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NDUyOlxcdGNhc2UgSVNNX0JVRl9ETUJfVU5SRUdJU1RFUkVEOlxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQ1My1cXHRcXHRyZXR1cm4gRElCU19CVUZfVU5SRUdJU1RFUkVEO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjQ1NDpcXHRjYXNlIElTTV9ERVZfR0lEX0RJU0FCTEVEOlxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQ1NS1cXHRcXHRyZXR1cm4gRElCU19ERVZfRElTQUJMRUQ7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NDU2OlxcdGNhc2UgSVNNX0RFVl9HSURfRVJSX1NUQVRFOlxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQ1Ny1cXHRcXHRyZXR1cm4gRElCU19ERVZfRVJSX1NUQVRFO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9NTAxPXN0YXRpYyBpcnFyZXR1cm5fdCBpc21faGFuZGxlX2lycShpbnQgaXJxLCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNTExLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjUxMjpcXHRidiA9ICh2b2lkICopIFxcdTAwMjZpc20tXFx1MDAzZXNiYS1cXHUwMDNlZG1iX2JpdHNbSVNNX0RNQl9XT1JEX09GRlNFVF07XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NTEzOlxcdGVuZCA9IHNpemVvZihpc20tXFx1MDAzZXNiYS1cXHUwMDNlZG1iX2JpdHMpICogQklUU19QRVJfQllURSAtIElTTV9ETUJfQklUX09GRlNFVDtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy01MTQtXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy01MjMtXFx0XFx0Y2xlYXJfYml0X2ludihiaXQsIGJ2KTtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo1MjQ6XFx0XFx0ZG1iZW1hc2sgPSBpc20tXFx1MDAzZXNiYS1cXHUwMDNlZG1iZV9tYXNrW2JpdCArIElTTV9ETUJfQklUX09GRlNFVF07XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NTI1OlxcdFxcdGlzbS1cXHUwMDNlc2JhLVxcdTAwM2VkbWJlX21hc2tbYml0ICsgSVNNX0RNQl9CSVRfT0ZGU0VUXSA9IDA7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNTI2LVxcdFxcdGJhcnJpZXIoKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTUzMS1cXHRcXHRkaWJzLVxcdTAwM2VzdWJzW2NsaWVudF9pZF0tXFx1MDAzZW9wcy1cXHUwMDNlaGFuZGxlX2lycShkaWJzLFxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjUzMjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgYml0ICsgSVNNX0RNQl9CSVRfT0ZGU0VULFxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTUzMy1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgZG1iZW1hc2spO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmM9MTQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXBhX3JjX21zZyBxZXRoX2lwYV9yY19kZWZfbXNnW10gPSB7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfY29yZV9tcGMuYy0xNDktXFx0e0lQQV9SQ19JRF9OT1RfRk9VTkQsXFx0XFx0XFxcIklkZW50aWZpZXIgbm90IGZvdW5kXFxcIn0sXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmM6MTUwOlxcdHtJUEFfUkNfTEFOX0ZSQU1FX01JU01BVENILFxcdFxcXCJMQU4gYW5kIGZyYW1lIG1pc21hdGNoXFxcIn0sXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmMtMTUxLVxcdHtJUEFfUkNfTDJfVU5TVVBQT1JURURfQ01ELFxcdFxcXCJVbnN1cHBvcnRlZCBsYXllciAyIGNvbW1hbmRcXFwifSxcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5jLTE1My1cXHR7SVBBX1JDX0wyX01BQ19OT1RfQVVUSF9CWV9BRFAsXFx0XFxcIkwyIG1hYyBub3QgYXV0aG9yaXplZCBieSBhZGFwdGVyXFxcIn0sXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmM6MTU0OlxcdHtJUEFfUkNfREFUQV9NSVNNQVRDSCxcXHRcXHRcXFwiRGF0YSBmaWVsZCBtaXNtYXRjaCAodjQvdjYgbWl4ZWQpXFxcIn0sXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmMtMTU1LVxcdHtJUEFfUkNfSU5WQUxJRF9NVFVfU0laRSxcXHRcXFwiSW52YWxpZCBNVFUgc2l6ZVxcXCJ9LFxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmM9MTg4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXBhX3JjX21zZyBxZXRoX2lwYV9yY19zYnBfaXFkX21zZ1tdID0ge1xcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5jLTE4OS1cXHR7SVBBX1JDX1NCUF9JUURfTk9UX0NPTkZJR1VSRUQsXFx0XFxcIk5vdCBjb25maWd1cmVkIGZvciBicmlkZ2Vwb3J0XFxcIn0sXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmM6MTkwOlxcdHtJUEFfUkNfU0JQX0lRRF9PU19NSVNNQVRDSCxcXHRcXFwiT1MgbWlzbWF0Y2hcXFwifSxcXG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfY29yZV9tcGMuYy0xOTEtXFx0e0lQQV9SQ19TQlBfSVFEX0FOT19ERVZfUFJJTUFSWSwgXFxcIlByaW1hcnkgYnJpZGdlcG9ydCBleGlzdHMgYWxyZWFkeVxcXCJ9LFxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmM9MTk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXBhX3JjX21zZyBxZXRoX2lwYV9yY19zYnBfb3NhX21zZ1tdID0ge1xcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5jLTIwMC1cXHR7SVBBX1JDX1NCUF9PU0FfTk9UX0NPTkZJR1VSRUQsXFx0XFxcIk5vdCBjb25maWd1cmVkIGZvciBicmlkZ2Vwb3J0XFxcIn0sXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmM6MjAxOlxcdHtJUEFfUkNfU0JQX09TQV9PU19NSVNNQVRDSCxcXHRcXFwiT1MgbWlzbWF0Y2hcXFwifSxcXG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfY29yZV9tcGMuYy0yMDItXFx0e0lQQV9SQ19TQlBfT1NBX0FOT19ERVZfUFJJTUFSWSwgXFxcIlByaW1hcnkgYnJpZGdlcG9ydCBleGlzdHMgYWxyZWFkeVxcXCJ9LFxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmg9MTU4PWVudW0gcWV0aF9pcGFfcmV0dXJuX2NvZGVzIHtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5oLTE3MS1cXHRJUEFfUkNfRFVQX0lQVjZfSE9NRVxcdFxcdD0gMHgwMDEwLFxcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5oOjE3MjpcXHRJUEFfUkNfU0JQX0lRRF9PU19NSVNNQVRDSFxcdD0gMHgwMDEwLFxcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5oLTE3My1cXHRJUEFfUkNfVU5SRUdJU1RFUkVEX0FERFJcXHQ9IDB4MDAxMSxcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5oLTE4MS1cXHRJUEFfUkNfU0JQX0lRRF9DVVJSRU5UX1BSSU1BUllcXHQ9IDB4MDAyNCxcXG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfY29yZV9tcGMuaDoxODI6XFx0SVBBX1JDX0xBTl9GUkFNRV9NSVNNQVRDSFxcdD0gMHgwMDQwLFxcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5oLTE4My1cXHRJUEFfUkNfU0JQX0lRRF9OT19RRElPX1FVRVVFU1xcdD0gMHgwMEVCLFxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmgtMTk3LVxcdElQQV9SQ19TQlBfT1NBX05PVF9DT05GSUdVUkVEXFx0PSAweDJCMEMsXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmg6MTk4OlxcdElQQV9SQ19TQlBfT1NBX09TX01JU01BVENIXFx0PSAweDJCMTAsXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmgtMTk5LVxcdElQQV9SQ19TQlBfT1NBX0FOT19ERVZfUFJJTUFSWVxcdD0gMHgyQjE0LFxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmgtMjA0LVxcdElQQV9SQ19TQlBfT1NBX05PX1FESU9fUVVFVUVTXFx0PSAweDJCRUIsXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmg6MjA1OlxcdElQQV9SQ19EQVRBX01JU01BVENIXFx0XFx0PSAweGUwMDEsXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmgtMjA2LVxcdElQQV9SQ19JTlZBTElEX01UVV9TSVpFXFx0XFx0PSAweGUwMDIsXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfbWFpbi5jPTE1NTI9c3RhdGljIGludCBxZXRoX2JyaWRnZXBvcnRfbWFrZXJjKHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfbWFpbi5jLTE1NzktXFx0XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX21haW4uYzoxNTgwOlxcdFxcdGNhc2UgSVBBX1JDX1NCUF9PU0FfT1NfTUlTTUFUQ0g6XFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX21haW4uYzoxNTgxOlxcdFxcdGNhc2UgSVBBX1JDX1NCUF9JUURfT1NfTUlTTUFUQ0g6XFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX21haW4uYy0xNTgyLVxcdFxcdFxcdHJjID0gLUVQRVJNO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxMDozMTowNy43OTI2OTk0NDhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU4NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0LypcXG4gICAzOlxcdCAqIElTTSBkcml2ZXIgZm9yIHMzOTAuXFxuICAgNDpcXHQgKlxcbiAgIDU6XFx0ICogQ29weXJpZ2h0IElCTSBDb3JwLiAyMDE4XFxuICAgNjpcXHQgKi9cXG4gICA3OlxcdCNkZWZpbmUgcHJfZm10KGZtdCkgXFxcImlzbTogXFxcIiBmbXRcXG4gICA4OlxcdFxcbiAgIDk6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V4cG9ydC5oXFx1MDAzZVxcbiAgMTA6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbiAgMTE6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3R5cGVzLmhcXHUwMDNlXFxuICAxMjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvaW50ZXJydXB0LmhcXHUwMDNlXFxuICAxMzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZGV2aWNlLmhcXHUwMDNlXFxuICAxNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZXJyLmhcXHUwMDNlXFxuICAxNTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvY3R5cGUuaFxcdTAwM2VcXG4gIDE2OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9wcm9jZXNzb3IuaFxcdTAwM2VcXG4gIDE3OlxcdFxcbiAgMTg6XFx0I2luY2x1ZGUgXFxcImlzbS5oXFxcIlxcbiAgMTk6XFx0XFxuICAyMDpcXHRNT0RVTEVfREVTQ1JJUFRJT04oXFxcIklTTSBkcml2ZXIgZm9yIHMzOTBcXFwiKTtcXG4gIDIxOlxcdE1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG4gIDIyOlxcdFxcbiAgMjM6XFx0I2RlZmluZSBEUlZfTkFNRSBcXFwiaXNtXFxcIlxcbiAgMjQ6XFx0XFxuICAyNTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaXNtX2RldmljZV90YWJsZVtdID0ge1xcbiAgMjY6XFx0XFx0eyBQQ0lfVkRFVklDRShJQk0sIFBDSV9ERVZJQ0VfSURfSUJNX0lTTSkgfSxcXG4gIDI3OlxcdFxcdHsgfVxcbiAgMjg6XFx0fTtcXG4gIDI5OlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBpc21fZGV2aWNlX3RhYmxlKTtcXG4gIDMwOlxcdFxcbiAgMzE6XFx0c3RhdGljIGRlYnVnX2luZm9fdCAqaXNtX2RlYnVnX2luZm87XFxuICAzMjpcXHRcXG4gIDMzOlxcdHN0YXRpYyBpbnQgaXNtX2NtZChzdHJ1Y3QgaXNtX2RldiAqaXNtLCB2b2lkICpjbWQpXFxuICAzNDpcXHR7XFxuICAzNTpcXHRcXHRzdHJ1Y3QgaXNtX3JlcV9oZHIgKnJlcSA9IGNtZDtcXG4gIDM2OlxcdFxcdHN0cnVjdCBpc21fcmVzcF9oZHIgKnJlc3AgPSBjbWQ7XFxuICAzNzpcXHRcXG4gIDM4OlxcdFxcdHNwaW5fbG9jayhcXHUwMDI2aXNtLVxcdTAwM2VjbWRfbG9jayk7XFxuICAzOTpcXHRcXHRfX2lzbV93cml0ZV9jbWQoaXNtLCByZXEgKyAxLCBzaXplb2YoKnJlcSksIHJlcS1cXHUwMDNlbGVuIC0gc2l6ZW9mKCpyZXEpKTtcXG4gIDQwOlxcdFxcdF9faXNtX3dyaXRlX2NtZChpc20sIHJlcSwgMCwgc2l6ZW9mKCpyZXEpKTtcXG4gIDQxOlxcdFxcbiAgNDI6XFx0XFx0V1JJVEVfT05DRShyZXNwLVxcdTAwM2VyZXQsIElTTV9FUlJPUik7XFxuICA0MzpcXHRcXG4gIDQ0OlxcdFxcdF9faXNtX3JlYWRfY21kKGlzbSwgcmVzcCwgMCwgc2l6ZW9mKCpyZXNwKSk7XFxuICA0NTpcXHRcXHRpZiAocmVzcC1cXHUwMDNlcmV0KSB7XFxuICA0NjpcXHRcXHRcXHRkZWJ1Z190ZXh0X2V2ZW50KGlzbV9kZWJ1Z19pbmZvLCAwLCBcXFwiY21kIGZhaWx1cmVcXFwiKTtcXG4gIDQ3OlxcdFxcdFxcdGRlYnVnX2V2ZW50KGlzbV9kZWJ1Z19pbmZvLCAwLCByZXNwLCBzaXplb2YoKnJlc3ApKTtcXG4gIDQ4OlxcdFxcdFxcdGdvdG8gb3V0O1xcbiAgNDk6XFx0XFx0fVxcbiAgNTA6XFx0XFx0X19pc21fcmVhZF9jbWQoaXNtLCByZXNwICsgMSwgc2l6ZW9mKCpyZXNwKSwgcmVzcC1cXHUwMDNlbGVuIC0gc2l6ZW9mKCpyZXNwKSk7XFxuICA1MTpcXHRvdXQ6XFxuICA1MjpcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2aXNtLVxcdTAwM2VjbWRfbG9jayk7XFxuICA1MzpcXHRcXHRyZXR1cm4gcmVzcC1cXHUwMDNlcmV0O1xcbiAgNTQ6XFx0fVxcbiAgNTU6XFx0XFxuICA1NjpcXHRzdGF0aWMgaW50IGlzbV9jbWRfc2ltcGxlKHN0cnVjdCBpc21fZGV2ICppc20sIHUzMiBjbWRfY29kZSlcXG4gIDU3OlxcdHtcXG4gIDU4OlxcdFxcdHVuaW9uIGlzbV9jbWRfc2ltcGxlIGNtZDtcXG4gIDU5OlxcdFxcbiAgNjA6XFx0XFx0bWVtc2V0KFxcdTAwMjZjbWQsIDAsIHNpemVvZihjbWQpKTtcXG4gIDYxOlxcdFxcdGNtZC5yZXF1ZXN0Lmhkci5jbWQgPSBjbWRfY29kZTtcXG4gIDYyOlxcdFxcdGNtZC5yZXF1ZXN0Lmhkci5sZW4gPSBzaXplb2YoY21kLnJlcXVlc3QpO1xcbiAgNjM6XFx0XFxuICA2NDpcXHRcXHRyZXR1cm4gaXNtX2NtZChpc20sIFxcdTAwMjZjbWQpO1xcbiAgNjU6XFx0fVxcbiAgNjY6XFx0XFxuICA2NzpcXHRzdGF0aWMgaW50IHF1ZXJ5X2luZm8oc3RydWN0IGlzbV9kZXYgKmlzbSlcXG4gIDY4OlxcdHtcXG4gIDY5OlxcdFxcdHVuaW9uIGlzbV9xaSBjbWQ7XFxuICA3MDpcXHRcXG4gIDcxOlxcdFxcdG1lbXNldChcXHUwMDI2Y21kLCAwLCBzaXplb2YoY21kKSk7XFxuICA3MjpcXHRcXHRjbWQucmVxdWVzdC5oZHIuY21kID0gSVNNX1FVRVJZX0lORk87XFxuICA3MzpcXHRcXHRjbWQucmVxdWVzdC5oZHIubGVuID0gc2l6ZW9mKGNtZC5yZXF1ZXN0KTtcXG4gIDc0OlxcdFxcbiAgNzU6XFx0XFx0aWYgKGlzbV9jbWQoaXNtLCBcXHUwMDI2Y21kKSlcXG4gIDc2OlxcdFxcdFxcdGdvdG8gb3V0O1xcbiAgNzc6XFx0XFxuICA3ODpcXHRcXHRkZWJ1Z190ZXh0X2V2ZW50KGlzbV9kZWJ1Z19pbmZvLCAzLCBcXFwicXVlcnkgaW5mb1xcXCIpO1xcbiAgNzk6XFx0XFx0ZGVidWdfZXZlbnQoaXNtX2RlYnVnX2luZm8sIDMsIFxcdTAwMjZjbWQucmVzcG9uc2UsIHNpemVvZihjbWQucmVzcG9uc2UpKTtcXG4gIDgwOlxcdG91dDpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTA6MzE6MDcuNzkyODA3NzE4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjg1MjM4ODY3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRoaW5raW5nIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIHMzOTAgSVNNIERyaXZlciBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGlzbV9kcnYuY2AsIHdoaWNoLCBhcyB0aGUgbmFtZSBpbXBsaWVzLCBpcyB0aGUgZHJpdmVyIGZvciB0aGUgczM5MCBJU00gdlBDSSBBZGFwdGVyLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGUgSVNNIGludGVyZmFjZSB3b3Jrcywgc3BlY2lmaWNhbGx5IHRoZSBjb21tYW5kIHdyaXRlcyBhbmQgZGF0YSBtb3Zlcywgc28gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYF9faXNtX3dyaXRlX2NtZGAgYW5kIGBfX2lzbV9tb3ZlYCBhcmUgZGVmaW5lZC4gVGhlc2UgYXJlIGxpa2VseSB0aGUgY29yZSBmdW5jdGlvbnMgaW1wbGVtZW50aW5nIHRoZSBhZGFwdGVyJ3MgY29tbXVuaWNhdGlvbiBwcm90b2NvbC4gVGltZSB0byB0cmFjZSB0aG9zZSBmdW5jdGlvbiBkZWZpbml0aW9ucyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTE2NTIsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxMDozMToxMC42NDUxOTgyOTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU5MzgxNjg1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2lzbV93cml0ZV9jbWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zMzkwL25ldC9pc20uaD0yNDM9c3RhdGljIGlubGluZSB2b2lkIF9faXNtX3JlYWRfY21kKHN0cnVjdCBpc21fZGV2ICppc20sIHZvaWQgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTI1Ni1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjI1NzpzdGF0aWMgaW5saW5lIHZvaWQgX19pc21fd3JpdGVfY21kKHN0cnVjdCBpc21fZGV2ICppc20sIHZvaWQgKmRhdGEsXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaC0yNTgtXFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgbGVuKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MzM9c3RhdGljIGludCBpc21fY21kKHN0cnVjdCBpc21fZGV2ICppc20sIHZvaWQgKmNtZClcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTM4LVxcdHNwaW5fbG9jayhcXHUwMDI2aXNtLVxcdTAwM2VjbWRfbG9jayk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6Mzk6XFx0X19pc21fd3JpdGVfY21kKGlzbSwgcmVxICsgMSwgc2l6ZW9mKCpyZXEpLCByZXEtXFx1MDAzZWxlbiAtIHNpemVvZigqcmVxKSk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NDA6XFx0X19pc21fd3JpdGVfY21kKGlzbSwgcmVxLCAwLCBzaXplb2YoKnJlcSkpO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxMDozMToxMi4yMzkwMTg1OTRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4MjgyMzA1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2lzbV9tb3ZlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvczM5MC9uZXQvaXNtLmg9MjU3PXN0YXRpYyBpbmxpbmUgdm9pZCBfX2lzbV93cml0ZV9jbWQoc3RydWN0IGlzbV9kZXYgKmlzbSwgdm9pZCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjY2LVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MjY3OnN0YXRpYyBpbmxpbmUgaW50IF9faXNtX21vdmUoc3RydWN0IGlzbV9kZXYgKmlzbSwgdTY0IGRtYl9yZXEsIHZvaWQgKmRhdGEsXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaC0yNjgtXFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgc2l6ZSlcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTM5OT1zdGF0aWMgaW50IGlzbV9tb3ZlKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IGRtYl90b2ssIHVuc2lnbmVkIGludCBpZHgsXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00MTItXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NDEzOlxcdFxcdHJldCA9IF9faXNtX21vdmUoaXNtLCBkbWJfcmVxLCBkYXRhLCBieXRlcyk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNDE0LVxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDEwOjMxOjEzLjkyMTg0NjkzMloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI2Nzc4ODI1NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gdGhlIElTTSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGludG8gdGhlIG5pdHR5LWdyaXR0eSBvZiB0aGUgSVNNIGRyaXZlciBvbiBzMzkwIGFyY2hpdGVjdHVyZS4gSSdtIGdvaW5nIHRvIGhlYWQgc3RyYWlnaHQgaW50byBgZHJpdmVycy9zMzkwL25ldC9pc20uaGAsIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGxpbmVzIDI0MCB0byAyNzUuIFRoYXQgYXJlYSBzaG91bGQgY29udGFpbiBzb21lIGNyaXRpY2FsIGRlZmluaXRpb25zIG9yIHN0cnVjdHVyZXMgcmVsYXRlZCB0byBbbGlrZWx5IHNwZWNpZnkgdGhlIGV4cGVjdGVkIGNvbnRlbnQgaGVyZSwgZS5nLiwgXCJ0aGUgc2hhcmVkIG1lbW9yeSBsYXlvdXRcIiwgb3IgXCJ0aGUgaW50ZXJydXB0IGhhbmRsaW5nIG1lY2hhbmlzbVwiLCBvciBcInRoZSBkZXZpY2UgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzXCIsIGJhc2VkIG9uIG15IHByaW9yIGV4cGVyaWVuY2Ugd2l0aCB0aGlzIGRyaXZlciBhbmQgdGhlIHMzOTAgYXJjaGl0ZWN0dXJlXS4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGRldGFpbHMgYXJvdW5kIFtzcGVjaWZ5IHRoZSBhbnRpY2lwYXRlZCBkZXRhaWxzLCBlLmcuLCBcImhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZVwiLCBvciBcImhvdyB0aGUgRE1BIGNoYW5uZWxzIGFyZSBtYW5hZ2VkXCIsIG9yIFwidGhlIGRhdGEgc3RydWN0dXJlcyB1c2VkIGZvciBwYWNrZXQgYnVmZmVyc1wiXS4gVGhpcyByYW5nZSBpcyB1c3VhbGx5IHdoZXJlIFtnaXZlIHRoZSByZWFzb25zIHdoeSB5b3UgZm9jdXMgb24gdGhhdCBhcmVhLCBlLmcuLCBcInRoZSBjb3JlIGRhdGEgc3RydWN0dXJlcyBmb3IgZGV2aWNlIGNvbmZpZ3VyYXRpb24gbGl2ZVwiLCBvciBcInRoZSBpbnRlcnJ1cHQgdmVjdG9ycyBhcmUgZGVmaW5lZFwiLCBvciBcInRoZSBjb21tYW5kIGRlc2NyaXB0b3JzIGFyZSBkZWNsYXJlZFwiXS4gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgcG90ZW50aWFsIGNsdWVzIGFib3V0IFttZW50aW9uIHdoYXQgeW91J3JlIHRyeWluZyB0byBmaWd1cmUgb3V0LCBlLmcuLCBcImEgcGVyZm9ybWFuY2UgYm90dGxlbmVja1wiLCBvciBcImEgc3BlY2lmaWMgYnVnXCIsIG9yIFwiYSBwYXJ0aWN1bGFyIGZlYXR1cmUgaW1wbGVtZW50YXRpb25cIl0sIHdoaWNoIG1heSBiZSByZWZsZWN0ZWQgaW4gdGhlIGNvZGUgc3RydWN0dXJlIG9yIHZhcmlhYmxlIG5hbWVzIGFyb3VuZCB0aGlzIHBhcnQgb2YgdGhlIGRyaXZlci4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNDYwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDEwOjMxOjE2LjU5OTczMTc2MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDc5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3MzOTAvbmV0L2lzbS5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI0MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI0MDpcXHQjZGVmaW5lIElTTV9DUkVBVEVfUkVRKGRtYiwgaWR4LCBzZiwgb2Zmc2V0KVxcdFxcdFxcXFxcXG4gMjQxOlxcdFxcdCgoZG1iKSB8IChpZHgpIFxcdTAwM2NcXHUwMDNjIDI0IHwgKHNmKSBcXHUwMDNjXFx1MDAzYyAyMyB8IChvZmZzZXQpKVxcbiAyNDI6XFx0XFxuIDI0MzpcXHRzdGF0aWMgaW5saW5lIHZvaWQgX19pc21fcmVhZF9jbWQoc3RydWN0IGlzbV9kZXYgKmlzbSwgdm9pZCAqZGF0YSxcXG4gMjQ0OlxcdFxcdFxcdFxcdFxcdCAgdW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgbGVuKVxcbiAyNDU6XFx0e1xcbiAyNDY6XFx0XFx0c3RydWN0IHpwY2lfZGV2ICp6ZGV2ID0gdG9fenBjaShpc20tXFx1MDAzZXBkZXYpO1xcbiAyNDc6XFx0XFx0dTY0IHJlcSA9IFpQQ0lfQ1JFQVRFX1JFUSh6ZGV2LVxcdTAwM2VmaCwgMiwgOCk7XFxuIDI0ODpcXHRcXG4gMjQ5OlxcdFxcdHdoaWxlIChsZW4gXFx1MDAzZSAwKSB7XFxuIDI1MDpcXHRcXHRcXHRfX3pwY2lfbG9hZChkYXRhLCByZXEsIG9mZnNldCk7XFxuIDI1MTpcXHRcXHRcXHRvZmZzZXQgKz0gODtcXG4gMjUyOlxcdFxcdFxcdGRhdGEgKz0gODtcXG4gMjUzOlxcdFxcdFxcdGxlbiAtPSA4O1xcbiAyNTQ6XFx0XFx0fVxcbiAyNTU6XFx0fVxcbiAyNTY6XFx0XFxuIDI1NzpcXHRzdGF0aWMgaW5saW5lIHZvaWQgX19pc21fd3JpdGVfY21kKHN0cnVjdCBpc21fZGV2ICppc20sIHZvaWQgKmRhdGEsXFxuIDI1ODpcXHRcXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBsZW4pXFxuIDI1OTpcXHR7XFxuIDI2MDpcXHRcXHRzdHJ1Y3QgenBjaV9kZXYgKnpkZXYgPSB0b196cGNpKGlzbS1cXHUwMDNlcGRldik7XFxuIDI2MTpcXHRcXHR1NjQgcmVxID0gWlBDSV9DUkVBVEVfUkVRKHpkZXYtXFx1MDAzZWZoLCAyLCBsZW4pO1xcbiAyNjI6XFx0XFxuIDI2MzpcXHRcXHRpZiAobGVuKVxcbiAyNjQ6XFx0XFx0XFx0X196cGNpX3N0b3JlX2Jsb2NrKGRhdGEsIHJlcSwgb2Zmc2V0KTtcXG4gMjY1OlxcdH1cXG4gMjY2OlxcdFxcbiAyNjc6XFx0c3RhdGljIGlubGluZSBpbnQgX19pc21fbW92ZShzdHJ1Y3QgaXNtX2RldiAqaXNtLCB1NjQgZG1iX3JlcSwgdm9pZCAqZGF0YSxcXG4gMjY4OlxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IHNpemUpXFxuIDI2OTpcXHR7XFxuIDI3MDpcXHRcXHRzdHJ1Y3QgenBjaV9kZXYgKnpkZXYgPSB0b196cGNpKGlzbS1cXHUwMDNlcGRldik7XFxuIDI3MTpcXHRcXHR1NjQgcmVxID0gWlBDSV9DUkVBVEVfUkVRKHpkZXYtXFx1MDAzZWZoLCAwLCBzaXplKTtcXG4gMjcyOlxcdFxcbiAyNzM6XFx0XFx0cmV0dXJuIF9fenBjaV9zdG9yZV9ibG9jayhkYXRhLCByZXEsIGRtYl9yZXEpO1xcbiAyNzQ6XFx0fVxcbiAyNzU6XFx0XFxuIDI3NjpcXHQjZW5kaWYgLyogUzM5MF9JU01fSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxMDozMToxNi41OTk4MTgwNTFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDU1NDA3ODI1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIFRob3VnaHRzIG9uIHMzOTAgSVNNIHZQQ0kqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEknbSBzZWVpbmcgcmVmZXJlbmNlcyB0byBgX196cGNpX2xvYWRgLCBgX196cGNpX3N0b3JlX2Jsb2NrYCwgYHpwY2lfZGV2YCwgYW5kIHRoZSBJQk0gSVNNIHZQQ0kgQWRhcHRlci4gVGhpcyBpbW1lZGlhdGVseSBmbGFncyBteSByYWRhciBhcyBzMzkwIGFyY2hpdGVjdHVyZSB0ZXJyaXRvcnksIHNwZWNpZmljYWxseSBJQk0ncyB6L0FyY2hpdGVjdHVyZS4gQSBxdWljayB0aG91Z2h0IC0gaXMgdGhpcyBzb21ldGhpbmcgUUVNVSBlbXVsYXRlcz8gQ2FuIElTTSBldmVuIGJlIHZpcnR1YWxpemVkLCBlaXRoZXIgaW4gUUVNVSBvciBwZXJoYXBzIHNvbWV0aGluZyBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZT9cblxuSGFuZyBvbiwgYmVmb3JlIEkgZGl2ZSBpbnRvIGVtdWxhdGlvbiBzcGVjaWZpY3MsIEkgbmVlZCB0byBjb25maXJtIHdoYXQgXCJJU01cIiAqaXMqIGluIHRoaXMgY29udGV4dC4gQWgsIFwiSW50ZXJuYWwgU2hhcmVkIE1lbW9yeVwiIGFkYXB0ZXIgZm9yIElCTSBaIChzMzkweCkuIFNwZWNpZmljYWxseSwgdGhpcyBzZWVtcyB0byBiZSByZWxhdGVkIHRvIFNNQy1EIChTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zIC0gRGlyZWN0IG1lbW9yeSBhY2Nlc3MpIG9yIERJQlMgb3ZlciBJU00uIE9rYXksIHNvIG5vdyBJJ20gdGhpbmtpbmcsIGNhbiBhbiBJU00gZGV2aWNlIGV4aXN0IGluIHN0YW5kYXJkIFFFTVUgczM5MHg/IE9yIGlzIHRoaXMgYSBwcm9wcmlldGFyeSBJQk0gei9WTSAvIExQQVIgdmlydHVhbCBQQ0kgZGV2aWNlIHRoYXQgZnVuZGFtZW50YWxseSByZXF1aXJlcyBJQk0gWiBmaXJtd2FyZSwgbGlrZSB6L1ZNIG9yIHJ1bm5pbmcgd2l0aGluIGEgUFIvU00gTFBBUiBlbnZpcm9ubWVudD9cblxuVGhlIHJlYWwgcXVlc3Rpb24gaGVyZSwgZG9lcyBRRU1VIGV2ZW4gc3VwcG9ydCBJU00/IFRoaXMgbmVlZHMgdG8gYmUgY2xhcmlmaWVkLCBxdWlja2x5LiBMZXQgbWUgbG9vayBhdCB0aGUga2VybmVsIHNvdXJjZS4uLiBJJ2xsIGNoZWNrIGZvciBhbnkgb3RoZXIgcmVmZXJlbmNlcyBhbmQgdmVyaWZ5IGlmIElTTSBpcyBhY3R1YWxseSByZWNvZ25pemVkIGFzIGFuIElCTSB6IFBDSSBkZXZpY2Ugd2l0aCBpdHMgc3BlY2lmaWMgYFBDSV9ERVZJQ0VfSURfSUJNX0lTTWAgaWRlbnRpZmllci4gTGV0J3Mgc3RhcnQgd2l0aCBjaGVja2luZyB0aGF0IGBQQ0lfREVWSUNFX0lEX0lCTV9JU01gIGRlZmluaXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNDYzLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTA6MzE6MjEuMTUzODk4NTY1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTE1MTQ4ODgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBDSV9ERVZJQ0VfSURfSUJNX0lTTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jPTIxPURFQ0xBUkVfUENJX0ZJWFVQX0VBUkxZKFBDSV9WRU5ET1JfSURfSUJNLFxcbmFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmM6MjI6XFx0XFx0XFx0UENJX0RFVklDRV9JRF9JQk1fSVNNLFxcbmFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmMtMjMtXFx0XFx0XFx0enBjaV9pc21fYmFyX25vX21tYXApO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MjU9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGlzbV9kZXZpY2VfdGFibGVbXSA9IHtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoyNjpcXHR7IFBDSV9WREVWSUNFKElCTSwgUENJX0RFVklDRV9JRF9JQk1fSVNNKSB9LFxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTI3LVxcdHsgfVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jPTM4OD1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaXNtX2RldmljZV90YWJsZVtdID0ge1xcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYy0zODktXFx0eyBQQ0lfRFJJVkVSX09WRVJSSURFX0RFVklDRV9WRklPKFBDSV9WRU5ET1JfSURfSUJNLFxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYzozOTA6XFx0XFx0XFx0XFx0XFx0ICBQQ0lfREVWSUNFX0lEX0lCTV9JU00pIH0sXFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTM5MS1cXHR7fVxcbi0tXFxuaW5jbHVkZS9saW51eC9wY2lfaWRzLmgtNTIwLSNkZWZpbmUgUENJX0RFVklDRV9JRF9JQk1fSUNPTV9GT1VSX1BPUlRfTU9ERUxcXHQweDI1MlxcbmluY2x1ZGUvbGludXgvcGNpX2lkcy5oOjUyMTojZGVmaW5lIFBDSV9ERVZJQ0VfSURfSUJNX0lTTVxcdFxcdDB4MDRlZFxcbmluY2x1ZGUvbGludXgvcGNpX2lkcy5oLTUyMi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTA6MzE6MjIuNjY5MDUzNjY2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk3NTc5MzI5MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHdlbnQgZG93bjpcblxuKipESUJTLCBTTUMtRCwgYW5kIE1lbW9yeSBCYXJyaWVycyAtIExldCdzIERpZyBJbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gRElCUyBhbmQgU01DLUQuIFRoZSBxdWVzdGlvbiB0aGF0J3MgZHJpdmluZyBtZSBpcyB3aGV0aGVyIHRoZXNlIGBpc21fYWxsb2NfZG1iYCBhbmQgYGlzbV9mcmVlX2RtYmAgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBnZXR0aW5nIGhpdC4gVGhleSBhcmUgb2J2aW91c2x5IGltcG9ydGFudCwgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwYXRoIHRvIHRoZW0uXG5cbldhaXQgYSBzZWNvbmQsIERJQlMuLi4gd2hhdCBleGFjdGx5ICppcyogRElCUyBhZ2Fpbj8gSSBuZWVkIHRvIHF1aWNrbHkgcmVmcmVzaCBteSBtZW1vcnkgb24gdGhhdCBwaWVjZS4gTGV0IG1lIGdvIGNoZWNrIHRoZSBrZXJuZWwgZG9jdW1lbnRhdGlvbiBvciByZWxldmFudCBzb3VyY2UgZmlsZXMgb24gRElCUy4gR290IHRvIGhhdmUgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoYXQgYmVmb3JlIEkgY2FuIG1lYW5pbmdmdWxseSBjb250aW51ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ1MjEsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxMDozMTozMi40MjY5OTA1MjFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTU3Mzg0NTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0RJQlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTEzMz1DT05GSUdfU01DX0RJQUc9bVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxMzQ6Q09ORklHX0RJQlM9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxMzU6Q09ORklHX0RJQlNfTE89eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xMzYtQ09ORklHX1hEUF9TT0NLRVRTPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0xMjQ9Q09ORklHX1NNQ19ESUFHPW1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6MTI1OkNPTkZJR19ESUJTPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6MTI2OkNPTkZJR19ESUJTX0xPPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMTI3LUNPTkZJR19YRFBfU09DS0VUUz15XFxuLS1cXG5kcml2ZXJzL01ha2VmaWxlPTE5Nz1vYmoteVxcdFxcdFxcdFxcdCs9IHJlc2N0cmwvXFxuZHJpdmVycy9NYWtlZmlsZS0xOTgtXFxuZHJpdmVycy9NYWtlZmlsZToxOTk6b2JqLSQoQ09ORklHX0RJQlMpXFx0XFx0Kz0gZGlicy9cXG5kcml2ZXJzL01ha2VmaWxlLTIwMC1vYmotJChDT05GSUdfUzM5MClcXHRcXHQrPSBzMzkwL1xcbi0tXFxuZHJpdmVycy9kaWJzL01ha2VmaWxlPTY9ZGlicy15ICs9IGRpYnNfbWFpbi5vXFxuZHJpdmVycy9kaWJzL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX0RJQlMpICs9IGRpYnMub1xcbmRyaXZlcnMvZGlicy9NYWtlZmlsZTo4OmRpYnMtJChDT05GSUdfRElCU19MTykgKz0gZGlic19sb29wYmFjay5vXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTIwLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6MjE6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RJQlNfTE8pXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0yMi0jZGVmaW5lIERJQlNfTE9fRE1CU19IQVNIX0JJVFNcXHQxMlxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZz0xMzU9Q09ORklHX1NNQ19IU19DVFJMX0JQRj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZzoxMzY6Q09ORklHX0RJQlM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWc6MTM3OkNPTkZJR19ESUJTX0xPPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLTEzOC1DT05GSUdfUE1fV0FLRUxPQ0tTPXlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTA6MzE6MzMuOTIyNzMzNTUzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI2NTE5Mzc0MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIHMzOTAgTmV0d29yayBEcml2ZXIgUmVnaXN0cmF0aW9uKipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgZ3V0cyBvZiB0aGlzIHMzOTAgbmV0d29yayBkcml2ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIG91dCBgZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBwcmVjaXNlbHkgaG93IHRoaXMgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBESUJTIChEZXZpY2UgSW50ZXJmYWNlIEJsb2NrIFN0cnVjdHVyZSkgYW5kIHRoZSBQQ0kgc3Vic3lzdGVtLiBJJ20gYXNzdW1pbmcgaXQgcmVnaXN0ZXJzIGl0c2VsZiBzb21laG93LCBidXQgdGhlIGRldmlsIGlzIGFsd2F5cyBpbiB0aGUgZGV0YWlscywgaXNuJ3QgaXQ/IEkgd2FudCB0byBzZWUgdGhlIHNwZWNpZmljIHNlcXVlbmNlLCB0aGUgY2FsbHMsIHRoZSBkYXRhIHN0cnVjdHVyZXMgdXNlZC4gSSdtIGxvb2tpbmcgZm9yIHRoZSBzdGFuZGFyZCBQQ0kgcHJvYmUgYW5kIHJlZ2lzdHJhdGlvbiBzZXF1ZW5jZSwgYnV0IHdpdGggdGhlIGFkZGVkIHdyaW5rbGUgb2YgaG93IERJQlMgY29tZXMgaW50byBwbGF5IG9uIHMzOTAuIElzIGl0IHVzaW5nIHRoZSBzdGFuZGFyZCBgcGNpX3JlZ2lzdGVyX2RyaXZlcmAgd2l0aCBzb21lIHMzOTAtc3BlY2lmaWMgaG9va3MsIG9yIGlzIHRoZXJlIGEgbW9yZSBpbnZvbHZlZCBESUJTLWNlbnRyaWMgYXBwcm9hY2g/IExldCdzIGdldCByZWFkaW5nIGFuZCBmaWd1cmUgb3V0IHRoaXMgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gZGFuY2UuIEknbSBleHBlY3RpbmcgdG8gc2VlIGNhbGxzIGxpa2UgYGRpYnNfcmVnaXN0ZXJfZHJpdmVyYCBvciBzb21ldGhpbmcgc2ltaWxhciBpZiBpdCdzIGRldmlhdGluZyBmcm9tIHRoZSBzdGFuZGFyZCBQQ0kgaW5pdGlhbGl6YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MzE5LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTA6MzE6MzYuNTc0NjczMzYyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjc3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1NDAsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTQwOlxcdFxcdH1cXG4gNTQxOlxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrKTtcXG4gNTQyOlxcdFxcdHJldHVybiBJUlFfSEFORExFRDtcXG4gNTQzOlxcdH1cXG4gNTQ0OlxcdFxcbiA1NDU6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBkaWJzX2Rldl9vcHMgaXNtX29wcyA9IHtcXG4gNTQ2OlxcdFxcdC5nZXRfZmFicmljX2lkID0gaXNtX2dldF9jaGlkLFxcbiA1NDc6XFx0XFx0LnF1ZXJ5X3JlbW90ZV9naWQgPSBpc21fcXVlcnlfcmdpZCxcXG4gNTQ4OlxcdFxcdC5tYXhfZG1icyA9IGlzbV9tYXhfZG1icyxcXG4gNTQ5OlxcdFxcdC5yZWdpc3Rlcl9kbWIgPSBpc21fcmVnaXN0ZXJfZG1iLFxcbiA1NTA6XFx0XFx0LnVucmVnaXN0ZXJfZG1iID0gaXNtX3VucmVnaXN0ZXJfZG1iLFxcbiA1NTE6XFx0XFx0Lm1vdmVfZGF0YSA9IGlzbV9tb3ZlLFxcbiA1NTI6XFx0XFx0LmFkZF92bGFuX2lkID0gaXNtX2FkZF92bGFuX2lkLFxcbiA1NTM6XFx0XFx0LmRlbF92bGFuX2lkID0gaXNtX2RlbF92bGFuX2lkLFxcbiA1NTQ6XFx0XFx0LnNpZ25hbF9ldmVudCA9IGlzbV9zaWduYWxfaWVxLFxcbiA1NTU6XFx0fTtcXG4gNTU2OlxcdFxcbiA1NTc6XFx0c3RhdGljIGludCBpc21fZGV2X2luaXQoc3RydWN0IGlzbV9kZXYgKmlzbSlcXG4gNTU4OlxcdHtcXG4gNTU5OlxcdFxcdHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gaXNtLVxcdTAwM2VwZGV2O1xcbiA1NjA6XFx0XFx0aW50IHJldDtcXG4gNTYxOlxcdFxcbiA1NjI6XFx0XFx0cmV0ID0gcGNpX2FsbG9jX2lycV92ZWN0b3JzKHBkZXYsIDEsIDEsIFBDSV9JUlFfTVNJKTtcXG4gNTYzOlxcdFxcdGlmIChyZXQgXFx1MDAzYz0gMClcXG4gNTY0OlxcdFxcdFxcdGdvdG8gb3V0O1xcbiA1NjU6XFx0XFxuIDU2NjpcXHRcXHRyZXQgPSByZXF1ZXN0X2lycShwY2lfaXJxX3ZlY3RvcihwZGV2LCAwKSwgaXNtX2hhbmRsZV9pcnEsIDAsXFxuIDU2NzpcXHRcXHRcXHRcXHQgIHBjaV9uYW1lKHBkZXYpLCBpc20pO1xcbiA1Njg6XFx0XFx0aWYgKHJldClcXG4gNTY5OlxcdFxcdFxcdGdvdG8gZnJlZV92ZWN0b3JzO1xcbiA1NzA6XFx0XFxuIDU3MTpcXHRcXHRyZXQgPSByZWdpc3Rlcl9zYmEoaXNtKTtcXG4gNTcyOlxcdFxcdGlmIChyZXQpXFxuIDU3MzpcXHRcXHRcXHRnb3RvIGZyZWVfaXJxO1xcbiA1NzQ6XFx0XFxuIDU3NTpcXHRcXHRyZXQgPSByZWdpc3Rlcl9pZXEoaXNtKTtcXG4gNTc2OlxcdFxcdGlmIChyZXQpXFxuIDU3NzpcXHRcXHRcXHRnb3RvIHVucmVnX3NiYTtcXG4gNTc4OlxcdFxcbiA1Nzk6XFx0XFx0cXVlcnlfaW5mbyhpc20pO1xcbiA1ODA6XFx0XFx0cmV0dXJuIDA7XFxuIDU4MTpcXHRcXG4gNTgyOlxcdHVucmVnX3NiYTpcXG4gNTgzOlxcdFxcdHVucmVnaXN0ZXJfc2JhKGlzbSk7XFxuIDU4NDpcXHRcXHRpc21fZnJlZV9zYmEoaXNtKTtcXG4gNTg1OlxcdGZyZWVfaXJxOlxcbiA1ODY6XFx0XFx0ZnJlZV9pcnEocGNpX2lycV92ZWN0b3IocGRldiwgMCksIGlzbSk7XFxuIDU4NzpcXHRmcmVlX3ZlY3RvcnM6XFxuIDU4ODpcXHRcXHRwY2lfZnJlZV9pcnFfdmVjdG9ycyhwZGV2KTtcXG4gNTg5OlxcdG91dDpcXG4gNTkwOlxcdFxcdHJldHVybiByZXQ7XFxuIDU5MTpcXHR9XFxuIDU5MjpcXHRcXG4gNTkzOlxcdHN0YXRpYyB2b2lkIGlzbV9kZXZfZXhpdChzdHJ1Y3QgaXNtX2RldiAqaXNtKVxcbiA1OTQ6XFx0e1xcbiA1OTU6XFx0XFx0c3RydWN0IHBjaV9kZXYgKnBkZXYgPSBpc20tXFx1MDAzZXBkZXY7XFxuIDU5NjpcXHRcXG4gNTk3OlxcdFxcdC8qIGlzbSB3aWxsIG9ubHkgZ2VuZXJhdGUgbmV3IElSUXMgd2hpbGUgaWVxIFxcdTAwMjYgc2JhIGFyZSByZWdpc3RlcmVkICovXFxuIDU5ODpcXHRcXHR1bnJlZ2lzdGVyX2llcShpc20pO1xcbiA1OTk6XFx0XFx0dW5yZWdpc3Rlcl9zYmEoaXNtKTtcXG4gNjAwOlxcdFxcdC8qIGRyYWluIG9uZ29pbmcgaXJwdCBoYW5kbGVycyAqL1xcbiA2MDE6XFx0XFx0ZnJlZV9pcnEocGNpX2lycV92ZWN0b3IocGRldiwgMCksIGlzbSk7XFxuIDYwMjpcXHRcXHRpc21fZnJlZV9pZXEoaXNtKTtcXG4gNjAzOlxcdFxcdGlzbV9mcmVlX3NiYShpc20pO1xcbiA2MDQ6XFx0XFx0cGNpX2ZyZWVfaXJxX3ZlY3RvcnMocGRldik7XFxuIDYwNTpcXHR9XFxuIDYwNjpcXHRcXG4gNjA3OlxcdHN0YXRpYyBpbnQgaXNtX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuIDYwODpcXHR7XFxuIDYwOTpcXHRcXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XFxuIDYxMDpcXHRcXHRzdHJ1Y3QgenBjaV9kZXYgKnpkZXY7XFxuIDYxMTpcXHRcXHRzdHJ1Y3QgaXNtX2RldiAqaXNtO1xcbiA2MTI6XFx0XFx0aW50IHJldDtcXG4gNjEzOlxcdFxcbiA2MTQ6XFx0XFx0aXNtID0ga3phbGxvY19vYmooKmlzbSk7XFxuIDYxNTpcXHRcXHRpZiAoIWlzbSlcXG4gNjE2OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiA2MTc6XFx0XFxuIDYxODpcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2aXNtLVxcdTAwM2VjbWRfbG9jayk7XFxuIDYxOTpcXHRcXHRkZXZfc2V0X2RydmRhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgaXNtKTtcXG4gNjIwOlxcdFxcdGlzbS1cXHUwMDNlcGRldiA9IHBkZXY7XFxuIDYyMTpcXHRcXG4gNjIyOlxcdFxcdHJldCA9IHBjaV9lbmFibGVfZGV2aWNlX21lbShwZGV2KTtcXG4gNjIzOlxcdFxcdGlmIChyZXQpXFxuIDYyNDpcXHRcXHRcXHRnb3RvIGVycl9kZXY7XFxuIDYyNTpcXHRcXG4gNjI2OlxcdFxcdHJldCA9IHBjaV9yZXF1ZXN0X21lbV9yZWdpb25zKHBkZXYsIERSVl9OQU1FKTtcXG4gNjI3OlxcdFxcdGlmIChyZXQpXFxuIDYyODpcXHRcXHRcXHRnb3RvIGVycl9kaXNhYmxlO1xcbiA2Mjk6XFx0XFxuIDYzMDpcXHRcXHRyZXQgPSBkbWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIERNQV9CSVRfTUFTSyg2NCkpO1xcbiA2MzE6XFx0XFx0aWYgKHJldClcXG4gNjMyOlxcdFxcdFxcdGdvdG8gZXJyX3Jlc291cmNlO1xcbiA2MzM6XFx0XFxuIDYzNDpcXHRcXHRkbWFfc2V0X3NlZ19ib3VuZGFyeShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBTWl8xTSAtIDEpO1xcbiA2MzU6XFx0XFx0ZG1hX3NldF9tYXhfc2VnX3NpemUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgU1pfMU0pO1xcbiA2MzY6XFx0XFx0cGNpX3NldF9tYXN0ZXIocGRldik7XFxuIDYzNzpcXHRcXG4gNjM4OlxcdFxcdGRpYnMgPSBkaWJzX2Rldl9hbGxvYygpO1xcbiA2Mzk6XFx0XFx0aWYgKCFkaWJzKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDEwOjMxOjM2LjU3NDc3NzQ0MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2NDI4MzQ3MjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBpc21fZHJ2LmNgIFByb2JlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYGlzbV9wcm9iZWAgaXMgY2xlYXJseSB0aWVkIHRvIGEgc3BlY2lmaWMgSUJNIElTTSBQQ0kgZGV2aWNlLCBpZGVudGlmaWVkIGJ5IGBQQ0lfREVWSUNFX0lEX0lCTV9JU01gLiBJIGltbWVkaWF0ZWx5IHJlY2FsbCB0aGF0IGBpc21fZHJ2LmNgIGlzIG9ubHkgYnVpbHQgaWYgYENPTkZJR19JU01gIGlzIGVuYWJsZWQsIHdoaWNoLCBkaWdnaW5nIGEgYml0LCBpcyBjb250cm9sbGVkIGJ5IHRoZSBgZHJpdmVycy9zMzkwL25ldC9LY29uZmlnYCBmaWxlLiBGdXJ0aGVybW9yZSwgdGhhdCBzcGVjaWZpYyBgS2NvbmZpZ2AgZmlsZSBpcyBvbmx5IHNvdXJjZWQgaWYgdGhlIGVudGlyZSBgczM5MGAgYXJjaGl0ZWN0dXJlIGlzIGVuYWJsZWQgdmlhIGBDT05GSUdfUzM5MD15YC4gTXkgYmFja2dyb3VuZCBhbGxvd3MgbWUgdG8gaW5mZXIgdGhhdCBgaXNtYCBsaWtlbHkgcmVmZXJzIHRvIGEgaGFyZHdhcmUgb3IgaHlwZXJ2aXNvci1zcGVjaWZpYyB2aXJ0dWFsIFBDSSBhZGFwdGVyLCBleGNsdXNpdmUgdG8gdGhlIElCTSBaIChzMzkweCkgbWFpbmZyYW1lIGFyY2hpdGVjdHVyZS5cblxuTm93LCBJJ20gdGhpbmtpbmcgYWJvdXQgZnV6emluZyBhbmQgdmlydHVhbCBlbnZpcm9ubWVudHMuIERvZXMgc3l6a2FsbGVyIG9yIGEgdmlydHVhbGl6ZWQgc2V0dXAgbGlrZSBRRU1VIG9yIEdDRSBldmVuIHRvdWNoIGBpc21fZHJ2LmNgPyBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyBpZiBgUENJX0RFVklDRV9JRF9JQk1fSVNNYCBpcyBlbXVsYXRhYmxlIGluIHN0YW5kYXJkIFFFTVUuIEdpdmVuIGl0cyBJQk0gWiBzcGVjaWZpYyBuYXR1cmUsIEkgc3Ryb25nbHkgc3VzcGVjdCBpdCdzIG5vdC4gSSBrbm93IGZyb20gbXkgd29yayB0aGF0IFFFTVUgZG9lc24ndCBlbXVsYXRlIHRoZSBpbnRyaWNhY2llcyBvZiB0aGUgSUJNIElTTSBQQ0kgZGV2aWNlLCBwYXJ0aWN1bGFybHkgdGhlIGB6cGNpYCBpbnN0cnVjdGlvbiBleGVjdXRpb24gd2l0aCB0aGUgSVNNIGNvbW1hbmQgaW50ZXJmYWNlLiBJdCdzIGEga2V5IHBvaW50LlxuXG5JIGhhdmUgYW4gdW5kZXJzdGFuZGluZyBvZiB0aGUgY3JpdGVyaWEgZm9yIGRldGVybWluaW5nIGlmIGEgcGF0Y2ggaXMgXCJXb3J0aEZ1enppbmcuXCIgSSBxdWlja2x5IHNjYW4gdGhlIGxpc3Qgb2YgZXhjZXB0aW9ucy4gSSBzZWUgaXRlbXMgdGhhdCB0cmlnZ2VyIHJlZCBmbGFncy4gTXkgdGhvdWdodHMgYXJlOiBJcyB0aGlzIGEgbW9kaWZpY2F0aW9uIHRvIGRvY3VtZW50YXRpb24sIEtjb25maWcsIG9yIGNvbW1lbnRzPyBPciBpcyBpdCBhIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZT8gVGhhdCB3b3VsZCBtYWtlIGl0IG5vdCB3b3J0aCBmdXp6aW5nLiBJcyBpdCB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCBRRU1VPyBPciBpcyBpdCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVyLCBvciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3M/IEluIHRoaXMgY2FzZSwgaXMgaXQgYWJvdXQgdGhlIHMzOTAgSVNNP1xuXG5UaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgSVNNIGlzIGdlbnVpbmVseSBlbXVsYXRlZCB3aXRoaW4gUUVNVSwgb3IgaWYgaXQncyBmdW5kYW1lbnRhbGx5IGEgaGFyZHdhcmUtc3BlY2lmaWMgb3Igei9WTS1zcGVjaWZpYyBQQ0kgZGV2aWNlLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIEkgbmVlZCB0byBzcGVjaWZpY2FsbHkgY2hlY2sgUUVNVSdzIGRvY3VtZW50YXRpb24gZm9yIGFueSBJU00gZGV2aWNlIHN1cHBvcnQuXG5cbkNoZWNraW5nIFFFTVUsIHRoZSBzMzkweCB0YXJnZXQgaW5jbHVkZXMgZmVhdHVyZXMgbGlrZSBgczM5MC1wY2ktYnVzYCBhbmQgYHMzOTAtcGNpLWRldmljZWAsIGxpa2VseSBmb3IgcGFzc3Rocm91Z2ggKHZmaW8tcGNpKS4gSG93ZXZlciwgYW5kIHRoaXMgaXMgY3J1Y2lhbCwgUUVNVSAqZG9lcyBub3QqIGhhdmUgYW4gZW11bGF0ZWQgSVNNIGRldmljZS4gRnJvbSB3aGF0IEkndmUgc2VlbiwgSVNNIGRldmljZXMgKm9ubHkqIGV4aXN0IGluIHMzOTB4IFFFTVUgdGhyb3VnaCBWRklPIHBhc3N0aHJvdWdoLCByZXF1aXJpbmcgYSByZWFsIElCTSBJU00gdmlydHVhbCBQQ0kgZnVuY3Rpb24gZnJvbSBhbiBJQk0gWiBob3N0LlxuXG5GaW5hbGx5LCBJJ2xsIHF1aWNrbHkgY2hlY2sgdGhlIERJQlMgbG9vcGJhY2sgKGBDT05GSUdfRElCU19MT2AgaW4gYGRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmNgKSBhcyBhIGZpbmFsLCByZW1vdGUgcG9zc2liaWxpdHkuIERvZXMgdGhhdCBsb29wYmFjayBjb2RlIGludGVyZmFjZSB3aXRoIGBpc21fZHJ2LmNgPyBJJ2xsIG5lZWQgdG8gY29uZmlybSBieSBxdWlja2x5IGNoZWNraW5nIGBkcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcxNjIsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxMDozMTo0My4wMDMxMjY3NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUxOTYyODU1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpc21fYWxsb2NfZG1iXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTIyOD1zdGF0aWMgdm9pZCBpc21fZnJlZV9kbWIoc3RydWN0IGlzbV9kZXYgKmlzbSwgc3RydWN0IGRpYnNfZG1iICpkbWIpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yMzYtXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MjM3OnN0YXRpYyBpbnQgaXNtX2FsbG9jX2RtYihzdHJ1Y3QgaXNtX2RldiAqaXNtLCBzdHJ1Y3QgZGlic19kbWIgKmRtYilcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yMzgte1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9Mjg1PXN0YXRpYyBpbnQgaXNtX3JlZ2lzdGVyX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHN0cnVjdCBkaWJzX2RtYiAqZG1iLFxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjkyLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjI5MzpcXHRyZXQgPSBpc21fYWxsb2NfZG1iKGlzbSwgZG1iKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yOTQtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTA6MzE6NDQuNTIyNzU5OTkyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMwNTU3MDY2MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYGRpYnNfbG9vcGJhY2suY2AqKlxuXG5Pa2F5LCB0aW1lIHRvIGNyYWNrIG9wZW4gYGRpYnNfbG9vcGJhY2suY2AuIExldCdzIHNlZSB3aGF0J3MgZ29pbmcgb24gaW4gdGhpcyBwYXJ0aWN1bGFyIGNvcm5lciBvZiB0aGUgY29kZWJhc2UuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhpcyBsb29wYmFjayBmdW5jdGlvbmFsaXR5IGlzIGltcGxlbWVudGVkIOKAkyBJIGtub3cgdGhlIGdlbmVyYWwgYXJjaGl0ZWN0dXJlLCBidXQgdGhlIHNwZWNpZmljcyBhcmUgYWx3YXlzIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBiaXRzIGxpdmUuIEknbSBwcmltYXJpbHkgbG9va2luZyBmb3IgdGhlIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBjcml0aWNhbCBwYXRoIGxvZ2ljLiBBcmUgdGhleSB1c2luZyBhbnkgY2xldmVyIHN5bmNocm9uaXphdGlvbiB0ZWNobmlxdWVzPyBBbnkgbm9uLW9idmlvdXMgb3B0aW1pemF0aW9ucz8gSSB3YW50IHRvIHF1aWNrbHkgaWRlbnRpZnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIHByb25lIHRvIHJhY2UgY29uZGl0aW9ucy4gSSdtIGFsc28ga2VlcGluZyBhbiBleWUgb3V0IGZvciBob3cgdGhleSBoYW5kbGUgZXJyb3IgY29uZGl0aW9ucyBhbmQgcmVzb3VyY2UgY2xlYW51cDsgYSBjb21tb24gc291cmNlIG9mIHN1YnRsZSBidWdzLiBJ4oCZbGwgc3RhcnQgYnkgdHJhY2luZyBhIHR5cGljYWwgZGF0YSBmbG93LCBmb2N1c2luZyBvbiByZWFkcyBhbmQgd3JpdGVzLCBsb29raW5nIGZvciBob3cgZGF0YSBpcyBtYW5hZ2VkIGJldHdlZW4gdGhlIGxheWVycyBhbmQgd2hldGhlciB0aGUgZGVzaWduIGlzIGVmZmljaWVudCBmcm9tIGEgcGVyZm9ybWFuY2UgcG9pbnQgb2Ygdmlldy4gU3BlY2lmaWNhbGx5IEknbGwgYmUgbG9va2luZyBmb3IgYW55IGhpbnRzIG9mIGFuIGltcGxlbWVudGF0aW9uIHRoYXQgbWlnaHQgYmUgcHJvbmUgdG8gYnVmZmVyIG92ZXJmbG93cywgb2ZmLWJ5LW9uZSBlcnJvcnMsIG9yIG90aGVyIGNvbW1vbiBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZXMsIHNvIEkga25vdyB3aGVyZSB0byBmb2N1cyBteSBhdHRlbnRpb24uIEl0J3MgdGltZSB0byBwdXQgb24gbXkgZGVidWdnaW5nIGhhdCBhbmQgZGlnIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODg1MiwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDEwOjMxOjQ3LjU3ODQ2OTMwNFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4ODQ3NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG1iXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZGlic1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jPTM0PXN0YXRpYyBpbnQgZGlic19sb19xdWVyeV9yZ2lkKHN0cnVjdCBkaWJzX2RldiAqZGlicywgY29uc3QgdXVpZF90ICpyZ2lkLFxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy00Mi1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjQzOnN0YXRpYyBpbnQgZGlic19sb19tYXhfZG1icyh2b2lkKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNDQte1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy00Ny1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjQ4OnN0YXRpYyBpbnQgZGlic19sb19yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYixcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTQ5LVxcdFxcdFxcdFxcdHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50KVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNTAte1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6NTE6XFx0c3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKmRtYl9ub2RlLCAqdG1wX25vZGU7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy01Mi1cXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTU3LVxcdGxkZXYgPSBkaWJzLVxcdTAwM2VkcnZfcHJpdjtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjU4OlxcdHNiYV9pZHggPSBkbWItXFx1MDAzZWlkeDtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjU5OlxcdC8qIGNoZWNrIHNwYWNlIGZvciBuZXcgZG1iICovXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy02MC1cXHRmb3JfZWFjaF9jbGVhcl9iaXQoc2JhX2lkeCwgbGRldi1cXHUwMDNlc2JhX2lkeF9tYXNrLCBESUJTX0xPX01BWF9ETUJTKSB7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTY2LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Njc6XFx0ZG1iX25vZGUgPSBremFsbG9jX29iaigqZG1iX25vZGUpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Njg6XFx0aWYgKCFkbWJfbm9kZSkge1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNjktXFx0XFx0cmMgPSAtRU5PTUVNO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy03Mi1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjczOlxcdGRtYl9ub2RlLVxcdTAwM2VzYmFfaWR4ID0gc2JhX2lkeDtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjc0OlxcdGRtYl9ub2RlLVxcdTAwM2VsZW4gPSBkbWItXFx1MDAzZWRtYl9sZW47XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy03NS1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNzgtXFx0XFx0XFx0ICAgIF9fR0ZQX05PUkVUUlkgfCBfX0dGUF9aRVJPLFxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Nzk6XFx0XFx0XFx0ICAgIGdldF9vcmRlcihkbWJfbm9kZS1cXHUwMDNlbGVuKSk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy04MC1cXHRpZiAoIWZvbGlvKSB7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTgzLVxcdH1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjg0OlxcdGRtYl9ub2RlLVxcdTAwM2VjcHVfYWRkciA9IGZvbGlvX2FkZHJlc3MoZm9saW8pO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6ODU6XFx0ZG1iX25vZGUtXFx1MDAzZWRtYV9hZGRyID0gRElCU19ETUFfQUREUl9JTlZBTElEO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6ODY6XFx0cmVmY291bnRfc2V0KFxcdTAwMjZkbWJfbm9kZS1cXHUwMDNlcmVmY250LCAxKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTg3LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtODgtYWdhaW46XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo4OTpcXHQvKiBhZGQgbmV3IGRtYiBpbnRvIGhhc2ggdGFibGUgKi9cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjkwOlxcdGdldF9yYW5kb21fYnl0ZXMoXFx1MDAyNmRtYl9ub2RlLVxcdTAwM2V0b2tlbiwgc2l6ZW9mKGRtYl9ub2RlLVxcdTAwM2V0b2tlbikpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6OTE6XFx0d3JpdGVfbG9ja19iaChcXHUwMDI2bGRldi1cXHUwMDNlZG1iX2h0X2xvY2spO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6OTI6XFx0aGFzaF9mb3JfZWFjaF9wb3NzaWJsZShsZGV2LVxcdTAwM2VkbWJfaHQsIHRtcF9ub2RlLCBsaXN0LCBkbWJfbm9kZS1cXHUwMDNldG9rZW4pIHtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjkzOlxcdFxcdGlmICh0bXBfbm9kZS1cXHUwMDNldG9rZW4gPT0gZG1iX25vZGUtXFx1MDAzZXRva2VuKSB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo5NDpcXHRcXHRcXHR3cml0ZV91bmxvY2tfYmgoXFx1MDAyNmxkZXYtXFx1MDAzZWRtYl9odF9sb2NrKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTk1LVxcdFxcdFxcdGdvdG8gYWdhaW47XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTk3LVxcdH1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjk4OlxcdGhhc2hfYWRkKGxkZXYtXFx1MDAzZWRtYl9odCwgXFx1MDAyNmRtYl9ub2RlLVxcdTAwM2VsaXN0LCBkbWJfbm9kZS1cXHUwMDNldG9rZW4pO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6OTk6XFx0d3JpdGVfdW5sb2NrX2JoKFxcdTAwMjZsZGV2LVxcdTAwM2VkbWJfaHRfbG9jayk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMDA6XFx0YXRvbWljX2luYyhcXHUwMDI2bGRldi1cXHUwMDNlZG1iX2NudCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMDEtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMDI6XFx0ZG1iLVxcdTAwM2VpZHggPSBkbWJfbm9kZS1cXHUwMDNlc2JhX2lkeDtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEwMzpcXHRkbWItXFx1MDAzZWRtYl90b2sgPSBkbWJfbm9kZS1cXHUwMDNldG9rZW47XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMDQ6XFx0ZG1iLVxcdTAwM2VjcHVfYWRkciA9IGRtYl9ub2RlLVxcdTAwM2VjcHVfYWRkcjtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEwNTpcXHRkbWItXFx1MDAzZWRtYV9hZGRyID0gZG1iX25vZGUtXFx1MDAzZWRtYV9hZGRyO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTA2OlxcdGRtYi1cXHUwMDNlZG1iX2xlbiA9IGRtYl9ub2RlLVxcdTAwM2VsZW47XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMDctXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMDgtXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEwOTpcXHRkaWJzLVxcdTAwM2VkbWJfY2xpZW50aWRfYXJyW3NiYV9pZHhdID0gY2xpZW50LVxcdTAwM2VpZDtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTExMC1cXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTExNC1lcnJfbm9kZTpcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjExNTpcXHRrZnJlZShkbWJfbm9kZSk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMTYtZXJyX2JpdDpcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTIwLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTIxOnN0YXRpYyB2b2lkIGRpYnNfbG9fZnJlZV9kbWIoc3RydWN0IGRpYnNfbG9fZGV2ICpsZGV2LFxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTIyOlxcdFxcdFxcdCAgICAgc3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKmRtYl9ub2RlKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTIzLXtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEyNDpcXHRjbGVhcl9iaXQoZG1iX25vZGUtXFx1MDAzZXNiYV9pZHgsIGxkZXYtXFx1MDAzZXNiYV9pZHhfbWFzayk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMjU6XFx0Zm9saW9fcHV0KHZpcnRfdG9fZm9saW8oZG1iX25vZGUtXFx1MDAzZWNwdV9hZGRyKSk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMjY6XFx0a2ZyZWUoZG1iX25vZGUpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTI3LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTI4OlxcdGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KFxcdTAwMjZsZGV2LVxcdTAwM2VkbWJfY250KSlcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTEyOS1cXHRcXHR3YWtlX3VwKFxcdTAwMjZsZGV2LVxcdTAwM2VsZGV2X3JlbGVhc2UpO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMzEtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMzI6c3RhdGljIGludCBkaWJzX2xvX3VucmVnaXN0ZXJfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgc3RydWN0IGRpYnNfZG1iICpkbWIpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMzMte1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTM0OlxcdHN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlICpkbWJfbm9kZSA9IE5VTEwsICp0bXBfbm9kZTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTEzNS1cXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE0MC1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE0MTpcXHQvKiBmaW5kIGRtYiBmcm9tIGhhc2ggdGFibGUgKi9cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE0MjpcXHR3cml0ZV9sb2NrX2JoKFxcdTAwMjZsZGV2LVxcdTAwM2VkbWJfaHRfbG9jayk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNDM6XFx0aGFzaF9mb3JfZWFjaF9wb3NzaWJsZShsZGV2LVxcdTAwM2VkbWJfaHQsIHRtcF9ub2RlLCBsaXN0LCBkbWItXFx1MDAzZWRtYl90b2spIHtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE0NDpcXHRcXHRpZiAodG1wX25vZGUtXFx1MDAzZXRva2VuID09IGRtYi1cXHUwMDNlZG1iX3Rvaykge1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTQ1OlxcdFxcdFxcdGRtYl9ub2RlID0gdG1wX25vZGU7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNDYtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE0OC1cXHR9XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNDk6XFx0aWYgKCFkbWJfbm9kZSkge1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTUwOlxcdFxcdHdyaXRlX3VubG9ja19iaChcXHUwMDI2bGRldi1cXHUwMDNlZG1iX2h0X2xvY2spO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTUxLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTUyLVxcdH1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE1MzpcXHRsYXN0ID0gcmVmY291bnRfZGVjX2FuZF90ZXN0KFxcdTAwMjZkbWJfbm9kZS1cXHUwMDNlcmVmY250KTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE1NC1cXHRpZiAobGFzdClcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE1NTpcXHRcXHRoYXNoX2RlbChcXHUwMDI2ZG1iX25vZGUtXFx1MDAzZWxpc3QpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTU2OlxcdHdyaXRlX3VubG9ja19iaChcXHUwMDI2bGRldi1cXHUwMDNlZG1iX2h0X2xvY2spO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTU3LVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNTktXFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE2MDpcXHRcXHRkaWJzLVxcdTAwM2VkbWJfY2xpZW50aWRfYXJyW2RtYl9ub2RlLVxcdTAwM2VzYmFfaWR4XSA9IE5PX0RJQlNfQ0xJRU5UO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTYxLVxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2Mi1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE2MzpcXHRcXHRkaWJzX2xvX2ZyZWVfZG1iKGxkZXYsIGRtYl9ub2RlKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2NC1cXHR9XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2Ny1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE2ODpzdGF0aWMgaW50IGRpYnNfbG9fc3VwcG9ydF9kbWJfbm9jb3B5KHN0cnVjdCBkaWJzX2RldiAqZGlicylcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2OS17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE3Mi1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE3MzpzdGF0aWMgaW50IGRpYnNfbG9fYXR0YWNoX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHN0cnVjdCBkaWJzX2RtYiAqZG1iKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTc0LXtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE3NTpcXHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqZG1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNzYtXFx0c3RydWN0IGRpYnNfbG9fZGV2ICpsZGV2O1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNzktXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxODA6XFx0LyogZmluZCBkbWJfbm9kZSBhY2NvcmRpbmcgdG8gZG1iLVxcdTAwM2VkbWJfdG9rICovXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxODE6XFx0cmVhZF9sb2NrX2JoKFxcdTAwMjZsZGV2LVxcdTAwM2VkbWJfaHRfbG9jayk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxODI6XFx0aGFzaF9mb3JfZWFjaF9wb3NzaWJsZShsZGV2LVxcdTAwM2VkbWJfaHQsIHRtcF9ub2RlLCBsaXN0LCBkbWItXFx1MDAzZWRtYl90b2spIHtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE4MzpcXHRcXHRpZiAodG1wX25vZGUtXFx1MDAzZXRva2VuID09IGRtYi1cXHUwMDNlZG1iX3Rvaykge1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTg0OlxcdFxcdFxcdGRtYl9ub2RlID0gdG1wX25vZGU7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xODUtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE4Ny1cXHR9XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxODg6XFx0aWYgKCFkbWJfbm9kZSkge1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTg5OlxcdFxcdHJlYWRfdW5sb2NrX2JoKFxcdTAwMjZsZGV2LVxcdTAwM2VkbWJfaHRfbG9jayk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xOTAtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xOTEtXFx0fVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTkyOlxcdHJlZmNvdW50X2luYyhcXHUwMDI2ZG1iX25vZGUtXFx1MDAzZXJlZmNudCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxOTM6XFx0cmVhZF91bmxvY2tfYmgoXFx1MDAyNmxkZXYtXFx1MDAzZWRtYl9odF9sb2NrKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE5NC1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE5NTpcXHQvKiBwcm92aWRlIGRtYiBpbmZvcm1hdGlvbiAqL1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTk2OlxcdGRtYi1cXHUwMDNlaWR4ID0gZG1iX25vZGUtXFx1MDAzZXNiYV9pZHg7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxOTc6XFx0ZG1iLVxcdTAwM2VkbWJfdG9rID0gZG1iX25vZGUtXFx1MDAzZXRva2VuO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTk4OlxcdGRtYi1cXHUwMDNlY3B1X2FkZHIgPSBkbWJfbm9kZS1cXHUwMDNlY3B1X2FkZHI7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxOTk6XFx0ZG1iLVxcdTAwM2VkbWFfYWRkciA9IGRtYl9ub2RlLVxcdTAwM2VkbWFfYWRkcjtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIwMDpcXHRkbWItXFx1MDAzZWRtYl9sZW4gPSBkbWJfbm9kZS1cXHUwMDNlbGVuO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjAxLVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMDMtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMDQ6c3RhdGljIGludCBkaWJzX2xvX2RldGFjaF9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgdG9rZW4pXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMDUte1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjA2OlxcdHN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlICpkbWJfbm9kZSA9IE5VTEwsICp0bXBfbm9kZTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIwNy1cXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIxMS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIxMjpcXHQvKiBmaW5kIGRtYl9ub2RlIGFjY29yZGluZyB0byBkbWItXFx1MDAzZWRtYl90b2sgKi9cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIxMzpcXHR3cml0ZV9sb2NrX2JoKFxcdTAwMjZsZGV2LVxcdTAwM2VkbWJfaHRfbG9jayk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMTQ6XFx0aGFzaF9mb3JfZWFjaF9wb3NzaWJsZShsZGV2LVxcdTAwM2VkbWJfaHQsIHRtcF9ub2RlLCBsaXN0LCB0b2tlbikge1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjE1LVxcdFxcdGlmICh0bXBfbm9kZS1cXHUwMDNldG9rZW4gPT0gdG9rZW4pIHtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIxNjpcXHRcXHRcXHRkbWJfbm9kZSA9IHRtcF9ub2RlO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjE3LVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMTktXFx0fVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjIwOlxcdGlmICghZG1iX25vZGUpIHtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIyMTpcXHRcXHR3cml0ZV91bmxvY2tfYmgoXFx1MDAyNmxkZXYtXFx1MDAzZWRtYl9odF9sb2NrKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIyMi1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIyMy1cXHR9XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMjQ6XFx0bGFzdCA9IHJlZmNvdW50X2RlY19hbmRfdGVzdChcXHUwMDI2ZG1iX25vZGUtXFx1MDAzZXJlZmNudCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMjUtXFx0aWYgKGxhc3QpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMjY6XFx0XFx0aGFzaF9kZWwoXFx1MDAyNmRtYl9ub2RlLVxcdTAwM2VsaXN0KTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIyNzpcXHR3cml0ZV91bmxvY2tfYmgoXFx1MDAyNmxkZXYtXFx1MDAzZWRtYl9odF9sb2NrKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIyOC1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIyOS1cXHRpZiAobGFzdClcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIzMDpcXHRcXHRkaWJzX2xvX2ZyZWVfZG1iKGxkZXYsIGRtYl9ub2RlKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIzMS1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjM0LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjM1OnN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvayxcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIzNi1cXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBpZHgsIGJvb2wgc2YsIHVuc2lnbmVkIGludCBvZmZzZXQsXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIzOC17XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMzk6XFx0c3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKnJtYl9ub2RlID0gTlVMTCwgKnRtcF9ub2RlO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjQwLVxcdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjQ2LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjQ3OlxcdHJlYWRfbG9ja19iaChcXHUwMDI2bGRldi1cXHUwMDNlZG1iX2h0X2xvY2spO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjQ4OlxcdGhhc2hfZm9yX2VhY2hfcG9zc2libGUobGRldi1cXHUwMDNlZG1iX2h0LCB0bXBfbm9kZSwgbGlzdCwgZG1iX3Rvaykge1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjQ5OlxcdFxcdGlmICh0bXBfbm9kZS1cXHUwMDNldG9rZW4gPT0gZG1iX3Rvaykge1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjUwLVxcdFxcdFxcdHJtYl9ub2RlID0gdG1wX25vZGU7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI1NC1cXHRpZiAoIXJtYl9ub2RlKSB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNTU6XFx0XFx0cmVhZF91bmxvY2tfYmgoXFx1MDAyNmxkZXYtXFx1MDAzZWRtYl9odF9sb2NrKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI1Ni1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjU4LVxcdGlmICgodTY0KW9mZnNldCArIHNpemUgXFx1MDAzZSBybWJfbm9kZS1cXHUwMDNlbGVuKSB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNTk6XFx0XFx0cmVhZF91bmxvY2tfYmgoXFx1MDAyNmxkZXYtXFx1MDAzZWRtYl9odF9sb2NrKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI2MC1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjY0LVxcdHNiYV9pZHggPSBybWJfbm9kZS1cXHUwMDNlc2JhX2lkeDtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI2NTpcXHRyZWFkX3VubG9ja19iaChcXHUwMDI2bGRldi1cXHUwMDNlZG1iX2h0X2xvY2spO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjY2LVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNzAtXFx0c3Bpbl9sb2NrKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI3MTpcXHRjbGllbnRfaWQgPSBkaWJzLVxcdTAwM2VkbWJfY2xpZW50aWRfYXJyW3NiYV9pZHhdO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjcyLVxcdHNfbWFzayA9IHJvcjE2KDB4MTAwMCwgaWR4KTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM9MjgwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGlic19kZXZfb3BzIGRpYnNfbG9fb3BzID0ge1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yODItXFx0LnF1ZXJ5X3JlbW90ZV9naWQgPSBkaWJzX2xvX3F1ZXJ5X3JnaWQsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODM6XFx0Lm1heF9kbWJzID0gZGlic19sb19tYXhfZG1icyxcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4NDpcXHQucmVnaXN0ZXJfZG1iID0gZGlic19sb19yZWdpc3Rlcl9kbWIsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODU6XFx0LnVucmVnaXN0ZXJfZG1iID0gZGlic19sb191bnJlZ2lzdGVyX2RtYixcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI4Ni1cXHQubW92ZV9kYXRhID0gZGlic19sb19tb3ZlX2RhdGEsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODc6XFx0LnN1cHBvcnRfbW1hcHBlZF9yZG1iID0gZGlic19sb19zdXBwb3J0X2RtYl9ub2NvcHksXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODg6XFx0LmF0dGFjaF9kbWIgPSBkaWJzX2xvX2F0dGFjaF9kbWIsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODk6XFx0LmRldGFjaF9kbWIgPSBkaWJzX2xvX2RldGFjaF9kbWIsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yOTAtfTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM9MjkyPXN0YXRpYyB2b2lkIGRpYnNfbG9fZGV2X2luaXQoc3RydWN0IGRpYnNfbG9fZGV2ICpsZGV2KVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjkzLXtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI5NDpcXHRyd2xvY2tfaW5pdChcXHUwMDI2bGRldi1cXHUwMDNlZG1iX2h0X2xvY2spO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjk1OlxcdGhhc2hfaW5pdChsZGV2LVxcdTAwM2VkbWJfaHQpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjk2OlxcdGF0b21pY19zZXQoXFx1MDAyNmxkZXYtXFx1MDAzZWRtYl9jbnQsIDApO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjk3LVxcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXFx1MDAyNmxkZXYtXFx1MDAzZWxkZXZfcmVsZWFzZSk7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jPTMwMD1zdGF0aWMgdm9pZCBkaWJzX2xvX2Rldl9leGl0KHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldilcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMwMS17XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMDI6XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZsZGV2LVxcdTAwM2VkbWJfY250KSlcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMwMzpcXHRcXHR3YWl0X2V2ZW50KGxkZXYtXFx1MDAzZWxkZXZfcmVsZWFzZSwgIWF0b21pY19yZWFkKFxcdTAwMjZsZGV2LVxcdTAwM2VkbWJfY250KSk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMDQtfVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0yNC1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjI1OnN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlIHtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTI2LVxcdHN0cnVjdCBobGlzdF9ub2RlIGxpc3Q7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oPTM1PXN0cnVjdCBkaWJzX2xvX2RldiB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0zNi1cXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDozNzpcXHRhdG9taWNfdCBkbWJfY250O1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6Mzg6XFx0cndsb2NrX3QgZG1iX2h0X2xvY2s7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0zOS1cXHRERUNMQVJFX0JJVE1BUChzYmFfaWR4X21hc2ssIERJQlNfTE9fTUFYX0RNQlMpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6NDA6XFx0REVDTEFSRV9IQVNIVEFCTEUoZG1iX2h0LCBESUJTX0xPX0RNQlNfSEFTSF9CSVRTKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTQxLVxcdHdhaXRfcXVldWVfaGVhZF90IGxkZXZfcmVsZWFzZTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz04Mz1pbnQgZGlic191bnJlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy04Ni1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo4NzpcXHRpbnQgbWF4X2RtYnM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTg4LVxcdGludCByYyA9IDA7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtOTItXFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6OTM6XFx0XFx0bWF4X2RtYnMgPSBkaWJzLVxcdTAwM2VvcHMtXFx1MDAzZW1heF9kbWJzKCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjk0OlxcdFxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgbWF4X2RtYnM7ICsraSkge1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo5NTpcXHRcXHRcXHRpZiAoZGlicy1cXHUwMDNlZG1iX2NsaWVudGlkX2FycltpXSA9PSBjbGllbnQtXFx1MDAzZWlkKSB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjk2OlxcdFxcdFxcdFxcdFdBUk4oMSwgXFxcIiVzOiBhdHRlbXB0IHRvIHVucmVnaXN0ZXIgJyVzJyB3aXRoIHJlZ2lzdGVyZWQgZG1iKHMpXFxcXG5cXFwiLFxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy05Ny1cXHRcXHRcXHRcXHQgICAgIF9fZnVuY19fLCBjbGllbnQtXFx1MDAzZW5hbWUpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy05OC1cXHRcXHRcXHRcXHRyYyA9IC1FQlVTWTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6OTk6XFx0XFx0XFx0XFx0Z290byBlcnJfcmVnX2RtYjtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTAwLVxcdFxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMTctXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjExODplcnJfcmVnX2RtYjpcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTE5LVxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz0xMjU9c3RhdGljIHZvaWQgZGlic19kZXZfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTMwLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMzE6XFx0a2ZyZWUoZGlicy1cXHUwMDNlZG1iX2NsaWVudGlkX2Fycik7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEzMi1cXHRrZnJlZShkaWJzKTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz0xODU9aW50IGRpYnNfZGV2X2FkZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE4Ni17XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE4NzpcXHRpbnQgbWF4X2RtYnM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE4OC1cXHRpbnQgaSwgcmV0O1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xODktXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE5MDpcXHRtYXhfZG1icyA9IGRpYnMtXFx1MDAzZW9wcy1cXHUwMDNlbWF4X2RtYnMoKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTkxOlxcdGRpYnMtXFx1MDAzZWRtYl9jbGllbnRpZF9hcnIgPSBremFsbG9jKG1heF9kbWJzLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTkyOlxcdGlmICghZGlicy1cXHUwMDNlZG1iX2NsaWVudGlkX2FycilcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTkzLVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxOTQ6XFx0bWVtc2V0KGRpYnMtXFx1MDAzZWRtYl9jbGllbnRpZF9hcnIsIE5PX0RJQlNfQ0xJRU5ULCBtYXhfZG1icyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE5NS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTA6MzE6NDcuNjI1MzU4MTIzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY5ODQwMTU5ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgUGF0Y2gncyBGdXp6aW5nIFdvcnRoaW5lc3MqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggbGlrZWx5IGRvZXNuJ3Qgd2FycmFudCBmdXp6aW5nLCBidXQgSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBJIHNlZSB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGlzbV9kcnYuY2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBpc21fYWxsb2NfZG1iYCBhbmQgYGlzbV9mcmVlX2RtYmAgZnVuY3Rpb25zLiBUaGVzZSBmdW5jdGlvbnMgbWFuYWdlIERNQSBidWZmZXJzIChgZGlic19kbWJgKSBmb3IgdGhlIElCTSBJU00gdlBDSSBhZGFwdGVyLiBUaGUgY2hhbmdlcyBpbnZvbHZlIGNvcnJlY3RpbmcgYSBtZW1vcnkgZnJlZWluZyBpc3N1ZSB3aXRoIGBmb2xpb19wdXRgIGFuZCBlbnN1cmluZyBgZG1iLVx1MDAzZWNwdV9hZGRyYCBpcyBudWxsZWQgYWZ0ZXIgZnJlZWluZyBpbiBib3RoIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBjb2RlIHBhdGhzLlxuXG5Ib3dldmVyLCBhIGNyaXRpY2FsIHBvaW50IGxlYXBzIG91dCBhdCBtZTogYGlzbV9kcnYuY2AgaXMgZXhwbGljaXRseSB0aWVkIHRvIHRoZSBgUENJX0RFVklDRV9JRF9JQk1fSVNNYCwgd2hpY2ggaXMgYW4gczM5MC1zcGVjaWZpYyB2UENJIGRldmljZS4gVGhpcyBpcyByZWxldmFudCAqb25seSogdG8gSUJNIFogbWFpbmZyYW1lIGhhcmR3YXJlLiBJdCdzIG5vdCBlbXVsYXRlZCBieSBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIEV2ZW4gaWYgSSB3ZXJlIHRvIGJvb3QgczM5MHggUUVNVSwgdGhlIElCTSBJU00gZGV2aWNlIHdvdWxkbid0IGJlIHByZXNlbnQgYmVjYXVzZSB0aGUgZGV2aWNlIGlzbid0IGVtdWxhdGVkIGluIHNvZnR3YXJlLlxuXG5SZXZpZXdpbmcgdGhlIHJ1bGUgc2V0IGZvciBgV29ydGhGdXp6aW5nYCwgdGhpcyBwYXRjaCBzcXVhcmVseSBmYWxscyB1bmRlciB0d28gY2F0ZWdvcmllczogXCJDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmVcIiBhbmQgXCJDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaC4uLiBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiIEJlY2F1c2UgdGhlIElTTSB2UENJIGlzIGEgdmVuZG9yLXNwZWNpZmljIGRldmljZSBhbmQgcmVxdWlyZXMgYWN0dWFsIElCTSBaIGhhcmR3YXJlLCB0aGlzIGNvZGUgY2FuJ3QgYmUgcmVhY2hlZCBpbiBhbnkgcmVhc29uYWJsZSB2aXJ0dWFsaXplZCB0ZXN0aW5nIGVudmlyb25tZW50LCBpbmNsdWRpbmcgczM5MHggUUVNVS5cblxuVGhlcmVmb3JlLCBnaXZlbiB0aGUgaGFyZHdhcmUgZGVwZW5kZW5jeSBhbmQgdGhlIHJ1bGUgc2V0LCBJJ20gY29uZmlkZW50IHRoYXQgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLiBJIG5lZWQgdG8gbm93IGRvdWJsZS1jaGVjayB0aGUgZGV0YWlscyBhbmQgcHJlcGFyZSB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGNhbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MTUxLCJPdXRwdXRUb2tlbnMiOjExOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTA6MzE6NTQuNjA5Mzc2OTcxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk1MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgYW5kIGNsZWFudXAgbG9naWMgKGlzbV9hbGxvY19kbWIgYW5kIGlzbV9mcmVlX2RtYikgaW4gZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMuIFRoZSBJU00gZHJpdmVyIGlzIHNwZWNpZmljIHRvIHRoZSBzMzkwIGFyY2hpdGVjdHVyZSBhbmQgcmVxdWlyZXMgSUJNIFogSW50ZXJuYWwgU2hhcmVkIE1lbW9yeSAoSVNNKSBQQ0kgaGFyZHdhcmUvZmlybXdhcmUsIHdoaWNoIGNhbm5vdCBiZSBlbXVsYXRlZCBvciByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgYW5kIGNsZWFudXAgbG9naWMgKGlzbV9hbGxvY19kbWIgYW5kIGlzbV9mcmVlX2RtYikgaW4gZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMuIFRoZSBJU00gZHJpdmVyIGlzIHNwZWNpZmljIHRvIHRoZSBzMzkwIGFyY2hpdGVjdHVyZSBhbmQgcmVxdWlyZXMgSUJNIFogSW50ZXJuYWwgU2hhcmVkIE1lbW9yeSAoSVNNKSBQQ0kgaGFyZHdhcmUvZmlybXdhcmUsIHdoaWNoIGNhbm5vdCBiZSBlbXVsYXRlZCBvciByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTA6MzE6NTQuNjA5Mzk5OTRaIiwiU2VxIjoyMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowtfkkn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-03 09:50:01 +0000 UTC FinishedAt: 2026-09-03 10:31:55 +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+CgkJCTx0ZD4yMDI2LzA5LzAzIDEwOjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgYW5kIGNsZWFudXAgbG9naWMgKGlzbV9hbGxvY19kbWIgYW5kIGlzbV9mcmVlX2RtYikgaW4gZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMuIFRoZSBJU00gZHJpdmVyIGlzIHNwZWNpZmljIHRvIHRoZSBzMzkwIGFyY2hpdGVjdHVyZSBhbmQgcmVxdWlyZXMgSUJNIFogSW50ZXJuYWwgU2hhcmVkIE1lbW9yeSAoSVNNKSBQQ0kgaGFyZHdhcmUvZmlybXdhcmUsIHdoaWNoIGNhbm5vdCBiZSBlbXVsYXRlZCBvciByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxMDozMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGNlNjRjMDZkMTRkMzQyYTVhNjQ5ZTQ1ZmFkOGQ3MzlmYzA4Y2I0NzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAzIDEwOjMwOjU5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jIGIvZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmNcbmluZGV4IDI0MmRhMjBmMjdlMGUuLjAzNWIyMzNhYmI0ZTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmNcbkBAIC0yMzEsNiAmIzQzOzIzMSw3IEBAIHN0YXRpYyB2b2lkIGlzbV9mcmVlX2RtYihzdHJ1Y3QgaXNtX2RldiAqaXNtLCBzdHJ1Y3QgZGlic19kbWIgKmRtYilcbiBcdGRtYV91bm1hcF9wYWdlKFx1MDAyNmlzbS1cdTAwM2VwZGV2LVx1MDAzZWRldiwgZG1iLVx1MDAzZWRtYV9hZGRyLCBkbWItXHUwMDNlZG1iX2xlbixcbiBcdFx0ICAgICAgIERNQV9GUk9NX0RFVklDRSk7XG4gXHRmb2xpb19wdXQodmlydF90b19mb2xpbyhkbWItXHUwMDNlY3B1X2FkZHIpKTtcbiYjNDM7XHRkbWItXHUwMDNlY3B1X2FkZHIgPSBOVUxMO1xuIH1cbiBcbiBzdGF0aWMgaW50IGlzbV9hbGxvY19kbWIoc3RydWN0IGlzbV9kZXYgKmlzbSwgc3RydWN0IGRpYnNfZG1iICpkbWIpXG5AQCAtMjc0LDcgJiM0MzsyNzUsOCBAQCBzdGF0aWMgaW50IGlzbV9hbGxvY19kbWIoc3RydWN0IGlzbV9kZXYgKmlzbSwgc3RydWN0IGRpYnNfZG1iICpkbWIpXG4gXHRyZXR1cm4gMDtcbiBcbiBvdXRfZnJlZTpcbi1cdGtmcmVlKGRtYi1cdTAwM2VjcHVfYWRkcik7XG4mIzQzO1x0Zm9saW9fcHV0KGZvbGlvKTtcbiYjNDM7XHRkbWItXHUwMDNlY3B1X2FkZHIgPSBOVUxMO1xuIG91dF9iaXQ6XG4gXHRjbGVhcl9iaXQoZG1iLVx1MDAzZWlkeCwgaXNtLVx1MDAzZXNiYV9iaXRtYXApO1xuIFx0cmV0dXJuIHJjO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDEwOjMxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGFuZCBjbGVhbnVwIGxvZ2ljIChpc21fYWxsb2NfZG1iIGFuZCBpc21fZnJlZV9kbWIpIGluIGRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLiBUaGUgSVNNIGRyaXZlciBpcyBzcGVjaWZpYyB0byB0aGUgczM5MCBhcmNoaXRlY3R1cmUgYW5kIHJlcXVpcmVzIElCTSBaIEludGVybmFsIFNoYXJlZCBNZW1vcnkgKElTTSkgUENJIGhhcmR3YXJlL2Zpcm13YXJlLCB3aGljaCBjYW5ub3QgYmUgZW11bGF0ZWQgb3IgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjZTY0YzA2ZDE0ZDM0MmE1YTY0OWU0NWZhZDhkNzM5ZmMwOGNiNDc3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMyAxMDozMDo1OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jIGIvZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMKaW5kZXggMjQyZGEyMGYyN2UwZS4uMDM1YjIzM2FiYjRlOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMKQEAgLTIzMSw2ICYjNDM7MjMxLDcgQEAgc3RhdGljIHZvaWQgaXNtX2ZyZWVfZG1iKHN0cnVjdCBpc21fZGV2ICppc20sIHN0cnVjdCBkaWJzX2RtYiAqZG1iKQogCWRtYV91bm1hcF9wYWdlKCZhbXA7aXNtLSZndDtwZGV2LSZndDtkZXYsIGRtYi0mZ3Q7ZG1hX2FkZHIsIGRtYi0mZ3Q7ZG1iX2xlbiwKIAkJICAgICAgIERNQV9GUk9NX0RFVklDRSk7CiAJZm9saW9fcHV0KHZpcnRfdG9fZm9saW8oZG1iLSZndDtjcHVfYWRkcikpOwomIzQzOwlkbWItJmd0O2NwdV9hZGRyID0gTlVMTDsKIH0KIAogc3RhdGljIGludCBpc21fYWxsb2NfZG1iKHN0cnVjdCBpc21fZGV2ICppc20sIHN0cnVjdCBkaWJzX2RtYiAqZG1iKQpAQCAtMjc0LDcgJiM0MzsyNzUsOCBAQCBzdGF0aWMgaW50IGlzbV9hbGxvY19kbWIoc3RydWN0IGlzbV9kZXYgKmlzbSwgc3RydWN0IGRpYnNfZG1iICpkbWIpCiAJcmV0dXJuIDA7CiAKIG91dF9mcmVlOgotCWtmcmVlKGRtYi0mZ3Q7Y3B1X2FkZHIpOwomIzQzOwlmb2xpb19wdXQoZm9saW8pOwomIzQzOwlkbWItJmd0O2NwdV9hZGRyID0gTlVMTDsKIG91dF9iaXQ6CiAJY2xlYXJfYml0KGRtYi0mZ3Q7aWR4LCBpc20tJmd0O3NiYV9iaXRtYXApOwogCXJldHVybiByYzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTA6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI0NwoJCQkJCQkJb3V0cHV0OiA2OQoJCQkJCQkJdGhvdWdodHM6IDI5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpcyAtIHMzOTAgSVNNIERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEZpcnN0IHRoaW5ncyBmaXJzdCwgaXQmIzM5O3MgaGl0dGluZyBgZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmNgLiBSaWdodCwgc28gdGhpcyBpcyB0aGUgczM5MCBJbnRlZ3JhdGVkIFNoYXJlZCBNZW1vcnkgKElTTSkgZGV2aWNlIGRyaXZlci4gTm93LCBhIGNyaXRpY2FsIHF1ZXN0aW9uIGFyaXNlczogaXMgdGhpcyBzb21ldGhpbmcgdGhhdCBpbmhlcmVudGx5IHJlcXVpcmVzIHBoeXNpY2FsIHMzOTAgaGFyZHdhcmUg4oCTIHRoaW5rIElCTSB6L0FyY2hpdGVjdHVyZSDigJMgb3IgY2FuIHdlIGFjdHVhbGx5IGdldCBhdCBpdCwgZWl0aGVyIHRocm91Z2ggZW11bGF0aW9uIG9yIGEgc3RhbmRhcmQgZnV6emluZyBzZXR1cCBsaWtlIFFFTVUgb3IgZXZlbiBHQ0U/IEJlZm9yZSBJIGdvIGZ1cnRoZXIgZG93biB0aGF0IHJhYmJpdCBob2xlLCBob2xkIG9uLCBJIG5lZWQgdG8gcmVyZWFkIHRoZSBndWlkZWxpbmVzLiBJdCYjMzk7cyB0b28gZWFzeSB0byB3YXN0ZSB0aW1lIG9uIHNvbWV0aGluZyB0aGF0IGlzIG5vdCB3b3J0aCBmdXp6aW5nLgoKQWxyaWdodCwgbGV0JiMzOTtzIHJlZnJlc2g6IEkgbmVlZCB0byBmbGFnIGl0IGFzICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgaWYgaXQmIzM5O3Mgc29tZXRoaW5nIGZ1bmRhbWVudGFsbHkgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nLCBsaWtlIHRob3NlIFBDSWUgc3dpdGNoIGRyaXZlcnMgb3IsIHNwZWNpZmljYWxseSwgZHJpdmVyIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHJlbW92ZSwgc2h1dGRvd24gb3IgdW5yZWdpc3RlcmluZy4gT2theSwgdGhhdCYjMzk7cyBjbGVhci4KClNvLCBiYWNrIHRvIGBpc21fZHJ2LmNgLiBNeSBuZXh0IHN0ZXAgaXMgdG8gY2FyZWZ1bGx5IGNoZWNrIGl0cyBzb3VyY2UgY29kZSBhbmQgS2NvbmZpZy9hcmNoaXRlY3R1cmUgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoYXQgaXQmIzM5O3MgZG9pbmcgYW5kLCBjcnVjaWFsbHksIHdoYXQgaGFyZHdhcmUgY29udGV4dCBpdCByZWxpZXMgdXBvbi4gVGhhdCBLY29uZmlnIHN0dWZmIGlzIGdvaW5nIHRvIGJlIG15IGJlc3QgZnJpZW5kIGhlcmUuIElmIGl0IHNjcmVhbXMgJiMzNDtzMzkwIG9ubHksJiMzNDsgdGhlbiB3ZeKAmXJlIHByb2JhYmx5IGRlYWQgaW4gdGhlIHdhdGVyLCBidXQgbWF5YmUgd2UgY2FuIGdldCBsdWNreS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJU00mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvbmV0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9uZXQvS2NvbmZpZz03OD1jb25maWcgQ0NXR1JPVVBcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWctODEtXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWc6ODI6Y29uZmlnIElTTVxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnOjgzOlx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBmb3IgSVNNIHZQQ0kgQWRhcHRlclwmIzM0O1xuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnLTg0LVx0ZGVwZW5kcyBvbiBQQ0kgXHUwMDI2XHUwMDI2IERJQlNcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L01ha2VmaWxlPTE5PWlzbS15IDo9IGlzbV9kcnYub1xuZHJpdmVycy9zMzkwL25ldC9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfSVNNKSAmIzQzOz0gaXNtLm9cbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTEtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MjojaWZuZGVmIFMzOTBfSVNNX0hcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MzojZGVmaW5lIFMzOTBfSVNNX0hcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtNC1cbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTExLSNkZWZpbmUgVVRJTF9TVFJfTEVOXHQxNlxuZHJpdmVycy9zMzkwL25ldC9pc20uaDoxMjojZGVmaW5lIElTTV9FUlJPUlx0MHhGRkZGXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTEzLVxuZHJpdmVycy9zMzkwL25ldC9pc20uaDoxNDojZGVmaW5lIElTTV9OUl9ETUJTXHQxOTIwXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTE1LVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMTgtICovXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjE5OiNkZWZpbmUgSVNNX0RNQl9XT1JEX09GRlNFVFx0MVxuZHJpdmVycy9zMzkwL25ldC9pc20uaDoyMDojZGVmaW5lIElTTV9ETUJfQklUX09GRlNFVFx0KElTTV9ETUJfV09SRF9PRkZTRVQgKiAzMilcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjEtXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjIyOiNkZWZpbmUgSVNNX1JFR19TQkFcdDB4MVxuZHJpdmVycy9zMzkwL25ldC9pc20uaDoyMzojZGVmaW5lIElTTV9SRUdfSUVRXHQweDJcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MjQ6I2RlZmluZSBJU01fUkVBRF9HSURcdDB4M1xuZHJpdmVycy9zMzkwL25ldC9pc20uaDoyNTojZGVmaW5lIElTTV9BRERfVkxBTl9JRFx0MHg0XG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjI2OiNkZWZpbmUgSVNNX0RFTF9WTEFOX0lEXHQweDVcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6Mjc6I2RlZmluZSBJU01fU0VUX1ZMQU5cdDB4NlxuZHJpdmVycy9zMzkwL25ldC9pc20uaDoyODojZGVmaW5lIElTTV9SRVNFVF9WTEFOXHQweDdcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6Mjk6I2RlZmluZSBJU01fUVVFUllfSU5GT1x0MHg4XG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjMwOiNkZWZpbmUgSVNNX1FVRVJZX1JHSURcdDB4OVxuZHJpdmVycy9zMzkwL25ldC9pc20uaDozMTojZGVmaW5lIElTTV9SRUdfRE1CXHQweEFcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MzI6I2RlZmluZSBJU01fVU5SRUdfRE1CXHQweEJcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MzM6I2RlZmluZSBJU01fU0lHTkFMX0lFUVx0MHhFXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjM0OiNkZWZpbmUgSVNNX1VOUkVHX1NCQVx0MHgxMVxuZHJpdmVycy9zMzkwL25ldC9pc20uaDozNTojZGVmaW5lIElTTV9VTlJFR19JRVFcdDB4MTJcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMzYtXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oPTM3PWVudW0gaXNtX2V2ZW50X3R5cGUge1xuZHJpdmVycy9zMzkwL25ldC9pc20uaDozODpcdElTTV9FVkVOVF9CVUYgPSAweDAwLFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDozOTpcdElTTV9FVkVOVF9ERVYgPSAweDAxLFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDo0MDpcdElTTV9FVkVOVF9TV1IgPSAweDAyXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTQxLX07XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc20uaD00Mz1lbnVtIGlzbV9ldmVudF9jb2RlIHtcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6NDQ6XHRJU01fQlVGX0RNQl9VTlJFR0lTVEVSRUQgPSAweDA0LFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDo0NTpcdElTTV9CVUZfVVNJTkdfSVNNX0RFVl9ESVNBQkxFRCA9IDB4MDgsXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjQ2Olx0SVNNX0JVRl9PV05JTkdfSVNNX0RFVl9JTl9FUlJfU1RBVEUgPSAweDAyLFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDo0NzpcdElTTV9CVUZfVVNJTkdfSVNNX0RFVl9JTl9FUlJfU1RBVEUgPSAweDAzLFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDo0ODpcdElTTV9CVUZfVkxBTl9NSVNNQVRDSF9XSVRIX09XTkVSID0gMHgwNSxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6NDk6XHRJU01fQlVGX1ZMQU5fTUlTTUFUQ0hfV0lUSF9VU0VSID0gMHgwNixcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6NTA6XHRJU01fREVWX0dJRF9ESVNBQkxFRCA9IDB4MDcsXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjUxOlx0SVNNX0RFVl9HSURfRVJSX1NUQVRFID0gMHgwMVxuZHJpdmVycy9zMzkwL25ldC9pc20uaC01Mi19O1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg9NzY9dW5pb24gaXNtX3JlZ19pZXEge1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtODYtXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjg3Oi8qIElTTS12UENJIGRldmljZXMgcHJvdmlkZSA2NCBCaXQgR0lEc1xuZHJpdmVycy9zMzkwL25ldC9pc20uaDo4ODogKiBNYXAgdGhlbSB0byBJU00gVVVJRCBHSURzIGxpa2UgdGhpczpcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtODktICogIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjkwOiAqIHwgNjQgQml0IElTTS12UENJIEdJRCB8IDAwMDAwMDAwXzAwMDAwMDAwIHxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtOTEtICogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc20uaD0yMTg9c3RydWN0IGlzbV9zYmEge1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjIxLVx0dTMyIDogMzA7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjIyMjpcdHUzMiBkbWJfYml0c1tJU01fTlJfRE1CUyAvIDMyXTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjIzLVx0dTMyIHJlc2VydmVkWzNdO1xuZHJpdmVycy9zMzkwL25ldC9pc20uaDoyMjQ6XHR1MTYgZG1iZV9tYXNrW0lTTV9OUl9ETUJTXTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjI1LX07XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc20uaD0yMjc9c3RydWN0IGlzbV9kZXYge1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjMyLVx0ZG1hX2FkZHJfdCBzYmFfZG1hX2FkZHI7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjIzMzpcdERFQ0xBUkVfQklUTUFQKHNiYV9iaXRtYXAsIElTTV9OUl9ETUJTKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjM0LVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjM5LVxuZHJpdmVycy9zMzkwL25ldC9pc20uaDoyNDA6I2RlZmluZSBJU01fQ1JFQVRFX1JFUShkbWIsIGlkeCwgc2YsIG9mZnNldClcdFx0XFxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjQxLVx0KChkbWIpIHwgKGlkeCkgXHUwMDNjXHUwMDNjIDI0IHwgKHNmKSBcdTAwM2NcdTAwM2MgMjMgfCAob2Zmc2V0KSlcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oPTI2Nz1zdGF0aWMgaW5saW5lIGludCBfX2lzbV9tb3ZlKHN0cnVjdCBpc21fZGV2ICppc20sIHU2NCBkbWJfcmVxLCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjc1LVxuZHJpdmVycy9zMzkwL25ldC9pc20uaDoyNzY6I2VuZGlmIC8qIFMzOTBfSVNNX0ggKi9cbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yLS8qXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzozOiAqIElTTSBkcml2ZXIgZm9yIHMzOTAuXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00LSAqXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMTktXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoyMDpNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7SVNNIGRyaXZlciBmb3IgczM5MFwmIzM0Oyk7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yMS1NT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTI1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBpc21fZGV2aWNlX3RhYmxlW10gPSB7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoyNjpcdHsgUENJX1ZERVZJQ0UoSUJNLCBQQ0lfREVWSUNFX0lEX0lCTV9JU00pIH0sXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yNy1cdHsgfVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTMzPXN0YXRpYyBpbnQgaXNtX2NtZChzdHJ1Y3QgaXNtX2RldiAqaXNtLCB2b2lkICpjbWQpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNDEtXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo0MjpcdFdSSVRFX09OQ0UocmVzcC1cdTAwM2VyZXQsIElTTV9FUlJPUik7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00My1cbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz02Nz1zdGF0aWMgaW50IHF1ZXJ5X2luZm8oc3RydWN0IGlzbV9kZXYgKmlzbSlcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy03MS1cdG1lbXNldChcdTAwMjZjbWQsIDAsIHNpemVvZihjbWQpKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjcyOlx0Y21kLnJlcXVlc3QuaGRyLmNtZCA9IElTTV9RVUVSWV9JTkZPO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNzMtXHRjbWQucmVxdWVzdC5oZHIubGVuID0gc2l6ZW9mKGNtZC5yZXF1ZXN0KTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz04ND1zdGF0aWMgaW50IHJlZ2lzdGVyX3NiYShzdHJ1Y3QgaXNtX2RldiAqaXNtKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTk1LVx0bWVtc2V0KFx1MDAyNmNtZCwgMCwgc2l6ZW9mKGNtZCkpO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6OTY6XHRjbWQucmVxdWVzdC5oZHIuY21kID0gSVNNX1JFR19TQkE7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy05Ny1cdGNtZC5yZXF1ZXN0Lmhkci5sZW4gPSBzaXplb2YoY21kLnJlcXVlc3QpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTExMT1zdGF0aWMgaW50IHJlZ2lzdGVyX2llcShzdHJ1Y3QgaXNtX2RldiAqaXNtKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTEyMi1cdG1lbXNldChcdTAwMjZjbWQsIDAsIHNpemVvZihjbWQpKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjEyMzpcdGNtZC5yZXF1ZXN0Lmhkci5jbWQgPSBJU01fUkVHX0lFUTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTEyNC1cdGNtZC5yZXF1ZXN0Lmhkci5sZW4gPSBzaXplb2YoY21kLnJlcXVlc3QpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTE0MD1zdGF0aWMgaW50IHVucmVnaXN0ZXJfc2JhKHN0cnVjdCBpc21fZGV2ICppc20pXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMTQ2LVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MTQ3Olx0cmV0ID0gaXNtX2NtZF9zaW1wbGUoaXNtLCBJU01fVU5SRUdfU0JBKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjE0ODpcdGlmIChyZXQgXHUwMDI2XHUwMDI2IHJldCAhPSBJU01fRVJST1IpXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0xNDktXHRcdHJldHVybiAtRUlPO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTE2Mz1zdGF0aWMgaW50IHVucmVnaXN0ZXJfaWVxKHN0cnVjdCBpc21fZGV2ICppc20pXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMTY5LVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MTcwOlx0cmV0ID0gaXNtX2NtZF9zaW1wbGUoaXNtLCBJU01fVU5SRUdfSUVRKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjE3MTpcdGlmIChyZXQgXHUwMDI2XHUwMDI2IHJldCAhPSBJU01fRVJST1IpXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0xNzItXHRcdHJldHVybiAtRUlPO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTE4Nj1zdGF0aWMgaW50IGlzbV9yZWFkX2xvY2FsX2dpZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMTkyLVx0bWVtc2V0KFx1MDAyNmNtZCwgMCwgc2l6ZW9mKGNtZCkpO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MTkzOlx0Y21kLnJlcXVlc3QuaGRyLmNtZCA9IElTTV9SRUFEX0dJRDtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTE5NC1cdGNtZC5yZXF1ZXN0Lmhkci5sZW4gPSBzaXplb2YoY21kLnJlcXVlc3QpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTIwNj1zdGF0aWMgaW50IGlzbV9xdWVyeV9yZ2lkKHN0cnVjdCBkaWJzX2RldiAqZGlicywgY29uc3QgdXVpZF90ICpyZ2lkLFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTIxMi1cdG1lbXNldChcdTAwMjZjbWQsIDAsIHNpemVvZihjbWQpKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjIxMzpcdGNtZC5yZXF1ZXN0Lmhkci5jbWQgPSBJU01fUVVFUllfUkdJRDtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTIxNC1cdGNtZC5yZXF1ZXN0Lmhkci5sZW4gPSBzaXplb2YoY21kLnJlcXVlc3QpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTIyMz1zdGF0aWMgaW50IGlzbV9tYXhfZG1icyh2b2lkKVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjI0LXtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjIyNTpcdHJldHVybiBJU01fTlJfRE1CUztcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTIyNi19XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MjM3PXN0YXRpYyBpbnQgaXNtX2FsbG9jX2RtYihzdHJ1Y3QgaXNtX2RldiAqaXNtLCBzdHJ1Y3QgZGlic19kbWIgKmRtYilcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yNDYtXHRpZiAoIWRtYi1cdTAwM2VpZHgpIHtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjI0NzpcdFx0Yml0ID0gZmluZF9uZXh0X3plcm9fYml0KGlzbS1cdTAwM2VzYmFfYml0bWFwLCBJU01fTlJfRE1CUyxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjI0ODpcdFx0XHRcdFx0IElTTV9ETUJfQklUX09GRlNFVCk7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoyNDk6XHRcdGlmIChiaXQgPT0gSVNNX05SX0RNQlMpXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yNTAtXHRcdFx0cmV0dXJuIC1FTk9TUEM7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjUzLVx0fVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MjU0Olx0aWYgKGRtYi1cdTAwM2VpZHggXHUwMDNjIElTTV9ETUJfQklUX09GRlNFVCB8fFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjU1LVx0ICAgIHRlc3RfYW5kX3NldF9iaXQoZG1iLVx1MDAzZWlkeCwgaXNtLVx1MDAzZXNiYV9iaXRtYXApKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTI4NT1zdGF0aWMgaW50IGlzbV9yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYixcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yOTctXHRtZW1zZXQoXHUwMDI2Y21kLCAwLCBzaXplb2YoY21kKSk7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoyOTg6XHRjbWQucmVxdWVzdC5oZHIuY21kID0gSVNNX1JFR19ETUI7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yOTktXHRjbWQucmVxdWVzdC5oZHIubGVuID0gc2l6ZW9mKGNtZC5yZXF1ZXN0KTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zMTQtXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjMxNTpcdGRpYnMtXHUwMDNlZG1iX2NsaWVudGlkX2FycltkbWItXHUwMDNlaWR4IC0gSVNNX0RNQl9CSVRfT0ZGU0VUXSA9IGNsaWVudC1cdTAwM2VpZDtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTMxNi1cdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MzIxPXN0YXRpYyBpbnQgaXNtX3VucmVnaXN0ZXJfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgc3RydWN0IGRpYnNfZG1iICpkbWIpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzI4LVx0bWVtc2V0KFx1MDAyNmNtZCwgMCwgc2l6ZW9mKGNtZCkpO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MzI5Olx0Y21kLnJlcXVlc3QuaGRyLmNtZCA9IElTTV9VTlJFR19ETUI7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zMzAtXHRjbWQucmVxdWVzdC5oZHIubGVuID0gc2l6ZW9mKGNtZC5yZXF1ZXN0KTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zMzQtXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjMzNTpcdGRpYnMtXHUwMDNlZG1iX2NsaWVudGlkX2FycltkbWItXHUwMDNlaWR4IC0gSVNNX0RNQl9CSVRfT0ZGU0VUXSA9IE5PX0RJQlNfQ0xJRU5UO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzM2LVx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zMzgtXHRyZXQgPSBpc21fY21kKGlzbSwgXHUwMDI2Y21kKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjMzOTpcdGlmIChyZXQgXHUwMDI2XHUwMDI2IHJldCAhPSBJU01fRVJST1IpXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zNDAtXHRcdGdvdG8gb3V0O1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTM0Nz1zdGF0aWMgaW50IGlzbV9hZGRfdmxhbl9pZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHU2NCB2bGFuX2lkKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTM1Mi1cdG1lbXNldChcdTAwMjZjbWQsIDAsIHNpemVvZihjbWQpKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjM1MzpcdGNtZC5yZXF1ZXN0Lmhkci5jbWQgPSBJU01fQUREX1ZMQU5fSUQ7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zNTQtXHRjbWQucmVxdWVzdC5oZHIubGVuID0gc2l6ZW9mKGNtZC5yZXF1ZXN0KTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz0zNjE9c3RhdGljIGludCBpc21fZGVsX3ZsYW5faWQoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgdmxhbl9pZClcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zNjYtXHRtZW1zZXQoXHUwMDI2Y21kLCAwLCBzaXplb2YoY21kKSk7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzozNjc6XHRjbWQucmVxdWVzdC5oZHIuY21kID0gSVNNX0RFTF9WTEFOX0lEO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzY4LVx0Y21kLnJlcXVlc3QuaGRyLmxlbiA9IHNpemVvZihjbWQucmVxdWVzdCk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9Mzc1PXN0YXRpYyBpbnQgaXNtX3NpZ25hbF9pZXEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBjb25zdCB1dWlkX3QgKnJnaWQsXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzgxLVx0bWVtc2V0KFx1MDAyNmNtZCwgMCwgc2l6ZW9mKGNtZCkpO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MzgyOlx0Y21kLnJlcXVlc3QuaGRyLmNtZCA9IElTTV9TSUdOQUxfSUVRO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzgzLVx0Y21kLnJlcXVlc3QuaGRyLmxlbiA9IHNpemVvZihjbWQucmVxdWVzdCk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9Mzk5PXN0YXRpYyBpbnQgaXNtX21vdmUoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvaywgdW5zaWduZWQgaW50IGlkeCxcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00MDktXHRcdGJ5dGVzID0gbWF4X2J5dGVzKG9mZnNldCwgc2l6ZSwgUEFHRV9TSVpFKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjQxMDpcdFx0ZG1iX3JlcSA9IElTTV9DUkVBVEVfUkVRKGRtYl90b2ssIGlkeCwgc2l6ZSA9PSBieXRlcyA/IHNmIDogMCxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQxMS1cdFx0XHRcdFx0IG9mZnNldCk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9NDM1PXN0YXRpYyBpbnQgaXNtX21hdGNoX2V2ZW50X3R5cGUodTMyIHMzOTBfZXZlbnRfdHlwZSlcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00MzctXHRzd2l0Y2ggKHMzOTBfZXZlbnRfdHlwZSkge1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NDM4Olx0Y2FzZSBJU01fRVZFTlRfQlVGOlxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNDM5LVx0XHRyZXR1cm4gRElCU19CVUZfRVZFTlQ7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo0NDA6XHRjYXNlIElTTV9FVkVOVF9ERVY6XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00NDEtXHRcdHJldHVybiBESUJTX0RFVl9FVkVOVDtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjQ0MjpcdGNhc2UgSVNNX0VWRU5UX1NXUjpcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQ0My1cdFx0cmV0dXJuIERJQlNfU1dfRVZFTlQ7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9NDQ5PXN0YXRpYyBpbnQgaXNtX21hdGNoX2V2ZW50X3N1YnR5cGUodTMyIHMzOTBfZXZlbnRfc3VidHlwZSlcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00NTEtXHRzd2l0Y2ggKHMzOTBfZXZlbnRfc3VidHlwZSkge1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NDUyOlx0Y2FzZSBJU01fQlVGX0RNQl9VTlJFR0lTVEVSRUQ6XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00NTMtXHRcdHJldHVybiBESUJTX0JVRl9VTlJFR0lTVEVSRUQ7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo0NTQ6XHRjYXNlIElTTV9ERVZfR0lEX0RJU0FCTEVEOlxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNDU1LVx0XHRyZXR1cm4gRElCU19ERVZfRElTQUJMRUQ7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo0NTY6XHRjYXNlIElTTV9ERVZfR0lEX0VSUl9TVEFURTpcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQ1Ny1cdFx0cmV0dXJuIERJQlNfREVWX0VSUl9TVEFURTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz01MDE9c3RhdGljIGlycXJldHVybl90IGlzbV9oYW5kbGVfaXJxKGludCBpcnEsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNTExLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NTEyOlx0YnYgPSAodm9pZCAqKSBcdTAwMjZpc20tXHUwMDNlc2JhLVx1MDAzZWRtYl9iaXRzW0lTTV9ETUJfV09SRF9PRkZTRVRdO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NTEzOlx0ZW5kID0gc2l6ZW9mKGlzbS1cdTAwM2VzYmEtXHUwMDNlZG1iX2JpdHMpICogQklUU19QRVJfQllURSAtIElTTV9ETUJfQklUX09GRlNFVDtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTUxNC1cbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy01MjMtXHRcdGNsZWFyX2JpdF9pbnYoYml0LCBidik7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo1MjQ6XHRcdGRtYmVtYXNrID0gaXNtLVx1MDAzZXNiYS1cdTAwM2VkbWJlX21hc2tbYml0ICYjNDM7IElTTV9ETUJfQklUX09GRlNFVF07XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo1MjU6XHRcdGlzbS1cdTAwM2VzYmEtXHUwMDNlZG1iZV9tYXNrW2JpdCAmIzQzOyBJU01fRE1CX0JJVF9PRkZTRVRdID0gMDtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTUyNi1cdFx0YmFycmllcigpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTUzMS1cdFx0ZGlicy1cdTAwM2VzdWJzW2NsaWVudF9pZF0tXHUwMDNlb3BzLVx1MDAzZWhhbmRsZV9pcnEoZGlicyxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjUzMjpcdFx0XHRcdFx0XHQgICAgICAgYml0ICYjNDM7IElTTV9ETUJfQklUX09GRlNFVCxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTUzMy1cdFx0XHRcdFx0XHQgICAgICAgZG1iZW1hc2spO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5jPTE0Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGlwYV9yY19tc2cgcWV0aF9pcGFfcmNfZGVmX21zZ1tdID0ge1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5jLTE0OS1cdHtJUEFfUkNfSURfTk9UX0ZPVU5ELFx0XHRcJiMzNDtJZGVudGlmaWVyIG5vdCBmb3VuZFwmIzM0O30sXG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfY29yZV9tcGMuYzoxNTA6XHR7SVBBX1JDX0xBTl9GUkFNRV9NSVNNQVRDSCxcdFwmIzM0O0xBTiBhbmQgZnJhbWUgbWlzbWF0Y2hcJiMzNDt9LFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmMtMTUxLVx0e0lQQV9SQ19MMl9VTlNVUFBPUlRFRF9DTUQsXHRcJiMzNDtVbnN1cHBvcnRlZCBsYXllciAyIGNvbW1hbmRcJiMzNDt9LFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5jLTE1My1cdHtJUEFfUkNfTDJfTUFDX05PVF9BVVRIX0JZX0FEUCxcdFwmIzM0O0wyIG1hYyBub3QgYXV0aG9yaXplZCBieSBhZGFwdGVyXCYjMzQ7fSxcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5jOjE1NDpcdHtJUEFfUkNfREFUQV9NSVNNQVRDSCxcdFx0XCYjMzQ7RGF0YSBmaWVsZCBtaXNtYXRjaCAodjQvdjYgbWl4ZWQpXCYjMzQ7fSxcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5jLTE1NS1cdHtJUEFfUkNfSU5WQUxJRF9NVFVfU0laRSxcdFwmIzM0O0ludmFsaWQgTVRVIHNpemVcJiMzNDt9LFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5jPTE4OD1zdGF0aWMgY29uc3Qgc3RydWN0IGlwYV9yY19tc2cgcWV0aF9pcGFfcmNfc2JwX2lxZF9tc2dbXSA9IHtcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5jLTE4OS1cdHtJUEFfUkNfU0JQX0lRRF9OT1RfQ09ORklHVVJFRCxcdFwmIzM0O05vdCBjb25maWd1cmVkIGZvciBicmlkZ2Vwb3J0XCYjMzQ7fSxcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5jOjE5MDpcdHtJUEFfUkNfU0JQX0lRRF9PU19NSVNNQVRDSCxcdFwmIzM0O09TIG1pc21hdGNoXCYjMzQ7fSxcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5jLTE5MS1cdHtJUEFfUkNfU0JQX0lRRF9BTk9fREVWX1BSSU1BUlksIFwmIzM0O1ByaW1hcnkgYnJpZGdlcG9ydCBleGlzdHMgYWxyZWFkeVwmIzM0O30sXG4tLVxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmM9MTk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXBhX3JjX21zZyBxZXRoX2lwYV9yY19zYnBfb3NhX21zZ1tdID0ge1xuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmMtMjAwLVx0e0lQQV9SQ19TQlBfT1NBX05PVF9DT05GSUdVUkVELFx0XCYjMzQ7Tm90IGNvbmZpZ3VyZWQgZm9yIGJyaWRnZXBvcnRcJiMzNDt9LFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmM6MjAxOlx0e0lQQV9SQ19TQlBfT1NBX09TX01JU01BVENILFx0XCYjMzQ7T1MgbWlzbWF0Y2hcJiMzNDt9LFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmMtMjAyLVx0e0lQQV9SQ19TQlBfT1NBX0FOT19ERVZfUFJJTUFSWSwgXCYjMzQ7UHJpbWFyeSBicmlkZ2Vwb3J0IGV4aXN0cyBhbHJlYWR5XCYjMzQ7fSxcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfY29yZV9tcGMuaD0xNTg9ZW51bSBxZXRoX2lwYV9yZXR1cm5fY29kZXMge1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5oLTE3MS1cdElQQV9SQ19EVVBfSVBWNl9IT01FXHRcdD0gMHgwMDEwLFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmg6MTcyOlx0SVBBX1JDX1NCUF9JUURfT1NfTUlTTUFUQ0hcdD0gMHgwMDEwLFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmgtMTczLVx0SVBBX1JDX1VOUkVHSVNURVJFRF9BRERSXHQ9IDB4MDAxMSxcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfY29yZV9tcGMuaC0xODEtXHRJUEFfUkNfU0JQX0lRRF9DVVJSRU5UX1BSSU1BUllcdD0gMHgwMDI0LFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmg6MTgyOlx0SVBBX1JDX0xBTl9GUkFNRV9NSVNNQVRDSFx0PSAweDAwNDAsXG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfY29yZV9tcGMuaC0xODMtXHRJUEFfUkNfU0JQX0lRRF9OT19RRElPX1FVRVVFU1x0PSAweDAwRUIsXG4tLVxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmgtMTk3LVx0SVBBX1JDX1NCUF9PU0FfTk9UX0NPTkZJR1VSRURcdD0gMHgyQjBDLFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmg6MTk4Olx0SVBBX1JDX1NCUF9PU0FfT1NfTUlTTUFUQ0hcdD0gMHgyQjEwLFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmgtMTk5LVx0SVBBX1JDX1NCUF9PU0FfQU5PX0RFVl9QUklNQVJZXHQ9IDB4MkIxNCxcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfY29yZV9tcGMuaC0yMDQtXHRJUEFfUkNfU0JQX09TQV9OT19RRElPX1FVRVVFU1x0PSAweDJCRUIsXG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfY29yZV9tcGMuaDoyMDU6XHRJUEFfUkNfREFUQV9NSVNNQVRDSFx0XHQ9IDB4ZTAwMSxcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5oLTIwNi1cdElQQV9SQ19JTlZBTElEX01UVV9TSVpFXHRcdD0gMHhlMDAyLFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9sMl9tYWluLmM9MTU1Mj1zdGF0aWMgaW50IHFldGhfYnJpZGdlcG9ydF9tYWtlcmMoc3RydWN0IHFldGhfY2FyZCAqY2FyZCxcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfbWFpbi5jLTE1NzktXHRcdFx0YnJlYWs7XG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfbWFpbi5jOjE1ODA6XHRcdGNhc2UgSVBBX1JDX1NCUF9PU0FfT1NfTUlTTUFUQ0g6XG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfbWFpbi5jOjE1ODE6XHRcdGNhc2UgSVBBX1JDX1NCUF9JUURfT1NfTUlTTUFUQ0g6XG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfbWFpbi5jLTE1ODItXHRcdFx0cmMgPSAtRVBFUk07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0LypcbiAgIDM6XHQgKiBJU00gZHJpdmVyIGZvciBzMzkwLlxuICAgNDpcdCAqXG4gICA1Olx0ICogQ29weXJpZ2h0IElCTSBDb3JwLiAyMDE4XG4gICA2Olx0ICovXG4gICA3Olx0I2RlZmluZSBwcl9mbXQoZm10KSBcJiMzNDtpc206IFwmIzM0OyBmbXRcbiAgIDg6XHRcbiAgIDk6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9leHBvcnQuaFx1MDAzZVxuICAxMDpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4gIDExOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuICAxMjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2ludGVycnVwdC5oXHUwMDNlXG4gIDEzOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvZGV2aWNlLmhcdTAwM2VcbiAgMTQ6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnIuaFx1MDAzZVxuICAxNTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2N0eXBlLmhcdTAwM2VcbiAgMTY6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9wcm9jZXNzb3IuaFx1MDAzZVxuICAxNzpcdFxuICAxODpcdCNpbmNsdWRlIFwmIzM0O2lzbS5oXCYjMzQ7XG4gIDE5Olx0XG4gIDIwOlx0TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O0lTTSBkcml2ZXIgZm9yIHMzOTBcJiMzNDspO1xuICAyMTpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4gIDIyOlx0XG4gIDIzOlx0I2RlZmluZSBEUlZfTkFNRSBcJiMzNDtpc21cJiMzNDtcbiAgMjQ6XHRcbiAgMjU6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaXNtX2RldmljZV90YWJsZVtdID0ge1xuICAyNjpcdFx0eyBQQ0lfVkRFVklDRShJQk0sIFBDSV9ERVZJQ0VfSURfSUJNX0lTTSkgfSxcbiAgMjc6XHRcdHsgfVxuICAyODpcdH07XG4gIDI5Olx0TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGlzbV9kZXZpY2VfdGFibGUpO1xuICAzMDpcdFxuICAzMTpcdHN0YXRpYyBkZWJ1Z19pbmZvX3QgKmlzbV9kZWJ1Z19pbmZvO1xuICAzMjpcdFxuICAzMzpcdHN0YXRpYyBpbnQgaXNtX2NtZChzdHJ1Y3QgaXNtX2RldiAqaXNtLCB2b2lkICpjbWQpXG4gIDM0Olx0e1xuICAzNTpcdFx0c3RydWN0IGlzbV9yZXFfaGRyICpyZXEgPSBjbWQ7XG4gIDM2Olx0XHRzdHJ1Y3QgaXNtX3Jlc3BfaGRyICpyZXNwID0gY21kO1xuICAzNzpcdFxuICAzODpcdFx0c3Bpbl9sb2NrKFx1MDAyNmlzbS1cdTAwM2VjbWRfbG9jayk7XG4gIDM5Olx0XHRfX2lzbV93cml0ZV9jbWQoaXNtLCByZXEgJiM0MzsgMSwgc2l6ZW9mKCpyZXEpLCByZXEtXHUwMDNlbGVuIC0gc2l6ZW9mKCpyZXEpKTtcbiAgNDA6XHRcdF9faXNtX3dyaXRlX2NtZChpc20sIHJlcSwgMCwgc2l6ZW9mKCpyZXEpKTtcbiAgNDE6XHRcbiAgNDI6XHRcdFdSSVRFX09OQ0UocmVzcC1cdTAwM2VyZXQsIElTTV9FUlJPUik7XG4gIDQzOlx0XG4gIDQ0Olx0XHRfX2lzbV9yZWFkX2NtZChpc20sIHJlc3AsIDAsIHNpemVvZigqcmVzcCkpO1xuICA0NTpcdFx0aWYgKHJlc3AtXHUwMDNlcmV0KSB7XG4gIDQ2Olx0XHRcdGRlYnVnX3RleHRfZXZlbnQoaXNtX2RlYnVnX2luZm8sIDAsIFwmIzM0O2NtZCBmYWlsdXJlXCYjMzQ7KTtcbiAgNDc6XHRcdFx0ZGVidWdfZXZlbnQoaXNtX2RlYnVnX2luZm8sIDAsIHJlc3AsIHNpemVvZigqcmVzcCkpO1xuICA0ODpcdFx0XHRnb3RvIG91dDtcbiAgNDk6XHRcdH1cbiAgNTA6XHRcdF9faXNtX3JlYWRfY21kKGlzbSwgcmVzcCAmIzQzOyAxLCBzaXplb2YoKnJlc3ApLCByZXNwLVx1MDAzZWxlbiAtIHNpemVvZigqcmVzcCkpO1xuICA1MTpcdG91dDpcbiAgNTI6XHRcdHNwaW5fdW5sb2NrKFx1MDAyNmlzbS1cdTAwM2VjbWRfbG9jayk7XG4gIDUzOlx0XHRyZXR1cm4gcmVzcC1cdTAwM2VyZXQ7XG4gIDU0Olx0fVxuICA1NTpcdFxuICA1NjpcdHN0YXRpYyBpbnQgaXNtX2NtZF9zaW1wbGUoc3RydWN0IGlzbV9kZXYgKmlzbSwgdTMyIGNtZF9jb2RlKVxuICA1NzpcdHtcbiAgNTg6XHRcdHVuaW9uIGlzbV9jbWRfc2ltcGxlIGNtZDtcbiAgNTk6XHRcbiAgNjA6XHRcdG1lbXNldChcdTAwMjZjbWQsIDAsIHNpemVvZihjbWQpKTtcbiAgNjE6XHRcdGNtZC5yZXF1ZXN0Lmhkci5jbWQgPSBjbWRfY29kZTtcbiAgNjI6XHRcdGNtZC5yZXF1ZXN0Lmhkci5sZW4gPSBzaXplb2YoY21kLnJlcXVlc3QpO1xuICA2MzpcdFxuICA2NDpcdFx0cmV0dXJuIGlzbV9jbWQoaXNtLCBcdTAwMjZjbWQpO1xuICA2NTpcdH1cbiAgNjY6XHRcbiAgNjc6XHRzdGF0aWMgaW50IHF1ZXJ5X2luZm8oc3RydWN0IGlzbV9kZXYgKmlzbSlcbiAgNjg6XHR7XG4gIDY5Olx0XHR1bmlvbiBpc21fcWkgY21kO1xuICA3MDpcdFxuICA3MTpcdFx0bWVtc2V0KFx1MDAyNmNtZCwgMCwgc2l6ZW9mKGNtZCkpO1xuICA3MjpcdFx0Y21kLnJlcXVlc3QuaGRyLmNtZCA9IElTTV9RVUVSWV9JTkZPO1xuICA3MzpcdFx0Y21kLnJlcXVlc3QuaGRyLmxlbiA9IHNpemVvZihjbWQucmVxdWVzdCk7XG4gIDc0Olx0XG4gIDc1Olx0XHRpZiAoaXNtX2NtZChpc20sIFx1MDAyNmNtZCkpXG4gIDc2Olx0XHRcdGdvdG8gb3V0O1xuICA3NzpcdFxuICA3ODpcdFx0ZGVidWdfdGV4dF9ldmVudChpc21fZGVidWdfaW5mbywgMywgXCYjMzQ7cXVlcnkgaW5mb1wmIzM0Oyk7XG4gIDc5Olx0XHRkZWJ1Z19ldmVudChpc21fZGVidWdfaW5mbywgMywgXHUwMDI2Y21kLnJlc3BvbnNlLCBzaXplb2YoY21kLnJlc3BvbnNlKSk7XG4gIDgwOlx0b3V0OlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDEwOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNjUyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhpbmtpbmcgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIHMzOTAgSVNNIERyaXZlciBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgaXNtX2Rydi5jYCwgd2hpY2gsIGFzIHRoZSBuYW1lIGltcGxpZXMsIGlzIHRoZSBkcml2ZXIgZm9yIHRoZSBzMzkwIElTTSB2UENJIEFkYXB0ZXIuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBJU00gaW50ZXJmYWNlIHdvcmtzLCBzcGVjaWZpY2FsbHkgdGhlIGNvbW1hbmQgd3JpdGVzIGFuZCBkYXRhIG1vdmVzLCBzbyBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYF9faXNtX3dyaXRlX2NtZGAgYW5kIGBfX2lzbV9tb3ZlYCBhcmUgZGVmaW5lZC4gVGhlc2UgYXJlIGxpa2VseSB0aGUgY29yZSBmdW5jdGlvbnMgaW1wbGVtZW50aW5nIHRoZSBhZGFwdGVyJiMzOTtzIGNvbW11bmljYXRpb24gcHJvdG9jb2wuIFRpbWUgdG8gdHJhY2UgdGhvc2UgZnVuY3Rpb24gZGVmaW5pdGlvbnMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19pc21fd3JpdGVfY21kJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9uZXQvaXNtLmg9MjQzPXN0YXRpYyBpbmxpbmUgdm9pZCBfX2lzbV9yZWFkX2NtZChzdHJ1Y3QgaXNtX2RldiAqaXNtLCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjU2LVxuZHJpdmVycy9zMzkwL25ldC9pc20uaDoyNTc6c3RhdGljIGlubGluZSB2b2lkIF9faXNtX3dyaXRlX2NtZChzdHJ1Y3QgaXNtX2RldiAqaXNtLCB2b2lkICpkYXRhLFxuZHJpdmVycy9zMzkwL25ldC9pc20uaC0yNTgtXHRcdFx0XHQgICB1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBsZW4pXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MzM9c3RhdGljIGludCBpc21fY21kKHN0cnVjdCBpc21fZGV2ICppc20sIHZvaWQgKmNtZClcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zOC1cdHNwaW5fbG9jayhcdTAwMjZpc20tXHUwMDNlY21kX2xvY2spO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6Mzk6XHRfX2lzbV93cml0ZV9jbWQoaXNtLCByZXEgJiM0MzsgMSwgc2l6ZW9mKCpyZXEpLCByZXEtXHUwMDNlbGVuIC0gc2l6ZW9mKCpyZXEpKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjQwOlx0X19pc21fd3JpdGVfY21kKGlzbSwgcmVxLCAwLCBzaXplb2YoKnJlcSkpO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNDEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19pc21fbW92ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvbmV0L2lzbS5oPTI1Nz1zdGF0aWMgaW5saW5lIHZvaWQgX19pc21fd3JpdGVfY21kKHN0cnVjdCBpc21fZGV2ICppc20sIHZvaWQgKmRhdGEsXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc20uaC0yNjYtXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjI2NzpzdGF0aWMgaW5saW5lIGludCBfX2lzbV9tb3ZlKHN0cnVjdCBpc21fZGV2ICppc20sIHU2NCBkbWJfcmVxLCB2b2lkICpkYXRhLFxuZHJpdmVycy9zMzkwL25ldC9pc20uaC0yNjgtXHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgc2l6ZSlcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz0zOTk9c3RhdGljIGludCBpc21fbW92ZShzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHU2NCBkbWJfdG9rLCB1bnNpZ25lZCBpbnQgaWR4LFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQxMi1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjQxMzpcdFx0cmV0ID0gX19pc21fbW92ZShpc20sIGRtYl9yZXEsIGRhdGEsIGJ5dGVzKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQxNC1cdFx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxMDozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjQ2MAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBJU00gRHJpdmVyKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIHRoZSBJU00gZHJpdmVyIG9uIHMzOTAgYXJjaGl0ZWN0dXJlLiBJJiMzOTttIGdvaW5nIHRvIGhlYWQgc3RyYWlnaHQgaW50byBgZHJpdmVycy9zMzkwL25ldC9pc20uaGAsIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGxpbmVzIDI0MCB0byAyNzUuIFRoYXQgYXJlYSBzaG91bGQgY29udGFpbiBzb21lIGNyaXRpY2FsIGRlZmluaXRpb25zIG9yIHN0cnVjdHVyZXMgcmVsYXRlZCB0byBbbGlrZWx5IHNwZWNpZnkgdGhlIGV4cGVjdGVkIGNvbnRlbnQgaGVyZSwgZS5nLiwgJiMzNDt0aGUgc2hhcmVkIG1lbW9yeSBsYXlvdXQmIzM0Oywgb3IgJiMzNDt0aGUgaW50ZXJydXB0IGhhbmRsaW5nIG1lY2hhbmlzbSYjMzQ7LCBvciAmIzM0O3RoZSBkZXZpY2UgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzJiMzNDssIGJhc2VkIG9uIG15IHByaW9yIGV4cGVyaWVuY2Ugd2l0aCB0aGlzIGRyaXZlciBhbmQgdGhlIHMzOTAgYXJjaGl0ZWN0dXJlXS4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBkZXRhaWxzIGFyb3VuZCBbc3BlY2lmeSB0aGUgYW50aWNpcGF0ZWQgZGV0YWlscywgZS5nLiwgJiMzNDtob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUmIzM0Oywgb3IgJiMzNDtob3cgdGhlIERNQSBjaGFubmVscyBhcmUgbWFuYWdlZCYjMzQ7LCBvciAmIzM0O3RoZSBkYXRhIHN0cnVjdHVyZXMgdXNlZCBmb3IgcGFja2V0IGJ1ZmZlcnMmIzM0O10uIFRoaXMgcmFuZ2UgaXMgdXN1YWxseSB3aGVyZSBbZ2l2ZSB0aGUgcmVhc29ucyB3aHkgeW91IGZvY3VzIG9uIHRoYXQgYXJlYSwgZS5nLiwgJiMzNDt0aGUgY29yZSBkYXRhIHN0cnVjdHVyZXMgZm9yIGRldmljZSBjb25maWd1cmF0aW9uIGxpdmUmIzM0Oywgb3IgJiMzNDt0aGUgaW50ZXJydXB0IHZlY3RvcnMgYXJlIGRlZmluZWQmIzM0Oywgb3IgJiMzNDt0aGUgY29tbWFuZCBkZXNjcmlwdG9ycyBhcmUgZGVjbGFyZWQmIzM0O10uIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBwb3RlbnRpYWwgY2x1ZXMgYWJvdXQgW21lbnRpb24gd2hhdCB5b3UmIzM5O3JlIHRyeWluZyB0byBmaWd1cmUgb3V0LCBlLmcuLCAmIzM0O2EgcGVyZm9ybWFuY2UgYm90dGxlbmVjayYjMzQ7LCBvciAmIzM0O2Egc3BlY2lmaWMgYnVnJiMzNDssIG9yICYjMzQ7YSBwYXJ0aWN1bGFyIGZlYXR1cmUgaW1wbGVtZW50YXRpb24mIzM0O10sIHdoaWNoIG1heSBiZSByZWZsZWN0ZWQgaW4gdGhlIGNvZGUgc3RydWN0dXJlIG9yIHZhcmlhYmxlIG5hbWVzIGFyb3VuZCB0aGlzIHBhcnQgb2YgdGhlIGRyaXZlci4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9uZXQvaXNtLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI0MDpcdCNkZWZpbmUgSVNNX0NSRUFURV9SRVEoZG1iLCBpZHgsIHNmLCBvZmZzZXQpXHRcdFxcXG4gMjQxOlx0XHQoKGRtYikgfCAoaWR4KSBcdTAwM2NcdTAwM2MgMjQgfCAoc2YpIFx1MDAzY1x1MDAzYyAyMyB8IChvZmZzZXQpKVxuIDI0MjpcdFxuIDI0MzpcdHN0YXRpYyBpbmxpbmUgdm9pZCBfX2lzbV9yZWFkX2NtZChzdHJ1Y3QgaXNtX2RldiAqaXNtLCB2b2lkICpkYXRhLFxuIDI0NDpcdFx0XHRcdFx0ICB1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBsZW4pXG4gMjQ1Olx0e1xuIDI0NjpcdFx0c3RydWN0IHpwY2lfZGV2ICp6ZGV2ID0gdG9fenBjaShpc20tXHUwMDNlcGRldik7XG4gMjQ3Olx0XHR1NjQgcmVxID0gWlBDSV9DUkVBVEVfUkVRKHpkZXYtXHUwMDNlZmgsIDIsIDgpO1xuIDI0ODpcdFxuIDI0OTpcdFx0d2hpbGUgKGxlbiBcdTAwM2UgMCkge1xuIDI1MDpcdFx0XHRfX3pwY2lfbG9hZChkYXRhLCByZXEsIG9mZnNldCk7XG4gMjUxOlx0XHRcdG9mZnNldCAmIzQzOz0gODtcbiAyNTI6XHRcdFx0ZGF0YSAmIzQzOz0gODtcbiAyNTM6XHRcdFx0bGVuIC09IDg7XG4gMjU0Olx0XHR9XG4gMjU1Olx0fVxuIDI1NjpcdFxuIDI1NzpcdHN0YXRpYyBpbmxpbmUgdm9pZCBfX2lzbV93cml0ZV9jbWQoc3RydWN0IGlzbV9kZXYgKmlzbSwgdm9pZCAqZGF0YSxcbiAyNTg6XHRcdFx0XHRcdCAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIGxlbilcbiAyNTk6XHR7XG4gMjYwOlx0XHRzdHJ1Y3QgenBjaV9kZXYgKnpkZXYgPSB0b196cGNpKGlzbS1cdTAwM2VwZGV2KTtcbiAyNjE6XHRcdHU2NCByZXEgPSBaUENJX0NSRUFURV9SRVEoemRldi1cdTAwM2VmaCwgMiwgbGVuKTtcbiAyNjI6XHRcbiAyNjM6XHRcdGlmIChsZW4pXG4gMjY0Olx0XHRcdF9fenBjaV9zdG9yZV9ibG9jayhkYXRhLCByZXEsIG9mZnNldCk7XG4gMjY1Olx0fVxuIDI2NjpcdFxuIDI2NzpcdHN0YXRpYyBpbmxpbmUgaW50IF9faXNtX21vdmUoc3RydWN0IGlzbV9kZXYgKmlzbSwgdTY0IGRtYl9yZXEsIHZvaWQgKmRhdGEsXG4gMjY4Olx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgc2l6ZSlcbiAyNjk6XHR7XG4gMjcwOlx0XHRzdHJ1Y3QgenBjaV9kZXYgKnpkZXYgPSB0b196cGNpKGlzbS1cdTAwM2VwZGV2KTtcbiAyNzE6XHRcdHU2NCByZXEgPSBaUENJX0NSRUFURV9SRVEoemRldi1cdTAwM2VmaCwgMCwgc2l6ZSk7XG4gMjcyOlx0XG4gMjczOlx0XHRyZXR1cm4gX196cGNpX3N0b3JlX2Jsb2NrKGRhdGEsIHJlcSwgZG1iX3JlcSk7XG4gMjc0Olx0fVxuIDI3NTpcdFxuIDI3NjpcdCNlbmRpZiAvKiBTMzkwX0lTTV9IICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDEwOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNDYzCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMjU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gczM5MCBJU00gdlBDSSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJJiMzOTttIHNlZWluZyByZWZlcmVuY2VzIHRvIGBfX3pwY2lfbG9hZGAsIGBfX3pwY2lfc3RvcmVfYmxvY2tgLCBgenBjaV9kZXZgLCBhbmQgdGhlIElCTSBJU00gdlBDSSBBZGFwdGVyLiBUaGlzIGltbWVkaWF0ZWx5IGZsYWdzIG15IHJhZGFyIGFzIHMzOTAgYXJjaGl0ZWN0dXJlIHRlcnJpdG9yeSwgc3BlY2lmaWNhbGx5IElCTSYjMzk7cyB6L0FyY2hpdGVjdHVyZS4gQSBxdWljayB0aG91Z2h0IC0gaXMgdGhpcyBzb21ldGhpbmcgUUVNVSBlbXVsYXRlcz8gQ2FuIElTTSBldmVuIGJlIHZpcnR1YWxpemVkLCBlaXRoZXIgaW4gUUVNVSBvciBwZXJoYXBzIHNvbWV0aGluZyBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZT8KCkhhbmcgb24sIGJlZm9yZSBJIGRpdmUgaW50byBlbXVsYXRpb24gc3BlY2lmaWNzLCBJIG5lZWQgdG8gY29uZmlybSB3aGF0ICYjMzQ7SVNNJiMzNDsgKmlzKiBpbiB0aGlzIGNvbnRleHQuIEFoLCAmIzM0O0ludGVybmFsIFNoYXJlZCBNZW1vcnkmIzM0OyBhZGFwdGVyIGZvciBJQk0gWiAoczM5MHgpLiBTcGVjaWZpY2FsbHksIHRoaXMgc2VlbXMgdG8gYmUgcmVsYXRlZCB0byBTTUMtRCAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucyAtIERpcmVjdCBtZW1vcnkgYWNjZXNzKSBvciBESUJTIG92ZXIgSVNNLiBPa2F5LCBzbyBub3cgSSYjMzk7bSB0aGlua2luZywgY2FuIGFuIElTTSBkZXZpY2UgZXhpc3QgaW4gc3RhbmRhcmQgUUVNVSBzMzkweD8gT3IgaXMgdGhpcyBhIHByb3ByaWV0YXJ5IElCTSB6L1ZNIC8gTFBBUiB2aXJ0dWFsIFBDSSBkZXZpY2UgdGhhdCBmdW5kYW1lbnRhbGx5IHJlcXVpcmVzIElCTSBaIGZpcm13YXJlLCBsaWtlIHovVk0gb3IgcnVubmluZyB3aXRoaW4gYSBQUi9TTSBMUEFSIGVudmlyb25tZW50PwoKVGhlIHJlYWwgcXVlc3Rpb24gaGVyZSwgZG9lcyBRRU1VIGV2ZW4gc3VwcG9ydCBJU00/IFRoaXMgbmVlZHMgdG8gYmUgY2xhcmlmaWVkLCBxdWlja2x5LiBMZXQgbWUgbG9vayBhdCB0aGUga2VybmVsIHNvdXJjZS4uLiBJJiMzOTtsbCBjaGVjayBmb3IgYW55IG90aGVyIHJlZmVyZW5jZXMgYW5kIHZlcmlmeSBpZiBJU00gaXMgYWN0dWFsbHkgcmVjb2duaXplZCBhcyBhbiBJQk0geiBQQ0kgZGV2aWNlIHdpdGggaXRzIHNwZWNpZmljIGBQQ0lfREVWSUNFX0lEX0lCTV9JU01gIGlkZW50aWZpZXIuIExldCYjMzk7cyBzdGFydCB3aXRoIGNoZWNraW5nIHRoYXQgYFBDSV9ERVZJQ0VfSURfSUJNX0lTTWAgZGVmaW5pdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UENJX0RFVklDRV9JRF9JQk1fSVNNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmM9MjE9REVDTEFSRV9QQ0lfRklYVVBfRUFSTFkoUENJX1ZFTkRPUl9JRF9JQk0sXG5hcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jOjIyOlx0XHRcdFBDSV9ERVZJQ0VfSURfSUJNX0lTTSxcbmFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmMtMjMtXHRcdFx0enBjaV9pc21fYmFyX25vX21tYXApO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTI1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBpc21fZGV2aWNlX3RhYmxlW10gPSB7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoyNjpcdHsgUENJX1ZERVZJQ0UoSUJNLCBQQ0lfREVWSUNFX0lEX0lCTV9JU00pIH0sXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yNy1cdHsgfVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYz0zODg9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGlzbV9kZXZpY2VfdGFibGVbXSA9IHtcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYy0zODktXHR7IFBDSV9EUklWRVJfT1ZFUlJJREVfREVWSUNFX1ZGSU8oUENJX1ZFTkRPUl9JRF9JQk0sXG5kcml2ZXJzL3ZmaW8vcGNpL2lzbS9tYWluLmM6MzkwOlx0XHRcdFx0XHQgIFBDSV9ERVZJQ0VfSURfSUJNX0lTTSkgfSxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYy0zOTEtXHR7fVxuLS1cbmluY2x1ZGUvbGludXgvcGNpX2lkcy5oLTUyMC0jZGVmaW5lIFBDSV9ERVZJQ0VfSURfSUJNX0lDT01fRk9VUl9QT1JUX01PREVMXHQweDI1MlxuaW5jbHVkZS9saW51eC9wY2lfaWRzLmg6NTIxOiNkZWZpbmUgUENJX0RFVklDRV9JRF9JQk1fSVNNXHRcdDB4MDRlZFxuaW5jbHVkZS9saW51eC9wY2lfaWRzLmgtNTIyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxMDozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDUyMQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgd2VudCBkb3duOgoKKipESUJTLCBTTUMtRCwgYW5kIE1lbW9yeSBCYXJyaWVycyAtIExldCYjMzk7cyBEaWcgSW4qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gRElCUyBhbmQgU01DLUQuIFRoZSBxdWVzdGlvbiB0aGF0JiMzOTtzIGRyaXZpbmcgbWUgaXMgd2hldGhlciB0aGVzZSBgaXNtX2FsbG9jX2RtYmAgYW5kIGBpc21fZnJlZV9kbWJgIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgZ2V0dGluZyBoaXQuIFRoZXkgYXJlIG9idmlvdXNseSBpbXBvcnRhbnQsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcGF0aCB0byB0aGVtLgoKV2FpdCBhIHNlY29uZCwgRElCUy4uLiB3aGF0IGV4YWN0bHkgKmlzKiBESUJTIGFnYWluPyBJIG5lZWQgdG8gcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGF0IHBpZWNlLiBMZXQgbWUgZ28gY2hlY2sgdGhlIGtlcm5lbCBkb2N1bWVudGF0aW9uIG9yIHJlbGV2YW50IHNvdXJjZSBmaWxlcyBvbiBESUJTLiBHb3QgdG8gaGF2ZSBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgdGhhdCBiZWZvcmUgSSBjYW4gbWVhbmluZ2Z1bGx5IGNvbnRpbnVlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfRElCUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9MTMzPUNPTkZJR19TTUNfRElBRz1tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6MTM0OkNPTkZJR19ESUJTPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxMzU6Q09ORklHX0RJQlNfTE89eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTEzNi1DT05GSUdfWERQX1NPQ0tFVFM9eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0xMjQ9Q09ORklHX1NNQ19ESUFHPW1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxMjU6Q09ORklHX0RJQlM9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjEyNjpDT05GSUdfRElCU19MTz15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMTI3LUNPTkZJR19YRFBfU09DS0VUUz15XG4tLVxuZHJpdmVycy9NYWtlZmlsZT0xOTc9b2JqLXlcdFx0XHRcdCYjNDM7PSByZXNjdHJsL1xuZHJpdmVycy9NYWtlZmlsZS0xOTgtXG5kcml2ZXJzL01ha2VmaWxlOjE5OTpvYmotJChDT05GSUdfRElCUylcdFx0JiM0Mzs9IGRpYnMvXG5kcml2ZXJzL01ha2VmaWxlLTIwMC1vYmotJChDT05GSUdfUzM5MClcdFx0JiM0Mzs9IHMzOTAvXG4tLVxuZHJpdmVycy9kaWJzL01ha2VmaWxlPTY9ZGlicy15ICYjNDM7PSBkaWJzX21haW4ub1xuZHJpdmVycy9kaWJzL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX0RJQlMpICYjNDM7PSBkaWJzLm9cbmRyaXZlcnMvZGlicy9NYWtlZmlsZTo4OmRpYnMtJChDT05GSUdfRElCU19MTykgJiM0Mzs9IGRpYnNfbG9vcGJhY2sub1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMjAtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjIxOiNpZiBJU19FTkFCTEVEKENPTkZJR19ESUJTX0xPKVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0yMi0jZGVmaW5lIERJQlNfTE9fRE1CU19IQVNIX0JJVFNcdDEyXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZz0xMzU9Q09ORklHX1NNQ19IU19DVFJMX0JQRj15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnOjEzNjpDT05GSUdfRElCUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnOjEzNzpDT05GSUdfRElCU19MTz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLTEzOC1DT05GSUdfUE1fV0FLRUxPQ0tTPXlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTA6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUzMTkKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgczM5MCBOZXR3b3JrIERyaXZlciBSZWdpc3RyYXRpb24qKgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGd1dHMgb2YgdGhpcyBzMzkwIG5ldHdvcmsgZHJpdmVyLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBvdXQgYGRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgcHJlY2lzZWx5IGhvdyB0aGlzIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgRElCUyAoRGV2aWNlIEludGVyZmFjZSBCbG9jayBTdHJ1Y3R1cmUpIGFuZCB0aGUgUENJIHN1YnN5c3RlbS4gSSYjMzk7bSBhc3N1bWluZyBpdCByZWdpc3RlcnMgaXRzZWxmIHNvbWVob3csIGJ1dCB0aGUgZGV2aWwgaXMgYWx3YXlzIGluIHRoZSBkZXRhaWxzLCBpc24mIzM5O3QgaXQ/IEkgd2FudCB0byBzZWUgdGhlIHNwZWNpZmljIHNlcXVlbmNlLCB0aGUgY2FsbHMsIHRoZSBkYXRhIHN0cnVjdHVyZXMgdXNlZC4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgc3RhbmRhcmQgUENJIHByb2JlIGFuZCByZWdpc3RyYXRpb24gc2VxdWVuY2UsIGJ1dCB3aXRoIHRoZSBhZGRlZCB3cmlua2xlIG9mIGhvdyBESUJTIGNvbWVzIGludG8gcGxheSBvbiBzMzkwLiBJcyBpdCB1c2luZyB0aGUgc3RhbmRhcmQgYHBjaV9yZWdpc3Rlcl9kcml2ZXJgIHdpdGggc29tZSBzMzkwLXNwZWNpZmljIGhvb2tzLCBvciBpcyB0aGVyZSBhIG1vcmUgaW52b2x2ZWQgRElCUy1jZW50cmljIGFwcHJvYWNoPyBMZXQmIzM5O3MgZ2V0IHJlYWRpbmcgYW5kIGZpZ3VyZSBvdXQgdGhpcyBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gZGFuY2UuIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSBjYWxscyBsaWtlIGBkaWJzX3JlZ2lzdGVyX2RyaXZlcmAgb3Igc29tZXRoaW5nIHNpbWlsYXIgaWYgaXQmIzM5O3MgZGV2aWF0aW5nIGZyb20gdGhlIHN0YW5kYXJkIFBDSSBpbml0aWFsaXphdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDU0MDpcdFx0fVxuIDU0MTpcdFx0c3Bpbl91bmxvY2soXHUwMDI2ZGlicy1cdTAwM2Vsb2NrKTtcbiA1NDI6XHRcdHJldHVybiBJUlFfSEFORExFRDtcbiA1NDM6XHR9XG4gNTQ0Olx0XG4gNTQ1Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBkaWJzX2Rldl9vcHMgaXNtX29wcyA9IHtcbiA1NDY6XHRcdC5nZXRfZmFicmljX2lkID0gaXNtX2dldF9jaGlkLFxuIDU0NzpcdFx0LnF1ZXJ5X3JlbW90ZV9naWQgPSBpc21fcXVlcnlfcmdpZCxcbiA1NDg6XHRcdC5tYXhfZG1icyA9IGlzbV9tYXhfZG1icyxcbiA1NDk6XHRcdC5yZWdpc3Rlcl9kbWIgPSBpc21fcmVnaXN0ZXJfZG1iLFxuIDU1MDpcdFx0LnVucmVnaXN0ZXJfZG1iID0gaXNtX3VucmVnaXN0ZXJfZG1iLFxuIDU1MTpcdFx0Lm1vdmVfZGF0YSA9IGlzbV9tb3ZlLFxuIDU1MjpcdFx0LmFkZF92bGFuX2lkID0gaXNtX2FkZF92bGFuX2lkLFxuIDU1MzpcdFx0LmRlbF92bGFuX2lkID0gaXNtX2RlbF92bGFuX2lkLFxuIDU1NDpcdFx0LnNpZ25hbF9ldmVudCA9IGlzbV9zaWduYWxfaWVxLFxuIDU1NTpcdH07XG4gNTU2Olx0XG4gNTU3Olx0c3RhdGljIGludCBpc21fZGV2X2luaXQoc3RydWN0IGlzbV9kZXYgKmlzbSlcbiA1NTg6XHR7XG4gNTU5Olx0XHRzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGlzbS1cdTAwM2VwZGV2O1xuIDU2MDpcdFx0aW50IHJldDtcbiA1NjE6XHRcbiA1NjI6XHRcdHJldCA9IHBjaV9hbGxvY19pcnFfdmVjdG9ycyhwZGV2LCAxLCAxLCBQQ0lfSVJRX01TSSk7XG4gNTYzOlx0XHRpZiAocmV0IFx1MDAzYz0gMClcbiA1NjQ6XHRcdFx0Z290byBvdXQ7XG4gNTY1Olx0XG4gNTY2Olx0XHRyZXQgPSByZXF1ZXN0X2lycShwY2lfaXJxX3ZlY3RvcihwZGV2LCAwKSwgaXNtX2hhbmRsZV9pcnEsIDAsXG4gNTY3Olx0XHRcdFx0ICBwY2lfbmFtZShwZGV2KSwgaXNtKTtcbiA1Njg6XHRcdGlmIChyZXQpXG4gNTY5Olx0XHRcdGdvdG8gZnJlZV92ZWN0b3JzO1xuIDU3MDpcdFxuIDU3MTpcdFx0cmV0ID0gcmVnaXN0ZXJfc2JhKGlzbSk7XG4gNTcyOlx0XHRpZiAocmV0KVxuIDU3MzpcdFx0XHRnb3RvIGZyZWVfaXJxO1xuIDU3NDpcdFxuIDU3NTpcdFx0cmV0ID0gcmVnaXN0ZXJfaWVxKGlzbSk7XG4gNTc2Olx0XHRpZiAocmV0KVxuIDU3NzpcdFx0XHRnb3RvIHVucmVnX3NiYTtcbiA1Nzg6XHRcbiA1Nzk6XHRcdHF1ZXJ5X2luZm8oaXNtKTtcbiA1ODA6XHRcdHJldHVybiAwO1xuIDU4MTpcdFxuIDU4MjpcdHVucmVnX3NiYTpcbiA1ODM6XHRcdHVucmVnaXN0ZXJfc2JhKGlzbSk7XG4gNTg0Olx0XHRpc21fZnJlZV9zYmEoaXNtKTtcbiA1ODU6XHRmcmVlX2lycTpcbiA1ODY6XHRcdGZyZWVfaXJxKHBjaV9pcnFfdmVjdG9yKHBkZXYsIDApLCBpc20pO1xuIDU4NzpcdGZyZWVfdmVjdG9yczpcbiA1ODg6XHRcdHBjaV9mcmVlX2lycV92ZWN0b3JzKHBkZXYpO1xuIDU4OTpcdG91dDpcbiA1OTA6XHRcdHJldHVybiByZXQ7XG4gNTkxOlx0fVxuIDU5MjpcdFxuIDU5MzpcdHN0YXRpYyB2b2lkIGlzbV9kZXZfZXhpdChzdHJ1Y3QgaXNtX2RldiAqaXNtKVxuIDU5NDpcdHtcbiA1OTU6XHRcdHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gaXNtLVx1MDAzZXBkZXY7XG4gNTk2Olx0XG4gNTk3Olx0XHQvKiBpc20gd2lsbCBvbmx5IGdlbmVyYXRlIG5ldyBJUlFzIHdoaWxlIGllcSBcdTAwMjYgc2JhIGFyZSByZWdpc3RlcmVkICovXG4gNTk4Olx0XHR1bnJlZ2lzdGVyX2llcShpc20pO1xuIDU5OTpcdFx0dW5yZWdpc3Rlcl9zYmEoaXNtKTtcbiA2MDA6XHRcdC8qIGRyYWluIG9uZ29pbmcgaXJwdCBoYW5kbGVycyAqL1xuIDYwMTpcdFx0ZnJlZV9pcnEocGNpX2lycV92ZWN0b3IocGRldiwgMCksIGlzbSk7XG4gNjAyOlx0XHRpc21fZnJlZV9pZXEoaXNtKTtcbiA2MDM6XHRcdGlzbV9mcmVlX3NiYShpc20pO1xuIDYwNDpcdFx0cGNpX2ZyZWVfaXJxX3ZlY3RvcnMocGRldik7XG4gNjA1Olx0fVxuIDYwNjpcdFxuIDYwNzpcdHN0YXRpYyBpbnQgaXNtX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4gNjA4Olx0e1xuIDYwOTpcdFx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xuIDYxMDpcdFx0c3RydWN0IHpwY2lfZGV2ICp6ZGV2O1xuIDYxMTpcdFx0c3RydWN0IGlzbV9kZXYgKmlzbTtcbiA2MTI6XHRcdGludCByZXQ7XG4gNjEzOlx0XG4gNjE0Olx0XHRpc20gPSBremFsbG9jX29iaigqaXNtKTtcbiA2MTU6XHRcdGlmICghaXNtKVxuIDYxNjpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiA2MTc6XHRcbiA2MTg6XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmlzbS1cdTAwM2VjbWRfbG9jayk7XG4gNjE5Olx0XHRkZXZfc2V0X2RydmRhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYsIGlzbSk7XG4gNjIwOlx0XHRpc20tXHUwMDNlcGRldiA9IHBkZXY7XG4gNjIxOlx0XG4gNjIyOlx0XHRyZXQgPSBwY2lfZW5hYmxlX2RldmljZV9tZW0ocGRldik7XG4gNjIzOlx0XHRpZiAocmV0KVxuIDYyNDpcdFx0XHRnb3RvIGVycl9kZXY7XG4gNjI1Olx0XG4gNjI2Olx0XHRyZXQgPSBwY2lfcmVxdWVzdF9tZW1fcmVnaW9ucyhwZGV2LCBEUlZfTkFNRSk7XG4gNjI3Olx0XHRpZiAocmV0KVxuIDYyODpcdFx0XHRnb3RvIGVycl9kaXNhYmxlO1xuIDYyOTpcdFxuIDYzMDpcdFx0cmV0ID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudChcdTAwMjZwZGV2LVx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDY0KSk7XG4gNjMxOlx0XHRpZiAocmV0KVxuIDYzMjpcdFx0XHRnb3RvIGVycl9yZXNvdXJjZTtcbiA2MzM6XHRcbiA2MzQ6XHRcdGRtYV9zZXRfc2VnX2JvdW5kYXJ5KFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBTWl8xTSAtIDEpO1xuIDYzNTpcdFx0ZG1hX3NldF9tYXhfc2VnX3NpemUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFNaXzFNKTtcbiA2MzY6XHRcdHBjaV9zZXRfbWFzdGVyKHBkZXYpO1xuIDYzNzpcdFxuIDYzODpcdFx0ZGlicyA9IGRpYnNfZGV2X2FsbG9jKCk7XG4gNjM5Olx0XHRpZiAoIWRpYnMpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTA6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcxNjIKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA3MDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGlzbV9kcnYuY2AgUHJvYmUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBpc21fcHJvYmVgIGlzIGNsZWFybHkgdGllZCB0byBhIHNwZWNpZmljIElCTSBJU00gUENJIGRldmljZSwgaWRlbnRpZmllZCBieSBgUENJX0RFVklDRV9JRF9JQk1fSVNNYC4gSSBpbW1lZGlhdGVseSByZWNhbGwgdGhhdCBgaXNtX2Rydi5jYCBpcyBvbmx5IGJ1aWx0IGlmIGBDT05GSUdfSVNNYCBpcyBlbmFibGVkLCB3aGljaCwgZGlnZ2luZyBhIGJpdCwgaXMgY29udHJvbGxlZCBieSB0aGUgYGRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZ2AgZmlsZS4gRnVydGhlcm1vcmUsIHRoYXQgc3BlY2lmaWMgYEtjb25maWdgIGZpbGUgaXMgb25seSBzb3VyY2VkIGlmIHRoZSBlbnRpcmUgYHMzOTBgIGFyY2hpdGVjdHVyZSBpcyBlbmFibGVkIHZpYSBgQ09ORklHX1MzOTA9eWAuIE15IGJhY2tncm91bmQgYWxsb3dzIG1lIHRvIGluZmVyIHRoYXQgYGlzbWAgbGlrZWx5IHJlZmVycyB0byBhIGhhcmR3YXJlIG9yIGh5cGVydmlzb3Itc3BlY2lmaWMgdmlydHVhbCBQQ0kgYWRhcHRlciwgZXhjbHVzaXZlIHRvIHRoZSBJQk0gWiAoczM5MHgpIG1haW5mcmFtZSBhcmNoaXRlY3R1cmUuCgpOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgZnV6emluZyBhbmQgdmlydHVhbCBlbnZpcm9ubWVudHMuIERvZXMgc3l6a2FsbGVyIG9yIGEgdmlydHVhbGl6ZWQgc2V0dXAgbGlrZSBRRU1VIG9yIEdDRSBldmVuIHRvdWNoIGBpc21fZHJ2LmNgPyBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyBpZiBgUENJX0RFVklDRV9JRF9JQk1fSVNNYCBpcyBlbXVsYXRhYmxlIGluIHN0YW5kYXJkIFFFTVUuIEdpdmVuIGl0cyBJQk0gWiBzcGVjaWZpYyBuYXR1cmUsIEkgc3Ryb25nbHkgc3VzcGVjdCBpdCYjMzk7cyBub3QuIEkga25vdyBmcm9tIG15IHdvcmsgdGhhdCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIGludHJpY2FjaWVzIG9mIHRoZSBJQk0gSVNNIFBDSSBkZXZpY2UsIHBhcnRpY3VsYXJseSB0aGUgYHpwY2lgIGluc3RydWN0aW9uIGV4ZWN1dGlvbiB3aXRoIHRoZSBJU00gY29tbWFuZCBpbnRlcmZhY2UuIEl0JiMzOTtzIGEga2V5IHBvaW50LgoKSSBoYXZlIGFuIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNyaXRlcmlhIGZvciBkZXRlcm1pbmluZyBpZiBhIHBhdGNoIGlzICYjMzQ7V29ydGhGdXp6aW5nLiYjMzQ7IEkgcXVpY2tseSBzY2FuIHRoZSBsaXN0IG9mIGV4Y2VwdGlvbnMuIEkgc2VlIGl0ZW1zIHRoYXQgdHJpZ2dlciByZWQgZmxhZ3MuIE15IHRob3VnaHRzIGFyZTogSXMgdGhpcyBhIG1vZGlmaWNhdGlvbiB0byBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBvciBjb21tZW50cz8gT3IgaXMgaXQgYSBwdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2U/IFRoYXQgd291bGQgbWFrZSBpdCBub3Qgd29ydGggZnV6emluZy4gSXMgaXQgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgUUVNVT8gT3IgaXMgaXQgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlciwgb3IgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzPyBJbiB0aGlzIGNhc2UsIGlzIGl0IGFib3V0IHRoZSBzMzkwIElTTT8KClRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgd2hldGhlciBJU00gaXMgZ2VudWluZWx5IGVtdWxhdGVkIHdpdGhpbiBRRU1VLCBvciBpZiBpdCYjMzk7cyBmdW5kYW1lbnRhbGx5IGEgaGFyZHdhcmUtc3BlY2lmaWMgb3Igei9WTS1zcGVjaWZpYyBQQ0kgZGV2aWNlLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIEkgbmVlZCB0byBzcGVjaWZpY2FsbHkgY2hlY2sgUUVNVSYjMzk7cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgSVNNIGRldmljZSBzdXBwb3J0LgoKQ2hlY2tpbmcgUUVNVSwgdGhlIHMzOTB4IHRhcmdldCBpbmNsdWRlcyBmZWF0dXJlcyBsaWtlIGBzMzkwLXBjaS1idXNgIGFuZCBgczM5MC1wY2ktZGV2aWNlYCwgbGlrZWx5IGZvciBwYXNzdGhyb3VnaCAodmZpby1wY2kpLiBIb3dldmVyLCBhbmQgdGhpcyBpcyBjcnVjaWFsLCBRRU1VICpkb2VzIG5vdCogaGF2ZSBhbiBlbXVsYXRlZCBJU00gZGV2aWNlLiBGcm9tIHdoYXQgSSYjMzk7dmUgc2VlbiwgSVNNIGRldmljZXMgKm9ubHkqIGV4aXN0IGluIHMzOTB4IFFFTVUgdGhyb3VnaCBWRklPIHBhc3N0aHJvdWdoLCByZXF1aXJpbmcgYSByZWFsIElCTSBJU00gdmlydHVhbCBQQ0kgZnVuY3Rpb24gZnJvbSBhbiBJQk0gWiBob3N0LgoKRmluYWxseSwgSSYjMzk7bGwgcXVpY2tseSBjaGVjayB0aGUgRElCUyBsb29wYmFjayAoYENPTkZJR19ESUJTX0xPYCBpbiBgZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suY2ApIGFzIGEgZmluYWwsIHJlbW90ZSBwb3NzaWJpbGl0eS4gRG9lcyB0aGF0IGxvb3BiYWNrIGNvZGUgaW50ZXJmYWNlIHdpdGggYGlzbV9kcnYuY2A/IEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSBieSBxdWlja2x5IGNoZWNraW5nIGBkcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXNtX2FsbG9jX2RtYiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz0yMjg9c3RhdGljIHZvaWQgaXNtX2ZyZWVfZG1iKHN0cnVjdCBpc21fZGV2ICppc20sIHN0cnVjdCBkaWJzX2RtYiAqZG1iKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTIzNi1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjIzNzpzdGF0aWMgaW50IGlzbV9hbGxvY19kbWIoc3RydWN0IGlzbV9kZXYgKmlzbSwgc3RydWN0IGRpYnNfZG1iICpkbWIpXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yMzgte1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTI4NT1zdGF0aWMgaW50IGlzbV9yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYixcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yOTItXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoyOTM6XHRyZXQgPSBpc21fYWxsb2NfZG1iKGlzbSwgZG1iKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTI5NC1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDEwOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4ODUyCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBgZGlic19sb29wYmFjay5jYCoqCgpPa2F5LCB0aW1lIHRvIGNyYWNrIG9wZW4gYGRpYnNfbG9vcGJhY2suY2AuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiBpbiB0aGlzIHBhcnRpY3VsYXIgY29ybmVyIG9mIHRoZSBjb2RlYmFzZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyB0aGlzIGxvb3BiYWNrIGZ1bmN0aW9uYWxpdHkgaXMgaW1wbGVtZW50ZWQg4oCTIEkga25vdyB0aGUgZ2VuZXJhbCBhcmNoaXRlY3R1cmUsIGJ1dCB0aGUgc3BlY2lmaWNzIGFyZSBhbHdheXMgd2hlcmUgdGhlIGludGVyZXN0aW5nIGJpdHMgbGl2ZS4gSSYjMzk7bSBwcmltYXJpbHkgbG9va2luZyBmb3IgdGhlIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBjcml0aWNhbCBwYXRoIGxvZ2ljLiBBcmUgdGhleSB1c2luZyBhbnkgY2xldmVyIHN5bmNocm9uaXphdGlvbiB0ZWNobmlxdWVzPyBBbnkgbm9uLW9idmlvdXMgb3B0aW1pemF0aW9ucz8gSSB3YW50IHRvIHF1aWNrbHkgaWRlbnRpZnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIHByb25lIHRvIHJhY2UgY29uZGl0aW9ucy4gSSYjMzk7bSBhbHNvIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgaG93IHRoZXkgaGFuZGxlIGVycm9yIGNvbmRpdGlvbnMgYW5kIHJlc291cmNlIGNsZWFudXA7IGEgY29tbW9uIHNvdXJjZSBvZiBzdWJ0bGUgYnVncy4gSeKAmWxsIHN0YXJ0IGJ5IHRyYWNpbmcgYSB0eXBpY2FsIGRhdGEgZmxvdywgZm9jdXNpbmcgb24gcmVhZHMgYW5kIHdyaXRlcywgbG9va2luZyBmb3IgaG93IGRhdGEgaXMgbWFuYWdlZCBiZXR3ZWVuIHRoZSBsYXllcnMgYW5kIHdoZXRoZXIgdGhlIGRlc2lnbiBpcyBlZmZpY2llbnQgZnJvbSBhIHBlcmZvcm1hbmNlIHBvaW50IG9mIHZpZXcuIFNwZWNpZmljYWxseSBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgaGludHMgb2YgYW4gaW1wbGVtZW50YXRpb24gdGhhdCBtaWdodCBiZSBwcm9uZSB0byBidWZmZXIgb3ZlcmZsb3dzLCBvZmYtYnktb25lIGVycm9ycywgb3Igb3RoZXIgY29tbW9uIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3Vlcywgc28gSSBrbm93IHdoZXJlIHRvIGZvY3VzIG15IGF0dGVudGlvbi4gSXQmIzM5O3MgdGltZSB0byBwdXQgb24gbXkgZGVidWdnaW5nIGhhdCBhbmQgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkbWImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2RpYnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYz0zND1zdGF0aWMgaW50IGRpYnNfbG9fcXVlcnlfcmdpZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIGNvbnN0IHV1aWRfdCAqcmdpZCxcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTQyLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo0MzpzdGF0aWMgaW50IGRpYnNfbG9fbWF4X2RtYnModm9pZClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNDQte1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNDctXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjQ4OnN0YXRpYyBpbnQgZGlic19sb19yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYixcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNDktXHRcdFx0XHRzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNTAte1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo1MTpcdHN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlICpkbWJfbm9kZSwgKnRtcF9ub2RlO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy01Mi1cdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTU3LVx0bGRldiA9IGRpYnMtXHUwMDNlZHJ2X3ByaXY7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjU4Olx0c2JhX2lkeCA9IGRtYi1cdTAwM2VpZHg7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjU5Olx0LyogY2hlY2sgc3BhY2UgZm9yIG5ldyBkbWIgKi9cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNjAtXHRmb3JfZWFjaF9jbGVhcl9iaXQoc2JhX2lkeCwgbGRldi1cdTAwM2VzYmFfaWR4X21hc2ssIERJQlNfTE9fTUFYX0RNQlMpIHtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTY2LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo2NzpcdGRtYl9ub2RlID0ga3phbGxvY19vYmooKmRtYl9ub2RlKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Njg6XHRpZiAoIWRtYl9ub2RlKSB7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTY5LVx0XHRyYyA9IC1FTk9NRU07XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy03Mi1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6NzM6XHRkbWJfbm9kZS1cdTAwM2VzYmFfaWR4ID0gc2JhX2lkeDtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6NzQ6XHRkbWJfbm9kZS1cdTAwM2VsZW4gPSBkbWItXHUwMDNlZG1iX2xlbjtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNzUtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy03OC1cdFx0XHQgICAgX19HRlBfTk9SRVRSWSB8IF9fR0ZQX1pFUk8sXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjc5Olx0XHRcdCAgICBnZXRfb3JkZXIoZG1iX25vZGUtXHUwMDNlbGVuKSk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTgwLVx0aWYgKCFmb2xpbykge1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtODMtXHR9XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjg0Olx0ZG1iX25vZGUtXHUwMDNlY3B1X2FkZHIgPSBmb2xpb19hZGRyZXNzKGZvbGlvKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6ODU6XHRkbWJfbm9kZS1cdTAwM2VkbWFfYWRkciA9IERJQlNfRE1BX0FERFJfSU5WQUxJRDtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6ODY6XHRyZWZjb3VudF9zZXQoXHUwMDI2ZG1iX25vZGUtXHUwMDNlcmVmY250LCAxKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtODctXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTg4LWFnYWluOlxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo4OTpcdC8qIGFkZCBuZXcgZG1iIGludG8gaGFzaCB0YWJsZSAqL1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo5MDpcdGdldF9yYW5kb21fYnl0ZXMoXHUwMDI2ZG1iX25vZGUtXHUwMDNldG9rZW4sIHNpemVvZihkbWJfbm9kZS1cdTAwM2V0b2tlbikpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo5MTpcdHdyaXRlX2xvY2tfYmgoXHUwMDI2bGRldi1cdTAwM2VkbWJfaHRfbG9jayk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjkyOlx0aGFzaF9mb3JfZWFjaF9wb3NzaWJsZShsZGV2LVx1MDAzZWRtYl9odCwgdG1wX25vZGUsIGxpc3QsIGRtYl9ub2RlLVx1MDAzZXRva2VuKSB7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjkzOlx0XHRpZiAodG1wX25vZGUtXHUwMDNldG9rZW4gPT0gZG1iX25vZGUtXHUwMDNldG9rZW4pIHtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6OTQ6XHRcdFx0d3JpdGVfdW5sb2NrX2JoKFx1MDAyNmxkZXYtXHUwMDNlZG1iX2h0X2xvY2spO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy05NS1cdFx0XHRnb3RvIGFnYWluO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtOTctXHR9XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjk4Olx0aGFzaF9hZGQobGRldi1cdTAwM2VkbWJfaHQsIFx1MDAyNmRtYl9ub2RlLVx1MDAzZWxpc3QsIGRtYl9ub2RlLVx1MDAzZXRva2VuKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6OTk6XHR3cml0ZV91bmxvY2tfYmgoXHUwMDI2bGRldi1cdTAwM2VkbWJfaHRfbG9jayk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEwMDpcdGF0b21pY19pbmMoXHUwMDI2bGRldi1cdTAwM2VkbWJfY250KTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTAxLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMDI6XHRkbWItXHUwMDNlaWR4ID0gZG1iX25vZGUtXHUwMDNlc2JhX2lkeDtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTAzOlx0ZG1iLVx1MDAzZWRtYl90b2sgPSBkbWJfbm9kZS1cdTAwM2V0b2tlbjtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTA0Olx0ZG1iLVx1MDAzZWNwdV9hZGRyID0gZG1iX25vZGUtXHUwMDNlY3B1X2FkZHI7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEwNTpcdGRtYi1cdTAwM2VkbWFfYWRkciA9IGRtYl9ub2RlLVx1MDAzZWRtYV9hZGRyO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMDY6XHRkbWItXHUwMDNlZG1iX2xlbiA9IGRtYl9ub2RlLVx1MDAzZWxlbjtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTA3LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMDgtXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTA5Olx0ZGlicy1cdTAwM2VkbWJfY2xpZW50aWRfYXJyW3NiYV9pZHhdID0gY2xpZW50LVx1MDAzZWlkO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMTAtXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTE0LWVycl9ub2RlOlxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMTU6XHRrZnJlZShkbWJfbm9kZSk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTExNi1lcnJfYml0OlxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTIwLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMjE6c3RhdGljIHZvaWQgZGlic19sb19mcmVlX2RtYihzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXYsXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEyMjpcdFx0XHQgICAgIHN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlICpkbWJfbm9kZSlcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTIzLXtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTI0Olx0Y2xlYXJfYml0KGRtYl9ub2RlLVx1MDAzZXNiYV9pZHgsIGxkZXYtXHUwMDNlc2JhX2lkeF9tYXNrKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTI1Olx0Zm9saW9fcHV0KHZpcnRfdG9fZm9saW8oZG1iX25vZGUtXHUwMDNlY3B1X2FkZHIpKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTI2Olx0a2ZyZWUoZG1iX25vZGUpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMjctXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEyODpcdGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KFx1MDAyNmxkZXYtXHUwMDNlZG1iX2NudCkpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTEyOS1cdFx0d2FrZV91cChcdTAwMjZsZGV2LVx1MDAzZWxkZXZfcmVsZWFzZSk7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMzEtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEzMjpzdGF0aWMgaW50IGRpYnNfbG9fdW5yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYilcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTMzLXtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTM0Olx0c3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKmRtYl9ub2RlID0gTlVMTCwgKnRtcF9ub2RlO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMzUtXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNDAtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE0MTpcdC8qIGZpbmQgZG1iIGZyb20gaGFzaCB0YWJsZSAqL1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNDI6XHR3cml0ZV9sb2NrX2JoKFx1MDAyNmxkZXYtXHUwMDNlZG1iX2h0X2xvY2spO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNDM6XHRoYXNoX2Zvcl9lYWNoX3Bvc3NpYmxlKGxkZXYtXHUwMDNlZG1iX2h0LCB0bXBfbm9kZSwgbGlzdCwgZG1iLVx1MDAzZWRtYl90b2spIHtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTQ0Olx0XHRpZiAodG1wX25vZGUtXHUwMDNldG9rZW4gPT0gZG1iLVx1MDAzZWRtYl90b2spIHtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTQ1Olx0XHRcdGRtYl9ub2RlID0gdG1wX25vZGU7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE0Ni1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE0OC1cdH1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTQ5Olx0aWYgKCFkbWJfbm9kZSkge1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNTA6XHRcdHdyaXRlX3VubG9ja19iaChcdTAwMjZsZGV2LVx1MDAzZWRtYl9odF9sb2NrKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTUxLVx0XHRyZXR1cm4gLUVJTlZBTDtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTUyLVx0fVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNTM6XHRsYXN0ID0gcmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNmRtYl9ub2RlLVx1MDAzZXJlZmNudCk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE1NC1cdGlmIChsYXN0KVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNTU6XHRcdGhhc2hfZGVsKFx1MDAyNmRtYl9ub2RlLVx1MDAzZWxpc3QpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNTY6XHR3cml0ZV91bmxvY2tfYmgoXHUwMDI2bGRldi1cdTAwM2VkbWJfaHRfbG9jayk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE1Ny1cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE1OS1cdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE2MDpcdFx0ZGlicy1cdTAwM2VkbWJfY2xpZW50aWRfYXJyW2RtYl9ub2RlLVx1MDAzZXNiYV9pZHhdID0gTk9fRElCU19DTElFTlQ7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2MS1cdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTYyLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNjM6XHRcdGRpYnNfbG9fZnJlZV9kbWIobGRldiwgZG1iX25vZGUpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNjQtXHR9XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNjctXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE2ODpzdGF0aWMgaW50IGRpYnNfbG9fc3VwcG9ydF9kbWJfbm9jb3B5KHN0cnVjdCBkaWJzX2RldiAqZGlicylcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTY5LXtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE3Mi1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTczOnN0YXRpYyBpbnQgZGlic19sb19hdHRhY2hfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgc3RydWN0IGRpYnNfZG1iICpkbWIpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE3NC17XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE3NTpcdHN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlICpkbWJfbm9kZSA9IE5VTEwsICp0bXBfbm9kZTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTc2LVx0c3RydWN0IGRpYnNfbG9fZGV2ICpsZGV2O1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTc5LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxODA6XHQvKiBmaW5kIGRtYl9ub2RlIGFjY29yZGluZyB0byBkbWItXHUwMDNlZG1iX3RvayAqL1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxODE6XHRyZWFkX2xvY2tfYmgoXHUwMDI2bGRldi1cdTAwM2VkbWJfaHRfbG9jayk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE4MjpcdGhhc2hfZm9yX2VhY2hfcG9zc2libGUobGRldi1cdTAwM2VkbWJfaHQsIHRtcF9ub2RlLCBsaXN0LCBkbWItXHUwMDNlZG1iX3Rvaykge1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxODM6XHRcdGlmICh0bXBfbm9kZS1cdTAwM2V0b2tlbiA9PSBkbWItXHUwMDNlZG1iX3Rvaykge1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxODQ6XHRcdFx0ZG1iX25vZGUgPSB0bXBfbm9kZTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTg1LVx0XHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTg3LVx0fVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxODg6XHRpZiAoIWRtYl9ub2RlKSB7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE4OTpcdFx0cmVhZF91bmxvY2tfYmgoXHUwMDI2bGRldi1cdTAwM2VkbWJfaHRfbG9jayk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE5MC1cdFx0cmV0dXJuIC1FSU5WQUw7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE5MS1cdH1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTkyOlx0cmVmY291bnRfaW5jKFx1MDAyNmRtYl9ub2RlLVx1MDAzZXJlZmNudCk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE5MzpcdHJlYWRfdW5sb2NrX2JoKFx1MDAyNmxkZXYtXHUwMDNlZG1iX2h0X2xvY2spO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xOTQtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE5NTpcdC8qIHByb3ZpZGUgZG1iIGluZm9ybWF0aW9uICovXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE5NjpcdGRtYi1cdTAwM2VpZHggPSBkbWJfbm9kZS1cdTAwM2VzYmFfaWR4O1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxOTc6XHRkbWItXHUwMDNlZG1iX3RvayA9IGRtYl9ub2RlLVx1MDAzZXRva2VuO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxOTg6XHRkbWItXHUwMDNlY3B1X2FkZHIgPSBkbWJfbm9kZS1cdTAwM2VjcHVfYWRkcjtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTk5Olx0ZG1iLVx1MDAzZWRtYV9hZGRyID0gZG1iX25vZGUtXHUwMDNlZG1hX2FkZHI7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIwMDpcdGRtYi1cdTAwM2VkbWJfbGVuID0gZG1iX25vZGUtXHUwMDNlbGVuO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMDEtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIwMy1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjA0OnN0YXRpYyBpbnQgZGlic19sb19kZXRhY2hfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IHRva2VuKVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMDUte1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMDY6XHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqZG1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIwNy1cdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIxMS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjEyOlx0LyogZmluZCBkbWJfbm9kZSBhY2NvcmRpbmcgdG8gZG1iLVx1MDAzZWRtYl90b2sgKi9cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjEzOlx0d3JpdGVfbG9ja19iaChcdTAwMjZsZGV2LVx1MDAzZWRtYl9odF9sb2NrKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjE0Olx0aGFzaF9mb3JfZWFjaF9wb3NzaWJsZShsZGV2LVx1MDAzZWRtYl9odCwgdG1wX25vZGUsIGxpc3QsIHRva2VuKSB7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIxNS1cdFx0aWYgKHRtcF9ub2RlLVx1MDAzZXRva2VuID09IHRva2VuKSB7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIxNjpcdFx0XHRkbWJfbm9kZSA9IHRtcF9ub2RlO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMTctXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMTktXHR9XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIyMDpcdGlmICghZG1iX25vZGUpIHtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjIxOlx0XHR3cml0ZV91bmxvY2tfYmgoXHUwMDI2bGRldi1cdTAwM2VkbWJfaHRfbG9jayk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIyMi1cdFx0cmV0dXJuIC1FSU5WQUw7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIyMy1cdH1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjI0Olx0bGFzdCA9IHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZkbWJfbm9kZS1cdTAwM2VyZWZjbnQpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMjUtXHRpZiAobGFzdClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjI2Olx0XHRoYXNoX2RlbChcdTAwMjZkbWJfbm9kZS1cdTAwM2VsaXN0KTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjI3Olx0d3JpdGVfdW5sb2NrX2JoKFx1MDAyNmxkZXYtXHUwMDNlZG1iX2h0X2xvY2spO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMjgtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIyOS1cdGlmIChsYXN0KVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMzA6XHRcdGRpYnNfbG9fZnJlZV9kbWIobGRldiwgZG1iX25vZGUpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMzEtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMzQtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIzNTpzdGF0aWMgaW50IGRpYnNfbG9fbW92ZV9kYXRhKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IGRtYl90b2ssXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIzNi1cdFx0XHQgICAgIHVuc2lnbmVkIGludCBpZHgsIGJvb2wgc2YsIHVuc2lnbmVkIGludCBvZmZzZXQsXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMzgte1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMzk6XHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqcm1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI0MC1cdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI0Ni1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjQ3Olx0cmVhZF9sb2NrX2JoKFx1MDAyNmxkZXYtXHUwMDNlZG1iX2h0X2xvY2spO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNDg6XHRoYXNoX2Zvcl9lYWNoX3Bvc3NpYmxlKGxkZXYtXHUwMDNlZG1iX2h0LCB0bXBfbm9kZSwgbGlzdCwgZG1iX3Rvaykge1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNDk6XHRcdGlmICh0bXBfbm9kZS1cdTAwM2V0b2tlbiA9PSBkbWJfdG9rKSB7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI1MC1cdFx0XHRybWJfbm9kZSA9IHRtcF9ub2RlO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjU0LVx0aWYgKCFybWJfbm9kZSkge1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNTU6XHRcdHJlYWRfdW5sb2NrX2JoKFx1MDAyNmxkZXYtXHUwMDNlZG1iX2h0X2xvY2spO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNTYtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjU4LVx0aWYgKCh1NjQpb2Zmc2V0ICYjNDM7IHNpemUgXHUwMDNlIHJtYl9ub2RlLVx1MDAzZWxlbikge1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNTk6XHRcdHJlYWRfdW5sb2NrX2JoKFx1MDAyNmxkZXYtXHUwMDNlZG1iX2h0X2xvY2spO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNjAtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjY0LVx0c2JhX2lkeCA9IHJtYl9ub2RlLVx1MDAzZXNiYV9pZHg7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI2NTpcdHJlYWRfdW5sb2NrX2JoKFx1MDAyNmxkZXYtXHUwMDNlZG1iX2h0X2xvY2spO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNjYtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNzAtXHRzcGluX2xvY2soXHUwMDI2ZGlicy1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjcxOlx0Y2xpZW50X2lkID0gZGlicy1cdTAwM2VkbWJfY2xpZW50aWRfYXJyW3NiYV9pZHhdO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNzItXHRzX21hc2sgPSByb3IxNigweDEwMDAsIGlkeCk7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYz0yODA9c3RhdGljIGNvbnN0IHN0cnVjdCBkaWJzX2Rldl9vcHMgZGlic19sb19vcHMgPSB7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yODItXHQucXVlcnlfcmVtb3RlX2dpZCA9IGRpYnNfbG9fcXVlcnlfcmdpZCxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjgzOlx0Lm1heF9kbWJzID0gZGlic19sb19tYXhfZG1icyxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjg0Olx0LnJlZ2lzdGVyX2RtYiA9IGRpYnNfbG9fcmVnaXN0ZXJfZG1iLFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODU6XHQudW5yZWdpc3Rlcl9kbWIgPSBkaWJzX2xvX3VucmVnaXN0ZXJfZG1iLFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yODYtXHQubW92ZV9kYXRhID0gZGlic19sb19tb3ZlX2RhdGEsXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4NzpcdC5zdXBwb3J0X21tYXBwZWRfcmRtYiA9IGRpYnNfbG9fc3VwcG9ydF9kbWJfbm9jb3B5LFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODg6XHQuYXR0YWNoX2RtYiA9IGRpYnNfbG9fYXR0YWNoX2RtYixcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjg5Olx0LmRldGFjaF9kbWIgPSBkaWJzX2xvX2RldGFjaF9kbWIsXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI5MC19O1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM9MjkyPXN0YXRpYyB2b2lkIGRpYnNfbG9fZGV2X2luaXQoc3RydWN0IGRpYnNfbG9fZGV2ICpsZGV2KVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yOTMte1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyOTQ6XHRyd2xvY2tfaW5pdChcdTAwMjZsZGV2LVx1MDAzZWRtYl9odF9sb2NrKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjk1Olx0aGFzaF9pbml0KGxkZXYtXHUwMDNlZG1iX2h0KTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjk2Olx0YXRvbWljX3NldChcdTAwMjZsZGV2LVx1MDAzZWRtYl9jbnQsIDApO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yOTctXHRpbml0X3dhaXRxdWV1ZV9oZWFkKFx1MDAyNmxkZXYtXHUwMDNlbGRldl9yZWxlYXNlKTtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jPTMwMD1zdGF0aWMgdm9pZCBkaWJzX2xvX2Rldl9leGl0KHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldilcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzAxLXtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzAyOlx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmxkZXYtXHUwMDNlZG1iX2NudCkpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMwMzpcdFx0d2FpdF9ldmVudChsZGV2LVx1MDAzZWxkZXZfcmVsZWFzZSwgIWF0b21pY19yZWFkKFx1MDAyNmxkZXYtXHUwMDNlZG1iX2NudCkpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMDQtfVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMjQtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjI1OnN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlIHtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMjYtXHRzdHJ1Y3QgaGxpc3Rfbm9kZSBsaXN0O1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg9MzU9c3RydWN0IGRpYnNfbG9fZGV2IHtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMzYtXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjM3Olx0YXRvbWljX3QgZG1iX2NudDtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6Mzg6XHRyd2xvY2tfdCBkbWJfaHRfbG9jaztcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMzktXHRERUNMQVJFX0JJVE1BUChzYmFfaWR4X21hc2ssIERJQlNfTE9fTUFYX0RNQlMpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDo0MDpcdERFQ0xBUkVfSEFTSFRBQkxFKGRtYl9odCwgRElCU19MT19ETUJTX0hBU0hfQklUUyk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTQxLVx0d2FpdF9xdWV1ZV9oZWFkX3QgbGRldl9yZWxlYXNlO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz04Mz1pbnQgZGlic191bnJlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtODYtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjg3Olx0aW50IG1heF9kbWJzO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTg4LVx0aW50IHJjID0gMDtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtOTItXHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjkzOlx0XHRtYXhfZG1icyA9IGRpYnMtXHUwMDNlb3BzLVx1MDAzZW1heF9kbWJzKCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6OTQ6XHRcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBtYXhfZG1iczsgJiM0MzsmIzQzO2kpIHtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo5NTpcdFx0XHRpZiAoZGlicy1cdTAwM2VkbWJfY2xpZW50aWRfYXJyW2ldID09IGNsaWVudC1cdTAwM2VpZCkge1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjk2Olx0XHRcdFx0V0FSTigxLCBcJiMzNDslczogYXR0ZW1wdCB0byB1bnJlZ2lzdGVyICYjMzk7JXMmIzM5OyB3aXRoIHJlZ2lzdGVyZWQgZG1iKHMpXFxuXCYjMzQ7LFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTk3LVx0XHRcdFx0ICAgICBfX2Z1bmNfXywgY2xpZW50LVx1MDAzZW5hbWUpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTk4LVx0XHRcdFx0cmMgPSAtRUJVU1k7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6OTk6XHRcdFx0XHRnb3RvIGVycl9yZWdfZG1iO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEwMC1cdFx0XHR9XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTExNy1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMTg6ZXJyX3JlZ19kbWI6XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTE5LVx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM9MTI1PXN0YXRpYyB2b2lkIGRpYnNfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMzAtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTMxOlx0a2ZyZWUoZGlicy1cdTAwM2VkbWJfY2xpZW50aWRfYXJyKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMzItXHRrZnJlZShkaWJzKTtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM9MTg1PWludCBkaWJzX2Rldl9hZGQoc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE4Ni17XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTg3Olx0aW50IG1heF9kbWJzO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE4OC1cdGludCBpLCByZXQ7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTg5LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE5MDpcdG1heF9kbWJzID0gZGlicy1cdTAwM2VvcHMtXHUwMDNlbWF4X2RtYnMoKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxOTE6XHRkaWJzLVx1MDAzZWRtYl9jbGllbnRpZF9hcnIgPSBremFsbG9jKG1heF9kbWJzLCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxOTI6XHRpZiAoIWRpYnMtXHUwMDNlZG1iX2NsaWVudGlkX2FycilcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xOTMtXHRcdHJldHVybiAtRU5PTUVNO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE5NDpcdG1lbXNldChkaWJzLVx1MDAzZWRtYl9jbGllbnRpZF9hcnIsIE5PX0RJQlNfQ0xJRU5ULCBtYXhfZG1icyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTk1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxMDozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjE1MQoJCQkJCQkJb3V0cHV0OiAxMTkKCQkJCQkJCXRob3VnaHRzOiAxMTQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIFBhdGNoJiMzOTtzIEZ1enppbmcgV29ydGhpbmVzcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoIGxpa2VseSBkb2VzbiYjMzk7dCB3YXJyYW50IGZ1enppbmcsIGJ1dCBJIG5lZWQgdG8gYmUgdGhvcm91Z2guIEkgc2VlIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgaXNtX2Rydi5jYCBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgYGlzbV9hbGxvY19kbWJgIGFuZCBgaXNtX2ZyZWVfZG1iYCBmdW5jdGlvbnMuIFRoZXNlIGZ1bmN0aW9ucyBtYW5hZ2UgRE1BIGJ1ZmZlcnMgKGBkaWJzX2RtYmApIGZvciB0aGUgSUJNIElTTSB2UENJIGFkYXB0ZXIuIFRoZSBjaGFuZ2VzIGludm9sdmUgY29ycmVjdGluZyBhIG1lbW9yeSBmcmVlaW5nIGlzc3VlIHdpdGggYGZvbGlvX3B1dGAgYW5kIGVuc3VyaW5nIGBkbWItJmd0O2NwdV9hZGRyYCBpcyBudWxsZWQgYWZ0ZXIgZnJlZWluZyBpbiBib3RoIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBjb2RlIHBhdGhzLgoKSG93ZXZlciwgYSBjcml0aWNhbCBwb2ludCBsZWFwcyBvdXQgYXQgbWU6IGBpc21fZHJ2LmNgIGlzIGV4cGxpY2l0bHkgdGllZCB0byB0aGUgYFBDSV9ERVZJQ0VfSURfSUJNX0lTTWAsIHdoaWNoIGlzIGFuIHMzOTAtc3BlY2lmaWMgdlBDSSBkZXZpY2UuIFRoaXMgaXMgcmVsZXZhbnQgKm9ubHkqIHRvIElCTSBaIG1haW5mcmFtZSBoYXJkd2FyZS4gSXQmIzM5O3Mgbm90IGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy4gRXZlbiBpZiBJIHdlcmUgdG8gYm9vdCBzMzkweCBRRU1VLCB0aGUgSUJNIElTTSBkZXZpY2Ugd291bGRuJiMzOTt0IGJlIHByZXNlbnQgYmVjYXVzZSB0aGUgZGV2aWNlIGlzbiYjMzk7dCBlbXVsYXRlZCBpbiBzb2Z0d2FyZS4KClJldmlld2luZyB0aGUgcnVsZSBzZXQgZm9yIGBXb3J0aEZ1enppbmdgLCB0aGlzIHBhdGNoIHNxdWFyZWx5IGZhbGxzIHVuZGVyIHR3byBjYXRlZ29yaWVzOiAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSYjMzQ7IGFuZCAmIzM0O0NvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLi4uIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDsgQmVjYXVzZSB0aGUgSVNNIHZQQ0kgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgZGV2aWNlIGFuZCByZXF1aXJlcyBhY3R1YWwgSUJNIFogaGFyZHdhcmUsIHRoaXMgY29kZSBjYW4mIzM5O3QgYmUgcmVhY2hlZCBpbiBhbnkgcmVhc29uYWJsZSB2aXJ0dWFsaXplZCB0ZXN0aW5nIGVudmlyb25tZW50LCBpbmNsdWRpbmcgczM5MHggUUVNVS4KClRoZXJlZm9yZSwgZ2l2ZW4gdGhlIGhhcmR3YXJlIGRlcGVuZGVuY3kgYW5kIHRoZSBydWxlIHNldCwgSSYjMzk7bSBjb25maWRlbnQgdGhhdCBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuIEkgbmVlZCB0byBub3cgZG91YmxlLWNoZWNrIHRoZSBkZXRhaWxzIGFuZCBwcmVwYXJlIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgY2FsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBlcnJvciBoYW5kbGluZyBhbmQgY2xlYW51cCBsb2dpYyAoaXNtX2FsbG9jX2RtYiBhbmQgaXNtX2ZyZWVfZG1iKSBpbiBkcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy4gVGhlIElTTSBkcml2ZXIgaXMgc3BlY2lmaWMgdG8gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlIGFuZCByZXF1aXJlcyBJQk0gWiBJbnRlcm5hbCBTaGFyZWQgTWVtb3J5IChJU00pIFBDSSBoYXJkd2FyZS9maXJtd2FyZSwgd2hpY2ggY2Fubm90IGJlIGVtdWxhdGVkIG9yIHJlYWNoZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBlcnJvciBoYW5kbGluZyBhbmQgY2xlYW51cCBsb2dpYyAoaXNtX2FsbG9jX2RtYiBhbmQgaXNtX2ZyZWVfZG1iKSBpbiBkcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy4gVGhlIElTTSBkcml2ZXIgaXMgc3BlY2lmaWMgdG8gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlIGFuZCByZXF1aXJlcyBJQk0gWiBJbnRlcm5hbCBTaGFyZWQgTWVtb3J5IChJU00pIFBDSSBoYXJkd2FyZS9maXJtd2FyZSwgd2hpY2ggY2Fubm90IGJlIGVtdWxhdGVkIG9yIHJlYWNoZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxMDozMTwvdGQ+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+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDNUMTA6MzE6MDAuODQ0Mjg1NjJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mzc2NTEyMzcwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGFuZCBjbGVhbnVwIGxvZ2ljIChpc21fYWxsb2NfZG1iIGFuZCBpc21fZnJlZV9kbWIpIGluIGRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLiBUaGUgSVNNIGRyaXZlciBpcyBzcGVjaWZpYyB0byB0aGUgczM5MCBhcmNoaXRlY3R1cmUgYW5kIHJlcXVpcmVzIElCTSBaIEludGVybmFsIFNoYXJlZCBNZW1vcnkgKElTTSkgUENJIGhhcmR3YXJlL2Zpcm13YXJlLCB3aGljaCBjYW5ub3QgYmUgZW11bGF0ZWQgb3IgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDEwOjMxOjAwLjg0NDI5MDc0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjU4MDMzNzQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgY2U2NGMwNmQxNGQzNDJhNWE2NDllNDVmYWQ4ZDczOWZjMDhjYjQ3N1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IFNlcCAzIDEwOjMwOjU5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jIGIvZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmNcXG5pbmRleCAyNDJkYTIwZjI3ZTBlLi4wMzViMjMzYWJiNGU5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jXFxuKysrIGIvZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmNcXG5AQCAtMjMxLDYgKzIzMSw3IEBAIHN0YXRpYyB2b2lkIGlzbV9mcmVlX2RtYihzdHJ1Y3QgaXNtX2RldiAqaXNtLCBzdHJ1Y3QgZGlic19kbWIgKmRtYilcXG4gXFx0ZG1hX3VubWFwX3BhZ2UoXFx1MDAyNmlzbS1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LCBkbWItXFx1MDAzZWRtYV9hZGRyLCBkbWItXFx1MDAzZWRtYl9sZW4sXFxuIFxcdFxcdCAgICAgICBETUFfRlJPTV9ERVZJQ0UpO1xcbiBcXHRmb2xpb19wdXQodmlydF90b19mb2xpbyhkbWItXFx1MDAzZWNwdV9hZGRyKSk7XFxuK1xcdGRtYi1cXHUwMDNlY3B1X2FkZHIgPSBOVUxMO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGlzbV9hbGxvY19kbWIoc3RydWN0IGlzbV9kZXYgKmlzbSwgc3RydWN0IGRpYnNfZG1iICpkbWIpXFxuQEAgLTI3NCw3ICsyNzUsOCBAQCBzdGF0aWMgaW50IGlzbV9hbGxvY19kbWIoc3RydWN0IGlzbV9kZXYgKmlzbSwgc3RydWN0IGRpYnNfZG1iICpkbWIpXFxuIFxcdHJldHVybiAwO1xcbiBcXG4gb3V0X2ZyZWU6XFxuLVxcdGtmcmVlKGRtYi1cXHUwMDNlY3B1X2FkZHIpO1xcbitcXHRmb2xpb19wdXQoZm9saW8pO1xcbitcXHRkbWItXFx1MDAzZWNwdV9hZGRyID0gTlVMTDtcXG4gb3V0X2JpdDpcXG4gXFx0Y2xlYXJfYml0KGRtYi1cXHUwMDNlaWR4LCBpc20tXFx1MDAzZXNiYV9iaXRtYXApO1xcbiBcXHRyZXR1cm4gcmM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDEwOjMxOjAyLjEwMjk3ODc5NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NTI1MDY0MTg5MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGFuZCBjbGVhbnVwIGxvZ2ljIChpc21fYWxsb2NfZG1iIGFuZCBpc21fZnJlZV9kbWIpIGluIGRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLiBUaGUgSVNNIGRyaXZlciBpcyBzcGVjaWZpYyB0byB0aGUgczM5MCBhcmNoaXRlY3R1cmUgYW5kIHJlcXVpcmVzIElCTSBaIEludGVybmFsIFNoYXJlZCBNZW1vcnkgKElTTSkgUENJIGhhcmR3YXJlL2Zpcm13YXJlLCB3aGljaCBjYW5ub3QgYmUgZW11bGF0ZWQgb3IgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGNlNjRjMDZkMTRkMzQyYTVhNjQ5ZTQ1ZmFkOGQ3MzlmYzA4Y2I0NzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAzIDEwOjMwOjU5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMgYi9kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuY1xuaW5kZXggMjQyZGEyMGYyN2UwZS4uMDM1YjIzM2FiYjRlOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jXG4rKysgYi9kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuY1xuQEAgLTIzMSw2ICsyMzEsNyBAQCBzdGF0aWMgdm9pZCBpc21fZnJlZV9kbWIoc3RydWN0IGlzbV9kZXYgKmlzbSwgc3RydWN0IGRpYnNfZG1iICpkbWIpXG4gXHRkbWFfdW5tYXBfcGFnZShcdTAwMjZpc20tXHUwMDNlcGRldi1cdTAwM2VkZXYsIGRtYi1cdTAwM2VkbWFfYWRkciwgZG1iLVx1MDAzZWRtYl9sZW4sXG4gXHRcdCAgICAgICBETUFfRlJPTV9ERVZJQ0UpO1xuIFx0Zm9saW9fcHV0KHZpcnRfdG9fZm9saW8oZG1iLVx1MDAzZWNwdV9hZGRyKSk7XG4rXHRkbWItXHUwMDNlY3B1X2FkZHIgPSBOVUxMO1xuIH1cbiBcbiBzdGF0aWMgaW50IGlzbV9hbGxvY19kbWIoc3RydWN0IGlzbV9kZXYgKmlzbSwgc3RydWN0IGRpYnNfZG1iICpkbWIpXG5AQCAtMjc0LDcgKzI3NSw4IEBAIHN0YXRpYyBpbnQgaXNtX2FsbG9jX2RtYihzdHJ1Y3QgaXNtX2RldiAqaXNtLCBzdHJ1Y3QgZGlic19kbWIgKmRtYilcbiBcdHJldHVybiAwO1xuIFxuIG91dF9mcmVlOlxuLVx0a2ZyZWUoZG1iLVx1MDAzZWNwdV9hZGRyKTtcbitcdGZvbGlvX3B1dChmb2xpbyk7XG4rXHRkbWItXHUwMDNlY3B1X2FkZHIgPSBOVUxMO1xuIG91dF9iaXQ6XG4gXHRjbGVhcl9iaXQoZG1iLVx1MDAzZWlkeCwgaXNtLVx1MDAzZXNiYV9iaXRtYXApO1xuIFx0cmV0dXJuIHJjO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTA6MzE6MDIuMTAyOTgwMzk2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTY0NDI2NTk1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBBbmFseXNpcyAtIHMzOTAgSVNNIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGl0J3MgaGl0dGluZyBgZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmNgLiBSaWdodCwgc28gdGhpcyBpcyB0aGUgczM5MCBJbnRlZ3JhdGVkIFNoYXJlZCBNZW1vcnkgKElTTSkgZGV2aWNlIGRyaXZlci4gTm93LCBhIGNyaXRpY2FsIHF1ZXN0aW9uIGFyaXNlczogaXMgdGhpcyBzb21ldGhpbmcgdGhhdCBpbmhlcmVudGx5IHJlcXVpcmVzIHBoeXNpY2FsIHMzOTAgaGFyZHdhcmUg4oCTIHRoaW5rIElCTSB6L0FyY2hpdGVjdHVyZSDigJMgb3IgY2FuIHdlIGFjdHVhbGx5IGdldCBhdCBpdCwgZWl0aGVyIHRocm91Z2ggZW11bGF0aW9uIG9yIGEgc3RhbmRhcmQgZnV6emluZyBzZXR1cCBsaWtlIFFFTVUgb3IgZXZlbiBHQ0U/IEJlZm9yZSBJIGdvIGZ1cnRoZXIgZG93biB0aGF0IHJhYmJpdCBob2xlLCBob2xkIG9uLCBJIG5lZWQgdG8gcmVyZWFkIHRoZSBndWlkZWxpbmVzLiBJdCdzIHRvbyBlYXN5IHRvIHdhc3RlIHRpbWUgb24gc29tZXRoaW5nIHRoYXQgaXMgbm90IHdvcnRoIGZ1enppbmcuXG5cbkFscmlnaHQsIGxldCdzIHJlZnJlc2g6IEkgbmVlZCB0byBmbGFnIGl0IGFzIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgaWYgaXQncyBzb21ldGhpbmcgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcsIGxpa2UgdGhvc2UgUENJZSBzd2l0Y2ggZHJpdmVycyBvciwgc3BlY2lmaWNhbGx5LCBkcml2ZXIgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gcmVtb3ZlLCBzaHV0ZG93biBvciB1bnJlZ2lzdGVyaW5nLiBPa2F5LCB0aGF0J3MgY2xlYXIuXG5cblNvLCBiYWNrIHRvIGBpc21fZHJ2LmNgLiBNeSBuZXh0IHN0ZXAgaXMgdG8gY2FyZWZ1bGx5IGNoZWNrIGl0cyBzb3VyY2UgY29kZSBhbmQgS2NvbmZpZy9hcmNoaXRlY3R1cmUgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoYXQgaXQncyBkb2luZyBhbmQsIGNydWNpYWxseSwgd2hhdCBoYXJkd2FyZSBjb250ZXh0IGl0IHJlbGllcyB1cG9uLiBUaGF0IEtjb25maWcgc3R1ZmYgaXMgZ29pbmcgdG8gYmUgbXkgYmVzdCBmcmllbmQgaGVyZS4gSWYgaXQgc2NyZWFtcyBcInMzOTAgb25seSxcIiB0aGVuIHdl4oCZcmUgcHJvYmFibHkgZGVhZCBpbiB0aGUgd2F0ZXIsIGJ1dCBtYXliZSB3ZSBjYW4gZ2V0IGx1Y2t5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjQ3LCJPdXRwdXRUb2tlbnMiOjY5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjkwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTA6MzE6MDcuNzQ3MjQ5MzE5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDQ1OTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIklTTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3MzOTAvbmV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZz03OD1jb25maWcgQ0NXR1JPVVBcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZy04MS1cXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWc6ODI6Y29uZmlnIElTTVxcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZzo4MzpcXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBmb3IgSVNNIHZQQ0kgQWRhcHRlclxcXCJcXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWctODQtXFx0ZGVwZW5kcyBvbiBQQ0kgXFx1MDAyNlxcdTAwMjYgRElCU1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9NYWtlZmlsZT0xOT1pc20teSA6PSBpc21fZHJ2Lm9cXG5kcml2ZXJzL3MzOTAvbmV0L01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19JU00pICs9IGlzbS5vXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTEtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjI6I2lmbmRlZiBTMzkwX0lTTV9IXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDozOiNkZWZpbmUgUzM5MF9JU01fSFxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtNC1cXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMTEtI2RlZmluZSBVVElMX1NUUl9MRU5cXHQxNlxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MTI6I2RlZmluZSBJU01fRVJST1JcXHQweEZGRkZcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTEzLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MTQ6I2RlZmluZSBJU01fTlJfRE1CU1xcdDE5MjBcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTE1LVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaC0xOC0gKi9cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjE5OiNkZWZpbmUgSVNNX0RNQl9XT1JEX09GRlNFVFxcdDFcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjIwOiNkZWZpbmUgSVNNX0RNQl9CSVRfT0ZGU0VUXFx0KElTTV9ETUJfV09SRF9PRkZTRVQgKiAzMilcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTIxLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MjI6I2RlZmluZSBJU01fUkVHX1NCQVxcdDB4MVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MjM6I2RlZmluZSBJU01fUkVHX0lFUVxcdDB4MlxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MjQ6I2RlZmluZSBJU01fUkVBRF9HSURcXHQweDNcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjI1OiNkZWZpbmUgSVNNX0FERF9WTEFOX0lEXFx0MHg0XFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDoyNjojZGVmaW5lIElTTV9ERUxfVkxBTl9JRFxcdDB4NVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6Mjc6I2RlZmluZSBJU01fU0VUX1ZMQU5cXHQweDZcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjI4OiNkZWZpbmUgSVNNX1JFU0VUX1ZMQU5cXHQweDdcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjI5OiNkZWZpbmUgSVNNX1FVRVJZX0lORk9cXHQweDhcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjMwOiNkZWZpbmUgSVNNX1FVRVJZX1JHSURcXHQweDlcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjMxOiNkZWZpbmUgSVNNX1JFR19ETUJcXHQweEFcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjMyOiNkZWZpbmUgSVNNX1VOUkVHX0RNQlxcdDB4QlxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MzM6I2RlZmluZSBJU01fU0lHTkFMX0lFUVxcdDB4RVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MzQ6I2RlZmluZSBJU01fVU5SRUdfU0JBXFx0MHgxMVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MzU6I2RlZmluZSBJU01fVU5SRUdfSUVRXFx0MHgxMlxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMzYtXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaD0zNz1lbnVtIGlzbV9ldmVudF90eXBlIHtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjM4OlxcdElTTV9FVkVOVF9CVUYgPSAweDAwLFxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6Mzk6XFx0SVNNX0VWRU5UX0RFViA9IDB4MDEsXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDo0MDpcXHRJU01fRVZFTlRfU1dSID0gMHgwMlxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtNDEtfTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg9NDM9ZW51bSBpc21fZXZlbnRfY29kZSB7XFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDo0NDpcXHRJU01fQlVGX0RNQl9VTlJFR0lTVEVSRUQgPSAweDA0LFxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6NDU6XFx0SVNNX0JVRl9VU0lOR19JU01fREVWX0RJU0FCTEVEID0gMHgwOCxcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjQ2OlxcdElTTV9CVUZfT1dOSU5HX0lTTV9ERVZfSU5fRVJSX1NUQVRFID0gMHgwMixcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjQ3OlxcdElTTV9CVUZfVVNJTkdfSVNNX0RFVl9JTl9FUlJfU1RBVEUgPSAweDAzLFxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6NDg6XFx0SVNNX0JVRl9WTEFOX01JU01BVENIX1dJVEhfT1dORVIgPSAweDA1LFxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6NDk6XFx0SVNNX0JVRl9WTEFOX01JU01BVENIX1dJVEhfVVNFUiA9IDB4MDYsXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDo1MDpcXHRJU01fREVWX0dJRF9ESVNBQkxFRCA9IDB4MDcsXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDo1MTpcXHRJU01fREVWX0dJRF9FUlJfU1RBVEUgPSAweDAxXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaC01Mi19O1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaD03Nj11bmlvbiBpc21fcmVnX2llcSB7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTg2LVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6ODc6LyogSVNNLXZQQ0kgZGV2aWNlcyBwcm92aWRlIDY0IEJpdCBHSURzXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDo4ODogKiBNYXAgdGhlbSB0byBJU00gVVVJRCBHSURzIGxpa2UgdGhpczpcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTg5LSAqICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6OTA6ICogfCA2NCBCaXQgSVNNLXZQQ0kgR0lEIHwgMDAwMDAwMDBfMDAwMDAwMDAgfFxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtOTEtICogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oPTIxOD1zdHJ1Y3QgaXNtX3NiYSB7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTIyMS1cXHR1MzIgOiAzMDtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjIyMjpcXHR1MzIgZG1iX2JpdHNbSVNNX05SX0RNQlMgLyAzMl07XFxuZHJpdmVycy9zMzkwL25ldC9pc20uaC0yMjMtXFx0dTMyIHJlc2VydmVkWzNdO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MjI0OlxcdHUxNiBkbWJlX21hc2tbSVNNX05SX0RNQlNdO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjI1LX07XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oPTIyNz1zdHJ1Y3QgaXNtX2RldiB7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTIzMi1cXHRkbWFfYWRkcl90IHNiYV9kbWFfYWRkcjtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjIzMzpcXHRERUNMQVJFX0JJVE1BUChzYmFfYml0bWFwLCBJU01fTlJfRE1CUyk7XFxuZHJpdmVycy9zMzkwL25ldC9pc20uaC0yMzQtXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTIzOS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjI0MDojZGVmaW5lIElTTV9DUkVBVEVfUkVRKGRtYiwgaWR4LCBzZiwgb2Zmc2V0KVxcdFxcdFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTI0MS1cXHQoKGRtYikgfCAoaWR4KSBcXHUwMDNjXFx1MDAzYyAyNCB8IChzZikgXFx1MDAzY1xcdTAwM2MgMjMgfCAob2Zmc2V0KSlcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg9MjY3PXN0YXRpYyBpbmxpbmUgaW50IF9faXNtX21vdmUoc3RydWN0IGlzbV9kZXYgKmlzbSwgdTY0IGRtYl9yZXEsIHZvaWQgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTI3NS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjI3NjojZW5kaWYgLyogUzM5MF9JU01fSCAqL1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMi0vKlxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjM6ICogSVNNIGRyaXZlciBmb3IgczM5MC5cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00LSAqXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0xOS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoyMDpNT0RVTEVfREVTQ1JJUFRJT04oXFxcIklTTSBkcml2ZXIgZm9yIHMzOTBcXFwiKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yMS1NT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz0yNT1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaXNtX2RldmljZV90YWJsZVtdID0ge1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjI2OlxcdHsgUENJX1ZERVZJQ0UoSUJNLCBQQ0lfREVWSUNFX0lEX0lCTV9JU00pIH0sXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjctXFx0eyB9XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz0zMz1zdGF0aWMgaW50IGlzbV9jbWQoc3RydWN0IGlzbV9kZXYgKmlzbSwgdm9pZCAqY21kKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNDEtXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NDI6XFx0V1JJVEVfT05DRShyZXNwLVxcdTAwM2VyZXQsIElTTV9FUlJPUik7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNDMtXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz02Nz1zdGF0aWMgaW50IHF1ZXJ5X2luZm8oc3RydWN0IGlzbV9kZXYgKmlzbSlcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTcxLVxcdG1lbXNldChcXHUwMDI2Y21kLCAwLCBzaXplb2YoY21kKSk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NzI6XFx0Y21kLnJlcXVlc3QuaGRyLmNtZCA9IElTTV9RVUVSWV9JTkZPO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTczLVxcdGNtZC5yZXF1ZXN0Lmhkci5sZW4gPSBzaXplb2YoY21kLnJlcXVlc3QpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9ODQ9c3RhdGljIGludCByZWdpc3Rlcl9zYmEoc3RydWN0IGlzbV9kZXYgKmlzbSlcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTk1LVxcdG1lbXNldChcXHUwMDI2Y21kLCAwLCBzaXplb2YoY21kKSk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6OTY6XFx0Y21kLnJlcXVlc3QuaGRyLmNtZCA9IElTTV9SRUdfU0JBO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTk3LVxcdGNtZC5yZXF1ZXN0Lmhkci5sZW4gPSBzaXplb2YoY21kLnJlcXVlc3QpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MTExPXN0YXRpYyBpbnQgcmVnaXN0ZXJfaWVxKHN0cnVjdCBpc21fZGV2ICppc20pXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0xMjItXFx0bWVtc2V0KFxcdTAwMjZjbWQsIDAsIHNpemVvZihjbWQpKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoxMjM6XFx0Y21kLnJlcXVlc3QuaGRyLmNtZCA9IElTTV9SRUdfSUVRO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTEyNC1cXHRjbWQucmVxdWVzdC5oZHIubGVuID0gc2l6ZW9mKGNtZC5yZXF1ZXN0KTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTE0MD1zdGF0aWMgaW50IHVucmVnaXN0ZXJfc2JhKHN0cnVjdCBpc21fZGV2ICppc20pXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0xNDYtXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MTQ3OlxcdHJldCA9IGlzbV9jbWRfc2ltcGxlKGlzbSwgSVNNX1VOUkVHX1NCQSk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MTQ4OlxcdGlmIChyZXQgXFx1MDAyNlxcdTAwMjYgcmV0ICE9IElTTV9FUlJPUilcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0xNDktXFx0XFx0cmV0dXJuIC1FSU87XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz0xNjM9c3RhdGljIGludCB1bnJlZ2lzdGVyX2llcShzdHJ1Y3QgaXNtX2RldiAqaXNtKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMTY5LVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjE3MDpcXHRyZXQgPSBpc21fY21kX3NpbXBsZShpc20sIElTTV9VTlJFR19JRVEpO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjE3MTpcXHRpZiAocmV0IFxcdTAwMjZcXHUwMDI2IHJldCAhPSBJU01fRVJST1IpXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMTcyLVxcdFxcdHJldHVybiAtRUlPO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MTg2PXN0YXRpYyBpbnQgaXNtX3JlYWRfbG9jYWxfZ2lkKHN0cnVjdCBkaWJzX2RldiAqZGlicylcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTE5Mi1cXHRtZW1zZXQoXFx1MDAyNmNtZCwgMCwgc2l6ZW9mKGNtZCkpO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjE5MzpcXHRjbWQucmVxdWVzdC5oZHIuY21kID0gSVNNX1JFQURfR0lEO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTE5NC1cXHRjbWQucmVxdWVzdC5oZHIubGVuID0gc2l6ZW9mKGNtZC5yZXF1ZXN0KTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTIwNj1zdGF0aWMgaW50IGlzbV9xdWVyeV9yZ2lkKHN0cnVjdCBkaWJzX2RldiAqZGlicywgY29uc3QgdXVpZF90ICpyZ2lkLFxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjEyLVxcdG1lbXNldChcXHUwMDI2Y21kLCAwLCBzaXplb2YoY21kKSk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MjEzOlxcdGNtZC5yZXF1ZXN0Lmhkci5jbWQgPSBJU01fUVVFUllfUkdJRDtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yMTQtXFx0Y21kLnJlcXVlc3QuaGRyLmxlbiA9IHNpemVvZihjbWQucmVxdWVzdCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz0yMjM9c3RhdGljIGludCBpc21fbWF4X2RtYnModm9pZClcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yMjQte1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjIyNTpcXHRyZXR1cm4gSVNNX05SX0RNQlM7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjI2LX1cXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTIzNz1zdGF0aWMgaW50IGlzbV9hbGxvY19kbWIoc3RydWN0IGlzbV9kZXYgKmlzbSwgc3RydWN0IGRpYnNfZG1iICpkbWIpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yNDYtXFx0aWYgKCFkbWItXFx1MDAzZWlkeCkge1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjI0NzpcXHRcXHRiaXQgPSBmaW5kX25leHRfemVyb19iaXQoaXNtLVxcdTAwM2VzYmFfYml0bWFwLCBJU01fTlJfRE1CUyxcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoyNDg6XFx0XFx0XFx0XFx0XFx0IElTTV9ETUJfQklUX09GRlNFVCk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MjQ5OlxcdFxcdGlmIChiaXQgPT0gSVNNX05SX0RNQlMpXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjUwLVxcdFxcdFxcdHJldHVybiAtRU5PU1BDO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjUzLVxcdH1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoyNTQ6XFx0aWYgKGRtYi1cXHUwMDNlaWR4IFxcdTAwM2MgSVNNX0RNQl9CSVRfT0ZGU0VUIHx8XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjU1LVxcdCAgICB0ZXN0X2FuZF9zZXRfYml0KGRtYi1cXHUwMDNlaWR4LCBpc20tXFx1MDAzZXNiYV9iaXRtYXApKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9Mjg1PXN0YXRpYyBpbnQgaXNtX3JlZ2lzdGVyX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHN0cnVjdCBkaWJzX2RtYiAqZG1iLFxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjk3LVxcdG1lbXNldChcXHUwMDI2Y21kLCAwLCBzaXplb2YoY21kKSk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6Mjk4OlxcdGNtZC5yZXF1ZXN0Lmhkci5jbWQgPSBJU01fUkVHX0RNQjtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yOTktXFx0Y21kLnJlcXVlc3QuaGRyLmxlbiA9IHNpemVvZihjbWQucmVxdWVzdCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zMTQtXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzozMTU6XFx0ZGlicy1cXHUwMDNlZG1iX2NsaWVudGlkX2FycltkbWItXFx1MDAzZWlkeCAtIElTTV9ETUJfQklUX09GRlNFVF0gPSBjbGllbnQtXFx1MDAzZWlkO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTMxNi1cXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz0zMjE9c3RhdGljIGludCBpc21fdW5yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYilcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTMyOC1cXHRtZW1zZXQoXFx1MDAyNmNtZCwgMCwgc2l6ZW9mKGNtZCkpO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjMyOTpcXHRjbWQucmVxdWVzdC5oZHIuY21kID0gSVNNX1VOUkVHX0RNQjtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zMzAtXFx0Y21kLnJlcXVlc3QuaGRyLmxlbiA9IHNpemVvZihjbWQucmVxdWVzdCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zMzQtXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzozMzU6XFx0ZGlicy1cXHUwMDNlZG1iX2NsaWVudGlkX2FycltkbWItXFx1MDAzZWlkeCAtIElTTV9ETUJfQklUX09GRlNFVF0gPSBOT19ESUJTX0NMSUVOVDtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zMzYtXFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzM4LVxcdHJldCA9IGlzbV9jbWQoaXNtLCBcXHUwMDI2Y21kKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzozMzk6XFx0aWYgKHJldCBcXHUwMDI2XFx1MDAyNiByZXQgIT0gSVNNX0VSUk9SKVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTM0MC1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTM0Nz1zdGF0aWMgaW50IGlzbV9hZGRfdmxhbl9pZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHU2NCB2bGFuX2lkKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzUyLVxcdG1lbXNldChcXHUwMDI2Y21kLCAwLCBzaXplb2YoY21kKSk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MzUzOlxcdGNtZC5yZXF1ZXN0Lmhkci5jbWQgPSBJU01fQUREX1ZMQU5fSUQ7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzU0LVxcdGNtZC5yZXF1ZXN0Lmhkci5sZW4gPSBzaXplb2YoY21kLnJlcXVlc3QpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MzYxPXN0YXRpYyBpbnQgaXNtX2RlbF92bGFuX2lkKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IHZsYW5faWQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zNjYtXFx0bWVtc2V0KFxcdTAwMjZjbWQsIDAsIHNpemVvZihjbWQpKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzozNjc6XFx0Y21kLnJlcXVlc3QuaGRyLmNtZCA9IElTTV9ERUxfVkxBTl9JRDtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zNjgtXFx0Y21kLnJlcXVlc3QuaGRyLmxlbiA9IHNpemVvZihjbWQucmVxdWVzdCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz0zNzU9c3RhdGljIGludCBpc21fc2lnbmFsX2llcShzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIGNvbnN0IHV1aWRfdCAqcmdpZCxcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTM4MS1cXHRtZW1zZXQoXFx1MDAyNmNtZCwgMCwgc2l6ZW9mKGNtZCkpO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjM4MjpcXHRjbWQucmVxdWVzdC5oZHIuY21kID0gSVNNX1NJR05BTF9JRVE7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzgzLVxcdGNtZC5yZXF1ZXN0Lmhkci5sZW4gPSBzaXplb2YoY21kLnJlcXVlc3QpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9Mzk5PXN0YXRpYyBpbnQgaXNtX21vdmUoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvaywgdW5zaWduZWQgaW50IGlkeCxcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQwOS1cXHRcXHRieXRlcyA9IG1heF9ieXRlcyhvZmZzZXQsIHNpemUsIFBBR0VfU0laRSk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NDEwOlxcdFxcdGRtYl9yZXEgPSBJU01fQ1JFQVRFX1JFUShkbWJfdG9rLCBpZHgsIHNpemUgPT0gYnl0ZXMgPyBzZiA6IDAsXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNDExLVxcdFxcdFxcdFxcdFxcdCBvZmZzZXQpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9NDM1PXN0YXRpYyBpbnQgaXNtX21hdGNoX2V2ZW50X3R5cGUodTMyIHMzOTBfZXZlbnRfdHlwZSlcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQzNy1cXHRzd2l0Y2ggKHMzOTBfZXZlbnRfdHlwZSkge1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjQzODpcXHRjYXNlIElTTV9FVkVOVF9CVUY6XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNDM5LVxcdFxcdHJldHVybiBESUJTX0JVRl9FVkVOVDtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo0NDA6XFx0Y2FzZSBJU01fRVZFTlRfREVWOlxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQ0MS1cXHRcXHRyZXR1cm4gRElCU19ERVZfRVZFTlQ7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NDQyOlxcdGNhc2UgSVNNX0VWRU5UX1NXUjpcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00NDMtXFx0XFx0cmV0dXJuIERJQlNfU1dfRVZFTlQ7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz00NDk9c3RhdGljIGludCBpc21fbWF0Y2hfZXZlbnRfc3VidHlwZSh1MzIgczM5MF9ldmVudF9zdWJ0eXBlKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNDUxLVxcdHN3aXRjaCAoczM5MF9ldmVudF9zdWJ0eXBlKSB7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NDUyOlxcdGNhc2UgSVNNX0JVRl9ETUJfVU5SRUdJU1RFUkVEOlxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQ1My1cXHRcXHRyZXR1cm4gRElCU19CVUZfVU5SRUdJU1RFUkVEO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjQ1NDpcXHRjYXNlIElTTV9ERVZfR0lEX0RJU0FCTEVEOlxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQ1NS1cXHRcXHRyZXR1cm4gRElCU19ERVZfRElTQUJMRUQ7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NDU2OlxcdGNhc2UgSVNNX0RFVl9HSURfRVJSX1NUQVRFOlxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQ1Ny1cXHRcXHRyZXR1cm4gRElCU19ERVZfRVJSX1NUQVRFO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9NTAxPXN0YXRpYyBpcnFyZXR1cm5fdCBpc21faGFuZGxlX2lycShpbnQgaXJxLCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNTExLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjUxMjpcXHRidiA9ICh2b2lkICopIFxcdTAwMjZpc20tXFx1MDAzZXNiYS1cXHUwMDNlZG1iX2JpdHNbSVNNX0RNQl9XT1JEX09GRlNFVF07XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NTEzOlxcdGVuZCA9IHNpemVvZihpc20tXFx1MDAzZXNiYS1cXHUwMDNlZG1iX2JpdHMpICogQklUU19QRVJfQllURSAtIElTTV9ETUJfQklUX09GRlNFVDtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy01MTQtXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy01MjMtXFx0XFx0Y2xlYXJfYml0X2ludihiaXQsIGJ2KTtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo1MjQ6XFx0XFx0ZG1iZW1hc2sgPSBpc20tXFx1MDAzZXNiYS1cXHUwMDNlZG1iZV9tYXNrW2JpdCArIElTTV9ETUJfQklUX09GRlNFVF07XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NTI1OlxcdFxcdGlzbS1cXHUwMDNlc2JhLVxcdTAwM2VkbWJlX21hc2tbYml0ICsgSVNNX0RNQl9CSVRfT0ZGU0VUXSA9IDA7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNTI2LVxcdFxcdGJhcnJpZXIoKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTUzMS1cXHRcXHRkaWJzLVxcdTAwM2VzdWJzW2NsaWVudF9pZF0tXFx1MDAzZW9wcy1cXHUwMDNlaGFuZGxlX2lycShkaWJzLFxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjUzMjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgYml0ICsgSVNNX0RNQl9CSVRfT0ZGU0VULFxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTUzMy1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgZG1iZW1hc2spO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmM9MTQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXBhX3JjX21zZyBxZXRoX2lwYV9yY19kZWZfbXNnW10gPSB7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfY29yZV9tcGMuYy0xNDktXFx0e0lQQV9SQ19JRF9OT1RfRk9VTkQsXFx0XFx0XFxcIklkZW50aWZpZXIgbm90IGZvdW5kXFxcIn0sXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmM6MTUwOlxcdHtJUEFfUkNfTEFOX0ZSQU1FX01JU01BVENILFxcdFxcXCJMQU4gYW5kIGZyYW1lIG1pc21hdGNoXFxcIn0sXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmMtMTUxLVxcdHtJUEFfUkNfTDJfVU5TVVBQT1JURURfQ01ELFxcdFxcXCJVbnN1cHBvcnRlZCBsYXllciAyIGNvbW1hbmRcXFwifSxcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5jLTE1My1cXHR7SVBBX1JDX0wyX01BQ19OT1RfQVVUSF9CWV9BRFAsXFx0XFxcIkwyIG1hYyBub3QgYXV0aG9yaXplZCBieSBhZGFwdGVyXFxcIn0sXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmM6MTU0OlxcdHtJUEFfUkNfREFUQV9NSVNNQVRDSCxcXHRcXHRcXFwiRGF0YSBmaWVsZCBtaXNtYXRjaCAodjQvdjYgbWl4ZWQpXFxcIn0sXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmMtMTU1LVxcdHtJUEFfUkNfSU5WQUxJRF9NVFVfU0laRSxcXHRcXFwiSW52YWxpZCBNVFUgc2l6ZVxcXCJ9LFxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmM9MTg4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXBhX3JjX21zZyBxZXRoX2lwYV9yY19zYnBfaXFkX21zZ1tdID0ge1xcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5jLTE4OS1cXHR7SVBBX1JDX1NCUF9JUURfTk9UX0NPTkZJR1VSRUQsXFx0XFxcIk5vdCBjb25maWd1cmVkIGZvciBicmlkZ2Vwb3J0XFxcIn0sXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmM6MTkwOlxcdHtJUEFfUkNfU0JQX0lRRF9PU19NSVNNQVRDSCxcXHRcXFwiT1MgbWlzbWF0Y2hcXFwifSxcXG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfY29yZV9tcGMuYy0xOTEtXFx0e0lQQV9SQ19TQlBfSVFEX0FOT19ERVZfUFJJTUFSWSwgXFxcIlByaW1hcnkgYnJpZGdlcG9ydCBleGlzdHMgYWxyZWFkeVxcXCJ9LFxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmM9MTk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXBhX3JjX21zZyBxZXRoX2lwYV9yY19zYnBfb3NhX21zZ1tdID0ge1xcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5jLTIwMC1cXHR7SVBBX1JDX1NCUF9PU0FfTk9UX0NPTkZJR1VSRUQsXFx0XFxcIk5vdCBjb25maWd1cmVkIGZvciBicmlkZ2Vwb3J0XFxcIn0sXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmM6MjAxOlxcdHtJUEFfUkNfU0JQX09TQV9PU19NSVNNQVRDSCxcXHRcXFwiT1MgbWlzbWF0Y2hcXFwifSxcXG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfY29yZV9tcGMuYy0yMDItXFx0e0lQQV9SQ19TQlBfT1NBX0FOT19ERVZfUFJJTUFSWSwgXFxcIlByaW1hcnkgYnJpZGdlcG9ydCBleGlzdHMgYWxyZWFkeVxcXCJ9LFxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmg9MTU4PWVudW0gcWV0aF9pcGFfcmV0dXJuX2NvZGVzIHtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5oLTE3MS1cXHRJUEFfUkNfRFVQX0lQVjZfSE9NRVxcdFxcdD0gMHgwMDEwLFxcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5oOjE3MjpcXHRJUEFfUkNfU0JQX0lRRF9PU19NSVNNQVRDSFxcdD0gMHgwMDEwLFxcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5oLTE3My1cXHRJUEFfUkNfVU5SRUdJU1RFUkVEX0FERFJcXHQ9IDB4MDAxMSxcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5oLTE4MS1cXHRJUEFfUkNfU0JQX0lRRF9DVVJSRU5UX1BSSU1BUllcXHQ9IDB4MDAyNCxcXG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfY29yZV9tcGMuaDoxODI6XFx0SVBBX1JDX0xBTl9GUkFNRV9NSVNNQVRDSFxcdD0gMHgwMDQwLFxcbmRyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21wYy5oLTE4My1cXHRJUEFfUkNfU0JQX0lRRF9OT19RRElPX1FVRVVFU1xcdD0gMHgwMEVCLFxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmgtMTk3LVxcdElQQV9SQ19TQlBfT1NBX05PVF9DT05GSUdVUkVEXFx0PSAweDJCMEMsXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmg6MTk4OlxcdElQQV9SQ19TQlBfT1NBX09TX01JU01BVENIXFx0PSAweDJCMTAsXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmgtMTk5LVxcdElQQV9SQ19TQlBfT1NBX0FOT19ERVZfUFJJTUFSWVxcdD0gMHgyQjE0LFxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmgtMjA0LVxcdElQQV9SQ19TQlBfT1NBX05PX1FESU9fUVVFVUVTXFx0PSAweDJCRUIsXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmg6MjA1OlxcdElQQV9SQ19EQVRBX01JU01BVENIXFx0XFx0PSAweGUwMDEsXFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbXBjLmgtMjA2LVxcdElQQV9SQ19JTlZBTElEX01UVV9TSVpFXFx0XFx0PSAweGUwMDIsXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfbWFpbi5jPTE1NTI9c3RhdGljIGludCBxZXRoX2JyaWRnZXBvcnRfbWFrZXJjKHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfbWFpbi5jLTE1NzktXFx0XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX21haW4uYzoxNTgwOlxcdFxcdGNhc2UgSVBBX1JDX1NCUF9PU0FfT1NfTUlTTUFUQ0g6XFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX21haW4uYzoxNTgxOlxcdFxcdGNhc2UgSVBBX1JDX1NCUF9JUURfT1NfTUlTTUFUQ0g6XFxuZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX21haW4uYy0xNTgyLVxcdFxcdFxcdHJjID0gLUVQRVJNO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxMDozMTowNy43OTI2OTk0NDhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU4NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0LypcXG4gICAzOlxcdCAqIElTTSBkcml2ZXIgZm9yIHMzOTAuXFxuICAgNDpcXHQgKlxcbiAgIDU6XFx0ICogQ29weXJpZ2h0IElCTSBDb3JwLiAyMDE4XFxuICAgNjpcXHQgKi9cXG4gICA3OlxcdCNkZWZpbmUgcHJfZm10KGZtdCkgXFxcImlzbTogXFxcIiBmbXRcXG4gICA4OlxcdFxcbiAgIDk6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V4cG9ydC5oXFx1MDAzZVxcbiAgMTA6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbiAgMTE6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3R5cGVzLmhcXHUwMDNlXFxuICAxMjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvaW50ZXJydXB0LmhcXHUwMDNlXFxuICAxMzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZGV2aWNlLmhcXHUwMDNlXFxuICAxNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZXJyLmhcXHUwMDNlXFxuICAxNTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvY3R5cGUuaFxcdTAwM2VcXG4gIDE2OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9wcm9jZXNzb3IuaFxcdTAwM2VcXG4gIDE3OlxcdFxcbiAgMTg6XFx0I2luY2x1ZGUgXFxcImlzbS5oXFxcIlxcbiAgMTk6XFx0XFxuICAyMDpcXHRNT0RVTEVfREVTQ1JJUFRJT04oXFxcIklTTSBkcml2ZXIgZm9yIHMzOTBcXFwiKTtcXG4gIDIxOlxcdE1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG4gIDIyOlxcdFxcbiAgMjM6XFx0I2RlZmluZSBEUlZfTkFNRSBcXFwiaXNtXFxcIlxcbiAgMjQ6XFx0XFxuICAyNTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaXNtX2RldmljZV90YWJsZVtdID0ge1xcbiAgMjY6XFx0XFx0eyBQQ0lfVkRFVklDRShJQk0sIFBDSV9ERVZJQ0VfSURfSUJNX0lTTSkgfSxcXG4gIDI3OlxcdFxcdHsgfVxcbiAgMjg6XFx0fTtcXG4gIDI5OlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBpc21fZGV2aWNlX3RhYmxlKTtcXG4gIDMwOlxcdFxcbiAgMzE6XFx0c3RhdGljIGRlYnVnX2luZm9fdCAqaXNtX2RlYnVnX2luZm87XFxuICAzMjpcXHRcXG4gIDMzOlxcdHN0YXRpYyBpbnQgaXNtX2NtZChzdHJ1Y3QgaXNtX2RldiAqaXNtLCB2b2lkICpjbWQpXFxuICAzNDpcXHR7XFxuICAzNTpcXHRcXHRzdHJ1Y3QgaXNtX3JlcV9oZHIgKnJlcSA9IGNtZDtcXG4gIDM2OlxcdFxcdHN0cnVjdCBpc21fcmVzcF9oZHIgKnJlc3AgPSBjbWQ7XFxuICAzNzpcXHRcXG4gIDM4OlxcdFxcdHNwaW5fbG9jayhcXHUwMDI2aXNtLVxcdTAwM2VjbWRfbG9jayk7XFxuICAzOTpcXHRcXHRfX2lzbV93cml0ZV9jbWQoaXNtLCByZXEgKyAxLCBzaXplb2YoKnJlcSksIHJlcS1cXHUwMDNlbGVuIC0gc2l6ZW9mKCpyZXEpKTtcXG4gIDQwOlxcdFxcdF9faXNtX3dyaXRlX2NtZChpc20sIHJlcSwgMCwgc2l6ZW9mKCpyZXEpKTtcXG4gIDQxOlxcdFxcbiAgNDI6XFx0XFx0V1JJVEVfT05DRShyZXNwLVxcdTAwM2VyZXQsIElTTV9FUlJPUik7XFxuICA0MzpcXHRcXG4gIDQ0OlxcdFxcdF9faXNtX3JlYWRfY21kKGlzbSwgcmVzcCwgMCwgc2l6ZW9mKCpyZXNwKSk7XFxuICA0NTpcXHRcXHRpZiAocmVzcC1cXHUwMDNlcmV0KSB7XFxuICA0NjpcXHRcXHRcXHRkZWJ1Z190ZXh0X2V2ZW50KGlzbV9kZWJ1Z19pbmZvLCAwLCBcXFwiY21kIGZhaWx1cmVcXFwiKTtcXG4gIDQ3OlxcdFxcdFxcdGRlYnVnX2V2ZW50KGlzbV9kZWJ1Z19pbmZvLCAwLCByZXNwLCBzaXplb2YoKnJlc3ApKTtcXG4gIDQ4OlxcdFxcdFxcdGdvdG8gb3V0O1xcbiAgNDk6XFx0XFx0fVxcbiAgNTA6XFx0XFx0X19pc21fcmVhZF9jbWQoaXNtLCByZXNwICsgMSwgc2l6ZW9mKCpyZXNwKSwgcmVzcC1cXHUwMDNlbGVuIC0gc2l6ZW9mKCpyZXNwKSk7XFxuICA1MTpcXHRvdXQ6XFxuICA1MjpcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2aXNtLVxcdTAwM2VjbWRfbG9jayk7XFxuICA1MzpcXHRcXHRyZXR1cm4gcmVzcC1cXHUwMDNlcmV0O1xcbiAgNTQ6XFx0fVxcbiAgNTU6XFx0XFxuICA1NjpcXHRzdGF0aWMgaW50IGlzbV9jbWRfc2ltcGxlKHN0cnVjdCBpc21fZGV2ICppc20sIHUzMiBjbWRfY29kZSlcXG4gIDU3OlxcdHtcXG4gIDU4OlxcdFxcdHVuaW9uIGlzbV9jbWRfc2ltcGxlIGNtZDtcXG4gIDU5OlxcdFxcbiAgNjA6XFx0XFx0bWVtc2V0KFxcdTAwMjZjbWQsIDAsIHNpemVvZihjbWQpKTtcXG4gIDYxOlxcdFxcdGNtZC5yZXF1ZXN0Lmhkci5jbWQgPSBjbWRfY29kZTtcXG4gIDYyOlxcdFxcdGNtZC5yZXF1ZXN0Lmhkci5sZW4gPSBzaXplb2YoY21kLnJlcXVlc3QpO1xcbiAgNjM6XFx0XFxuICA2NDpcXHRcXHRyZXR1cm4gaXNtX2NtZChpc20sIFxcdTAwMjZjbWQpO1xcbiAgNjU6XFx0fVxcbiAgNjY6XFx0XFxuICA2NzpcXHRzdGF0aWMgaW50IHF1ZXJ5X2luZm8oc3RydWN0IGlzbV9kZXYgKmlzbSlcXG4gIDY4OlxcdHtcXG4gIDY5OlxcdFxcdHVuaW9uIGlzbV9xaSBjbWQ7XFxuICA3MDpcXHRcXG4gIDcxOlxcdFxcdG1lbXNldChcXHUwMDI2Y21kLCAwLCBzaXplb2YoY21kKSk7XFxuICA3MjpcXHRcXHRjbWQucmVxdWVzdC5oZHIuY21kID0gSVNNX1FVRVJZX0lORk87XFxuICA3MzpcXHRcXHRjbWQucmVxdWVzdC5oZHIubGVuID0gc2l6ZW9mKGNtZC5yZXF1ZXN0KTtcXG4gIDc0OlxcdFxcbiAgNzU6XFx0XFx0aWYgKGlzbV9jbWQoaXNtLCBcXHUwMDI2Y21kKSlcXG4gIDc2OlxcdFxcdFxcdGdvdG8gb3V0O1xcbiAgNzc6XFx0XFxuICA3ODpcXHRcXHRkZWJ1Z190ZXh0X2V2ZW50KGlzbV9kZWJ1Z19pbmZvLCAzLCBcXFwicXVlcnkgaW5mb1xcXCIpO1xcbiAgNzk6XFx0XFx0ZGVidWdfZXZlbnQoaXNtX2RlYnVnX2luZm8sIDMsIFxcdTAwMjZjbWQucmVzcG9uc2UsIHNpemVvZihjbWQucmVzcG9uc2UpKTtcXG4gIDgwOlxcdG91dDpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTA6MzE6MDcuNzkyODA3NzE4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjg1MjM4ODY3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRoaW5raW5nIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIHMzOTAgSVNNIERyaXZlciBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGlzbV9kcnYuY2AsIHdoaWNoLCBhcyB0aGUgbmFtZSBpbXBsaWVzLCBpcyB0aGUgZHJpdmVyIGZvciB0aGUgczM5MCBJU00gdlBDSSBBZGFwdGVyLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGUgSVNNIGludGVyZmFjZSB3b3Jrcywgc3BlY2lmaWNhbGx5IHRoZSBjb21tYW5kIHdyaXRlcyBhbmQgZGF0YSBtb3Zlcywgc28gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYF9faXNtX3dyaXRlX2NtZGAgYW5kIGBfX2lzbV9tb3ZlYCBhcmUgZGVmaW5lZC4gVGhlc2UgYXJlIGxpa2VseSB0aGUgY29yZSBmdW5jdGlvbnMgaW1wbGVtZW50aW5nIHRoZSBhZGFwdGVyJ3MgY29tbXVuaWNhdGlvbiBwcm90b2NvbC4gVGltZSB0byB0cmFjZSB0aG9zZSBmdW5jdGlvbiBkZWZpbml0aW9ucyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTE2NTIsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxMDozMToxMC42NDUxOTgyOTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU5MzgxNjg1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2lzbV93cml0ZV9jbWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zMzkwL25ldC9pc20uaD0yNDM9c3RhdGljIGlubGluZSB2b2lkIF9faXNtX3JlYWRfY21kKHN0cnVjdCBpc21fZGV2ICppc20sIHZvaWQgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTI1Ni1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjI1NzpzdGF0aWMgaW5saW5lIHZvaWQgX19pc21fd3JpdGVfY21kKHN0cnVjdCBpc21fZGV2ICppc20sIHZvaWQgKmRhdGEsXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaC0yNTgtXFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgbGVuKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MzM9c3RhdGljIGludCBpc21fY21kKHN0cnVjdCBpc21fZGV2ICppc20sIHZvaWQgKmNtZClcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTM4LVxcdHNwaW5fbG9jayhcXHUwMDI2aXNtLVxcdTAwM2VjbWRfbG9jayk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6Mzk6XFx0X19pc21fd3JpdGVfY21kKGlzbSwgcmVxICsgMSwgc2l6ZW9mKCpyZXEpLCByZXEtXFx1MDAzZWxlbiAtIHNpemVvZigqcmVxKSk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NDA6XFx0X19pc21fd3JpdGVfY21kKGlzbSwgcmVxLCAwLCBzaXplb2YoKnJlcSkpO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxMDozMToxMi4yMzkwMTg1OTRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4MjgyMzA1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2lzbV9tb3ZlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvczM5MC9uZXQvaXNtLmg9MjU3PXN0YXRpYyBpbmxpbmUgdm9pZCBfX2lzbV93cml0ZV9jbWQoc3RydWN0IGlzbV9kZXYgKmlzbSwgdm9pZCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjY2LVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6MjY3OnN0YXRpYyBpbmxpbmUgaW50IF9faXNtX21vdmUoc3RydWN0IGlzbV9kZXYgKmlzbSwgdTY0IGRtYl9yZXEsIHZvaWQgKmRhdGEsXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaC0yNjgtXFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgc2l6ZSlcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTM5OT1zdGF0aWMgaW50IGlzbV9tb3ZlKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IGRtYl90b2ssIHVuc2lnbmVkIGludCBpZHgsXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00MTItXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NDEzOlxcdFxcdHJldCA9IF9faXNtX21vdmUoaXNtLCBkbWJfcmVxLCBkYXRhLCBieXRlcyk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNDE0LVxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDEwOjMxOjEzLjkyMTg0NjkzMloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI2Nzc4ODI1NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gdGhlIElTTSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGludG8gdGhlIG5pdHR5LWdyaXR0eSBvZiB0aGUgSVNNIGRyaXZlciBvbiBzMzkwIGFyY2hpdGVjdHVyZS4gSSdtIGdvaW5nIHRvIGhlYWQgc3RyYWlnaHQgaW50byBgZHJpdmVycy9zMzkwL25ldC9pc20uaGAsIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGxpbmVzIDI0MCB0byAyNzUuIFRoYXQgYXJlYSBzaG91bGQgY29udGFpbiBzb21lIGNyaXRpY2FsIGRlZmluaXRpb25zIG9yIHN0cnVjdHVyZXMgcmVsYXRlZCB0byBbbGlrZWx5IHNwZWNpZnkgdGhlIGV4cGVjdGVkIGNvbnRlbnQgaGVyZSwgZS5nLiwgXCJ0aGUgc2hhcmVkIG1lbW9yeSBsYXlvdXRcIiwgb3IgXCJ0aGUgaW50ZXJydXB0IGhhbmRsaW5nIG1lY2hhbmlzbVwiLCBvciBcInRoZSBkZXZpY2UgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzXCIsIGJhc2VkIG9uIG15IHByaW9yIGV4cGVyaWVuY2Ugd2l0aCB0aGlzIGRyaXZlciBhbmQgdGhlIHMzOTAgYXJjaGl0ZWN0dXJlXS4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGRldGFpbHMgYXJvdW5kIFtzcGVjaWZ5IHRoZSBhbnRpY2lwYXRlZCBkZXRhaWxzLCBlLmcuLCBcImhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZVwiLCBvciBcImhvdyB0aGUgRE1BIGNoYW5uZWxzIGFyZSBtYW5hZ2VkXCIsIG9yIFwidGhlIGRhdGEgc3RydWN0dXJlcyB1c2VkIGZvciBwYWNrZXQgYnVmZmVyc1wiXS4gVGhpcyByYW5nZSBpcyB1c3VhbGx5IHdoZXJlIFtnaXZlIHRoZSByZWFzb25zIHdoeSB5b3UgZm9jdXMgb24gdGhhdCBhcmVhLCBlLmcuLCBcInRoZSBjb3JlIGRhdGEgc3RydWN0dXJlcyBmb3IgZGV2aWNlIGNvbmZpZ3VyYXRpb24gbGl2ZVwiLCBvciBcInRoZSBpbnRlcnJ1cHQgdmVjdG9ycyBhcmUgZGVmaW5lZFwiLCBvciBcInRoZSBjb21tYW5kIGRlc2NyaXB0b3JzIGFyZSBkZWNsYXJlZFwiXS4gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgcG90ZW50aWFsIGNsdWVzIGFib3V0IFttZW50aW9uIHdoYXQgeW91J3JlIHRyeWluZyB0byBmaWd1cmUgb3V0LCBlLmcuLCBcImEgcGVyZm9ybWFuY2UgYm90dGxlbmVja1wiLCBvciBcImEgc3BlY2lmaWMgYnVnXCIsIG9yIFwiYSBwYXJ0aWN1bGFyIGZlYXR1cmUgaW1wbGVtZW50YXRpb25cIl0sIHdoaWNoIG1heSBiZSByZWZsZWN0ZWQgaW4gdGhlIGNvZGUgc3RydWN0dXJlIG9yIHZhcmlhYmxlIG5hbWVzIGFyb3VuZCB0aGlzIHBhcnQgb2YgdGhlIGRyaXZlci4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNDYwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDEwOjMxOjE2LjU5OTczMTc2MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDc5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3MzOTAvbmV0L2lzbS5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI0MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI0MDpcXHQjZGVmaW5lIElTTV9DUkVBVEVfUkVRKGRtYiwgaWR4LCBzZiwgb2Zmc2V0KVxcdFxcdFxcXFxcXG4gMjQxOlxcdFxcdCgoZG1iKSB8IChpZHgpIFxcdTAwM2NcXHUwMDNjIDI0IHwgKHNmKSBcXHUwMDNjXFx1MDAzYyAyMyB8IChvZmZzZXQpKVxcbiAyNDI6XFx0XFxuIDI0MzpcXHRzdGF0aWMgaW5saW5lIHZvaWQgX19pc21fcmVhZF9jbWQoc3RydWN0IGlzbV9kZXYgKmlzbSwgdm9pZCAqZGF0YSxcXG4gMjQ0OlxcdFxcdFxcdFxcdFxcdCAgdW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgbGVuKVxcbiAyNDU6XFx0e1xcbiAyNDY6XFx0XFx0c3RydWN0IHpwY2lfZGV2ICp6ZGV2ID0gdG9fenBjaShpc20tXFx1MDAzZXBkZXYpO1xcbiAyNDc6XFx0XFx0dTY0IHJlcSA9IFpQQ0lfQ1JFQVRFX1JFUSh6ZGV2LVxcdTAwM2VmaCwgMiwgOCk7XFxuIDI0ODpcXHRcXG4gMjQ5OlxcdFxcdHdoaWxlIChsZW4gXFx1MDAzZSAwKSB7XFxuIDI1MDpcXHRcXHRcXHRfX3pwY2lfbG9hZChkYXRhLCByZXEsIG9mZnNldCk7XFxuIDI1MTpcXHRcXHRcXHRvZmZzZXQgKz0gODtcXG4gMjUyOlxcdFxcdFxcdGRhdGEgKz0gODtcXG4gMjUzOlxcdFxcdFxcdGxlbiAtPSA4O1xcbiAyNTQ6XFx0XFx0fVxcbiAyNTU6XFx0fVxcbiAyNTY6XFx0XFxuIDI1NzpcXHRzdGF0aWMgaW5saW5lIHZvaWQgX19pc21fd3JpdGVfY21kKHN0cnVjdCBpc21fZGV2ICppc20sIHZvaWQgKmRhdGEsXFxuIDI1ODpcXHRcXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBsZW4pXFxuIDI1OTpcXHR7XFxuIDI2MDpcXHRcXHRzdHJ1Y3QgenBjaV9kZXYgKnpkZXYgPSB0b196cGNpKGlzbS1cXHUwMDNlcGRldik7XFxuIDI2MTpcXHRcXHR1NjQgcmVxID0gWlBDSV9DUkVBVEVfUkVRKHpkZXYtXFx1MDAzZWZoLCAyLCBsZW4pO1xcbiAyNjI6XFx0XFxuIDI2MzpcXHRcXHRpZiAobGVuKVxcbiAyNjQ6XFx0XFx0XFx0X196cGNpX3N0b3JlX2Jsb2NrKGRhdGEsIHJlcSwgb2Zmc2V0KTtcXG4gMjY1OlxcdH1cXG4gMjY2OlxcdFxcbiAyNjc6XFx0c3RhdGljIGlubGluZSBpbnQgX19pc21fbW92ZShzdHJ1Y3QgaXNtX2RldiAqaXNtLCB1NjQgZG1iX3JlcSwgdm9pZCAqZGF0YSxcXG4gMjY4OlxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IHNpemUpXFxuIDI2OTpcXHR7XFxuIDI3MDpcXHRcXHRzdHJ1Y3QgenBjaV9kZXYgKnpkZXYgPSB0b196cGNpKGlzbS1cXHUwMDNlcGRldik7XFxuIDI3MTpcXHRcXHR1NjQgcmVxID0gWlBDSV9DUkVBVEVfUkVRKHpkZXYtXFx1MDAzZWZoLCAwLCBzaXplKTtcXG4gMjcyOlxcdFxcbiAyNzM6XFx0XFx0cmV0dXJuIF9fenBjaV9zdG9yZV9ibG9jayhkYXRhLCByZXEsIGRtYl9yZXEpO1xcbiAyNzQ6XFx0fVxcbiAyNzU6XFx0XFxuIDI3NjpcXHQjZW5kaWYgLyogUzM5MF9JU01fSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxMDozMToxNi41OTk4MTgwNTFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDU1NDA3ODI1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIFRob3VnaHRzIG9uIHMzOTAgSVNNIHZQQ0kqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEknbSBzZWVpbmcgcmVmZXJlbmNlcyB0byBgX196cGNpX2xvYWRgLCBgX196cGNpX3N0b3JlX2Jsb2NrYCwgYHpwY2lfZGV2YCwgYW5kIHRoZSBJQk0gSVNNIHZQQ0kgQWRhcHRlci4gVGhpcyBpbW1lZGlhdGVseSBmbGFncyBteSByYWRhciBhcyBzMzkwIGFyY2hpdGVjdHVyZSB0ZXJyaXRvcnksIHNwZWNpZmljYWxseSBJQk0ncyB6L0FyY2hpdGVjdHVyZS4gQSBxdWljayB0aG91Z2h0IC0gaXMgdGhpcyBzb21ldGhpbmcgUUVNVSBlbXVsYXRlcz8gQ2FuIElTTSBldmVuIGJlIHZpcnR1YWxpemVkLCBlaXRoZXIgaW4gUUVNVSBvciBwZXJoYXBzIHNvbWV0aGluZyBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZT9cblxuSGFuZyBvbiwgYmVmb3JlIEkgZGl2ZSBpbnRvIGVtdWxhdGlvbiBzcGVjaWZpY3MsIEkgbmVlZCB0byBjb25maXJtIHdoYXQgXCJJU01cIiAqaXMqIGluIHRoaXMgY29udGV4dC4gQWgsIFwiSW50ZXJuYWwgU2hhcmVkIE1lbW9yeVwiIGFkYXB0ZXIgZm9yIElCTSBaIChzMzkweCkuIFNwZWNpZmljYWxseSwgdGhpcyBzZWVtcyB0byBiZSByZWxhdGVkIHRvIFNNQy1EIChTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zIC0gRGlyZWN0IG1lbW9yeSBhY2Nlc3MpIG9yIERJQlMgb3ZlciBJU00uIE9rYXksIHNvIG5vdyBJJ20gdGhpbmtpbmcsIGNhbiBhbiBJU00gZGV2aWNlIGV4aXN0IGluIHN0YW5kYXJkIFFFTVUgczM5MHg/IE9yIGlzIHRoaXMgYSBwcm9wcmlldGFyeSBJQk0gei9WTSAvIExQQVIgdmlydHVhbCBQQ0kgZGV2aWNlIHRoYXQgZnVuZGFtZW50YWxseSByZXF1aXJlcyBJQk0gWiBmaXJtd2FyZSwgbGlrZSB6L1ZNIG9yIHJ1bm5pbmcgd2l0aGluIGEgUFIvU00gTFBBUiBlbnZpcm9ubWVudD9cblxuVGhlIHJlYWwgcXVlc3Rpb24gaGVyZSwgZG9lcyBRRU1VIGV2ZW4gc3VwcG9ydCBJU00/IFRoaXMgbmVlZHMgdG8gYmUgY2xhcmlmaWVkLCBxdWlja2x5LiBMZXQgbWUgbG9vayBhdCB0aGUga2VybmVsIHNvdXJjZS4uLiBJJ2xsIGNoZWNrIGZvciBhbnkgb3RoZXIgcmVmZXJlbmNlcyBhbmQgdmVyaWZ5IGlmIElTTSBpcyBhY3R1YWxseSByZWNvZ25pemVkIGFzIGFuIElCTSB6IFBDSSBkZXZpY2Ugd2l0aCBpdHMgc3BlY2lmaWMgYFBDSV9ERVZJQ0VfSURfSUJNX0lTTWAgaWRlbnRpZmllci4gTGV0J3Mgc3RhcnQgd2l0aCBjaGVja2luZyB0aGF0IGBQQ0lfREVWSUNFX0lEX0lCTV9JU01gIGRlZmluaXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNDYzLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTA6MzE6MjEuMTUzODk4NTY1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTE1MTQ4ODgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBDSV9ERVZJQ0VfSURfSUJNX0lTTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jPTIxPURFQ0xBUkVfUENJX0ZJWFVQX0VBUkxZKFBDSV9WRU5ET1JfSURfSUJNLFxcbmFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmM6MjI6XFx0XFx0XFx0UENJX0RFVklDRV9JRF9JQk1fSVNNLFxcbmFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmMtMjMtXFx0XFx0XFx0enBjaV9pc21fYmFyX25vX21tYXApO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MjU9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGlzbV9kZXZpY2VfdGFibGVbXSA9IHtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoyNjpcXHR7IFBDSV9WREVWSUNFKElCTSwgUENJX0RFVklDRV9JRF9JQk1fSVNNKSB9LFxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTI3LVxcdHsgfVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jPTM4OD1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaXNtX2RldmljZV90YWJsZVtdID0ge1xcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYy0zODktXFx0eyBQQ0lfRFJJVkVSX09WRVJSSURFX0RFVklDRV9WRklPKFBDSV9WRU5ET1JfSURfSUJNLFxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYzozOTA6XFx0XFx0XFx0XFx0XFx0ICBQQ0lfREVWSUNFX0lEX0lCTV9JU00pIH0sXFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTM5MS1cXHR7fVxcbi0tXFxuaW5jbHVkZS9saW51eC9wY2lfaWRzLmgtNTIwLSNkZWZpbmUgUENJX0RFVklDRV9JRF9JQk1fSUNPTV9GT1VSX1BPUlRfTU9ERUxcXHQweDI1MlxcbmluY2x1ZGUvbGludXgvcGNpX2lkcy5oOjUyMTojZGVmaW5lIFBDSV9ERVZJQ0VfSURfSUJNX0lTTVxcdFxcdDB4MDRlZFxcbmluY2x1ZGUvbGludXgvcGNpX2lkcy5oLTUyMi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTA6MzE6MjIuNjY5MDUzNjY2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk3NTc5MzI5MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHdlbnQgZG93bjpcblxuKipESUJTLCBTTUMtRCwgYW5kIE1lbW9yeSBCYXJyaWVycyAtIExldCdzIERpZyBJbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gRElCUyBhbmQgU01DLUQuIFRoZSBxdWVzdGlvbiB0aGF0J3MgZHJpdmluZyBtZSBpcyB3aGV0aGVyIHRoZXNlIGBpc21fYWxsb2NfZG1iYCBhbmQgYGlzbV9mcmVlX2RtYmAgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBnZXR0aW5nIGhpdC4gVGhleSBhcmUgb2J2aW91c2x5IGltcG9ydGFudCwgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwYXRoIHRvIHRoZW0uXG5cbldhaXQgYSBzZWNvbmQsIERJQlMuLi4gd2hhdCBleGFjdGx5ICppcyogRElCUyBhZ2Fpbj8gSSBuZWVkIHRvIHF1aWNrbHkgcmVmcmVzaCBteSBtZW1vcnkgb24gdGhhdCBwaWVjZS4gTGV0IG1lIGdvIGNoZWNrIHRoZSBrZXJuZWwgZG9jdW1lbnRhdGlvbiBvciByZWxldmFudCBzb3VyY2UgZmlsZXMgb24gRElCUy4gR290IHRvIGhhdmUgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoYXQgYmVmb3JlIEkgY2FuIG1lYW5pbmdmdWxseSBjb250aW51ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ1MjEsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxMDozMTozMi40MjY5OTA1MjFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTU3Mzg0NTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0RJQlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTEzMz1DT05GSUdfU01DX0RJQUc9bVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxMzQ6Q09ORklHX0RJQlM9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxMzU6Q09ORklHX0RJQlNfTE89eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xMzYtQ09ORklHX1hEUF9TT0NLRVRTPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0xMjQ9Q09ORklHX1NNQ19ESUFHPW1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6MTI1OkNPTkZJR19ESUJTPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6MTI2OkNPTkZJR19ESUJTX0xPPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMTI3LUNPTkZJR19YRFBfU09DS0VUUz15XFxuLS1cXG5kcml2ZXJzL01ha2VmaWxlPTE5Nz1vYmoteVxcdFxcdFxcdFxcdCs9IHJlc2N0cmwvXFxuZHJpdmVycy9NYWtlZmlsZS0xOTgtXFxuZHJpdmVycy9NYWtlZmlsZToxOTk6b2JqLSQoQ09ORklHX0RJQlMpXFx0XFx0Kz0gZGlicy9cXG5kcml2ZXJzL01ha2VmaWxlLTIwMC1vYmotJChDT05GSUdfUzM5MClcXHRcXHQrPSBzMzkwL1xcbi0tXFxuZHJpdmVycy9kaWJzL01ha2VmaWxlPTY9ZGlicy15ICs9IGRpYnNfbWFpbi5vXFxuZHJpdmVycy9kaWJzL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX0RJQlMpICs9IGRpYnMub1xcbmRyaXZlcnMvZGlicy9NYWtlZmlsZTo4OmRpYnMtJChDT05GSUdfRElCU19MTykgKz0gZGlic19sb29wYmFjay5vXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTIwLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6MjE6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RJQlNfTE8pXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0yMi0jZGVmaW5lIERJQlNfTE9fRE1CU19IQVNIX0JJVFNcXHQxMlxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZz0xMzU9Q09ORklHX1NNQ19IU19DVFJMX0JQRj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZzoxMzY6Q09ORklHX0RJQlM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWc6MTM3OkNPTkZJR19ESUJTX0xPPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLTEzOC1DT05GSUdfUE1fV0FLRUxPQ0tTPXlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTA6MzE6MzMuOTIyNzMzNTUzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI2NTE5Mzc0MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIHMzOTAgTmV0d29yayBEcml2ZXIgUmVnaXN0cmF0aW9uKipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgZ3V0cyBvZiB0aGlzIHMzOTAgbmV0d29yayBkcml2ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIG91dCBgZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBwcmVjaXNlbHkgaG93IHRoaXMgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBESUJTIChEZXZpY2UgSW50ZXJmYWNlIEJsb2NrIFN0cnVjdHVyZSkgYW5kIHRoZSBQQ0kgc3Vic3lzdGVtLiBJJ20gYXNzdW1pbmcgaXQgcmVnaXN0ZXJzIGl0c2VsZiBzb21laG93LCBidXQgdGhlIGRldmlsIGlzIGFsd2F5cyBpbiB0aGUgZGV0YWlscywgaXNuJ3QgaXQ/IEkgd2FudCB0byBzZWUgdGhlIHNwZWNpZmljIHNlcXVlbmNlLCB0aGUgY2FsbHMsIHRoZSBkYXRhIHN0cnVjdHVyZXMgdXNlZC4gSSdtIGxvb2tpbmcgZm9yIHRoZSBzdGFuZGFyZCBQQ0kgcHJvYmUgYW5kIHJlZ2lzdHJhdGlvbiBzZXF1ZW5jZSwgYnV0IHdpdGggdGhlIGFkZGVkIHdyaW5rbGUgb2YgaG93IERJQlMgY29tZXMgaW50byBwbGF5IG9uIHMzOTAuIElzIGl0IHVzaW5nIHRoZSBzdGFuZGFyZCBgcGNpX3JlZ2lzdGVyX2RyaXZlcmAgd2l0aCBzb21lIHMzOTAtc3BlY2lmaWMgaG9va3MsIG9yIGlzIHRoZXJlIGEgbW9yZSBpbnZvbHZlZCBESUJTLWNlbnRyaWMgYXBwcm9hY2g/IExldCdzIGdldCByZWFkaW5nIGFuZCBmaWd1cmUgb3V0IHRoaXMgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gZGFuY2UuIEknbSBleHBlY3RpbmcgdG8gc2VlIGNhbGxzIGxpa2UgYGRpYnNfcmVnaXN0ZXJfZHJpdmVyYCBvciBzb21ldGhpbmcgc2ltaWxhciBpZiBpdCdzIGRldmlhdGluZyBmcm9tIHRoZSBzdGFuZGFyZCBQQ0kgaW5pdGlhbGl6YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MzE5LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTA6MzE6MzYuNTc0NjczMzYyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjc3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1NDAsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTQwOlxcdFxcdH1cXG4gNTQxOlxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrKTtcXG4gNTQyOlxcdFxcdHJldHVybiBJUlFfSEFORExFRDtcXG4gNTQzOlxcdH1cXG4gNTQ0OlxcdFxcbiA1NDU6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBkaWJzX2Rldl9vcHMgaXNtX29wcyA9IHtcXG4gNTQ2OlxcdFxcdC5nZXRfZmFicmljX2lkID0gaXNtX2dldF9jaGlkLFxcbiA1NDc6XFx0XFx0LnF1ZXJ5X3JlbW90ZV9naWQgPSBpc21fcXVlcnlfcmdpZCxcXG4gNTQ4OlxcdFxcdC5tYXhfZG1icyA9IGlzbV9tYXhfZG1icyxcXG4gNTQ5OlxcdFxcdC5yZWdpc3Rlcl9kbWIgPSBpc21fcmVnaXN0ZXJfZG1iLFxcbiA1NTA6XFx0XFx0LnVucmVnaXN0ZXJfZG1iID0gaXNtX3VucmVnaXN0ZXJfZG1iLFxcbiA1NTE6XFx0XFx0Lm1vdmVfZGF0YSA9IGlzbV9tb3ZlLFxcbiA1NTI6XFx0XFx0LmFkZF92bGFuX2lkID0gaXNtX2FkZF92bGFuX2lkLFxcbiA1NTM6XFx0XFx0LmRlbF92bGFuX2lkID0gaXNtX2RlbF92bGFuX2lkLFxcbiA1NTQ6XFx0XFx0LnNpZ25hbF9ldmVudCA9IGlzbV9zaWduYWxfaWVxLFxcbiA1NTU6XFx0fTtcXG4gNTU2OlxcdFxcbiA1NTc6XFx0c3RhdGljIGludCBpc21fZGV2X2luaXQoc3RydWN0IGlzbV9kZXYgKmlzbSlcXG4gNTU4OlxcdHtcXG4gNTU5OlxcdFxcdHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gaXNtLVxcdTAwM2VwZGV2O1xcbiA1NjA6XFx0XFx0aW50IHJldDtcXG4gNTYxOlxcdFxcbiA1NjI6XFx0XFx0cmV0ID0gcGNpX2FsbG9jX2lycV92ZWN0b3JzKHBkZXYsIDEsIDEsIFBDSV9JUlFfTVNJKTtcXG4gNTYzOlxcdFxcdGlmIChyZXQgXFx1MDAzYz0gMClcXG4gNTY0OlxcdFxcdFxcdGdvdG8gb3V0O1xcbiA1NjU6XFx0XFxuIDU2NjpcXHRcXHRyZXQgPSByZXF1ZXN0X2lycShwY2lfaXJxX3ZlY3RvcihwZGV2LCAwKSwgaXNtX2hhbmRsZV9pcnEsIDAsXFxuIDU2NzpcXHRcXHRcXHRcXHQgIHBjaV9uYW1lKHBkZXYpLCBpc20pO1xcbiA1Njg6XFx0XFx0aWYgKHJldClcXG4gNTY5OlxcdFxcdFxcdGdvdG8gZnJlZV92ZWN0b3JzO1xcbiA1NzA6XFx0XFxuIDU3MTpcXHRcXHRyZXQgPSByZWdpc3Rlcl9zYmEoaXNtKTtcXG4gNTcyOlxcdFxcdGlmIChyZXQpXFxuIDU3MzpcXHRcXHRcXHRnb3RvIGZyZWVfaXJxO1xcbiA1NzQ6XFx0XFxuIDU3NTpcXHRcXHRyZXQgPSByZWdpc3Rlcl9pZXEoaXNtKTtcXG4gNTc2OlxcdFxcdGlmIChyZXQpXFxuIDU3NzpcXHRcXHRcXHRnb3RvIHVucmVnX3NiYTtcXG4gNTc4OlxcdFxcbiA1Nzk6XFx0XFx0cXVlcnlfaW5mbyhpc20pO1xcbiA1ODA6XFx0XFx0cmV0dXJuIDA7XFxuIDU4MTpcXHRcXG4gNTgyOlxcdHVucmVnX3NiYTpcXG4gNTgzOlxcdFxcdHVucmVnaXN0ZXJfc2JhKGlzbSk7XFxuIDU4NDpcXHRcXHRpc21fZnJlZV9zYmEoaXNtKTtcXG4gNTg1OlxcdGZyZWVfaXJxOlxcbiA1ODY6XFx0XFx0ZnJlZV9pcnEocGNpX2lycV92ZWN0b3IocGRldiwgMCksIGlzbSk7XFxuIDU4NzpcXHRmcmVlX3ZlY3RvcnM6XFxuIDU4ODpcXHRcXHRwY2lfZnJlZV9pcnFfdmVjdG9ycyhwZGV2KTtcXG4gNTg5OlxcdG91dDpcXG4gNTkwOlxcdFxcdHJldHVybiByZXQ7XFxuIDU5MTpcXHR9XFxuIDU5MjpcXHRcXG4gNTkzOlxcdHN0YXRpYyB2b2lkIGlzbV9kZXZfZXhpdChzdHJ1Y3QgaXNtX2RldiAqaXNtKVxcbiA1OTQ6XFx0e1xcbiA1OTU6XFx0XFx0c3RydWN0IHBjaV9kZXYgKnBkZXYgPSBpc20tXFx1MDAzZXBkZXY7XFxuIDU5NjpcXHRcXG4gNTk3OlxcdFxcdC8qIGlzbSB3aWxsIG9ubHkgZ2VuZXJhdGUgbmV3IElSUXMgd2hpbGUgaWVxIFxcdTAwMjYgc2JhIGFyZSByZWdpc3RlcmVkICovXFxuIDU5ODpcXHRcXHR1bnJlZ2lzdGVyX2llcShpc20pO1xcbiA1OTk6XFx0XFx0dW5yZWdpc3Rlcl9zYmEoaXNtKTtcXG4gNjAwOlxcdFxcdC8qIGRyYWluIG9uZ29pbmcgaXJwdCBoYW5kbGVycyAqL1xcbiA2MDE6XFx0XFx0ZnJlZV9pcnEocGNpX2lycV92ZWN0b3IocGRldiwgMCksIGlzbSk7XFxuIDYwMjpcXHRcXHRpc21fZnJlZV9pZXEoaXNtKTtcXG4gNjAzOlxcdFxcdGlzbV9mcmVlX3NiYShpc20pO1xcbiA2MDQ6XFx0XFx0cGNpX2ZyZWVfaXJxX3ZlY3RvcnMocGRldik7XFxuIDYwNTpcXHR9XFxuIDYwNjpcXHRcXG4gNjA3OlxcdHN0YXRpYyBpbnQgaXNtX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuIDYwODpcXHR7XFxuIDYwOTpcXHRcXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XFxuIDYxMDpcXHRcXHRzdHJ1Y3QgenBjaV9kZXYgKnpkZXY7XFxuIDYxMTpcXHRcXHRzdHJ1Y3QgaXNtX2RldiAqaXNtO1xcbiA2MTI6XFx0XFx0aW50IHJldDtcXG4gNjEzOlxcdFxcbiA2MTQ6XFx0XFx0aXNtID0ga3phbGxvY19vYmooKmlzbSk7XFxuIDYxNTpcXHRcXHRpZiAoIWlzbSlcXG4gNjE2OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiA2MTc6XFx0XFxuIDYxODpcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2aXNtLVxcdTAwM2VjbWRfbG9jayk7XFxuIDYxOTpcXHRcXHRkZXZfc2V0X2RydmRhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgaXNtKTtcXG4gNjIwOlxcdFxcdGlzbS1cXHUwMDNlcGRldiA9IHBkZXY7XFxuIDYyMTpcXHRcXG4gNjIyOlxcdFxcdHJldCA9IHBjaV9lbmFibGVfZGV2aWNlX21lbShwZGV2KTtcXG4gNjIzOlxcdFxcdGlmIChyZXQpXFxuIDYyNDpcXHRcXHRcXHRnb3RvIGVycl9kZXY7XFxuIDYyNTpcXHRcXG4gNjI2OlxcdFxcdHJldCA9IHBjaV9yZXF1ZXN0X21lbV9yZWdpb25zKHBkZXYsIERSVl9OQU1FKTtcXG4gNjI3OlxcdFxcdGlmIChyZXQpXFxuIDYyODpcXHRcXHRcXHRnb3RvIGVycl9kaXNhYmxlO1xcbiA2Mjk6XFx0XFxuIDYzMDpcXHRcXHRyZXQgPSBkbWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIERNQV9CSVRfTUFTSyg2NCkpO1xcbiA2MzE6XFx0XFx0aWYgKHJldClcXG4gNjMyOlxcdFxcdFxcdGdvdG8gZXJyX3Jlc291cmNlO1xcbiA2MzM6XFx0XFxuIDYzNDpcXHRcXHRkbWFfc2V0X3NlZ19ib3VuZGFyeShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBTWl8xTSAtIDEpO1xcbiA2MzU6XFx0XFx0ZG1hX3NldF9tYXhfc2VnX3NpemUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgU1pfMU0pO1xcbiA2MzY6XFx0XFx0cGNpX3NldF9tYXN0ZXIocGRldik7XFxuIDYzNzpcXHRcXG4gNjM4OlxcdFxcdGRpYnMgPSBkaWJzX2Rldl9hbGxvYygpO1xcbiA2Mzk6XFx0XFx0aWYgKCFkaWJzKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDEwOjMxOjM2LjU3NDc3NzQ0MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2NDI4MzQ3MjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBpc21fZHJ2LmNgIFByb2JlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYGlzbV9wcm9iZWAgaXMgY2xlYXJseSB0aWVkIHRvIGEgc3BlY2lmaWMgSUJNIElTTSBQQ0kgZGV2aWNlLCBpZGVudGlmaWVkIGJ5IGBQQ0lfREVWSUNFX0lEX0lCTV9JU01gLiBJIGltbWVkaWF0ZWx5IHJlY2FsbCB0aGF0IGBpc21fZHJ2LmNgIGlzIG9ubHkgYnVpbHQgaWYgYENPTkZJR19JU01gIGlzIGVuYWJsZWQsIHdoaWNoLCBkaWdnaW5nIGEgYml0LCBpcyBjb250cm9sbGVkIGJ5IHRoZSBgZHJpdmVycy9zMzkwL25ldC9LY29uZmlnYCBmaWxlLiBGdXJ0aGVybW9yZSwgdGhhdCBzcGVjaWZpYyBgS2NvbmZpZ2AgZmlsZSBpcyBvbmx5IHNvdXJjZWQgaWYgdGhlIGVudGlyZSBgczM5MGAgYXJjaGl0ZWN0dXJlIGlzIGVuYWJsZWQgdmlhIGBDT05GSUdfUzM5MD15YC4gTXkgYmFja2dyb3VuZCBhbGxvd3MgbWUgdG8gaW5mZXIgdGhhdCBgaXNtYCBsaWtlbHkgcmVmZXJzIHRvIGEgaGFyZHdhcmUgb3IgaHlwZXJ2aXNvci1zcGVjaWZpYyB2aXJ0dWFsIFBDSSBhZGFwdGVyLCBleGNsdXNpdmUgdG8gdGhlIElCTSBaIChzMzkweCkgbWFpbmZyYW1lIGFyY2hpdGVjdHVyZS5cblxuTm93LCBJJ20gdGhpbmtpbmcgYWJvdXQgZnV6emluZyBhbmQgdmlydHVhbCBlbnZpcm9ubWVudHMuIERvZXMgc3l6a2FsbGVyIG9yIGEgdmlydHVhbGl6ZWQgc2V0dXAgbGlrZSBRRU1VIG9yIEdDRSBldmVuIHRvdWNoIGBpc21fZHJ2LmNgPyBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyBpZiBgUENJX0RFVklDRV9JRF9JQk1fSVNNYCBpcyBlbXVsYXRhYmxlIGluIHN0YW5kYXJkIFFFTVUuIEdpdmVuIGl0cyBJQk0gWiBzcGVjaWZpYyBuYXR1cmUsIEkgc3Ryb25nbHkgc3VzcGVjdCBpdCdzIG5vdC4gSSBrbm93IGZyb20gbXkgd29yayB0aGF0IFFFTVUgZG9lc24ndCBlbXVsYXRlIHRoZSBpbnRyaWNhY2llcyBvZiB0aGUgSUJNIElTTSBQQ0kgZGV2aWNlLCBwYXJ0aWN1bGFybHkgdGhlIGB6cGNpYCBpbnN0cnVjdGlvbiBleGVjdXRpb24gd2l0aCB0aGUgSVNNIGNvbW1hbmQgaW50ZXJmYWNlLiBJdCdzIGEga2V5IHBvaW50LlxuXG5JIGhhdmUgYW4gdW5kZXJzdGFuZGluZyBvZiB0aGUgY3JpdGVyaWEgZm9yIGRldGVybWluaW5nIGlmIGEgcGF0Y2ggaXMgXCJXb3J0aEZ1enppbmcuXCIgSSBxdWlja2x5IHNjYW4gdGhlIGxpc3Qgb2YgZXhjZXB0aW9ucy4gSSBzZWUgaXRlbXMgdGhhdCB0cmlnZ2VyIHJlZCBmbGFncy4gTXkgdGhvdWdodHMgYXJlOiBJcyB0aGlzIGEgbW9kaWZpY2F0aW9uIHRvIGRvY3VtZW50YXRpb24sIEtjb25maWcsIG9yIGNvbW1lbnRzPyBPciBpcyBpdCBhIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZT8gVGhhdCB3b3VsZCBtYWtlIGl0IG5vdCB3b3J0aCBmdXp6aW5nLiBJcyBpdCB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCBRRU1VPyBPciBpcyBpdCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVyLCBvciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3M/IEluIHRoaXMgY2FzZSwgaXMgaXQgYWJvdXQgdGhlIHMzOTAgSVNNP1xuXG5UaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgSVNNIGlzIGdlbnVpbmVseSBlbXVsYXRlZCB3aXRoaW4gUUVNVSwgb3IgaWYgaXQncyBmdW5kYW1lbnRhbGx5IGEgaGFyZHdhcmUtc3BlY2lmaWMgb3Igei9WTS1zcGVjaWZpYyBQQ0kgZGV2aWNlLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIEkgbmVlZCB0byBzcGVjaWZpY2FsbHkgY2hlY2sgUUVNVSdzIGRvY3VtZW50YXRpb24gZm9yIGFueSBJU00gZGV2aWNlIHN1cHBvcnQuXG5cbkNoZWNraW5nIFFFTVUsIHRoZSBzMzkweCB0YXJnZXQgaW5jbHVkZXMgZmVhdHVyZXMgbGlrZSBgczM5MC1wY2ktYnVzYCBhbmQgYHMzOTAtcGNpLWRldmljZWAsIGxpa2VseSBmb3IgcGFzc3Rocm91Z2ggKHZmaW8tcGNpKS4gSG93ZXZlciwgYW5kIHRoaXMgaXMgY3J1Y2lhbCwgUUVNVSAqZG9lcyBub3QqIGhhdmUgYW4gZW11bGF0ZWQgSVNNIGRldmljZS4gRnJvbSB3aGF0IEkndmUgc2VlbiwgSVNNIGRldmljZXMgKm9ubHkqIGV4aXN0IGluIHMzOTB4IFFFTVUgdGhyb3VnaCBWRklPIHBhc3N0aHJvdWdoLCByZXF1aXJpbmcgYSByZWFsIElCTSBJU00gdmlydHVhbCBQQ0kgZnVuY3Rpb24gZnJvbSBhbiBJQk0gWiBob3N0LlxuXG5GaW5hbGx5LCBJJ2xsIHF1aWNrbHkgY2hlY2sgdGhlIERJQlMgbG9vcGJhY2sgKGBDT05GSUdfRElCU19MT2AgaW4gYGRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmNgKSBhcyBhIGZpbmFsLCByZW1vdGUgcG9zc2liaWxpdHkuIERvZXMgdGhhdCBsb29wYmFjayBjb2RlIGludGVyZmFjZSB3aXRoIGBpc21fZHJ2LmNgPyBJJ2xsIG5lZWQgdG8gY29uZmlybSBieSBxdWlja2x5IGNoZWNraW5nIGBkcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcxNjIsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxMDozMTo0My4wMDMxMjY3NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUxOTYyODU1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpc21fYWxsb2NfZG1iXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTIyOD1zdGF0aWMgdm9pZCBpc21fZnJlZV9kbWIoc3RydWN0IGlzbV9kZXYgKmlzbSwgc3RydWN0IGRpYnNfZG1iICpkbWIpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yMzYtXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MjM3OnN0YXRpYyBpbnQgaXNtX2FsbG9jX2RtYihzdHJ1Y3QgaXNtX2RldiAqaXNtLCBzdHJ1Y3QgZGlic19kbWIgKmRtYilcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yMzgte1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9Mjg1PXN0YXRpYyBpbnQgaXNtX3JlZ2lzdGVyX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHN0cnVjdCBkaWJzX2RtYiAqZG1iLFxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjkyLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjI5MzpcXHRyZXQgPSBpc21fYWxsb2NfZG1iKGlzbSwgZG1iKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yOTQtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTA6MzE6NDQuNTIyNzU5OTkyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMwNTU3MDY2MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYGRpYnNfbG9vcGJhY2suY2AqKlxuXG5Pa2F5LCB0aW1lIHRvIGNyYWNrIG9wZW4gYGRpYnNfbG9vcGJhY2suY2AuIExldCdzIHNlZSB3aGF0J3MgZ29pbmcgb24gaW4gdGhpcyBwYXJ0aWN1bGFyIGNvcm5lciBvZiB0aGUgY29kZWJhc2UuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhpcyBsb29wYmFjayBmdW5jdGlvbmFsaXR5IGlzIGltcGxlbWVudGVkIOKAkyBJIGtub3cgdGhlIGdlbmVyYWwgYXJjaGl0ZWN0dXJlLCBidXQgdGhlIHNwZWNpZmljcyBhcmUgYWx3YXlzIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBiaXRzIGxpdmUuIEknbSBwcmltYXJpbHkgbG9va2luZyBmb3IgdGhlIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBjcml0aWNhbCBwYXRoIGxvZ2ljLiBBcmUgdGhleSB1c2luZyBhbnkgY2xldmVyIHN5bmNocm9uaXphdGlvbiB0ZWNobmlxdWVzPyBBbnkgbm9uLW9idmlvdXMgb3B0aW1pemF0aW9ucz8gSSB3YW50IHRvIHF1aWNrbHkgaWRlbnRpZnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIHByb25lIHRvIHJhY2UgY29uZGl0aW9ucy4gSSdtIGFsc28ga2VlcGluZyBhbiBleWUgb3V0IGZvciBob3cgdGhleSBoYW5kbGUgZXJyb3IgY29uZGl0aW9ucyBhbmQgcmVzb3VyY2UgY2xlYW51cDsgYSBjb21tb24gc291cmNlIG9mIHN1YnRsZSBidWdzLiBJ4oCZbGwgc3RhcnQgYnkgdHJhY2luZyBhIHR5cGljYWwgZGF0YSBmbG93LCBmb2N1c2luZyBvbiByZWFkcyBhbmQgd3JpdGVzLCBsb29raW5nIGZvciBob3cgZGF0YSBpcyBtYW5hZ2VkIGJldHdlZW4gdGhlIGxheWVycyBhbmQgd2hldGhlciB0aGUgZGVzaWduIGlzIGVmZmljaWVudCBmcm9tIGEgcGVyZm9ybWFuY2UgcG9pbnQgb2Ygdmlldy4gU3BlY2lmaWNhbGx5IEknbGwgYmUgbG9va2luZyBmb3IgYW55IGhpbnRzIG9mIGFuIGltcGxlbWVudGF0aW9uIHRoYXQgbWlnaHQgYmUgcHJvbmUgdG8gYnVmZmVyIG92ZXJmbG93cywgb2ZmLWJ5LW9uZSBlcnJvcnMsIG9yIG90aGVyIGNvbW1vbiBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZXMsIHNvIEkga25vdyB3aGVyZSB0byBmb2N1cyBteSBhdHRlbnRpb24uIEl0J3MgdGltZSB0byBwdXQgb24gbXkgZGVidWdnaW5nIGhhdCBhbmQgZGlnIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODg1MiwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDEwOjMxOjQ3LjU3ODQ2OTMwNFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4ODQ3NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG1iXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZGlic1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jPTM0PXN0YXRpYyBpbnQgZGlic19sb19xdWVyeV9yZ2lkKHN0cnVjdCBkaWJzX2RldiAqZGlicywgY29uc3QgdXVpZF90ICpyZ2lkLFxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy00Mi1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjQzOnN0YXRpYyBpbnQgZGlic19sb19tYXhfZG1icyh2b2lkKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNDQte1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy00Ny1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjQ4OnN0YXRpYyBpbnQgZGlic19sb19yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYixcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTQ5LVxcdFxcdFxcdFxcdHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50KVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNTAte1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6NTE6XFx0c3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKmRtYl9ub2RlLCAqdG1wX25vZGU7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy01Mi1cXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTU3LVxcdGxkZXYgPSBkaWJzLVxcdTAwM2VkcnZfcHJpdjtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjU4OlxcdHNiYV9pZHggPSBkbWItXFx1MDAzZWlkeDtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjU5OlxcdC8qIGNoZWNrIHNwYWNlIGZvciBuZXcgZG1iICovXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy02MC1cXHRmb3JfZWFjaF9jbGVhcl9iaXQoc2JhX2lkeCwgbGRldi1cXHUwMDNlc2JhX2lkeF9tYXNrLCBESUJTX0xPX01BWF9ETUJTKSB7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTY2LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Njc6XFx0ZG1iX25vZGUgPSBremFsbG9jX29iaigqZG1iX25vZGUpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Njg6XFx0aWYgKCFkbWJfbm9kZSkge1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNjktXFx0XFx0cmMgPSAtRU5PTUVNO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy03Mi1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjczOlxcdGRtYl9ub2RlLVxcdTAwM2VzYmFfaWR4ID0gc2JhX2lkeDtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjc0OlxcdGRtYl9ub2RlLVxcdTAwM2VsZW4gPSBkbWItXFx1MDAzZWRtYl9sZW47XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy03NS1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNzgtXFx0XFx0XFx0ICAgIF9fR0ZQX05PUkVUUlkgfCBfX0dGUF9aRVJPLFxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Nzk6XFx0XFx0XFx0ICAgIGdldF9vcmRlcihkbWJfbm9kZS1cXHUwMDNlbGVuKSk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy04MC1cXHRpZiAoIWZvbGlvKSB7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTgzLVxcdH1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjg0OlxcdGRtYl9ub2RlLVxcdTAwM2VjcHVfYWRkciA9IGZvbGlvX2FkZHJlc3MoZm9saW8pO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6ODU6XFx0ZG1iX25vZGUtXFx1MDAzZWRtYV9hZGRyID0gRElCU19ETUFfQUREUl9JTlZBTElEO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6ODY6XFx0cmVmY291bnRfc2V0KFxcdTAwMjZkbWJfbm9kZS1cXHUwMDNlcmVmY250LCAxKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTg3LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtODgtYWdhaW46XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo4OTpcXHQvKiBhZGQgbmV3IGRtYiBpbnRvIGhhc2ggdGFibGUgKi9cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjkwOlxcdGdldF9yYW5kb21fYnl0ZXMoXFx1MDAyNmRtYl9ub2RlLVxcdTAwM2V0b2tlbiwgc2l6ZW9mKGRtYl9ub2RlLVxcdTAwM2V0b2tlbikpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6OTE6XFx0d3JpdGVfbG9ja19iaChcXHUwMDI2bGRldi1cXHUwMDNlZG1iX2h0X2xvY2spO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6OTI6XFx0aGFzaF9mb3JfZWFjaF9wb3NzaWJsZShsZGV2LVxcdTAwM2VkbWJfaHQsIHRtcF9ub2RlLCBsaXN0LCBkbWJfbm9kZS1cXHUwMDNldG9rZW4pIHtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjkzOlxcdFxcdGlmICh0bXBfbm9kZS1cXHUwMDNldG9rZW4gPT0gZG1iX25vZGUtXFx1MDAzZXRva2VuKSB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo5NDpcXHRcXHRcXHR3cml0ZV91bmxvY2tfYmgoXFx1MDAyNmxkZXYtXFx1MDAzZWRtYl9odF9sb2NrKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTk1LVxcdFxcdFxcdGdvdG8gYWdhaW47XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTk3LVxcdH1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjk4OlxcdGhhc2hfYWRkKGxkZXYtXFx1MDAzZWRtYl9odCwgXFx1MDAyNmRtYl9ub2RlLVxcdTAwM2VsaXN0LCBkbWJfbm9kZS1cXHUwMDNldG9rZW4pO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6OTk6XFx0d3JpdGVfdW5sb2NrX2JoKFxcdTAwMjZsZGV2LVxcdTAwM2VkbWJfaHRfbG9jayk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMDA6XFx0YXRvbWljX2luYyhcXHUwMDI2bGRldi1cXHUwMDNlZG1iX2NudCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMDEtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMDI6XFx0ZG1iLVxcdTAwM2VpZHggPSBkbWJfbm9kZS1cXHUwMDNlc2JhX2lkeDtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEwMzpcXHRkbWItXFx1MDAzZWRtYl90b2sgPSBkbWJfbm9kZS1cXHUwMDNldG9rZW47XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMDQ6XFx0ZG1iLVxcdTAwM2VjcHVfYWRkciA9IGRtYl9ub2RlLVxcdTAwM2VjcHVfYWRkcjtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEwNTpcXHRkbWItXFx1MDAzZWRtYV9hZGRyID0gZG1iX25vZGUtXFx1MDAzZWRtYV9hZGRyO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTA2OlxcdGRtYi1cXHUwMDNlZG1iX2xlbiA9IGRtYl9ub2RlLVxcdTAwM2VsZW47XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMDctXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMDgtXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEwOTpcXHRkaWJzLVxcdTAwM2VkbWJfY2xpZW50aWRfYXJyW3NiYV9pZHhdID0gY2xpZW50LVxcdTAwM2VpZDtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTExMC1cXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTExNC1lcnJfbm9kZTpcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjExNTpcXHRrZnJlZShkbWJfbm9kZSk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMTYtZXJyX2JpdDpcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTIwLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTIxOnN0YXRpYyB2b2lkIGRpYnNfbG9fZnJlZV9kbWIoc3RydWN0IGRpYnNfbG9fZGV2ICpsZGV2LFxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTIyOlxcdFxcdFxcdCAgICAgc3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKmRtYl9ub2RlKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTIzLXtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEyNDpcXHRjbGVhcl9iaXQoZG1iX25vZGUtXFx1MDAzZXNiYV9pZHgsIGxkZXYtXFx1MDAzZXNiYV9pZHhfbWFzayk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMjU6XFx0Zm9saW9fcHV0KHZpcnRfdG9fZm9saW8oZG1iX25vZGUtXFx1MDAzZWNwdV9hZGRyKSk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMjY6XFx0a2ZyZWUoZG1iX25vZGUpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTI3LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTI4OlxcdGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KFxcdTAwMjZsZGV2LVxcdTAwM2VkbWJfY250KSlcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTEyOS1cXHRcXHR3YWtlX3VwKFxcdTAwMjZsZGV2LVxcdTAwM2VsZGV2X3JlbGVhc2UpO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMzEtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMzI6c3RhdGljIGludCBkaWJzX2xvX3VucmVnaXN0ZXJfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgc3RydWN0IGRpYnNfZG1iICpkbWIpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMzMte1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTM0OlxcdHN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlICpkbWJfbm9kZSA9IE5VTEwsICp0bXBfbm9kZTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTEzNS1cXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE0MC1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE0MTpcXHQvKiBmaW5kIGRtYiBmcm9tIGhhc2ggdGFibGUgKi9cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE0MjpcXHR3cml0ZV9sb2NrX2JoKFxcdTAwMjZsZGV2LVxcdTAwM2VkbWJfaHRfbG9jayk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNDM6XFx0aGFzaF9mb3JfZWFjaF9wb3NzaWJsZShsZGV2LVxcdTAwM2VkbWJfaHQsIHRtcF9ub2RlLCBsaXN0LCBkbWItXFx1MDAzZWRtYl90b2spIHtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE0NDpcXHRcXHRpZiAodG1wX25vZGUtXFx1MDAzZXRva2VuID09IGRtYi1cXHUwMDNlZG1iX3Rvaykge1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTQ1OlxcdFxcdFxcdGRtYl9ub2RlID0gdG1wX25vZGU7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNDYtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE0OC1cXHR9XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNDk6XFx0aWYgKCFkbWJfbm9kZSkge1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTUwOlxcdFxcdHdyaXRlX3VubG9ja19iaChcXHUwMDI2bGRldi1cXHUwMDNlZG1iX2h0X2xvY2spO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTUxLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTUyLVxcdH1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE1MzpcXHRsYXN0ID0gcmVmY291bnRfZGVjX2FuZF90ZXN0KFxcdTAwMjZkbWJfbm9kZS1cXHUwMDNlcmVmY250KTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE1NC1cXHRpZiAobGFzdClcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE1NTpcXHRcXHRoYXNoX2RlbChcXHUwMDI2ZG1iX25vZGUtXFx1MDAzZWxpc3QpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTU2OlxcdHdyaXRlX3VubG9ja19iaChcXHUwMDI2bGRldi1cXHUwMDNlZG1iX2h0X2xvY2spO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTU3LVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNTktXFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE2MDpcXHRcXHRkaWJzLVxcdTAwM2VkbWJfY2xpZW50aWRfYXJyW2RtYl9ub2RlLVxcdTAwM2VzYmFfaWR4XSA9IE5PX0RJQlNfQ0xJRU5UO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTYxLVxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2Mi1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE2MzpcXHRcXHRkaWJzX2xvX2ZyZWVfZG1iKGxkZXYsIGRtYl9ub2RlKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2NC1cXHR9XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2Ny1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE2ODpzdGF0aWMgaW50IGRpYnNfbG9fc3VwcG9ydF9kbWJfbm9jb3B5KHN0cnVjdCBkaWJzX2RldiAqZGlicylcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2OS17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE3Mi1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE3MzpzdGF0aWMgaW50IGRpYnNfbG9fYXR0YWNoX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHN0cnVjdCBkaWJzX2RtYiAqZG1iKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTc0LXtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE3NTpcXHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqZG1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNzYtXFx0c3RydWN0IGRpYnNfbG9fZGV2ICpsZGV2O1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNzktXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxODA6XFx0LyogZmluZCBkbWJfbm9kZSBhY2NvcmRpbmcgdG8gZG1iLVxcdTAwM2VkbWJfdG9rICovXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxODE6XFx0cmVhZF9sb2NrX2JoKFxcdTAwMjZsZGV2LVxcdTAwM2VkbWJfaHRfbG9jayk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxODI6XFx0aGFzaF9mb3JfZWFjaF9wb3NzaWJsZShsZGV2LVxcdTAwM2VkbWJfaHQsIHRtcF9ub2RlLCBsaXN0LCBkbWItXFx1MDAzZWRtYl90b2spIHtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE4MzpcXHRcXHRpZiAodG1wX25vZGUtXFx1MDAzZXRva2VuID09IGRtYi1cXHUwMDNlZG1iX3Rvaykge1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTg0OlxcdFxcdFxcdGRtYl9ub2RlID0gdG1wX25vZGU7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xODUtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE4Ny1cXHR9XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxODg6XFx0aWYgKCFkbWJfbm9kZSkge1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTg5OlxcdFxcdHJlYWRfdW5sb2NrX2JoKFxcdTAwMjZsZGV2LVxcdTAwM2VkbWJfaHRfbG9jayk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xOTAtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xOTEtXFx0fVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTkyOlxcdHJlZmNvdW50X2luYyhcXHUwMDI2ZG1iX25vZGUtXFx1MDAzZXJlZmNudCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxOTM6XFx0cmVhZF91bmxvY2tfYmgoXFx1MDAyNmxkZXYtXFx1MDAzZWRtYl9odF9sb2NrKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE5NC1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE5NTpcXHQvKiBwcm92aWRlIGRtYiBpbmZvcm1hdGlvbiAqL1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTk2OlxcdGRtYi1cXHUwMDNlaWR4ID0gZG1iX25vZGUtXFx1MDAzZXNiYV9pZHg7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxOTc6XFx0ZG1iLVxcdTAwM2VkbWJfdG9rID0gZG1iX25vZGUtXFx1MDAzZXRva2VuO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTk4OlxcdGRtYi1cXHUwMDNlY3B1X2FkZHIgPSBkbWJfbm9kZS1cXHUwMDNlY3B1X2FkZHI7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxOTk6XFx0ZG1iLVxcdTAwM2VkbWFfYWRkciA9IGRtYl9ub2RlLVxcdTAwM2VkbWFfYWRkcjtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIwMDpcXHRkbWItXFx1MDAzZWRtYl9sZW4gPSBkbWJfbm9kZS1cXHUwMDNlbGVuO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjAxLVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMDMtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMDQ6c3RhdGljIGludCBkaWJzX2xvX2RldGFjaF9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgdG9rZW4pXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMDUte1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjA2OlxcdHN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlICpkbWJfbm9kZSA9IE5VTEwsICp0bXBfbm9kZTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIwNy1cXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIxMS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIxMjpcXHQvKiBmaW5kIGRtYl9ub2RlIGFjY29yZGluZyB0byBkbWItXFx1MDAzZWRtYl90b2sgKi9cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIxMzpcXHR3cml0ZV9sb2NrX2JoKFxcdTAwMjZsZGV2LVxcdTAwM2VkbWJfaHRfbG9jayk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMTQ6XFx0aGFzaF9mb3JfZWFjaF9wb3NzaWJsZShsZGV2LVxcdTAwM2VkbWJfaHQsIHRtcF9ub2RlLCBsaXN0LCB0b2tlbikge1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjE1LVxcdFxcdGlmICh0bXBfbm9kZS1cXHUwMDNldG9rZW4gPT0gdG9rZW4pIHtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIxNjpcXHRcXHRcXHRkbWJfbm9kZSA9IHRtcF9ub2RlO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjE3LVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMTktXFx0fVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjIwOlxcdGlmICghZG1iX25vZGUpIHtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIyMTpcXHRcXHR3cml0ZV91bmxvY2tfYmgoXFx1MDAyNmxkZXYtXFx1MDAzZWRtYl9odF9sb2NrKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIyMi1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIyMy1cXHR9XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMjQ6XFx0bGFzdCA9IHJlZmNvdW50X2RlY19hbmRfdGVzdChcXHUwMDI2ZG1iX25vZGUtXFx1MDAzZXJlZmNudCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMjUtXFx0aWYgKGxhc3QpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMjY6XFx0XFx0aGFzaF9kZWwoXFx1MDAyNmRtYl9ub2RlLVxcdTAwM2VsaXN0KTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIyNzpcXHR3cml0ZV91bmxvY2tfYmgoXFx1MDAyNmxkZXYtXFx1MDAzZWRtYl9odF9sb2NrKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIyOC1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIyOS1cXHRpZiAobGFzdClcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIzMDpcXHRcXHRkaWJzX2xvX2ZyZWVfZG1iKGxkZXYsIGRtYl9ub2RlKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIzMS1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjM0LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjM1OnN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvayxcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIzNi1cXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBpZHgsIGJvb2wgc2YsIHVuc2lnbmVkIGludCBvZmZzZXQsXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIzOC17XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMzk6XFx0c3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKnJtYl9ub2RlID0gTlVMTCwgKnRtcF9ub2RlO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjQwLVxcdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjQ2LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjQ3OlxcdHJlYWRfbG9ja19iaChcXHUwMDI2bGRldi1cXHUwMDNlZG1iX2h0X2xvY2spO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjQ4OlxcdGhhc2hfZm9yX2VhY2hfcG9zc2libGUobGRldi1cXHUwMDNlZG1iX2h0LCB0bXBfbm9kZSwgbGlzdCwgZG1iX3Rvaykge1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjQ5OlxcdFxcdGlmICh0bXBfbm9kZS1cXHUwMDNldG9rZW4gPT0gZG1iX3Rvaykge1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjUwLVxcdFxcdFxcdHJtYl9ub2RlID0gdG1wX25vZGU7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI1NC1cXHRpZiAoIXJtYl9ub2RlKSB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNTU6XFx0XFx0cmVhZF91bmxvY2tfYmgoXFx1MDAyNmxkZXYtXFx1MDAzZWRtYl9odF9sb2NrKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI1Ni1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjU4LVxcdGlmICgodTY0KW9mZnNldCArIHNpemUgXFx1MDAzZSBybWJfbm9kZS1cXHUwMDNlbGVuKSB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNTk6XFx0XFx0cmVhZF91bmxvY2tfYmgoXFx1MDAyNmxkZXYtXFx1MDAzZWRtYl9odF9sb2NrKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI2MC1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjY0LVxcdHNiYV9pZHggPSBybWJfbm9kZS1cXHUwMDNlc2JhX2lkeDtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI2NTpcXHRyZWFkX3VubG9ja19iaChcXHUwMDI2bGRldi1cXHUwMDNlZG1iX2h0X2xvY2spO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjY2LVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNzAtXFx0c3Bpbl9sb2NrKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI3MTpcXHRjbGllbnRfaWQgPSBkaWJzLVxcdTAwM2VkbWJfY2xpZW50aWRfYXJyW3NiYV9pZHhdO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjcyLVxcdHNfbWFzayA9IHJvcjE2KDB4MTAwMCwgaWR4KTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM9MjgwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGlic19kZXZfb3BzIGRpYnNfbG9fb3BzID0ge1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yODItXFx0LnF1ZXJ5X3JlbW90ZV9naWQgPSBkaWJzX2xvX3F1ZXJ5X3JnaWQsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODM6XFx0Lm1heF9kbWJzID0gZGlic19sb19tYXhfZG1icyxcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4NDpcXHQucmVnaXN0ZXJfZG1iID0gZGlic19sb19yZWdpc3Rlcl9kbWIsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODU6XFx0LnVucmVnaXN0ZXJfZG1iID0gZGlic19sb191bnJlZ2lzdGVyX2RtYixcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI4Ni1cXHQubW92ZV9kYXRhID0gZGlic19sb19tb3ZlX2RhdGEsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODc6XFx0LnN1cHBvcnRfbW1hcHBlZF9yZG1iID0gZGlic19sb19zdXBwb3J0X2RtYl9ub2NvcHksXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODg6XFx0LmF0dGFjaF9kbWIgPSBkaWJzX2xvX2F0dGFjaF9kbWIsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODk6XFx0LmRldGFjaF9kbWIgPSBkaWJzX2xvX2RldGFjaF9kbWIsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yOTAtfTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM9MjkyPXN0YXRpYyB2b2lkIGRpYnNfbG9fZGV2X2luaXQoc3RydWN0IGRpYnNfbG9fZGV2ICpsZGV2KVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjkzLXtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI5NDpcXHRyd2xvY2tfaW5pdChcXHUwMDI2bGRldi1cXHUwMDNlZG1iX2h0X2xvY2spO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjk1OlxcdGhhc2hfaW5pdChsZGV2LVxcdTAwM2VkbWJfaHQpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjk2OlxcdGF0b21pY19zZXQoXFx1MDAyNmxkZXYtXFx1MDAzZWRtYl9jbnQsIDApO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjk3LVxcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXFx1MDAyNmxkZXYtXFx1MDAzZWxkZXZfcmVsZWFzZSk7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jPTMwMD1zdGF0aWMgdm9pZCBkaWJzX2xvX2Rldl9leGl0KHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldilcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMwMS17XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMDI6XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZsZGV2LVxcdTAwM2VkbWJfY250KSlcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMwMzpcXHRcXHR3YWl0X2V2ZW50KGxkZXYtXFx1MDAzZWxkZXZfcmVsZWFzZSwgIWF0b21pY19yZWFkKFxcdTAwMjZsZGV2LVxcdTAwM2VkbWJfY250KSk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMDQtfVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0yNC1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjI1OnN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlIHtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTI2LVxcdHN0cnVjdCBobGlzdF9ub2RlIGxpc3Q7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oPTM1PXN0cnVjdCBkaWJzX2xvX2RldiB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0zNi1cXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDozNzpcXHRhdG9taWNfdCBkbWJfY250O1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6Mzg6XFx0cndsb2NrX3QgZG1iX2h0X2xvY2s7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0zOS1cXHRERUNMQVJFX0JJVE1BUChzYmFfaWR4X21hc2ssIERJQlNfTE9fTUFYX0RNQlMpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6NDA6XFx0REVDTEFSRV9IQVNIVEFCTEUoZG1iX2h0LCBESUJTX0xPX0RNQlNfSEFTSF9CSVRTKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTQxLVxcdHdhaXRfcXVldWVfaGVhZF90IGxkZXZfcmVsZWFzZTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz04Mz1pbnQgZGlic191bnJlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy04Ni1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo4NzpcXHRpbnQgbWF4X2RtYnM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTg4LVxcdGludCByYyA9IDA7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtOTItXFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6OTM6XFx0XFx0bWF4X2RtYnMgPSBkaWJzLVxcdTAwM2VvcHMtXFx1MDAzZW1heF9kbWJzKCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjk0OlxcdFxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgbWF4X2RtYnM7ICsraSkge1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo5NTpcXHRcXHRcXHRpZiAoZGlicy1cXHUwMDNlZG1iX2NsaWVudGlkX2FycltpXSA9PSBjbGllbnQtXFx1MDAzZWlkKSB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjk2OlxcdFxcdFxcdFxcdFdBUk4oMSwgXFxcIiVzOiBhdHRlbXB0IHRvIHVucmVnaXN0ZXIgJyVzJyB3aXRoIHJlZ2lzdGVyZWQgZG1iKHMpXFxcXG5cXFwiLFxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy05Ny1cXHRcXHRcXHRcXHQgICAgIF9fZnVuY19fLCBjbGllbnQtXFx1MDAzZW5hbWUpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy05OC1cXHRcXHRcXHRcXHRyYyA9IC1FQlVTWTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6OTk6XFx0XFx0XFx0XFx0Z290byBlcnJfcmVnX2RtYjtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTAwLVxcdFxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMTctXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjExODplcnJfcmVnX2RtYjpcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTE5LVxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz0xMjU9c3RhdGljIHZvaWQgZGlic19kZXZfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTMwLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMzE6XFx0a2ZyZWUoZGlicy1cXHUwMDNlZG1iX2NsaWVudGlkX2Fycik7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEzMi1cXHRrZnJlZShkaWJzKTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz0xODU9aW50IGRpYnNfZGV2X2FkZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE4Ni17XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE4NzpcXHRpbnQgbWF4X2RtYnM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE4OC1cXHRpbnQgaSwgcmV0O1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xODktXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE5MDpcXHRtYXhfZG1icyA9IGRpYnMtXFx1MDAzZW9wcy1cXHUwMDNlbWF4X2RtYnMoKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTkxOlxcdGRpYnMtXFx1MDAzZWRtYl9jbGllbnRpZF9hcnIgPSBremFsbG9jKG1heF9kbWJzLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTkyOlxcdGlmICghZGlicy1cXHUwMDNlZG1iX2NsaWVudGlkX2FycilcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTkzLVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxOTQ6XFx0bWVtc2V0KGRpYnMtXFx1MDAzZWRtYl9jbGllbnRpZF9hcnIsIE5PX0RJQlNfQ0xJRU5ULCBtYXhfZG1icyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE5NS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTA6MzE6NDcuNjI1MzU4MTIzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY5ODQwMTU5ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgUGF0Y2gncyBGdXp6aW5nIFdvcnRoaW5lc3MqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggbGlrZWx5IGRvZXNuJ3Qgd2FycmFudCBmdXp6aW5nLCBidXQgSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBJIHNlZSB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGlzbV9kcnYuY2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBpc21fYWxsb2NfZG1iYCBhbmQgYGlzbV9mcmVlX2RtYmAgZnVuY3Rpb25zLiBUaGVzZSBmdW5jdGlvbnMgbWFuYWdlIERNQSBidWZmZXJzIChgZGlic19kbWJgKSBmb3IgdGhlIElCTSBJU00gdlBDSSBhZGFwdGVyLiBUaGUgY2hhbmdlcyBpbnZvbHZlIGNvcnJlY3RpbmcgYSBtZW1vcnkgZnJlZWluZyBpc3N1ZSB3aXRoIGBmb2xpb19wdXRgIGFuZCBlbnN1cmluZyBgZG1iLVx1MDAzZWNwdV9hZGRyYCBpcyBudWxsZWQgYWZ0ZXIgZnJlZWluZyBpbiBib3RoIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBjb2RlIHBhdGhzLlxuXG5Ib3dldmVyLCBhIGNyaXRpY2FsIHBvaW50IGxlYXBzIG91dCBhdCBtZTogYGlzbV9kcnYuY2AgaXMgZXhwbGljaXRseSB0aWVkIHRvIHRoZSBgUENJX0RFVklDRV9JRF9JQk1fSVNNYCwgd2hpY2ggaXMgYW4gczM5MC1zcGVjaWZpYyB2UENJIGRldmljZS4gVGhpcyBpcyByZWxldmFudCAqb25seSogdG8gSUJNIFogbWFpbmZyYW1lIGhhcmR3YXJlLiBJdCdzIG5vdCBlbXVsYXRlZCBieSBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIEV2ZW4gaWYgSSB3ZXJlIHRvIGJvb3QgczM5MHggUUVNVSwgdGhlIElCTSBJU00gZGV2aWNlIHdvdWxkbid0IGJlIHByZXNlbnQgYmVjYXVzZSB0aGUgZGV2aWNlIGlzbid0IGVtdWxhdGVkIGluIHNvZnR3YXJlLlxuXG5SZXZpZXdpbmcgdGhlIHJ1bGUgc2V0IGZvciBgV29ydGhGdXp6aW5nYCwgdGhpcyBwYXRjaCBzcXVhcmVseSBmYWxscyB1bmRlciB0d28gY2F0ZWdvcmllczogXCJDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmVcIiBhbmQgXCJDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaC4uLiBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiIEJlY2F1c2UgdGhlIElTTSB2UENJIGlzIGEgdmVuZG9yLXNwZWNpZmljIGRldmljZSBhbmQgcmVxdWlyZXMgYWN0dWFsIElCTSBaIGhhcmR3YXJlLCB0aGlzIGNvZGUgY2FuJ3QgYmUgcmVhY2hlZCBpbiBhbnkgcmVhc29uYWJsZSB2aXJ0dWFsaXplZCB0ZXN0aW5nIGVudmlyb25tZW50LCBpbmNsdWRpbmcgczM5MHggUUVNVS5cblxuVGhlcmVmb3JlLCBnaXZlbiB0aGUgaGFyZHdhcmUgZGVwZW5kZW5jeSBhbmQgdGhlIHJ1bGUgc2V0LCBJJ20gY29uZmlkZW50IHRoYXQgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLiBJIG5lZWQgdG8gbm93IGRvdWJsZS1jaGVjayB0aGUgZGV0YWlscyBhbmQgcHJlcGFyZSB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGNhbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MTUxLCJPdXRwdXRUb2tlbnMiOjExOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTA6MzE6NTQuNjA5Mzc2OTcxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk1MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgYW5kIGNsZWFudXAgbG9naWMgKGlzbV9hbGxvY19kbWIgYW5kIGlzbV9mcmVlX2RtYikgaW4gZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMuIFRoZSBJU00gZHJpdmVyIGlzIHNwZWNpZmljIHRvIHRoZSBzMzkwIGFyY2hpdGVjdHVyZSBhbmQgcmVxdWlyZXMgSUJNIFogSW50ZXJuYWwgU2hhcmVkIE1lbW9yeSAoSVNNKSBQQ0kgaGFyZHdhcmUvZmlybXdhcmUsIHdoaWNoIGNhbm5vdCBiZSBlbXVsYXRlZCBvciByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgYW5kIGNsZWFudXAgbG9naWMgKGlzbV9hbGxvY19kbWIgYW5kIGlzbV9mcmVlX2RtYikgaW4gZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMuIFRoZSBJU00gZHJpdmVyIGlzIHNwZWNpZmljIHRvIHRoZSBzMzkwIGFyY2hpdGVjdHVyZSBhbmQgcmVxdWlyZXMgSUJNIFogSW50ZXJuYWwgU2hhcmVkIE1lbW9yeSAoSVNNKSBQQ0kgaGFyZHdhcmUvZmlybXdhcmUsIHdoaWNoIGNhbm5vdCBiZSBlbXVsYXRlZCBvciByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTA6MzE6NTQuNjA5Mzk5OTRaIiwiU2VxIjoyMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowtfkkn[1] Phase: Running StartedAt: 2026-09-03 10:32:05 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtfkkn[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-03 10:32:05 +0000 UTC FinishedAt: 2026-09-03 10:32:12 +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,}