Name: series-workflow45bv9 Phase: Failed StartedAt: 2026-09-04 18:17:38 +0000 UTC FinishedAt: 2026-09-04 18:38:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45bv9[0] Phase: Succeeded StartedAt: 2026-09-04 18:17:38 +0000 UTC FinishedAt: 2026-09-04 18:38:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45bv9[0].run-triage Phase: Succeeded StartedAt: 2026-09-04 18:17:38 +0000 UTC FinishedAt: 2026-09-04 18:38:44 +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+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lZGlhVGVrIEdpZ2FiaXQgRXRoZXJuZXQgU29DIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYykgYW5kIHRoZSBNZWRpYVRlayBNVDc1MzAgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL210NzUzMC5jKS4gVGhlc2UgZHJpdmVycyBhcmUgc3BlY2lmaWMgdG8gTWVkaWFUZWsgQVJNL01JUFMgU29DcyAoc3VjaCBhcyBNVDc2MjEsIE1UNzk4MSwgTVQ3OTg2LCBNVDc5ODgpIGFuZCByZXF1aXJlIFNvQy1zcGVjaWZpYyBkZXZpY2UgdHJlZXMgYW5kIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBhbWQ2NCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIGFtZDY0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODozNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGNjMmE0MmQzNzAzMTY1ODgxZDQ1YzI3YjQ1MWNmNDAyMzUyYWVhYTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCA0IDE4OjM3OjUwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuaW5kZXggMmI3YmUwOTFjMDU2ZS4uM2U2MWViM2MyYjFlMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXG5AQCAtMzE3MiwyMyAmIzQzOzMxNzIsMzEgQEAgc3RhdGljIHZvaWQgbXQ3NTN4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBcbiBcdGNvbmZpZy1cdTAwM2VtYWNfY2FwYWJpbGl0aWVzID0gTUFDX0FTWU1fUEFVU0UgfCBNQUNfU1lNX1BBVVNFO1xuIFxuJiM0MztcdHByaXYtXHUwMDNlaW5mby1cdTAwM2VtYWNfcG9ydF9nZXRfY2FwcyhkcywgcG9ydCwgY29uZmlnKTtcbiYjNDM7XG4gXHQvKiBUaGUgRU43NTI4IEdQSFlzIHJlcG9ydCBFRUUgY2FwYWJpbGl0eSwgYnV0IG5lZ290aWF0aW5nIEVFRSB3aXRoXG4gXHQgKiBjb21tb24gbGluayBwYXJ0bmVycyAoZS5nLiBSZWFsdGVrIEdiRSBOSUNzKSByZXN1bHRzIGluIGFuIHVuc3RhYmxlXG4gXHQgKiBsaW5rIHdpdGggZHJvcHBlZCBmcmFtZXMuIExlYXZlIHRoZSBMUEkgY2FwYWJpbGl0aWVzIGVtcHR5IHNvIHRoYXRcbiBcdCAqIHBoeWxpbmsgZGlzYWJsZXMgRUVFIG9uIHRoZXNlIFBIWXMgYW5kIHJlZnVzZXMgdG8gZW5hYmxlIGl0IGZyb21cbiBcdCAqIHVzZXJzcGFjZS5cbiBcdCAqL1xuLVx0aWYgKHByaXYtXHUwMDNlaWQgIT0gSURfRU43NTI4KSB7XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlaWQgIT0gSURfRU43NTI4IFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBjb25maWctXHUwMDNlbWFjX2NhcGFiaWxpdGllcyBcdTAwMjYgKE1BQ18xMDBGRCB8IE1BQ18xMDAwRkQpKSB7XG4gXHRcdHUzMiBlZWVjciA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzWF9QTUVFRUNSX1AocG9ydCkpO1xuIFxuLVx0XHRjb25maWctXHUwMDNlbHBpX2NhcGFiaWxpdGllcyA9IE1BQ18xMDBGRCB8IE1BQ18xMDAwRkQgfCBNQUNfMjUwMEZEO1xuJiM0MztcdFx0LyogTFBJIGFib3ZlIDEgR2JwcyBpcyBub3Qgc3VwcG9ydGVkICovXG4mIzQzO1x0XHRjb25maWctXHUwMDNlbHBpX2NhcGFiaWxpdGllcyA9IGNvbmZpZy1cdTAwM2VtYWNfY2FwYWJpbGl0aWVzIFx1MDAyNlxuJiM0MztcdFx0XHRcdFx0ICAgKE1BQ18xMDBGRCB8IE1BQ18xMDAwRkQpO1xuJiM0MztcdFx0cGh5X2ludGVyZmFjZV9jb3B5KGNvbmZpZy1cdTAwM2VscGlfaW50ZXJmYWNlcyxcbiYjNDM7XHRcdFx0XHQgICBjb25maWctXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuJiM0MztcdFx0X19jbGVhcl9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCxcbiYjNDM7XHRcdFx0ICAgIGNvbmZpZy1cdTAwM2VscGlfaW50ZXJmYWNlcyk7XG4mIzQzO1xuIFx0XHQvKiB0eF9scGlfdGltZXIgc2hvdWxkIGJlIGluIG1pY3Jvc2Vjb25kcy4gVGhlIHRpbWUgdW5pdHMgZm9yXG4gXHRcdCAqIExQSSB0aHJlc2hvbGQgYXJlIHVuc3BlY2lmaWVkLlxuIFx0XHQgKi9cbiBcdFx0Y29uZmlnLVx1MDAzZWxwaV90aW1lcl9kZWZhdWx0ID0gRklFTERfR0VUKExQSV9USFJFU0hfTUFTSywgZWVlY3IpO1xuIFx0fVxuLVxuLVx0cHJpdi1cdTAwM2VpbmZvLVx1MDAzZW1hY19wb3J0X2dldF9jYXBzKGRzLCBwb3J0LCBjb25maWcpO1xuIH1cbiBcbiBzdGF0aWMgaW50IG10NzUzeF9wY3NfdmFsaWRhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmNcbmluZGV4IGJlM2JkMDI1YzQxYTEuLmZkN2E0OWFlODhkMDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jXG5AQCAtNDgyOCw3ICYjNDM7NDgyOCw3IEBAIHN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucClcbiBcdHBoeV9pbnRlcmZhY2VfdCBwaHlfbW9kZTtcbiBcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xuIFx0c3RydWN0IG10a19tYWMgKm1hYztcbi1cdGludCBpZCwgZXJyO1xuJiM0MztcdGludCBpZCwgZXJyLCBpO1xuIFx0aW50IHR4cXMgPSAxO1xuIFx0dTMyIHZhbDtcbiBcbkBAIC00OTA3LDggJiM0Mzs0OTA3LDggQEAgc3RhdGljIGludCBtdGtfYWRkX21hYyhzdHJ1Y3QgbXRrX2V0aCAqZXRoLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuIFx0bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLnR5cGUgPSBQSFlMSU5LX05FVERFVjtcbiBcdG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzID0gTUFDX0FTWU1fUEFVU0UgfCBNQUNfU1lNX1BBVVNFIHxcbiBcdFx0TUFDXzEwIHwgTUFDXzEwMCB8IE1BQ18xMDAwIHwgTUFDXzI1MDBGRDtcbi1cdG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfY2FwYWJpbGl0aWVzID0gTUFDXzEwMEZEIHwgTUFDXzEwMDBGRCB8XG4tXHRcdE1BQ18yNTAwRkQ7XG4mIzQzO1x0LyogTFBJIGFib3ZlIDEgR2JwcyBpcyBub3Qgc3VwcG9ydGVkICovXG4mIzQzO1x0bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMgPSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEO1xuIFx0bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV90aW1lcl9kZWZhdWx0ID0gMTAwMDtcbiBcbiBcdC8qIE1UNzYyMyBnbWFjMCBpcyBub3cgbWlzc2luZyBpdHMgc3BlZWQtc3BlY2lmaWMgUExMIGNvbmZpZ3VyYXRpb25cbkBAIC00OTY2LDYgJiM0Mzs0OTY2LDE4IEBAIHN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucClcbiBcdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCxcbiBcdFx0XHQgIG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4gXG4mIzQzO1x0LyogTFBJIHdha2UtdXAgdGltaW5nIGlzIG9ubHkgdmVyaWZpZWQgb24gTVRLX0dNQUNfRUVFIFNvQ3MgKi9cbiYjNDM7XHRpZiAoTVRLX0hBU19DQVBTKGV0aC1cdTAwM2Vzb2MtXHUwMDNlY2FwcywgTVRLX0dNQUNfRUVFKSkge1xuJiM0MztcdFx0cGh5X2ludGVyZmFjZV9jb3B5KG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfaW50ZXJmYWNlcyxcbiYjNDM7XHRcdFx0XHQgICBtYWMtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuJiM0MztcdFx0X19jbGVhcl9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCxcbiYjNDM7XHRcdFx0ICAgIG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfaW50ZXJmYWNlcyk7XG4mIzQzO1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBQSFlfSU5URVJGQUNFX01PREVfTUFYOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdFx0aWYgKG10a19pbnRlcmZhY2VfbW9kZV9pc194Z21paShldGgsIGkpKVxuJiM0MztcdFx0XHRcdF9fY2xlYXJfYml0KGksXG4mIzQzO1x0XHRcdFx0XHQgICAgbWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9pbnRlcmZhY2VzKTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNm1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZyxcbiBcdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKG1hYy1cdTAwM2VvZl9ub2RlKSxcbiBcdFx0XHRcdCBwaHlfbW9kZSwgbWFjX29wcyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmhcbmluZGV4IDAxNjhlMmZiYzYxOTcuLjg4YTliM2IyM2JlYTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oXG5AQCAtOTk0LDYgJiM0Mzs5OTQsNyBAQCBlbnVtIG1rdF9ldGhfY2FwYWJpbGl0aWVzIHtcbiBcdE1US19VM19DT1BIWV9WMl9CSVQsXG4gXHRNVEtfU1JBTV9CSVQsXG4gXHRNVEtfMzZCSVRfRE1BX0JJVCxcbiYjNDM7XHRNVEtfR01BQ19FRUVfQklULFxuIFxuIFx0LyogTVVYIEJJVFMqL1xuIFx0TVRLX0VUSF9NVVhfR0RNMV9UT19HTUFDMV9FU1dfQklULFxuQEAgLTEwMzQsNiAmIzQzOzEwMzUsNyBAQCBlbnVtIG1rdF9ldGhfY2FwYWJpbGl0aWVzIHtcbiAjZGVmaW5lIE1US19VM19DT1BIWV9WMlx0XHRCSVRfVUxMKE1US19VM19DT1BIWV9WMl9CSVQpXG4gI2RlZmluZSBNVEtfU1JBTVx0XHRCSVRfVUxMKE1US19TUkFNX0JJVClcbiAjZGVmaW5lIE1US18zNkJJVF9ETUFcdEJJVF9VTEwoTVRLXzM2QklUX0RNQV9CSVQpXG4mIzQzOyNkZWZpbmUgTVRLX0dNQUNfRUVFXHRcdEJJVF9VTEwoTVRLX0dNQUNfRUVFX0JJVClcbiBcbiAjZGVmaW5lIE1US19FVEhfTVVYX0dETTFfVE9fR01BQzFfRVNXXHRcdFxcXG4gXHRCSVRfVUxMKE1US19FVEhfTVVYX0dETTFfVE9fR01BQzFfRVNXX0JJVClcbkBAIC0xMTE3LDcgJiM0MzsxMTE5LDcgQEAgZW51bSBta3RfZXRoX2NhcGFiaWxpdGllcyB7XG4gI2RlZmluZSBNVDc5ODFfQ0FQUyAgKE1US19HTUFDMV9TR01JSSB8IE1US19HTUFDMl9TR01JSSB8IE1US19HTUFDMl9HRVBIWSB8IFxcXG4gXHRcdCAgICAgIE1US19NVVhfR01BQzEyX1RPX0dFUEhZX1NHTUlJIHwgTVRLX1FETUEgfCBcXFxuIFx0XHQgICAgICBNVEtfTVVYX1UzX0dNQUMyX1RPX1FQSFkgfCBNVEtfVTNfQ09QSFlfVjIgfCBcXFxuLVx0XHQgICAgICBNVEtfUlNUQ1RSTF9QUEUxIHwgTVRLX1NSQU0pXG4mIzQzO1x0XHQgICAgICBNVEtfUlNUQ1RSTF9QUEUxIHwgTVRLX1NSQU0gfCBNVEtfR01BQ19FRUUpXG4gXG4gI2RlZmluZSBNVDc5ODZfQ0FQUyAgKE1US19HTUFDMV9TR01JSSB8IE1US19HTUFDMl9TR01JSSB8IFxcXG4gXHRcdCAgICAgIE1US19NVVhfR01BQzEyX1RPX0dFUEhZX1NHTUlJIHwgTVRLX1FETUEgfCBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjM3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWRpYVRlayBHaWdhYml0IEV0aGVybmV0IFNvQyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMpIGFuZCB0aGUgTWVkaWFUZWsgTVQ3NTMwIHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYykuIFRoZXNlIGRyaXZlcnMgYXJlIHNwZWNpZmljIHRvIE1lZGlhVGVrIEFSTS9NSVBTIFNvQ3MgKHN1Y2ggYXMgTVQ3NjIxLCBNVDc5ODEsIE1UNzk4NiwgTVQ3OTg4KSBhbmQgcmVxdWlyZSBTb0Mtc3BlY2lmaWMgZGV2aWNlIHRyZWVzIGFuZCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiBhbWQ2NC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjYzJhNDJkMzcwMzE2NTg4MWQ0NWMyN2I0NTFjZjQwMjM1MmFlYWExCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBTZXAgNCAxODozNzo1MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYwppbmRleCAyYjdiZTA5MWMwNTZlLi4zZTYxZWIzYzJiMWUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jCkBAIC0zMTcyLDIzICYjNDM7MzE3MiwzMSBAQCBzdGF0aWMgdm9pZCBtdDc1M3hfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LAogCiAJY29uZmlnLSZndDttYWNfY2FwYWJpbGl0aWVzID0gTUFDX0FTWU1fUEFVU0UgfCBNQUNfU1lNX1BBVVNFOwogCiYjNDM7CXByaXYtJmd0O2luZm8tJmd0O21hY19wb3J0X2dldF9jYXBzKGRzLCBwb3J0LCBjb25maWcpOwomIzQzOwogCS8qIFRoZSBFTjc1MjggR1BIWXMgcmVwb3J0IEVFRSBjYXBhYmlsaXR5LCBidXQgbmVnb3RpYXRpbmcgRUVFIHdpdGgKIAkgKiBjb21tb24gbGluayBwYXJ0bmVycyAoZS5nLiBSZWFsdGVrIEdiRSBOSUNzKSByZXN1bHRzIGluIGFuIHVuc3RhYmxlCiAJICogbGluayB3aXRoIGRyb3BwZWQgZnJhbWVzLiBMZWF2ZSB0aGUgTFBJIGNhcGFiaWxpdGllcyBlbXB0eSBzbyB0aGF0CiAJICogcGh5bGluayBkaXNhYmxlcyBFRUUgb24gdGhlc2UgUEhZcyBhbmQgcmVmdXNlcyB0byBlbmFibGUgaXQgZnJvbQogCSAqIHVzZXJzcGFjZS4KIAkgKi8KLQlpZiAocHJpdi0mZ3Q7aWQgIT0gSURfRU43NTI4KSB7CiYjNDM7CWlmIChwcml2LSZndDtpZCAhPSBJRF9FTjc1MjggJmFtcDsmYW1wOwomIzQzOwkgICAgY29uZmlnLSZndDttYWNfY2FwYWJpbGl0aWVzICZhbXA7IChNQUNfMTAwRkQgfCBNQUNfMTAwMEZEKSkgewogCQl1MzIgZWVlY3IgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1M1hfUE1FRUVDUl9QKHBvcnQpKTsKIAotCQljb25maWctJmd0O2xwaV9jYXBhYmlsaXRpZXMgPSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEIHwgTUFDXzI1MDBGRDsKJiM0MzsJCS8qIExQSSBhYm92ZSAxIEdicHMgaXMgbm90IHN1cHBvcnRlZCAqLwomIzQzOwkJY29uZmlnLSZndDtscGlfY2FwYWJpbGl0aWVzID0gY29uZmlnLSZndDttYWNfY2FwYWJpbGl0aWVzICZhbXA7CiYjNDM7CQkJCQkgICAoTUFDXzEwMEZEIHwgTUFDXzEwMDBGRCk7CiYjNDM7CQlwaHlfaW50ZXJmYWNlX2NvcHkoY29uZmlnLSZndDtscGlfaW50ZXJmYWNlcywKJiM0MzsJCQkJICAgY29uZmlnLSZndDtzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7CiYjNDM7CQlfX2NsZWFyX2JpdChQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYLAomIzQzOwkJCSAgICBjb25maWctJmd0O2xwaV9pbnRlcmZhY2VzKTsKJiM0MzsKIAkJLyogdHhfbHBpX3RpbWVyIHNob3VsZCBiZSBpbiBtaWNyb3NlY29uZHMuIFRoZSB0aW1lIHVuaXRzIGZvcgogCQkgKiBMUEkgdGhyZXNob2xkIGFyZSB1bnNwZWNpZmllZC4KIAkJICovCiAJCWNvbmZpZy0mZ3Q7bHBpX3RpbWVyX2RlZmF1bHQgPSBGSUVMRF9HRVQoTFBJX1RIUkVTSF9NQVNLLCBlZWVjcik7CiAJfQotCi0JcHJpdi0mZ3Q7aW5mby0mZ3Q7bWFjX3BvcnRfZ2V0X2NhcHMoZHMsIHBvcnQsIGNvbmZpZyk7CiB9CiAKIHN0YXRpYyBpbnQgbXQ3NTN4X3Bjc192YWxpZGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jCmluZGV4IGJlM2JkMDI1YzQxYTEuLmZkN2E0OWFlODhkMDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYwpAQCAtNDgyOCw3ICYjNDM7NDgyOCw3IEBAIHN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucCkKIAlwaHlfaW50ZXJmYWNlX3QgcGh5X21vZGU7CiAJc3RydWN0IHBoeWxpbmsgKnBoeWxpbms7CiAJc3RydWN0IG10a19tYWMgKm1hYzsKLQlpbnQgaWQsIGVycjsKJiM0MzsJaW50IGlkLCBlcnIsIGk7CiAJaW50IHR4cXMgPSAxOwogCXUzMiB2YWw7CiAKQEAgLTQ5MDcsOCAmIzQzOzQ5MDcsOCBAQCBzdGF0aWMgaW50IG10a19hZGRfbWFjKHN0cnVjdCBtdGtfZXRoICpldGgsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCiAJbWFjLSZndDtwaHlsaW5rX2NvbmZpZy50eXBlID0gUEhZTElOS19ORVRERVY7CiAJbWFjLSZndDtwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzID0gTUFDX0FTWU1fUEFVU0UgfCBNQUNfU1lNX1BBVVNFIHwKIAkJTUFDXzEwIHwgTUFDXzEwMCB8IE1BQ18xMDAwIHwgTUFDXzI1MDBGRDsKLQltYWMtJmd0O3BoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMgPSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEIHwKLQkJTUFDXzI1MDBGRDsKJiM0MzsJLyogTFBJIGFib3ZlIDEgR2JwcyBpcyBub3Qgc3VwcG9ydGVkICovCiYjNDM7CW1hYy0mZ3Q7cGh5bGlua19jb25maWcubHBpX2NhcGFiaWxpdGllcyA9IE1BQ18xMDBGRCB8IE1BQ18xMDAwRkQ7CiAJbWFjLSZndDtwaHlsaW5rX2NvbmZpZy5scGlfdGltZXJfZGVmYXVsdCA9IDEwMDA7CiAKIAkvKiBNVDc2MjMgZ21hYzAgaXMgbm93IG1pc3NpbmcgaXRzIHNwZWVkLXNwZWNpZmljIFBMTCBjb25maWd1cmF0aW9uCkBAIC00OTY2LDYgJiM0Mzs0OTY2LDE4IEBAIHN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucCkKIAkJX19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCwKIAkJCSAgbWFjLSZndDtwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7CiAKJiM0MzsJLyogTFBJIHdha2UtdXAgdGltaW5nIGlzIG9ubHkgdmVyaWZpZWQgb24gTVRLX0dNQUNfRUVFIFNvQ3MgKi8KJiM0MzsJaWYgKE1US19IQVNfQ0FQUyhldGgtJmd0O3NvYy0mZ3Q7Y2FwcywgTVRLX0dNQUNfRUVFKSkgewomIzQzOwkJcGh5X2ludGVyZmFjZV9jb3B5KG1hYy0mZ3Q7cGh5bGlua19jb25maWcubHBpX2ludGVyZmFjZXMsCiYjNDM7CQkJCSAgIG1hYy0mZ3Q7cGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpOwomIzQzOwkJX19jbGVhcl9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCwKJiM0MzsJCQkgICAgbWFjLSZndDtwaHlsaW5rX2NvbmZpZy5scGlfaW50ZXJmYWNlcyk7CiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgUEhZX0lOVEVSRkFDRV9NT0RFX01BWDsgaSYjNDM7JiM0MzspCiYjNDM7CQkJaWYgKG10a19pbnRlcmZhY2VfbW9kZV9pc194Z21paShldGgsIGkpKQomIzQzOwkJCQlfX2NsZWFyX2JpdChpLAomIzQzOwkJCQkJICAgIG1hYy0mZ3Q7cGh5bGlua19jb25maWcubHBpX2ludGVyZmFjZXMpOwomIzQzOwl9CiYjNDM7CiAJcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKCZhbXA7bWFjLSZndDtwaHlsaW5rX2NvbmZpZywKIAkJCQkgb2ZfZndub2RlX2hhbmRsZShtYWMtJmd0O29mX25vZGUpLAogCQkJCSBwaHlfbW9kZSwgbWFjX29wcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaAppbmRleCAwMTY4ZTJmYmM2MTk3Li44OGE5YjNiMjNiZWE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmgKQEAgLTk5NCw2ICYjNDM7OTk0LDcgQEAgZW51bSBta3RfZXRoX2NhcGFiaWxpdGllcyB7CiAJTVRLX1UzX0NPUEhZX1YyX0JJVCwKIAlNVEtfU1JBTV9CSVQsCiAJTVRLXzM2QklUX0RNQV9CSVQsCiYjNDM7CU1US19HTUFDX0VFRV9CSVQsCiAKIAkvKiBNVVggQklUUyovCiAJTVRLX0VUSF9NVVhfR0RNMV9UT19HTUFDMV9FU1dfQklULApAQCAtMTAzNCw2ICYjNDM7MTAzNSw3IEBAIGVudW0gbWt0X2V0aF9jYXBhYmlsaXRpZXMgewogI2RlZmluZSBNVEtfVTNfQ09QSFlfVjIJCUJJVF9VTEwoTVRLX1UzX0NPUEhZX1YyX0JJVCkKICNkZWZpbmUgTVRLX1NSQU0JCUJJVF9VTEwoTVRLX1NSQU1fQklUKQogI2RlZmluZSBNVEtfMzZCSVRfRE1BCUJJVF9VTEwoTVRLXzM2QklUX0RNQV9CSVQpCiYjNDM7I2RlZmluZSBNVEtfR01BQ19FRUUJCUJJVF9VTEwoTVRLX0dNQUNfRUVFX0JJVCkKIAogI2RlZmluZSBNVEtfRVRIX01VWF9HRE0xX1RPX0dNQUMxX0VTVwkJXAogCUJJVF9VTEwoTVRLX0VUSF9NVVhfR0RNMV9UT19HTUFDMV9FU1dfQklUKQpAQCAtMTExNyw3ICYjNDM7MTExOSw3IEBAIGVudW0gbWt0X2V0aF9jYXBhYmlsaXRpZXMgewogI2RlZmluZSBNVDc5ODFfQ0FQUyAgKE1US19HTUFDMV9TR01JSSB8IE1US19HTUFDMl9TR01JSSB8IE1US19HTUFDMl9HRVBIWSB8IFwKIAkJICAgICAgTVRLX01VWF9HTUFDMTJfVE9fR0VQSFlfU0dNSUkgfCBNVEtfUURNQSB8IFwKIAkJICAgICAgTVRLX01VWF9VM19HTUFDMl9UT19RUEhZIHwgTVRLX1UzX0NPUEhZX1YyIHwgXAotCQkgICAgICBNVEtfUlNUQ1RSTF9QUEUxIHwgTVRLX1NSQU0pCiYjNDM7CQkgICAgICBNVEtfUlNUQ1RSTF9QUEUxIHwgTVRLX1NSQU0gfCBNVEtfR01BQ19FRUUpCiAKICNkZWZpbmUgTVQ3OTg2X0NBUFMgIChNVEtfR01BQzFfU0dNSUkgfCBNVEtfR01BQzJfU0dNSUkgfCBcCiAJCSAgICAgIE1US19NVVhfR01BQzEyX1RPX0dFUEhZX1NHTUlJIHwgTVRLX1FETUEgfCBcCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3ODcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFRoaXMgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYnJlYWsgZG93biB3aGF0JiMzOTtzIGJlaW5nIHRvdWNoZWQuIEkgc2VlIGNoYW5nZXMgYWZmZWN0aW5nIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY2AsIGFuZCB0aGUgY29ycmVzcG9uZGluZyBoZWFkZXIsIGBtdGtfZXRoX3NvYy5oYC4gVGhpcyBpcyBpbnRlcmVzdGluZzsgd2UmIzM5O3JlIGxvb2tpbmcgYXQgTWVkaWFUZWstcmVsYXRlZCBjb2RlLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGFuIGFtZDY0IGFyY2hpdGVjdHVyZS4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGVzZSBkcml2ZXJzICpkbyouIGBtdDc1MzAuY2AgaXMgdGhlIERTQSBkcml2ZXIgZm9yIHRoZSBNZWRpYVRlayBNVDc1MzAvTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCwgYW5kIGBtdGtfZXRoX3NvYy5jYCBpcyB0aGUgU29DIEdpZ2FiaXQgRXRoZXJuZXQgTUFDIGRyaXZlciwgcHJpbWFyaWx5IGZvciBBUk0vTUlQUyBTb0NzLiBHaXZlbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgSSBoYXZlIGEgaHVuY2ggdGhpcyBtaWdodCBiZSBhIHN1YnRsZSwgYnV0IG5vdCBuZWNlc3NhcmlseSBvYnZpb3VzLCB0aGluZyBoZXJlLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGdldCBzb21lIG1vcmUgY29udGV4dCBvbiBwb3RlbnRpYWwgaW1wbGljYXRpb25zLiBJIHdhbnQgdG8gcXVpY2tseSBhc2NlcnRhaW4gd2hhdCBoYXJkd2FyZS9idXNlcyB0aGVzZSBhcmUgdXNpbmcsIGFuZCB3aGV0aGVyIHRoaXMgY2FuIGV2ZW4gYmUgbWVhbmluZ2Z1bGx5IGluc3RhbnRpYXRlZCBvciBwcm9iZWQgaW4gYW4gYW1kNjQgUUVNVSBvciBTeXprYWxsZXIgZW52aXJvbm1lbnQuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIGdyZXBwZXIvY29kZXNlYXJjaCB0byBsb29rIGZvciB0aGUgcHJvYmUgYW5kIGluaXQgbWV0aG9kcyBmb3IgYm90aCBgbXQ3NTMwYCBhbmQgYG10a19ldGhfc29jYC4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgYmUgYWJsZSB0byBnZXQgYSBiZXR0ZXIgZmVlbCBmb3IgdGhlIGltcGFjdCBvZiB0aGlzIHBhdGNoLiBUaGlzIGluaXRpYWwgaW52ZXN0aWdhdGlvbiBzaG91bGQgaW5mb3JtIGlmIGl0JiMzOTtzIHBvdGVudGlhbGx5IHdvcnRoIGEgZGVlcGVyIGRpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NTMwXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE5NTcgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTE4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE5Om10NzUzMF9yZWdtYXBfd3JpdGUodm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQgaW50IHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIwLXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIxOlx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gY29udGV4dDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIyLVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHByaXYtXHUwMDNlYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTQzPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjQ0Om10NzUzMF9yZWdtYXBfcmVhZCh2b2lkICpjb250ZXh0LCB1bnNpZ25lZCBpbnQgcmVnLCB1bnNpZ25lZCBpbnQgKnZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTQ1LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjQ2Olx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gY29udGV4dDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTQ3LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHByaXYtXHUwMDNlYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTczPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo3NDptdDc1MzBfbWRpb19yZWdtYXBfbG9jayh2b2lkICptZGlvX2xvY2spXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy03NS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9Nzk9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjgwOm10NzUzMF9tZGlvX3JlZ21hcF91bmxvY2sodm9pZCAqbWRpb19sb2NrKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtODEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTg0LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6ODU6c3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfYnVzIG10NzUzMF9yZWdtYXBfYnVzID0ge1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6ODY6XHQucmVnX3dyaXRlID0gbXQ3NTMwX3JlZ21hcF93cml0ZSxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjg3Olx0LnJlZ19yZWFkID0gbXQ3NTMwX3JlZ21hcF9yZWFkLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtODgtfTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz05MD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo5MTptdDc1MzFfY3JlYXRlX3NnbWlpKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTkyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMTItXHRcdG10NzUzMV9wY3NfY29uZmlnW2ldLVx1MDAzZW1heF9yZWdpc3RlciA9IDB4MTdjO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTEzOlx0XHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cdTAwM2Vsb2NrID0gbXQ3NTMwX21kaW9fcmVnbWFwX2xvY2s7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxMTQ6XHRcdG10NzUzMV9wY3NfY29uZmlnW2ldLVx1MDAzZXVubG9jayA9IG10NzUzMF9tZGlvX3JlZ21hcF91bmxvY2s7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMTUtXHRcdG10NzUzMV9wY3NfY29uZmlnW2ldLVx1MDAzZWxvY2tfYXJnID0gXHUwMDI2cHJpdi1cdTAwM2VidXMtXHUwMDNlbWRpb19sb2NrO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTE2LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTE3Olx0XHRyZWdtYXAgPSBkZXZtX3JlZ21hcF9pbml0KHByaXYtXHUwMDNlZGV2LCBcdTAwMjZtdDc1MzBfcmVnbWFwX2J1cywgcHJpdixcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTExOC1cdFx0XHRcdFx0ICBtdDc1MzFfcGNzX2NvbmZpZ1tpXSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTM3LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTM4OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10NzUzMF9vZl9tYXRjaFtdID0ge1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTM5LVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O21lZGlhdGVrLG10NzYyMVwmIzM0OywgLmRhdGEgPSBcdTAwMjZtdDc1M3hfdGFibGVbSURfTVQ3NjIxXSwgfSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNDMtfTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE0NDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtdDc1MzBfb2ZfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTQ1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTE1ND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNTU6bXQ3NTMwX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE1Ni17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNTc6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNTgtXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKmRuO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE3MC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE3MTpcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNzItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIwOS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIxMDpcdHByaXYtXHUwMDNlcmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdChwcml2LVx1MDAzZWRldiwgXHUwMDI2bXQ3NTMwX3JlZ21hcF9idXMsIHByaXYsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMTEtXHRcdFx0XHRcdFx1MDAyNnJlZ21hcF9jb25maWcpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTIyMT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjIyOm10NzUzMF9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjIzLXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIyNDpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZtZGlvZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMjUtXHRpbnQgcmV0ID0gMCwgaTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMzktXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNDA6XHRtdDc1MzBfcmVtb3ZlX2NvbW1vbihwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI0MS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNDUtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNDY6c3RhdGljIHZvaWQgbXQ3NTMwX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI0Ny17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNDg6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjQ5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI1Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1ODpzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIG10NzUzMF9tZGlvX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1OTpcdC5wcm9iZSAgPSBtdDc1MzBfcHJvYmUsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNjA6XHQucmVtb3ZlID0gbXQ3NTMwX3JlbW92ZSxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI2MTpcdC5zaHV0ZG93biA9IG10NzUzMF9zaHV0ZG93bixcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI2Mi1cdC5tZGlvZHJ2LmRyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI2My1cdFx0Lm5hbWUgPSBcJiMzNDttdDc1MzAtbWRpb1wmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI2NDpcdFx0Lm9mX21hdGNoX3RhYmxlID0gbXQ3NTMwX29mX21hdGNoLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjY1LVx0fSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjctXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNjg6bWRpb19tb2R1bGVfZHJpdmVyKG10NzUzMF9tZGlvX2RyaXZlcik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjktXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9MzA9bXQ3OTg4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy0zMS17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzozMjpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTMzLVx0dm9pZCBfX2lvbWVtICpiYXNlX2FkZHI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNDItXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo0MzpcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy00NC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9Njc9c3RhdGljIHZvaWQgbXQ3OTg4X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNjgte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6Njk6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTcwLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzEtXHRpZiAocHJpdilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjcyOlx0XHRtdDc1MzBfcmVtb3ZlX2NvbW1vbihwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTczLX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYz03NT1zdGF0aWMgdm9pZCBtdDc5ODhfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTc2LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjc3Olx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy03OC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzE9c3RhdGljIHN0cnVjdCBtdDc1M3hfcGNzICpwY3NfdG9fbXQ3NTN4X3BjcyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzYtLyogU3RyaW5nLCBvZmZzZXQsIGFuZCByZWdpc3RlciBzaXplIGluIGJ5dGVzIGlmIGRpZmZlcmVudCBmcm9tIDQgYnl0ZXMgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNzpzdGF0aWMgY29uc3Qgc3RydWN0IG10NzUzMF9taWJfZGVzYyBtdDc1MzBfbWliW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzgtXHRNSUJfREVTQygxLCBNVDc1MzBfUE9SVF9NSUJfVFhfRFJPUCwgXCYjMzQ7VHhEcm9wXCYjMzQ7KSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NDk9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MDptdDc1MzBfbXV0ZXhfbG9jayhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01Nj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU3Om10NzUzMF9tdXRleF91bmxvY2soc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NjM9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NDpjb3JlX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY4LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY5Olx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTk1LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjk2Olx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy05Ny19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTk5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTAwOmNvcmVfcm13KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIG1hc2ssIHUzMiBzZXQpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTAxLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTA1LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjEwNjpcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTEwNy1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTQxLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE0MjpcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTQzLX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTQ1PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTQ2OmNvcmVfc2V0KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNDcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNTE9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNTI6Y29yZV9jbGVhcihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTUzLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTU3PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNTg6bXQ3NTMwX21paV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTU5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTcxPXN0YXRpYyB1MzJcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNzI6bXQ3NTMwX21paV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZylcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNzMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xODg9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE4OTptdDc1MzBfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5MC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxOTM6XHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xOTQtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTk1Olx0cmV0ID0gbXQ3NTMwX21paV93cml0ZShwcml2LCByZWcsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTk2LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE5NzpcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTk4LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMDI9c3RhdGljIHUzMlxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIwMzpfbXQ3NTMwX3JlYWQoc3RydWN0IG10NzUzMF9kdW1teV9wb2xsICpwKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIwNC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIwNi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMDc6XHRtdDc1MzBfbXV0ZXhfbG9jayhwLVx1MDAzZXByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIwOC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMDk6XHR2YWwgPSBtdDc1MzBfbWlpX3JlYWQocC1cdTAwM2Vwcml2LCBwLVx1MDAzZXJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjEwLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIxMTpcdG10NzUzMF9tdXRleF91bmxvY2socC1cdTAwM2Vwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMTItXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIxNj1zdGF0aWMgdTMyXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjE3Om10NzUzMF9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZylcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMTgte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIxOTpcdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyMC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMjEtXHRJTklUX01UNzUzMF9EVU1NWV9QT0xMKFx1MDAyNnAsIHByaXYsIHJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjIyOlx0cmV0dXJuIF9tdDc1MzBfcmVhZChcdTAwMjZwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMjMtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMjU9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMjY6bXQ3NTMwX3JtdyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjI3LVx0ICAgdTMyIG1hc2ssIHUzMiBzZXQpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjI4LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMjk6XHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzMi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMzM6XHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzNC19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIzNj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzNzptdDc1MzBfc2V0KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzgte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzOTpcdG10NzUzMF9ybXcocHJpdiwgcmVnLCB2YWwsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQwLX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjQyPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQzOm10NzUzMF9jbGVhcihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQ0LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDU6XHRtdDc1MzBfcm13KHByaXYsIHJlZywgdmFsLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNDYtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yNDg9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI0OTptdDc1MzBfZmRiX2NtZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGVudW0gbXQ3NTMwX2ZkYl9jbWQgY21kLCB1MzIgKnJzcClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTAte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTUtXHR2YWwgPSBBVENfQlVTWSB8IEFUQ19NQVQoMCkgfCBjbWQ7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjU2Olx0cmV0ID0gbXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9BVEMsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjU3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjU5LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI2MDpcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI2MS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjY2LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI2NzpcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjY4LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yODY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyODc6bXQ3NTMwX2ZkYl9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgc3RydWN0IG10NzUzMF9mZGIgKmZkYilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yODgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yOTMtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyAzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI5NDpcdFx0cmVnW2ldID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMwX1RTUkExICYjNDM7IChpICogNCkpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI5NS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzEyPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzEzOm10NzUzMF9mZGJfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MTYgdmlkLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMxNC1cdFx0IHU4IHBvcnRfbWFzaywgY29uc3QgdTggKm1hYyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzM4LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgMzsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzM5Olx0XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX0FUQTEgJiM0MzsgKGkgKiA0KSwgcmVnW2ldKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNDAtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNDItLyogU2V0IHVwIHN3aXRjaCBjb3JlIGNsb2NrIGZvciBNVDc1MzAgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNDM6c3RhdGljIHZvaWQgbXQ3NTMwX3BsbF9zZXR1cChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzQ0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzgzPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mzg0Om10NzUzMF9zZXR1cF9wb3J0NihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzg1LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozODY6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM4Ny1cdHUzMiBuY3BvMSwgc3NjX2RlbHRhLCB4dGFsO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zOTItXHRpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSSkge1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM5MzpcdFx0bXQ3NTMwX3Jtdyhwcml2LCBNVDc1MzBfUDZFQ1IsIFA2X0lOVEZfTU9ERV9NQVNLLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM5NC1cdFx0XHQgICBQNl9JTlRGX01PREUoMCkpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zOTctXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mzk4Olx0bXQ3NTMwX3Jtdyhwcml2LCBNVDc1MzBfUDZFQ1IsIFA2X0lOVEZfTU9ERV9NQVNLLCBQNl9JTlRGX01PREUoMSkpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM5OS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0MDA6XHR4dGFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTNYX01UUkFQKSBcdTAwMjYgTVQ3NTMwX1hUQUxfTUFTSztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00MDEtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTQzNj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQzNzptdDc1MzFfcGxsX3NldHVwKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00Mzgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NDMtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDQ0Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX0NSRVYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ0NTpcdHRvcF9zaWcgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfVE9QX1NJR19TUik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDQ2Olx0aHdzdHJhcCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzWF9UUkFQKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NDctXHRpZiAoKHZhbCBcdTAwMjYgQ0hJUF9SRVZfTSkgXHUwMDNlIDApXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1NC1cdC8qIFN0ZXAgMSA6IERpc2FibGUgTVQ3NTMxIENPUkVQTEwgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NTU6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4pO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1Ni1cdHZhbCBcdTAwMjY9IH5FTl9DT1JFUExMO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ1NzpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfRU4sIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDU4LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1OS1cdC8qIFN0ZXAgMjogc3dpdGNoIHRvIFhUQUwgb3V0cHV0ICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDYwOlx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0VOKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NjEtXHR2YWwgfD0gU1dfQ0xLU1c7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDYyOlx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9FTiwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NjMtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDY0Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDY1LVx0dmFsIFx1MDAyNj0gflJHX0NPUkVQTExfRU47XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDY2Olx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDY3LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2OC1cdC8qIFN0ZXAgMzogZGlzYWJsZSBQTExHUCBhbmQgZW5hYmxlIHByb2dyYW0gUExMR1AgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0Njk6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4pO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3MC1cdHZhbCB8PSBTV19QTExHUDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NzE6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0VOLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzMtXHQvKiBTdGVwIDQ6IHByb2dyYW0gQ09SRVBMTCBvdXRwdXQgZnJlcXVlbmN5IHRvIDUwME1IeiAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ3NDpcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3NS1cdHZhbCBcdTAwMjY9IH5SR19DT1JFUExMX1BPU0RJVl9NO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3Ni1cdHZhbCB8PSAyIFx1MDAzY1x1MDAzYyBSR19DT1JFUExMX1BPU0RJVl9TO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ3NzpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3OC1cdHVzbGVlcF9yYW5nZSgyNSwgMzUpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODEtXHRjYXNlIE1UNzUzMV9YVEFMX0ZTRUxfMjVNSFo6XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDgyOlx0XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODMtXHRcdHZhbCBcdTAwMjY9IH5SR19DT1JFUExMX1NETV9QQ1dfTTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODQtXHRcdHZhbCB8PSAweDE0MDAwMCBcdTAwM2NcdTAwM2MgUkdfQ09SRVBMTF9TRE1fUENXX1M7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDg1Olx0XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODYtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ4Ny1cdGNhc2UgTVQ3NTMxX1hUQUxfRlNFTF80ME1IWjpcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0ODg6XHRcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ4OS1cdFx0dmFsIFx1MDAyNj0gflJHX0NPUkVQTExfU0RNX1BDV19NO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5MC1cdFx0dmFsIHw9IDB4MTkwMDAwIFx1MDAzY1x1MDAzYyBSR19DT1JFUExMX1NETV9QQ1dfUztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0OTE6XHRcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5Mi1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5NS1cdC8qIFNldCBmZWVkYmFjayBkaXZpZGUgcmF0aW8gdXBkYXRlIHNpZ25hbCB0byBoaWdoICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDk2Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDk3LVx0dmFsIHw9IFJHX0NPUkVQTExfU0RNX1BDV19DSEc7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDk4Olx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDk5LVx0LyogV2FpdCBmb3IgYXQgbGVhc3QgMTYgWFRBTCBjbG9ja3MgKi9cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTAyLVx0LyogU3RlcCA1OiBzZXQgZmVlZGJhY2sgZGl2aWRlIHJhdGlvIHVwZGF0ZSBzaWduYWwgdG8gbG93ICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTAzOlx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTA0LVx0dmFsIFx1MDAyNj0gflJHX0NPUkVQTExfU0RNX1BDV19DSEc7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTA1Olx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTA2LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwNy1cdC8qIEVuYWJsZSAzMjVNIGNsb2NrIGZvciBTR01JSSAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUwODpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfQU5BX1BMTEdQX0NSNSwgMHhhZDAwMDApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwOS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MTAtXHQvKiBFbmFibGUgMjUwU1NDIGNsb2NrIGZvciBSR01JSSAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUxMTpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfQU5BX1BMTEdQX0NSMiwgMHg0ZjQwMDAwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MTItXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTEzLVx0LyogU3RlcCA2OiBFbmFibGUgTVQ3NTMxIFBMTCAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUxNDpcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxNS1cdHZhbCB8PSBSR19DT1JFUExMX0VOO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUxNjpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxNy1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MTg6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4pO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxOS1cdHZhbCB8PSBFTl9DT1JFUExMO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUyMDpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfRU4sIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTIxLVx0dXNsZWVwX3JhbmdlKDI1LCAzNSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTUyND1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUyNTptdDc1MzBfbWliX3Jlc2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MjYte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUyNzpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTI4LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUyOTpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfTUlCX0NDUiwgQ0NSX01JQl9GTFVTSCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTMwOlx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9NSUJfQ0NSLCBDQ1JfTUlCX0FDVElWQVRFKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MzEtfVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUzMi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MzM6c3RhdGljIGludCBtdDc1MzBfcGh5X3JlYWRfYzIyKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTM0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTM3LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUzODpzdGF0aWMgaW50IG10NzUzMF9waHlfd3JpdGVfYzIyKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0sXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTM5LVx0XHRcdFx0dTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTQzLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU0NDpzdGF0aWMgaW50IG10NzUzMF9waHlfcmVhZF9jNDUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NDUtXHRcdFx0ICAgICAgIGludCBkZXZhZCwgaW50IHJlZ251bSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTQ5LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU1MDpzdGF0aWMgaW50IG10NzUzMF9waHlfd3JpdGVfYzQ1KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NTEtXHRcdFx0XHRpbnQgcmVnbnVtLCB1MTYgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01NTY9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU1NzptdDc1MzFfaW5kX2M0NV9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTU4LVx0XHRcdGludCByZWdudW0pXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU2Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NjM6XHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NjQtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU3My1cdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKSB8IHJlZ251bTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NzQ6XHRyZXQgPSBtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTc1LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTg2LVx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU4NzpcdHJldCA9IG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01ODgtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01OTktb3V0OlxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYwMDpcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjAxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz02MDU9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYwNjptdDc1MzFfaW5kX2M0NV9waHlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYwNy1cdFx0XHQgaW50IHJlZ251bSwgdTE2IGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYxMS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MTI6XHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MTMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYyMi1cdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKSB8IHJlZ251bTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MjM6XHRyZXQgPSBtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjI0LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjM1LVx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MzY6XHRyZXQgPSBtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjM3LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjQ3LW91dDpcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NDg6XHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY0OS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NjUzPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NTQ6bXQ3NTMxX2luZF9jMjJfcGh5X3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSlcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NTUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NTgtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjU5Olx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjYwLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NzAtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjcxOlx0cmV0ID0gbXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgdmFsIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY3Mi1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY4My1vdXQ6XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Njg0Olx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02ODUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTY4OT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjkwOm10NzUzMV9pbmRfYzIyX3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY5MS1cdFx0XHQgdTE2IGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY5NS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2OTY6XHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02OTctXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTcwNy1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3MDg6XHRyZXQgPSBtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzA5LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzE5LW91dDpcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3MjA6XHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTcyMS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NzI2PW10NzUzeF9waHlfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzI3LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3Mjg6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBidXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MjktXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTczND1tdDc1M3hfcGh5X3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgZGV2YWQsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzM1LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3MzY6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBidXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MzctXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTc0Mj1tdDc1M3hfcGh5X3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTE2IHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03NDMte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjc0NDpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc0NS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NzUwPW10NzUzeF9waHlfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgZGV2YWQsIGludCByZWdudW0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc1Mi17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NzUzOlx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzU0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz03NTg9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3NTk6bXQ3NTMwX2dldF9zdHJpbmdzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHUzMiBzdHJpbmdzZXQsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzYwLVx0XHQgICB1aW50OF90ICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03NjYtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NzY3Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShtdDc1MzBfbWliKTsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NzY4Olx0XHRldGh0b29sX3B1dHMoXHUwMDI2ZGF0YSwgbXQ3NTMwX21pYltpXS5uYW1lKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03NjktfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz03NzE9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3NzI6bXQ3NTMwX3JlYWRfcG9ydF9zdGF0cyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc3My1cdFx0ICAgICAgIHUzMiBvZmZzZXQsIHU4IHNpemUsIHVpbnQ2NF90ICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03NzYtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Nzc3Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgcmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03NzgtXHQqZGF0YSA9IHZhbDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzgwLVx0aWYgKHNpemUgPT0gMikge1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjc4MTpcdFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgcmVnICYjNDM7IDQpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc4Mi1cdFx0KmRhdGEgfD0gKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz03ODY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3ODc6bXQ3NTMwX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzg4LVx0XHRcdCB1aW50NjRfdCAqZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03ODkte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjc5MDpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NzkxOlx0Y29uc3Qgc3RydWN0IG10NzUzMF9taWJfZGVzYyAqbWliO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc5Mi1cdGludCBpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc5My1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3OTQ6XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKG10NzUzMF9taWIpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjc5NTpcdFx0bWliID0gXHUwMDI2bXQ3NTMwX21pYltpXTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03OTYtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Nzk3Olx0XHRtdDc1MzBfcmVhZF9wb3J0X3N0YXRzKHByaXYsIHBvcnQsIG1pYi1cdTAwM2VvZmZzZXQsIG1pYi1cdTAwM2VzaXplLFxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg3OTUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipEaXZpbmcgaW50byB0aGUgTWVkaWF0ZWsgRXRoZXJuZXQgRHJpdmVyKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQmIzM5O3Mgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBNZWRpYXRlayBFdGhlcm5ldCBkcml2ZXIuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIHNvIEkmIzM5O20gZ29pbmcgc3RyYWlnaHQgZm9yIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jYC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIGFuZCBob3cgdGhlIGRyaXZlciByZWdpc3RlcnMgaXRzZWxmIHdpdGggdGhlIGtlcm5lbC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhlIGhhcmR3YXJlIGlzIGRldGVjdGVkLCB0aGUgcmVzb3VyY2VzIGFyZSBhbGxvY2F0ZWQsIGFuZCB0aGUgbmV0d29yayBpbnRlcmZhY2UgaXMgYnJvdWdodCBvbmxpbmUuIEdvdCB0byBtYWtlIHN1cmUgdGhlIGNvcmUgc2V0dXAgaXMgc291bmQgYmVmb3JlIEkgZ28gZnVydGhlciBkb3duIHRoZSByYWJiaXQgaG9sZS4gVGhpcyB3aWxsIGdpdmUgbWUgdGhlIGJhc2UgdG8gd29yayBvZmYsIGFzIEkgcHJvY2VlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfcGxhdGZvcm1fZHJpdmVyfHBsYXRmb3JtX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jPTU2NzY9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb2ZfbXRrX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNTY3Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6NTY3ODpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy01Njc5LVx0LnByb2JlID0gbXRrX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNTY4Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6NTY4Nzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG10a19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy01Njg4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYz0xNzQ2PXN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhtdGtfc3Rhcl9wbV9vcHMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE3NDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM6MTc0OTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfc3Rhcl9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmMtMTc1MC1cdC5kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE3NTYtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYzoxNzU3Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobXRrX3N0YXJfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYy0xNzU4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NTA3CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhpcy4gTXkgZmlyc3QgbW92ZSBpcyB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBjb2RlLiBJJiMzOTttIHRoaW5raW5nIEkgc2hvdWxkIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgbXRrX2RyaXZlcmAgd2l0aGluIGBtdGtfZXRoX3NvYy5jYC4gVGhhdCBzaG91bGQgcHJvdmlkZSBhIGJyb2FkIG92ZXJ2aWV3LiBUaGVuLCBJIG5lZWQgdG8gbG9vayBhdCBgbXQ3NTMwYCB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwKmAgZGlyZWN0b3J5LiBUaGF0IHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgcGFpcmluZywgZ2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtLgoKT25jZSBJJiMzOTt2ZSBnb3QgdGhvc2UgZmlsZXMgaW4gZnJvbnQgb2YgbWUsIEkgbmVlZCB0byBjaGVjayB0aGUgY29ycmVzcG9uZGluZyBgS2NvbmZpZ2AgZmlsZXMgZm9yIGJvdGguIEkgd2FudCB0byBzZWUgaG93IHRoZXNlIGRyaXZlcnMgYXJlIGNvbmZpZ3VyZWQgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIHRoZXkgaGF2ZS4gVGhhdCYjMzk7bGwgdGVsbCBtZSBob3cgdGhleSBmaXQgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgYnVpbGQgYW5kIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgb3B0aW9ucyBvciBzZXR0aW5ncyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkVUX0RTQV9NVDc1MzB8TkVUX01FRElBVEVLX1NPQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvS2NvbmZpZz0yOT1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zMC1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjMxOmNvbmZpZyBORVRfRFNBX01UNzUzMFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzItXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTM0LVx0c2VsZWN0IFJFR01BUF9JUlFcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjM1Olx0aW1wbHkgTkVUX0RTQV9NVDc1MzBfTURJT1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzY6XHRpbXBseSBORVRfRFNBX01UNzUzMF9NTUlPXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zNy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy00Mi1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjQzOmNvbmZpZyBORVRfRFNBX01UNzUzMF9NRElPXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy00NC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzUzMCBNRElPIGludGVyZmFjZSBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjQ1Olx0ZGVwZW5kcyBvbiBORVRfRFNBX01UNzUzMFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNDYtXHRzZWxlY3QgTUVESUFURUtfR0VfUEhZXG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTMtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo1NDpjb25maWcgTkVUX0RTQV9NVDc1MzBfTU1JT1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTUtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgTU1JTyBpbnRlcmZhY2UgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo1NjpcdGRlcGVuZHMgb24gTkVUX0RTQV9NVDc1MzBcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTU3LVx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cbi0tXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9NT1vYmotJChDT05GSUdfTkVUX0RTQV9LUzg5OTUpIFx0JiM0Mzs9IGtzODk5NS5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTkVUX0RTQV9NVDc1MzApXHQmIzQzOz0gbXQ3NTMwLm9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19ORVRfRFNBX01UNzUzMF9NRElPKSAmIzQzOz0gbXQ3NTMwLW1kaW8ub1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX05FVF9EU0FfTVQ3NTMwX01NSU8pICYjNDM7PSBtdDc1MzAtbW1pby5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtOS1vYmotJChDT05GSUdfTkVUX0RTQV9NVDc2MjgpICYjNDM7PSBtdDc2Mjgub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc9OD1pZiBORVRfVkVORE9SX01FRElBVEVLXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjEwOmNvbmZpZyBORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0xMS1cdGRlcGVuZHMgb24gQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MTI6XHRkZWZfYm9vbCBORVRfTUVESUFURUtfU09DICE9IG5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjE0OmNvbmZpZyBORVRfTUVESUFURUtfU09DXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTE1LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgU29DIEdpZ2FiaXQgRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19ORVRfTUVESUFURUtfU09DKSAmIzQzOz0gbXRrX2V0aC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZS03LW10a19ldGgteSA6PSBtdGtfZXRoX3NvYy5vIG10a19ldGhfcGF0aC5vIG10a19wcGUubyBtdGtfcHBlX2RlYnVnZnMubyBtdGtfcHBlX29mZmxvYWQub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGU6ODptdGtfZXRoLSQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKSAmIzQzOz0gbXRrX3dlZC5vIG10a193ZWRfbWN1Lm8gbXRrX3dlZF93by5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZS05LWlmZGVmIENPTkZJR19ERUJVR19GU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGU6MTA6bXRrX2V0aC0kKENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCkgJiM0Mzs9IG10a193ZWRfZGVidWdmcy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZS0xMS1lbmRpZlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKSAmIzQzOz0gbXRrX3dlZF9vcHMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGUtMTMtb2JqLSQoQ09ORklHX05FVF9NRURJQVRFS19TVEFSX0VNQUMpICYjNDM7PSBtdGtfc3Rhcl9lbWFjLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuYz05Mj1tdGtfZmxvd19nZXRfd2RtYV9pbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICphZGRyLCBzdHJ1Y3QgbXRrX3dkbWFfaW5mbyAqaW5mbylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuYy0xMDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuYzoxMDQ6XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jLTEwNS1cdFx0cmV0dXJuIC0xO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a193ZWQuaD01Nj1zdHJ1Y3QgbXRrX3dkbWFfaW5mbyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3dlZC5oLTYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3dlZC5oOjY0OiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a193ZWQuaC02NS1zdGF0aWMgaW5saW5lIGJvb2wgbXRrX3dlZF9pc192MShzdHJ1Y3QgbXRrX3dlZF9odyAqaHcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYz01MDc9bXQ3Nl9kbWFfZ2V0X2J1ZihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEsIGludCBpZHgsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy01NDktXHRcdG10NzZfcHV0X3J4d2koZGV2LCB0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6NTUwOiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtNTUxLVx0XHQvKiB0aGUgV08gTUNVIG93bnMgdGhlIFJYIHBhdGggb25seSBvbiBXRUQgdjIsIG9uIG5ld2VyXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYz01Njk9bXQ3Nl9kbWFfZGVxdWV1ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEsIGJvb2wgZmx1c2gsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy02MTUtXHRcdFx0cmV0dXJuIE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjYxNjojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTYxNy1cdFx0Lyogb24gV0VEIHYzIHRoZSBNX0RPTkUgYml0IHNpZ25hbHMgdGhhdCBXRUQgaXMgZG9uZSByZWFkaW5nXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYz0xMDAxPW10NzZfZG1hX3J4X3Byb2Nlc3Moc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlICpxLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtMTAxMS1cdGlmICgocS1cdTAwM2VmbGFncyBcdTAwMjYgTVRfUUZMQUdfV0VEX1JST19FTikgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6MTAxMjpcdCAgICAoSVNfRU5BQkxFRChDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy0xMDEzLVx0ICAgICBtdDc2X3F1ZXVlX2lzX3dlZF90eF9mcmVlKHEpKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmg9NTI9bXQ3Nl9kbWFfaGFuZGxlX3JlYWQoc3RydWN0IG10NzZfcXVldWUgKnEsIHUzMiBvZmZzZXQsIHUzMiAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaC01My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oOjU0OiNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmgtNTUtXHRpZiAocS1cdTAwM2VmbGFncyBcdTAwMjYgTVRfUUZMQUdfV0VEKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaD04MD1tdDc2X2RtYV9oYW5kbGVfd3JpdGUoc3RydWN0IG10NzZfcXVldWUgKnEsIHUzMiBvZmZzZXQsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oLTgxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmg6ODI6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaC04My1cdGlmIChxLVx1MDAzZWZsYWdzIFx1MDAyNiBNVF9RRkxBR19XRUQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMjUwPWludCBtdDc2X3dlZF9uZXRfc2V0dXBfdGMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTI1Mi1cdFx0XHQgIHZvaWQgKnR5cGVfZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMjUzOiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEyNTQtdTMyIG10NzZfd2VkX2luaXRfcnhfYnVmKHN0cnVjdCBtdGtfd2VkX2RldmljZSAqd2VkLCBpbnQgc2l6ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTI2OD1zdGF0aWMgaW5saW5lIGludCBtdDc2X3dlZF9kbWFfc2V0dXAoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlICpxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEyNzItfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTI3MzojZW5kaWYgLyogQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjc0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTEyOTc9c3RhdGljIGlubGluZSBzdHJ1Y3QgbXQ3Nl9kZXYgKm10NzZfd2VkX3RvX2RldihzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEyOTgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTI5OTojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMzAwLVx0aWYgKHdlZC1cdTAwM2V3bGFuLmhpZjIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMzAxLVx0XHRyZXR1cm4gY29udGFpbmVyX29mKHdlZCwgc3RydWN0IG10NzZfZGV2LCBtbWlvLndlZF9oaWYyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEzMDI6I2VuZGlmIC8qIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTMwMy1cdHJldHVybiBjb250YWluZXJfb2Yod2VkLCBzdHJ1Y3QgbXQ3Nl9kZXYsIG1taW8ud2VkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmM9MTY4ND1tdDc5MTVfc2V0X3JhZGFyX2JhY2tncm91bmQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTE3MzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmM6MTczMjojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTczMy1zdGF0aWMgaW50XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jPTE3NzY9Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbXQ3OTE1X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTgyOS1cdC5zZXRfcmFkYXJfYmFja2dyb3VuZCA9IG10NzkxNV9zZXRfcmFkYXJfYmFja2dyb3VuZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYzoxODMwOiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYy0xODMxLVx0Lm5ldF9maWxsX2ZvcndhcmRfcGF0aCA9IG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGgsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MTgwMz1pbnQgbXQ3OTE1X21jdV93ZWRfZW5hYmxlX3J4X3N0YXRzKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0xODA0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjE4MDU6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMTgwNi1cdHN0cnVjdCBtdGtfd2VkX2RldmljZSAqd2VkID0gXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jPTU2NT1zdGF0aWMgdTMyIG10NzkxNV9ybXcoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1MzIgb2Zmc2V0LCB1MzIgbWFzaywgdTMyIHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtNTc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jOjU4MDojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtNTgxLXN0YXRpYyB2b2lkIG10NzkxNV9tbWlvX3dlZF91cGRhdGVfcnhfc3RhdHMoc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jPTYzMz1pbnQgbXQ3OTE1X21taW9fd2VkX2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdm9pZCAqcGRldl9wdHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTYzNS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM6NjM2OiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy02MzctXHRzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCA9IFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz04MzM9c3RhdGljIHZvaWQgbXQ3OTk2X3Jyb19od19pbml0X3YzKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTg0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo4NDE6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTg0Mi1cdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSBcdTAwMjZcdTAwMjYgbXRrX3dlZF9nZXRfcnhfY2FwYSh3ZWQpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTg1NC1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo4NTU6I2VuZGlmIC8qIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTg1Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9OTU3PXN0YXRpYyBpbnQgbXQ3OTk2X3dlZF9ycm9faW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMDA1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjEwMDY6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTEwMDctXHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpIFx1MDAyNlx1MDAyNlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMDEzLVx0XHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6MTAxNDojZW5kaWYgLyogQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTAxNS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM9MjM5OD1tdDc5OTZfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNDMxLVx0cGF0aC1cdTAwM2VkZXYgPSBjdHgtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jOjI0MzI6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI0MzMtXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI0NTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM6MjQ1NjojaWYgZGVmaW5lZChDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQpIHx8IGRlZmluZWQoQ09ORklHX01UNzk5Nl9OUFUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjQ1Ny1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM9MjQ1OD1tdDc5OTZfbmV0X3NldHVwX3RjKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNDYxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYzoyNDYyOiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNDYzLVx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldiA9IG10Nzk5Nl9od19kZXYoaHcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYz0yNTQ1PWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG10Nzk5Nl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI1OTktXHQubmV0X2ZpbGxfZm9yd2FyZF9wYXRoID0gbXQ3OTk2X25ldF9maWxsX2ZvcndhcmRfcGF0aCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYzoyNjAwOiNpZiBkZWZpbmVkKENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCkgfHwgZGVmaW5lZChDT05GSUdfTVQ3OTk2X05QVSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNjAxLVx0Lm5ldF9zZXR1cF90YyA9IG10Nzk5Nl9uZXRfc2V0dXBfdGMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jPTQzNj1zdGF0aWMgdTMyIG10Nzk5Nl9ybXcoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1MzIgb2Zmc2V0LCB1MzIgbWFzaywgdTMyIHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtNDUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jOjQ1MTojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtNDUyLXN0YXRpYyBpbnQgbXQ3OTk2X21taW9fd2VkX3Jlc2V0KHN0cnVjdCBtdGtfd2VkX2RldmljZSAqd2VkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYz00ODI9aW50IG10Nzk5Nl9tbWlvX3dlZF9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHZvaWQgKnBkZXZfcHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy00ODQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jOjQ4NTojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtNDg2LVx0c3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQgPSBcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM9OTMwPWludCBtdDc2X3Rva2VuX2NvbnN1bWUoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3R4d2lfY2FjaGUgKipwdHh3aSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtOTQ3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjk0ODojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtOTQ5LVx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbW1pby53ZWQpIFx1MDAyNlx1MDAyNlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYz05ODI9bXQ3Nl90b2tlbl9yZWxlYXNlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgdG9rZW4sIGJvb2wgKndha2UpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTk5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYzo5OTg6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTk5OS1cdFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbW1pby53ZWQpIFx1MDAyNlx1MDAyNlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmM9Mjk9RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl93ZWRfcmVsZWFzZV9yeF9idWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYy0zMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmM6MzE6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYy0zMi11MzIgbXQ3Nl93ZWRfaW5pdF9yeF9idWYoc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQsIGludCBzaXplKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmM9MTY3PUVYUE9SVF9TWU1CT0xfR1BMKG10NzZfd2VkX2RtYV9zZXR1cCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jOjE2ODojZW5kaWYgLypDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmMtMTY5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODc3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCB0aGlzIHRhc2ssIHRoaW5raW5nIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6CgoqKkludmVzdGlnYXRpbmcgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbnMqKgoKQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIG5ldHdvcmsgZHJpdmVyIGxhbmRzY2FwZSBoZXJlLiBNeSBmaXJzdCBtb3ZlIGlzIHRvIGNoZWNrIG91dCBgZHJpdmVycy9uZXQvZHNhL0tjb25maWdgIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZ2AuIFRoZXNlIGNvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIHRoZSBrZXlzIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyBhbmQgdGFyZ2V0IHBsYXRmb3JtcyBmb3IgdGhlc2UgbmV0d29yayBkZXZpY2UgZHJpdmVycy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluOgoKKiAgIFdoYXQgb3RoZXIga2VybmVsIGZlYXR1cmVzIG9yIGhhcmR3YXJlIGNvbXBvbmVudHMgYXJlIHRoZXNlIERTQSBhbmQgTWVkaWF0ZWsgRXRoZXJuZXQgZHJpdmVycyBkZXBlbmRlbnQgdXBvbj8gQXJlIHRoZXJlIHNwZWNpZmljIFBIWXMsIG90aGVyIG5ldHdvcmtpbmcgc3Vic3lzdGVtcywgb3IgYm9hcmQtbGV2ZWwgY29uZmlndXJhdGlvbnMgaW52b2x2ZWQ/CiogICBXaGljaCBTb0NzIGFuZCBwbGF0Zm9ybXMgYXJlIHRoZXNlIGRyaXZlcnMgcHJpbWFyaWx5IGRlc2lnbmVkIGZvcj8gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGVpciBpbnRlbmRlZCB1c2UgY2FzZXMgYW5kIGhvdyBicm9hZGx5IHRoZXkmIzM5O3JlIGFwcGxpY2FibGUuCgpLbm93aW5nIHRoZSBhbnN3ZXJzIHRvIHRoZXNlIHF1ZXN0aW9ucyB3aWxsIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciBldmFsdWF0aW5nIGhvdyB0aGVzZSBkcml2ZXJzIGZpdCBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZSBhbmQgYW55IGNvbXBhdGliaWxpdHkgY29uc2lkZXJhdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhlc2UgY29uZmlndXJhdGlvbiBkZXRhaWxzIGlzIGVzc2VudGlhbCBmb3IgYW55IGRlZXBlciBhbmFseXNpcyBvciBtb2RpZmljYXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgS2NvbmZpZyBmaWxlcyByZXZlYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDMwOlx0XG4gIDMxOlx0Y29uZmlnIE5FVF9EU0FfTVQ3NTMwXG4gIDMyOlx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuICAzMzpcdFx0c2VsZWN0IE5FVF9EU0FfVEFHX01US1xuICAzNDpcdFx0c2VsZWN0IFJFR01BUF9JUlFcbiAgMzU6XHRcdGltcGx5IE5FVF9EU0FfTVQ3NTMwX01ESU9cbiAgMzY6XHRcdGltcGx5IE5FVF9EU0FfTVQ3NTMwX01NSU9cbiAgMzc6XHRcdGhlbHBcbiAgMzg6XHRcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBFdGhlcm5ldFxuICAzOTpcdFx0ICBzd2l0Y2ggY2hpcHMuIE11bHRpLWNoaXAgbW9kdWxlIE1UNzUzMCBpbiBNVDc2MjFBVCwgTVQ3NjIxREFULFxuICA0MDpcdFx0ICBNVDc2MjFTVCBhbmQgTVQ3NjIzQUkgU29DcywgYW5kIGJ1aWx0LWluIHN3aXRjaCBpbiBNVDc5ODggU29DIGFyZVxuICA0MTpcdFx0ICBzdXBwb3J0ZWQgYXMgd2VsbC5cbiAgNDI6XHRcbiAgNDM6XHRjb25maWcgTkVUX0RTQV9NVDc1MzBfTURJT1xuICA0NDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NTMwIE1ESU8gaW50ZXJmYWNlIGRyaXZlclwmIzM0O1xuICA0NTpcdFx0ZGVwZW5kcyBvbiBORVRfRFNBX01UNzUzMFxuICA0NjpcdFx0c2VsZWN0IE1FRElBVEVLX0dFX1BIWVxuICA0NzpcdFx0c2VsZWN0IFBDU19NVEtfTFlOWElcbiAgNDg6XHRcdGhlbHBcbiAgNDk6XHRcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBzd2l0Y2hcbiAgNTA6XHRcdCAgY2hpcHMgd2hpY2ggYXJlIGNvbm5lY3RlZCB2aWEgTURJTywgYXMgd2VsbCBhcyBtdWx0aS1jaGlwXG4gIDUxOlx0XHQgIG1vZHVsZSBNVDc1MzAgd2hpY2ggY2FuIGJlIGZvdW5kIGluIHRoZSBNVDc2MjFBVCwgTVQ3NjIxREFULFxuICA1MjpcdFx0ICBNVDc2MjFTVCBhbmQgTVQ3NjIzQUkgU29Dcy5cbiAgNTM6XHRcbiAgNTQ6XHRjb25maWcgTkVUX0RTQV9NVDc1MzBfTU1JT1xuICA1NTpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NTMwIE1NSU8gaW50ZXJmYWNlIGRyaXZlclwmIzM0O1xuICA1NjpcdFx0ZGVwZW5kcyBvbiBORVRfRFNBX01UNzUzMFxuICA1NzpcdFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cbiAgNTg6XHRcdGltcGx5IE1FRElBVEVLX0dFX1NPQ19QSFlcbiAgNTk6XHRcdGhlbHBcbiAgNjA6XHRcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBidWlsdC1pbiBFdGhlcm5ldCBzd2l0Y2ggZm91bmRcbiAgNjE6XHRcdCAgaW4gdGhlIE1lZGlhVGVrIE1UNzk4OCBTb0MuXG4gIDYyOlx0XHQgIFRoZSBzd2l0Y2ggaXMgYSBzaW1pbGFyIGRlc2lnbiBhcyBNVDc1MzEsIGJ1dCB0aGUgc3dpdGNoIHJlZ2lzdGVyc1xuICA2MzpcdFx0ICBhcmUgZGlyZWN0bHkgbWFwcGVkIGludG8gdGhlIFNvQ3MgcmVnaXN0ZXIgc3BhY2UgcmF0aGVyIHRoYW4gYmVpbmdcbiAgNjQ6XHRcdCAgYWNjZXNzaWJsZSB2aWEgTURJTy5cbiAgNjU6XHRcbiAgNjY6XHRjb25maWcgTkVUX0RTQV9NVDc2MjhcbiAgNjc6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzYyOCBFbWJlZGRlZCBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuICA2ODpcdFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IChTT0NfTVQ3NjIwIHx8IENPTVBJTEVfVEVTVClcbiAgNjk6XHRcdHNlbGVjdCBORVRfRFNBX1RBR19NVDc2MjhcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY5MTkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipFeGFtaW5pbmcgdGhlIE1lZGlhdGVrIEV0aGVybmV0IEtjb25maWcgRmlsZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIE1lZGlhdGVrIEV0aGVybmV0IGRyaXZlciBjb25maWd1cmF0aW9uLiBMZXQmIzM5O3Mgc3RhcnQgYnkgdGFraW5nIGEgbG9vayBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZ2AuIEkmIzM5O20gZ3Vlc3NpbmcgdGhpcyBmaWxlIHdpbGwgcHJvdmlkZSB0aGUgZm91bmRhdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGRyaXZlciDigJMgdGhpbmdzIGxpa2UgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBkcml2ZXIsIHNlbGVjdGluZyBzcGVjaWZpYyBNZWRpYXRlayBFdGhlcm5ldCBjb250cm9sbGVyIG1vZGVscywgcG90ZW50aWFsbHkgb3B0aW9ucyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZXMgb3IgdmFyaWF0aW9ucywgYW5kIHByb2JhYmx5IGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGNvbXBvbmVudHMuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3RydWN0dXJlIGFuZCBkZXBlbmRlbmNpZXMgZGVmaW5lZCBoZXJlIHRvIHByb3Blcmx5IGNvbmZpZ3VyZSBhbmQgcG9zc2libHkgdHJvdWJsZXNob290IGFueXRoaW5nIHJlbGF0ZWQgdG8gTWVkaWF0ZWsgRXRoZXJuZXQgY29udHJvbGxlcnMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIHRoZSBkZWZhdWx0IHNldHRpbmdzLCBhbnkgY29uZGl0aW9uYWwgY29uZmlndXJhdGlvbnMsIGFuZCBwYXJ0aWN1bGFybHkgYW55IHRyaWNreSBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBuZXR3b3JraW5nIG9yIGhhcmR3YXJlIHN1YnN5c3RlbXMuIEhvcGVmdWxseSwgaXTigJlzIHdlbGwtb3JnYW5pemVkIGFuZCBjbGVhcmx5IGRvY3VtZW50ZWQsIGJ1dCBJJiMzOTttIHByZXBhcmVkIGZvciBhIGJpdCBvZiBhIGRlZXAgZGl2ZSBpZiBuZWNlc3NhcnkuIEl0JiMzOTtzIHRpbWUgdG8gZ2V0IGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBmcmFtZXdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBORVRfVkVORE9SX01FRElBVEVLXG4gICAzOlx0XHRib29sIFwmIzM0O01lZGlhVGVrIGRldmljZXNcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gQVJDSF9NRURJQVRFSyB8fCBBUkNIX0FJUk9IQSB8fCBTT0NfTVQ3NjIxIHx8IFNPQ19NVDc2MjAgfHwgQ09NUElMRV9URVNUXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIElmIHlvdSBoYXZlIGEgTWVkaWF0ZWsgU29DIHdpdGggZXRoZXJuZXQsIHNheSBZLlxuICAgNzpcdFxuICAgODpcdGlmIE5FVF9WRU5ET1JfTUVESUFURUtcbiAgIDk6XHRcbiAgMTA6XHRjb25maWcgTkVUX01FRElBVEVLX1NPQ19XRURcbiAgMTE6XHRcdGRlcGVuZHMgb24gQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1RcbiAgMTI6XHRcdGRlZl9ib29sIE5FVF9NRURJQVRFS19TT0MgIT0gblxuICAxMzpcdFxuICAxNDpcdGNvbmZpZyBORVRfTUVESUFURUtfU09DXG4gIDE1Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBTb0MgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4gIDE2Olx0XHRkZXBlbmRzIG9uIE5FVF9EU0EgfHwgIU5FVF9EU0FcbiAgMTc6XHRcdHNlbGVjdCBQSU5DVFJMXG4gIDE4Olx0XHRzZWxlY3QgUEhZTElOS1xuICAxOTpcdFx0c2VsZWN0IERJTUxJQlxuICAyMDpcdFx0c2VsZWN0IEdFTkVSSUNfQUxMT0NBVE9SXG4gIDIxOlx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDIyOlx0XHRzZWxlY3QgUEFHRV9QT09MX1NUQVRTXG4gIDIzOlx0XHRzZWxlY3QgUENTX01US19MWU5YSVxuICAyNDpcdFx0c2VsZWN0IFJFR01BUF9NTUlPXG4gIDI1Olx0XHRoZWxwXG4gIDI2Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBnaWdhYml0IGV0aGVybmV0IE1BQ3MgaW4gdGhlXG4gIDI3Olx0XHQgIE1lZGlhVGVrIFNvQyBmYW1pbHkuXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIE5FVF9NRURJQVRFS19TVEFSX0VNQUNcbiAgMzA6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIFNUQVIgRXRoZXJuZXQgTUFDIHN1cHBvcnRcJiMzNDtcbiAgMzE6XHRcdHNlbGVjdCBQSFlMSUJcbiAgMzI6XHRcdHNlbGVjdCBSRUdNQVBfTU1JT1xuICAzMzpcdFx0aGVscFxuICAzNDpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgZXRoZXJuZXQgTUFDIElQIGZpcnN0IHVzZWQgb25cbiAgMzU6XHRcdCAgTWVkaWFUZWsgTVQ4NSoqIFNvQ3MuXG4gIDM2Olx0XG4gIDM3Olx0ZW5kaWYgI05FVF9WRU5ET1JfTUVESUFURUtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc2ODQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNZWRpYXRlayBFdGhlcm5ldCBTT0MgRHJpdmVyKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBtdGtfZXRoX3NvYy5jYCBkcml2ZXIuIEZyb20gd2hhdCBJJiMzOTttIHNlZWluZywgdGhpcyBpcyB0aGUgZ28tdG8gZHJpdmVyIGZvciBgTkVUX01FRElBVEVLX1NPQ2AuIEl0cyBwdXJwb3NlIGlzIHRvIGhhbmRsZSB0aGUgTWVkaWF0ZWsgU3lzdGVtLW9uLUNoaXAgZXRoZXJuZXQgY29udHJvbGxlcnMsIHNwZWNpZmljYWxseSB0aGUgb25lcyB0aGF0IGFyZSBkZXNjcmliZWQgdXNpbmcgT0YgZGV2aWNlIHRyZWVzLiBJJiMzOTttIHNlZWluZyBpdCYjMzk7cyBkZXNpZ25lZCB0byBpbnRlcmZhY2Ugd2l0aCBkZXZpY2VzIGRlc2NyaWJlZCB3aXRoIHRoaW5ncyBsaWtlIGBtZWRpYXRlayxtdDI3MDEtZXRoYCwgYG1lZGlhdGVrLG10NzYyMi1ldGhgLCBgbWVkaWF0ZWssbXQ3NjIzLWV0aGAsIGFuZCBgbWVkaWF0ZWssbXQ3OTg2LWV0aGAgYW5kIHNpbWlsYXIgZGV2aWNlIHRyZWUgZW50cmllcy4gTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGRyaXZlciYjMzk7cyBPRiBtYXRjaCB0YWJsZS4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVuczsgd2hlcmUgaXQgZGVjaWRlcyB3aGljaCBzcGVjaWZpYyBNZWRpYXRlayBldGhlcm5ldCBoYXJkd2FyZSBpdCYjMzk7cyBzdXBwb3NlZCB0byBtYW5hZ2UgYmFzZWQgb24gdGhlIGRldmljZSB0cmVlIG5vZGUgaW5mb3JtYXRpb24uIFRoYXQmIzM5O2xsIGJlIGtleSB0byBmaWd1cmluZyBvdXQgaG93IGl0JiMzOTtzIHN0cnVjdHVyZWQgdG8gd29yayB3aXRoIHRoZSBkaWZmZXJlbnQgU09Dcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2ZfbXRrX21hdGNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM9NTY0MT1zdGF0aWMgY29uc3Qgc3RydWN0IG10a19zb2NfZGF0YSBydDUzNTBfZGF0YSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTU2NjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjU2NjQ6Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9tdGtfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNTY2NS1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDttZWRpYXRlayxtdDI3MDEtZXRoXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNm10MjcwMV9kYXRhIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy01Njc1LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjU2NzY6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb2ZfbXRrX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNTY3Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM9NTY3OD1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNTY4Mi1cdFx0Lm5hbWUgPSBcJiMzNDttdGtfc29jX2V0aFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6NTY4MzpcdFx0Lm9mX21hdGNoX3RhYmxlID0gb2ZfbXRrX21hdGNoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy01Njg0LVx0fSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oPTEzNjk9c3RydWN0IG10a19tYWMge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmgtMTM4NS0vKiB0aGUgc3RydWN0IGRlc2NyaWJpbmcgdGhlIFNvQy4gdGhlc2UgYXJlIGRlY2xhcmVkIGluIHRoZSBzb2NfeHl6LmMgZmlsZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmg6MTM4NjpleHRlcm4gY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9tdGtfbWF0Y2hbXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmgtMTM4Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg2MDkKCQkJCQkJCW91dHB1dDogMTcwCgkJCQkJCQl0aG91Z2h0czogMTEzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiBSZWFjaGFiaWxpdHkgZm9yIEZ1enppbmc6IE1lZGlhVGVrIEV0aGVybmV0IERyaXZlcnMgb24gYW1kNjQqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBpcyB0byBkZXRlcm1pbmUgaWYgd2UgY2FuIGVmZmVjdGl2ZWx5IGZ1enogdGhlc2UgTWVkaWFUZWsgZHJpdmVycywgYG10NzUzMGAgYW5kIGBtdGtfZXRoX3NvY2AsIG9uIGFuIGFtZDY0IHBsYXRmb3JtIHdpdGhpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQuIEFzIGFuIGV4cGVydCwgSSBrbm93IHRoYXQgcmVhY2hhYmlsaXR5IGlzICp0aGUqIGtleSBmYWN0b3IuIElmIHRoZSBjb2RlIGNhbiYjMzk7dCBleGVjdXRlLCBmdXp6aW5nIGlzIGEgd2FzdGUgb2YgcmVzb3VyY2VzLgoKRmlyc3QsIGBtdDc1MzBgLiBUaGlzIGlzIGEgRFNBIHN3aXRjaCBkcml2ZXIuIEl0JiMzOTtzIGRlc2lnbmVkIHRvIHByb2JlIHZpYSBNRElPIGJ1c2VzICh1c2luZyBgbXQ3NTMwLW1kaW8uY2ApIG9yIHBsYXRmb3JtIGRldmljZXMgKGBtdDc1MzAtbW1pby5jYCksIGFuZCBpdCByZWxpZXMgb24gc3BlY2lmaWMgZGV2aWNlIHRyZWUgY29tcGF0aWJsZSBzdHJpbmdzLiBUaGVzZSBzdHJpbmdzIGlkZW50aWZ5IGl0IGFzIGJlbG9uZ2luZyB0byB0aGUgTWVkaWFUZWsgZmFtaWx5IChNVDc2MjEsIE1UNzUzMCwgTVQ3NTMxLCBldGMuKSBvciB0aGUgQWlyb2hhIEVONzU4MC4gRFNBIGRyaXZlcnMsIGZ1bmRhbWVudGFsbHksIG5lZWQgYSBEZXZpY2UgVHJlZSAob3IgTU1JTykuIFRoaXMgcmVxdWlyZXMgYSBjb25uZWN0aW9uLCBhdCBtaW5pbXVtLCB0byBhbiBNRElPIGJ1cyBhbmQgYSBEU0EgbWFzdGVyIG5ldGRldi4KClRoZW4sIHdlIGhhdmUgYG10a19ldGhfc29jLmNgLiBUaGlzIGlzIGEgTWVkaWFUZWsgcGxhdGZvcm0gZHJpdmVyLCBtYXRjaGluZyBpdHMgZGV2aWNlIHRyZWUgZW50cmllczogYG10MjcwMS1ldGhgLCBgbXQ3NjIyLWV0aGAsIGBtdDc2MjMtZXRoYCwgYW5kIHNvIG9uLCB1cCB0byBgbXQ3OTg4LWV0aGAuIFRoZXNlIG1hdGNoIGZvciBzcGVjaWZpYyBNZWRpYVRlayBTb0NzLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogYXJlIHRoZXNlIGRyaXZlcnMgKnN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSogb24gYW1kNjQ/IFRoZSBmdXp6aW5nIGd1aWRlbGluZXMgYXJlIGNsZWFyLiBDb2RlIGlzIGNvbnNpZGVyZWQgdW5yZWFjaGFibGUgaWYgaXQgcmVxdWlyZXMgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGVudmlyb25tZW50cy4gVGhpcyBpbmNsdWRlcyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBHUFUgZHJpdmVycyB0aGF0IHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgQVNJQ3Mgb3IgUENJIGNhcmRzLgoKSW4gdGhpcyBzcGVjaWZpYyBzY2VuYXJpbywgSSBuZWVkIHRvIGV2YWx1YXRlIHRoZSBlbnZpcm9ubWVudC4gRG8gd2UgaGF2ZSB2aXJ0dWFsIGRldmljZXMsIFBDSSBkZXZpY2VzLCBVU0IgZGV2aWNlcywgb3IgbW9ja3MgYXZhaWxhYmxlIGZvciBNZWRpYVRlayBTb0MgRXRoZXJuZXQgb3IgdGhlIE1UNzUzMCBEU0Egc3dpdGNoIGluIFFFTVUgeDg2XzY0PyBOby4gVGhlIGBtdDc1MzBgIGlzIGEgc3dpdGNoIGNoaXAgZGVzaWduZWQgZm9yIE1lZGlhVGVrIEFSTS9NSVBTIHJvdXRlcnMgYW5kIGdhdGV3YXlzLiBUaGUgYG10a19ldGhfc29jYCBpcyB0aGUgaW50ZWdyYXRlZCBFdGhlcm5ldCBjb250cm9sbGVyICpvbiogTWVkaWFUZWsgU29DcyBsaWtlIE1UNzYyMSwgTVQ3NjIyLCBNVDc2MjMsIE1UNzk4MSwgTVQ3OTg2LCBhbmQgTVQ3OTg4LiBUaGVzZSBhcmUgdmVyeSBTb0Mtc3BlY2lmaWMgcGxhdGZvcm0vT0YvTURJTyBkZXZpY2VzLiBUaGV5ICpyZXF1aXJlKiB0aGUgc3BlY2lmaWMgTWVkaWFUZWsgU29DIGhhcmR3YXJlICphbmQqIGEgcmVsZXZhbnQgRFRTIGZpbGUgZm9yIHRoYXQgcGFydGljdWxhciBoYXJkd2FyZS4gUUVNVSBydW5uaW5nIG9uIGFtZDY0LCBlc3BlY2lhbGx5IGluIGEgc3RhbmRhcmQgY29uZmlndXJhdGlvbiwgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGVzZSBTb0NzLgoKU28sIGNhbiBlaXRoZXIgZHJpdmVyIGJlIHByb2JlZCBvciBleGVjdXRlZCBvbiBhbWQ2NCAqd2l0aG91dCogYWN0dWFsIE1lZGlhVGVrIGhhcmR3YXJlPyBUaGUgYW5zd2VyIGlzIGEgZGVmaW5pdGl2ZSBuby4gTmVpdGhlciBkcml2ZXIgaXMgUENJIG9yIFVTQi4gTmVpdGhlciBpcyBpbnN0YW50aWF0ZWQgdmlhIGFueSB2aXJ0dWFsIGJ1cy4gVGhlIHRhcmdldCBhcmNoaXRlY3R1cmUsIGNvbmZpcm1lZCBpbiB0aGUgcHJvbXB0LCBpcyBhbWQ2NC4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIGRvdWJsZS1jaGVjay4gVGhlIHBhdGNoIG1vZGlmaWVzIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY2AsIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaGAuIFRoZXNlIGFyZSAqYWxsKiBwYXJ0IG9mIHRoZSBNZWRpYVRlayBFdGhlcm5ldC9EU0Egc3dpdGNoIGRyaXZlciBzdWl0ZSBkZXNpZ25lZCBzcGVjaWZpY2FsbHkgZm9yIE1lZGlhVGVrIFNvQ3MuIFRoZXkgcmVxdWlyZSB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgb3IgYSBkZXZpY2UtdHJlZSB0aGF0IGRlc2NyaWJlcyB0aGlzIHBsYXRmb3JtLgoKVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzIHRoYXQgdGhpcyBmYWxscyBzcXVhcmVseSBpbnRvIHRoZSAmIzM0O3N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSYjMzQ7IGNhdGVnb3J5IG9uIGFtZDY0LiBUaGUgY29kZSBtb2RpZmljYXRpb25zIGFyZSBub3QgcmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudC4KCk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoZSBgbXRrX2V0aF9zb2NgIGFuZCBgbXQ3NTMwYCBkcml2ZXJzIGFyZSBwbGF0Zm9ybS9PRi1iYXNlZCBkcml2ZXJzIGZvciBNZWRpYVRlayBBUk0vTUlQUyBTb0MgaGFyZHdhcmUuIFRoZXkgbmVlZCB0aGUgcGh5c2ljYWwgTWVkaWFUZWsgU29DcyBvciBTb0Mtc3BlY2lmaWMgZGV2aWNlIHRyZWUgYmluZGluZ3MgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgYW1kNjQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnQuIFRoaXMgbWFrZXMgdGhlbSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcgb24gYW1kNjQuIEkmIzM5O20gZ29pbmcgdG8gc2V0IHRoZSByZXN1bHQgdG8gcmVmbGVjdCB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWRpYVRlayBHaWdhYml0IEV0aGVybmV0IFNvQyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMpIGFuZCB0aGUgTWVkaWFUZWsgTVQ3NTMwIHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYykuIFRoZXNlIGRyaXZlcnMgYXJlIHNwZWNpZmljIHRvIE1lZGlhVGVrIEFSTS9NSVBTIFNvQ3MgKHN1Y2ggYXMgTVQ3NjIxLCBNVDc5ODEsIE1UNzk4NiwgTVQ3OTg4KSBhbmQgcmVxdWlyZSBTb0Mtc3BlY2lmaWMgZGV2aWNlIHRyZWVzIGFuZCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiBhbWQ2NC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWRpYVRlayBHaWdhYml0IEV0aGVybmV0IFNvQyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMpIGFuZCB0aGUgTWVkaWFUZWsgTVQ3NTMwIHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYykuIFRoZXNlIGRyaXZlcnMgYXJlIHNwZWNpZmljIHRvIE1lZGlhVGVrIEFSTS9NSVBTIFNvQ3MgKHN1Y2ggYXMgTVQ3NjIxLCBNVDc5ODEsIE1UNzk4NiwgTVQ3OTg4KSBhbmQgcmVxdWlyZSBTb0Mtc3BlY2lmaWMgZGV2aWNlIHRyZWVzIGFuZCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiBhbWQ2NC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjM4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODozNzo1MS40MzUzNTE2MDhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTc5MjAzNzI3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWRpYVRlayBHaWdhYml0IEV0aGVybmV0IFNvQyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMpIGFuZCB0aGUgTWVkaWFUZWsgTVQ3NTMwIHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYykuIFRoZXNlIGRyaXZlcnMgYXJlIHNwZWNpZmljIHRvIE1lZGlhVGVrIEFSTS9NSVBTIFNvQ3MgKHN1Y2ggYXMgTVQ3NjIxLCBNVDc5ODEsIE1UNzk4NiwgTVQ3OTg4KSBhbmQgcmVxdWlyZSBTb0Mtc3BlY2lmaWMgZGV2aWNlIHRyZWVzIGFuZCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiBhbWQ2NC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjM3OjUxLjQzNTM1NjM0OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY1NjY0MDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgY2MyYTQyZDM3MDMxNjU4ODFkNDVjMjdiNDUxY2Y0MDIzNTJhZWFhMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIFNlcCA0IDE4OjM3OjUwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xcbmluZGV4IDJiN2JlMDkxYzA1NmUuLjNlNjFlYjNjMmIxZTIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXFxuQEAgLTMxNzIsMjMgKzMxNzIsMzEgQEAgc3RhdGljIHZvaWQgbXQ3NTN4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG4gXFxuIFxcdGNvbmZpZy1cXHUwMDNlbWFjX2NhcGFiaWxpdGllcyA9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVTRTtcXG4gXFxuK1xcdHByaXYtXFx1MDAzZWluZm8tXFx1MDAzZW1hY19wb3J0X2dldF9jYXBzKGRzLCBwb3J0LCBjb25maWcpO1xcbitcXG4gXFx0LyogVGhlIEVONzUyOCBHUEhZcyByZXBvcnQgRUVFIGNhcGFiaWxpdHksIGJ1dCBuZWdvdGlhdGluZyBFRUUgd2l0aFxcbiBcXHQgKiBjb21tb24gbGluayBwYXJ0bmVycyAoZS5nLiBSZWFsdGVrIEdiRSBOSUNzKSByZXN1bHRzIGluIGFuIHVuc3RhYmxlXFxuIFxcdCAqIGxpbmsgd2l0aCBkcm9wcGVkIGZyYW1lcy4gTGVhdmUgdGhlIExQSSBjYXBhYmlsaXRpZXMgZW1wdHkgc28gdGhhdFxcbiBcXHQgKiBwaHlsaW5rIGRpc2FibGVzIEVFRSBvbiB0aGVzZSBQSFlzIGFuZCByZWZ1c2VzIHRvIGVuYWJsZSBpdCBmcm9tXFxuIFxcdCAqIHVzZXJzcGFjZS5cXG4gXFx0ICovXFxuLVxcdGlmIChwcml2LVxcdTAwM2VpZCAhPSBJRF9FTjc1MjgpIHtcXG4rXFx0aWYgKHByaXYtXFx1MDAzZWlkICE9IElEX0VONzUyOCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgY29uZmlnLVxcdTAwM2VtYWNfY2FwYWJpbGl0aWVzIFxcdTAwMjYgKE1BQ18xMDBGRCB8IE1BQ18xMDAwRkQpKSB7XFxuIFxcdFxcdHUzMiBlZWVjciA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzWF9QTUVFRUNSX1AocG9ydCkpO1xcbiBcXG4tXFx0XFx0Y29uZmlnLVxcdTAwM2VscGlfY2FwYWJpbGl0aWVzID0gTUFDXzEwMEZEIHwgTUFDXzEwMDBGRCB8IE1BQ18yNTAwRkQ7XFxuK1xcdFxcdC8qIExQSSBhYm92ZSAxIEdicHMgaXMgbm90IHN1cHBvcnRlZCAqL1xcbitcXHRcXHRjb25maWctXFx1MDAzZWxwaV9jYXBhYmlsaXRpZXMgPSBjb25maWctXFx1MDAzZW1hY19jYXBhYmlsaXRpZXMgXFx1MDAyNlxcbitcXHRcXHRcXHRcXHRcXHQgICAoTUFDXzEwMEZEIHwgTUFDXzEwMDBGRCk7XFxuK1xcdFxcdHBoeV9pbnRlcmZhY2VfY29weShjb25maWctXFx1MDAzZWxwaV9pbnRlcmZhY2VzLFxcbitcXHRcXHRcXHRcXHQgICBjb25maWctXFx1MDAzZXN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG4rXFx0XFx0X19jbGVhcl9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCxcXG4rXFx0XFx0XFx0ICAgIGNvbmZpZy1cXHUwMDNlbHBpX2ludGVyZmFjZXMpO1xcbitcXG4gXFx0XFx0LyogdHhfbHBpX3RpbWVyIHNob3VsZCBiZSBpbiBtaWNyb3NlY29uZHMuIFRoZSB0aW1lIHVuaXRzIGZvclxcbiBcXHRcXHQgKiBMUEkgdGhyZXNob2xkIGFyZSB1bnNwZWNpZmllZC5cXG4gXFx0XFx0ICovXFxuIFxcdFxcdGNvbmZpZy1cXHUwMDNlbHBpX3RpbWVyX2RlZmF1bHQgPSBGSUVMRF9HRVQoTFBJX1RIUkVTSF9NQVNLLCBlZWVjcik7XFxuIFxcdH1cXG4tXFxuLVxcdHByaXYtXFx1MDAzZWluZm8tXFx1MDAzZW1hY19wb3J0X2dldF9jYXBzKGRzLCBwb3J0LCBjb25maWcpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IG10NzUzeF9wY3NfdmFsaWRhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jXFxuaW5kZXggYmUzYmQwMjVjNDFhMS4uZmQ3YTQ5YWU4OGQwMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY1xcbkBAIC00ODI4LDcgKzQ4MjgsNyBAQCBzdGF0aWMgaW50IG10a19hZGRfbWFjKHN0cnVjdCBtdGtfZXRoICpldGgsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuIFxcdHBoeV9pbnRlcmZhY2VfdCBwaHlfbW9kZTtcXG4gXFx0c3RydWN0IHBoeWxpbmsgKnBoeWxpbms7XFxuIFxcdHN0cnVjdCBtdGtfbWFjICptYWM7XFxuLVxcdGludCBpZCwgZXJyO1xcbitcXHRpbnQgaWQsIGVyciwgaTtcXG4gXFx0aW50IHR4cXMgPSAxO1xcbiBcXHR1MzIgdmFsO1xcbiBcXG5AQCAtNDkwNyw4ICs0OTA3LDggQEAgc3RhdGljIGludCBtdGtfYWRkX21hYyhzdHJ1Y3QgbXRrX2V0aCAqZXRoLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbiBcXHRtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLnR5cGUgPSBQSFlMSU5LX05FVERFVjtcXG4gXFx0bWFjLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzID0gTUFDX0FTWU1fUEFVU0UgfCBNQUNfU1lNX1BBVVNFIHxcXG4gXFx0XFx0TUFDXzEwIHwgTUFDXzEwMCB8IE1BQ18xMDAwIHwgTUFDXzI1MDBGRDtcXG4tXFx0bWFjLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfY2FwYWJpbGl0aWVzID0gTUFDXzEwMEZEIHwgTUFDXzEwMDBGRCB8XFxuLVxcdFxcdE1BQ18yNTAwRkQ7XFxuK1xcdC8qIExQSSBhYm92ZSAxIEdicHMgaXMgbm90IHN1cHBvcnRlZCAqL1xcbitcXHRtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMgPSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEO1xcbiBcXHRtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV90aW1lcl9kZWZhdWx0ID0gMTAwMDtcXG4gXFxuIFxcdC8qIE1UNzYyMyBnbWFjMCBpcyBub3cgbWlzc2luZyBpdHMgc3BlZWQtc3BlY2lmaWMgUExMIGNvbmZpZ3VyYXRpb25cXG5AQCAtNDk2Niw2ICs0OTY2LDE4IEBAIHN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucClcXG4gXFx0XFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCxcXG4gXFx0XFx0XFx0ICBtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG4gXFxuK1xcdC8qIExQSSB3YWtlLXVwIHRpbWluZyBpcyBvbmx5IHZlcmlmaWVkIG9uIE1US19HTUFDX0VFRSBTb0NzICovXFxuK1xcdGlmIChNVEtfSEFTX0NBUFMoZXRoLVxcdTAwM2Vzb2MtXFx1MDAzZWNhcHMsIE1US19HTUFDX0VFRSkpIHtcXG4rXFx0XFx0cGh5X2ludGVyZmFjZV9jb3B5KG1hYy1cXHUwMDNlcGh5bGlua19jb25maWcubHBpX2ludGVyZmFjZXMsXFxuK1xcdFxcdFxcdFxcdCAgIG1hYy1cXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xcbitcXHRcXHRfX2NsZWFyX2JpdChQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYLFxcbitcXHRcXHRcXHQgICAgbWFjLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfaW50ZXJmYWNlcyk7XFxuK1xcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBQSFlfSU5URVJGQUNFX01PREVfTUFYOyBpKyspXFxuK1xcdFxcdFxcdGlmIChtdGtfaW50ZXJmYWNlX21vZGVfaXNfeGdtaWkoZXRoLCBpKSlcXG4rXFx0XFx0XFx0XFx0X19jbGVhcl9iaXQoaSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIG1hYy1cXHUwMDNlcGh5bGlua19jb25maWcubHBpX2ludGVyZmFjZXMpO1xcbitcXHR9XFxuK1xcbiBcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNm1hYy1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuIFxcdFxcdFxcdFxcdCBvZl9md25vZGVfaGFuZGxlKG1hYy1cXHUwMDNlb2Zfbm9kZSksXFxuIFxcdFxcdFxcdFxcdCBwaHlfbW9kZSwgbWFjX29wcyk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oXFxuaW5kZXggMDE2OGUyZmJjNjE5Ny4uODhhOWIzYjIzYmVhNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaFxcbkBAIC05OTQsNiArOTk0LDcgQEAgZW51bSBta3RfZXRoX2NhcGFiaWxpdGllcyB7XFxuIFxcdE1US19VM19DT1BIWV9WMl9CSVQsXFxuIFxcdE1US19TUkFNX0JJVCxcXG4gXFx0TVRLXzM2QklUX0RNQV9CSVQsXFxuK1xcdE1US19HTUFDX0VFRV9CSVQsXFxuIFxcbiBcXHQvKiBNVVggQklUUyovXFxuIFxcdE1US19FVEhfTVVYX0dETTFfVE9fR01BQzFfRVNXX0JJVCxcXG5AQCAtMTAzNCw2ICsxMDM1LDcgQEAgZW51bSBta3RfZXRoX2NhcGFiaWxpdGllcyB7XFxuICNkZWZpbmUgTVRLX1UzX0NPUEhZX1YyXFx0XFx0QklUX1VMTChNVEtfVTNfQ09QSFlfVjJfQklUKVxcbiAjZGVmaW5lIE1US19TUkFNXFx0XFx0QklUX1VMTChNVEtfU1JBTV9CSVQpXFxuICNkZWZpbmUgTVRLXzM2QklUX0RNQVxcdEJJVF9VTEwoTVRLXzM2QklUX0RNQV9CSVQpXFxuKyNkZWZpbmUgTVRLX0dNQUNfRUVFXFx0XFx0QklUX1VMTChNVEtfR01BQ19FRUVfQklUKVxcbiBcXG4gI2RlZmluZSBNVEtfRVRIX01VWF9HRE0xX1RPX0dNQUMxX0VTV1xcdFxcdFxcXFxcXG4gXFx0QklUX1VMTChNVEtfRVRIX01VWF9HRE0xX1RPX0dNQUMxX0VTV19CSVQpXFxuQEAgLTExMTcsNyArMTExOSw3IEBAIGVudW0gbWt0X2V0aF9jYXBhYmlsaXRpZXMge1xcbiAjZGVmaW5lIE1UNzk4MV9DQVBTICAoTVRLX0dNQUMxX1NHTUlJIHwgTVRLX0dNQUMyX1NHTUlJIHwgTVRLX0dNQUMyX0dFUEhZIHwgXFxcXFxcbiBcXHRcXHQgICAgICBNVEtfTVVYX0dNQUMxMl9UT19HRVBIWV9TR01JSSB8IE1US19RRE1BIHwgXFxcXFxcbiBcXHRcXHQgICAgICBNVEtfTVVYX1UzX0dNQUMyX1RPX1FQSFkgfCBNVEtfVTNfQ09QSFlfVjIgfCBcXFxcXFxuLVxcdFxcdCAgICAgIE1US19SU1RDVFJMX1BQRTEgfCBNVEtfU1JBTSlcXG4rXFx0XFx0ICAgICAgTVRLX1JTVENUUkxfUFBFMSB8IE1US19TUkFNIHwgTVRLX0dNQUNfRUVFKVxcbiBcXG4gI2RlZmluZSBNVDc5ODZfQ0FQUyAgKE1US19HTUFDMV9TR01JSSB8IE1US19HTUFDMl9TR01JSSB8IFxcXFxcXG4gXFx0XFx0ICAgICAgTVRLX01VWF9HTUFDMTJfVE9fR0VQSFlfU0dNSUkgfCBNVEtfUURNQSB8IFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6Mzc6NTIuMDAxNzIzNTg1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo0MTIyNTY0Njk4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lZGlhVGVrIEdpZ2FiaXQgRXRoZXJuZXQgU29DIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYykgYW5kIHRoZSBNZWRpYVRlayBNVDc1MzAgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL210NzUzMC5jKS4gVGhlc2UgZHJpdmVycyBhcmUgc3BlY2lmaWMgdG8gTWVkaWFUZWsgQVJNL01JUFMgU29DcyAoc3VjaCBhcyBNVDc2MjEsIE1UNzk4MSwgTVQ3OTg2LCBNVDc5ODgpIGFuZCByZXF1aXJlIFNvQy1zcGVjaWZpYyBkZXZpY2UgdHJlZXMgYW5kIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBhbWQ2NCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIGFtZDY0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjYzJhNDJkMzcwMzE2NTg4MWQ0NWMyN2I0NTFjZjQwMjM1MmFlYWExXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgNCAxODozNzo1MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuaW5kZXggMmI3YmUwOTFjMDU2ZS4uM2U2MWViM2MyYjFlMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuKysrIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXG5AQCAtMzE3MiwyMyArMzE3MiwzMSBAQCBzdGF0aWMgdm9pZCBtdDc1M3hfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuIFxuIFx0Y29uZmlnLVx1MDAzZW1hY19jYXBhYmlsaXRpZXMgPSBNQUNfQVNZTV9QQVVTRSB8IE1BQ19TWU1fUEFVU0U7XG4gXG4rXHRwcml2LVx1MDAzZWluZm8tXHUwMDNlbWFjX3BvcnRfZ2V0X2NhcHMoZHMsIHBvcnQsIGNvbmZpZyk7XG4rXG4gXHQvKiBUaGUgRU43NTI4IEdQSFlzIHJlcG9ydCBFRUUgY2FwYWJpbGl0eSwgYnV0IG5lZ290aWF0aW5nIEVFRSB3aXRoXG4gXHQgKiBjb21tb24gbGluayBwYXJ0bmVycyAoZS5nLiBSZWFsdGVrIEdiRSBOSUNzKSByZXN1bHRzIGluIGFuIHVuc3RhYmxlXG4gXHQgKiBsaW5rIHdpdGggZHJvcHBlZCBmcmFtZXMuIExlYXZlIHRoZSBMUEkgY2FwYWJpbGl0aWVzIGVtcHR5IHNvIHRoYXRcbiBcdCAqIHBoeWxpbmsgZGlzYWJsZXMgRUVFIG9uIHRoZXNlIFBIWXMgYW5kIHJlZnVzZXMgdG8gZW5hYmxlIGl0IGZyb21cbiBcdCAqIHVzZXJzcGFjZS5cbiBcdCAqL1xuLVx0aWYgKHByaXYtXHUwMDNlaWQgIT0gSURfRU43NTI4KSB7XG4rXHRpZiAocHJpdi1cdTAwM2VpZCAhPSBJRF9FTjc1MjggXHUwMDI2XHUwMDI2XG4rXHQgICAgY29uZmlnLVx1MDAzZW1hY19jYXBhYmlsaXRpZXMgXHUwMDI2IChNQUNfMTAwRkQgfCBNQUNfMTAwMEZEKSkge1xuIFx0XHR1MzIgZWVlY3IgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1M1hfUE1FRUVDUl9QKHBvcnQpKTtcbiBcbi1cdFx0Y29uZmlnLVx1MDAzZWxwaV9jYXBhYmlsaXRpZXMgPSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEIHwgTUFDXzI1MDBGRDtcbitcdFx0LyogTFBJIGFib3ZlIDEgR2JwcyBpcyBub3Qgc3VwcG9ydGVkICovXG4rXHRcdGNvbmZpZy1cdTAwM2VscGlfY2FwYWJpbGl0aWVzID0gY29uZmlnLVx1MDAzZW1hY19jYXBhYmlsaXRpZXMgXHUwMDI2XG4rXHRcdFx0XHRcdCAgIChNQUNfMTAwRkQgfCBNQUNfMTAwMEZEKTtcbitcdFx0cGh5X2ludGVyZmFjZV9jb3B5KGNvbmZpZy1cdTAwM2VscGlfaW50ZXJmYWNlcyxcbitcdFx0XHRcdCAgIGNvbmZpZy1cdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4rXHRcdF9fY2xlYXJfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgsXG4rXHRcdFx0ICAgIGNvbmZpZy1cdTAwM2VscGlfaW50ZXJmYWNlcyk7XG4rXG4gXHRcdC8qIHR4X2xwaV90aW1lciBzaG91bGQgYmUgaW4gbWljcm9zZWNvbmRzLiBUaGUgdGltZSB1bml0cyBmb3JcbiBcdFx0ICogTFBJIHRocmVzaG9sZCBhcmUgdW5zcGVjaWZpZWQuXG4gXHRcdCAqL1xuIFx0XHRjb25maWctXHUwMDNlbHBpX3RpbWVyX2RlZmF1bHQgPSBGSUVMRF9HRVQoTFBJX1RIUkVTSF9NQVNLLCBlZWVjcik7XG4gXHR9XG4tXG4tXHRwcml2LVx1MDAzZWluZm8tXHUwMDNlbWFjX3BvcnRfZ2V0X2NhcHMoZHMsIHBvcnQsIGNvbmZpZyk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgbXQ3NTN4X3Bjc192YWxpZGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY1xuaW5kZXggYmUzYmQwMjVjNDFhMS4uZmQ3YTQ5YWU4OGQwMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmNcbkBAIC00ODI4LDcgKzQ4MjgsNyBAQCBzdGF0aWMgaW50IG10a19hZGRfbWFjKHN0cnVjdCBtdGtfZXRoICpldGgsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4gXHRwaHlfaW50ZXJmYWNlX3QgcGh5X21vZGU7XG4gXHRzdHJ1Y3QgcGh5bGluayAqcGh5bGluaztcbiBcdHN0cnVjdCBtdGtfbWFjICptYWM7XG4tXHRpbnQgaWQsIGVycjtcbitcdGludCBpZCwgZXJyLCBpO1xuIFx0aW50IHR4cXMgPSAxO1xuIFx0dTMyIHZhbDtcbiBcbkBAIC00OTA3LDggKzQ5MDcsOCBAQCBzdGF0aWMgaW50IG10a19hZGRfbWFjKHN0cnVjdCBtdGtfZXRoICpldGgsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4gXHRtYWMtXHUwMDNlcGh5bGlua19jb25maWcudHlwZSA9IFBIWUxJTktfTkVUREVWO1xuIFx0bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgPSBNQUNfQVNZTV9QQVVTRSB8IE1BQ19TWU1fUEFVU0UgfFxuIFx0XHRNQUNfMTAgfCBNQUNfMTAwIHwgTUFDXzEwMDAgfCBNQUNfMjUwMEZEO1xuLVx0bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMgPSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEIHxcbi1cdFx0TUFDXzI1MDBGRDtcbitcdC8qIExQSSBhYm92ZSAxIEdicHMgaXMgbm90IHN1cHBvcnRlZCAqL1xuK1x0bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMgPSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEO1xuIFx0bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV90aW1lcl9kZWZhdWx0ID0gMTAwMDtcbiBcbiBcdC8qIE1UNzYyMyBnbWFjMCBpcyBub3cgbWlzc2luZyBpdHMgc3BlZWQtc3BlY2lmaWMgUExMIGNvbmZpZ3VyYXRpb25cbkBAIC00OTY2LDYgKzQ5NjYsMTggQEAgc3RhdGljIGludCBtdGtfYWRkX21hYyhzdHJ1Y3QgbXRrX2V0aCAqZXRoLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuIFx0XHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxuIFx0XHRcdCAgbWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbiBcbitcdC8qIExQSSB3YWtlLXVwIHRpbWluZyBpcyBvbmx5IHZlcmlmaWVkIG9uIE1US19HTUFDX0VFRSBTb0NzICovXG4rXHRpZiAoTVRLX0hBU19DQVBTKGV0aC1cdTAwM2Vzb2MtXHUwMDNlY2FwcywgTVRLX0dNQUNfRUVFKSkge1xuK1x0XHRwaHlfaW50ZXJmYWNlX2NvcHkobWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9pbnRlcmZhY2VzLFxuK1x0XHRcdFx0ICAgbWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbitcdFx0X19jbGVhcl9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCxcbitcdFx0XHQgICAgbWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9pbnRlcmZhY2VzKTtcbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgUEhZX0lOVEVSRkFDRV9NT0RFX01BWDsgaSsrKVxuK1x0XHRcdGlmIChtdGtfaW50ZXJmYWNlX21vZGVfaXNfeGdtaWkoZXRoLCBpKSlcbitcdFx0XHRcdF9fY2xlYXJfYml0KGksXG4rXHRcdFx0XHRcdCAgICBtYWMtXHUwMDNlcGh5bGlua19jb25maWcubHBpX2ludGVyZmFjZXMpO1xuK1x0fVxuK1xuIFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNm1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZyxcbiBcdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKG1hYy1cdTAwM2VvZl9ub2RlKSxcbiBcdFx0XHRcdCBwaHlfbW9kZSwgbWFjX29wcyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmhcbmluZGV4IDAxNjhlMmZiYzYxOTcuLjg4YTliM2IyM2JlYTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oXG5AQCAtOTk0LDYgKzk5NCw3IEBAIGVudW0gbWt0X2V0aF9jYXBhYmlsaXRpZXMge1xuIFx0TVRLX1UzX0NPUEhZX1YyX0JJVCxcbiBcdE1US19TUkFNX0JJVCxcbiBcdE1US18zNkJJVF9ETUFfQklULFxuK1x0TVRLX0dNQUNfRUVFX0JJVCxcbiBcbiBcdC8qIE1VWCBCSVRTKi9cbiBcdE1US19FVEhfTVVYX0dETTFfVE9fR01BQzFfRVNXX0JJVCxcbkBAIC0xMDM0LDYgKzEwMzUsNyBAQCBlbnVtIG1rdF9ldGhfY2FwYWJpbGl0aWVzIHtcbiAjZGVmaW5lIE1US19VM19DT1BIWV9WMlx0XHRCSVRfVUxMKE1US19VM19DT1BIWV9WMl9CSVQpXG4gI2RlZmluZSBNVEtfU1JBTVx0XHRCSVRfVUxMKE1US19TUkFNX0JJVClcbiAjZGVmaW5lIE1US18zNkJJVF9ETUFcdEJJVF9VTEwoTVRLXzM2QklUX0RNQV9CSVQpXG4rI2RlZmluZSBNVEtfR01BQ19FRUVcdFx0QklUX1VMTChNVEtfR01BQ19FRUVfQklUKVxuIFxuICNkZWZpbmUgTVRLX0VUSF9NVVhfR0RNMV9UT19HTUFDMV9FU1dcdFx0XFxcbiBcdEJJVF9VTEwoTVRLX0VUSF9NVVhfR0RNMV9UT19HTUFDMV9FU1dfQklUKVxuQEAgLTExMTcsNyArMTExOSw3IEBAIGVudW0gbWt0X2V0aF9jYXBhYmlsaXRpZXMge1xuICNkZWZpbmUgTVQ3OTgxX0NBUFMgIChNVEtfR01BQzFfU0dNSUkgfCBNVEtfR01BQzJfU0dNSUkgfCBNVEtfR01BQzJfR0VQSFkgfCBcXFxuIFx0XHQgICAgICBNVEtfTVVYX0dNQUMxMl9UT19HRVBIWV9TR01JSSB8IE1US19RRE1BIHwgXFxcbiBcdFx0ICAgICAgTVRLX01VWF9VM19HTUFDMl9UT19RUEhZIHwgTVRLX1UzX0NPUEhZX1YyIHwgXFxcbi1cdFx0ICAgICAgTVRLX1JTVENUUkxfUFBFMSB8IE1US19TUkFNKVxuK1x0XHQgICAgICBNVEtfUlNUQ1RSTF9QUEUxIHwgTVRLX1NSQU0gfCBNVEtfR01BQ19FRUUpXG4gXG4gI2RlZmluZSBNVDc5ODZfQ0FQUyAgKE1US19HTUFDMV9TR01JSSB8IE1US19HTUFDMl9TR01JSSB8IFxcXG4gXHRcdCAgICAgIE1US19NVVhfR01BQzEyX1RPX0dFUEhZX1NHTUlJIHwgTVRLX1FETUEgfCBcXFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6Mzc6NTIuMDAxNzI3MDk1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODgxMTgzNzY4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVGhpcyBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYnJlYWsgZG93biB3aGF0J3MgYmVpbmcgdG91Y2hlZC4gSSBzZWUgY2hhbmdlcyBhZmZlY3RpbmcgYGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jYCwgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGhlYWRlciwgYG10a19ldGhfc29jLmhgLiBUaGlzIGlzIGludGVyZXN0aW5nOyB3ZSdyZSBsb29raW5nIGF0IE1lZGlhVGVrLXJlbGF0ZWQgY29kZSwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBhbiBhbWQ2NCBhcmNoaXRlY3R1cmUuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGVzZSBkcml2ZXJzICpkbyouIGBtdDc1MzAuY2AgaXMgdGhlIERTQSBkcml2ZXIgZm9yIHRoZSBNZWRpYVRlayBNVDc1MzAvTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCwgYW5kIGBtdGtfZXRoX3NvYy5jYCBpcyB0aGUgU29DIEdpZ2FiaXQgRXRoZXJuZXQgTUFDIGRyaXZlciwgcHJpbWFyaWx5IGZvciBBUk0vTUlQUyBTb0NzLiBHaXZlbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgSSBoYXZlIGEgaHVuY2ggdGhpcyBtaWdodCBiZSBhIHN1YnRsZSwgYnV0IG5vdCBuZWNlc3NhcmlseSBvYnZpb3VzLCB0aGluZyBoZXJlLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZ2V0IHNvbWUgbW9yZSBjb250ZXh0IG9uIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMuIEkgd2FudCB0byBxdWlja2x5IGFzY2VydGFpbiB3aGF0IGhhcmR3YXJlL2J1c2VzIHRoZXNlIGFyZSB1c2luZywgYW5kIHdoZXRoZXIgdGhpcyBjYW4gZXZlbiBiZSBtZWFuaW5nZnVsbHkgaW5zdGFudGlhdGVkIG9yIHByb2JlZCBpbiBhbiBhbWQ2NCBRRU1VIG9yIFN5emthbGxlciBlbnZpcm9ubWVudC4gSSdsbCBuZWVkIHRvIHVzZSBncmVwcGVyL2NvZGVzZWFyY2ggdG8gbG9vayBmb3IgdGhlIHByb2JlIGFuZCBpbml0IG1ldGhvZHMgZm9yIGJvdGggYG10NzUzMGAgYW5kIGBtdGtfZXRoX3NvY2AuIEZyb20gdGhlcmUsIEknbGwgYmUgYWJsZSB0byBnZXQgYSBiZXR0ZXIgZmVlbCBmb3IgdGhlIGltcGFjdCBvZiB0aGlzIHBhdGNoLiBUaGlzIGluaXRpYWwgaW52ZXN0aWdhdGlvbiBzaG91bGQgaW5mb3JtIGlmIGl0J3MgcG90ZW50aWFsbHkgd29ydGggYSBkZWVwZXIgZGl2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc4NywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjM4OjAwLjgxMzU2ODM0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODMyNTU5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc1MzBfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxOTU3IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz0xOD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTk6bXQ3NTMwX3JlZ21hcF93cml0ZSh2b2lkICpjb250ZXh0LCB1bnNpZ25lZCBpbnQgcmVnLCB1bnNpZ25lZCBpbnQgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIwLXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyMTpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBjb250ZXh0O1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIyLVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz00Mz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6NDQ6bXQ3NTMwX3JlZ21hcF9yZWFkKHZvaWQgKmNvbnRleHQsIHVuc2lnbmVkIGludCByZWcsIHVuc2lnbmVkIGludCAqdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTQ1LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo0NjpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBjb250ZXh0O1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTQ3LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz03Mz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjc0Om10NzUzMF9tZGlvX3JlZ21hcF9sb2NrKHZvaWQgKm1kaW9fbG9jaylcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy03NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz03OT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjgwOm10NzUzMF9tZGlvX3JlZ21hcF91bmxvY2sodm9pZCAqbWRpb19sb2NrKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTgxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTg0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjg1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2J1cyBtdDc1MzBfcmVnbWFwX2J1cyA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo4NjpcXHQucmVnX3dyaXRlID0gbXQ3NTMwX3JlZ21hcF93cml0ZSxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo4NzpcXHQucmVnX3JlYWQgPSBtdDc1MzBfcmVnbWFwX3JlYWQsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtODgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTkwPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo5MTptdDc1MzFfY3JlYXRlX3NnbWlpKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy05Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMTItXFx0XFx0bXQ3NTMxX3Bjc19jb25maWdbaV0tXFx1MDAzZW1heF9yZWdpc3RlciA9IDB4MTdjO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjExMzpcXHRcXHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cXHUwMDNlbG9jayA9IG10NzUzMF9tZGlvX3JlZ21hcF9sb2NrO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjExNDpcXHRcXHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cXHUwMDNldW5sb2NrID0gbXQ3NTMwX21kaW9fcmVnbWFwX3VubG9jaztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMTUtXFx0XFx0bXQ3NTMxX3Bjc19jb25maWdbaV0tXFx1MDAzZWxvY2tfYXJnID0gXFx1MDAyNnByaXYtXFx1MDAzZWJ1cy1cXHUwMDNlbWRpb19sb2NrO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTExNi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxMTc6XFx0XFx0cmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdChwcml2LVxcdTAwM2VkZXYsIFxcdTAwMjZtdDc1MzBfcmVnbWFwX2J1cywgcHJpdixcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMTgtXFx0XFx0XFx0XFx0XFx0ICBtdDc1MzFfcGNzX2NvbmZpZ1tpXSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMzctXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTM4OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10NzUzMF9vZl9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEzOS1cXHR7IC5jb21wYXRpYmxlID0gXFxcIm1lZGlhdGVrLG10NzYyMVxcXCIsIC5kYXRhID0gXFx1MDAyNm10NzUzeF90YWJsZVtJRF9NVDc2MjFdLCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTQzLX07XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTQ0Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG10NzUzMF9vZl9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9MTU0PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNTU6bXQ3NTMwX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNTYte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE1NzpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTU4LVxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqZG47XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNzAtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTcxOlxcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTcyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMDktXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjEwOlxcdHByaXYtXFx1MDAzZXJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXQocHJpdi1cXHUwMDNlZGV2LCBcXHUwMDI2bXQ3NTMwX3JlZ21hcF9idXMsIHByaXYsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjExLVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZyZWdtYXBfY29uZmlnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTIyMT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIyMjptdDc1MzBfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMjMte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIyNDpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjI1LVxcdGludCByZXQgPSAwLCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjM5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI0MDpcXHRtdDc1MzBfcmVtb3ZlX2NvbW1vbihwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNDEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNDUtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjQ2OnN0YXRpYyB2b2lkIG10NzUzMF9zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjQ3LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNDg6XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI0OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI1Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTg6c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBtdDc1MzBfbWRpb19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjU5OlxcdC5wcm9iZSAgPSBtdDc1MzBfcHJvYmUsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjYwOlxcdC5yZW1vdmUgPSBtdDc1MzBfcmVtb3ZlLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI2MTpcXHQuc2h1dGRvd24gPSBtdDc1MzBfc2h1dGRvd24sXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjYyLVxcdC5tZGlvZHJ2LmRyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjMtXFx0XFx0Lm5hbWUgPSBcXFwibXQ3NTMwLW1kaW9cXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI2NDpcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBtdDc1MzBfb2ZfbWF0Y2gsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjY1LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjctXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjY4Om1kaW9fbW9kdWxlX2RyaXZlcihtdDc1MzBfbWRpb19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI2OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jPTMwPW10Nzk4OF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTMxLXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzozMjpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtMzMtXFx0dm9pZCBfX2lvbWVtICpiYXNlX2FkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy00Mi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo0MzpcXHRyZXQgPSBtdDc1MzBfcHJvYmVfY29tbW9uKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTQ0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYz02Nz1zdGF0aWMgdm9pZCBtdDc5ODhfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNjgte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjY5OlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTcwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTcxLVxcdGlmIChwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjcyOlxcdFxcdG10NzUzMF9yZW1vdmVfY29tbW9uKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTczLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jPTc1PXN0YXRpYyB2b2lkIG10Nzk4OF9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTc2LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo3NzpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy03OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0zMT1zdGF0aWMgc3RydWN0IG10NzUzeF9wY3MgKnBjc190b19tdDc1M3hfcGNzKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM2LS8qIFN0cmluZywgb2Zmc2V0LCBhbmQgcmVnaXN0ZXIgc2l6ZSBpbiBieXRlcyBpZiBkaWZmZXJlbnQgZnJvbSA0IGJ5dGVzICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3NTMwX21pYl9kZXNjIG10NzUzMF9taWJbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzgtXFx0TUlCX0RFU0MoMSwgTVQ3NTMwX1BPUlRfTUlCX1RYX0RST1AsIFxcXCJUeERyb3BcXFwiKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz00OT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MDptdDc1MzBfbXV0ZXhfbG9jayhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01Nj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NzptdDc1MzBfbXV0ZXhfdW5sb2NrKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTYzPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY0OmNvcmVfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjgtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY5OlxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy05NS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6OTY6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtOTctfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTk5PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjEwMDpjb3JlX3JtdyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiBtYXNrLCB1MzIgc2V0KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xMDEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTEwNS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTA2OlxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xMDctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTQxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNDI6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTQzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNDU9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTQ2OmNvcmVfc2V0KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNTE9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTUyOmNvcmVfY2xlYXIoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTE1Nz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE1ODptdDc1MzBfbWlpX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTU5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNzE9c3RhdGljIHUzMlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNzI6bXQ3NTMwX21paV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZylcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTczLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xODg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxODk6bXQ3NTMwX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xOTItXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE5MzpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTk0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxOTU6XFx0cmV0ID0gbXQ3NTMwX21paV93cml0ZShwcml2LCByZWcsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5Ni1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTk3OlxcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMDI9c3RhdGljIHUzMlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMDM6X210NzUzMF9yZWFkKHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCAqcClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMDYtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIwNzpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwLVxcdTAwM2Vwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjA4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMDk6XFx0dmFsID0gbXQ3NTMwX21paV9yZWFkKHAtXFx1MDAzZXByaXYsIHAtXFx1MDAzZXJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIxMC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjExOlxcdG10NzUzMF9tdXRleF91bmxvY2socC1cXHUwMDNlcHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIxMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMTY9c3RhdGljIHUzMlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMTc6bXQ3NTMwX3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMTgte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMTk6XFx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyMC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjIxLVxcdElOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoXFx1MDAyNnAsIHByaXYsIHJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIyMjpcXHRyZXR1cm4gX210NzUzMF9yZWFkKFxcdTAwMjZwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjIzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMjU9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjI2Om10NzUzMF9ybXcoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMjctXFx0ICAgdTMyIG1hc2ssIHUzMiBzZXQpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyOC17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIyOTpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjMwLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzMi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjMzOlxcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzNC19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjM2PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzNzptdDc1MzBfc2V0KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjM4LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjM5OlxcdG10NzUzMF9ybXcocHJpdiwgcmVnLCB2YWwsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0MC19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjQyPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI0MzptdDc1MzBfY2xlYXIoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNDQte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDU6XFx0bXQ3NTMwX3Jtdyhwcml2LCByZWcsIHZhbCwgMCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0Ni19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjQ4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQ5Om10NzUzMF9mZGJfY21kKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgZW51bSBtdDc1MzBfZmRiX2NtZCBjbWQsIHUzMiAqcnNwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTAte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1NS1cXHR2YWwgPSBBVENfQlVTWSB8IEFUQ19NQVQoMCkgfCBjbWQ7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI1NjpcXHRyZXQgPSBtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX0FUQywgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjU3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjU5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNjA6XFx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI2MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNjYtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI2NzpcXHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNjgtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9Mjg2PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI4NzptdDc1MzBfZmRiX3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBzdHJ1Y3QgbXQ3NTMwX2ZkYiAqZmRiKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yODgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI5My1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgMzsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI5NDpcXHRcXHRyZWdbaV0gPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzBfVFNSQTEgKyAoaSAqIDQpKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjk1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTMxMj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMTM6bXQ3NTMwX2ZkYl93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUxNiB2aWQsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMxNC1cXHRcXHQgdTggcG9ydF9tYXNrLCBjb25zdCB1OCAqbWFjLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMzOC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgMzsgaSsrKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMzk6XFx0XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9BVEExICsgKGkgKiA0KSwgcmVnW2ldKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzQwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNDItLyogU2V0IHVwIHN3aXRjaCBjb3JlIGNsb2NrIGZvciBNVDc1MzAgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzQzOnN0YXRpYyB2b2lkIG10NzUzMF9wbGxfc2V0dXAoc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNDQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTM4Mz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozODQ6bXQ3NTMwX3NldHVwX3BvcnQ2KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzg1LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mzg2OlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zODctXFx0dTMyIG5jcG8xLCBzc2NfZGVsdGEsIHh0YWw7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzkyLVxcdGlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJKSB7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM5MzpcXHRcXHRtdDc1MzBfcm13KHByaXYsIE1UNzUzMF9QNkVDUiwgUDZfSU5URl9NT0RFX01BU0ssXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM5NC1cXHRcXHRcXHQgICBQNl9JTlRGX01PREUoMCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM5Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mzk4OlxcdG10NzUzMF9ybXcocHJpdiwgTVQ3NTMwX1A2RUNSLCBQNl9JTlRGX01PREVfTUFTSywgUDZfSU5URl9NT0RFKDEpKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzk5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0MDA6XFx0eHRhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzWF9NVFJBUCkgXFx1MDAyNiBNVDc1MzBfWFRBTF9NQVNLO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00MDEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NDM2PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQzNzptdDc1MzFfcGxsX3NldHVwKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDM4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NDMtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ0NDpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfQ1JFVik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ0NTpcXHR0b3Bfc2lnID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1RPUF9TSUdfU1IpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NDY6XFx0aHdzdHJhcCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzWF9UUkFQKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDQ3LVxcdGlmICgodmFsIFxcdTAwMjYgQ0hJUF9SRVZfTSkgXFx1MDAzZSAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1NC1cXHQvKiBTdGVwIDEgOiBEaXNhYmxlIE1UNzUzMSBDT1JFUExMICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ1NTpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4pO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTYtXFx0dmFsIFxcdTAwMjY9IH5FTl9DT1JFUExMO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NTc6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9FTiwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDU4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTktXFx0LyogU3RlcCAyOiBzd2l0Y2ggdG8gWFRBTCBvdXRwdXQgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDYwOlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9FTik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2MS1cXHR2YWwgfD0gU1dfQ0xLU1c7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ2MjpcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0VOLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NjMtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ2NDpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDY1LVxcdHZhbCBcXHUwMDI2PSB+UkdfQ09SRVBMTF9FTjtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDY2OlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NjctXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2OC1cXHQvKiBTdGVwIDM6IGRpc2FibGUgUExMR1AgYW5kIGVuYWJsZSBwcm9ncmFtIFBMTEdQICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ2OTpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4pO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzAtXFx0dmFsIHw9IFNXX1BMTEdQO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NzE6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9FTiwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDcyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzMtXFx0LyogU3RlcCA0OiBwcm9ncmFtIENPUkVQTEwgb3V0cHV0IGZyZXF1ZW5jeSB0byA1MDBNSHogKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDc0OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzUtXFx0dmFsIFxcdTAwMjY9IH5SR19DT1JFUExMX1BPU0RJVl9NO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzYtXFx0dmFsIHw9IDIgXFx1MDAzY1xcdTAwM2MgUkdfQ09SRVBMTF9QT1NESVZfUztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDc3OlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzgtXFx0dXNsZWVwX3JhbmdlKDI1LCAzNSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDgxLVxcdGNhc2UgTVQ3NTMxX1hUQUxfRlNFTF8yNU1IWjpcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDgyOlxcdFxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODMtXFx0XFx0dmFsIFxcdTAwMjY9IH5SR19DT1JFUExMX1NETV9QQ1dfTTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDg0LVxcdFxcdHZhbCB8PSAweDE0MDAwMCBcXHUwMDNjXFx1MDAzYyBSR19DT1JFUExMX1NETV9QQ1dfUztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDg1OlxcdFxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODYtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ4Ny1cXHRjYXNlIE1UNzUzMV9YVEFMX0ZTRUxfNDBNSFo6XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ4ODpcXHRcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDg5LVxcdFxcdHZhbCBcXHUwMDI2PSB+UkdfQ09SRVBMTF9TRE1fUENXX007XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5MC1cXHRcXHR2YWwgfD0gMHgxOTAwMDAgXFx1MDAzY1xcdTAwM2MgUkdfQ09SRVBMTF9TRE1fUENXX1M7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ5MTpcXHRcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDkyLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5NS1cXHQvKiBTZXQgZmVlZGJhY2sgZGl2aWRlIHJhdGlvIHVwZGF0ZSBzaWduYWwgdG8gaGlnaCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0OTY6XFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5Ny1cXHR2YWwgfD0gUkdfQ09SRVBMTF9TRE1fUENXX0NIRztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDk4OlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00OTktXFx0LyogV2FpdCBmb3IgYXQgbGVhc3QgMTYgWFRBTCBjbG9ja3MgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MDItXFx0LyogU3RlcCA1OiBzZXQgZmVlZGJhY2sgZGl2aWRlIHJhdGlvIHVwZGF0ZSBzaWduYWwgdG8gbG93ICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUwMzpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTA0LVxcdHZhbCBcXHUwMDI2PSB+UkdfQ09SRVBMTF9TRE1fUENXX0NIRztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTA1OlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MDYtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwNy1cXHQvKiBFbmFibGUgMzI1TSBjbG9jayBmb3IgU0dNSUkgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTA4OlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfQU5BX1BMTEdQX0NSNSwgMHhhZDAwMDApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MDktXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxMC1cXHQvKiBFbmFibGUgMjUwU1NDIGNsb2NrIGZvciBSR01JSSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MTE6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9BTkFfUExMR1BfQ1IyLCAweDRmNDAwMDApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MTItXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxMy1cXHQvKiBTdGVwIDY6IEVuYWJsZSBNVDc1MzEgUExMICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUxNDpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTE1LVxcdHZhbCB8PSBSR19DT1JFUExMX0VOO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MTY6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxNy1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTE4OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9FTik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxOS1cXHR2YWwgfD0gRU5fQ09SRVBMTDtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTIwOlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfRU4sIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUyMS1cXHR1c2xlZXBfcmFuZ2UoMjUsIDM1KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01MjQ9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTI1Om10NzUzMF9taWJfcmVzZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MjYte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1Mjc6XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUyOC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTI5OlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfTUlCX0NDUiwgQ0NSX01JQl9GTFVTSCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUzMDpcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX01JQl9DQ1IsIENDUl9NSUJfQUNUSVZBVEUpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MzEtfVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MzItXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUzMzpzdGF0aWMgaW50IG10NzUzMF9waHlfcmVhZF9jMjIoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSlcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTM0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MzctXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUzODpzdGF0aWMgaW50IG10NzUzMF9waHlfd3JpdGVfYzIyKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0sXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUzOS1cXHRcXHRcXHRcXHR1MTYgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU0My1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTQ0OnN0YXRpYyBpbnQgbXQ3NTMwX3BoeV9yZWFkX2M0NShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NDUtXFx0XFx0XFx0ICAgICAgIGludCBkZXZhZCwgaW50IHJlZ251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NDktXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU1MDpzdGF0aWMgaW50IG10NzUzMF9waHlfd3JpdGVfYzQ1KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTUxLVxcdFxcdFxcdFxcdGludCByZWdudW0sIHUxNiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NTU2PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTU3Om10NzUzMV9pbmRfYzQ1X3BoeV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTU4LVxcdFxcdFxcdGludCByZWdudW0pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTYyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NjM6XFx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU2NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NzMtXFx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgcmVnbnVtO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NzQ6XFx0cmV0ID0gbXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NzUtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTg2LVxcdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTg3OlxcdHJldCA9IG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTg4LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU5OS1vdXQ6XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYwMDpcXHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MDEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NjA1PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjA2Om10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYwNy1cXHRcXHRcXHQgaW50IHJlZ251bSwgdTE2IGRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjExLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MTI6XFx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYxMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MjItXFx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgcmVnbnVtO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MjM6XFx0cmV0ID0gbXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MjQtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjM1LVxcdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKSB8IGRhdGE7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYzNjpcXHRyZXQgPSBtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYzNy1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NDctb3V0OlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NDg6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTY1Mz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY1NDptdDc1MzFfaW5kX2MyMl9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NTUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY1OC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjU5OlxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NjAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjcwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NzE6XFx0cmV0ID0gbXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgdmFsIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NzItXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjgzLW91dDpcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Njg0OlxcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY4NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz02ODk9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2OTA6bXQ3NTMxX2luZF9jMjJfcGh5X3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0sXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY5MS1cXHRcXHRcXHQgdTE2IGRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjk1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2OTY6XFx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY5Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MDctXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjcwODpcXHRyZXQgPSBtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTcwOS1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MTktb3V0OlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3MjA6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzIxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTcyNj1tdDc1M3hfcGh5X3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03Mjcte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3Mjg6XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MjktXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NzM0PW10NzUzeF9waHlfcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCBkZXZhZCwgaW50IHJlZ251bSlcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzM1LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NzM2OlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzM3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTc0Mj1tdDc1M3hfcGh5X3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTE2IHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzQzLXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NzQ0OlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTc1MD1tdDc1M3hfcGh5X3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IGRldmFkLCBpbnQgcmVnbnVtLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc1Mi17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjc1MzpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc1NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz03NTg9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NzU5Om10NzUzMF9nZXRfc3RyaW5ncyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCB1MzIgc3RyaW5nc2V0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03NjAtXFx0XFx0ICAgdWludDhfdCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03NjYtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjc2NzpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShtdDc1MzBfbWliKTsgaSsrKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3Njg6XFx0XFx0ZXRodG9vbF9wdXRzKFxcdTAwMjZkYXRhLCBtdDc1MzBfbWliW2ldLm5hbWUpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03NjktfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTc3MT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3NzI6bXQ3NTMwX3JlYWRfcG9ydF9zdGF0cyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03NzMtXFx0XFx0ICAgICAgIHUzMiBvZmZzZXQsIHU4IHNpemUsIHVpbnQ2NF90ICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc3Ni1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Nzc3OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIHJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc3OC1cXHQqZGF0YSA9IHZhbDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03ODAtXFx0aWYgKHNpemUgPT0gMikge1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3ODE6XFx0XFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgcmVnICsgNCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc4Mi1cXHRcXHQqZGF0YSB8PSAodTY0KXZhbCBcXHUwMDNjXFx1MDAzYyAzMjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz03ODY9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Nzg3Om10NzUzMF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03ODgtXFx0XFx0XFx0IHVpbnQ2NF90ICpkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03ODkte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3OTA6XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjc5MTpcXHRjb25zdCBzdHJ1Y3QgbXQ3NTMwX21pYl9kZXNjICptaWI7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc5Mi1cXHRpbnQgaTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzkzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3OTQ6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUobXQ3NTMwX21pYik7IGkrKykge1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3OTU6XFx0XFx0bWliID0gXFx1MDAyNm10NzUzMF9taWJbaV07XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc5Ni1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Nzk3OlxcdFxcdG10NzUzMF9yZWFkX3BvcnRfc3RhdHMocHJpdiwgcG9ydCwgbWliLVxcdTAwM2VvZmZzZXQsIG1pYi1cXHUwMDNlc2l6ZSxcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6Mzg6MDAuOTMxODk5NDg1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzUzNTgwMTg1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqRGl2aW5nIGludG8gdGhlIE1lZGlhdGVrIEV0aGVybmV0IERyaXZlcioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQncyBzdGFydCBkaWdnaW5nIGludG8gdGhlIE1lZGlhdGVrIEV0aGVybmV0IGRyaXZlci4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgc28gSSdtIGdvaW5nIHN0cmFpZ2h0IGZvciBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY2AuIFNwZWNpZmljYWxseSwgSSdtIGZvY3VzaW5nIG9uIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIGFuZCBob3cgdGhlIGRyaXZlciByZWdpc3RlcnMgaXRzZWxmIHdpdGggdGhlIGtlcm5lbC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhlIGhhcmR3YXJlIGlzIGRldGVjdGVkLCB0aGUgcmVzb3VyY2VzIGFyZSBhbGxvY2F0ZWQsIGFuZCB0aGUgbmV0d29yayBpbnRlcmZhY2UgaXMgYnJvdWdodCBvbmxpbmUuIEdvdCB0byBtYWtlIHN1cmUgdGhlIGNvcmUgc2V0dXAgaXMgc291bmQgYmVmb3JlIEkgZ28gZnVydGhlciBkb3duIHRoZSByYWJiaXQgaG9sZS4gVGhpcyB3aWxsIGdpdmUgbWUgdGhlIGJhc2UgdG8gd29yayBvZmYsIGFzIEkgcHJvY2VlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg3OTUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODozODowNC40Njc3MDQwOTlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIxNzkyNDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3BsYXRmb3JtX2RyaXZlcnxwbGF0Zm9ybV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM9NTY3Nj1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvZl9tdGtfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNTY3Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjU2Nzg6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTU2NzktXFx0LnByb2JlID0gbXRrX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy01Njg2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6NTY4Nzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG10a19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNTY4OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYz0xNzQ2PXN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhtdGtfc3Rhcl9wbV9vcHMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmMtMTc0OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM6MTc0OTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfc3Rhcl9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE3NTAtXFx0LmRyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYy0xNzU2LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jOjE3NTc6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtdGtfc3Rhcl9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYy0xNzU4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODozODowNC41NDk4ODkzMTVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjczNzQ3MTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhpcy4gTXkgZmlyc3QgbW92ZSBpcyB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBjb2RlLiBJJ20gdGhpbmtpbmcgSSBzaG91bGQgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBtdGtfZHJpdmVyYCB3aXRoaW4gYG10a19ldGhfc29jLmNgLiBUaGF0IHNob3VsZCBwcm92aWRlIGEgYnJvYWQgb3ZlcnZpZXcuIFRoZW4sIEkgbmVlZCB0byBsb29rIGF0IGBtdDc1MzBgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAqYCBkaXJlY3RvcnkuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBwYWlyaW5nLCBnaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0uXG5cbk9uY2UgSSd2ZSBnb3QgdGhvc2UgZmlsZXMgaW4gZnJvbnQgb2YgbWUsIEkgbmVlZCB0byBjaGVjayB0aGUgY29ycmVzcG9uZGluZyBgS2NvbmZpZ2AgZmlsZXMgZm9yIGJvdGguIEkgd2FudCB0byBzZWUgaG93IHRoZXNlIGRyaXZlcnMgYXJlIGNvbmZpZ3VyZWQgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIHRoZXkgaGF2ZS4gVGhhdCdsbCB0ZWxsIG1lIGhvdyB0aGV5IGZpdCBpbnRvIHRoZSBicm9hZGVyIGtlcm5lbCBidWlsZCBhbmQgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBvcHRpb25zIG9yIHNldHRpbmdzIEkgbmVlZCB0byBrZWVwIGluIG1pbmQuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTUwNywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjM4OjA3LjIyMzYzOTU0NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTA3NzExNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkVUX0RTQV9NVDc1MzB8TkVUX01FRElBVEVLX1NPQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL0tjb25maWc9Mjk9c291cmNlIFxcXCJkcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzAtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzE6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzItXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzUzMCBhbmQgTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzQtXFx0c2VsZWN0IFJFR01BUF9JUlFcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzozNTpcXHRpbXBseSBORVRfRFNBX01UNzUzMF9NRElPXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzY6XFx0aW1wbHkgTkVUX0RTQV9NVDc1MzBfTU1JT1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTM3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQyLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjQzOmNvbmZpZyBORVRfRFNBX01UNzUzMF9NRElPXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNDQtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzUzMCBNRElPIGludGVyZmFjZSBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NDU6XFx0ZGVwZW5kcyBvbiBORVRfRFNBX01UNzUzMFxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQ2LVxcdHNlbGVjdCBNRURJQVRFS19HRV9QSFlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTUzLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjU0OmNvbmZpZyBORVRfRFNBX01UNzUzMF9NTUlPXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTUtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzUzMCBNTUlPIGludGVyZmFjZSBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NTY6XFx0ZGVwZW5kcyBvbiBORVRfRFNBX01UNzUzMFxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTU3LVxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9NT1vYmotJChDT05GSUdfTkVUX0RTQV9LUzg5OTUpIFxcdCs9IGtzODk5NS5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX05FVF9EU0FfTVQ3NTMwKVxcdCs9IG10NzUzMC5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX05FVF9EU0FfTVQ3NTMwX01ESU8pICs9IG10NzUzMC1tZGlvLm9cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfTkVUX0RTQV9NVDc1MzBfTU1JTykgKz0gbXQ3NTMwLW1taW8ub1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS05LW9iai0kKENPTkZJR19ORVRfRFNBX01UNzYyOCkgKz0gbXQ3NjI4Lm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc9OD1pZiBORVRfVkVORE9SX01FRElBVEVLXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy05LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MTA6Y29uZmlnIE5FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0xMS1cXHRkZXBlbmRzIG9uIEFSQ0hfTUVESUFURUsgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoxMjpcXHRkZWZfYm9vbCBORVRfTUVESUFURUtfU09DICE9IG5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTEzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MTQ6Y29uZmlnIE5FVF9NRURJQVRFS19TT0NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTE1LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBTb0MgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19ORVRfTUVESUFURUtfU09DKSArPSBtdGtfZXRoLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZS03LW10a19ldGgteSA6PSBtdGtfZXRoX3NvYy5vIG10a19ldGhfcGF0aC5vIG10a19wcGUubyBtdGtfcHBlX2RlYnVnZnMubyBtdGtfcHBlX29mZmxvYWQub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL01ha2VmaWxlOjg6bXRrX2V0aC0kKENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCkgKz0gbXRrX3dlZC5vIG10a193ZWRfbWN1Lm8gbXRrX3dlZF93by5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGUtOS1pZmRlZiBDT05GSUdfREVCVUdfRlNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZToxMDptdGtfZXRoLSQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKSArPSBtdGtfd2VkX2RlYnVnZnMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL01ha2VmaWxlLTExLWVuZGlmXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKSArPSBtdGtfd2VkX29wcy5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGUtMTMtb2JqLSQoQ09ORklHX05FVF9NRURJQVRFS19TVEFSX0VNQUMpICs9IG10a19zdGFyX2VtYWMub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmM9OTI9bXRrX2Zsb3dfZ2V0X3dkbWFfaW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqYWRkciwgc3RydWN0IG10a193ZG1hX2luZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuYy0xMDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmM6MTA0OlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jLTEwNS1cXHRcXHRyZXR1cm4gLTE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfd2VkLmg9NTY9c3RydWN0IG10a193ZG1hX2luZm8ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3dlZC5oLTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a193ZWQuaDo2NDojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3dlZC5oLTY1LXN0YXRpYyBpbmxpbmUgYm9vbCBtdGtfd2VkX2lzX3YxKHN0cnVjdCBtdGtfd2VkX2h3ICpodylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM9NTA3PW10NzZfZG1hX2dldF9idWYoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlICpxLCBpbnQgaWR4LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy01NDktXFx0XFx0bXQ3Nl9wdXRfcnh3aShkZXYsIHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6NTUwOiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTU1MS1cXHRcXHQvKiB0aGUgV08gTUNVIG93bnMgdGhlIFJYIHBhdGggb25seSBvbiBXRUQgdjIsIG9uIG5ld2VyXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTU2OT1tdDc2X2RtYV9kZXF1ZXVlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSwgYm9vbCBmbHVzaCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtNjE1LVxcdFxcdFxcdHJldHVybiBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6NjE2OiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTYxNy1cXHRcXHQvKiBvbiBXRUQgdjMgdGhlIE1fRE9ORSBiaXQgc2lnbmFscyB0aGF0IFdFRCBpcyBkb25lIHJlYWRpbmdcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM9MTAwMT1tdDc2X2RtYV9yeF9wcm9jZXNzKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSwgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtMTAxMS1cXHRpZiAoKHEtXFx1MDAzZWZsYWdzIFxcdTAwMjYgTVRfUUZMQUdfV0VEX1JST19FTikgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjEwMTI6XFx0ICAgIChJU19FTkFCTEVEKENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTEwMTMtXFx0ICAgICBtdDc2X3F1ZXVlX2lzX3dlZF90eF9mcmVlKHEpKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaD01Mj1tdDc2X2RtYV9oYW5kbGVfcmVhZChzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSwgdTMyIG9mZnNldCwgdTMyICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaC01My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaDo1NDojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaC01NS1cXHRpZiAocS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBNVF9RRkxBR19XRUQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmg9ODA9bXQ3Nl9kbWFfaGFuZGxlX3dyaXRlKHN0cnVjdCBtdDc2X3F1ZXVlICpxLCB1MzIgb2Zmc2V0LCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmgtODEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmg6ODI6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmgtODMtXFx0aWYgKHEtXFx1MDAzZWZsYWdzIFxcdTAwMjYgTVRfUUZMQUdfV0VEKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMjUwPWludCBtdDc2X3dlZF9uZXRfc2V0dXBfdGMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjUyLVxcdFxcdFxcdCAgdm9pZCAqdHlwZV9kYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMjUzOiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjU0LXUzMiBtdDc2X3dlZF9pbml0X3J4X2J1ZihzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCwgaW50IHNpemUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTI2OD1zdGF0aWMgaW5saW5lIGludCBtdDc2X3dlZF9kbWFfc2V0dXAoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlICpxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTI3Mi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTI3MzojZW5kaWYgLyogQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTI3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTEyOTc9c3RhdGljIGlubGluZSBzdHJ1Y3QgbXQ3Nl9kZXYgKm10NzZfd2VkX3RvX2RldihzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjk4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMjk5OiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMzAwLVxcdGlmICh3ZWQtXFx1MDAzZXdsYW4uaGlmMilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMzAxLVxcdFxcdHJldHVybiBjb250YWluZXJfb2Yod2VkLCBzdHJ1Y3QgbXQ3Nl9kZXYsIG1taW8ud2VkX2hpZjIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEzMDI6I2VuZGlmIC8qIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEzMDMtXFx0cmV0dXJuIGNvbnRhaW5lcl9vZih3ZWQsIHN0cnVjdCBtdDc2X2RldiwgbW1pby53ZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jPTE2ODQ9bXQ3OTE1X3NldF9yYWRhcl9iYWNrZ3JvdW5kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTE3MzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jOjE3MzI6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYy0xNzMzLXN0YXRpYyBpbnRcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYz0xNzc2PWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG10NzkxNV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTgyOS1cXHQuc2V0X3JhZGFyX2JhY2tncm91bmQgPSBtdDc5MTVfc2V0X3JhZGFyX2JhY2tncm91bmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jOjE4MzA6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYy0xODMxLVxcdC5uZXRfZmlsbF9mb3J3YXJkX3BhdGggPSBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MTgwMz1pbnQgbXQ3OTE1X21jdV93ZWRfZW5hYmxlX3J4X3N0YXRzKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMTgwNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MTgwNTojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMTgwNi1cXHRzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCA9IFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9NTY1PXN0YXRpYyB1MzIgbXQ3OTE1X3JtdyhzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHUzMiBvZmZzZXQsIHUzMiBtYXNrLCB1MzIgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTU3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM6NTgwOiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtNTgxLXN0YXRpYyB2b2lkIG10NzkxNV9tbWlvX3dlZF91cGRhdGVfcnhfc3RhdHMoc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9NjMzPWludCBtdDc5MTVfbW1pb193ZWRfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB2b2lkICpwZGV2X3B0cixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy02MzUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYzo2MzY6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy02MzctXFx0c3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQgPSBcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTgzMz1zdGF0aWMgdm9pZCBtdDc5OTZfcnJvX2h3X2luaXRfdjMoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy04NDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjg0MTojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTg0Mi1cXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkgXFx1MDAyNlxcdTAwMjYgbXRrX3dlZF9nZXRfcnhfY2FwYSh3ZWQpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtODU0LVxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6ODU1OiNlbmRpZiAvKiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtODU2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTk1Nz1zdGF0aWMgaW50IG10Nzk5Nl93ZWRfcnJvX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMDA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxMDA2OiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTAwNy1cXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTAxMy1cXHRcXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjEwMTQ6I2VuZGlmIC8qIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMDE1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYz0yMzk4PW10Nzk5Nl9uZXRfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjQzMS1cXHRwYXRoLVxcdTAwM2VkZXYgPSBjdHgtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM6MjQzMjojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI0MzMtXFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI0NTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jOjI0NTY6I2lmIGRlZmluZWQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKSB8fCBkZWZpbmVkKENPTkZJR19NVDc5OTZfTlBVKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNDU3LXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM9MjQ1OD1tdDc5OTZfbmV0X3NldHVwX3RjKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI0NjEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYzoyNDYyOiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjQ2My1cXHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gbXQ3OTk2X2h3X2Rldihodyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM9MjU0NT1jb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBtdDc5OTZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI1OTktXFx0Lm5ldF9maWxsX2ZvcndhcmRfcGF0aCA9IG10Nzk5Nl9uZXRfZmlsbF9mb3J3YXJkX3BhdGgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jOjI2MDA6I2lmIGRlZmluZWQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKSB8fCBkZWZpbmVkKENPTkZJR19NVDc5OTZfTlBVKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNjAxLVxcdC5uZXRfc2V0dXBfdGMgPSBtdDc5OTZfbmV0X3NldHVwX3RjLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jPTQzNj1zdGF0aWMgdTMyIG10Nzk5Nl9ybXcoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1MzIgb2Zmc2V0LCB1MzIgbWFzaywgdTMyIHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy00NTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jOjQ1MTojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTQ1Mi1zdGF0aWMgaW50IG10Nzk5Nl9tbWlvX3dlZF9yZXNldChzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYz00ODI9aW50IG10Nzk5Nl9tbWlvX3dlZF9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHZvaWQgKnBkZXZfcHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTQ4NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jOjQ4NTojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTQ4Ni1cXHRzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCA9IFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM9OTMwPWludCBtdDc2X3Rva2VuX2NvbnN1bWUoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3R4d2lfY2FjaGUgKipwdHh3aSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy05NDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjk0ODojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTk0OS1cXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jPTk4Mj1tdDc2X3Rva2VuX3JlbGVhc2Uoc3RydWN0IG10NzZfZGV2ICpkZXYsIGludCB0b2tlbiwgYm9vbCAqd2FrZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy05OTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjk5ODojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTk5OS1cXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYz0yOT1FWFBPUlRfU1lNQk9MX0dQTChtdDc2X3dlZF9yZWxlYXNlX3J4X2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYy0zMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jOjMxOiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jLTMyLXUzMiBtdDc2X3dlZF9pbml0X3J4X2J1ZihzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCwgaW50IHNpemUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jPTE2Nz1FWFBPUlRfU1lNQk9MX0dQTChtdDc2X3dlZF9kbWFfc2V0dXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmM6MTY4OiNlbmRpZiAvKkNPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmMtMTY5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODozODowNy41MzQ0MTY4MTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozODExNjg0MDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhpcyB0YXNrLCB0aGlua2luZyBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOlxuXG4qKkludmVzdGlnYXRpbmcgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgbmV0d29yayBkcml2ZXIgbGFuZHNjYXBlIGhlcmUuIE15IGZpcnN0IG1vdmUgaXMgdG8gY2hlY2sgb3V0IGBkcml2ZXJzL25ldC9kc2EvS2NvbmZpZ2AgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnYC4gVGhlc2UgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgdGhlIGtleXMgdG8gdW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIGFuZCB0YXJnZXQgcGxhdGZvcm1zIGZvciB0aGVzZSBuZXR3b3JrIGRldmljZSBkcml2ZXJzLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW46XG5cbiogICBXaGF0IG90aGVyIGtlcm5lbCBmZWF0dXJlcyBvciBoYXJkd2FyZSBjb21wb25lbnRzIGFyZSB0aGVzZSBEU0EgYW5kIE1lZGlhdGVrIEV0aGVybmV0IGRyaXZlcnMgZGVwZW5kZW50IHVwb24/IEFyZSB0aGVyZSBzcGVjaWZpYyBQSFlzLCBvdGhlciBuZXR3b3JraW5nIHN1YnN5c3RlbXMsIG9yIGJvYXJkLWxldmVsIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkP1xuKiAgIFdoaWNoIFNvQ3MgYW5kIHBsYXRmb3JtcyBhcmUgdGhlc2UgZHJpdmVycyBwcmltYXJpbHkgZGVzaWduZWQgZm9yPyBUaGlzIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZWlyIGludGVuZGVkIHVzZSBjYXNlcyBhbmQgaG93IGJyb2FkbHkgdGhleSdyZSBhcHBsaWNhYmxlLlxuXG5Lbm93aW5nIHRoZSBhbnN3ZXJzIHRvIHRoZXNlIHF1ZXN0aW9ucyB3aWxsIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciBldmFsdWF0aW5nIGhvdyB0aGVzZSBkcml2ZXJzIGZpdCBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZSBhbmQgYW55IGNvbXBhdGliaWxpdHkgY29uc2lkZXJhdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhlc2UgY29uZmlndXJhdGlvbiBkZXRhaWxzIGlzIGVzc2VudGlhbCBmb3IgYW55IGRlZXBlciBhbmFseXNpcyBvciBtb2RpZmljYXRpb24uIExldCdzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGVzIHJldmVhbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4NzcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODozODoxMS4zNDYxMDI5ODNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM3NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzA6XFx0XFxuICAzMTpcXHRjb25maWcgTkVUX0RTQV9NVDc1MzBcXG4gIDMyOlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFxcXCJcXG4gIDMzOlxcdFxcdHNlbGVjdCBORVRfRFNBX1RBR19NVEtcXG4gIDM0OlxcdFxcdHNlbGVjdCBSRUdNQVBfSVJRXFxuICAzNTpcXHRcXHRpbXBseSBORVRfRFNBX01UNzUzMF9NRElPXFxuICAzNjpcXHRcXHRpbXBseSBORVRfRFNBX01UNzUzMF9NTUlPXFxuICAzNzpcXHRcXHRoZWxwXFxuICAzODpcXHRcXHQgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgTWVkaWFUZWsgTVQ3NTMwIGFuZCBNVDc1MzEgRXRoZXJuZXRcXG4gIDM5OlxcdFxcdCAgc3dpdGNoIGNoaXBzLiBNdWx0aS1jaGlwIG1vZHVsZSBNVDc1MzAgaW4gTVQ3NjIxQVQsIE1UNzYyMURBVCxcXG4gIDQwOlxcdFxcdCAgTVQ3NjIxU1QgYW5kIE1UNzYyM0FJIFNvQ3MsIGFuZCBidWlsdC1pbiBzd2l0Y2ggaW4gTVQ3OTg4IFNvQyBhcmVcXG4gIDQxOlxcdFxcdCAgc3VwcG9ydGVkIGFzIHdlbGwuXFxuICA0MjpcXHRcXG4gIDQzOlxcdGNvbmZpZyBORVRfRFNBX01UNzUzMF9NRElPXFxuICA0NDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIE1ESU8gaW50ZXJmYWNlIGRyaXZlclxcXCJcXG4gIDQ1OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQV9NVDc1MzBcXG4gIDQ2OlxcdFxcdHNlbGVjdCBNRURJQVRFS19HRV9QSFlcXG4gIDQ3OlxcdFxcdHNlbGVjdCBQQ1NfTVRLX0xZTlhJXFxuICA0ODpcXHRcXHRoZWxwXFxuICA0OTpcXHRcXHQgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgTWVkaWFUZWsgTVQ3NTMwIGFuZCBNVDc1MzEgc3dpdGNoXFxuICA1MDpcXHRcXHQgIGNoaXBzIHdoaWNoIGFyZSBjb25uZWN0ZWQgdmlhIE1ESU8sIGFzIHdlbGwgYXMgbXVsdGktY2hpcFxcbiAgNTE6XFx0XFx0ICBtb2R1bGUgTVQ3NTMwIHdoaWNoIGNhbiBiZSBmb3VuZCBpbiB0aGUgTVQ3NjIxQVQsIE1UNzYyMURBVCxcXG4gIDUyOlxcdFxcdCAgTVQ3NjIxU1QgYW5kIE1UNzYyM0FJIFNvQ3MuXFxuICA1MzpcXHRcXG4gIDU0OlxcdGNvbmZpZyBORVRfRFNBX01UNzUzMF9NTUlPXFxuICA1NTpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIE1NSU8gaW50ZXJmYWNlIGRyaXZlclxcXCJcXG4gIDU2OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQV9NVDc1MzBcXG4gIDU3OlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuICA1ODpcXHRcXHRpbXBseSBNRURJQVRFS19HRV9TT0NfUEhZXFxuICA1OTpcXHRcXHRoZWxwXFxuICA2MDpcXHRcXHQgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgYnVpbHQtaW4gRXRoZXJuZXQgc3dpdGNoIGZvdW5kXFxuICA2MTpcXHRcXHQgIGluIHRoZSBNZWRpYVRlayBNVDc5ODggU29DLlxcbiAgNjI6XFx0XFx0ICBUaGUgc3dpdGNoIGlzIGEgc2ltaWxhciBkZXNpZ24gYXMgTVQ3NTMxLCBidXQgdGhlIHN3aXRjaCByZWdpc3RlcnNcXG4gIDYzOlxcdFxcdCAgYXJlIGRpcmVjdGx5IG1hcHBlZCBpbnRvIHRoZSBTb0NzIHJlZ2lzdGVyIHNwYWNlIHJhdGhlciB0aGFuIGJlaW5nXFxuICA2NDpcXHRcXHQgIGFjY2Vzc2libGUgdmlhIE1ESU8uXFxuICA2NTpcXHRcXG4gIDY2OlxcdGNvbmZpZyBORVRfRFNBX01UNzYyOFxcbiAgNjc6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzYyOCBFbWJlZGRlZCBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFxcXCJcXG4gIDY4OlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IChTT0NfTVQ3NjIwIHx8IENPTVBJTEVfVEVTVClcXG4gIDY5OlxcdFxcdHNlbGVjdCBORVRfRFNBX1RBR19NVDc2MjhcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6Mzg6MTEuMzQ2MTY5MzgzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0ODA4MjQ2MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkV4YW1pbmluZyB0aGUgTWVkaWF0ZWsgRXRoZXJuZXQgS2NvbmZpZyBGaWxlKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBNZWRpYXRlayBFdGhlcm5ldCBkcml2ZXIgY29uZmlndXJhdGlvbi4gTGV0J3Mgc3RhcnQgYnkgdGFraW5nIGEgbG9vayBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZ2AuIEknbSBndWVzc2luZyB0aGlzIGZpbGUgd2lsbCBwcm92aWRlIHRoZSBmb3VuZGF0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZHJpdmVyIOKAkyB0aGluZ3MgbGlrZSBlbmFibGluZy9kaXNhYmxpbmcgdGhlIGRyaXZlciwgc2VsZWN0aW5nIHNwZWNpZmljIE1lZGlhdGVrIEV0aGVybmV0IGNvbnRyb2xsZXIgbW9kZWxzLCBwb3RlbnRpYWxseSBvcHRpb25zIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlcyBvciB2YXJpYXRpb25zLCBhbmQgcHJvYmFibHkgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgY29tcG9uZW50cy4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHN0cnVjdHVyZSBhbmQgZGVwZW5kZW5jaWVzIGRlZmluZWQgaGVyZSB0byBwcm9wZXJseSBjb25maWd1cmUgYW5kIHBvc3NpYmx5IHRyb3VibGVzaG9vdCBhbnl0aGluZyByZWxhdGVkIHRvIE1lZGlhdGVrIEV0aGVybmV0IGNvbnRyb2xsZXJzLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIHRoZSBkZWZhdWx0IHNldHRpbmdzLCBhbnkgY29uZGl0aW9uYWwgY29uZmlndXJhdGlvbnMsIGFuZCBwYXJ0aWN1bGFybHkgYW55IHRyaWNreSBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBuZXR3b3JraW5nIG9yIGhhcmR3YXJlIHN1YnN5c3RlbXMuIEhvcGVmdWxseSwgaXTigJlzIHdlbGwtb3JnYW5pemVkIGFuZCBjbGVhcmx5IGRvY3VtZW50ZWQsIGJ1dCBJJ20gcHJlcGFyZWQgZm9yIGEgYml0IG9mIGEgZGVlcCBkaXZlIGlmIG5lY2Vzc2FyeS4gSXQncyB0aW1lIHRvIGdldCBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB0aGUgZnJhbWV3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjkxOSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6Mzg6MTMuODI2OTk3MjkxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMzY1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgTkVUX1ZFTkRPUl9NRURJQVRFS1xcbiAgIDM6XFx0XFx0Ym9vbCBcXFwiTWVkaWFUZWsgZGV2aWNlc1xcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gQVJDSF9NRURJQVRFSyB8fCBBUkNIX0FJUk9IQSB8fCBTT0NfTVQ3NjIxIHx8IFNPQ19NVDc2MjAgfHwgQ09NUElMRV9URVNUXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIElmIHlvdSBoYXZlIGEgTWVkaWF0ZWsgU29DIHdpdGggZXRoZXJuZXQsIHNheSBZLlxcbiAgIDc6XFx0XFxuICAgODpcXHRpZiBORVRfVkVORE9SX01FRElBVEVLXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNvbmZpZyBORVRfTUVESUFURUtfU09DX1dFRFxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBBUkNIX01FRElBVEVLIHx8IENPTVBJTEVfVEVTVFxcbiAgMTI6XFx0XFx0ZGVmX2Jvb2wgTkVUX01FRElBVEVLX1NPQyAhPSBuXFxuICAxMzpcXHRcXG4gIDE0OlxcdGNvbmZpZyBORVRfTUVESUFURUtfU09DXFxuICAxNTpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgU29DIEdpZ2FiaXQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4gIDE2OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQSB8fCAhTkVUX0RTQVxcbiAgMTc6XFx0XFx0c2VsZWN0IFBJTkNUUkxcXG4gIDE4OlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAxOTpcXHRcXHRzZWxlY3QgRElNTElCXFxuICAyMDpcXHRcXHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1JcXG4gIDIxOlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gIDIyOlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xfU1RBVFNcXG4gIDIzOlxcdFxcdHNlbGVjdCBQQ1NfTVRLX0xZTlhJXFxuICAyNDpcXHRcXHRzZWxlY3QgUkVHTUFQX01NSU9cXG4gIDI1OlxcdFxcdGhlbHBcXG4gIDI2OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIGdpZ2FiaXQgZXRoZXJuZXQgTUFDcyBpbiB0aGVcXG4gIDI3OlxcdFxcdCAgTWVkaWFUZWsgU29DIGZhbWlseS5cXG4gIDI4OlxcdFxcbiAgMjk6XFx0Y29uZmlnIE5FVF9NRURJQVRFS19TVEFSX0VNQUNcXG4gIDMwOlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBTVEFSIEV0aGVybmV0IE1BQyBzdXBwb3J0XFxcIlxcbiAgMzE6XFx0XFx0c2VsZWN0IFBIWUxJQlxcbiAgMzI6XFx0XFx0c2VsZWN0IFJFR01BUF9NTUlPXFxuICAzMzpcXHRcXHRoZWxwXFxuICAzNDpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBldGhlcm5ldCBNQUMgSVAgZmlyc3QgdXNlZCBvblxcbiAgMzU6XFx0XFx0ICBNZWRpYVRlayBNVDg1KiogU29Dcy5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0ZW5kaWYgI05FVF9WRU5ET1JfTUVESUFURUtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6Mzg6MTMuODI3MTAzNDAxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM3MjE0Njk0MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNZWRpYXRlayBFdGhlcm5ldCBTT0MgRHJpdmVyKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgbXRrX2V0aF9zb2MuY2AgZHJpdmVyLiBGcm9tIHdoYXQgSSdtIHNlZWluZywgdGhpcyBpcyB0aGUgZ28tdG8gZHJpdmVyIGZvciBgTkVUX01FRElBVEVLX1NPQ2AuIEl0cyBwdXJwb3NlIGlzIHRvIGhhbmRsZSB0aGUgTWVkaWF0ZWsgU3lzdGVtLW9uLUNoaXAgZXRoZXJuZXQgY29udHJvbGxlcnMsIHNwZWNpZmljYWxseSB0aGUgb25lcyB0aGF0IGFyZSBkZXNjcmliZWQgdXNpbmcgT0YgZGV2aWNlIHRyZWVzLiBJJ20gc2VlaW5nIGl0J3MgZGVzaWduZWQgdG8gaW50ZXJmYWNlIHdpdGggZGV2aWNlcyBkZXNjcmliZWQgd2l0aCB0aGluZ3MgbGlrZSBgbWVkaWF0ZWssbXQyNzAxLWV0aGAsIGBtZWRpYXRlayxtdDc2MjItZXRoYCwgYG1lZGlhdGVrLG10NzYyMy1ldGhgLCBhbmQgYG1lZGlhdGVrLG10Nzk4Ni1ldGhgIGFuZCBzaW1pbGFyIGRldmljZSB0cmVlIGVudHJpZXMuIE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBkcml2ZXIncyBPRiBtYXRjaCB0YWJsZS4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVuczsgd2hlcmUgaXQgZGVjaWRlcyB3aGljaCBzcGVjaWZpYyBNZWRpYXRlayBldGhlcm5ldCBoYXJkd2FyZSBpdCdzIHN1cHBvc2VkIHRvIG1hbmFnZSBiYXNlZCBvbiB0aGUgZGV2aWNlIHRyZWUgbm9kZSBpbmZvcm1hdGlvbi4gVGhhdCdsbCBiZSBrZXkgdG8gZmlndXJpbmcgb3V0IGhvdyBpdCdzIHN0cnVjdHVyZWQgdG8gd29yayB3aXRoIHRoZSBkaWZmZXJlbnQgU09Dcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc2ODQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODozODoxNy41NDg1NzQ1NzdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NDM1MDA5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvZl9tdGtfbWF0Y2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM9NTY0MT1zdGF0aWMgY29uc3Qgc3RydWN0IG10a19zb2NfZGF0YSBydDUzNTBfZGF0YSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNTY2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjU2NjQ6Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9tdGtfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTU2NjUtXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJtZWRpYXRlayxtdDI3MDEtZXRoXFxcIiwgLmRhdGEgPSBcXHUwMDI2bXQyNzAxX2RhdGEgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNTY3NS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6NTY3NjpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvZl9tdGtfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNTY3Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jPTU2Nzg9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNTY4Mi1cXHRcXHQubmFtZSA9IFxcXCJtdGtfc29jX2V0aFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYzo1NjgzOlxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IG9mX210a19tYXRjaCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTU2ODQtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmg9MTM2OT1zdHJ1Y3QgbXRrX21hYyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oLTEzODUtLyogdGhlIHN0cnVjdCBkZXNjcmliaW5nIHRoZSBTb0MuIHRoZXNlIGFyZSBkZWNsYXJlZCBpbiB0aGUgc29jX3h5ei5jIGZpbGVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaDoxMzg2OmV4dGVybiBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG9mX210a19tYXRjaFtdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmgtMTM4Ny1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6Mzg6MTcuOTMyOTMxMjIxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE1Mjk0NDAxOTM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIFJlYWNoYWJpbGl0eSBmb3IgRnV6emluZzogTWVkaWFUZWsgRXRoZXJuZXQgRHJpdmVycyBvbiBhbWQ2NCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBpcyB0byBkZXRlcm1pbmUgaWYgd2UgY2FuIGVmZmVjdGl2ZWx5IGZ1enogdGhlc2UgTWVkaWFUZWsgZHJpdmVycywgYG10NzUzMGAgYW5kIGBtdGtfZXRoX3NvY2AsIG9uIGFuIGFtZDY0IHBsYXRmb3JtIHdpdGhpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQuIEFzIGFuIGV4cGVydCwgSSBrbm93IHRoYXQgcmVhY2hhYmlsaXR5IGlzICp0aGUqIGtleSBmYWN0b3IuIElmIHRoZSBjb2RlIGNhbid0IGV4ZWN1dGUsIGZ1enppbmcgaXMgYSB3YXN0ZSBvZiByZXNvdXJjZXMuXG5cbkZpcnN0LCBgbXQ3NTMwYC4gVGhpcyBpcyBhIERTQSBzd2l0Y2ggZHJpdmVyLiBJdCdzIGRlc2lnbmVkIHRvIHByb2JlIHZpYSBNRElPIGJ1c2VzICh1c2luZyBgbXQ3NTMwLW1kaW8uY2ApIG9yIHBsYXRmb3JtIGRldmljZXMgKGBtdDc1MzAtbW1pby5jYCksIGFuZCBpdCByZWxpZXMgb24gc3BlY2lmaWMgZGV2aWNlIHRyZWUgY29tcGF0aWJsZSBzdHJpbmdzLiBUaGVzZSBzdHJpbmdzIGlkZW50aWZ5IGl0IGFzIGJlbG9uZ2luZyB0byB0aGUgTWVkaWFUZWsgZmFtaWx5IChNVDc2MjEsIE1UNzUzMCwgTVQ3NTMxLCBldGMuKSBvciB0aGUgQWlyb2hhIEVONzU4MC4gRFNBIGRyaXZlcnMsIGZ1bmRhbWVudGFsbHksIG5lZWQgYSBEZXZpY2UgVHJlZSAob3IgTU1JTykuIFRoaXMgcmVxdWlyZXMgYSBjb25uZWN0aW9uLCBhdCBtaW5pbXVtLCB0byBhbiBNRElPIGJ1cyBhbmQgYSBEU0EgbWFzdGVyIG5ldGRldi5cblxuVGhlbiwgd2UgaGF2ZSBgbXRrX2V0aF9zb2MuY2AuIFRoaXMgaXMgYSBNZWRpYVRlayBwbGF0Zm9ybSBkcml2ZXIsIG1hdGNoaW5nIGl0cyBkZXZpY2UgdHJlZSBlbnRyaWVzOiBgbXQyNzAxLWV0aGAsIGBtdDc2MjItZXRoYCwgYG10NzYyMy1ldGhgLCBhbmQgc28gb24sIHVwIHRvIGBtdDc5ODgtZXRoYC4gVGhlc2UgbWF0Y2ggZm9yIHNwZWNpZmljIE1lZGlhVGVrIFNvQ3MuXG5cbk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGFyZSB0aGVzZSBkcml2ZXJzICpzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUqIG9uIGFtZDY0PyBUaGUgZnV6emluZyBndWlkZWxpbmVzIGFyZSBjbGVhci4gQ29kZSBpcyBjb25zaWRlcmVkIHVucmVhY2hhYmxlIGlmIGl0IHJlcXVpcmVzIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBlbnZpcm9ubWVudHMuIFRoaXMgaW5jbHVkZXMgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMgdGhhdCByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIEFTSUNzIG9yIFBDSSBjYXJkcy5cblxuSW4gdGhpcyBzcGVjaWZpYyBzY2VuYXJpbywgSSBuZWVkIHRvIGV2YWx1YXRlIHRoZSBlbnZpcm9ubWVudC4gRG8gd2UgaGF2ZSB2aXJ0dWFsIGRldmljZXMsIFBDSSBkZXZpY2VzLCBVU0IgZGV2aWNlcywgb3IgbW9ja3MgYXZhaWxhYmxlIGZvciBNZWRpYVRlayBTb0MgRXRoZXJuZXQgb3IgdGhlIE1UNzUzMCBEU0Egc3dpdGNoIGluIFFFTVUgeDg2XzY0PyBOby4gVGhlIGBtdDc1MzBgIGlzIGEgc3dpdGNoIGNoaXAgZGVzaWduZWQgZm9yIE1lZGlhVGVrIEFSTS9NSVBTIHJvdXRlcnMgYW5kIGdhdGV3YXlzLiBUaGUgYG10a19ldGhfc29jYCBpcyB0aGUgaW50ZWdyYXRlZCBFdGhlcm5ldCBjb250cm9sbGVyICpvbiogTWVkaWFUZWsgU29DcyBsaWtlIE1UNzYyMSwgTVQ3NjIyLCBNVDc2MjMsIE1UNzk4MSwgTVQ3OTg2LCBhbmQgTVQ3OTg4LiBUaGVzZSBhcmUgdmVyeSBTb0Mtc3BlY2lmaWMgcGxhdGZvcm0vT0YvTURJTyBkZXZpY2VzLiBUaGV5ICpyZXF1aXJlKiB0aGUgc3BlY2lmaWMgTWVkaWFUZWsgU29DIGhhcmR3YXJlICphbmQqIGEgcmVsZXZhbnQgRFRTIGZpbGUgZm9yIHRoYXQgcGFydGljdWxhciBoYXJkd2FyZS4gUUVNVSBydW5uaW5nIG9uIGFtZDY0LCBlc3BlY2lhbGx5IGluIGEgc3RhbmRhcmQgY29uZmlndXJhdGlvbiwgZG9lc24ndCBlbXVsYXRlIHRoZXNlIFNvQ3MuXG5cblNvLCBjYW4gZWl0aGVyIGRyaXZlciBiZSBwcm9iZWQgb3IgZXhlY3V0ZWQgb24gYW1kNjQgKndpdGhvdXQqIGFjdHVhbCBNZWRpYVRlayBoYXJkd2FyZT8gVGhlIGFuc3dlciBpcyBhIGRlZmluaXRpdmUgbm8uIE5laXRoZXIgZHJpdmVyIGlzIFBDSSBvciBVU0IuIE5laXRoZXIgaXMgaW5zdGFudGlhdGVkIHZpYSBhbnkgdmlydHVhbCBidXMuIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLCBjb25maXJtZWQgaW4gdGhlIHByb21wdCwgaXMgYW1kNjQuXG5cbkxldCdzIGRvIGEgcXVpY2sgZG91YmxlLWNoZWNrLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jYCwgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oYC4gVGhlc2UgYXJlICphbGwqIHBhcnQgb2YgdGhlIE1lZGlhVGVrIEV0aGVybmV0L0RTQSBzd2l0Y2ggZHJpdmVyIHN1aXRlIGRlc2lnbmVkIHNwZWNpZmljYWxseSBmb3IgTWVkaWFUZWsgU29Dcy4gVGhleSByZXF1aXJlIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBvciBhIGRldmljZS10cmVlIHRoYXQgZGVzY3JpYmVzIHRoaXMgcGxhdGZvcm0uXG5cblRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyB0aGF0IHRoaXMgZmFsbHMgc3F1YXJlbHkgaW50byB0aGUgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGVcIiBjYXRlZ29yeSBvbiBhbWQ2NC4gVGhlIGNvZGUgbW9kaWZpY2F0aW9ucyBhcmUgbm90IHJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQuXG5cbk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoZSBgbXRrX2V0aF9zb2NgIGFuZCBgbXQ3NTMwYCBkcml2ZXJzIGFyZSBwbGF0Zm9ybS9PRi1iYXNlZCBkcml2ZXJzIGZvciBNZWRpYVRlayBBUk0vTUlQUyBTb0MgaGFyZHdhcmUuIFRoZXkgbmVlZCB0aGUgcGh5c2ljYWwgTWVkaWFUZWsgU29DcyBvciBTb0Mtc3BlY2lmaWMgZGV2aWNlIHRyZWUgYmluZGluZ3MgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgYW1kNjQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnQuIFRoaXMgbWFrZXMgdGhlbSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcgb24gYW1kNjQuIEknbSBnb2luZyB0byBzZXQgdGhlIHJlc3VsdCB0byByZWZsZWN0IHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NjA5LCJPdXRwdXRUb2tlbnMiOjE3MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6Mzg6MzMuMjI3MzM2MDg4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIyMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lZGlhVGVrIEdpZ2FiaXQgRXRoZXJuZXQgU29DIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYykgYW5kIHRoZSBNZWRpYVRlayBNVDc1MzAgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL210NzUzMC5jKS4gVGhlc2UgZHJpdmVycyBhcmUgc3BlY2lmaWMgdG8gTWVkaWFUZWsgQVJNL01JUFMgU29DcyAoc3VjaCBhcyBNVDc2MjEsIE1UNzk4MSwgTVQ3OTg2LCBNVDc5ODgpIGFuZCByZXF1aXJlIFNvQy1zcGVjaWZpYyBkZXZpY2UgdHJlZXMgYW5kIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBhbWQ2NCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIGFtZDY0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lZGlhVGVrIEdpZ2FiaXQgRXRoZXJuZXQgU29DIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYykgYW5kIHRoZSBNZWRpYVRlayBNVDc1MzAgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL210NzUzMC5jKS4gVGhlc2UgZHJpdmVycyBhcmUgc3BlY2lmaWMgdG8gTWVkaWFUZWsgQVJNL01JUFMgU29DcyAoc3VjaCBhcyBNVDc2MjEsIE1UNzk4MSwgTVQ3OTg2LCBNVDc5ODgpIGFuZCByZXF1aXJlIFNvQy1zcGVjaWZpYyBkZXZpY2UgdHJlZXMgYW5kIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBhbWQ2NCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIGFtZDY0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6Mzg6MzMuMjI3Mzc0MjU4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflow45bv9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-04 18:17:38 +0000 UTC FinishedAt: 2026-09-04 18:38:34 +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+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lZGlhVGVrIEdpZ2FiaXQgRXRoZXJuZXQgU29DIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYykgYW5kIHRoZSBNZWRpYVRlayBNVDc1MzAgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL210NzUzMC5jKS4gVGhlc2UgZHJpdmVycyBhcmUgc3BlY2lmaWMgdG8gTWVkaWFUZWsgQVJNL01JUFMgU29DcyAoc3VjaCBhcyBNVDc2MjEsIE1UNzk4MSwgTVQ3OTg2LCBNVDc5ODgpIGFuZCByZXF1aXJlIFNvQy1zcGVjaWZpYyBkZXZpY2UgdHJlZXMgYW5kIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBhbWQ2NCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIGFtZDY0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODozNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGNjMmE0MmQzNzAzMTY1ODgxZDQ1YzI3YjQ1MWNmNDAyMzUyYWVhYTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCA0IDE4OjM3OjUwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuaW5kZXggMmI3YmUwOTFjMDU2ZS4uM2U2MWViM2MyYjFlMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXG5AQCAtMzE3MiwyMyAmIzQzOzMxNzIsMzEgQEAgc3RhdGljIHZvaWQgbXQ3NTN4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBcbiBcdGNvbmZpZy1cdTAwM2VtYWNfY2FwYWJpbGl0aWVzID0gTUFDX0FTWU1fUEFVU0UgfCBNQUNfU1lNX1BBVVNFO1xuIFxuJiM0MztcdHByaXYtXHUwMDNlaW5mby1cdTAwM2VtYWNfcG9ydF9nZXRfY2FwcyhkcywgcG9ydCwgY29uZmlnKTtcbiYjNDM7XG4gXHQvKiBUaGUgRU43NTI4IEdQSFlzIHJlcG9ydCBFRUUgY2FwYWJpbGl0eSwgYnV0IG5lZ290aWF0aW5nIEVFRSB3aXRoXG4gXHQgKiBjb21tb24gbGluayBwYXJ0bmVycyAoZS5nLiBSZWFsdGVrIEdiRSBOSUNzKSByZXN1bHRzIGluIGFuIHVuc3RhYmxlXG4gXHQgKiBsaW5rIHdpdGggZHJvcHBlZCBmcmFtZXMuIExlYXZlIHRoZSBMUEkgY2FwYWJpbGl0aWVzIGVtcHR5IHNvIHRoYXRcbiBcdCAqIHBoeWxpbmsgZGlzYWJsZXMgRUVFIG9uIHRoZXNlIFBIWXMgYW5kIHJlZnVzZXMgdG8gZW5hYmxlIGl0IGZyb21cbiBcdCAqIHVzZXJzcGFjZS5cbiBcdCAqL1xuLVx0aWYgKHByaXYtXHUwMDNlaWQgIT0gSURfRU43NTI4KSB7XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlaWQgIT0gSURfRU43NTI4IFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBjb25maWctXHUwMDNlbWFjX2NhcGFiaWxpdGllcyBcdTAwMjYgKE1BQ18xMDBGRCB8IE1BQ18xMDAwRkQpKSB7XG4gXHRcdHUzMiBlZWVjciA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzWF9QTUVFRUNSX1AocG9ydCkpO1xuIFxuLVx0XHRjb25maWctXHUwMDNlbHBpX2NhcGFiaWxpdGllcyA9IE1BQ18xMDBGRCB8IE1BQ18xMDAwRkQgfCBNQUNfMjUwMEZEO1xuJiM0MztcdFx0LyogTFBJIGFib3ZlIDEgR2JwcyBpcyBub3Qgc3VwcG9ydGVkICovXG4mIzQzO1x0XHRjb25maWctXHUwMDNlbHBpX2NhcGFiaWxpdGllcyA9IGNvbmZpZy1cdTAwM2VtYWNfY2FwYWJpbGl0aWVzIFx1MDAyNlxuJiM0MztcdFx0XHRcdFx0ICAgKE1BQ18xMDBGRCB8IE1BQ18xMDAwRkQpO1xuJiM0MztcdFx0cGh5X2ludGVyZmFjZV9jb3B5KGNvbmZpZy1cdTAwM2VscGlfaW50ZXJmYWNlcyxcbiYjNDM7XHRcdFx0XHQgICBjb25maWctXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuJiM0MztcdFx0X19jbGVhcl9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCxcbiYjNDM7XHRcdFx0ICAgIGNvbmZpZy1cdTAwM2VscGlfaW50ZXJmYWNlcyk7XG4mIzQzO1xuIFx0XHQvKiB0eF9scGlfdGltZXIgc2hvdWxkIGJlIGluIG1pY3Jvc2Vjb25kcy4gVGhlIHRpbWUgdW5pdHMgZm9yXG4gXHRcdCAqIExQSSB0aHJlc2hvbGQgYXJlIHVuc3BlY2lmaWVkLlxuIFx0XHQgKi9cbiBcdFx0Y29uZmlnLVx1MDAzZWxwaV90aW1lcl9kZWZhdWx0ID0gRklFTERfR0VUKExQSV9USFJFU0hfTUFTSywgZWVlY3IpO1xuIFx0fVxuLVxuLVx0cHJpdi1cdTAwM2VpbmZvLVx1MDAzZW1hY19wb3J0X2dldF9jYXBzKGRzLCBwb3J0LCBjb25maWcpO1xuIH1cbiBcbiBzdGF0aWMgaW50IG10NzUzeF9wY3NfdmFsaWRhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmNcbmluZGV4IGJlM2JkMDI1YzQxYTEuLmZkN2E0OWFlODhkMDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jXG5AQCAtNDgyOCw3ICYjNDM7NDgyOCw3IEBAIHN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucClcbiBcdHBoeV9pbnRlcmZhY2VfdCBwaHlfbW9kZTtcbiBcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xuIFx0c3RydWN0IG10a19tYWMgKm1hYztcbi1cdGludCBpZCwgZXJyO1xuJiM0MztcdGludCBpZCwgZXJyLCBpO1xuIFx0aW50IHR4cXMgPSAxO1xuIFx0dTMyIHZhbDtcbiBcbkBAIC00OTA3LDggJiM0Mzs0OTA3LDggQEAgc3RhdGljIGludCBtdGtfYWRkX21hYyhzdHJ1Y3QgbXRrX2V0aCAqZXRoLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuIFx0bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLnR5cGUgPSBQSFlMSU5LX05FVERFVjtcbiBcdG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzID0gTUFDX0FTWU1fUEFVU0UgfCBNQUNfU1lNX1BBVVNFIHxcbiBcdFx0TUFDXzEwIHwgTUFDXzEwMCB8IE1BQ18xMDAwIHwgTUFDXzI1MDBGRDtcbi1cdG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfY2FwYWJpbGl0aWVzID0gTUFDXzEwMEZEIHwgTUFDXzEwMDBGRCB8XG4tXHRcdE1BQ18yNTAwRkQ7XG4mIzQzO1x0LyogTFBJIGFib3ZlIDEgR2JwcyBpcyBub3Qgc3VwcG9ydGVkICovXG4mIzQzO1x0bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMgPSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEO1xuIFx0bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV90aW1lcl9kZWZhdWx0ID0gMTAwMDtcbiBcbiBcdC8qIE1UNzYyMyBnbWFjMCBpcyBub3cgbWlzc2luZyBpdHMgc3BlZWQtc3BlY2lmaWMgUExMIGNvbmZpZ3VyYXRpb25cbkBAIC00OTY2LDYgJiM0Mzs0OTY2LDE4IEBAIHN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucClcbiBcdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCxcbiBcdFx0XHQgIG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4gXG4mIzQzO1x0LyogTFBJIHdha2UtdXAgdGltaW5nIGlzIG9ubHkgdmVyaWZpZWQgb24gTVRLX0dNQUNfRUVFIFNvQ3MgKi9cbiYjNDM7XHRpZiAoTVRLX0hBU19DQVBTKGV0aC1cdTAwM2Vzb2MtXHUwMDNlY2FwcywgTVRLX0dNQUNfRUVFKSkge1xuJiM0MztcdFx0cGh5X2ludGVyZmFjZV9jb3B5KG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfaW50ZXJmYWNlcyxcbiYjNDM7XHRcdFx0XHQgICBtYWMtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuJiM0MztcdFx0X19jbGVhcl9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCxcbiYjNDM7XHRcdFx0ICAgIG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfaW50ZXJmYWNlcyk7XG4mIzQzO1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBQSFlfSU5URVJGQUNFX01PREVfTUFYOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdFx0aWYgKG10a19pbnRlcmZhY2VfbW9kZV9pc194Z21paShldGgsIGkpKVxuJiM0MztcdFx0XHRcdF9fY2xlYXJfYml0KGksXG4mIzQzO1x0XHRcdFx0XHQgICAgbWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9pbnRlcmZhY2VzKTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNm1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZyxcbiBcdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKG1hYy1cdTAwM2VvZl9ub2RlKSxcbiBcdFx0XHRcdCBwaHlfbW9kZSwgbWFjX29wcyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmhcbmluZGV4IDAxNjhlMmZiYzYxOTcuLjg4YTliM2IyM2JlYTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oXG5AQCAtOTk0LDYgJiM0Mzs5OTQsNyBAQCBlbnVtIG1rdF9ldGhfY2FwYWJpbGl0aWVzIHtcbiBcdE1US19VM19DT1BIWV9WMl9CSVQsXG4gXHRNVEtfU1JBTV9CSVQsXG4gXHRNVEtfMzZCSVRfRE1BX0JJVCxcbiYjNDM7XHRNVEtfR01BQ19FRUVfQklULFxuIFxuIFx0LyogTVVYIEJJVFMqL1xuIFx0TVRLX0VUSF9NVVhfR0RNMV9UT19HTUFDMV9FU1dfQklULFxuQEAgLTEwMzQsNiAmIzQzOzEwMzUsNyBAQCBlbnVtIG1rdF9ldGhfY2FwYWJpbGl0aWVzIHtcbiAjZGVmaW5lIE1US19VM19DT1BIWV9WMlx0XHRCSVRfVUxMKE1US19VM19DT1BIWV9WMl9CSVQpXG4gI2RlZmluZSBNVEtfU1JBTVx0XHRCSVRfVUxMKE1US19TUkFNX0JJVClcbiAjZGVmaW5lIE1US18zNkJJVF9ETUFcdEJJVF9VTEwoTVRLXzM2QklUX0RNQV9CSVQpXG4mIzQzOyNkZWZpbmUgTVRLX0dNQUNfRUVFXHRcdEJJVF9VTEwoTVRLX0dNQUNfRUVFX0JJVClcbiBcbiAjZGVmaW5lIE1US19FVEhfTVVYX0dETTFfVE9fR01BQzFfRVNXXHRcdFxcXG4gXHRCSVRfVUxMKE1US19FVEhfTVVYX0dETTFfVE9fR01BQzFfRVNXX0JJVClcbkBAIC0xMTE3LDcgJiM0MzsxMTE5LDcgQEAgZW51bSBta3RfZXRoX2NhcGFiaWxpdGllcyB7XG4gI2RlZmluZSBNVDc5ODFfQ0FQUyAgKE1US19HTUFDMV9TR01JSSB8IE1US19HTUFDMl9TR01JSSB8IE1US19HTUFDMl9HRVBIWSB8IFxcXG4gXHRcdCAgICAgIE1US19NVVhfR01BQzEyX1RPX0dFUEhZX1NHTUlJIHwgTVRLX1FETUEgfCBcXFxuIFx0XHQgICAgICBNVEtfTVVYX1UzX0dNQUMyX1RPX1FQSFkgfCBNVEtfVTNfQ09QSFlfVjIgfCBcXFxuLVx0XHQgICAgICBNVEtfUlNUQ1RSTF9QUEUxIHwgTVRLX1NSQU0pXG4mIzQzO1x0XHQgICAgICBNVEtfUlNUQ1RSTF9QUEUxIHwgTVRLX1NSQU0gfCBNVEtfR01BQ19FRUUpXG4gXG4gI2RlZmluZSBNVDc5ODZfQ0FQUyAgKE1US19HTUFDMV9TR01JSSB8IE1US19HTUFDMl9TR01JSSB8IFxcXG4gXHRcdCAgICAgIE1US19NVVhfR01BQzEyX1RPX0dFUEhZX1NHTUlJIHwgTVRLX1FETUEgfCBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjM3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWRpYVRlayBHaWdhYml0IEV0aGVybmV0IFNvQyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMpIGFuZCB0aGUgTWVkaWFUZWsgTVQ3NTMwIHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYykuIFRoZXNlIGRyaXZlcnMgYXJlIHNwZWNpZmljIHRvIE1lZGlhVGVrIEFSTS9NSVBTIFNvQ3MgKHN1Y2ggYXMgTVQ3NjIxLCBNVDc5ODEsIE1UNzk4NiwgTVQ3OTg4KSBhbmQgcmVxdWlyZSBTb0Mtc3BlY2lmaWMgZGV2aWNlIHRyZWVzIGFuZCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiBhbWQ2NC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjYzJhNDJkMzcwMzE2NTg4MWQ0NWMyN2I0NTFjZjQwMjM1MmFlYWExCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBTZXAgNCAxODozNzo1MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYwppbmRleCAyYjdiZTA5MWMwNTZlLi4zZTYxZWIzYzJiMWUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jCkBAIC0zMTcyLDIzICYjNDM7MzE3MiwzMSBAQCBzdGF0aWMgdm9pZCBtdDc1M3hfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LAogCiAJY29uZmlnLSZndDttYWNfY2FwYWJpbGl0aWVzID0gTUFDX0FTWU1fUEFVU0UgfCBNQUNfU1lNX1BBVVNFOwogCiYjNDM7CXByaXYtJmd0O2luZm8tJmd0O21hY19wb3J0X2dldF9jYXBzKGRzLCBwb3J0LCBjb25maWcpOwomIzQzOwogCS8qIFRoZSBFTjc1MjggR1BIWXMgcmVwb3J0IEVFRSBjYXBhYmlsaXR5LCBidXQgbmVnb3RpYXRpbmcgRUVFIHdpdGgKIAkgKiBjb21tb24gbGluayBwYXJ0bmVycyAoZS5nLiBSZWFsdGVrIEdiRSBOSUNzKSByZXN1bHRzIGluIGFuIHVuc3RhYmxlCiAJICogbGluayB3aXRoIGRyb3BwZWQgZnJhbWVzLiBMZWF2ZSB0aGUgTFBJIGNhcGFiaWxpdGllcyBlbXB0eSBzbyB0aGF0CiAJICogcGh5bGluayBkaXNhYmxlcyBFRUUgb24gdGhlc2UgUEhZcyBhbmQgcmVmdXNlcyB0byBlbmFibGUgaXQgZnJvbQogCSAqIHVzZXJzcGFjZS4KIAkgKi8KLQlpZiAocHJpdi0mZ3Q7aWQgIT0gSURfRU43NTI4KSB7CiYjNDM7CWlmIChwcml2LSZndDtpZCAhPSBJRF9FTjc1MjggJmFtcDsmYW1wOwomIzQzOwkgICAgY29uZmlnLSZndDttYWNfY2FwYWJpbGl0aWVzICZhbXA7IChNQUNfMTAwRkQgfCBNQUNfMTAwMEZEKSkgewogCQl1MzIgZWVlY3IgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1M1hfUE1FRUVDUl9QKHBvcnQpKTsKIAotCQljb25maWctJmd0O2xwaV9jYXBhYmlsaXRpZXMgPSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEIHwgTUFDXzI1MDBGRDsKJiM0MzsJCS8qIExQSSBhYm92ZSAxIEdicHMgaXMgbm90IHN1cHBvcnRlZCAqLwomIzQzOwkJY29uZmlnLSZndDtscGlfY2FwYWJpbGl0aWVzID0gY29uZmlnLSZndDttYWNfY2FwYWJpbGl0aWVzICZhbXA7CiYjNDM7CQkJCQkgICAoTUFDXzEwMEZEIHwgTUFDXzEwMDBGRCk7CiYjNDM7CQlwaHlfaW50ZXJmYWNlX2NvcHkoY29uZmlnLSZndDtscGlfaW50ZXJmYWNlcywKJiM0MzsJCQkJICAgY29uZmlnLSZndDtzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7CiYjNDM7CQlfX2NsZWFyX2JpdChQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYLAomIzQzOwkJCSAgICBjb25maWctJmd0O2xwaV9pbnRlcmZhY2VzKTsKJiM0MzsKIAkJLyogdHhfbHBpX3RpbWVyIHNob3VsZCBiZSBpbiBtaWNyb3NlY29uZHMuIFRoZSB0aW1lIHVuaXRzIGZvcgogCQkgKiBMUEkgdGhyZXNob2xkIGFyZSB1bnNwZWNpZmllZC4KIAkJICovCiAJCWNvbmZpZy0mZ3Q7bHBpX3RpbWVyX2RlZmF1bHQgPSBGSUVMRF9HRVQoTFBJX1RIUkVTSF9NQVNLLCBlZWVjcik7CiAJfQotCi0JcHJpdi0mZ3Q7aW5mby0mZ3Q7bWFjX3BvcnRfZ2V0X2NhcHMoZHMsIHBvcnQsIGNvbmZpZyk7CiB9CiAKIHN0YXRpYyBpbnQgbXQ3NTN4X3Bjc192YWxpZGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jCmluZGV4IGJlM2JkMDI1YzQxYTEuLmZkN2E0OWFlODhkMDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYwpAQCAtNDgyOCw3ICYjNDM7NDgyOCw3IEBAIHN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucCkKIAlwaHlfaW50ZXJmYWNlX3QgcGh5X21vZGU7CiAJc3RydWN0IHBoeWxpbmsgKnBoeWxpbms7CiAJc3RydWN0IG10a19tYWMgKm1hYzsKLQlpbnQgaWQsIGVycjsKJiM0MzsJaW50IGlkLCBlcnIsIGk7CiAJaW50IHR4cXMgPSAxOwogCXUzMiB2YWw7CiAKQEAgLTQ5MDcsOCAmIzQzOzQ5MDcsOCBAQCBzdGF0aWMgaW50IG10a19hZGRfbWFjKHN0cnVjdCBtdGtfZXRoICpldGgsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCiAJbWFjLSZndDtwaHlsaW5rX2NvbmZpZy50eXBlID0gUEhZTElOS19ORVRERVY7CiAJbWFjLSZndDtwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzID0gTUFDX0FTWU1fUEFVU0UgfCBNQUNfU1lNX1BBVVNFIHwKIAkJTUFDXzEwIHwgTUFDXzEwMCB8IE1BQ18xMDAwIHwgTUFDXzI1MDBGRDsKLQltYWMtJmd0O3BoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMgPSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEIHwKLQkJTUFDXzI1MDBGRDsKJiM0MzsJLyogTFBJIGFib3ZlIDEgR2JwcyBpcyBub3Qgc3VwcG9ydGVkICovCiYjNDM7CW1hYy0mZ3Q7cGh5bGlua19jb25maWcubHBpX2NhcGFiaWxpdGllcyA9IE1BQ18xMDBGRCB8IE1BQ18xMDAwRkQ7CiAJbWFjLSZndDtwaHlsaW5rX2NvbmZpZy5scGlfdGltZXJfZGVmYXVsdCA9IDEwMDA7CiAKIAkvKiBNVDc2MjMgZ21hYzAgaXMgbm93IG1pc3NpbmcgaXRzIHNwZWVkLXNwZWNpZmljIFBMTCBjb25maWd1cmF0aW9uCkBAIC00OTY2LDYgJiM0Mzs0OTY2LDE4IEBAIHN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucCkKIAkJX19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCwKIAkJCSAgbWFjLSZndDtwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7CiAKJiM0MzsJLyogTFBJIHdha2UtdXAgdGltaW5nIGlzIG9ubHkgdmVyaWZpZWQgb24gTVRLX0dNQUNfRUVFIFNvQ3MgKi8KJiM0MzsJaWYgKE1US19IQVNfQ0FQUyhldGgtJmd0O3NvYy0mZ3Q7Y2FwcywgTVRLX0dNQUNfRUVFKSkgewomIzQzOwkJcGh5X2ludGVyZmFjZV9jb3B5KG1hYy0mZ3Q7cGh5bGlua19jb25maWcubHBpX2ludGVyZmFjZXMsCiYjNDM7CQkJCSAgIG1hYy0mZ3Q7cGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpOwomIzQzOwkJX19jbGVhcl9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCwKJiM0MzsJCQkgICAgbWFjLSZndDtwaHlsaW5rX2NvbmZpZy5scGlfaW50ZXJmYWNlcyk7CiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgUEhZX0lOVEVSRkFDRV9NT0RFX01BWDsgaSYjNDM7JiM0MzspCiYjNDM7CQkJaWYgKG10a19pbnRlcmZhY2VfbW9kZV9pc194Z21paShldGgsIGkpKQomIzQzOwkJCQlfX2NsZWFyX2JpdChpLAomIzQzOwkJCQkJICAgIG1hYy0mZ3Q7cGh5bGlua19jb25maWcubHBpX2ludGVyZmFjZXMpOwomIzQzOwl9CiYjNDM7CiAJcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKCZhbXA7bWFjLSZndDtwaHlsaW5rX2NvbmZpZywKIAkJCQkgb2ZfZndub2RlX2hhbmRsZShtYWMtJmd0O29mX25vZGUpLAogCQkJCSBwaHlfbW9kZSwgbWFjX29wcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaAppbmRleCAwMTY4ZTJmYmM2MTk3Li44OGE5YjNiMjNiZWE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmgKQEAgLTk5NCw2ICYjNDM7OTk0LDcgQEAgZW51bSBta3RfZXRoX2NhcGFiaWxpdGllcyB7CiAJTVRLX1UzX0NPUEhZX1YyX0JJVCwKIAlNVEtfU1JBTV9CSVQsCiAJTVRLXzM2QklUX0RNQV9CSVQsCiYjNDM7CU1US19HTUFDX0VFRV9CSVQsCiAKIAkvKiBNVVggQklUUyovCiAJTVRLX0VUSF9NVVhfR0RNMV9UT19HTUFDMV9FU1dfQklULApAQCAtMTAzNCw2ICYjNDM7MTAzNSw3IEBAIGVudW0gbWt0X2V0aF9jYXBhYmlsaXRpZXMgewogI2RlZmluZSBNVEtfVTNfQ09QSFlfVjIJCUJJVF9VTEwoTVRLX1UzX0NPUEhZX1YyX0JJVCkKICNkZWZpbmUgTVRLX1NSQU0JCUJJVF9VTEwoTVRLX1NSQU1fQklUKQogI2RlZmluZSBNVEtfMzZCSVRfRE1BCUJJVF9VTEwoTVRLXzM2QklUX0RNQV9CSVQpCiYjNDM7I2RlZmluZSBNVEtfR01BQ19FRUUJCUJJVF9VTEwoTVRLX0dNQUNfRUVFX0JJVCkKIAogI2RlZmluZSBNVEtfRVRIX01VWF9HRE0xX1RPX0dNQUMxX0VTVwkJXAogCUJJVF9VTEwoTVRLX0VUSF9NVVhfR0RNMV9UT19HTUFDMV9FU1dfQklUKQpAQCAtMTExNyw3ICYjNDM7MTExOSw3IEBAIGVudW0gbWt0X2V0aF9jYXBhYmlsaXRpZXMgewogI2RlZmluZSBNVDc5ODFfQ0FQUyAgKE1US19HTUFDMV9TR01JSSB8IE1US19HTUFDMl9TR01JSSB8IE1US19HTUFDMl9HRVBIWSB8IFwKIAkJICAgICAgTVRLX01VWF9HTUFDMTJfVE9fR0VQSFlfU0dNSUkgfCBNVEtfUURNQSB8IFwKIAkJICAgICAgTVRLX01VWF9VM19HTUFDMl9UT19RUEhZIHwgTVRLX1UzX0NPUEhZX1YyIHwgXAotCQkgICAgICBNVEtfUlNUQ1RSTF9QUEUxIHwgTVRLX1NSQU0pCiYjNDM7CQkgICAgICBNVEtfUlNUQ1RSTF9QUEUxIHwgTVRLX1NSQU0gfCBNVEtfR01BQ19FRUUpCiAKICNkZWZpbmUgTVQ3OTg2X0NBUFMgIChNVEtfR01BQzFfU0dNSUkgfCBNVEtfR01BQzJfU0dNSUkgfCBcCiAJCSAgICAgIE1US19NVVhfR01BQzEyX1RPX0dFUEhZX1NHTUlJIHwgTVRLX1FETUEgfCBcCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3ODcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFRoaXMgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYnJlYWsgZG93biB3aGF0JiMzOTtzIGJlaW5nIHRvdWNoZWQuIEkgc2VlIGNoYW5nZXMgYWZmZWN0aW5nIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY2AsIGFuZCB0aGUgY29ycmVzcG9uZGluZyBoZWFkZXIsIGBtdGtfZXRoX3NvYy5oYC4gVGhpcyBpcyBpbnRlcmVzdGluZzsgd2UmIzM5O3JlIGxvb2tpbmcgYXQgTWVkaWFUZWstcmVsYXRlZCBjb2RlLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGFuIGFtZDY0IGFyY2hpdGVjdHVyZS4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGVzZSBkcml2ZXJzICpkbyouIGBtdDc1MzAuY2AgaXMgdGhlIERTQSBkcml2ZXIgZm9yIHRoZSBNZWRpYVRlayBNVDc1MzAvTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCwgYW5kIGBtdGtfZXRoX3NvYy5jYCBpcyB0aGUgU29DIEdpZ2FiaXQgRXRoZXJuZXQgTUFDIGRyaXZlciwgcHJpbWFyaWx5IGZvciBBUk0vTUlQUyBTb0NzLiBHaXZlbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgSSBoYXZlIGEgaHVuY2ggdGhpcyBtaWdodCBiZSBhIHN1YnRsZSwgYnV0IG5vdCBuZWNlc3NhcmlseSBvYnZpb3VzLCB0aGluZyBoZXJlLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGdldCBzb21lIG1vcmUgY29udGV4dCBvbiBwb3RlbnRpYWwgaW1wbGljYXRpb25zLiBJIHdhbnQgdG8gcXVpY2tseSBhc2NlcnRhaW4gd2hhdCBoYXJkd2FyZS9idXNlcyB0aGVzZSBhcmUgdXNpbmcsIGFuZCB3aGV0aGVyIHRoaXMgY2FuIGV2ZW4gYmUgbWVhbmluZ2Z1bGx5IGluc3RhbnRpYXRlZCBvciBwcm9iZWQgaW4gYW4gYW1kNjQgUUVNVSBvciBTeXprYWxsZXIgZW52aXJvbm1lbnQuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIGdyZXBwZXIvY29kZXNlYXJjaCB0byBsb29rIGZvciB0aGUgcHJvYmUgYW5kIGluaXQgbWV0aG9kcyBmb3IgYm90aCBgbXQ3NTMwYCBhbmQgYG10a19ldGhfc29jYC4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgYmUgYWJsZSB0byBnZXQgYSBiZXR0ZXIgZmVlbCBmb3IgdGhlIGltcGFjdCBvZiB0aGlzIHBhdGNoLiBUaGlzIGluaXRpYWwgaW52ZXN0aWdhdGlvbiBzaG91bGQgaW5mb3JtIGlmIGl0JiMzOTtzIHBvdGVudGlhbGx5IHdvcnRoIGEgZGVlcGVyIGRpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NTMwXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE5NTcgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTE4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE5Om10NzUzMF9yZWdtYXBfd3JpdGUodm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQgaW50IHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIwLXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIxOlx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gY29udGV4dDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIyLVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHByaXYtXHUwMDNlYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTQzPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjQ0Om10NzUzMF9yZWdtYXBfcmVhZCh2b2lkICpjb250ZXh0LCB1bnNpZ25lZCBpbnQgcmVnLCB1bnNpZ25lZCBpbnQgKnZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTQ1LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjQ2Olx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gY29udGV4dDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTQ3LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHByaXYtXHUwMDNlYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTczPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo3NDptdDc1MzBfbWRpb19yZWdtYXBfbG9jayh2b2lkICptZGlvX2xvY2spXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy03NS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9Nzk9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjgwOm10NzUzMF9tZGlvX3JlZ21hcF91bmxvY2sodm9pZCAqbWRpb19sb2NrKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtODEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTg0LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6ODU6c3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfYnVzIG10NzUzMF9yZWdtYXBfYnVzID0ge1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6ODY6XHQucmVnX3dyaXRlID0gbXQ3NTMwX3JlZ21hcF93cml0ZSxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjg3Olx0LnJlZ19yZWFkID0gbXQ3NTMwX3JlZ21hcF9yZWFkLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtODgtfTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz05MD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo5MTptdDc1MzFfY3JlYXRlX3NnbWlpKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTkyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMTItXHRcdG10NzUzMV9wY3NfY29uZmlnW2ldLVx1MDAzZW1heF9yZWdpc3RlciA9IDB4MTdjO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTEzOlx0XHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cdTAwM2Vsb2NrID0gbXQ3NTMwX21kaW9fcmVnbWFwX2xvY2s7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxMTQ6XHRcdG10NzUzMV9wY3NfY29uZmlnW2ldLVx1MDAzZXVubG9jayA9IG10NzUzMF9tZGlvX3JlZ21hcF91bmxvY2s7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMTUtXHRcdG10NzUzMV9wY3NfY29uZmlnW2ldLVx1MDAzZWxvY2tfYXJnID0gXHUwMDI2cHJpdi1cdTAwM2VidXMtXHUwMDNlbWRpb19sb2NrO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTE2LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTE3Olx0XHRyZWdtYXAgPSBkZXZtX3JlZ21hcF9pbml0KHByaXYtXHUwMDNlZGV2LCBcdTAwMjZtdDc1MzBfcmVnbWFwX2J1cywgcHJpdixcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTExOC1cdFx0XHRcdFx0ICBtdDc1MzFfcGNzX2NvbmZpZ1tpXSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTM3LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTM4OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10NzUzMF9vZl9tYXRjaFtdID0ge1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTM5LVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O21lZGlhdGVrLG10NzYyMVwmIzM0OywgLmRhdGEgPSBcdTAwMjZtdDc1M3hfdGFibGVbSURfTVQ3NjIxXSwgfSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNDMtfTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE0NDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtdDc1MzBfb2ZfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTQ1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTE1ND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNTU6bXQ3NTMwX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE1Ni17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNTc6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNTgtXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKmRuO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE3MC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE3MTpcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNzItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIwOS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIxMDpcdHByaXYtXHUwMDNlcmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdChwcml2LVx1MDAzZWRldiwgXHUwMDI2bXQ3NTMwX3JlZ21hcF9idXMsIHByaXYsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMTEtXHRcdFx0XHRcdFx1MDAyNnJlZ21hcF9jb25maWcpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTIyMT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjIyOm10NzUzMF9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjIzLXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIyNDpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZtZGlvZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMjUtXHRpbnQgcmV0ID0gMCwgaTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMzktXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNDA6XHRtdDc1MzBfcmVtb3ZlX2NvbW1vbihwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI0MS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNDUtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNDY6c3RhdGljIHZvaWQgbXQ3NTMwX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI0Ny17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNDg6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjQ5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI1Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1ODpzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIG10NzUzMF9tZGlvX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1OTpcdC5wcm9iZSAgPSBtdDc1MzBfcHJvYmUsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNjA6XHQucmVtb3ZlID0gbXQ3NTMwX3JlbW92ZSxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI2MTpcdC5zaHV0ZG93biA9IG10NzUzMF9zaHV0ZG93bixcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI2Mi1cdC5tZGlvZHJ2LmRyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI2My1cdFx0Lm5hbWUgPSBcJiMzNDttdDc1MzAtbWRpb1wmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI2NDpcdFx0Lm9mX21hdGNoX3RhYmxlID0gbXQ3NTMwX29mX21hdGNoLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjY1LVx0fSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjctXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNjg6bWRpb19tb2R1bGVfZHJpdmVyKG10NzUzMF9tZGlvX2RyaXZlcik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjktXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9MzA9bXQ3OTg4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy0zMS17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzozMjpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTMzLVx0dm9pZCBfX2lvbWVtICpiYXNlX2FkZHI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNDItXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo0MzpcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy00NC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9Njc9c3RhdGljIHZvaWQgbXQ3OTg4X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNjgte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6Njk6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTcwLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzEtXHRpZiAocHJpdilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjcyOlx0XHRtdDc1MzBfcmVtb3ZlX2NvbW1vbihwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTczLX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYz03NT1zdGF0aWMgdm9pZCBtdDc5ODhfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTc2LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjc3Olx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy03OC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzE9c3RhdGljIHN0cnVjdCBtdDc1M3hfcGNzICpwY3NfdG9fbXQ3NTN4X3BjcyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzYtLyogU3RyaW5nLCBvZmZzZXQsIGFuZCByZWdpc3RlciBzaXplIGluIGJ5dGVzIGlmIGRpZmZlcmVudCBmcm9tIDQgYnl0ZXMgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNzpzdGF0aWMgY29uc3Qgc3RydWN0IG10NzUzMF9taWJfZGVzYyBtdDc1MzBfbWliW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzgtXHRNSUJfREVTQygxLCBNVDc1MzBfUE9SVF9NSUJfVFhfRFJPUCwgXCYjMzQ7VHhEcm9wXCYjMzQ7KSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NDk9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MDptdDc1MzBfbXV0ZXhfbG9jayhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01Nj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU3Om10NzUzMF9tdXRleF91bmxvY2soc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NjM9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NDpjb3JlX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY4LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY5Olx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTk1LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjk2Olx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy05Ny19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTk5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTAwOmNvcmVfcm13KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIG1hc2ssIHUzMiBzZXQpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTAxLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTA1LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjEwNjpcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTEwNy1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTQxLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE0MjpcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTQzLX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTQ1PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTQ2OmNvcmVfc2V0KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNDcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNTE9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNTI6Y29yZV9jbGVhcihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTUzLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTU3PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNTg6bXQ3NTMwX21paV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTU5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTcxPXN0YXRpYyB1MzJcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNzI6bXQ3NTMwX21paV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZylcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNzMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xODg9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE4OTptdDc1MzBfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5MC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxOTM6XHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xOTQtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTk1Olx0cmV0ID0gbXQ3NTMwX21paV93cml0ZShwcml2LCByZWcsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTk2LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE5NzpcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTk4LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMDI9c3RhdGljIHUzMlxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIwMzpfbXQ3NTMwX3JlYWQoc3RydWN0IG10NzUzMF9kdW1teV9wb2xsICpwKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIwNC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIwNi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMDc6XHRtdDc1MzBfbXV0ZXhfbG9jayhwLVx1MDAzZXByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIwOC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMDk6XHR2YWwgPSBtdDc1MzBfbWlpX3JlYWQocC1cdTAwM2Vwcml2LCBwLVx1MDAzZXJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjEwLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIxMTpcdG10NzUzMF9tdXRleF91bmxvY2socC1cdTAwM2Vwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMTItXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIxNj1zdGF0aWMgdTMyXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjE3Om10NzUzMF9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZylcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMTgte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIxOTpcdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyMC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMjEtXHRJTklUX01UNzUzMF9EVU1NWV9QT0xMKFx1MDAyNnAsIHByaXYsIHJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjIyOlx0cmV0dXJuIF9tdDc1MzBfcmVhZChcdTAwMjZwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMjMtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMjU9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMjY6bXQ3NTMwX3JtdyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjI3LVx0ICAgdTMyIG1hc2ssIHUzMiBzZXQpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjI4LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMjk6XHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzMi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMzM6XHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzNC19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIzNj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzNzptdDc1MzBfc2V0KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzgte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzOTpcdG10NzUzMF9ybXcocHJpdiwgcmVnLCB2YWwsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQwLX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjQyPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQzOm10NzUzMF9jbGVhcihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQ0LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDU6XHRtdDc1MzBfcm13KHByaXYsIHJlZywgdmFsLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNDYtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yNDg9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI0OTptdDc1MzBfZmRiX2NtZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGVudW0gbXQ3NTMwX2ZkYl9jbWQgY21kLCB1MzIgKnJzcClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTAte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTUtXHR2YWwgPSBBVENfQlVTWSB8IEFUQ19NQVQoMCkgfCBjbWQ7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjU2Olx0cmV0ID0gbXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9BVEMsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjU3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjU5LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI2MDpcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI2MS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjY2LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI2NzpcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjY4LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yODY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyODc6bXQ3NTMwX2ZkYl9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgc3RydWN0IG10NzUzMF9mZGIgKmZkYilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yODgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yOTMtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyAzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI5NDpcdFx0cmVnW2ldID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMwX1RTUkExICYjNDM7IChpICogNCkpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI5NS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzEyPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzEzOm10NzUzMF9mZGJfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MTYgdmlkLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMxNC1cdFx0IHU4IHBvcnRfbWFzaywgY29uc3QgdTggKm1hYyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzM4LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgMzsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzM5Olx0XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX0FUQTEgJiM0MzsgKGkgKiA0KSwgcmVnW2ldKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNDAtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNDItLyogU2V0IHVwIHN3aXRjaCBjb3JlIGNsb2NrIGZvciBNVDc1MzAgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNDM6c3RhdGljIHZvaWQgbXQ3NTMwX3BsbF9zZXR1cChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzQ0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzgzPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mzg0Om10NzUzMF9zZXR1cF9wb3J0NihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzg1LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozODY6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM4Ny1cdHUzMiBuY3BvMSwgc3NjX2RlbHRhLCB4dGFsO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zOTItXHRpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSSkge1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM5MzpcdFx0bXQ3NTMwX3Jtdyhwcml2LCBNVDc1MzBfUDZFQ1IsIFA2X0lOVEZfTU9ERV9NQVNLLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM5NC1cdFx0XHQgICBQNl9JTlRGX01PREUoMCkpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zOTctXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mzk4Olx0bXQ3NTMwX3Jtdyhwcml2LCBNVDc1MzBfUDZFQ1IsIFA2X0lOVEZfTU9ERV9NQVNLLCBQNl9JTlRGX01PREUoMSkpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM5OS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0MDA6XHR4dGFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTNYX01UUkFQKSBcdTAwMjYgTVQ3NTMwX1hUQUxfTUFTSztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00MDEtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTQzNj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQzNzptdDc1MzFfcGxsX3NldHVwKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00Mzgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NDMtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDQ0Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX0NSRVYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ0NTpcdHRvcF9zaWcgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfVE9QX1NJR19TUik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDQ2Olx0aHdzdHJhcCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzWF9UUkFQKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NDctXHRpZiAoKHZhbCBcdTAwMjYgQ0hJUF9SRVZfTSkgXHUwMDNlIDApXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1NC1cdC8qIFN0ZXAgMSA6IERpc2FibGUgTVQ3NTMxIENPUkVQTEwgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NTU6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4pO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1Ni1cdHZhbCBcdTAwMjY9IH5FTl9DT1JFUExMO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ1NzpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfRU4sIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDU4LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1OS1cdC8qIFN0ZXAgMjogc3dpdGNoIHRvIFhUQUwgb3V0cHV0ICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDYwOlx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0VOKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NjEtXHR2YWwgfD0gU1dfQ0xLU1c7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDYyOlx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9FTiwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NjMtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDY0Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDY1LVx0dmFsIFx1MDAyNj0gflJHX0NPUkVQTExfRU47XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDY2Olx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDY3LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2OC1cdC8qIFN0ZXAgMzogZGlzYWJsZSBQTExHUCBhbmQgZW5hYmxlIHByb2dyYW0gUExMR1AgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0Njk6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4pO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3MC1cdHZhbCB8PSBTV19QTExHUDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NzE6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0VOLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzMtXHQvKiBTdGVwIDQ6IHByb2dyYW0gQ09SRVBMTCBvdXRwdXQgZnJlcXVlbmN5IHRvIDUwME1IeiAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ3NDpcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3NS1cdHZhbCBcdTAwMjY9IH5SR19DT1JFUExMX1BPU0RJVl9NO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3Ni1cdHZhbCB8PSAyIFx1MDAzY1x1MDAzYyBSR19DT1JFUExMX1BPU0RJVl9TO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ3NzpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3OC1cdHVzbGVlcF9yYW5nZSgyNSwgMzUpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODEtXHRjYXNlIE1UNzUzMV9YVEFMX0ZTRUxfMjVNSFo6XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDgyOlx0XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODMtXHRcdHZhbCBcdTAwMjY9IH5SR19DT1JFUExMX1NETV9QQ1dfTTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODQtXHRcdHZhbCB8PSAweDE0MDAwMCBcdTAwM2NcdTAwM2MgUkdfQ09SRVBMTF9TRE1fUENXX1M7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDg1Olx0XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODYtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ4Ny1cdGNhc2UgTVQ3NTMxX1hUQUxfRlNFTF80ME1IWjpcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0ODg6XHRcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ4OS1cdFx0dmFsIFx1MDAyNj0gflJHX0NPUkVQTExfU0RNX1BDV19NO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5MC1cdFx0dmFsIHw9IDB4MTkwMDAwIFx1MDAzY1x1MDAzYyBSR19DT1JFUExMX1NETV9QQ1dfUztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0OTE6XHRcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5Mi1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5NS1cdC8qIFNldCBmZWVkYmFjayBkaXZpZGUgcmF0aW8gdXBkYXRlIHNpZ25hbCB0byBoaWdoICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDk2Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDk3LVx0dmFsIHw9IFJHX0NPUkVQTExfU0RNX1BDV19DSEc7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDk4Olx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDk5LVx0LyogV2FpdCBmb3IgYXQgbGVhc3QgMTYgWFRBTCBjbG9ja3MgKi9cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTAyLVx0LyogU3RlcCA1OiBzZXQgZmVlZGJhY2sgZGl2aWRlIHJhdGlvIHVwZGF0ZSBzaWduYWwgdG8gbG93ICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTAzOlx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTA0LVx0dmFsIFx1MDAyNj0gflJHX0NPUkVQTExfU0RNX1BDV19DSEc7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTA1Olx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTA2LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwNy1cdC8qIEVuYWJsZSAzMjVNIGNsb2NrIGZvciBTR01JSSAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUwODpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfQU5BX1BMTEdQX0NSNSwgMHhhZDAwMDApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwOS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MTAtXHQvKiBFbmFibGUgMjUwU1NDIGNsb2NrIGZvciBSR01JSSAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUxMTpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfQU5BX1BMTEdQX0NSMiwgMHg0ZjQwMDAwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MTItXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTEzLVx0LyogU3RlcCA2OiBFbmFibGUgTVQ3NTMxIFBMTCAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUxNDpcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxNS1cdHZhbCB8PSBSR19DT1JFUExMX0VOO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUxNjpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxNy1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MTg6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4pO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxOS1cdHZhbCB8PSBFTl9DT1JFUExMO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUyMDpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfRU4sIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTIxLVx0dXNsZWVwX3JhbmdlKDI1LCAzNSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTUyND1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUyNTptdDc1MzBfbWliX3Jlc2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MjYte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUyNzpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTI4LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUyOTpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfTUlCX0NDUiwgQ0NSX01JQl9GTFVTSCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTMwOlx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9NSUJfQ0NSLCBDQ1JfTUlCX0FDVElWQVRFKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MzEtfVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUzMi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MzM6c3RhdGljIGludCBtdDc1MzBfcGh5X3JlYWRfYzIyKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTM0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTM3LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUzODpzdGF0aWMgaW50IG10NzUzMF9waHlfd3JpdGVfYzIyKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0sXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTM5LVx0XHRcdFx0dTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTQzLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU0NDpzdGF0aWMgaW50IG10NzUzMF9waHlfcmVhZF9jNDUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NDUtXHRcdFx0ICAgICAgIGludCBkZXZhZCwgaW50IHJlZ251bSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTQ5LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU1MDpzdGF0aWMgaW50IG10NzUzMF9waHlfd3JpdGVfYzQ1KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NTEtXHRcdFx0XHRpbnQgcmVnbnVtLCB1MTYgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01NTY9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU1NzptdDc1MzFfaW5kX2M0NV9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTU4LVx0XHRcdGludCByZWdudW0pXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU2Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NjM6XHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NjQtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU3My1cdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKSB8IHJlZ251bTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NzQ6XHRyZXQgPSBtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTc1LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTg2LVx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU4NzpcdHJldCA9IG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01ODgtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01OTktb3V0OlxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYwMDpcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjAxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz02MDU9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYwNjptdDc1MzFfaW5kX2M0NV9waHlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYwNy1cdFx0XHQgaW50IHJlZ251bSwgdTE2IGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYxMS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MTI6XHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MTMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYyMi1cdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKSB8IHJlZ251bTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MjM6XHRyZXQgPSBtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjI0LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjM1LVx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MzY6XHRyZXQgPSBtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjM3LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjQ3LW91dDpcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NDg6XHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY0OS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NjUzPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NTQ6bXQ3NTMxX2luZF9jMjJfcGh5X3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSlcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NTUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NTgtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjU5Olx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjYwLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NzAtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjcxOlx0cmV0ID0gbXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgdmFsIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY3Mi1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY4My1vdXQ6XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Njg0Olx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02ODUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTY4OT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjkwOm10NzUzMV9pbmRfYzIyX3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY5MS1cdFx0XHQgdTE2IGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY5NS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2OTY6XHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02OTctXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTcwNy1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3MDg6XHRyZXQgPSBtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzA5LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzE5LW91dDpcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3MjA6XHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTcyMS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NzI2PW10NzUzeF9waHlfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzI3LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3Mjg6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBidXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MjktXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTczND1tdDc1M3hfcGh5X3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgZGV2YWQsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzM1LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3MzY6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBidXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MzctXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTc0Mj1tdDc1M3hfcGh5X3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTE2IHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03NDMte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjc0NDpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc0NS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NzUwPW10NzUzeF9waHlfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgZGV2YWQsIGludCByZWdudW0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc1Mi17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NzUzOlx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzU0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz03NTg9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3NTk6bXQ3NTMwX2dldF9zdHJpbmdzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHUzMiBzdHJpbmdzZXQsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzYwLVx0XHQgICB1aW50OF90ICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03NjYtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NzY3Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShtdDc1MzBfbWliKTsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NzY4Olx0XHRldGh0b29sX3B1dHMoXHUwMDI2ZGF0YSwgbXQ3NTMwX21pYltpXS5uYW1lKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03NjktfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz03NzE9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3NzI6bXQ3NTMwX3JlYWRfcG9ydF9zdGF0cyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc3My1cdFx0ICAgICAgIHUzMiBvZmZzZXQsIHU4IHNpemUsIHVpbnQ2NF90ICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03NzYtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Nzc3Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgcmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03NzgtXHQqZGF0YSA9IHZhbDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzgwLVx0aWYgKHNpemUgPT0gMikge1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjc4MTpcdFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgcmVnICYjNDM7IDQpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc4Mi1cdFx0KmRhdGEgfD0gKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz03ODY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3ODc6bXQ3NTMwX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzg4LVx0XHRcdCB1aW50NjRfdCAqZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03ODkte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjc5MDpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NzkxOlx0Y29uc3Qgc3RydWN0IG10NzUzMF9taWJfZGVzYyAqbWliO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc5Mi1cdGludCBpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc5My1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3OTQ6XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKG10NzUzMF9taWIpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjc5NTpcdFx0bWliID0gXHUwMDI2bXQ3NTMwX21pYltpXTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03OTYtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Nzk3Olx0XHRtdDc1MzBfcmVhZF9wb3J0X3N0YXRzKHByaXYsIHBvcnQsIG1pYi1cdTAwM2VvZmZzZXQsIG1pYi1cdTAwM2VzaXplLFxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg3OTUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipEaXZpbmcgaW50byB0aGUgTWVkaWF0ZWsgRXRoZXJuZXQgRHJpdmVyKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQmIzM5O3Mgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBNZWRpYXRlayBFdGhlcm5ldCBkcml2ZXIuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIHNvIEkmIzM5O20gZ29pbmcgc3RyYWlnaHQgZm9yIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jYC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIGFuZCBob3cgdGhlIGRyaXZlciByZWdpc3RlcnMgaXRzZWxmIHdpdGggdGhlIGtlcm5lbC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhlIGhhcmR3YXJlIGlzIGRldGVjdGVkLCB0aGUgcmVzb3VyY2VzIGFyZSBhbGxvY2F0ZWQsIGFuZCB0aGUgbmV0d29yayBpbnRlcmZhY2UgaXMgYnJvdWdodCBvbmxpbmUuIEdvdCB0byBtYWtlIHN1cmUgdGhlIGNvcmUgc2V0dXAgaXMgc291bmQgYmVmb3JlIEkgZ28gZnVydGhlciBkb3duIHRoZSByYWJiaXQgaG9sZS4gVGhpcyB3aWxsIGdpdmUgbWUgdGhlIGJhc2UgdG8gd29yayBvZmYsIGFzIEkgcHJvY2VlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfcGxhdGZvcm1fZHJpdmVyfHBsYXRmb3JtX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jPTU2NzY9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb2ZfbXRrX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNTY3Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6NTY3ODpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy01Njc5LVx0LnByb2JlID0gbXRrX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNTY4Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6NTY4Nzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG10a19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy01Njg4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYz0xNzQ2PXN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhtdGtfc3Rhcl9wbV9vcHMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE3NDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM6MTc0OTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfc3Rhcl9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmMtMTc1MC1cdC5kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE3NTYtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYzoxNzU3Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobXRrX3N0YXJfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYy0xNzU4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NTA3CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhpcy4gTXkgZmlyc3QgbW92ZSBpcyB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBjb2RlLiBJJiMzOTttIHRoaW5raW5nIEkgc2hvdWxkIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgbXRrX2RyaXZlcmAgd2l0aGluIGBtdGtfZXRoX3NvYy5jYC4gVGhhdCBzaG91bGQgcHJvdmlkZSBhIGJyb2FkIG92ZXJ2aWV3LiBUaGVuLCBJIG5lZWQgdG8gbG9vayBhdCBgbXQ3NTMwYCB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwKmAgZGlyZWN0b3J5LiBUaGF0IHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgcGFpcmluZywgZ2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtLgoKT25jZSBJJiMzOTt2ZSBnb3QgdGhvc2UgZmlsZXMgaW4gZnJvbnQgb2YgbWUsIEkgbmVlZCB0byBjaGVjayB0aGUgY29ycmVzcG9uZGluZyBgS2NvbmZpZ2AgZmlsZXMgZm9yIGJvdGguIEkgd2FudCB0byBzZWUgaG93IHRoZXNlIGRyaXZlcnMgYXJlIGNvbmZpZ3VyZWQgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIHRoZXkgaGF2ZS4gVGhhdCYjMzk7bGwgdGVsbCBtZSBob3cgdGhleSBmaXQgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgYnVpbGQgYW5kIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgb3B0aW9ucyBvciBzZXR0aW5ncyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkVUX0RTQV9NVDc1MzB8TkVUX01FRElBVEVLX1NPQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvS2NvbmZpZz0yOT1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zMC1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjMxOmNvbmZpZyBORVRfRFNBX01UNzUzMFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzItXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTM0LVx0c2VsZWN0IFJFR01BUF9JUlFcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjM1Olx0aW1wbHkgTkVUX0RTQV9NVDc1MzBfTURJT1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzY6XHRpbXBseSBORVRfRFNBX01UNzUzMF9NTUlPXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zNy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy00Mi1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjQzOmNvbmZpZyBORVRfRFNBX01UNzUzMF9NRElPXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy00NC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzUzMCBNRElPIGludGVyZmFjZSBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjQ1Olx0ZGVwZW5kcyBvbiBORVRfRFNBX01UNzUzMFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNDYtXHRzZWxlY3QgTUVESUFURUtfR0VfUEhZXG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTMtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo1NDpjb25maWcgTkVUX0RTQV9NVDc1MzBfTU1JT1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTUtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgTU1JTyBpbnRlcmZhY2UgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo1NjpcdGRlcGVuZHMgb24gTkVUX0RTQV9NVDc1MzBcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTU3LVx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cbi0tXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9NT1vYmotJChDT05GSUdfTkVUX0RTQV9LUzg5OTUpIFx0JiM0Mzs9IGtzODk5NS5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTkVUX0RTQV9NVDc1MzApXHQmIzQzOz0gbXQ3NTMwLm9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19ORVRfRFNBX01UNzUzMF9NRElPKSAmIzQzOz0gbXQ3NTMwLW1kaW8ub1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX05FVF9EU0FfTVQ3NTMwX01NSU8pICYjNDM7PSBtdDc1MzAtbW1pby5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtOS1vYmotJChDT05GSUdfTkVUX0RTQV9NVDc2MjgpICYjNDM7PSBtdDc2Mjgub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc9OD1pZiBORVRfVkVORE9SX01FRElBVEVLXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjEwOmNvbmZpZyBORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0xMS1cdGRlcGVuZHMgb24gQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MTI6XHRkZWZfYm9vbCBORVRfTUVESUFURUtfU09DICE9IG5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjE0OmNvbmZpZyBORVRfTUVESUFURUtfU09DXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTE1LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgU29DIEdpZ2FiaXQgRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19ORVRfTUVESUFURUtfU09DKSAmIzQzOz0gbXRrX2V0aC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZS03LW10a19ldGgteSA6PSBtdGtfZXRoX3NvYy5vIG10a19ldGhfcGF0aC5vIG10a19wcGUubyBtdGtfcHBlX2RlYnVnZnMubyBtdGtfcHBlX29mZmxvYWQub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGU6ODptdGtfZXRoLSQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKSAmIzQzOz0gbXRrX3dlZC5vIG10a193ZWRfbWN1Lm8gbXRrX3dlZF93by5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZS05LWlmZGVmIENPTkZJR19ERUJVR19GU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGU6MTA6bXRrX2V0aC0kKENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCkgJiM0Mzs9IG10a193ZWRfZGVidWdmcy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZS0xMS1lbmRpZlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKSAmIzQzOz0gbXRrX3dlZF9vcHMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGUtMTMtb2JqLSQoQ09ORklHX05FVF9NRURJQVRFS19TVEFSX0VNQUMpICYjNDM7PSBtdGtfc3Rhcl9lbWFjLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuYz05Mj1tdGtfZmxvd19nZXRfd2RtYV9pbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICphZGRyLCBzdHJ1Y3QgbXRrX3dkbWFfaW5mbyAqaW5mbylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuYy0xMDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuYzoxMDQ6XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jLTEwNS1cdFx0cmV0dXJuIC0xO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a193ZWQuaD01Nj1zdHJ1Y3QgbXRrX3dkbWFfaW5mbyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3dlZC5oLTYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3dlZC5oOjY0OiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a193ZWQuaC02NS1zdGF0aWMgaW5saW5lIGJvb2wgbXRrX3dlZF9pc192MShzdHJ1Y3QgbXRrX3dlZF9odyAqaHcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYz01MDc9bXQ3Nl9kbWFfZ2V0X2J1ZihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEsIGludCBpZHgsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy01NDktXHRcdG10NzZfcHV0X3J4d2koZGV2LCB0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6NTUwOiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtNTUxLVx0XHQvKiB0aGUgV08gTUNVIG93bnMgdGhlIFJYIHBhdGggb25seSBvbiBXRUQgdjIsIG9uIG5ld2VyXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYz01Njk9bXQ3Nl9kbWFfZGVxdWV1ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEsIGJvb2wgZmx1c2gsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy02MTUtXHRcdFx0cmV0dXJuIE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjYxNjojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTYxNy1cdFx0Lyogb24gV0VEIHYzIHRoZSBNX0RPTkUgYml0IHNpZ25hbHMgdGhhdCBXRUQgaXMgZG9uZSByZWFkaW5nXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYz0xMDAxPW10NzZfZG1hX3J4X3Byb2Nlc3Moc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlICpxLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtMTAxMS1cdGlmICgocS1cdTAwM2VmbGFncyBcdTAwMjYgTVRfUUZMQUdfV0VEX1JST19FTikgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6MTAxMjpcdCAgICAoSVNfRU5BQkxFRChDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy0xMDEzLVx0ICAgICBtdDc2X3F1ZXVlX2lzX3dlZF90eF9mcmVlKHEpKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmg9NTI9bXQ3Nl9kbWFfaGFuZGxlX3JlYWQoc3RydWN0IG10NzZfcXVldWUgKnEsIHUzMiBvZmZzZXQsIHUzMiAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaC01My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oOjU0OiNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmgtNTUtXHRpZiAocS1cdTAwM2VmbGFncyBcdTAwMjYgTVRfUUZMQUdfV0VEKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaD04MD1tdDc2X2RtYV9oYW5kbGVfd3JpdGUoc3RydWN0IG10NzZfcXVldWUgKnEsIHUzMiBvZmZzZXQsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oLTgxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmg6ODI6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaC04My1cdGlmIChxLVx1MDAzZWZsYWdzIFx1MDAyNiBNVF9RRkxBR19XRUQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMjUwPWludCBtdDc2X3dlZF9uZXRfc2V0dXBfdGMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTI1Mi1cdFx0XHQgIHZvaWQgKnR5cGVfZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMjUzOiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEyNTQtdTMyIG10NzZfd2VkX2luaXRfcnhfYnVmKHN0cnVjdCBtdGtfd2VkX2RldmljZSAqd2VkLCBpbnQgc2l6ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTI2OD1zdGF0aWMgaW5saW5lIGludCBtdDc2X3dlZF9kbWFfc2V0dXAoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlICpxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEyNzItfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTI3MzojZW5kaWYgLyogQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjc0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTEyOTc9c3RhdGljIGlubGluZSBzdHJ1Y3QgbXQ3Nl9kZXYgKm10NzZfd2VkX3RvX2RldihzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEyOTgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTI5OTojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMzAwLVx0aWYgKHdlZC1cdTAwM2V3bGFuLmhpZjIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMzAxLVx0XHRyZXR1cm4gY29udGFpbmVyX29mKHdlZCwgc3RydWN0IG10NzZfZGV2LCBtbWlvLndlZF9oaWYyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEzMDI6I2VuZGlmIC8qIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTMwMy1cdHJldHVybiBjb250YWluZXJfb2Yod2VkLCBzdHJ1Y3QgbXQ3Nl9kZXYsIG1taW8ud2VkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmM9MTY4ND1tdDc5MTVfc2V0X3JhZGFyX2JhY2tncm91bmQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTE3MzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmM6MTczMjojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTczMy1zdGF0aWMgaW50XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jPTE3NzY9Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbXQ3OTE1X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTgyOS1cdC5zZXRfcmFkYXJfYmFja2dyb3VuZCA9IG10NzkxNV9zZXRfcmFkYXJfYmFja2dyb3VuZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYzoxODMwOiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYy0xODMxLVx0Lm5ldF9maWxsX2ZvcndhcmRfcGF0aCA9IG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGgsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MTgwMz1pbnQgbXQ3OTE1X21jdV93ZWRfZW5hYmxlX3J4X3N0YXRzKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0xODA0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjE4MDU6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMTgwNi1cdHN0cnVjdCBtdGtfd2VkX2RldmljZSAqd2VkID0gXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jPTU2NT1zdGF0aWMgdTMyIG10NzkxNV9ybXcoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1MzIgb2Zmc2V0LCB1MzIgbWFzaywgdTMyIHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtNTc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jOjU4MDojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtNTgxLXN0YXRpYyB2b2lkIG10NzkxNV9tbWlvX3dlZF91cGRhdGVfcnhfc3RhdHMoc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jPTYzMz1pbnQgbXQ3OTE1X21taW9fd2VkX2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdm9pZCAqcGRldl9wdHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTYzNS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM6NjM2OiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy02MzctXHRzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCA9IFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz04MzM9c3RhdGljIHZvaWQgbXQ3OTk2X3Jyb19od19pbml0X3YzKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTg0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo4NDE6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTg0Mi1cdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSBcdTAwMjZcdTAwMjYgbXRrX3dlZF9nZXRfcnhfY2FwYSh3ZWQpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTg1NC1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo4NTU6I2VuZGlmIC8qIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTg1Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9OTU3PXN0YXRpYyBpbnQgbXQ3OTk2X3dlZF9ycm9faW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMDA1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjEwMDY6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTEwMDctXHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpIFx1MDAyNlx1MDAyNlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMDEzLVx0XHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6MTAxNDojZW5kaWYgLyogQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTAxNS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM9MjM5OD1tdDc5OTZfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNDMxLVx0cGF0aC1cdTAwM2VkZXYgPSBjdHgtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jOjI0MzI6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI0MzMtXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI0NTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM6MjQ1NjojaWYgZGVmaW5lZChDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQpIHx8IGRlZmluZWQoQ09ORklHX01UNzk5Nl9OUFUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjQ1Ny1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM9MjQ1OD1tdDc5OTZfbmV0X3NldHVwX3RjKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNDYxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYzoyNDYyOiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNDYzLVx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldiA9IG10Nzk5Nl9od19kZXYoaHcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYz0yNTQ1PWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG10Nzk5Nl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI1OTktXHQubmV0X2ZpbGxfZm9yd2FyZF9wYXRoID0gbXQ3OTk2X25ldF9maWxsX2ZvcndhcmRfcGF0aCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYzoyNjAwOiNpZiBkZWZpbmVkKENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCkgfHwgZGVmaW5lZChDT05GSUdfTVQ3OTk2X05QVSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNjAxLVx0Lm5ldF9zZXR1cF90YyA9IG10Nzk5Nl9uZXRfc2V0dXBfdGMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jPTQzNj1zdGF0aWMgdTMyIG10Nzk5Nl9ybXcoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1MzIgb2Zmc2V0LCB1MzIgbWFzaywgdTMyIHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtNDUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jOjQ1MTojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtNDUyLXN0YXRpYyBpbnQgbXQ3OTk2X21taW9fd2VkX3Jlc2V0KHN0cnVjdCBtdGtfd2VkX2RldmljZSAqd2VkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYz00ODI9aW50IG10Nzk5Nl9tbWlvX3dlZF9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHZvaWQgKnBkZXZfcHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy00ODQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jOjQ4NTojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtNDg2LVx0c3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQgPSBcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM9OTMwPWludCBtdDc2X3Rva2VuX2NvbnN1bWUoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3R4d2lfY2FjaGUgKipwdHh3aSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtOTQ3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjk0ODojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtOTQ5LVx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbW1pby53ZWQpIFx1MDAyNlx1MDAyNlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYz05ODI9bXQ3Nl90b2tlbl9yZWxlYXNlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgdG9rZW4sIGJvb2wgKndha2UpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTk5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYzo5OTg6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTk5OS1cdFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbW1pby53ZWQpIFx1MDAyNlx1MDAyNlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmM9Mjk9RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl93ZWRfcmVsZWFzZV9yeF9idWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYy0zMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmM6MzE6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYy0zMi11MzIgbXQ3Nl93ZWRfaW5pdF9yeF9idWYoc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQsIGludCBzaXplKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmM9MTY3PUVYUE9SVF9TWU1CT0xfR1BMKG10NzZfd2VkX2RtYV9zZXR1cCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jOjE2ODojZW5kaWYgLypDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmMtMTY5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODc3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCB0aGlzIHRhc2ssIHRoaW5raW5nIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6CgoqKkludmVzdGlnYXRpbmcgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbnMqKgoKQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIG5ldHdvcmsgZHJpdmVyIGxhbmRzY2FwZSBoZXJlLiBNeSBmaXJzdCBtb3ZlIGlzIHRvIGNoZWNrIG91dCBgZHJpdmVycy9uZXQvZHNhL0tjb25maWdgIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZ2AuIFRoZXNlIGNvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIHRoZSBrZXlzIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyBhbmQgdGFyZ2V0IHBsYXRmb3JtcyBmb3IgdGhlc2UgbmV0d29yayBkZXZpY2UgZHJpdmVycy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluOgoKKiAgIFdoYXQgb3RoZXIga2VybmVsIGZlYXR1cmVzIG9yIGhhcmR3YXJlIGNvbXBvbmVudHMgYXJlIHRoZXNlIERTQSBhbmQgTWVkaWF0ZWsgRXRoZXJuZXQgZHJpdmVycyBkZXBlbmRlbnQgdXBvbj8gQXJlIHRoZXJlIHNwZWNpZmljIFBIWXMsIG90aGVyIG5ldHdvcmtpbmcgc3Vic3lzdGVtcywgb3IgYm9hcmQtbGV2ZWwgY29uZmlndXJhdGlvbnMgaW52b2x2ZWQ/CiogICBXaGljaCBTb0NzIGFuZCBwbGF0Zm9ybXMgYXJlIHRoZXNlIGRyaXZlcnMgcHJpbWFyaWx5IGRlc2lnbmVkIGZvcj8gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGVpciBpbnRlbmRlZCB1c2UgY2FzZXMgYW5kIGhvdyBicm9hZGx5IHRoZXkmIzM5O3JlIGFwcGxpY2FibGUuCgpLbm93aW5nIHRoZSBhbnN3ZXJzIHRvIHRoZXNlIHF1ZXN0aW9ucyB3aWxsIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciBldmFsdWF0aW5nIGhvdyB0aGVzZSBkcml2ZXJzIGZpdCBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZSBhbmQgYW55IGNvbXBhdGliaWxpdHkgY29uc2lkZXJhdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhlc2UgY29uZmlndXJhdGlvbiBkZXRhaWxzIGlzIGVzc2VudGlhbCBmb3IgYW55IGRlZXBlciBhbmFseXNpcyBvciBtb2RpZmljYXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgS2NvbmZpZyBmaWxlcyByZXZlYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDMwOlx0XG4gIDMxOlx0Y29uZmlnIE5FVF9EU0FfTVQ3NTMwXG4gIDMyOlx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuICAzMzpcdFx0c2VsZWN0IE5FVF9EU0FfVEFHX01US1xuICAzNDpcdFx0c2VsZWN0IFJFR01BUF9JUlFcbiAgMzU6XHRcdGltcGx5IE5FVF9EU0FfTVQ3NTMwX01ESU9cbiAgMzY6XHRcdGltcGx5IE5FVF9EU0FfTVQ3NTMwX01NSU9cbiAgMzc6XHRcdGhlbHBcbiAgMzg6XHRcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBFdGhlcm5ldFxuICAzOTpcdFx0ICBzd2l0Y2ggY2hpcHMuIE11bHRpLWNoaXAgbW9kdWxlIE1UNzUzMCBpbiBNVDc2MjFBVCwgTVQ3NjIxREFULFxuICA0MDpcdFx0ICBNVDc2MjFTVCBhbmQgTVQ3NjIzQUkgU29DcywgYW5kIGJ1aWx0LWluIHN3aXRjaCBpbiBNVDc5ODggU29DIGFyZVxuICA0MTpcdFx0ICBzdXBwb3J0ZWQgYXMgd2VsbC5cbiAgNDI6XHRcbiAgNDM6XHRjb25maWcgTkVUX0RTQV9NVDc1MzBfTURJT1xuICA0NDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NTMwIE1ESU8gaW50ZXJmYWNlIGRyaXZlclwmIzM0O1xuICA0NTpcdFx0ZGVwZW5kcyBvbiBORVRfRFNBX01UNzUzMFxuICA0NjpcdFx0c2VsZWN0IE1FRElBVEVLX0dFX1BIWVxuICA0NzpcdFx0c2VsZWN0IFBDU19NVEtfTFlOWElcbiAgNDg6XHRcdGhlbHBcbiAgNDk6XHRcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBzd2l0Y2hcbiAgNTA6XHRcdCAgY2hpcHMgd2hpY2ggYXJlIGNvbm5lY3RlZCB2aWEgTURJTywgYXMgd2VsbCBhcyBtdWx0aS1jaGlwXG4gIDUxOlx0XHQgIG1vZHVsZSBNVDc1MzAgd2hpY2ggY2FuIGJlIGZvdW5kIGluIHRoZSBNVDc2MjFBVCwgTVQ3NjIxREFULFxuICA1MjpcdFx0ICBNVDc2MjFTVCBhbmQgTVQ3NjIzQUkgU29Dcy5cbiAgNTM6XHRcbiAgNTQ6XHRjb25maWcgTkVUX0RTQV9NVDc1MzBfTU1JT1xuICA1NTpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NTMwIE1NSU8gaW50ZXJmYWNlIGRyaXZlclwmIzM0O1xuICA1NjpcdFx0ZGVwZW5kcyBvbiBORVRfRFNBX01UNzUzMFxuICA1NzpcdFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cbiAgNTg6XHRcdGltcGx5IE1FRElBVEVLX0dFX1NPQ19QSFlcbiAgNTk6XHRcdGhlbHBcbiAgNjA6XHRcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBidWlsdC1pbiBFdGhlcm5ldCBzd2l0Y2ggZm91bmRcbiAgNjE6XHRcdCAgaW4gdGhlIE1lZGlhVGVrIE1UNzk4OCBTb0MuXG4gIDYyOlx0XHQgIFRoZSBzd2l0Y2ggaXMgYSBzaW1pbGFyIGRlc2lnbiBhcyBNVDc1MzEsIGJ1dCB0aGUgc3dpdGNoIHJlZ2lzdGVyc1xuICA2MzpcdFx0ICBhcmUgZGlyZWN0bHkgbWFwcGVkIGludG8gdGhlIFNvQ3MgcmVnaXN0ZXIgc3BhY2UgcmF0aGVyIHRoYW4gYmVpbmdcbiAgNjQ6XHRcdCAgYWNjZXNzaWJsZSB2aWEgTURJTy5cbiAgNjU6XHRcbiAgNjY6XHRjb25maWcgTkVUX0RTQV9NVDc2MjhcbiAgNjc6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzYyOCBFbWJlZGRlZCBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuICA2ODpcdFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IChTT0NfTVQ3NjIwIHx8IENPTVBJTEVfVEVTVClcbiAgNjk6XHRcdHNlbGVjdCBORVRfRFNBX1RBR19NVDc2MjhcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY5MTkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipFeGFtaW5pbmcgdGhlIE1lZGlhdGVrIEV0aGVybmV0IEtjb25maWcgRmlsZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIE1lZGlhdGVrIEV0aGVybmV0IGRyaXZlciBjb25maWd1cmF0aW9uLiBMZXQmIzM5O3Mgc3RhcnQgYnkgdGFraW5nIGEgbG9vayBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZ2AuIEkmIzM5O20gZ3Vlc3NpbmcgdGhpcyBmaWxlIHdpbGwgcHJvdmlkZSB0aGUgZm91bmRhdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGRyaXZlciDigJMgdGhpbmdzIGxpa2UgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBkcml2ZXIsIHNlbGVjdGluZyBzcGVjaWZpYyBNZWRpYXRlayBFdGhlcm5ldCBjb250cm9sbGVyIG1vZGVscywgcG90ZW50aWFsbHkgb3B0aW9ucyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZXMgb3IgdmFyaWF0aW9ucywgYW5kIHByb2JhYmx5IGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGNvbXBvbmVudHMuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3RydWN0dXJlIGFuZCBkZXBlbmRlbmNpZXMgZGVmaW5lZCBoZXJlIHRvIHByb3Blcmx5IGNvbmZpZ3VyZSBhbmQgcG9zc2libHkgdHJvdWJsZXNob290IGFueXRoaW5nIHJlbGF0ZWQgdG8gTWVkaWF0ZWsgRXRoZXJuZXQgY29udHJvbGxlcnMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIHRoZSBkZWZhdWx0IHNldHRpbmdzLCBhbnkgY29uZGl0aW9uYWwgY29uZmlndXJhdGlvbnMsIGFuZCBwYXJ0aWN1bGFybHkgYW55IHRyaWNreSBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBuZXR3b3JraW5nIG9yIGhhcmR3YXJlIHN1YnN5c3RlbXMuIEhvcGVmdWxseSwgaXTigJlzIHdlbGwtb3JnYW5pemVkIGFuZCBjbGVhcmx5IGRvY3VtZW50ZWQsIGJ1dCBJJiMzOTttIHByZXBhcmVkIGZvciBhIGJpdCBvZiBhIGRlZXAgZGl2ZSBpZiBuZWNlc3NhcnkuIEl0JiMzOTtzIHRpbWUgdG8gZ2V0IGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBmcmFtZXdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBORVRfVkVORE9SX01FRElBVEVLXG4gICAzOlx0XHRib29sIFwmIzM0O01lZGlhVGVrIGRldmljZXNcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gQVJDSF9NRURJQVRFSyB8fCBBUkNIX0FJUk9IQSB8fCBTT0NfTVQ3NjIxIHx8IFNPQ19NVDc2MjAgfHwgQ09NUElMRV9URVNUXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIElmIHlvdSBoYXZlIGEgTWVkaWF0ZWsgU29DIHdpdGggZXRoZXJuZXQsIHNheSBZLlxuICAgNzpcdFxuICAgODpcdGlmIE5FVF9WRU5ET1JfTUVESUFURUtcbiAgIDk6XHRcbiAgMTA6XHRjb25maWcgTkVUX01FRElBVEVLX1NPQ19XRURcbiAgMTE6XHRcdGRlcGVuZHMgb24gQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1RcbiAgMTI6XHRcdGRlZl9ib29sIE5FVF9NRURJQVRFS19TT0MgIT0gblxuICAxMzpcdFxuICAxNDpcdGNvbmZpZyBORVRfTUVESUFURUtfU09DXG4gIDE1Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBTb0MgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4gIDE2Olx0XHRkZXBlbmRzIG9uIE5FVF9EU0EgfHwgIU5FVF9EU0FcbiAgMTc6XHRcdHNlbGVjdCBQSU5DVFJMXG4gIDE4Olx0XHRzZWxlY3QgUEhZTElOS1xuICAxOTpcdFx0c2VsZWN0IERJTUxJQlxuICAyMDpcdFx0c2VsZWN0IEdFTkVSSUNfQUxMT0NBVE9SXG4gIDIxOlx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDIyOlx0XHRzZWxlY3QgUEFHRV9QT09MX1NUQVRTXG4gIDIzOlx0XHRzZWxlY3QgUENTX01US19MWU5YSVxuICAyNDpcdFx0c2VsZWN0IFJFR01BUF9NTUlPXG4gIDI1Olx0XHRoZWxwXG4gIDI2Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBnaWdhYml0IGV0aGVybmV0IE1BQ3MgaW4gdGhlXG4gIDI3Olx0XHQgIE1lZGlhVGVrIFNvQyBmYW1pbHkuXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIE5FVF9NRURJQVRFS19TVEFSX0VNQUNcbiAgMzA6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIFNUQVIgRXRoZXJuZXQgTUFDIHN1cHBvcnRcJiMzNDtcbiAgMzE6XHRcdHNlbGVjdCBQSFlMSUJcbiAgMzI6XHRcdHNlbGVjdCBSRUdNQVBfTU1JT1xuICAzMzpcdFx0aGVscFxuICAzNDpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgZXRoZXJuZXQgTUFDIElQIGZpcnN0IHVzZWQgb25cbiAgMzU6XHRcdCAgTWVkaWFUZWsgTVQ4NSoqIFNvQ3MuXG4gIDM2Olx0XG4gIDM3Olx0ZW5kaWYgI05FVF9WRU5ET1JfTUVESUFURUtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc2ODQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNZWRpYXRlayBFdGhlcm5ldCBTT0MgRHJpdmVyKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBtdGtfZXRoX3NvYy5jYCBkcml2ZXIuIEZyb20gd2hhdCBJJiMzOTttIHNlZWluZywgdGhpcyBpcyB0aGUgZ28tdG8gZHJpdmVyIGZvciBgTkVUX01FRElBVEVLX1NPQ2AuIEl0cyBwdXJwb3NlIGlzIHRvIGhhbmRsZSB0aGUgTWVkaWF0ZWsgU3lzdGVtLW9uLUNoaXAgZXRoZXJuZXQgY29udHJvbGxlcnMsIHNwZWNpZmljYWxseSB0aGUgb25lcyB0aGF0IGFyZSBkZXNjcmliZWQgdXNpbmcgT0YgZGV2aWNlIHRyZWVzLiBJJiMzOTttIHNlZWluZyBpdCYjMzk7cyBkZXNpZ25lZCB0byBpbnRlcmZhY2Ugd2l0aCBkZXZpY2VzIGRlc2NyaWJlZCB3aXRoIHRoaW5ncyBsaWtlIGBtZWRpYXRlayxtdDI3MDEtZXRoYCwgYG1lZGlhdGVrLG10NzYyMi1ldGhgLCBgbWVkaWF0ZWssbXQ3NjIzLWV0aGAsIGFuZCBgbWVkaWF0ZWssbXQ3OTg2LWV0aGAgYW5kIHNpbWlsYXIgZGV2aWNlIHRyZWUgZW50cmllcy4gTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGRyaXZlciYjMzk7cyBPRiBtYXRjaCB0YWJsZS4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVuczsgd2hlcmUgaXQgZGVjaWRlcyB3aGljaCBzcGVjaWZpYyBNZWRpYXRlayBldGhlcm5ldCBoYXJkd2FyZSBpdCYjMzk7cyBzdXBwb3NlZCB0byBtYW5hZ2UgYmFzZWQgb24gdGhlIGRldmljZSB0cmVlIG5vZGUgaW5mb3JtYXRpb24uIFRoYXQmIzM5O2xsIGJlIGtleSB0byBmaWd1cmluZyBvdXQgaG93IGl0JiMzOTtzIHN0cnVjdHVyZWQgdG8gd29yayB3aXRoIHRoZSBkaWZmZXJlbnQgU09Dcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2ZfbXRrX21hdGNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM9NTY0MT1zdGF0aWMgY29uc3Qgc3RydWN0IG10a19zb2NfZGF0YSBydDUzNTBfZGF0YSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTU2NjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjU2NjQ6Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9tdGtfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNTY2NS1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDttZWRpYXRlayxtdDI3MDEtZXRoXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNm10MjcwMV9kYXRhIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy01Njc1LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjU2NzY6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb2ZfbXRrX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNTY3Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM9NTY3OD1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNTY4Mi1cdFx0Lm5hbWUgPSBcJiMzNDttdGtfc29jX2V0aFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6NTY4MzpcdFx0Lm9mX21hdGNoX3RhYmxlID0gb2ZfbXRrX21hdGNoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy01Njg0LVx0fSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oPTEzNjk9c3RydWN0IG10a19tYWMge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmgtMTM4NS0vKiB0aGUgc3RydWN0IGRlc2NyaWJpbmcgdGhlIFNvQy4gdGhlc2UgYXJlIGRlY2xhcmVkIGluIHRoZSBzb2NfeHl6LmMgZmlsZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmg6MTM4NjpleHRlcm4gY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9tdGtfbWF0Y2hbXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmgtMTM4Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg2MDkKCQkJCQkJCW91dHB1dDogMTcwCgkJCQkJCQl0aG91Z2h0czogMTEzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiBSZWFjaGFiaWxpdHkgZm9yIEZ1enppbmc6IE1lZGlhVGVrIEV0aGVybmV0IERyaXZlcnMgb24gYW1kNjQqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBpcyB0byBkZXRlcm1pbmUgaWYgd2UgY2FuIGVmZmVjdGl2ZWx5IGZ1enogdGhlc2UgTWVkaWFUZWsgZHJpdmVycywgYG10NzUzMGAgYW5kIGBtdGtfZXRoX3NvY2AsIG9uIGFuIGFtZDY0IHBsYXRmb3JtIHdpdGhpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQuIEFzIGFuIGV4cGVydCwgSSBrbm93IHRoYXQgcmVhY2hhYmlsaXR5IGlzICp0aGUqIGtleSBmYWN0b3IuIElmIHRoZSBjb2RlIGNhbiYjMzk7dCBleGVjdXRlLCBmdXp6aW5nIGlzIGEgd2FzdGUgb2YgcmVzb3VyY2VzLgoKRmlyc3QsIGBtdDc1MzBgLiBUaGlzIGlzIGEgRFNBIHN3aXRjaCBkcml2ZXIuIEl0JiMzOTtzIGRlc2lnbmVkIHRvIHByb2JlIHZpYSBNRElPIGJ1c2VzICh1c2luZyBgbXQ3NTMwLW1kaW8uY2ApIG9yIHBsYXRmb3JtIGRldmljZXMgKGBtdDc1MzAtbW1pby5jYCksIGFuZCBpdCByZWxpZXMgb24gc3BlY2lmaWMgZGV2aWNlIHRyZWUgY29tcGF0aWJsZSBzdHJpbmdzLiBUaGVzZSBzdHJpbmdzIGlkZW50aWZ5IGl0IGFzIGJlbG9uZ2luZyB0byB0aGUgTWVkaWFUZWsgZmFtaWx5IChNVDc2MjEsIE1UNzUzMCwgTVQ3NTMxLCBldGMuKSBvciB0aGUgQWlyb2hhIEVONzU4MC4gRFNBIGRyaXZlcnMsIGZ1bmRhbWVudGFsbHksIG5lZWQgYSBEZXZpY2UgVHJlZSAob3IgTU1JTykuIFRoaXMgcmVxdWlyZXMgYSBjb25uZWN0aW9uLCBhdCBtaW5pbXVtLCB0byBhbiBNRElPIGJ1cyBhbmQgYSBEU0EgbWFzdGVyIG5ldGRldi4KClRoZW4sIHdlIGhhdmUgYG10a19ldGhfc29jLmNgLiBUaGlzIGlzIGEgTWVkaWFUZWsgcGxhdGZvcm0gZHJpdmVyLCBtYXRjaGluZyBpdHMgZGV2aWNlIHRyZWUgZW50cmllczogYG10MjcwMS1ldGhgLCBgbXQ3NjIyLWV0aGAsIGBtdDc2MjMtZXRoYCwgYW5kIHNvIG9uLCB1cCB0byBgbXQ3OTg4LWV0aGAuIFRoZXNlIG1hdGNoIGZvciBzcGVjaWZpYyBNZWRpYVRlayBTb0NzLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogYXJlIHRoZXNlIGRyaXZlcnMgKnN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSogb24gYW1kNjQ/IFRoZSBmdXp6aW5nIGd1aWRlbGluZXMgYXJlIGNsZWFyLiBDb2RlIGlzIGNvbnNpZGVyZWQgdW5yZWFjaGFibGUgaWYgaXQgcmVxdWlyZXMgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGVudmlyb25tZW50cy4gVGhpcyBpbmNsdWRlcyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBHUFUgZHJpdmVycyB0aGF0IHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgQVNJQ3Mgb3IgUENJIGNhcmRzLgoKSW4gdGhpcyBzcGVjaWZpYyBzY2VuYXJpbywgSSBuZWVkIHRvIGV2YWx1YXRlIHRoZSBlbnZpcm9ubWVudC4gRG8gd2UgaGF2ZSB2aXJ0dWFsIGRldmljZXMsIFBDSSBkZXZpY2VzLCBVU0IgZGV2aWNlcywgb3IgbW9ja3MgYXZhaWxhYmxlIGZvciBNZWRpYVRlayBTb0MgRXRoZXJuZXQgb3IgdGhlIE1UNzUzMCBEU0Egc3dpdGNoIGluIFFFTVUgeDg2XzY0PyBOby4gVGhlIGBtdDc1MzBgIGlzIGEgc3dpdGNoIGNoaXAgZGVzaWduZWQgZm9yIE1lZGlhVGVrIEFSTS9NSVBTIHJvdXRlcnMgYW5kIGdhdGV3YXlzLiBUaGUgYG10a19ldGhfc29jYCBpcyB0aGUgaW50ZWdyYXRlZCBFdGhlcm5ldCBjb250cm9sbGVyICpvbiogTWVkaWFUZWsgU29DcyBsaWtlIE1UNzYyMSwgTVQ3NjIyLCBNVDc2MjMsIE1UNzk4MSwgTVQ3OTg2LCBhbmQgTVQ3OTg4LiBUaGVzZSBhcmUgdmVyeSBTb0Mtc3BlY2lmaWMgcGxhdGZvcm0vT0YvTURJTyBkZXZpY2VzLiBUaGV5ICpyZXF1aXJlKiB0aGUgc3BlY2lmaWMgTWVkaWFUZWsgU29DIGhhcmR3YXJlICphbmQqIGEgcmVsZXZhbnQgRFRTIGZpbGUgZm9yIHRoYXQgcGFydGljdWxhciBoYXJkd2FyZS4gUUVNVSBydW5uaW5nIG9uIGFtZDY0LCBlc3BlY2lhbGx5IGluIGEgc3RhbmRhcmQgY29uZmlndXJhdGlvbiwgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGVzZSBTb0NzLgoKU28sIGNhbiBlaXRoZXIgZHJpdmVyIGJlIHByb2JlZCBvciBleGVjdXRlZCBvbiBhbWQ2NCAqd2l0aG91dCogYWN0dWFsIE1lZGlhVGVrIGhhcmR3YXJlPyBUaGUgYW5zd2VyIGlzIGEgZGVmaW5pdGl2ZSBuby4gTmVpdGhlciBkcml2ZXIgaXMgUENJIG9yIFVTQi4gTmVpdGhlciBpcyBpbnN0YW50aWF0ZWQgdmlhIGFueSB2aXJ0dWFsIGJ1cy4gVGhlIHRhcmdldCBhcmNoaXRlY3R1cmUsIGNvbmZpcm1lZCBpbiB0aGUgcHJvbXB0LCBpcyBhbWQ2NC4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIGRvdWJsZS1jaGVjay4gVGhlIHBhdGNoIG1vZGlmaWVzIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY2AsIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaGAuIFRoZXNlIGFyZSAqYWxsKiBwYXJ0IG9mIHRoZSBNZWRpYVRlayBFdGhlcm5ldC9EU0Egc3dpdGNoIGRyaXZlciBzdWl0ZSBkZXNpZ25lZCBzcGVjaWZpY2FsbHkgZm9yIE1lZGlhVGVrIFNvQ3MuIFRoZXkgcmVxdWlyZSB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgb3IgYSBkZXZpY2UtdHJlZSB0aGF0IGRlc2NyaWJlcyB0aGlzIHBsYXRmb3JtLgoKVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzIHRoYXQgdGhpcyBmYWxscyBzcXVhcmVseSBpbnRvIHRoZSAmIzM0O3N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSYjMzQ7IGNhdGVnb3J5IG9uIGFtZDY0LiBUaGUgY29kZSBtb2RpZmljYXRpb25zIGFyZSBub3QgcmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudC4KCk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoZSBgbXRrX2V0aF9zb2NgIGFuZCBgbXQ3NTMwYCBkcml2ZXJzIGFyZSBwbGF0Zm9ybS9PRi1iYXNlZCBkcml2ZXJzIGZvciBNZWRpYVRlayBBUk0vTUlQUyBTb0MgaGFyZHdhcmUuIFRoZXkgbmVlZCB0aGUgcGh5c2ljYWwgTWVkaWFUZWsgU29DcyBvciBTb0Mtc3BlY2lmaWMgZGV2aWNlIHRyZWUgYmluZGluZ3MgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgYW1kNjQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnQuIFRoaXMgbWFrZXMgdGhlbSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcgb24gYW1kNjQuIEkmIzM5O20gZ29pbmcgdG8gc2V0IHRoZSByZXN1bHQgdG8gcmVmbGVjdCB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWRpYVRlayBHaWdhYml0IEV0aGVybmV0IFNvQyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMpIGFuZCB0aGUgTWVkaWFUZWsgTVQ3NTMwIHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYykuIFRoZXNlIGRyaXZlcnMgYXJlIHNwZWNpZmljIHRvIE1lZGlhVGVrIEFSTS9NSVBTIFNvQ3MgKHN1Y2ggYXMgTVQ3NjIxLCBNVDc5ODEsIE1UNzk4NiwgTVQ3OTg4KSBhbmQgcmVxdWlyZSBTb0Mtc3BlY2lmaWMgZGV2aWNlIHRyZWVzIGFuZCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiBhbWQ2NC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWRpYVRlayBHaWdhYml0IEV0aGVybmV0IFNvQyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMpIGFuZCB0aGUgTWVkaWFUZWsgTVQ3NTMwIHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYykuIFRoZXNlIGRyaXZlcnMgYXJlIHNwZWNpZmljIHRvIE1lZGlhVGVrIEFSTS9NSVBTIFNvQ3MgKHN1Y2ggYXMgTVQ3NjIxLCBNVDc5ODEsIE1UNzk4NiwgTVQ3OTg4KSBhbmQgcmVxdWlyZSBTb0Mtc3BlY2lmaWMgZGV2aWNlIHRyZWVzIGFuZCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiBhbWQ2NC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjM4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODozNzo1MS40MzUzNTE2MDhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTc5MjAzNzI3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWRpYVRlayBHaWdhYml0IEV0aGVybmV0IFNvQyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMpIGFuZCB0aGUgTWVkaWFUZWsgTVQ3NTMwIHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYykuIFRoZXNlIGRyaXZlcnMgYXJlIHNwZWNpZmljIHRvIE1lZGlhVGVrIEFSTS9NSVBTIFNvQ3MgKHN1Y2ggYXMgTVQ3NjIxLCBNVDc5ODEsIE1UNzk4NiwgTVQ3OTg4KSBhbmQgcmVxdWlyZSBTb0Mtc3BlY2lmaWMgZGV2aWNlIHRyZWVzIGFuZCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiBhbWQ2NC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjM3OjUxLjQzNTM1NjM0OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY1NjY0MDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgY2MyYTQyZDM3MDMxNjU4ODFkNDVjMjdiNDUxY2Y0MDIzNTJhZWFhMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIFNlcCA0IDE4OjM3OjUwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xcbmluZGV4IDJiN2JlMDkxYzA1NmUuLjNlNjFlYjNjMmIxZTIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXFxuQEAgLTMxNzIsMjMgKzMxNzIsMzEgQEAgc3RhdGljIHZvaWQgbXQ3NTN4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG4gXFxuIFxcdGNvbmZpZy1cXHUwMDNlbWFjX2NhcGFiaWxpdGllcyA9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVTRTtcXG4gXFxuK1xcdHByaXYtXFx1MDAzZWluZm8tXFx1MDAzZW1hY19wb3J0X2dldF9jYXBzKGRzLCBwb3J0LCBjb25maWcpO1xcbitcXG4gXFx0LyogVGhlIEVONzUyOCBHUEhZcyByZXBvcnQgRUVFIGNhcGFiaWxpdHksIGJ1dCBuZWdvdGlhdGluZyBFRUUgd2l0aFxcbiBcXHQgKiBjb21tb24gbGluayBwYXJ0bmVycyAoZS5nLiBSZWFsdGVrIEdiRSBOSUNzKSByZXN1bHRzIGluIGFuIHVuc3RhYmxlXFxuIFxcdCAqIGxpbmsgd2l0aCBkcm9wcGVkIGZyYW1lcy4gTGVhdmUgdGhlIExQSSBjYXBhYmlsaXRpZXMgZW1wdHkgc28gdGhhdFxcbiBcXHQgKiBwaHlsaW5rIGRpc2FibGVzIEVFRSBvbiB0aGVzZSBQSFlzIGFuZCByZWZ1c2VzIHRvIGVuYWJsZSBpdCBmcm9tXFxuIFxcdCAqIHVzZXJzcGFjZS5cXG4gXFx0ICovXFxuLVxcdGlmIChwcml2LVxcdTAwM2VpZCAhPSBJRF9FTjc1MjgpIHtcXG4rXFx0aWYgKHByaXYtXFx1MDAzZWlkICE9IElEX0VONzUyOCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgY29uZmlnLVxcdTAwM2VtYWNfY2FwYWJpbGl0aWVzIFxcdTAwMjYgKE1BQ18xMDBGRCB8IE1BQ18xMDAwRkQpKSB7XFxuIFxcdFxcdHUzMiBlZWVjciA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzWF9QTUVFRUNSX1AocG9ydCkpO1xcbiBcXG4tXFx0XFx0Y29uZmlnLVxcdTAwM2VscGlfY2FwYWJpbGl0aWVzID0gTUFDXzEwMEZEIHwgTUFDXzEwMDBGRCB8IE1BQ18yNTAwRkQ7XFxuK1xcdFxcdC8qIExQSSBhYm92ZSAxIEdicHMgaXMgbm90IHN1cHBvcnRlZCAqL1xcbitcXHRcXHRjb25maWctXFx1MDAzZWxwaV9jYXBhYmlsaXRpZXMgPSBjb25maWctXFx1MDAzZW1hY19jYXBhYmlsaXRpZXMgXFx1MDAyNlxcbitcXHRcXHRcXHRcXHRcXHQgICAoTUFDXzEwMEZEIHwgTUFDXzEwMDBGRCk7XFxuK1xcdFxcdHBoeV9pbnRlcmZhY2VfY29weShjb25maWctXFx1MDAzZWxwaV9pbnRlcmZhY2VzLFxcbitcXHRcXHRcXHRcXHQgICBjb25maWctXFx1MDAzZXN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG4rXFx0XFx0X19jbGVhcl9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCxcXG4rXFx0XFx0XFx0ICAgIGNvbmZpZy1cXHUwMDNlbHBpX2ludGVyZmFjZXMpO1xcbitcXG4gXFx0XFx0LyogdHhfbHBpX3RpbWVyIHNob3VsZCBiZSBpbiBtaWNyb3NlY29uZHMuIFRoZSB0aW1lIHVuaXRzIGZvclxcbiBcXHRcXHQgKiBMUEkgdGhyZXNob2xkIGFyZSB1bnNwZWNpZmllZC5cXG4gXFx0XFx0ICovXFxuIFxcdFxcdGNvbmZpZy1cXHUwMDNlbHBpX3RpbWVyX2RlZmF1bHQgPSBGSUVMRF9HRVQoTFBJX1RIUkVTSF9NQVNLLCBlZWVjcik7XFxuIFxcdH1cXG4tXFxuLVxcdHByaXYtXFx1MDAzZWluZm8tXFx1MDAzZW1hY19wb3J0X2dldF9jYXBzKGRzLCBwb3J0LCBjb25maWcpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IG10NzUzeF9wY3NfdmFsaWRhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jXFxuaW5kZXggYmUzYmQwMjVjNDFhMS4uZmQ3YTQ5YWU4OGQwMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY1xcbkBAIC00ODI4LDcgKzQ4MjgsNyBAQCBzdGF0aWMgaW50IG10a19hZGRfbWFjKHN0cnVjdCBtdGtfZXRoICpldGgsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuIFxcdHBoeV9pbnRlcmZhY2VfdCBwaHlfbW9kZTtcXG4gXFx0c3RydWN0IHBoeWxpbmsgKnBoeWxpbms7XFxuIFxcdHN0cnVjdCBtdGtfbWFjICptYWM7XFxuLVxcdGludCBpZCwgZXJyO1xcbitcXHRpbnQgaWQsIGVyciwgaTtcXG4gXFx0aW50IHR4cXMgPSAxO1xcbiBcXHR1MzIgdmFsO1xcbiBcXG5AQCAtNDkwNyw4ICs0OTA3LDggQEAgc3RhdGljIGludCBtdGtfYWRkX21hYyhzdHJ1Y3QgbXRrX2V0aCAqZXRoLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbiBcXHRtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLnR5cGUgPSBQSFlMSU5LX05FVERFVjtcXG4gXFx0bWFjLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzID0gTUFDX0FTWU1fUEFVU0UgfCBNQUNfU1lNX1BBVVNFIHxcXG4gXFx0XFx0TUFDXzEwIHwgTUFDXzEwMCB8IE1BQ18xMDAwIHwgTUFDXzI1MDBGRDtcXG4tXFx0bWFjLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfY2FwYWJpbGl0aWVzID0gTUFDXzEwMEZEIHwgTUFDXzEwMDBGRCB8XFxuLVxcdFxcdE1BQ18yNTAwRkQ7XFxuK1xcdC8qIExQSSBhYm92ZSAxIEdicHMgaXMgbm90IHN1cHBvcnRlZCAqL1xcbitcXHRtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMgPSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEO1xcbiBcXHRtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV90aW1lcl9kZWZhdWx0ID0gMTAwMDtcXG4gXFxuIFxcdC8qIE1UNzYyMyBnbWFjMCBpcyBub3cgbWlzc2luZyBpdHMgc3BlZWQtc3BlY2lmaWMgUExMIGNvbmZpZ3VyYXRpb25cXG5AQCAtNDk2Niw2ICs0OTY2LDE4IEBAIHN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucClcXG4gXFx0XFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCxcXG4gXFx0XFx0XFx0ICBtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG4gXFxuK1xcdC8qIExQSSB3YWtlLXVwIHRpbWluZyBpcyBvbmx5IHZlcmlmaWVkIG9uIE1US19HTUFDX0VFRSBTb0NzICovXFxuK1xcdGlmIChNVEtfSEFTX0NBUFMoZXRoLVxcdTAwM2Vzb2MtXFx1MDAzZWNhcHMsIE1US19HTUFDX0VFRSkpIHtcXG4rXFx0XFx0cGh5X2ludGVyZmFjZV9jb3B5KG1hYy1cXHUwMDNlcGh5bGlua19jb25maWcubHBpX2ludGVyZmFjZXMsXFxuK1xcdFxcdFxcdFxcdCAgIG1hYy1cXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xcbitcXHRcXHRfX2NsZWFyX2JpdChQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYLFxcbitcXHRcXHRcXHQgICAgbWFjLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfaW50ZXJmYWNlcyk7XFxuK1xcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBQSFlfSU5URVJGQUNFX01PREVfTUFYOyBpKyspXFxuK1xcdFxcdFxcdGlmIChtdGtfaW50ZXJmYWNlX21vZGVfaXNfeGdtaWkoZXRoLCBpKSlcXG4rXFx0XFx0XFx0XFx0X19jbGVhcl9iaXQoaSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIG1hYy1cXHUwMDNlcGh5bGlua19jb25maWcubHBpX2ludGVyZmFjZXMpO1xcbitcXHR9XFxuK1xcbiBcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNm1hYy1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuIFxcdFxcdFxcdFxcdCBvZl9md25vZGVfaGFuZGxlKG1hYy1cXHUwMDNlb2Zfbm9kZSksXFxuIFxcdFxcdFxcdFxcdCBwaHlfbW9kZSwgbWFjX29wcyk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oXFxuaW5kZXggMDE2OGUyZmJjNjE5Ny4uODhhOWIzYjIzYmVhNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaFxcbkBAIC05OTQsNiArOTk0LDcgQEAgZW51bSBta3RfZXRoX2NhcGFiaWxpdGllcyB7XFxuIFxcdE1US19VM19DT1BIWV9WMl9CSVQsXFxuIFxcdE1US19TUkFNX0JJVCxcXG4gXFx0TVRLXzM2QklUX0RNQV9CSVQsXFxuK1xcdE1US19HTUFDX0VFRV9CSVQsXFxuIFxcbiBcXHQvKiBNVVggQklUUyovXFxuIFxcdE1US19FVEhfTVVYX0dETTFfVE9fR01BQzFfRVNXX0JJVCxcXG5AQCAtMTAzNCw2ICsxMDM1LDcgQEAgZW51bSBta3RfZXRoX2NhcGFiaWxpdGllcyB7XFxuICNkZWZpbmUgTVRLX1UzX0NPUEhZX1YyXFx0XFx0QklUX1VMTChNVEtfVTNfQ09QSFlfVjJfQklUKVxcbiAjZGVmaW5lIE1US19TUkFNXFx0XFx0QklUX1VMTChNVEtfU1JBTV9CSVQpXFxuICNkZWZpbmUgTVRLXzM2QklUX0RNQVxcdEJJVF9VTEwoTVRLXzM2QklUX0RNQV9CSVQpXFxuKyNkZWZpbmUgTVRLX0dNQUNfRUVFXFx0XFx0QklUX1VMTChNVEtfR01BQ19FRUVfQklUKVxcbiBcXG4gI2RlZmluZSBNVEtfRVRIX01VWF9HRE0xX1RPX0dNQUMxX0VTV1xcdFxcdFxcXFxcXG4gXFx0QklUX1VMTChNVEtfRVRIX01VWF9HRE0xX1RPX0dNQUMxX0VTV19CSVQpXFxuQEAgLTExMTcsNyArMTExOSw3IEBAIGVudW0gbWt0X2V0aF9jYXBhYmlsaXRpZXMge1xcbiAjZGVmaW5lIE1UNzk4MV9DQVBTICAoTVRLX0dNQUMxX1NHTUlJIHwgTVRLX0dNQUMyX1NHTUlJIHwgTVRLX0dNQUMyX0dFUEhZIHwgXFxcXFxcbiBcXHRcXHQgICAgICBNVEtfTVVYX0dNQUMxMl9UT19HRVBIWV9TR01JSSB8IE1US19RRE1BIHwgXFxcXFxcbiBcXHRcXHQgICAgICBNVEtfTVVYX1UzX0dNQUMyX1RPX1FQSFkgfCBNVEtfVTNfQ09QSFlfVjIgfCBcXFxcXFxuLVxcdFxcdCAgICAgIE1US19SU1RDVFJMX1BQRTEgfCBNVEtfU1JBTSlcXG4rXFx0XFx0ICAgICAgTVRLX1JTVENUUkxfUFBFMSB8IE1US19TUkFNIHwgTVRLX0dNQUNfRUVFKVxcbiBcXG4gI2RlZmluZSBNVDc5ODZfQ0FQUyAgKE1US19HTUFDMV9TR01JSSB8IE1US19HTUFDMl9TR01JSSB8IFxcXFxcXG4gXFx0XFx0ICAgICAgTVRLX01VWF9HTUFDMTJfVE9fR0VQSFlfU0dNSUkgfCBNVEtfUURNQSB8IFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6Mzc6NTIuMDAxNzIzNTg1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo0MTIyNTY0Njk4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lZGlhVGVrIEdpZ2FiaXQgRXRoZXJuZXQgU29DIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYykgYW5kIHRoZSBNZWRpYVRlayBNVDc1MzAgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL210NzUzMC5jKS4gVGhlc2UgZHJpdmVycyBhcmUgc3BlY2lmaWMgdG8gTWVkaWFUZWsgQVJNL01JUFMgU29DcyAoc3VjaCBhcyBNVDc2MjEsIE1UNzk4MSwgTVQ3OTg2LCBNVDc5ODgpIGFuZCByZXF1aXJlIFNvQy1zcGVjaWZpYyBkZXZpY2UgdHJlZXMgYW5kIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBhbWQ2NCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIGFtZDY0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjYzJhNDJkMzcwMzE2NTg4MWQ0NWMyN2I0NTFjZjQwMjM1MmFlYWExXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgNCAxODozNzo1MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuaW5kZXggMmI3YmUwOTFjMDU2ZS4uM2U2MWViM2MyYjFlMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuKysrIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXG5AQCAtMzE3MiwyMyArMzE3MiwzMSBAQCBzdGF0aWMgdm9pZCBtdDc1M3hfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuIFxuIFx0Y29uZmlnLVx1MDAzZW1hY19jYXBhYmlsaXRpZXMgPSBNQUNfQVNZTV9QQVVTRSB8IE1BQ19TWU1fUEFVU0U7XG4gXG4rXHRwcml2LVx1MDAzZWluZm8tXHUwMDNlbWFjX3BvcnRfZ2V0X2NhcHMoZHMsIHBvcnQsIGNvbmZpZyk7XG4rXG4gXHQvKiBUaGUgRU43NTI4IEdQSFlzIHJlcG9ydCBFRUUgY2FwYWJpbGl0eSwgYnV0IG5lZ290aWF0aW5nIEVFRSB3aXRoXG4gXHQgKiBjb21tb24gbGluayBwYXJ0bmVycyAoZS5nLiBSZWFsdGVrIEdiRSBOSUNzKSByZXN1bHRzIGluIGFuIHVuc3RhYmxlXG4gXHQgKiBsaW5rIHdpdGggZHJvcHBlZCBmcmFtZXMuIExlYXZlIHRoZSBMUEkgY2FwYWJpbGl0aWVzIGVtcHR5IHNvIHRoYXRcbiBcdCAqIHBoeWxpbmsgZGlzYWJsZXMgRUVFIG9uIHRoZXNlIFBIWXMgYW5kIHJlZnVzZXMgdG8gZW5hYmxlIGl0IGZyb21cbiBcdCAqIHVzZXJzcGFjZS5cbiBcdCAqL1xuLVx0aWYgKHByaXYtXHUwMDNlaWQgIT0gSURfRU43NTI4KSB7XG4rXHRpZiAocHJpdi1cdTAwM2VpZCAhPSBJRF9FTjc1MjggXHUwMDI2XHUwMDI2XG4rXHQgICAgY29uZmlnLVx1MDAzZW1hY19jYXBhYmlsaXRpZXMgXHUwMDI2IChNQUNfMTAwRkQgfCBNQUNfMTAwMEZEKSkge1xuIFx0XHR1MzIgZWVlY3IgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1M1hfUE1FRUVDUl9QKHBvcnQpKTtcbiBcbi1cdFx0Y29uZmlnLVx1MDAzZWxwaV9jYXBhYmlsaXRpZXMgPSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEIHwgTUFDXzI1MDBGRDtcbitcdFx0LyogTFBJIGFib3ZlIDEgR2JwcyBpcyBub3Qgc3VwcG9ydGVkICovXG4rXHRcdGNvbmZpZy1cdTAwM2VscGlfY2FwYWJpbGl0aWVzID0gY29uZmlnLVx1MDAzZW1hY19jYXBhYmlsaXRpZXMgXHUwMDI2XG4rXHRcdFx0XHRcdCAgIChNQUNfMTAwRkQgfCBNQUNfMTAwMEZEKTtcbitcdFx0cGh5X2ludGVyZmFjZV9jb3B5KGNvbmZpZy1cdTAwM2VscGlfaW50ZXJmYWNlcyxcbitcdFx0XHRcdCAgIGNvbmZpZy1cdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4rXHRcdF9fY2xlYXJfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgsXG4rXHRcdFx0ICAgIGNvbmZpZy1cdTAwM2VscGlfaW50ZXJmYWNlcyk7XG4rXG4gXHRcdC8qIHR4X2xwaV90aW1lciBzaG91bGQgYmUgaW4gbWljcm9zZWNvbmRzLiBUaGUgdGltZSB1bml0cyBmb3JcbiBcdFx0ICogTFBJIHRocmVzaG9sZCBhcmUgdW5zcGVjaWZpZWQuXG4gXHRcdCAqL1xuIFx0XHRjb25maWctXHUwMDNlbHBpX3RpbWVyX2RlZmF1bHQgPSBGSUVMRF9HRVQoTFBJX1RIUkVTSF9NQVNLLCBlZWVjcik7XG4gXHR9XG4tXG4tXHRwcml2LVx1MDAzZWluZm8tXHUwMDNlbWFjX3BvcnRfZ2V0X2NhcHMoZHMsIHBvcnQsIGNvbmZpZyk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgbXQ3NTN4X3Bjc192YWxpZGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY1xuaW5kZXggYmUzYmQwMjVjNDFhMS4uZmQ3YTQ5YWU4OGQwMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmNcbkBAIC00ODI4LDcgKzQ4MjgsNyBAQCBzdGF0aWMgaW50IG10a19hZGRfbWFjKHN0cnVjdCBtdGtfZXRoICpldGgsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4gXHRwaHlfaW50ZXJmYWNlX3QgcGh5X21vZGU7XG4gXHRzdHJ1Y3QgcGh5bGluayAqcGh5bGluaztcbiBcdHN0cnVjdCBtdGtfbWFjICptYWM7XG4tXHRpbnQgaWQsIGVycjtcbitcdGludCBpZCwgZXJyLCBpO1xuIFx0aW50IHR4cXMgPSAxO1xuIFx0dTMyIHZhbDtcbiBcbkBAIC00OTA3LDggKzQ5MDcsOCBAQCBzdGF0aWMgaW50IG10a19hZGRfbWFjKHN0cnVjdCBtdGtfZXRoICpldGgsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4gXHRtYWMtXHUwMDNlcGh5bGlua19jb25maWcudHlwZSA9IFBIWUxJTktfTkVUREVWO1xuIFx0bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgPSBNQUNfQVNZTV9QQVVTRSB8IE1BQ19TWU1fUEFVU0UgfFxuIFx0XHRNQUNfMTAgfCBNQUNfMTAwIHwgTUFDXzEwMDAgfCBNQUNfMjUwMEZEO1xuLVx0bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMgPSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEIHxcbi1cdFx0TUFDXzI1MDBGRDtcbitcdC8qIExQSSBhYm92ZSAxIEdicHMgaXMgbm90IHN1cHBvcnRlZCAqL1xuK1x0bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMgPSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEO1xuIFx0bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV90aW1lcl9kZWZhdWx0ID0gMTAwMDtcbiBcbiBcdC8qIE1UNzYyMyBnbWFjMCBpcyBub3cgbWlzc2luZyBpdHMgc3BlZWQtc3BlY2lmaWMgUExMIGNvbmZpZ3VyYXRpb25cbkBAIC00OTY2LDYgKzQ5NjYsMTggQEAgc3RhdGljIGludCBtdGtfYWRkX21hYyhzdHJ1Y3QgbXRrX2V0aCAqZXRoLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuIFx0XHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxuIFx0XHRcdCAgbWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbiBcbitcdC8qIExQSSB3YWtlLXVwIHRpbWluZyBpcyBvbmx5IHZlcmlmaWVkIG9uIE1US19HTUFDX0VFRSBTb0NzICovXG4rXHRpZiAoTVRLX0hBU19DQVBTKGV0aC1cdTAwM2Vzb2MtXHUwMDNlY2FwcywgTVRLX0dNQUNfRUVFKSkge1xuK1x0XHRwaHlfaW50ZXJmYWNlX2NvcHkobWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9pbnRlcmZhY2VzLFxuK1x0XHRcdFx0ICAgbWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbitcdFx0X19jbGVhcl9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCxcbitcdFx0XHQgICAgbWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9pbnRlcmZhY2VzKTtcbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgUEhZX0lOVEVSRkFDRV9NT0RFX01BWDsgaSsrKVxuK1x0XHRcdGlmIChtdGtfaW50ZXJmYWNlX21vZGVfaXNfeGdtaWkoZXRoLCBpKSlcbitcdFx0XHRcdF9fY2xlYXJfYml0KGksXG4rXHRcdFx0XHRcdCAgICBtYWMtXHUwMDNlcGh5bGlua19jb25maWcubHBpX2ludGVyZmFjZXMpO1xuK1x0fVxuK1xuIFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNm1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZyxcbiBcdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKG1hYy1cdTAwM2VvZl9ub2RlKSxcbiBcdFx0XHRcdCBwaHlfbW9kZSwgbWFjX29wcyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmhcbmluZGV4IDAxNjhlMmZiYzYxOTcuLjg4YTliM2IyM2JlYTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oXG5AQCAtOTk0LDYgKzk5NCw3IEBAIGVudW0gbWt0X2V0aF9jYXBhYmlsaXRpZXMge1xuIFx0TVRLX1UzX0NPUEhZX1YyX0JJVCxcbiBcdE1US19TUkFNX0JJVCxcbiBcdE1US18zNkJJVF9ETUFfQklULFxuK1x0TVRLX0dNQUNfRUVFX0JJVCxcbiBcbiBcdC8qIE1VWCBCSVRTKi9cbiBcdE1US19FVEhfTVVYX0dETTFfVE9fR01BQzFfRVNXX0JJVCxcbkBAIC0xMDM0LDYgKzEwMzUsNyBAQCBlbnVtIG1rdF9ldGhfY2FwYWJpbGl0aWVzIHtcbiAjZGVmaW5lIE1US19VM19DT1BIWV9WMlx0XHRCSVRfVUxMKE1US19VM19DT1BIWV9WMl9CSVQpXG4gI2RlZmluZSBNVEtfU1JBTVx0XHRCSVRfVUxMKE1US19TUkFNX0JJVClcbiAjZGVmaW5lIE1US18zNkJJVF9ETUFcdEJJVF9VTEwoTVRLXzM2QklUX0RNQV9CSVQpXG4rI2RlZmluZSBNVEtfR01BQ19FRUVcdFx0QklUX1VMTChNVEtfR01BQ19FRUVfQklUKVxuIFxuICNkZWZpbmUgTVRLX0VUSF9NVVhfR0RNMV9UT19HTUFDMV9FU1dcdFx0XFxcbiBcdEJJVF9VTEwoTVRLX0VUSF9NVVhfR0RNMV9UT19HTUFDMV9FU1dfQklUKVxuQEAgLTExMTcsNyArMTExOSw3IEBAIGVudW0gbWt0X2V0aF9jYXBhYmlsaXRpZXMge1xuICNkZWZpbmUgTVQ3OTgxX0NBUFMgIChNVEtfR01BQzFfU0dNSUkgfCBNVEtfR01BQzJfU0dNSUkgfCBNVEtfR01BQzJfR0VQSFkgfCBcXFxuIFx0XHQgICAgICBNVEtfTVVYX0dNQUMxMl9UT19HRVBIWV9TR01JSSB8IE1US19RRE1BIHwgXFxcbiBcdFx0ICAgICAgTVRLX01VWF9VM19HTUFDMl9UT19RUEhZIHwgTVRLX1UzX0NPUEhZX1YyIHwgXFxcbi1cdFx0ICAgICAgTVRLX1JTVENUUkxfUFBFMSB8IE1US19TUkFNKVxuK1x0XHQgICAgICBNVEtfUlNUQ1RSTF9QUEUxIHwgTVRLX1NSQU0gfCBNVEtfR01BQ19FRUUpXG4gXG4gI2RlZmluZSBNVDc5ODZfQ0FQUyAgKE1US19HTUFDMV9TR01JSSB8IE1US19HTUFDMl9TR01JSSB8IFxcXG4gXHRcdCAgICAgIE1US19NVVhfR01BQzEyX1RPX0dFUEhZX1NHTUlJIHwgTVRLX1FETUEgfCBcXFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6Mzc6NTIuMDAxNzI3MDk1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODgxMTgzNzY4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVGhpcyBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYnJlYWsgZG93biB3aGF0J3MgYmVpbmcgdG91Y2hlZC4gSSBzZWUgY2hhbmdlcyBhZmZlY3RpbmcgYGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jYCwgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGhlYWRlciwgYG10a19ldGhfc29jLmhgLiBUaGlzIGlzIGludGVyZXN0aW5nOyB3ZSdyZSBsb29raW5nIGF0IE1lZGlhVGVrLXJlbGF0ZWQgY29kZSwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBhbiBhbWQ2NCBhcmNoaXRlY3R1cmUuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGVzZSBkcml2ZXJzICpkbyouIGBtdDc1MzAuY2AgaXMgdGhlIERTQSBkcml2ZXIgZm9yIHRoZSBNZWRpYVRlayBNVDc1MzAvTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCwgYW5kIGBtdGtfZXRoX3NvYy5jYCBpcyB0aGUgU29DIEdpZ2FiaXQgRXRoZXJuZXQgTUFDIGRyaXZlciwgcHJpbWFyaWx5IGZvciBBUk0vTUlQUyBTb0NzLiBHaXZlbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgSSBoYXZlIGEgaHVuY2ggdGhpcyBtaWdodCBiZSBhIHN1YnRsZSwgYnV0IG5vdCBuZWNlc3NhcmlseSBvYnZpb3VzLCB0aGluZyBoZXJlLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZ2V0IHNvbWUgbW9yZSBjb250ZXh0IG9uIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMuIEkgd2FudCB0byBxdWlja2x5IGFzY2VydGFpbiB3aGF0IGhhcmR3YXJlL2J1c2VzIHRoZXNlIGFyZSB1c2luZywgYW5kIHdoZXRoZXIgdGhpcyBjYW4gZXZlbiBiZSBtZWFuaW5nZnVsbHkgaW5zdGFudGlhdGVkIG9yIHByb2JlZCBpbiBhbiBhbWQ2NCBRRU1VIG9yIFN5emthbGxlciBlbnZpcm9ubWVudC4gSSdsbCBuZWVkIHRvIHVzZSBncmVwcGVyL2NvZGVzZWFyY2ggdG8gbG9vayBmb3IgdGhlIHByb2JlIGFuZCBpbml0IG1ldGhvZHMgZm9yIGJvdGggYG10NzUzMGAgYW5kIGBtdGtfZXRoX3NvY2AuIEZyb20gdGhlcmUsIEknbGwgYmUgYWJsZSB0byBnZXQgYSBiZXR0ZXIgZmVlbCBmb3IgdGhlIGltcGFjdCBvZiB0aGlzIHBhdGNoLiBUaGlzIGluaXRpYWwgaW52ZXN0aWdhdGlvbiBzaG91bGQgaW5mb3JtIGlmIGl0J3MgcG90ZW50aWFsbHkgd29ydGggYSBkZWVwZXIgZGl2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc4NywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjM4OjAwLjgxMzU2ODM0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODMyNTU5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc1MzBfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxOTU3IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz0xOD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTk6bXQ3NTMwX3JlZ21hcF93cml0ZSh2b2lkICpjb250ZXh0LCB1bnNpZ25lZCBpbnQgcmVnLCB1bnNpZ25lZCBpbnQgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIwLXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyMTpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBjb250ZXh0O1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIyLVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz00Mz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6NDQ6bXQ3NTMwX3JlZ21hcF9yZWFkKHZvaWQgKmNvbnRleHQsIHVuc2lnbmVkIGludCByZWcsIHVuc2lnbmVkIGludCAqdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTQ1LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo0NjpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBjb250ZXh0O1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTQ3LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz03Mz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjc0Om10NzUzMF9tZGlvX3JlZ21hcF9sb2NrKHZvaWQgKm1kaW9fbG9jaylcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy03NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz03OT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjgwOm10NzUzMF9tZGlvX3JlZ21hcF91bmxvY2sodm9pZCAqbWRpb19sb2NrKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTgxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTg0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjg1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2J1cyBtdDc1MzBfcmVnbWFwX2J1cyA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo4NjpcXHQucmVnX3dyaXRlID0gbXQ3NTMwX3JlZ21hcF93cml0ZSxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo4NzpcXHQucmVnX3JlYWQgPSBtdDc1MzBfcmVnbWFwX3JlYWQsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtODgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTkwPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo5MTptdDc1MzFfY3JlYXRlX3NnbWlpKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy05Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMTItXFx0XFx0bXQ3NTMxX3Bjc19jb25maWdbaV0tXFx1MDAzZW1heF9yZWdpc3RlciA9IDB4MTdjO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjExMzpcXHRcXHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cXHUwMDNlbG9jayA9IG10NzUzMF9tZGlvX3JlZ21hcF9sb2NrO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjExNDpcXHRcXHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cXHUwMDNldW5sb2NrID0gbXQ3NTMwX21kaW9fcmVnbWFwX3VubG9jaztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMTUtXFx0XFx0bXQ3NTMxX3Bjc19jb25maWdbaV0tXFx1MDAzZWxvY2tfYXJnID0gXFx1MDAyNnByaXYtXFx1MDAzZWJ1cy1cXHUwMDNlbWRpb19sb2NrO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTExNi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxMTc6XFx0XFx0cmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdChwcml2LVxcdTAwM2VkZXYsIFxcdTAwMjZtdDc1MzBfcmVnbWFwX2J1cywgcHJpdixcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMTgtXFx0XFx0XFx0XFx0XFx0ICBtdDc1MzFfcGNzX2NvbmZpZ1tpXSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMzctXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTM4OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10NzUzMF9vZl9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEzOS1cXHR7IC5jb21wYXRpYmxlID0gXFxcIm1lZGlhdGVrLG10NzYyMVxcXCIsIC5kYXRhID0gXFx1MDAyNm10NzUzeF90YWJsZVtJRF9NVDc2MjFdLCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTQzLX07XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTQ0Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG10NzUzMF9vZl9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9MTU0PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNTU6bXQ3NTMwX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNTYte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE1NzpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTU4LVxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqZG47XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNzAtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTcxOlxcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTcyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMDktXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjEwOlxcdHByaXYtXFx1MDAzZXJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXQocHJpdi1cXHUwMDNlZGV2LCBcXHUwMDI2bXQ3NTMwX3JlZ21hcF9idXMsIHByaXYsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjExLVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZyZWdtYXBfY29uZmlnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTIyMT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIyMjptdDc1MzBfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMjMte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIyNDpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjI1LVxcdGludCByZXQgPSAwLCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjM5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI0MDpcXHRtdDc1MzBfcmVtb3ZlX2NvbW1vbihwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNDEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNDUtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjQ2OnN0YXRpYyB2b2lkIG10NzUzMF9zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjQ3LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNDg6XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI0OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI1Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTg6c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBtdDc1MzBfbWRpb19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjU5OlxcdC5wcm9iZSAgPSBtdDc1MzBfcHJvYmUsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjYwOlxcdC5yZW1vdmUgPSBtdDc1MzBfcmVtb3ZlLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI2MTpcXHQuc2h1dGRvd24gPSBtdDc1MzBfc2h1dGRvd24sXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjYyLVxcdC5tZGlvZHJ2LmRyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjMtXFx0XFx0Lm5hbWUgPSBcXFwibXQ3NTMwLW1kaW9cXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI2NDpcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBtdDc1MzBfb2ZfbWF0Y2gsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjY1LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjctXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjY4Om1kaW9fbW9kdWxlX2RyaXZlcihtdDc1MzBfbWRpb19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI2OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jPTMwPW10Nzk4OF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTMxLXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzozMjpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtMzMtXFx0dm9pZCBfX2lvbWVtICpiYXNlX2FkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy00Mi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo0MzpcXHRyZXQgPSBtdDc1MzBfcHJvYmVfY29tbW9uKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTQ0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYz02Nz1zdGF0aWMgdm9pZCBtdDc5ODhfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNjgte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjY5OlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTcwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTcxLVxcdGlmIChwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjcyOlxcdFxcdG10NzUzMF9yZW1vdmVfY29tbW9uKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTczLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jPTc1PXN0YXRpYyB2b2lkIG10Nzk4OF9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTc2LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo3NzpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy03OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0zMT1zdGF0aWMgc3RydWN0IG10NzUzeF9wY3MgKnBjc190b19tdDc1M3hfcGNzKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM2LS8qIFN0cmluZywgb2Zmc2V0LCBhbmQgcmVnaXN0ZXIgc2l6ZSBpbiBieXRlcyBpZiBkaWZmZXJlbnQgZnJvbSA0IGJ5dGVzICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3NTMwX21pYl9kZXNjIG10NzUzMF9taWJbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzgtXFx0TUlCX0RFU0MoMSwgTVQ3NTMwX1BPUlRfTUlCX1RYX0RST1AsIFxcXCJUeERyb3BcXFwiKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz00OT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MDptdDc1MzBfbXV0ZXhfbG9jayhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01Nj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NzptdDc1MzBfbXV0ZXhfdW5sb2NrKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTYzPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY0OmNvcmVfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjgtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY5OlxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy05NS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6OTY6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtOTctfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTk5PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjEwMDpjb3JlX3JtdyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiBtYXNrLCB1MzIgc2V0KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xMDEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTEwNS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTA2OlxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xMDctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTQxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNDI6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTQzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNDU9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTQ2OmNvcmVfc2V0KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNTE9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTUyOmNvcmVfY2xlYXIoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTE1Nz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE1ODptdDc1MzBfbWlpX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTU5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNzE9c3RhdGljIHUzMlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNzI6bXQ3NTMwX21paV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZylcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTczLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xODg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxODk6bXQ3NTMwX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xOTItXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE5MzpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTk0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxOTU6XFx0cmV0ID0gbXQ3NTMwX21paV93cml0ZShwcml2LCByZWcsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5Ni1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTk3OlxcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMDI9c3RhdGljIHUzMlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMDM6X210NzUzMF9yZWFkKHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCAqcClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMDYtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIwNzpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwLVxcdTAwM2Vwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjA4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMDk6XFx0dmFsID0gbXQ3NTMwX21paV9yZWFkKHAtXFx1MDAzZXByaXYsIHAtXFx1MDAzZXJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIxMC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjExOlxcdG10NzUzMF9tdXRleF91bmxvY2socC1cXHUwMDNlcHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIxMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMTY9c3RhdGljIHUzMlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMTc6bXQ3NTMwX3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMTgte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMTk6XFx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyMC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjIxLVxcdElOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoXFx1MDAyNnAsIHByaXYsIHJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIyMjpcXHRyZXR1cm4gX210NzUzMF9yZWFkKFxcdTAwMjZwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjIzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMjU9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjI2Om10NzUzMF9ybXcoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMjctXFx0ICAgdTMyIG1hc2ssIHUzMiBzZXQpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyOC17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIyOTpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjMwLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzMi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjMzOlxcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzNC19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjM2PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzNzptdDc1MzBfc2V0KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjM4LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjM5OlxcdG10NzUzMF9ybXcocHJpdiwgcmVnLCB2YWwsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0MC19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjQyPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI0MzptdDc1MzBfY2xlYXIoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNDQte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDU6XFx0bXQ3NTMwX3Jtdyhwcml2LCByZWcsIHZhbCwgMCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0Ni19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjQ4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQ5Om10NzUzMF9mZGJfY21kKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgZW51bSBtdDc1MzBfZmRiX2NtZCBjbWQsIHUzMiAqcnNwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTAte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1NS1cXHR2YWwgPSBBVENfQlVTWSB8IEFUQ19NQVQoMCkgfCBjbWQ7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI1NjpcXHRyZXQgPSBtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX0FUQywgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjU3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjU5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNjA6XFx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI2MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNjYtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI2NzpcXHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNjgtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9Mjg2PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI4NzptdDc1MzBfZmRiX3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBzdHJ1Y3QgbXQ3NTMwX2ZkYiAqZmRiKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yODgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI5My1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgMzsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI5NDpcXHRcXHRyZWdbaV0gPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzBfVFNSQTEgKyAoaSAqIDQpKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjk1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTMxMj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMTM6bXQ3NTMwX2ZkYl93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUxNiB2aWQsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMxNC1cXHRcXHQgdTggcG9ydF9tYXNrLCBjb25zdCB1OCAqbWFjLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMzOC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgMzsgaSsrKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMzk6XFx0XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9BVEExICsgKGkgKiA0KSwgcmVnW2ldKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzQwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNDItLyogU2V0IHVwIHN3aXRjaCBjb3JlIGNsb2NrIGZvciBNVDc1MzAgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzQzOnN0YXRpYyB2b2lkIG10NzUzMF9wbGxfc2V0dXAoc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNDQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTM4Mz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozODQ6bXQ3NTMwX3NldHVwX3BvcnQ2KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzg1LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mzg2OlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zODctXFx0dTMyIG5jcG8xLCBzc2NfZGVsdGEsIHh0YWw7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzkyLVxcdGlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJKSB7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM5MzpcXHRcXHRtdDc1MzBfcm13KHByaXYsIE1UNzUzMF9QNkVDUiwgUDZfSU5URl9NT0RFX01BU0ssXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM5NC1cXHRcXHRcXHQgICBQNl9JTlRGX01PREUoMCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM5Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mzk4OlxcdG10NzUzMF9ybXcocHJpdiwgTVQ3NTMwX1A2RUNSLCBQNl9JTlRGX01PREVfTUFTSywgUDZfSU5URl9NT0RFKDEpKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzk5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0MDA6XFx0eHRhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzWF9NVFJBUCkgXFx1MDAyNiBNVDc1MzBfWFRBTF9NQVNLO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00MDEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NDM2PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQzNzptdDc1MzFfcGxsX3NldHVwKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDM4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NDMtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ0NDpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfQ1JFVik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ0NTpcXHR0b3Bfc2lnID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1RPUF9TSUdfU1IpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NDY6XFx0aHdzdHJhcCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzWF9UUkFQKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDQ3LVxcdGlmICgodmFsIFxcdTAwMjYgQ0hJUF9SRVZfTSkgXFx1MDAzZSAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1NC1cXHQvKiBTdGVwIDEgOiBEaXNhYmxlIE1UNzUzMSBDT1JFUExMICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ1NTpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4pO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTYtXFx0dmFsIFxcdTAwMjY9IH5FTl9DT1JFUExMO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NTc6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9FTiwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDU4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTktXFx0LyogU3RlcCAyOiBzd2l0Y2ggdG8gWFRBTCBvdXRwdXQgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDYwOlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9FTik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2MS1cXHR2YWwgfD0gU1dfQ0xLU1c7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ2MjpcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0VOLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NjMtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ2NDpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDY1LVxcdHZhbCBcXHUwMDI2PSB+UkdfQ09SRVBMTF9FTjtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDY2OlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NjctXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2OC1cXHQvKiBTdGVwIDM6IGRpc2FibGUgUExMR1AgYW5kIGVuYWJsZSBwcm9ncmFtIFBMTEdQICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ2OTpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4pO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzAtXFx0dmFsIHw9IFNXX1BMTEdQO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NzE6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9FTiwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDcyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzMtXFx0LyogU3RlcCA0OiBwcm9ncmFtIENPUkVQTEwgb3V0cHV0IGZyZXF1ZW5jeSB0byA1MDBNSHogKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDc0OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzUtXFx0dmFsIFxcdTAwMjY9IH5SR19DT1JFUExMX1BPU0RJVl9NO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzYtXFx0dmFsIHw9IDIgXFx1MDAzY1xcdTAwM2MgUkdfQ09SRVBMTF9QT1NESVZfUztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDc3OlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzgtXFx0dXNsZWVwX3JhbmdlKDI1LCAzNSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDgxLVxcdGNhc2UgTVQ3NTMxX1hUQUxfRlNFTF8yNU1IWjpcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDgyOlxcdFxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODMtXFx0XFx0dmFsIFxcdTAwMjY9IH5SR19DT1JFUExMX1NETV9QQ1dfTTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDg0LVxcdFxcdHZhbCB8PSAweDE0MDAwMCBcXHUwMDNjXFx1MDAzYyBSR19DT1JFUExMX1NETV9QQ1dfUztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDg1OlxcdFxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODYtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ4Ny1cXHRjYXNlIE1UNzUzMV9YVEFMX0ZTRUxfNDBNSFo6XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ4ODpcXHRcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDg5LVxcdFxcdHZhbCBcXHUwMDI2PSB+UkdfQ09SRVBMTF9TRE1fUENXX007XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5MC1cXHRcXHR2YWwgfD0gMHgxOTAwMDAgXFx1MDAzY1xcdTAwM2MgUkdfQ09SRVBMTF9TRE1fUENXX1M7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ5MTpcXHRcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDkyLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5NS1cXHQvKiBTZXQgZmVlZGJhY2sgZGl2aWRlIHJhdGlvIHVwZGF0ZSBzaWduYWwgdG8gaGlnaCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0OTY6XFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5Ny1cXHR2YWwgfD0gUkdfQ09SRVBMTF9TRE1fUENXX0NIRztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDk4OlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00OTktXFx0LyogV2FpdCBmb3IgYXQgbGVhc3QgMTYgWFRBTCBjbG9ja3MgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MDItXFx0LyogU3RlcCA1OiBzZXQgZmVlZGJhY2sgZGl2aWRlIHJhdGlvIHVwZGF0ZSBzaWduYWwgdG8gbG93ICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUwMzpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTA0LVxcdHZhbCBcXHUwMDI2PSB+UkdfQ09SRVBMTF9TRE1fUENXX0NIRztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTA1OlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MDYtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwNy1cXHQvKiBFbmFibGUgMzI1TSBjbG9jayBmb3IgU0dNSUkgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTA4OlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfQU5BX1BMTEdQX0NSNSwgMHhhZDAwMDApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MDktXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxMC1cXHQvKiBFbmFibGUgMjUwU1NDIGNsb2NrIGZvciBSR01JSSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MTE6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9BTkFfUExMR1BfQ1IyLCAweDRmNDAwMDApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MTItXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxMy1cXHQvKiBTdGVwIDY6IEVuYWJsZSBNVDc1MzEgUExMICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUxNDpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTE1LVxcdHZhbCB8PSBSR19DT1JFUExMX0VOO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MTY6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxNy1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTE4OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9FTik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxOS1cXHR2YWwgfD0gRU5fQ09SRVBMTDtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTIwOlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfRU4sIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUyMS1cXHR1c2xlZXBfcmFuZ2UoMjUsIDM1KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01MjQ9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTI1Om10NzUzMF9taWJfcmVzZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MjYte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1Mjc6XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUyOC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTI5OlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfTUlCX0NDUiwgQ0NSX01JQl9GTFVTSCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUzMDpcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX01JQl9DQ1IsIENDUl9NSUJfQUNUSVZBVEUpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MzEtfVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MzItXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUzMzpzdGF0aWMgaW50IG10NzUzMF9waHlfcmVhZF9jMjIoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSlcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTM0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MzctXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUzODpzdGF0aWMgaW50IG10NzUzMF9waHlfd3JpdGVfYzIyKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0sXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUzOS1cXHRcXHRcXHRcXHR1MTYgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU0My1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTQ0OnN0YXRpYyBpbnQgbXQ3NTMwX3BoeV9yZWFkX2M0NShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NDUtXFx0XFx0XFx0ICAgICAgIGludCBkZXZhZCwgaW50IHJlZ251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NDktXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU1MDpzdGF0aWMgaW50IG10NzUzMF9waHlfd3JpdGVfYzQ1KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTUxLVxcdFxcdFxcdFxcdGludCByZWdudW0sIHUxNiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NTU2PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTU3Om10NzUzMV9pbmRfYzQ1X3BoeV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTU4LVxcdFxcdFxcdGludCByZWdudW0pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTYyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NjM6XFx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU2NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NzMtXFx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgcmVnbnVtO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NzQ6XFx0cmV0ID0gbXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NzUtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTg2LVxcdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTg3OlxcdHJldCA9IG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTg4LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU5OS1vdXQ6XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYwMDpcXHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MDEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NjA1PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjA2Om10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYwNy1cXHRcXHRcXHQgaW50IHJlZ251bSwgdTE2IGRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjExLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MTI6XFx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYxMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MjItXFx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgcmVnbnVtO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MjM6XFx0cmV0ID0gbXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MjQtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjM1LVxcdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKSB8IGRhdGE7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYzNjpcXHRyZXQgPSBtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYzNy1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NDctb3V0OlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NDg6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTY1Mz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY1NDptdDc1MzFfaW5kX2MyMl9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NTUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY1OC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjU5OlxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NjAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjcwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NzE6XFx0cmV0ID0gbXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgdmFsIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NzItXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjgzLW91dDpcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Njg0OlxcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY4NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz02ODk9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2OTA6bXQ3NTMxX2luZF9jMjJfcGh5X3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0sXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY5MS1cXHRcXHRcXHQgdTE2IGRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjk1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2OTY6XFx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY5Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MDctXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjcwODpcXHRyZXQgPSBtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTcwOS1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MTktb3V0OlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3MjA6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzIxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTcyNj1tdDc1M3hfcGh5X3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03Mjcte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3Mjg6XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MjktXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NzM0PW10NzUzeF9waHlfcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCBkZXZhZCwgaW50IHJlZ251bSlcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzM1LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NzM2OlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzM3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTc0Mj1tdDc1M3hfcGh5X3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTE2IHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzQzLXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NzQ0OlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTc1MD1tdDc1M3hfcGh5X3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IGRldmFkLCBpbnQgcmVnbnVtLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc1Mi17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjc1MzpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc1NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz03NTg9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NzU5Om10NzUzMF9nZXRfc3RyaW5ncyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCB1MzIgc3RyaW5nc2V0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03NjAtXFx0XFx0ICAgdWludDhfdCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03NjYtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjc2NzpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShtdDc1MzBfbWliKTsgaSsrKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3Njg6XFx0XFx0ZXRodG9vbF9wdXRzKFxcdTAwMjZkYXRhLCBtdDc1MzBfbWliW2ldLm5hbWUpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03NjktfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTc3MT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3NzI6bXQ3NTMwX3JlYWRfcG9ydF9zdGF0cyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03NzMtXFx0XFx0ICAgICAgIHUzMiBvZmZzZXQsIHU4IHNpemUsIHVpbnQ2NF90ICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc3Ni1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Nzc3OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIHJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc3OC1cXHQqZGF0YSA9IHZhbDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03ODAtXFx0aWYgKHNpemUgPT0gMikge1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3ODE6XFx0XFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgcmVnICsgNCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc4Mi1cXHRcXHQqZGF0YSB8PSAodTY0KXZhbCBcXHUwMDNjXFx1MDAzYyAzMjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz03ODY9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Nzg3Om10NzUzMF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03ODgtXFx0XFx0XFx0IHVpbnQ2NF90ICpkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03ODkte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3OTA6XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjc5MTpcXHRjb25zdCBzdHJ1Y3QgbXQ3NTMwX21pYl9kZXNjICptaWI7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc5Mi1cXHRpbnQgaTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzkzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3OTQ6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUobXQ3NTMwX21pYik7IGkrKykge1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3OTU6XFx0XFx0bWliID0gXFx1MDAyNm10NzUzMF9taWJbaV07XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc5Ni1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Nzk3OlxcdFxcdG10NzUzMF9yZWFkX3BvcnRfc3RhdHMocHJpdiwgcG9ydCwgbWliLVxcdTAwM2VvZmZzZXQsIG1pYi1cXHUwMDNlc2l6ZSxcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6Mzg6MDAuOTMxODk5NDg1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzUzNTgwMTg1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqRGl2aW5nIGludG8gdGhlIE1lZGlhdGVrIEV0aGVybmV0IERyaXZlcioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQncyBzdGFydCBkaWdnaW5nIGludG8gdGhlIE1lZGlhdGVrIEV0aGVybmV0IGRyaXZlci4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgc28gSSdtIGdvaW5nIHN0cmFpZ2h0IGZvciBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY2AuIFNwZWNpZmljYWxseSwgSSdtIGZvY3VzaW5nIG9uIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIGFuZCBob3cgdGhlIGRyaXZlciByZWdpc3RlcnMgaXRzZWxmIHdpdGggdGhlIGtlcm5lbC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhlIGhhcmR3YXJlIGlzIGRldGVjdGVkLCB0aGUgcmVzb3VyY2VzIGFyZSBhbGxvY2F0ZWQsIGFuZCB0aGUgbmV0d29yayBpbnRlcmZhY2UgaXMgYnJvdWdodCBvbmxpbmUuIEdvdCB0byBtYWtlIHN1cmUgdGhlIGNvcmUgc2V0dXAgaXMgc291bmQgYmVmb3JlIEkgZ28gZnVydGhlciBkb3duIHRoZSByYWJiaXQgaG9sZS4gVGhpcyB3aWxsIGdpdmUgbWUgdGhlIGJhc2UgdG8gd29yayBvZmYsIGFzIEkgcHJvY2VlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg3OTUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODozODowNC40Njc3MDQwOTlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIxNzkyNDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3BsYXRmb3JtX2RyaXZlcnxwbGF0Zm9ybV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM9NTY3Nj1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvZl9tdGtfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNTY3Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjU2Nzg6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTU2NzktXFx0LnByb2JlID0gbXRrX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy01Njg2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6NTY4Nzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG10a19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNTY4OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYz0xNzQ2PXN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhtdGtfc3Rhcl9wbV9vcHMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmMtMTc0OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM6MTc0OTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfc3Rhcl9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE3NTAtXFx0LmRyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYy0xNzU2LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jOjE3NTc6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtdGtfc3Rhcl9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYy0xNzU4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODozODowNC41NDk4ODkzMTVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjczNzQ3MTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhpcy4gTXkgZmlyc3QgbW92ZSBpcyB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBjb2RlLiBJJ20gdGhpbmtpbmcgSSBzaG91bGQgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBtdGtfZHJpdmVyYCB3aXRoaW4gYG10a19ldGhfc29jLmNgLiBUaGF0IHNob3VsZCBwcm92aWRlIGEgYnJvYWQgb3ZlcnZpZXcuIFRoZW4sIEkgbmVlZCB0byBsb29rIGF0IGBtdDc1MzBgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAqYCBkaXJlY3RvcnkuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBwYWlyaW5nLCBnaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0uXG5cbk9uY2UgSSd2ZSBnb3QgdGhvc2UgZmlsZXMgaW4gZnJvbnQgb2YgbWUsIEkgbmVlZCB0byBjaGVjayB0aGUgY29ycmVzcG9uZGluZyBgS2NvbmZpZ2AgZmlsZXMgZm9yIGJvdGguIEkgd2FudCB0byBzZWUgaG93IHRoZXNlIGRyaXZlcnMgYXJlIGNvbmZpZ3VyZWQgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIHRoZXkgaGF2ZS4gVGhhdCdsbCB0ZWxsIG1lIGhvdyB0aGV5IGZpdCBpbnRvIHRoZSBicm9hZGVyIGtlcm5lbCBidWlsZCBhbmQgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBvcHRpb25zIG9yIHNldHRpbmdzIEkgbmVlZCB0byBrZWVwIGluIG1pbmQuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTUwNywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjM4OjA3LjIyMzYzOTU0NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTA3NzExNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkVUX0RTQV9NVDc1MzB8TkVUX01FRElBVEVLX1NPQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL0tjb25maWc9Mjk9c291cmNlIFxcXCJkcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzAtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzE6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzItXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzUzMCBhbmQgTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzQtXFx0c2VsZWN0IFJFR01BUF9JUlFcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzozNTpcXHRpbXBseSBORVRfRFNBX01UNzUzMF9NRElPXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzY6XFx0aW1wbHkgTkVUX0RTQV9NVDc1MzBfTU1JT1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTM3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQyLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjQzOmNvbmZpZyBORVRfRFNBX01UNzUzMF9NRElPXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNDQtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzUzMCBNRElPIGludGVyZmFjZSBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NDU6XFx0ZGVwZW5kcyBvbiBORVRfRFNBX01UNzUzMFxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQ2LVxcdHNlbGVjdCBNRURJQVRFS19HRV9QSFlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTUzLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjU0OmNvbmZpZyBORVRfRFNBX01UNzUzMF9NTUlPXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTUtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzUzMCBNTUlPIGludGVyZmFjZSBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NTY6XFx0ZGVwZW5kcyBvbiBORVRfRFNBX01UNzUzMFxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTU3LVxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9NT1vYmotJChDT05GSUdfTkVUX0RTQV9LUzg5OTUpIFxcdCs9IGtzODk5NS5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX05FVF9EU0FfTVQ3NTMwKVxcdCs9IG10NzUzMC5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX05FVF9EU0FfTVQ3NTMwX01ESU8pICs9IG10NzUzMC1tZGlvLm9cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfTkVUX0RTQV9NVDc1MzBfTU1JTykgKz0gbXQ3NTMwLW1taW8ub1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS05LW9iai0kKENPTkZJR19ORVRfRFNBX01UNzYyOCkgKz0gbXQ3NjI4Lm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc9OD1pZiBORVRfVkVORE9SX01FRElBVEVLXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy05LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MTA6Y29uZmlnIE5FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0xMS1cXHRkZXBlbmRzIG9uIEFSQ0hfTUVESUFURUsgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoxMjpcXHRkZWZfYm9vbCBORVRfTUVESUFURUtfU09DICE9IG5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTEzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MTQ6Y29uZmlnIE5FVF9NRURJQVRFS19TT0NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTE1LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBTb0MgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19ORVRfTUVESUFURUtfU09DKSArPSBtdGtfZXRoLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZS03LW10a19ldGgteSA6PSBtdGtfZXRoX3NvYy5vIG10a19ldGhfcGF0aC5vIG10a19wcGUubyBtdGtfcHBlX2RlYnVnZnMubyBtdGtfcHBlX29mZmxvYWQub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL01ha2VmaWxlOjg6bXRrX2V0aC0kKENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCkgKz0gbXRrX3dlZC5vIG10a193ZWRfbWN1Lm8gbXRrX3dlZF93by5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGUtOS1pZmRlZiBDT05GSUdfREVCVUdfRlNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZToxMDptdGtfZXRoLSQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKSArPSBtdGtfd2VkX2RlYnVnZnMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL01ha2VmaWxlLTExLWVuZGlmXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKSArPSBtdGtfd2VkX29wcy5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGUtMTMtb2JqLSQoQ09ORklHX05FVF9NRURJQVRFS19TVEFSX0VNQUMpICs9IG10a19zdGFyX2VtYWMub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmM9OTI9bXRrX2Zsb3dfZ2V0X3dkbWFfaW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqYWRkciwgc3RydWN0IG10a193ZG1hX2luZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuYy0xMDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmM6MTA0OlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jLTEwNS1cXHRcXHRyZXR1cm4gLTE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfd2VkLmg9NTY9c3RydWN0IG10a193ZG1hX2luZm8ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3dlZC5oLTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a193ZWQuaDo2NDojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3dlZC5oLTY1LXN0YXRpYyBpbmxpbmUgYm9vbCBtdGtfd2VkX2lzX3YxKHN0cnVjdCBtdGtfd2VkX2h3ICpodylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM9NTA3PW10NzZfZG1hX2dldF9idWYoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlICpxLCBpbnQgaWR4LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy01NDktXFx0XFx0bXQ3Nl9wdXRfcnh3aShkZXYsIHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6NTUwOiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTU1MS1cXHRcXHQvKiB0aGUgV08gTUNVIG93bnMgdGhlIFJYIHBhdGggb25seSBvbiBXRUQgdjIsIG9uIG5ld2VyXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTU2OT1tdDc2X2RtYV9kZXF1ZXVlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSwgYm9vbCBmbHVzaCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtNjE1LVxcdFxcdFxcdHJldHVybiBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6NjE2OiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTYxNy1cXHRcXHQvKiBvbiBXRUQgdjMgdGhlIE1fRE9ORSBiaXQgc2lnbmFscyB0aGF0IFdFRCBpcyBkb25lIHJlYWRpbmdcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM9MTAwMT1tdDc2X2RtYV9yeF9wcm9jZXNzKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSwgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtMTAxMS1cXHRpZiAoKHEtXFx1MDAzZWZsYWdzIFxcdTAwMjYgTVRfUUZMQUdfV0VEX1JST19FTikgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjEwMTI6XFx0ICAgIChJU19FTkFCTEVEKENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTEwMTMtXFx0ICAgICBtdDc2X3F1ZXVlX2lzX3dlZF90eF9mcmVlKHEpKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaD01Mj1tdDc2X2RtYV9oYW5kbGVfcmVhZChzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSwgdTMyIG9mZnNldCwgdTMyICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaC01My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaDo1NDojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaC01NS1cXHRpZiAocS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBNVF9RRkxBR19XRUQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmg9ODA9bXQ3Nl9kbWFfaGFuZGxlX3dyaXRlKHN0cnVjdCBtdDc2X3F1ZXVlICpxLCB1MzIgb2Zmc2V0LCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmgtODEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmg6ODI6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmgtODMtXFx0aWYgKHEtXFx1MDAzZWZsYWdzIFxcdTAwMjYgTVRfUUZMQUdfV0VEKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMjUwPWludCBtdDc2X3dlZF9uZXRfc2V0dXBfdGMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjUyLVxcdFxcdFxcdCAgdm9pZCAqdHlwZV9kYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMjUzOiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjU0LXUzMiBtdDc2X3dlZF9pbml0X3J4X2J1ZihzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCwgaW50IHNpemUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTI2OD1zdGF0aWMgaW5saW5lIGludCBtdDc2X3dlZF9kbWFfc2V0dXAoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlICpxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTI3Mi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTI3MzojZW5kaWYgLyogQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTI3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTEyOTc9c3RhdGljIGlubGluZSBzdHJ1Y3QgbXQ3Nl9kZXYgKm10NzZfd2VkX3RvX2RldihzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjk4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMjk5OiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMzAwLVxcdGlmICh3ZWQtXFx1MDAzZXdsYW4uaGlmMilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMzAxLVxcdFxcdHJldHVybiBjb250YWluZXJfb2Yod2VkLCBzdHJ1Y3QgbXQ3Nl9kZXYsIG1taW8ud2VkX2hpZjIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEzMDI6I2VuZGlmIC8qIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEzMDMtXFx0cmV0dXJuIGNvbnRhaW5lcl9vZih3ZWQsIHN0cnVjdCBtdDc2X2RldiwgbW1pby53ZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jPTE2ODQ9bXQ3OTE1X3NldF9yYWRhcl9iYWNrZ3JvdW5kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTE3MzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jOjE3MzI6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYy0xNzMzLXN0YXRpYyBpbnRcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYz0xNzc2PWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG10NzkxNV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTgyOS1cXHQuc2V0X3JhZGFyX2JhY2tncm91bmQgPSBtdDc5MTVfc2V0X3JhZGFyX2JhY2tncm91bmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jOjE4MzA6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYy0xODMxLVxcdC5uZXRfZmlsbF9mb3J3YXJkX3BhdGggPSBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MTgwMz1pbnQgbXQ3OTE1X21jdV93ZWRfZW5hYmxlX3J4X3N0YXRzKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMTgwNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MTgwNTojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMTgwNi1cXHRzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCA9IFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9NTY1PXN0YXRpYyB1MzIgbXQ3OTE1X3JtdyhzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHUzMiBvZmZzZXQsIHUzMiBtYXNrLCB1MzIgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTU3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM6NTgwOiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtNTgxLXN0YXRpYyB2b2lkIG10NzkxNV9tbWlvX3dlZF91cGRhdGVfcnhfc3RhdHMoc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9NjMzPWludCBtdDc5MTVfbW1pb193ZWRfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB2b2lkICpwZGV2X3B0cixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy02MzUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYzo2MzY6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy02MzctXFx0c3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQgPSBcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTgzMz1zdGF0aWMgdm9pZCBtdDc5OTZfcnJvX2h3X2luaXRfdjMoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy04NDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjg0MTojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTg0Mi1cXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkgXFx1MDAyNlxcdTAwMjYgbXRrX3dlZF9nZXRfcnhfY2FwYSh3ZWQpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtODU0LVxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6ODU1OiNlbmRpZiAvKiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtODU2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTk1Nz1zdGF0aWMgaW50IG10Nzk5Nl93ZWRfcnJvX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMDA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxMDA2OiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTAwNy1cXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTAxMy1cXHRcXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjEwMTQ6I2VuZGlmIC8qIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMDE1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYz0yMzk4PW10Nzk5Nl9uZXRfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjQzMS1cXHRwYXRoLVxcdTAwM2VkZXYgPSBjdHgtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM6MjQzMjojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI0MzMtXFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI0NTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jOjI0NTY6I2lmIGRlZmluZWQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKSB8fCBkZWZpbmVkKENPTkZJR19NVDc5OTZfTlBVKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNDU3LXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM9MjQ1OD1tdDc5OTZfbmV0X3NldHVwX3RjKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI0NjEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYzoyNDYyOiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjQ2My1cXHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gbXQ3OTk2X2h3X2Rldihodyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM9MjU0NT1jb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBtdDc5OTZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI1OTktXFx0Lm5ldF9maWxsX2ZvcndhcmRfcGF0aCA9IG10Nzk5Nl9uZXRfZmlsbF9mb3J3YXJkX3BhdGgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jOjI2MDA6I2lmIGRlZmluZWQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKSB8fCBkZWZpbmVkKENPTkZJR19NVDc5OTZfTlBVKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNjAxLVxcdC5uZXRfc2V0dXBfdGMgPSBtdDc5OTZfbmV0X3NldHVwX3RjLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jPTQzNj1zdGF0aWMgdTMyIG10Nzk5Nl9ybXcoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1MzIgb2Zmc2V0LCB1MzIgbWFzaywgdTMyIHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy00NTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jOjQ1MTojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTQ1Mi1zdGF0aWMgaW50IG10Nzk5Nl9tbWlvX3dlZF9yZXNldChzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYz00ODI9aW50IG10Nzk5Nl9tbWlvX3dlZF9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHZvaWQgKnBkZXZfcHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTQ4NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jOjQ4NTojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTQ4Ni1cXHRzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCA9IFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM9OTMwPWludCBtdDc2X3Rva2VuX2NvbnN1bWUoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3R4d2lfY2FjaGUgKipwdHh3aSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy05NDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjk0ODojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTk0OS1cXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jPTk4Mj1tdDc2X3Rva2VuX3JlbGVhc2Uoc3RydWN0IG10NzZfZGV2ICpkZXYsIGludCB0b2tlbiwgYm9vbCAqd2FrZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy05OTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjk5ODojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTk5OS1cXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYz0yOT1FWFBPUlRfU1lNQk9MX0dQTChtdDc2X3dlZF9yZWxlYXNlX3J4X2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYy0zMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jOjMxOiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jLTMyLXUzMiBtdDc2X3dlZF9pbml0X3J4X2J1ZihzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCwgaW50IHNpemUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jPTE2Nz1FWFBPUlRfU1lNQk9MX0dQTChtdDc2X3dlZF9kbWFfc2V0dXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmM6MTY4OiNlbmRpZiAvKkNPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmMtMTY5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODozODowNy41MzQ0MTY4MTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozODExNjg0MDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhpcyB0YXNrLCB0aGlua2luZyBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOlxuXG4qKkludmVzdGlnYXRpbmcgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgbmV0d29yayBkcml2ZXIgbGFuZHNjYXBlIGhlcmUuIE15IGZpcnN0IG1vdmUgaXMgdG8gY2hlY2sgb3V0IGBkcml2ZXJzL25ldC9kc2EvS2NvbmZpZ2AgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnYC4gVGhlc2UgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgdGhlIGtleXMgdG8gdW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIGFuZCB0YXJnZXQgcGxhdGZvcm1zIGZvciB0aGVzZSBuZXR3b3JrIGRldmljZSBkcml2ZXJzLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW46XG5cbiogICBXaGF0IG90aGVyIGtlcm5lbCBmZWF0dXJlcyBvciBoYXJkd2FyZSBjb21wb25lbnRzIGFyZSB0aGVzZSBEU0EgYW5kIE1lZGlhdGVrIEV0aGVybmV0IGRyaXZlcnMgZGVwZW5kZW50IHVwb24/IEFyZSB0aGVyZSBzcGVjaWZpYyBQSFlzLCBvdGhlciBuZXR3b3JraW5nIHN1YnN5c3RlbXMsIG9yIGJvYXJkLWxldmVsIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkP1xuKiAgIFdoaWNoIFNvQ3MgYW5kIHBsYXRmb3JtcyBhcmUgdGhlc2UgZHJpdmVycyBwcmltYXJpbHkgZGVzaWduZWQgZm9yPyBUaGlzIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZWlyIGludGVuZGVkIHVzZSBjYXNlcyBhbmQgaG93IGJyb2FkbHkgdGhleSdyZSBhcHBsaWNhYmxlLlxuXG5Lbm93aW5nIHRoZSBhbnN3ZXJzIHRvIHRoZXNlIHF1ZXN0aW9ucyB3aWxsIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciBldmFsdWF0aW5nIGhvdyB0aGVzZSBkcml2ZXJzIGZpdCBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZSBhbmQgYW55IGNvbXBhdGliaWxpdHkgY29uc2lkZXJhdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhlc2UgY29uZmlndXJhdGlvbiBkZXRhaWxzIGlzIGVzc2VudGlhbCBmb3IgYW55IGRlZXBlciBhbmFseXNpcyBvciBtb2RpZmljYXRpb24uIExldCdzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGVzIHJldmVhbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4NzcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODozODoxMS4zNDYxMDI5ODNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM3NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzA6XFx0XFxuICAzMTpcXHRjb25maWcgTkVUX0RTQV9NVDc1MzBcXG4gIDMyOlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFxcXCJcXG4gIDMzOlxcdFxcdHNlbGVjdCBORVRfRFNBX1RBR19NVEtcXG4gIDM0OlxcdFxcdHNlbGVjdCBSRUdNQVBfSVJRXFxuICAzNTpcXHRcXHRpbXBseSBORVRfRFNBX01UNzUzMF9NRElPXFxuICAzNjpcXHRcXHRpbXBseSBORVRfRFNBX01UNzUzMF9NTUlPXFxuICAzNzpcXHRcXHRoZWxwXFxuICAzODpcXHRcXHQgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgTWVkaWFUZWsgTVQ3NTMwIGFuZCBNVDc1MzEgRXRoZXJuZXRcXG4gIDM5OlxcdFxcdCAgc3dpdGNoIGNoaXBzLiBNdWx0aS1jaGlwIG1vZHVsZSBNVDc1MzAgaW4gTVQ3NjIxQVQsIE1UNzYyMURBVCxcXG4gIDQwOlxcdFxcdCAgTVQ3NjIxU1QgYW5kIE1UNzYyM0FJIFNvQ3MsIGFuZCBidWlsdC1pbiBzd2l0Y2ggaW4gTVQ3OTg4IFNvQyBhcmVcXG4gIDQxOlxcdFxcdCAgc3VwcG9ydGVkIGFzIHdlbGwuXFxuICA0MjpcXHRcXG4gIDQzOlxcdGNvbmZpZyBORVRfRFNBX01UNzUzMF9NRElPXFxuICA0NDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIE1ESU8gaW50ZXJmYWNlIGRyaXZlclxcXCJcXG4gIDQ1OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQV9NVDc1MzBcXG4gIDQ2OlxcdFxcdHNlbGVjdCBNRURJQVRFS19HRV9QSFlcXG4gIDQ3OlxcdFxcdHNlbGVjdCBQQ1NfTVRLX0xZTlhJXFxuICA0ODpcXHRcXHRoZWxwXFxuICA0OTpcXHRcXHQgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgTWVkaWFUZWsgTVQ3NTMwIGFuZCBNVDc1MzEgc3dpdGNoXFxuICA1MDpcXHRcXHQgIGNoaXBzIHdoaWNoIGFyZSBjb25uZWN0ZWQgdmlhIE1ESU8sIGFzIHdlbGwgYXMgbXVsdGktY2hpcFxcbiAgNTE6XFx0XFx0ICBtb2R1bGUgTVQ3NTMwIHdoaWNoIGNhbiBiZSBmb3VuZCBpbiB0aGUgTVQ3NjIxQVQsIE1UNzYyMURBVCxcXG4gIDUyOlxcdFxcdCAgTVQ3NjIxU1QgYW5kIE1UNzYyM0FJIFNvQ3MuXFxuICA1MzpcXHRcXG4gIDU0OlxcdGNvbmZpZyBORVRfRFNBX01UNzUzMF9NTUlPXFxuICA1NTpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIE1NSU8gaW50ZXJmYWNlIGRyaXZlclxcXCJcXG4gIDU2OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQV9NVDc1MzBcXG4gIDU3OlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuICA1ODpcXHRcXHRpbXBseSBNRURJQVRFS19HRV9TT0NfUEhZXFxuICA1OTpcXHRcXHRoZWxwXFxuICA2MDpcXHRcXHQgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgYnVpbHQtaW4gRXRoZXJuZXQgc3dpdGNoIGZvdW5kXFxuICA2MTpcXHRcXHQgIGluIHRoZSBNZWRpYVRlayBNVDc5ODggU29DLlxcbiAgNjI6XFx0XFx0ICBUaGUgc3dpdGNoIGlzIGEgc2ltaWxhciBkZXNpZ24gYXMgTVQ3NTMxLCBidXQgdGhlIHN3aXRjaCByZWdpc3RlcnNcXG4gIDYzOlxcdFxcdCAgYXJlIGRpcmVjdGx5IG1hcHBlZCBpbnRvIHRoZSBTb0NzIHJlZ2lzdGVyIHNwYWNlIHJhdGhlciB0aGFuIGJlaW5nXFxuICA2NDpcXHRcXHQgIGFjY2Vzc2libGUgdmlhIE1ESU8uXFxuICA2NTpcXHRcXG4gIDY2OlxcdGNvbmZpZyBORVRfRFNBX01UNzYyOFxcbiAgNjc6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzYyOCBFbWJlZGRlZCBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFxcXCJcXG4gIDY4OlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IChTT0NfTVQ3NjIwIHx8IENPTVBJTEVfVEVTVClcXG4gIDY5OlxcdFxcdHNlbGVjdCBORVRfRFNBX1RBR19NVDc2MjhcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6Mzg6MTEuMzQ2MTY5MzgzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0ODA4MjQ2MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkV4YW1pbmluZyB0aGUgTWVkaWF0ZWsgRXRoZXJuZXQgS2NvbmZpZyBGaWxlKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBNZWRpYXRlayBFdGhlcm5ldCBkcml2ZXIgY29uZmlndXJhdGlvbi4gTGV0J3Mgc3RhcnQgYnkgdGFraW5nIGEgbG9vayBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZ2AuIEknbSBndWVzc2luZyB0aGlzIGZpbGUgd2lsbCBwcm92aWRlIHRoZSBmb3VuZGF0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZHJpdmVyIOKAkyB0aGluZ3MgbGlrZSBlbmFibGluZy9kaXNhYmxpbmcgdGhlIGRyaXZlciwgc2VsZWN0aW5nIHNwZWNpZmljIE1lZGlhdGVrIEV0aGVybmV0IGNvbnRyb2xsZXIgbW9kZWxzLCBwb3RlbnRpYWxseSBvcHRpb25zIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlcyBvciB2YXJpYXRpb25zLCBhbmQgcHJvYmFibHkgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgY29tcG9uZW50cy4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHN0cnVjdHVyZSBhbmQgZGVwZW5kZW5jaWVzIGRlZmluZWQgaGVyZSB0byBwcm9wZXJseSBjb25maWd1cmUgYW5kIHBvc3NpYmx5IHRyb3VibGVzaG9vdCBhbnl0aGluZyByZWxhdGVkIHRvIE1lZGlhdGVrIEV0aGVybmV0IGNvbnRyb2xsZXJzLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIHRoZSBkZWZhdWx0IHNldHRpbmdzLCBhbnkgY29uZGl0aW9uYWwgY29uZmlndXJhdGlvbnMsIGFuZCBwYXJ0aWN1bGFybHkgYW55IHRyaWNreSBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBuZXR3b3JraW5nIG9yIGhhcmR3YXJlIHN1YnN5c3RlbXMuIEhvcGVmdWxseSwgaXTigJlzIHdlbGwtb3JnYW5pemVkIGFuZCBjbGVhcmx5IGRvY3VtZW50ZWQsIGJ1dCBJJ20gcHJlcGFyZWQgZm9yIGEgYml0IG9mIGEgZGVlcCBkaXZlIGlmIG5lY2Vzc2FyeS4gSXQncyB0aW1lIHRvIGdldCBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB0aGUgZnJhbWV3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjkxOSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6Mzg6MTMuODI2OTk3MjkxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMzY1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgTkVUX1ZFTkRPUl9NRURJQVRFS1xcbiAgIDM6XFx0XFx0Ym9vbCBcXFwiTWVkaWFUZWsgZGV2aWNlc1xcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gQVJDSF9NRURJQVRFSyB8fCBBUkNIX0FJUk9IQSB8fCBTT0NfTVQ3NjIxIHx8IFNPQ19NVDc2MjAgfHwgQ09NUElMRV9URVNUXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIElmIHlvdSBoYXZlIGEgTWVkaWF0ZWsgU29DIHdpdGggZXRoZXJuZXQsIHNheSBZLlxcbiAgIDc6XFx0XFxuICAgODpcXHRpZiBORVRfVkVORE9SX01FRElBVEVLXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNvbmZpZyBORVRfTUVESUFURUtfU09DX1dFRFxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBBUkNIX01FRElBVEVLIHx8IENPTVBJTEVfVEVTVFxcbiAgMTI6XFx0XFx0ZGVmX2Jvb2wgTkVUX01FRElBVEVLX1NPQyAhPSBuXFxuICAxMzpcXHRcXG4gIDE0OlxcdGNvbmZpZyBORVRfTUVESUFURUtfU09DXFxuICAxNTpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgU29DIEdpZ2FiaXQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4gIDE2OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQSB8fCAhTkVUX0RTQVxcbiAgMTc6XFx0XFx0c2VsZWN0IFBJTkNUUkxcXG4gIDE4OlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAxOTpcXHRcXHRzZWxlY3QgRElNTElCXFxuICAyMDpcXHRcXHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1JcXG4gIDIxOlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gIDIyOlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xfU1RBVFNcXG4gIDIzOlxcdFxcdHNlbGVjdCBQQ1NfTVRLX0xZTlhJXFxuICAyNDpcXHRcXHRzZWxlY3QgUkVHTUFQX01NSU9cXG4gIDI1OlxcdFxcdGhlbHBcXG4gIDI2OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIGdpZ2FiaXQgZXRoZXJuZXQgTUFDcyBpbiB0aGVcXG4gIDI3OlxcdFxcdCAgTWVkaWFUZWsgU29DIGZhbWlseS5cXG4gIDI4OlxcdFxcbiAgMjk6XFx0Y29uZmlnIE5FVF9NRURJQVRFS19TVEFSX0VNQUNcXG4gIDMwOlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBTVEFSIEV0aGVybmV0IE1BQyBzdXBwb3J0XFxcIlxcbiAgMzE6XFx0XFx0c2VsZWN0IFBIWUxJQlxcbiAgMzI6XFx0XFx0c2VsZWN0IFJFR01BUF9NTUlPXFxuICAzMzpcXHRcXHRoZWxwXFxuICAzNDpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBldGhlcm5ldCBNQUMgSVAgZmlyc3QgdXNlZCBvblxcbiAgMzU6XFx0XFx0ICBNZWRpYVRlayBNVDg1KiogU29Dcy5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0ZW5kaWYgI05FVF9WRU5ET1JfTUVESUFURUtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6Mzg6MTMuODI3MTAzNDAxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM3MjE0Njk0MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNZWRpYXRlayBFdGhlcm5ldCBTT0MgRHJpdmVyKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgbXRrX2V0aF9zb2MuY2AgZHJpdmVyLiBGcm9tIHdoYXQgSSdtIHNlZWluZywgdGhpcyBpcyB0aGUgZ28tdG8gZHJpdmVyIGZvciBgTkVUX01FRElBVEVLX1NPQ2AuIEl0cyBwdXJwb3NlIGlzIHRvIGhhbmRsZSB0aGUgTWVkaWF0ZWsgU3lzdGVtLW9uLUNoaXAgZXRoZXJuZXQgY29udHJvbGxlcnMsIHNwZWNpZmljYWxseSB0aGUgb25lcyB0aGF0IGFyZSBkZXNjcmliZWQgdXNpbmcgT0YgZGV2aWNlIHRyZWVzLiBJJ20gc2VlaW5nIGl0J3MgZGVzaWduZWQgdG8gaW50ZXJmYWNlIHdpdGggZGV2aWNlcyBkZXNjcmliZWQgd2l0aCB0aGluZ3MgbGlrZSBgbWVkaWF0ZWssbXQyNzAxLWV0aGAsIGBtZWRpYXRlayxtdDc2MjItZXRoYCwgYG1lZGlhdGVrLG10NzYyMy1ldGhgLCBhbmQgYG1lZGlhdGVrLG10Nzk4Ni1ldGhgIGFuZCBzaW1pbGFyIGRldmljZSB0cmVlIGVudHJpZXMuIE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBkcml2ZXIncyBPRiBtYXRjaCB0YWJsZS4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVuczsgd2hlcmUgaXQgZGVjaWRlcyB3aGljaCBzcGVjaWZpYyBNZWRpYXRlayBldGhlcm5ldCBoYXJkd2FyZSBpdCdzIHN1cHBvc2VkIHRvIG1hbmFnZSBiYXNlZCBvbiB0aGUgZGV2aWNlIHRyZWUgbm9kZSBpbmZvcm1hdGlvbi4gVGhhdCdsbCBiZSBrZXkgdG8gZmlndXJpbmcgb3V0IGhvdyBpdCdzIHN0cnVjdHVyZWQgdG8gd29yayB3aXRoIHRoZSBkaWZmZXJlbnQgU09Dcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc2ODQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODozODoxNy41NDg1NzQ1NzdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NDM1MDA5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvZl9tdGtfbWF0Y2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM9NTY0MT1zdGF0aWMgY29uc3Qgc3RydWN0IG10a19zb2NfZGF0YSBydDUzNTBfZGF0YSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNTY2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjU2NjQ6Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9tdGtfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTU2NjUtXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJtZWRpYXRlayxtdDI3MDEtZXRoXFxcIiwgLmRhdGEgPSBcXHUwMDI2bXQyNzAxX2RhdGEgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNTY3NS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6NTY3NjpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvZl9tdGtfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNTY3Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jPTU2Nzg9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNTY4Mi1cXHRcXHQubmFtZSA9IFxcXCJtdGtfc29jX2V0aFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYzo1NjgzOlxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IG9mX210a19tYXRjaCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTU2ODQtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmg9MTM2OT1zdHJ1Y3QgbXRrX21hYyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oLTEzODUtLyogdGhlIHN0cnVjdCBkZXNjcmliaW5nIHRoZSBTb0MuIHRoZXNlIGFyZSBkZWNsYXJlZCBpbiB0aGUgc29jX3h5ei5jIGZpbGVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaDoxMzg2OmV4dGVybiBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG9mX210a19tYXRjaFtdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmgtMTM4Ny1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6Mzg6MTcuOTMyOTMxMjIxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE1Mjk0NDAxOTM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIFJlYWNoYWJpbGl0eSBmb3IgRnV6emluZzogTWVkaWFUZWsgRXRoZXJuZXQgRHJpdmVycyBvbiBhbWQ2NCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBpcyB0byBkZXRlcm1pbmUgaWYgd2UgY2FuIGVmZmVjdGl2ZWx5IGZ1enogdGhlc2UgTWVkaWFUZWsgZHJpdmVycywgYG10NzUzMGAgYW5kIGBtdGtfZXRoX3NvY2AsIG9uIGFuIGFtZDY0IHBsYXRmb3JtIHdpdGhpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQuIEFzIGFuIGV4cGVydCwgSSBrbm93IHRoYXQgcmVhY2hhYmlsaXR5IGlzICp0aGUqIGtleSBmYWN0b3IuIElmIHRoZSBjb2RlIGNhbid0IGV4ZWN1dGUsIGZ1enppbmcgaXMgYSB3YXN0ZSBvZiByZXNvdXJjZXMuXG5cbkZpcnN0LCBgbXQ3NTMwYC4gVGhpcyBpcyBhIERTQSBzd2l0Y2ggZHJpdmVyLiBJdCdzIGRlc2lnbmVkIHRvIHByb2JlIHZpYSBNRElPIGJ1c2VzICh1c2luZyBgbXQ3NTMwLW1kaW8uY2ApIG9yIHBsYXRmb3JtIGRldmljZXMgKGBtdDc1MzAtbW1pby5jYCksIGFuZCBpdCByZWxpZXMgb24gc3BlY2lmaWMgZGV2aWNlIHRyZWUgY29tcGF0aWJsZSBzdHJpbmdzLiBUaGVzZSBzdHJpbmdzIGlkZW50aWZ5IGl0IGFzIGJlbG9uZ2luZyB0byB0aGUgTWVkaWFUZWsgZmFtaWx5IChNVDc2MjEsIE1UNzUzMCwgTVQ3NTMxLCBldGMuKSBvciB0aGUgQWlyb2hhIEVONzU4MC4gRFNBIGRyaXZlcnMsIGZ1bmRhbWVudGFsbHksIG5lZWQgYSBEZXZpY2UgVHJlZSAob3IgTU1JTykuIFRoaXMgcmVxdWlyZXMgYSBjb25uZWN0aW9uLCBhdCBtaW5pbXVtLCB0byBhbiBNRElPIGJ1cyBhbmQgYSBEU0EgbWFzdGVyIG5ldGRldi5cblxuVGhlbiwgd2UgaGF2ZSBgbXRrX2V0aF9zb2MuY2AuIFRoaXMgaXMgYSBNZWRpYVRlayBwbGF0Zm9ybSBkcml2ZXIsIG1hdGNoaW5nIGl0cyBkZXZpY2UgdHJlZSBlbnRyaWVzOiBgbXQyNzAxLWV0aGAsIGBtdDc2MjItZXRoYCwgYG10NzYyMy1ldGhgLCBhbmQgc28gb24sIHVwIHRvIGBtdDc5ODgtZXRoYC4gVGhlc2UgbWF0Y2ggZm9yIHNwZWNpZmljIE1lZGlhVGVrIFNvQ3MuXG5cbk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGFyZSB0aGVzZSBkcml2ZXJzICpzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUqIG9uIGFtZDY0PyBUaGUgZnV6emluZyBndWlkZWxpbmVzIGFyZSBjbGVhci4gQ29kZSBpcyBjb25zaWRlcmVkIHVucmVhY2hhYmxlIGlmIGl0IHJlcXVpcmVzIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBlbnZpcm9ubWVudHMuIFRoaXMgaW5jbHVkZXMgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMgdGhhdCByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIEFTSUNzIG9yIFBDSSBjYXJkcy5cblxuSW4gdGhpcyBzcGVjaWZpYyBzY2VuYXJpbywgSSBuZWVkIHRvIGV2YWx1YXRlIHRoZSBlbnZpcm9ubWVudC4gRG8gd2UgaGF2ZSB2aXJ0dWFsIGRldmljZXMsIFBDSSBkZXZpY2VzLCBVU0IgZGV2aWNlcywgb3IgbW9ja3MgYXZhaWxhYmxlIGZvciBNZWRpYVRlayBTb0MgRXRoZXJuZXQgb3IgdGhlIE1UNzUzMCBEU0Egc3dpdGNoIGluIFFFTVUgeDg2XzY0PyBOby4gVGhlIGBtdDc1MzBgIGlzIGEgc3dpdGNoIGNoaXAgZGVzaWduZWQgZm9yIE1lZGlhVGVrIEFSTS9NSVBTIHJvdXRlcnMgYW5kIGdhdGV3YXlzLiBUaGUgYG10a19ldGhfc29jYCBpcyB0aGUgaW50ZWdyYXRlZCBFdGhlcm5ldCBjb250cm9sbGVyICpvbiogTWVkaWFUZWsgU29DcyBsaWtlIE1UNzYyMSwgTVQ3NjIyLCBNVDc2MjMsIE1UNzk4MSwgTVQ3OTg2LCBhbmQgTVQ3OTg4LiBUaGVzZSBhcmUgdmVyeSBTb0Mtc3BlY2lmaWMgcGxhdGZvcm0vT0YvTURJTyBkZXZpY2VzLiBUaGV5ICpyZXF1aXJlKiB0aGUgc3BlY2lmaWMgTWVkaWFUZWsgU29DIGhhcmR3YXJlICphbmQqIGEgcmVsZXZhbnQgRFRTIGZpbGUgZm9yIHRoYXQgcGFydGljdWxhciBoYXJkd2FyZS4gUUVNVSBydW5uaW5nIG9uIGFtZDY0LCBlc3BlY2lhbGx5IGluIGEgc3RhbmRhcmQgY29uZmlndXJhdGlvbiwgZG9lc24ndCBlbXVsYXRlIHRoZXNlIFNvQ3MuXG5cblNvLCBjYW4gZWl0aGVyIGRyaXZlciBiZSBwcm9iZWQgb3IgZXhlY3V0ZWQgb24gYW1kNjQgKndpdGhvdXQqIGFjdHVhbCBNZWRpYVRlayBoYXJkd2FyZT8gVGhlIGFuc3dlciBpcyBhIGRlZmluaXRpdmUgbm8uIE5laXRoZXIgZHJpdmVyIGlzIFBDSSBvciBVU0IuIE5laXRoZXIgaXMgaW5zdGFudGlhdGVkIHZpYSBhbnkgdmlydHVhbCBidXMuIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLCBjb25maXJtZWQgaW4gdGhlIHByb21wdCwgaXMgYW1kNjQuXG5cbkxldCdzIGRvIGEgcXVpY2sgZG91YmxlLWNoZWNrLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jYCwgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oYC4gVGhlc2UgYXJlICphbGwqIHBhcnQgb2YgdGhlIE1lZGlhVGVrIEV0aGVybmV0L0RTQSBzd2l0Y2ggZHJpdmVyIHN1aXRlIGRlc2lnbmVkIHNwZWNpZmljYWxseSBmb3IgTWVkaWFUZWsgU29Dcy4gVGhleSByZXF1aXJlIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBvciBhIGRldmljZS10cmVlIHRoYXQgZGVzY3JpYmVzIHRoaXMgcGxhdGZvcm0uXG5cblRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyB0aGF0IHRoaXMgZmFsbHMgc3F1YXJlbHkgaW50byB0aGUgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGVcIiBjYXRlZ29yeSBvbiBhbWQ2NC4gVGhlIGNvZGUgbW9kaWZpY2F0aW9ucyBhcmUgbm90IHJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQuXG5cbk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoZSBgbXRrX2V0aF9zb2NgIGFuZCBgbXQ3NTMwYCBkcml2ZXJzIGFyZSBwbGF0Zm9ybS9PRi1iYXNlZCBkcml2ZXJzIGZvciBNZWRpYVRlayBBUk0vTUlQUyBTb0MgaGFyZHdhcmUuIFRoZXkgbmVlZCB0aGUgcGh5c2ljYWwgTWVkaWFUZWsgU29DcyBvciBTb0Mtc3BlY2lmaWMgZGV2aWNlIHRyZWUgYmluZGluZ3MgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgYW1kNjQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnQuIFRoaXMgbWFrZXMgdGhlbSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcgb24gYW1kNjQuIEknbSBnb2luZyB0byBzZXQgdGhlIHJlc3VsdCB0byByZWZsZWN0IHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NjA5LCJPdXRwdXRUb2tlbnMiOjE3MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6Mzg6MzMuMjI3MzM2MDg4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIyMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lZGlhVGVrIEdpZ2FiaXQgRXRoZXJuZXQgU29DIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYykgYW5kIHRoZSBNZWRpYVRlayBNVDc1MzAgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL210NzUzMC5jKS4gVGhlc2UgZHJpdmVycyBhcmUgc3BlY2lmaWMgdG8gTWVkaWFUZWsgQVJNL01JUFMgU29DcyAoc3VjaCBhcyBNVDc2MjEsIE1UNzk4MSwgTVQ3OTg2LCBNVDc5ODgpIGFuZCByZXF1aXJlIFNvQy1zcGVjaWZpYyBkZXZpY2UgdHJlZXMgYW5kIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBhbWQ2NCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIGFtZDY0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lZGlhVGVrIEdpZ2FiaXQgRXRoZXJuZXQgU29DIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYykgYW5kIHRoZSBNZWRpYVRlayBNVDc1MzAgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL210NzUzMC5jKS4gVGhlc2UgZHJpdmVycyBhcmUgc3BlY2lmaWMgdG8gTWVkaWFUZWsgQVJNL01JUFMgU29DcyAoc3VjaCBhcyBNVDc2MjEsIE1UNzk4MSwgTVQ3OTg2LCBNVDc5ODgpIGFuZCByZXF1aXJlIFNvQy1zcGVjaWZpYyBkZXZpY2UgdHJlZXMgYW5kIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBhbWQ2NCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIGFtZDY0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6Mzg6MzMuMjI3Mzc0MjU4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflow45bv9[1] Phase: Running StartedAt: 2026-09-04 18:38:44 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45bv9[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-04 18:38:44 +0000 UTC FinishedAt: 2026-09-04 18:38:48 +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,}