Name: series-workflowczdb8 Phase: Failed StartedAt: 2026-08-21 01:17:12 +0000 UTC FinishedAt: 2026-08-21 01:34:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowczdb8[0] Phase: Succeeded StartedAt: 2026-08-21 01:17:12 +0000 UTC FinishedAt: 2026-08-21 01:34:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowczdb8[0].run-triage Phase: Succeeded StartedAt: 2026-08-21 01:17:12 +0000 UTC FinishedAt: 2026-08-21 01:34:40 +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+CgkJCTx0ZD4yMDI2LzA4LzIxIDAxOjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGJvYXJkLXNwZWNpZmljIHF1aXJrIGZvciBNYXJ2ZWxsIFdpRmkgZGV2aWNlcyB0byBza2lwIGEgcmVndWxhdG9yeSBoaW50IGlmIGEgc3BlY2lmaWMgZGV2aWNlIHRyZWUgcHJvcGVydHkgKCYjMzk7bWFydmVsbCxpbnZhbGlkLXJlZy1oaW50LWluLXJvbSYjMzk7KSBpcyBwcmVzZW50LiBUaGlzIHByb3BlcnR5IGlzIG9ubHkgYWRkZWQgdG8gYSBzcGVjaWZpYyBBUk0gYm9hcmQmIzM5O3MgZGV2aWNlIHRyZWUgKGFybWFkYS0zODUtbGlua3N5cy1yYW5nbykuIEluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUvR0NFIHdoZXJlIGZ1enppbmcgb2NjdXJzLCB0aGlzIGRldmljZSB0cmVlIHByb3BlcnR5IHdpbGwgbm90IGJlIHByZXNlbnQsIG1lYW5pbmcgdGhlIGV4ZWN1dGlvbiBmbG93IHdpbGwgYmUgaWRlbnRpY2FsIHRvIHRoZSBwcmUtcGF0Y2ggYmVoYXZpb3IuIFRoZSBuZXcgY29kZSBwYXRoIChza2lwcGluZyB0aGUgcmVndWxhdG9yeSBoaW50KSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgc3RhbmRhcmQgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDE6MzM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyN2M5OGYwYmRmZTBlOGNhZmIyMGNhODZhMTdmNmQzZmU2ODIwOTNiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMjEgMDE6MzM6MzAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy9tYXJ2ZWxsLHNkODc4Ny55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy9tYXJ2ZWxsLHNkODc4Ny55YW1sXG5pbmRleCA5MzBiNzAwYjczZDAwLi45ZjkwNWVmNWMyYzA3IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy9tYXJ2ZWxsLHNkODc4Ny55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpcmVsZXNzL21hcnZlbGwsc2Q4Nzg3LnlhbWxcbkBAIC01OSw2ICYjNDM7NTksMTIgQEAgcHJvcGVydGllczpcbiAgICAgZGVzY3JpcHRpb246IENhbGlicmF0aW9uIGRhdGEgZm9yIHN1Yi1iYW5kIDMgaW4gdGhlIDVHSHogYmFuZC5cbiAgICAgbWF4SXRlbXM6IDUwMlxuIFxuJiM0MzsgIG1hcnZlbGwsaW52YWxpZC1yZWctaGludC1pbi1yb206XG4mIzQzOyAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy9mbGFnXG4mIzQzOyAgICBkZXNjcmlwdGlvbjpcbiYjNDM7ICAgICAgVGhlIHJlZ3VsYXRvcnkgaGludCBpbiBST00gY29uZmxpY3RzIHdpdGggcGxhdGZvcm0gY29uZmlndXJhdGlvbi5cbiYjNDM7ICAgICAgSXQgc2hvdWxkIGJlIGlnbm9yZWQsIHNvIHRoZSBwbGF0Zm9ybSByZWd1bGF0b3J5IGRvbWFpbiBjYW4gYmUgdXNlZC5cbiYjNDM7XG4gICBtYXJ2ZWxsLHdha2V1cC1waW46XG4gICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL3VpbnQzMlxuICAgICBkZXNjcmlwdGlvbjpcbmRpZmYgLS1naXQgYS9hcmNoL2FybS9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS0zODUtbGlua3N5cy1yYW5nby5kdHMgYi9hcmNoL2FybS9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS0zODUtbGlua3N5cy1yYW5nby5kdHNcbmluZGV4IDRhYjQ1ZjI5NGRlMjIuLjJiZjI5OTgxYTAzMTMgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybS9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS0zODUtbGlua3N5cy1yYW5nby5kdHNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtL2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTM4NS1saW5rc3lzLXJhbmdvLmR0c1xuQEAgLTE2NSw2ICYjNDM7MTY1LDE1IEBAIFx1MDAyNnNkaGNpIHtcbiBcdHdwLWludmVydGVkO1xuIFx0YnVzLXdpZHRoID0gXHUwMDNjOFx1MDAzZTtcbiBcdHN0YXR1cyA9IFwmIzM0O29rYXlcJiMzNDs7XG4mIzQzO1xuJiM0MztcdCNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7XHQjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4mIzQzO1xuJiM0MztcdHdpZmlAMSB7XG4mIzQzO1x0XHRjb21wYXRpYmxlID0gXCYjMzQ7bWFydmVsbCxzZDg4OTdcJiMzNDs7XG4mIzQzO1x0XHRyZWcgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MztcdFx0bWFydmVsbCxpbnZhbGlkLXJlZy1oaW50LWluLXJvbTtcbiYjNDM7XHR9O1xuIH07XG4gXG4gXHUwMDI2dXNiM18xX3ZidXMge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNcbmluZGV4IDdhMWJhMzJmMWZiMzYuLjI5Mzg3NjM5N2I2NzAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNcbkBAIC00ODk3LDcgJiM0Mzs0ODk3LDE0IEBAIGludCBtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXHRcdFx0XHRjb3VudHJ5X2NvZGUgPVxuIFx0XHRcdFx0XHRtd2lmaWV4XzExZF9jb2RlXzJfcmVnaW9uKFxuIFx0XHRcdFx0XHRcdGFkYXB0ZXItXHUwMDNlcmVnaW9uX2NvZGUpO1xuJiM0MztcbiYjNDM7XHRcdFx0XHQvKiBJZiB0aGUgcmVnIGhpbnQgaW4gUk9NIGNvbmZsaWN0cyB3aXRoIHBsYXRmb3JtXG4mIzQzO1x0XHRcdFx0ICogY29uZmlndXJhdGlvbiwgaXQgc2hvdWxkIGJlIGlnbm9yZWQsIHNvIHRoZVxuJiM0MztcdFx0XHRcdCAqIHBsYXRmb3JtIHJlZ3VsYXRvcnkgZG9tYWluIGNhbiBiZSB1c2VkLlxuJiM0MztcdFx0XHRcdCAqL1xuIFx0XHRcdFx0aWYgKGNvdW50cnlfY29kZSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0XHQgICAgIWRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woYWRhcHRlci1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdFx0XHRcdFx0ICAgICAgIFwmIzM0O21hcnZlbGwsaW52YWxpZC1yZWctaGludC1pbi1yb21cJiMzNDspIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0ICAgIHJlZ3VsYXRvcnlfaGludCh3aXBoeSwgY291bnRyeV9jb2RlKSlcbiBcdFx0XHRcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBFUlJPUixcbiBcdFx0XHRcdFx0XHQgICAgXCYjMzQ7cmVndWxhdG9yeV9oaW50KCkgZmFpbGVkXFxuXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwMTozMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGJvYXJkLXNwZWNpZmljIHF1aXJrIGZvciBNYXJ2ZWxsIFdpRmkgZGV2aWNlcyB0byBza2lwIGEgcmVndWxhdG9yeSBoaW50IGlmIGEgc3BlY2lmaWMgZGV2aWNlIHRyZWUgcHJvcGVydHkgKCYjMzk7bWFydmVsbCxpbnZhbGlkLXJlZy1oaW50LWluLXJvbSYjMzk7KSBpcyBwcmVzZW50LiBUaGlzIHByb3BlcnR5IGlzIG9ubHkgYWRkZWQgdG8gYSBzcGVjaWZpYyBBUk0gYm9hcmQmIzM5O3MgZGV2aWNlIHRyZWUgKGFybWFkYS0zODUtbGlua3N5cy1yYW5nbykuIEluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUvR0NFIHdoZXJlIGZ1enppbmcgb2NjdXJzLCB0aGlzIGRldmljZSB0cmVlIHByb3BlcnR5IHdpbGwgbm90IGJlIHByZXNlbnQsIG1lYW5pbmcgdGhlIGV4ZWN1dGlvbiBmbG93IHdpbGwgYmUgaWRlbnRpY2FsIHRvIHRoZSBwcmUtcGF0Y2ggYmVoYXZpb3IuIFRoZSBuZXcgY29kZSBwYXRoIChza2lwcGluZyB0aGUgcmVndWxhdG9yeSBoaW50KSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgc3RhbmRhcmQgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyN2M5OGYwYmRmZTBlOGNhZmIyMGNhODZhMTdmNmQzZmU2ODIwOTNiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMjEgMDE6MzM6MzAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpcmVsZXNzL21hcnZlbGwsc2Q4Nzg3LnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpcmVsZXNzL21hcnZlbGwsc2Q4Nzg3LnlhbWwKaW5kZXggOTMwYjcwMGI3M2QwMC4uOWY5MDVlZjVjMmMwNyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy9tYXJ2ZWxsLHNkODc4Ny55YW1sCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvbWFydmVsbCxzZDg3ODcueWFtbApAQCAtNTksNiAmIzQzOzU5LDEyIEBAIHByb3BlcnRpZXM6CiAgICAgZGVzY3JpcHRpb246IENhbGlicmF0aW9uIGRhdGEgZm9yIHN1Yi1iYW5kIDMgaW4gdGhlIDVHSHogYmFuZC4KICAgICBtYXhJdGVtczogNTAyCiAKJiM0MzsgIG1hcnZlbGwsaW52YWxpZC1yZWctaGludC1pbi1yb206CiYjNDM7ICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL2ZsYWcKJiM0MzsgICAgZGVzY3JpcHRpb246CiYjNDM7ICAgICAgVGhlIHJlZ3VsYXRvcnkgaGludCBpbiBST00gY29uZmxpY3RzIHdpdGggcGxhdGZvcm0gY29uZmlndXJhdGlvbi4KJiM0MzsgICAgICBJdCBzaG91bGQgYmUgaWdub3JlZCwgc28gdGhlIHBsYXRmb3JtIHJlZ3VsYXRvcnkgZG9tYWluIGNhbiBiZSB1c2VkLgomIzQzOwogICBtYXJ2ZWxsLHdha2V1cC1waW46CiAgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvdWludDMyCiAgICAgZGVzY3JpcHRpb246CmRpZmYgLS1naXQgYS9hcmNoL2FybS9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS0zODUtbGlua3N5cy1yYW5nby5kdHMgYi9hcmNoL2FybS9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS0zODUtbGlua3N5cy1yYW5nby5kdHMKaW5kZXggNGFiNDVmMjk0ZGUyMi4uMmJmMjk5ODFhMDMxMyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtMzg1LWxpbmtzeXMtcmFuZ28uZHRzCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtL2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTM4NS1saW5rc3lzLXJhbmdvLmR0cwpAQCAtMTY1LDYgJiM0MzsxNjUsMTUgQEAgJmFtcDtzZGhjaSB7CiAJd3AtaW52ZXJ0ZWQ7CiAJYnVzLXdpZHRoID0gJmx0OzgmZ3Q7OwogCXN0YXR1cyA9ICYjMzQ7b2theSYjMzQ7OwomIzQzOwomIzQzOwkjYWRkcmVzcy1jZWxscyA9ICZsdDsxJmd0OzsKJiM0MzsJI3NpemUtY2VsbHMgPSAmbHQ7MCZndDs7CiYjNDM7CiYjNDM7CXdpZmlAMSB7CiYjNDM7CQljb21wYXRpYmxlID0gJiMzNDttYXJ2ZWxsLHNkODg5NyYjMzQ7OwomIzQzOwkJcmVnID0gJmx0OzEmZ3Q7OwomIzQzOwkJbWFydmVsbCxpbnZhbGlkLXJlZy1oaW50LWluLXJvbTsKJiM0MzsJfTsKIH07CiAKICZhbXA7dXNiM18xX3ZidXMgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYwppbmRleCA3YTFiYTMyZjFmYjM2Li4yOTM4NzYzOTdiNjcwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYwpAQCAtNDg5Nyw3ICYjNDM7NDg5NywxNCBAQCBpbnQgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKQogCQkJCWNvdW50cnlfY29kZSA9CiAJCQkJCW13aWZpZXhfMTFkX2NvZGVfMl9yZWdpb24oCiAJCQkJCQlhZGFwdGVyLSZndDtyZWdpb25fY29kZSk7CiYjNDM7CiYjNDM7CQkJCS8qIElmIHRoZSByZWcgaGludCBpbiBST00gY29uZmxpY3RzIHdpdGggcGxhdGZvcm0KJiM0MzsJCQkJICogY29uZmlndXJhdGlvbiwgaXQgc2hvdWxkIGJlIGlnbm9yZWQsIHNvIHRoZQomIzQzOwkJCQkgKiBwbGF0Zm9ybSByZWd1bGF0b3J5IGRvbWFpbiBjYW4gYmUgdXNlZC4KJiM0MzsJCQkJICovCiAJCQkJaWYgKGNvdW50cnlfY29kZSAmYW1wOyZhbXA7CiYjNDM7CQkJCSAgICAhZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChhZGFwdGVyLSZndDtkZXYsCiYjNDM7CQkJCQkJCSAgICAgICAmIzM0O21hcnZlbGwsaW52YWxpZC1yZWctaGludC1pbi1yb20mIzM0OykgJmFtcDsmYW1wOwogCQkJCSAgICByZWd1bGF0b3J5X2hpbnQod2lwaHksIGNvdW50cnlfY29kZSkpCiAJCQkJCW13aWZpZXhfZGJnKHByaXYtJmd0O2FkYXB0ZXIsIEVSUk9SLAogCQkJCQkJICAgICYjMzQ7cmVndWxhdG9yeV9oaW50KCkgZmFpbGVkXG4mIzM0Oyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDAxOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MDAKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAzODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBGZWFzaWJpbGl0eSBvZiBhIE1pbm9yIFdpRmkgRHJpdmVyIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgYSBmZXcgZmlsZXM6IHRoZSBkZXZpY2UgdHJlZSBiaW5kaW5nIGZvciBhIE1hcnZlbGwgV2lGaSBjaGlwLCBhIGRldmljZSB0cmVlIGZpbGUgZm9yIGFuIEFybWFkYSBib2FyZCwgYW5kIHRoZSBgbXdpZmlleGAgd2lyZWxlc3MgZHJpdmVyIGl0c2VsZi4gVGhlIGtleSBjaGFuZ2UgaW4gYG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTFgIGlzIGEgY2hlY2sgZm9yIHRoaXMgbmV3IGRldmljZSBwcm9wZXJ0eSwgYG1hcnZlbGwsaW52YWxpZC1yZWctaGludC1pbi1yb21gLiBJZiBpdCYjMzk7cyB0aGVyZSwgaXQganVzdCBza2lwcyBhIHJlZ3VsYXRvcnkgaGludC4gUHJldHR5IG1pbmltYWwsIHJlYWxseS4KClRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyB3b3J0aCBmdXp6aW5nPyBUaGUgZHJpdmVyIGluIHF1ZXN0aW9uIGlzIGBtd2lmaWV4YCwgYSBNYXJ2ZWxsIFdpRmkgZHJpdmVyLCB3aGljaCBpcyBzb21ld2hhdCBuaWNoZS4gSXQgcmVxdWlyZXMgc3BlY2lmaWMgaGFyZHdhcmUg4oCTIFNESU8sIFBDSWUsIG9yIFVTQiBNYXJ2ZWxsIFdpRmkgY2FyZHMuIENhbiBJIGV2ZW4gZ2V0IGF0IGl0IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IExpa2VseSBub3QgZGlyZWN0bHksIGFzIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSBNYXJ2ZWxsIFdpRmkuIEhvd2V2ZXIsIHRoZSBsaWdodGJ1bGIganVzdCB3ZW50IG9mZjogYG13aWZpZXhgIGhhcyBhIFVTQiBkcml2ZXIsIGBtd2lmaWV4X3VzYmAhIFRoYXQgb3BlbnMgdXAgcG9zc2liaWxpdGllcy4KClVTQiBkZXZpY2VzIGNhbiBvZnRlbiBiZSBmdXp6ZWQgdXNpbmcgYGR1bW15X2hjZGAgb3Igc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcy4gSWYgSSBjYW4gcmVhY2ggYG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTFgIHRocm91Z2ggdGhlIFVTQiBwYXRoLCB0aGlzIGJlY29tZXMgYSBtdWNoIG1vcmUgaW50ZXJlc3RpbmcgdGFyZ2V0LiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGNhbGxlZCBkdXJpbmcgYWRhcHRlciBpbml0aWFsaXphdGlvbiwgc28gdGhhdCBzZWVtcyBwcm9taXNpbmcuCgpOb3csIGxldCYjMzk7cyBkaXZlIGludG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuY2Agb3IgYSBzaW1pbGFyIGZpbGUgdG8gY29uZmlybSB3aGV0aGVyIHRoaXMgaW5pdGlhbGl6YXRpb24gcGF0aCBpcyBVU0ItYWNjZXNzaWJsZSBhbmQgc2VlIGlmIEkgY2FuIGZpZ3VyZSBvdXQgaG93IHRvIHRyaWdnZXIgdGhhdCBgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMWAgY2FsbCB0aHJvdWdoIGEgVVNCIGRldmljZS4gSWYgSSBjYW4sIHRoaXMgY2hhbmdlLCBldmVuIHRob3VnaCBpdCYjMzk7cyBzbWFsbCwgY291bGQgYmUgd29ydGggYSBmdXp6aW5nIGNhbXBhaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDAxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9NDY2OD1pbnQgbXdpZmlleF9pbml0X2NoYW5uZWxfc2Nhbl9nYXAoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy00Njk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NDY5ODppbnQgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNDY5OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmgtMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuaDoxNTppbnQgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICopO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmgtMTYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz01MzU9c3RhdGljIGludCBfbXdpZmlleF9md19kcGMoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmaXJtd2FyZSwgdm9pZCAqY29udGV4dClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTU4Ni1cdGlmICghYWRhcHRlci1cdTAwM2V3aXBoeSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzo1ODc6XHRcdGlmIChtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExKGFkYXB0ZXIpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTU4OC1cdFx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTMzCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMWAgQ2FsbCoqCgpPa2F5LCBzbyBgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMWAgaXMgdHJpZ2dlcmVkIGZyb20gYF9td2lmaWV4X2Z3X2RwY2AuIFJpZ2h0LCB0aGF0JiMzOTtzIHRoZSBmaXJtd2FyZSBkb3dubG9hZCBjb21wbGV0aW9uIGNhbGxiYWNrLiBUaGF04oCZcyBpbnRlcmVzdGluZy4gSW1tZWRpYXRlbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgZnV6emluZyBhbmQgcmVhY2hhYmlsaXR5LiBJZiBgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMWAgZGVwZW5kcyBvbiBhIHN1Y2Nlc3NmdWwgZmlybXdhcmUgZG93bmxvYWQsIGdldHRpbmcgdGhlcmUgd2l0aCBhIGZ1enplciAqY291bGQqIGJlIHRyaWNreS4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZSBmdXp6ZXIgcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBmaXJtd2FyZSBkYXRhLCBvciBpZiB0aGUgZHJpdmVyIGNhbiBzb21laG93IHByb2NlZWQgd2l0aG91dCBpdC4gTXkgZ3V0IHNheXMgSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgX213aWZpZXhfZndfZHBjYCB0byBjb25maXJtIHRoaXMgcG90ZW50aWFsIGRlcGVuZGVuY3kgYW5kIHVuZGVyc3RhbmQgdGhlIHBhdGggdG8gdGhpcyBjcnVjaWFsIGZ1bmN0aW9uLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfbXdpZmlleF9md19kcGMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz01MTA9c3RhdGljIHZvaWQgbXdpZmlleF90ZXJtaW5hdGVfd29ya3F1ZXVlKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy01MzQtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjUzNTpzdGF0aWMgaW50IF9td2lmaWV4X2Z3X2RwYyhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZpcm13YXJlLCB2b2lkICpjb250ZXh0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy01MzYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9Njg5PXN0YXRpYyB2b2lkIG13aWZpZXhfZndfZHBjKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZmlybXdhcmUsIHZvaWQgKmNvbnRleHQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTY5MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjY5MTpcdF9td2lmaWV4X2Z3X2RwYyhmaXJtd2FyZSwgY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTY5Mi19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz0xNTMwPW13aWZpZXhfcmVpbml0X3N3KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0xNTkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoxNTkzOlx0LyogX213aWZpZXhfZndfZHBjKCkgZG9lcyBpdHMgb3duIGNsZWFudXAgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6MTU5NDpcdHJldCA9IF9td2lmaWV4X2Z3X2RwYyhhZGFwdGVyLVx1MDAzZWZpcm13YXJlLCBhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTU5NS1cdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjgxCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOgoKKipQb3RlbnRpYWwgRmlybXdhcmUgRGVwZW5kZW5jeSBGYWlsdXJlKioKClJpZ2h0LCBzbyBpZiB0aGUgZXhwZWN0ZWQgZmlybXdhcmUgaW1hZ2UgaXMgc29tZWhvdyBtaXNzaW5nIG9yIGluYWNjZXNzaWJsZSwgaXQmIzM5O3MgcHJldHR5IGxpa2VseSB0aGF0IHRoZSBgX213aWZpZXhfZndfZHBjYCBmdW5jdGlvbiB3aWxsIGp1c3QgY3JhcCBvdXQuIFRoYXQmIzM5O3MgdGhlIG1vc3QgcHJvYmFibGUgZmFpbHVyZSBwb2ludCwgZ2l2ZW4gdGhlIGNvbnRleHQuIExldCYjMzk7cyBkaWcgaW50byB0aGF0IGBfbXdpZmlleF9md19kcGNgIHJvdXRpbmUgYW5kIHNlZSBleGFjdGx5ICp3aHkqIGl0IHdvdWxkIGZhaWwuIEdvdHRhIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY3kgY2hhaW4gYW5kIGFueSBpbXBsaWNpdCBhc3N1bXB0aW9ucyBpdCBtYWtlcyBhYm91dCB0aGUgZmlybXdhcmUmIzM5O3MgYXZhaWxhYmlsaXR5LiBUaGVyZSYjMzk7cyBwcm9iYWJseSBzb21lIGVycm9yIGhhbmRsaW5nIChvciBsYWNrIHRoZXJlb2YpIGluIHRoZXJlIHRoYXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kLiBOZWVkIHRvIGNvbmZpcm0gbXkgYXNzdW1wdGlvbiwgb2J2aW91c2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDAxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDUzMDpcdCAqXG4gNTMxOlx0ICogVGhlIG1haW4gaW5pdGlhbGl6YXRpb24gc3RlcHMgZm9sbG93ZWQgYXJlIC1cbiA1MzI6XHQgKiAgICAgIC0gRG93bmxvYWQgdGhlIGNvcnJlY3QgZmlybXdhcmUgdG8gY2FyZFxuIDUzMzpcdCAqICAgICAgLSBJc3N1ZSB0aGUgaW5pdCBjb21tYW5kcyB0byBmaXJtd2FyZVxuIDUzNDpcdCAqL1xuIDUzNTpcdHN0YXRpYyBpbnQgX213aWZpZXhfZndfZHBjKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZmlybXdhcmUsIHZvaWQgKmNvbnRleHQpXG4gNTM2Olx0e1xuIDUzNzpcdFx0aW50IHJldDtcbiA1Mzg6XHRcdGNoYXIgZm10WzY0XTtcbiA1Mzk6XHRcdHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBjb250ZXh0O1xuIDU0MDpcdFx0c3RydWN0IG13aWZpZXhfZndfaW1hZ2UgZnc7XG4gNTQxOlx0XHRib29sIGluaXRfZmFpbGVkID0gZmFsc2U7XG4gNTQyOlx0XHRzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2O1xuIDU0MzpcdFx0c3RydWN0IGNvbXBsZXRpb24gKmZ3X2RvbmUgPSBhZGFwdGVyLVx1MDAzZWZ3X2RvbmU7XG4gNTQ0Olx0XG4gNTQ1Olx0XHRpZiAoIWZpcm13YXJlKSB7XG4gNTQ2Olx0XHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuIDU0NzpcdFx0XHRcdCAgICBcJiMzNDtGYWlsZWQgdG8gZ2V0IGZpcm13YXJlICVzXFxuXCYjMzQ7LCBhZGFwdGVyLVx1MDAzZWZ3X25hbWUpO1xuIDU0ODpcdFx0XHRnb3RvIGVycl9kbmxkX2Z3O1xuIDU0OTpcdFx0fVxuIDU1MDpcdFxuIDU1MTpcdFx0bWVtc2V0KFx1MDAyNmZ3LCAwLCBzaXplb2Yoc3RydWN0IG13aWZpZXhfZndfaW1hZ2UpKTtcbiA1NTI6XHRcdGFkYXB0ZXItXHUwMDNlZmlybXdhcmUgPSBmaXJtd2FyZTtcbiA1NTM6XHRcdGZ3LmZ3X2J1ZiA9ICh1OCAqKSBhZGFwdGVyLVx1MDAzZWZpcm13YXJlLVx1MDAzZWRhdGE7XG4gNTU0Olx0XHRmdy5md19sZW4gPSBhZGFwdGVyLVx1MDAzZWZpcm13YXJlLVx1MDAzZXNpemU7XG4gNTU1Olx0XG4gNTU2Olx0XHRpZiAoYWRhcHRlci1cdTAwM2VpZl9vcHMuZG5sZF9mdykge1xuIDU1NzpcdFx0XHRyZXQgPSBhZGFwdGVyLVx1MDAzZWlmX29wcy5kbmxkX2Z3KGFkYXB0ZXIsIFx1MDAyNmZ3KTtcbiA1NTg6XHRcdH0gZWxzZSB7XG4gNTU5Olx0XHRcdHJldCA9IG13aWZpZXhfZG5sZF9mdyhhZGFwdGVyLCBcdTAwMjZmdyk7XG4gNTYwOlx0XHR9XG4gNTYxOlx0XG4gNTYyOlx0XHRpZiAocmV0ID09IC0xKVxuIDU2MzpcdFx0XHRnb3RvIGVycl9kbmxkX2Z3O1xuIDU2NDpcdFxuIDU2NTpcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgTVNHLCBcJiMzNDtXTEFOIEZXIGlzIGFjdGl2ZVxcblwmIzM0Oyk7XG4gNTY2Olx0XG4gNTY3Olx0XHRpZiAoY2FsX2RhdGFfY2ZnKSB7XG4gNTY4Olx0XHRcdGlmICgocmVxdWVzdF9maXJtd2FyZShcdTAwMjZhZGFwdGVyLVx1MDAzZWNhbF9kYXRhLCBjYWxfZGF0YV9jZmcsXG4gNTY5Olx0XHRcdFx0XHQgICAgICBhZGFwdGVyLVx1MDAzZWRldikpIFx1MDAzYyAwKVxuIDU3MDpcdFx0XHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuIDU3MTpcdFx0XHRcdFx0ICAgIFwmIzM0O0NhbCBkYXRhIHJlcXVlc3RfZmlybXdhcmUoKSBmYWlsZWRcXG5cJiMzNDspO1xuIDU3MjpcdFx0fVxuIDU3MzpcdFxuIDU3NDpcdFx0LyogZW5hYmxlIGhvc3QgaW50ZXJydXB0IGFmdGVyIGZ3IGRubGQgaXMgc3VjY2Vzc2Z1bCAqL1xuIDU3NTpcdFx0aWYgKGFkYXB0ZXItXHUwMDNlaWZfb3BzLmVuYWJsZV9pbnQpIHtcbiA1NzY6XHRcdFx0aWYgKGFkYXB0ZXItXHUwMDNlaWZfb3BzLmVuYWJsZV9pbnQoYWRhcHRlcikpXG4gNTc3Olx0XHRcdFx0Z290byBlcnJfZG5sZF9mdztcbiA1Nzg6XHRcdH1cbiA1Nzk6XHRcbiA1ODA6XHRcdHJldCA9IG13aWZpZXhfaW5pdF9mdyhhZGFwdGVyKTtcbiA1ODE6XHRcdGlmIChyZXQgPT0gLTEpXG4gNTgyOlx0XHRcdGdvdG8gZXJyX2luaXRfZnc7XG4gNTgzOlx0XG4gNTg0Olx0XHRtYXliZV9xdWlya19md19kaXNhYmxlX2RzKGFkYXB0ZXIpO1xuIDU4NTpcdFxuIDU4NjpcdFx0aWYgKCFhZGFwdGVyLVx1MDAzZXdpcGh5KSB7XG4gNTg3Olx0XHRcdGlmIChtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExKGFkYXB0ZXIpKSB7XG4gNTg4Olx0XHRcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsXG4gNTg5Olx0XHRcdFx0XHQgICAgXCYjMzQ7Y2Fubm90IHJlZ2lzdGVyIHdpdGggY2ZnODAyMTFcXG5cJiMzNDspO1xuIDU5MDpcdFx0XHRcdGdvdG8gZXJyX2luaXRfZnc7XG4gNTkxOlx0XHRcdH1cbiA1OTI6XHRcdH1cbiA1OTM6XHRcbiA1OTQ6XHRcdGlmIChtd2lmaWV4X2luaXRfY2hhbm5lbF9zY2FuX2dhcChhZGFwdGVyKSkge1xuIDU5NTpcdFx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcbiA1OTY6XHRcdFx0XHQgICAgXCYjMzQ7Y291bGQgbm90IGluaXQgY2hhbm5lbCBzdGF0cyB0YWJsZVxcblwmIzM0Oyk7XG4gNTk3Olx0XHRcdGdvdG8gZXJyX2luaXRfY2hhbl9zY2FuO1xuIDU5ODpcdFx0fVxuIDU5OTpcdFxuIDYwMDpcdFx0aWYgKGRyaXZlcl9tb2RlKSB7XG4gNjAxOlx0XHRcdGRyaXZlcl9tb2RlIFx1MDAyNj0gTVdJRklFWF9EUklWRVJfTU9ERV9CSVRNQVNLO1xuIDYwMjpcdFx0XHRkcml2ZXJfbW9kZSB8PSBNV0lGSUVYX0RSSVZFUl9NT0RFX1NUQTtcbiA2MDM6XHRcdH1cbiA2MDQ6XHRcbiA2MDU6XHRcdHJ0bmxfbG9jaygpO1xuIDYwNjpcdFx0d2lwaHlfbG9jayhhZGFwdGVyLVx1MDAzZXdpcGh5KTtcbiA2MDc6XHRcdC8qIENyZWF0ZSBzdGF0aW9uIGludGVyZmFjZSBieSBkZWZhdWx0ICovXG4gNjA4Olx0XHR3ZGV2ID0gbXdpZmlleF9hZGRfdmlydHVhbF9pbnRmKGFkYXB0ZXItXHUwMDNld2lwaHksIFwmIzM0O21sYW4lZFwmIzM0OywgTkVUX05BTUVfRU5VTSxcbiA2MDk6XHRcdFx0XHRcdFx0Tkw4MDIxMV9JRlRZUEVfU1RBVElPTiwgTlVMTCk7XG4gNjEwOlx0XHRpZiAoSVNfRVJSKHdkZXYpKSB7XG4gNjExOlx0XHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuIDYxMjpcdFx0XHRcdCAgICBcJiMzNDtjYW5ub3QgY3JlYXRlIGRlZmF1bHQgU1RBIGludGVyZmFjZVxcblwmIzM0Oyk7XG4gNjEzOlx0XHRcdHdpcGh5X3VubG9jayhhZGFwdGVyLVx1MDAzZXdpcGh5KTtcbiA2MTQ6XHRcdFx0cnRubF91bmxvY2soKTtcbiA2MTU6XHRcdFx0Z290byBlcnJfYWRkX2ludGY7XG4gNjE2Olx0XHR9XG4gNjE3Olx0XG4gNjE4Olx0XHRpZiAoZHJpdmVyX21vZGUgXHUwMDI2IE1XSUZJRVhfRFJJVkVSX01PREVfVUFQKSB7XG4gNjE5Olx0XHRcdHdkZXYgPSBtd2lmaWV4X2FkZF92aXJ0dWFsX2ludGYoYWRhcHRlci1cdTAwM2V3aXBoeSwgXCYjMzQ7dWFwJWRcJiMzNDssIE5FVF9OQU1FX0VOVU0sXG4gNjIwOlx0XHRcdFx0XHRcdFx0Tkw4MDIxMV9JRlRZUEVfQVAsIE5VTEwpO1xuIDYyMTpcdFx0XHRpZiAoSVNfRVJSKHdkZXYpKSB7XG4gNjIyOlx0XHRcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsXG4gNjIzOlx0XHRcdFx0XHQgICAgXCYjMzQ7Y2Fubm90IGNyZWF0ZSBBUCBpbnRlcmZhY2VcXG5cJiMzNDspO1xuIDYyNDpcdFx0XHRcdHdpcGh5X3VubG9jayhhZGFwdGVyLVx1MDAzZXdpcGh5KTtcbiA2MjU6XHRcdFx0XHRydG5sX3VubG9jaygpO1xuIDYyNjpcdFx0XHRcdGdvdG8gZXJyX2FkZF9pbnRmO1xuIDYyNzpcdFx0XHR9XG4gNjI4Olx0XHR9XG4gNjI5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDE6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQ2MgoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDI4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgTWFydmVsbCBXaS1GaSBGaXJtd2FyZSBMb2FkaW5nIFByb2Nlc3MqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYF9td2lmaWV4X2Z3X2RwY2AgZnVuY3Rpb24gYW5kIGl0JiMzOTtzIGltbWVkaWF0ZWx5IGNsZWFyIHRoYXQgaXQmIzM5O3MgKmNvbXBsZXRlbHkqIHJlbGlhbnQgb24gdGhlIHByZXNlbmNlIG9mIGZpcm13YXJlLiBJZiBgZmlybXdhcmVgIGlzIE5VTEwsIGl0JiMzOTtzIGEgaGFyZCBmYWlsLiBUaGlzIG1lYW5zIHRoYXQgaWYgdGhlIGZpcm13YXJlIGlzbiYjMzk7dCBzdWNjZXNzZnVsbHkgbG9hZGVkLCB3ZSYjMzk7bGwgbmV2ZXIgZXZlbiBnZXQgdG8gYG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTFgLiBUaGF0JiMzOTtzIGltcG9ydGFudCB0byByZW1lbWJlciBmb3IgZnV6emluZyBsYXRlci4KClRoZSBpbW1lZGlhdGUgcHJvYmxlbSBpcywgc3l6a2FsbGVyICp0eXBpY2FsbHkqIGRvZXNuJiMzOTt0IHByb3ZpZGUgYXJiaXRyYXJ5IGZpcm13YXJlIGJsb2JzIHVubGVzcyB0aGV5IGFyZSB3aXRoaW4gYGxpbnV4LWZpcm13YXJlYCBhbmQgaW5jbHVkZWQgaW4gdGhlIHN5emthbGxlciBpbWFnZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgd2UgZXZlbiBoYXZlIHRoZSBNYXJ2ZWxsIGZpcm13YXJlIGluIHRoZSBlbnZpcm9ubWVudC4gRXZlbiBpZiB3ZSBkbywgdGhhdCYjMzk7cyBub3QgdGhlIGVuZCBvZiB0aGUgc3RvcnkuCgpFdmVuIGlmIHdlICpoYXZlKiB0aGUgZmlybXdhcmUgYXZhaWxhYmxlLCB0aGUgVVNCIGZ1enplciBpcyBnb2luZyB0byBoYXZlIHRvIGRvIGEgKnBlcmZlY3QqIGpvYiBvZiBlbXVsYXRpbmcgdGhlIGZpcm13YXJlIGRvd25sb2FkIHByb2Nlc3MuIFRoaXMgbWVhbnMgY29ycmVjdGx5IGludm9raW5nIGVpdGhlciBgYWRhcHRlci0mZ3Q7aWZfb3BzLmRubGRfZncoYWRhcHRlciwgJmFtcDtmdylgIG9yIGBtd2lmaWV4X2RubGRfZncoYWRhcHRlciwgJmFtcDtmdylgLiBBbmQgdGhlbiBpdCBnZXRzIGV2ZW4gdHJpY2tpZXIuCgpBZnRlciB0aGUgZmlybXdhcmUgaXMgZG93bmxvYWRlZCwgYG13aWZpZXhfaW5pdF9mdyhhZGFwdGVyKWAgaXMgY2FsbGVkLiAqVGhpcyogaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZyBiZWNhdXNlIHRoaXMgaXMgd2hlcmUgdGhlIGRyaXZlciBhY3R1YWxseSAqdGFsa3MqIHRvIHRoZSBkZXZpY2UuIEl0IHNlbmRzIGNvbW1hbmRzIGFuZCwgY3JpdGljYWxseSwgKmV4cGVjdHMgcmVzcG9uc2VzKi4gSWYgdGhlIFVTQiBmdXp6ZXIgaXNuJiMzOTt0IGFibGUgdG8gcHJvdmlkZSB2YWxpZCByZXNwb25zZXMgdG8gdGhlc2UgaW5pdGlhbGl6YXRpb24gY29tbWFuZHMsIGBtd2lmaWV4X2luaXRfZndgIGlzIGdvaW5nIHRvIGZhaWwuIFRoYXQgd291bGQgc3RvcCB0aGUgZHJpdmVyIGZyb20gd29ya2luZy4KCkkgbmVlZCB0byBkaXZlIGludG8gYG13aWZpZXhfaW5pdF9md2AgdG8gc2VlIHdoYXQgdGhvc2Ugc3BlY2lmaWMgY29tbWFuZHMgYXJlIGFuZCB3aGF0IGtpbmQgb2YgcmVzcG9uc2VzIHRoZSBkZXZpY2UgZXhwZWN0cy4gVGhpcyBpcyB0aGUgY3J1Y2lhbCBhcmVhIHRvIGludmVzdGlnYXRlIHRvIGlkZW50aWZ5IHBvdGVudGlhbCBmdXp6aW5nIHRhcmdldHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDAxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfaW5pdF9mdyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaW5pdC5jPTQxNz1pbnQgbXdpZmlleF9pbml0X2xvY2tfbGlzdChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9pbml0LmMtNDg0LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2luaXQuYzo0ODU6aW50IG13aWZpZXhfaW5pdF9mdyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2luaXQuYy00ODYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9NTM1PXN0YXRpYyBpbnQgX213aWZpZXhfZndfZHBjKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZmlybXdhcmUsIHZvaWQgKmNvbnRleHQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy01NzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjU4MDpcdHJldCA9IG13aWZpZXhfaW5pdF9mdyhhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtNTgxLVx0aWYgKHJldCA9PSAtMSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTEwNTY9dm9pZCBtd2lmaWV4X2ZyZWVfcHJpdihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTA1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTA1ODppbnQgbXdpZmlleF9pbml0X2Z3KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMDU5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTc5CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gYG13aWZpZXhfaW5pdF9md2AuIEkgbmVlZCB0byBnZXQgYSBjbGVhciB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgZnVuY3Rpb24mIzM5O3MgcHVycG9zZSB3aXRoaW4gdGhlIGJyb2FkZXIgZHJpdmVyIGNvbnRleHQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0IGFyZSB0aGUga2V5IHN0ZXBzIGludm9sdmVkIGluIGluaXRpYWxpemluZyB0aGUgZmlybXdhcmUgZm9yIHRoZSBNYXJ2ZWxsIFdpLUZpIGFkYXB0ZXI/IFRoaXMgZnVuY3Rpb24gaXMgY2xlYXJseSBjcml0aWNhbCwgYXMgdGhlIG5hbWUgc3VnZ2VzdHMgaXQgaGFuZGxlcyBmaXJtd2FyZSBpbml0aWFsaXphdGlvbiwgd2hpY2ggaXMgYSBmb3VuZGF0aW9uYWwgc3RlcCBmb3IgYW55IGhhcmR3YXJlIGRyaXZlci4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBmdW5jdGlvbiB3aWxsIGFsbG9jYXRlIHJlc291cmNlcywgbG9hZCB0aGUgZmlybXdhcmUgaW1hZ2UsIGxpa2VseSBjb25maWd1cmUgc29tZSBoYXJkd2FyZSByZWdpc3RlcnMsIGFuZCBoYW5kbGUgYW55IG5lY2Vzc2FyeSBlcnJvciBjaGVja2luZy4gSSYjMzk7bSBhbHNvIGFudGljaXBhdGluZyBpdCYjMzk7bGwgaW50ZXJhY3Qgd2l0aCBzb21lIG9mIHRoZSBtb3JlIGdlbmVyYWwgaGFyZHdhcmUgaW50ZXJmYWNlIGZ1bmN0aW9ucy4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSBob3cgd2VsbCBteSBhc3N1bXB0aW9ucyBhbGlnbiB3aXRoIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwMTozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9pbml0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0ODA6XHQgKiAgICAgIC0gSW5pdGlhbGl6ZSB0aGUgYWRhcHRlciBzdHJ1Y3R1cmVcbiA0ODE6XHQgKiAgICAgIC0gSW5pdGlhbGl6ZSB0aGUgcHJpdmF0ZSBzdHJ1Y3R1cmVcbiA0ODI6XHQgKiAgICAgIC0gQWRkIEJTUyBwcmlvcml0eSB0YWJsZXMgdG8gdGhlIGFkYXB0ZXIgc3RydWN0dXJlXG4gNDgzOlx0ICogICAgICAtIEZvciBlYWNoIGludGVyZmFjZSwgc2VuZCB0aGUgaW5pdCBjb21tYW5kcyB0byBmaXJtd2FyZVxuIDQ4NDpcdCAqL1xuIDQ4NTpcdGludCBtd2lmaWV4X2luaXRfZncoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbiA0ODY6XHR7XG4gNDg3Olx0XHRpbnQgcmV0O1xuIDQ4ODpcdFx0c3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdjtcbiA0ODk6XHRcdHU4IGksIGZpcnN0X3N0YSA9IHRydWU7XG4gNDkwOlx0XG4gNDkxOlx0XHRhZGFwdGVyLVx1MDAzZWh3X3N0YXR1cyA9IE1XSUZJRVhfSFdfU1RBVFVTX0lOSVRJQUxJWklORztcbiA0OTI6XHRcbiA0OTM6XHRcdC8qIEFsbG9jYXRlIG1lbW9yeSBmb3IgbWVtYmVyIG9mIGFkYXB0ZXIgc3RydWN0dXJlICovXG4gNDk0Olx0XHRyZXQgPSBtd2lmaWV4X2FsbG9jYXRlX2FkYXB0ZXIoYWRhcHRlcik7XG4gNDk1Olx0XHRpZiAocmV0KVxuIDQ5NjpcdFx0XHRyZXR1cm4gLTE7XG4gNDk3Olx0XG4gNDk4Olx0XHQvKiBJbml0aWFsaXplIGFkYXB0ZXIgc3RydWN0dXJlICovXG4gNDk5Olx0XHRtd2lmaWV4X2luaXRfYWRhcHRlcihhZGFwdGVyKTtcbiA1MDA6XHRcbiA1MDE6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFkYXB0ZXItXHUwMDNlcHJpdl9udW07IGkmIzQzOyYjNDM7KSB7XG4gNTAyOlx0XHRcdHByaXYgPSBhZGFwdGVyLVx1MDAzZXByaXZbaV07XG4gNTAzOlx0XG4gNTA0Olx0XHRcdC8qIEluaXRpYWxpemUgcHJpdmF0ZSBzdHJ1Y3R1cmUgKi9cbiA1MDU6XHRcdFx0cmV0ID0gbXdpZmlleF9pbml0X3ByaXYocHJpdik7XG4gNTA2Olx0XHRcdGlmIChyZXQpXG4gNTA3Olx0XHRcdFx0cmV0dXJuIC0xO1xuIDUwODpcdFx0fVxuIDUwOTpcdFx0aWYgKGFkYXB0ZXItXHUwMDNlbWZnX21vZGUpIHtcbiA1MTA6XHRcdFx0YWRhcHRlci1cdTAwM2Vod19zdGF0dXMgPSBNV0lGSUVYX0hXX1NUQVRVU19SRUFEWTtcbiA1MTE6XHRcdH0gZWxzZSB7XG4gNTEyOlx0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFkYXB0ZXItXHUwMDNlcHJpdl9udW07IGkmIzQzOyYjNDM7KSB7XG4gNTEzOlx0XHRcdFx0cmV0ID0gbXdpZmlleF9zdGFfaW5pdF9jbWQoYWRhcHRlci1cdTAwM2Vwcml2W2ldLFxuIDUxNDpcdFx0XHRcdFx0XHRcdCAgIGZpcnN0X3N0YSk7XG4gNTE1Olx0XHRcdFx0aWYgKHJldCA9PSAtMSlcbiA1MTY6XHRcdFx0XHRcdHJldHVybiAtMTtcbiA1MTc6XHRcbiA1MTg6XHRcdFx0XHRmaXJzdF9zdGEgPSBmYWxzZTtcbiA1MTk6XHRcdFx0fVxuIDUyMDpcdFx0fVxuIDUyMTpcdFxuIDUyMjpcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFkYXB0ZXItXHUwMDNlY21kX3BlbmRpbmdfcV9sb2NrKTtcbiA1MjM6XHRcdFdBUk5fT04oIWxpc3RfZW1wdHkoXHUwMDI2YWRhcHRlci1cdTAwM2VjbWRfcGVuZGluZ19xKSk7XG4gNTI0Olx0XHRzcGluX3VubG9ja19iaChcdTAwMjZhZGFwdGVyLVx1MDAzZWNtZF9wZW5kaW5nX3FfbG9jayk7XG4gNTI1Olx0XG4gNTI2Olx0XHRhZGFwdGVyLVx1MDAzZWh3X3N0YXR1cyA9IE1XSUZJRVhfSFdfU1RBVFVTX1JFQURZO1xuIDUyNzpcdFxuIDUyODpcdFx0aWYgKGFkYXB0ZXItXHUwMDNlaWZfb3BzLmluaXRfZndfcG9ydClcbiA1Mjk6XHRcdFx0YWRhcHRlci1cdTAwM2VpZl9vcHMuaW5pdF9md19wb3J0KGFkYXB0ZXIpO1xuIDUzMDpcdFxuIDUzMTpcdFx0cmV0dXJuIDA7XG4gNTMyOlx0fVxuIDUzMzpcdFxuIDUzNDpcdC8qXG4gNTM1Olx0ICogVGhpcyBmdW5jdGlvbiBkZWxldGVzIHRoZSBCU1MgcHJpb3JpdHkgdGFibGVzLlxuIDUzNjpcdCAqXG4gNTM3Olx0ICogVGhlIGZ1bmN0aW9uIHRyYXZlcnNlcyB0aHJvdWdoIGFsbCB0aGUgYWxsb2NhdGVkIEJTUyBwcmlvcml0eSBub2Rlc1xuIDUzODpcdCAqIGluIGV2ZXJ5IEJTUyBwcmlvcml0eSB0YWJsZSBhbmQgZnJlZXMgdGhlbS5cbiA1Mzk6XHQgKi9cbiA1NDA6XHRzdGF0aWMgdm9pZCBtd2lmaWV4X2RlbGV0ZV9ic3NfcHJpb190Ymwoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcbiA1NDE6XHR7XG4gNTQyOlx0XHRpbnQgaTtcbiA1NDM6XHRcdHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG4gNTQ0Olx0XHRzdHJ1Y3QgbXdpZmlleF9ic3NfcHJpb19ub2RlICpic3NwcmlvX25vZGUsICp0bXBfbm9kZTtcbiA1NDU6XHRcdHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQ7XG4gNTQ2Olx0XHRzcGlubG9ja190ICpsb2NrOyAvKiBic3MgcHJpb3JpdHkgbG9jayAqL1xuIDU0NzpcdFxuIDU0ODpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWRhcHRlci1cdTAwM2Vwcml2X251bTsgJiM0MzsmIzQzO2kpIHtcbiA1NDk6XHRcdFx0aGVhZCA9IFx1MDAyNmFkYXB0ZXItXHUwMDNlYnNzX3ByaW9fdGJsW2ldLmJzc19wcmlvX2hlYWQ7XG4gNTUwOlx0XHRcdGxvY2sgPSBcdTAwMjZhZGFwdGVyLVx1MDAzZWJzc19wcmlvX3RibFtpXS5ic3NfcHJpb19sb2NrO1xuIDU1MTpcdFx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBJTkZPLFxuIDU1MjpcdFx0XHRcdCAgICBcJiMzNDtpbmZvOiBkZWxldGUgQlNTIHByaW9yaXR5IHRhYmxlLFxcdFwmIzM0O1xuIDU1MzpcdFx0XHRcdCAgICBcJiMzNDtic3NfdHlwZSA9ICVkLCBic3NfbnVtID0gJWQsIGkgPSAlZCxcXHRcJiMzNDtcbiA1NTQ6XHRcdFx0XHQgICAgXCYjMzQ7aGVhZCA9ICVwXFxuXCYjMzQ7LFxuIDU1NTpcdFx0XHRcdCAgICBwcml2LVx1MDAzZWJzc190eXBlLCBwcml2LVx1MDAzZWJzc19udW0sIGksIGhlYWQpO1xuIDU1NjpcdFxuIDU1NzpcdFx0XHR7XG4gNTU4Olx0XHRcdFx0c3Bpbl9sb2NrX2JoKGxvY2spO1xuIDU1OTpcdFx0XHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShic3NwcmlvX25vZGUsIHRtcF9ub2RlLCBoZWFkLFxuIDU2MDpcdFx0XHRcdFx0XHRcdCBsaXN0KSB7XG4gNTYxOlx0XHRcdFx0XHRpZiAoYnNzcHJpb19ub2RlLVx1MDAzZXByaXYgPT0gcHJpdikge1xuIDU2MjpcdFx0XHRcdFx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBJTkZPLFxuIDU2MzpcdFx0XHRcdFx0XHRcdCAgICBcJiMzNDtpbmZvOiBEZWxldGVcXHRcJiMzNDtcbiA1NjQ6XHRcdFx0XHRcdFx0XHQgICAgXCYjMzQ7bm9kZSAlcCwgbmV4dCA9ICVwXFxuXCYjMzQ7LFxuIDU2NTpcdFx0XHRcdFx0XHRcdCAgICBic3NwcmlvX25vZGUsIHRtcF9ub2RlKTtcbiA1NjY6XHRcdFx0XHRcdFx0bGlzdF9kZWwoXHUwMDI2YnNzcHJpb19ub2RlLVx1MDAzZWxpc3QpO1xuIDU2NzpcdFx0XHRcdFx0XHRrZnJlZShic3NwcmlvX25vZGUpO1xuIDU2ODpcdFx0XHRcdFx0fVxuIDU2OTpcdFx0XHRcdH1cbiA1NzA6XHRcdFx0XHRzcGluX3VubG9ja19iaChsb2NrKTtcbiA1NzE6XHRcdFx0fVxuIDU3MjpcdFx0fVxuIDU3MzpcdH1cbiA1NzQ6XHRcbiA1NzU6XHQvKlxuIDU3NjpcdCAqIFRoaXMgZnVuY3Rpb24gZnJlZXMgdGhlIHByaXZhdGUgc3RydWN0dXJlLCBpbmNsdWRpbmcgY2xlYW5zXG4gNTc3Olx0ICogdXAgdGhlIFRYIGFuZCBSWCBxdWV1ZXMgYW5kIGZyZWVzIHRoZSBCU1MgcHJpb3JpdHkgdGFibGVzLlxuIDU3ODpcdCAqL1xuIDU3OTpcdHZvaWQgbXdpZmlleF9mcmVlX3ByaXYoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTI5OAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRmlybXdhcmUgSW5pdGlhbGl6YXRpb24gUHJvY2VzcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBpbml0aWFsaXphdGlvbiByb3V0aW5lLCBhbmQgaXQgc2VlbXMgdGhlIGNyaXRpY2FsIHBhcnQgaXMgdGhpcyBgbXdpZmlleF9zdGFfaW5pdF9jbWRgIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIHRoYXQmIzM5O3MgdGhlIHBvaW50IHdoZXJlIHdlJiMzOTtyZSBhY3R1YWxseSBwdXNoaW5nIGNvbW1hbmRzIGRvd24gdG8gdGhlIGZpcm13YXJlLiBNYWtlcyBzZW5zZTsgdGhhdCYjMzk7cyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLCBzbyB0byBzcGVhay4KCk15IGluaXRpYWwgY29uY2VybiBpcywgaWYgdGhhdCBmYWlscyDigJMgaWYgYG13aWZpZXhfc3RhX2luaXRfY21kYCBoaXRzIGEgc25hZyDigJMgdGhlIGVudGlyZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGJvbWJzIG91dCB3aXRoIGEgcmV0dXJuIGNvZGUgb2YgLTEgZnJvbSBgbXdpZmlleF9pbml0X2Z3YC4gU28sIHRoZSBmYWlsdXJlIG9mIHRoZSBjb21tYW5kIHRvIGV4ZWN1dGUgaXMgdGhlIHNpbmdsZSBwb2ludCBvZiBmYWlsdXJlLgoKR2l2ZW4gdGhhdCwgSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiwgcmlnaHQgbm93LCBvbiB1bmRlcnN0YW5kaW5nIGV4YWN0bHkgd2hhdCBgbXdpZmlleF9zdGFfaW5pdF9jbWRgIGlzIGRvaW5nIGFuZCB3aGF0IGl0cyBmYWlsdXJlIG1vZGVzIGFyZS4gV2UgaGF2ZSB0byB1bmRlcnN0YW5kIHRoaXMgZnVuY3Rpb24gY29tcGxldGVseSwgYmVjYXVzZSBpdCBkaWN0YXRlcyB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIHRoZSBlbnRpcmUgcHJvY2Vzcy4gTm8gcm9vbSBmb3IgYW1iaWd1aXR5IGhlcmUuIExldCYjMzk7cyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgd2h5IHRoaXMgbWlnaHQgZmFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF9zdGFfaW5pdF9jbWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MTA4Mz1td2lmaWV4X2NoYW5nZV92aWZfdG9fcDJwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTEyOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjExMzA6XHRpZiAobXdpZmlleF9zdGFfaW5pdF9jbWQocHJpdiwgZmFsc2UpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTEzMS1cdFx0cmV0dXJuIC0xO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTExMzc9bXdpZmlleF9jaGFuZ2VfdmlmX3RvX3N0YV9hZGhvYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTExNzAtXHRcdHJldHVybiAtMTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjExNzE6XHRpZiAobXdpZmlleF9zdGFfaW5pdF9jbWQocHJpdiwgZmFsc2UpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTE3Mi1cdFx0cmV0dXJuIC0xO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTExNzg9bXdpZmlleF9jaGFuZ2VfdmlmX3RvX2FwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTIwNy1cdFx0cmV0dXJuIC0xO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTIwODpcdGlmIChtd2lmaWV4X3N0YV9pbml0X2NtZChwcml2LCBmYWxzZSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xMjA5LVx0XHRyZXR1cm4gLTE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9Mjk4MD1zdHJ1Y3Qgd2lyZWxlc3NfZGV2ICptd2lmaWV4X2FkZF92aXJ0dWFsX2ludGYoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0zMTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MzExNzpcdFx0cmV0ID0gbXdpZmlleF9zdGFfaW5pdF9jbWQocHJpdiwgZmFsc2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMzExOC1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaW5pdC5jPTQ4NT1pbnQgbXdpZmlleF9pbml0X2Z3KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2luaXQuYy01MTItXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFkYXB0ZXItXHUwMDNlcHJpdl9udW07IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaW5pdC5jOjUxMzpcdFx0XHRyZXQgPSBtd2lmaWV4X3N0YV9pbml0X2NtZChhZGFwdGVyLVx1MDAzZXByaXZbaV0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaW5pdC5jLTUxNC1cdFx0XHRcdFx0XHQgICBmaXJzdF9zdGEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTE1Mj12b2lkIG13aWZpZXhfcHJvY2Vzc191YXBfdHhwZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMTUzLVx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMTU0OmludCBtd2lmaWV4X3N0YV9pbml0X2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICosIHU4IGZpcnN0X3N0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTExNTUtaW50IG13aWZpZXhfY21kXzgwMl8xMV9zY2FuKHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYz0yMDMzPWludCBtd2lmaWV4X3N0YV9wcmVwYXJlX2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1aW50MTZfdCBjbWRfbm8sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yMzUzLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYzoyMzU0OmludCBtd2lmaWV4X3N0YV9pbml0X2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OCBmaXJzdF9zdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTIzNTUte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwMTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDc0NAoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgYG13aWZpZXhfc3RhX2luaXRfY21kYCYjMzk7cyBDb21tYW5kIGFuZCBSZXBseSBIYW5kbGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBgbXdpZmlleF9zdGFfaW5pdF9jbWRgLiBNeSBwcmltYXJ5IGNvbmNlcm4gcmlnaHQgbm93IGlzIHRoZSBjb21tYW5kIGZsb3cuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBmdW5jdGlvbiBpbml0aWF0ZXMgY29tbWFuZCB0cmFuc21pc3Npb24gdG8gdGhlIGhhcmR3YXJlIGFuZCB0aGVuIHBhdGllbnRseSB3YWl0cyBmb3IgYSByZXNwb25zZSBmcm9tIHRoZSBkZXZpY2UuIEFyZSB3ZSBkZWFsaW5nIHdpdGggYSBzeW5jaHJvbm91cyBvciBhc3luY2hyb25vdXMgbW9kZWwgaGVyZT8gRG9lcyBpdCB1c2Ugc29tZSBraW5kIG9mIGludGVybmFsIG1lY2hhbmlzbSB0byB0cmFjayB0aGUgY29tbWFuZCBJRCBhbmQgY29ycmVsYXRlIGl0IHdpdGggdGhlIGV2ZW50dWFsIHJlcGx5LCBvciBpcyBpdCBkb2luZyBzb21ldGhpbmcgbW9yZSBsb3ctbGV2ZWw/IEkmIzM5O20gbG9va2luZyBmb3IgY2x1ZXMgaW4gdGhlIGNvZGUgcmVnYXJkaW5nIGhvdyBpdCBoYW5kbGVzIHBvdGVudGlhbCB0aW1lb3V0cywgZXJyb3IgY29uZGl0aW9ucyBpZiBubyByZXBseSBpcyByZWNlaXZlZCB3aXRoaW4gYSByZWFzb25hYmxlIHRpbWVmcmFtZSwgb3IgaWYgaXQgZG9lcyBzb21lIGNsZXZlciBpbnRlcnJ1cHQgb3IgcG9sbGluZyBzZXR1cC4gQWxzbywgSSYjMzk7bSBjaGVja2luZyBpZiBpdCBjb3JyZWN0bHkgc2V0cyBmbGFncyB0byBoYW5kbGUgY29tbWFuZCBjb21wbGV0aW9uIGFuZCByZXBseSBzaWduYWxpbmcuIFRoZSBnb2FsIGlzIHRvIHNlZSBpZiBpdHMgaW1wbGVtZW50ZWQgaW4gYSBjbGVhbiB3YXkgb3IgaWYgSSBoYXZlIHRvIG1ha2UgbW9kaWZpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjM1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjM1MDpcdCAqICAgICAgLSBTZXQgQU1TRFUgYWdncmVnYXRpb24gY29udHJvbFxuMjM1MTpcdCAqICAgICAgLSBTZXQgMTFkIGNvbnRyb2xcbjIzNTI6XHQgKiAgICAgIC0gU2V0IE1BQyBjb250cm9sICh0aGlzIG11c3QgYmUgdGhlIGxhc3QgY29tbWFuZCB0byBpbml0aWFsaXplIGZpcm13YXJlKVxuMjM1MzpcdCAqL1xuMjM1NDpcdGludCBtd2lmaWV4X3N0YV9pbml0X2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OCBmaXJzdF9zdGEpXG4yMzU1Olx0e1xuMjM1NjpcdFx0c3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbjIzNTc6XHRcdGludCByZXQ7XG4yMzU4Olx0XHRzdHJ1Y3QgbXdpZmlleF9kc18xMW5fYW1zZHVfYWdncl9jdHJsIGFtc2R1X2FnZ3JfY3RybDtcbjIzNTk6XHRcdHN0cnVjdCBtd2lmaWV4X2RzX2F1dG9fZHMgYXV0b19kcztcbjIzNjA6XHRcdGVudW0gc3RhdGVfMTFkX3Qgc3RhdGVfMTFkO1xuMjM2MTpcdFx0c3RydWN0IG13aWZpZXhfZHNfMTFuX3R4X2NmZyB0eF9jZmc7XG4yMzYyOlx0XHR1OCBzZGlvX3NwX3J4X2FnZ3JfZW5hYmxlO1xuMjM2MzpcdFx0dTE2IHBhY2tldF9hZ2dyX2VuYWJsZTtcbjIzNjQ6XHRcdGludCBkYXRhO1xuMjM2NTpcdFxuMjM2NjpcdFx0aWYgKGZpcnN0X3N0YSkge1xuMjM2NzpcdFx0XHRpZiAocHJpdi1cdTAwM2VhZGFwdGVyLVx1MDAzZWlmYWNlX3R5cGUgPT0gTVdJRklFWF9QQ0lFKSB7XG4yMzY4Olx0XHRcdFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LFxuMjM2OTpcdFx0XHRcdFx0XHQgICAgICAgSG9zdENtZF9DTURfUENJRV9ERVNDX0RFVEFJTFMsXG4yMzcwOlx0XHRcdFx0XHRcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBOVUxMLFxuMjM3MTpcdFx0XHRcdFx0XHQgICAgICAgdHJ1ZSk7XG4yMzcyOlx0XHRcdFx0aWYgKHJldClcbjIzNzM6XHRcdFx0XHRcdHJldHVybiAtMTtcbjIzNzQ6XHRcdFx0fVxuMjM3NTpcdFxuMjM3NjpcdFx0XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0ZVTkNfSU5JVCxcbjIzNzc6XHRcdFx0XHRcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBOVUxMLCB0cnVlKTtcbjIzNzg6XHRcdFx0aWYgKHJldClcbjIzNzk6XHRcdFx0XHRyZXR1cm4gLTE7XG4yMzgwOlx0XG4yMzgxOlx0XHRcdC8qIERvd25sb2FkIGNhbGlicmF0aW9uIGRhdGEgdG8gZmlybXdhcmUuXG4yMzgyOlx0XHRcdCAqIFRoZSBjYWwtZGF0YSBjYW4gYmUgcmVhZCBmcm9tIGRldmljZSB0cmVlIGFuZC9vclxuMjM4MzpcdFx0XHQgKiBhIGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgZG93bmxvYWRlZCB0byBmaXJtd2FyZS5cbjIzODQ6XHRcdFx0ICovXG4yMzg1Olx0XHRcdGlmIChhZGFwdGVyLVx1MDAzZWR0X25vZGUpIHtcbjIzODY6XHRcdFx0XHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIoYWRhcHRlci1cdTAwM2VkdF9ub2RlLFxuMjM4NzpcdFx0XHRcdFx0XHRcdCBcJiMzNDttYXJ2ZWxsLHdha2V1cC1waW5cJiMzNDssXG4yMzg4Olx0XHRcdFx0XHRcdFx0IFx1MDAyNmRhdGEpID09IDApIHtcbjIzODk6XHRcdFx0XHRcdHByX2RlYnVnKFwmIzM0O1dha2V1cCBwaW4gPSAweCV4XFxuXCYjMzQ7LCBkYXRhKTtcbjIzOTA6XHRcdFx0XHRcdGFkYXB0ZXItXHUwMDNlaHNfY2ZnLmdwaW8gPSBkYXRhO1xuMjM5MTpcdFx0XHRcdH1cbjIzOTI6XHRcbjIzOTM6XHRcdFx0XHRtd2lmaWV4X2RubGRfZHRfY2ZnZGF0YShwcml2LCBhZGFwdGVyLVx1MDAzZWR0X25vZGUsXG4yMzk0Olx0XHRcdFx0XHRcdFx0XCYjMzQ7bWFydmVsbCxjYWxkYXRhXCYjMzQ7KTtcbjIzOTU6XHRcdFx0fVxuMjM5NjpcdFxuMjM5NzpcdFx0XHRpZiAoYWRhcHRlci1cdTAwM2VjYWxfZGF0YSkge1xuMjM5ODpcdFx0XHRcdG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfQ0ZHX0RBVEEsXG4yMzk5Olx0XHRcdFx0XHRcdCBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBOVUxMLCB0cnVlKTtcbjI0MDA6XHRcdFx0XHRyZWxlYXNlX2Zpcm13YXJlKGFkYXB0ZXItXHUwMDNlY2FsX2RhdGEpO1xuMjQwMTpcdFx0XHRcdGFkYXB0ZXItXHUwMDNlY2FsX2RhdGEgPSBOVUxMO1xuMjQwMjpcdFx0XHR9XG4yNDAzOlx0XG4yNDA0Olx0XG4yNDA1Olx0XHRcdC8qIFJlYWQgTUFDIGFkZHJlc3MgZnJvbSBIVyAqL1xuMjQwNjpcdFx0XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0dFVF9IV19TUEVDLFxuMjQwNzpcdFx0XHRcdFx0ICAgICAgIEhvc3RDbWRfQUNUX0dFTl9HRVQsIDAsIE5VTEwsIHRydWUpO1xuMjQwODpcdFx0XHRpZiAocmV0KVxuMjQwOTpcdFx0XHRcdHJldHVybiAtMTtcbjI0MTA6XHRcbjI0MTE6XHRcdFx0LyoqIFNldCBTRElPIFNpbmdsZSBQb3J0IFJYIEFnZ3IgSW5mbyAqL1xuMjQxMjpcdFx0XHRpZiAocHJpdi1cdTAwM2VhZGFwdGVyLVx1MDAzZWlmYWNlX3R5cGUgPT0gTVdJRklFWF9TRElPIFx1MDAyNlx1MDAyNlxuMjQxMzpcdFx0XHQgICAgSVNTVVBQX1NESU9fU1BBX0VOQUJMRUQocHJpdi1cdTAwM2VhZGFwdGVyLVx1MDAzZWZ3X2NhcF9pbmZvKSBcdTAwMjZcdTAwMjZcbjI0MTQ6XHRcdFx0ICAgICFwcml2LVx1MDAzZWFkYXB0ZXItXHUwMDNlaG9zdF9kaXNhYmxlX3NkaW9fcnhfYWdncikge1xuMjQxNTpcdFx0XHRcdHNkaW9fc3BfcnhfYWdncl9lbmFibGUgPSB0cnVlO1xuMjQxNjpcdFx0XHRcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdixcbjI0MTc6XHRcdFx0XHRcdFx0ICAgICAgIEhvc3RDbWRfQ01EX1NESU9fU1BfUlhfQUdHUl9DRkcsXG4yNDE4Olx0XHRcdFx0XHRcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLFxuMjQxOTpcdFx0XHRcdFx0XHQgICAgICAgXHUwMDI2c2Rpb19zcF9yeF9hZ2dyX2VuYWJsZSxcbjI0MjA6XHRcdFx0XHRcdFx0ICAgICAgIHRydWUpO1xuMjQyMTpcdFx0XHRcdGlmIChyZXQpIHtcbjI0MjI6XHRcdFx0XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgRVJST1IsXG4yNDIzOlx0XHRcdFx0XHRcdCAgICBcJiMzNDtlcnJvciB3aGlsZSBlbmFibGluZyBTUCBhZ2dyZWdhdGlvbi4uZGlzYWJsZSBpdFwmIzM0Oyk7XG4yNDI0Olx0XHRcdFx0XHRhZGFwdGVyLVx1MDAzZXNkaW9fcnhfYWdncl9lbmFibGUgPSBmYWxzZTtcbjI0MjU6XHRcdFx0XHR9XG4yNDI2Olx0XHRcdH1cbjI0Mjc6XHRcbjI0Mjg6XHRcdFx0LyogUmVjb25maWd1cmUgdHggYnVmIHNpemUgKi9cbjI0Mjk6XHRcdFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9SRUNPTkZJR1VSRV9UWF9CVUZGLFxuMjQzMDpcdFx0XHRcdFx0ICAgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsXG4yNDMxOlx0XHRcdFx0XHQgICAgICAgXHUwMDI2cHJpdi1cdTAwM2VhZGFwdGVyLVx1MDAzZXR4X2J1Zl9zaXplLCB0cnVlKTtcbjI0MzI6XHRcdFx0aWYgKHJldClcbjI0MzM6XHRcdFx0XHRyZXR1cm4gLTE7XG4yNDM0Olx0XG4yNDM1Olx0XHRcdGlmIChwcml2LVx1MDAzZWJzc190eXBlICE9IE1XSUZJRVhfQlNTX1RZUEVfVUFQKSB7XG4yNDM2Olx0XHRcdFx0LyogRW5hYmxlIElFRUUgUFMgYnkgZGVmYXVsdCAqL1xuMjQzNzpcdFx0XHRcdHByaXYtXHUwMDNlYWRhcHRlci1cdTAwM2Vwc19tb2RlID0gTVdJRklFWF84MDJfMTFfUE9XRVJfTU9ERV9QU1A7XG4yNDM4Olx0XHRcdFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LFxuMjQzOTpcdFx0XHRcdFx0XHQgICAgICAgSG9zdENtZF9DTURfODAyXzExX1BTX01PREVfRU5ILFxuMjQ0MDpcdFx0XHRcdFx0XHQgICAgICAgRU5fQVVUT19QUywgQklUTUFQX1NUQV9QUywgTlVMTCxcbjI0NDE6XHRcdFx0XHRcdFx0ICAgICAgIHRydWUpO1xuMjQ0MjpcdFx0XHRcdGlmIChyZXQpXG4yNDQzOlx0XHRcdFx0XHRyZXR1cm4gLTE7XG4yNDQ0Olx0XHRcdH1cbjI0NDU6XHRcbjI0NDY6XHRcdFx0aWYgKGRyY3MpIHtcbjI0NDc6XHRcdFx0XHRhZGFwdGVyLVx1MDAzZWRyY3NfZW5hYmxlZCA9IHRydWU7XG4yNDQ4Olx0XHRcdFx0aWYgKElTU1VQUF9EUkNTX0VOQUJMRUQoYWRhcHRlci1cdTAwM2Vmd19jYXBfaW5mbykpXG4yNDQ5Olx0XHRcdFx0XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDAxOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNzE5CgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogMTE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBQb3RlbnRpYWwgYG13aWZpZXhgIFZ1bG5lcmFiaWxpdGllcyB3aXRoIFN5emthbGxlcioqCgpPa2F5LCBzbyBgbXdpZmlleF9zZW5kX2NtZGAgd2l0aCB0aGF0IGB0cnVlYCBhcmd1bWVudD8gVGhhdCBtZWFucyBpdCAqYWJzb2x1dGVseSogd2FpdHMgZm9yIGEgcmVzcG9uc2UuIE5vIHJlc3BvbnNlLCBhbmQgaXQmIzM5O3MgZWl0aGVyIHRpbWluZyBvdXQgb3IganVzdCBwbGFpbiBmYWlsaW5nLiBUaGF0JiMzOTtzIGEga2V5IHBvaW50LiBOb3csIHRoZSBVU0IgZnV6emVyLi4ucmlnaHQsIEkgcmVtZW1iZXIgdGhhdC4gSXQgKmNhbiogcHJvdmlkZSByZXNwb25zZXMgaWYgaXQga25vd3MgdGhlIHByb3RvY29sLCBidXQgdXN1YWxseSwgaXQmIzM5O3MganVzdCBzcGV3aW5nIG91dCBnYXJiYWdlIGRhdGEuIFNvLCB0aGUgcXVlc3Rpb24gaXMsIGhhcyBzeXprYWxsZXIgZXZlbiBiZWVuIHNldCB1cCB0byBlZmZlY3RpdmVseSBmdXp6IGBtd2lmaWV4YD8gVGhhdCYjMzk7cyB3aGF0IEkgbmVlZCB0byBmaWd1cmUgb3V0LiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgZm9yIGFueSBleGlzdGluZyBzeXprYWxsZXIgYnVnIHJlcG9ydHMgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gYG13aWZpZXhgLiBUaGF0IHdvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBlc3RhYmxpc2ggdGhlIGV4dGVudCBvZiBleGlzdGluZyBjb3ZlcmFnZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTg1NzcgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbk1BSU5UQUlORVJTPTE1NzM2PVM6XHRPZGQgRml4ZXNcbk1BSU5UQUlORVJTOjE1NzM3OkY6XHRkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXG5NQUlOVEFJTkVSUy0xNTczOC1cbi0tXG5hcmNoL2FybS9ib290L2R0cy9yb2NrY2hpcC9yazMyODgtdmV5cm9uLWplcnJ5LmR0cz00Mz1cdTAwMjZzZGlvMCB7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcmszMjg4LXZleXJvbi1qZXJyeS5kdHMtNDYtXG5hcmNoL2FybS9ib290L2R0cy9yb2NrY2hpcC9yazMyODgtdmV5cm9uLWplcnJ5LmR0czo0NzpcdG13aWZpZXg6IHdpZmlAMSB7XG5hcmNoL2FybS9ib290L2R0cy9yb2NrY2hpcC9yazMyODgtdmV5cm9uLWplcnJ5LmR0cy00OC1cdFx0Y29tcGF0aWJsZSA9IFwmIzM0O21hcnZlbGwsc2Q4ODk3XCYjMzQ7O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDhtcC1iZWFjb24tc29tLmR0c2k9Mjg1PVx1MDAyNnVzZGhjMSB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OG1wLWJlYWNvbi1zb20uZHRzaS0zMDItXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXAtYmVhY29uLXNvbS5kdHNpOjMwMzpcdG13aWZpZXg6IHdpZmlAMSB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXAtYmVhY29uLXNvbS5kdHNpLTMwNC1cdFx0Y29tcGF0aWJsZSA9IFwmIzM0O21hcnZlbGwsc2Q4OTk3XCYjMzQ7O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTczLWVsbS5kdHNpPTQxMj1cdTAwMjZtbWMzIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE3My1lbG0uZHRzaS00MzItXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE3My1lbG0uZHRzaTo0MzM6XHRtd2lmaWV4OiB3aWZpQDEge1xuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxNzMtZWxtLmR0c2ktNDM0LVx0XHRjb21wYXRpYmxlID0gXCYjMzQ7bWFydmVsbCxzZDg4OTdcJiMzNDs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnPTE2PXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzX3RmL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZzoxNzpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZy0xOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL01ha2VmaWxlPTQ9b2JqLSQoQ09ORklHX0xJQkVSVEFTX1RISU5GSVJNKVx0JiM0Mzs9IGxpYmVydGFzX3RmL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19NV0lGSUVYKVx0JiM0Mzs9IG13aWZpZXgvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL01ha2VmaWxlLTYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYz00Mj1zdGF0aWMgdTE2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjQzOm13aWZpZXhfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy00NC1cdFx0XHRcdCAgdTggYmFuZHMsIHUxNiBtY3NfbWFwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtNDgtXHR1MzIgdXNyX3ZodF9jYXBfaW5mbyA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjQ5Olx0c3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtNTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYz04NT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzo4Njptd2lmaWV4X2ZpbGxfdmh0X2NhcF9pbmZvKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTg3LVx0XHRcdCAgc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwLCB1OCBiYW5kcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtODgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzo4OTpcdHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTkwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtOTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjk5OnZvaWQgbXdpZmlleF9maWxsX3ZodF9jYXBfdGx2KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTEwMC1cdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXAsIHU4IGJhbmRzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xMDEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxMDI6XHRzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xMDMtXHR1MTYgbWNzX21hcF91c2VyLCBtY3NfbWFwX3Jlc3AsIG1jc19tYXBfcmVzdWx0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTA2LVx0LyogRmlsbCBWSFQgY2FwIGluZm8gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTA3Olx0bXdpZmlleF9maWxsX3ZodF9jYXBfaW5mbyhwcml2LCB2aHRfY2FwLCBiYW5kcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTEwOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTEyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTI5Olx0dG1wID0gbXdpZmlleF9jb252ZXJ0X21jc21hcF90b19tYXhyYXRlKHByaXYsIGJhbmRzLCBtY3NfbWFwX3Jlc3VsdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTEzMC1cdHZodF9jYXAtXHUwMDNlc3VwcF9tY3MucnhfaGlnaGVzdCA9IGNwdV90b19sZTE2KHRtcCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE1MTpcdHRtcCA9IG13aWZpZXhfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShwcml2LCBiYW5kcywgbWNzX21hcF9yZXN1bHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xNTItXHR2aHRfY2FwLVx1MDAzZXN1cHBfbWNzLnR4X2hpZ2hlc3QgPSBjcHVfdG9fbGUxNih0bXApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxNTc6aW50IG13aWZpZXhfY21kX2FwcGVuZF8xMWFjX3RsdihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxNTg6XHRcdFx0ICAgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTU5LVx0XHRcdCAgICAgdTggKipidWZmZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE2MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE2MTpcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX3ZodGNhcCAqdmh0X2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTYyOlx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfb3Blcl9tb2RlX250ZiAqb3Blcl9udGY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE2My1cdHN0cnVjdCBpZWVlX3R5cGVzX29wZXJfbW9kZV9udGYgKmllZWVfb3Blcl9udGY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE2NDpcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX3ZodF9vcGVyICp2aHRfb3A7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE2NTpcdHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE2Ni1cdHU4IHN1cHBfY2h3ZF9zZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xNzYtXHRpZiAoYnNzX2Rlc2MtXHUwMDNlYmNuX3ZodF9jYXApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTc3Olx0XHR2aHRfY2FwID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX3ZodGNhcCAqKSpidWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE3OC1cdFx0bWVtc2V0KHZodF9jYXAsIDAsIHNpemVvZigqdmh0X2NhcCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTgxLVx0XHRcdFx0Y3B1X3RvX2xlMTYoc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxODI6XHRcdG1lbWNweSgodTggKil2aHRfY2FwICYjNDM7IHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19oZWFkZXIpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xODMtXHRcdCAgICAgICAodTggKilic3NfZGVzYy1cdTAwM2ViY25fdmh0X2NhcCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE4NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTg2Olx0XHRtd2lmaWV4X2ZpbGxfdmh0X2NhcF90bHYocHJpdiwgXHUwMDI2dmh0X2NhcC1cdTAwM2V2aHRfY2FwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xODctXHRcdFx0XHRcdCBic3NfZGVzYy1cdTAwM2Vic3NfYmFuZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xOTQtXHRcdGlmIChwcml2LVx1MDAzZWJzc19tb2RlID09IE5MODAyMTFfSUZUWVBFX1NUQVRJT04pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTk1Olx0XHRcdHZodF9vcCA9IChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc192aHRfb3BlciAqKSpidWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE5Ni1cdFx0XHRtZW1zZXQodmh0X29wLCAwLCBzaXplb2YoKnZodF9vcCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTk5LVx0XHRcdHZodF9vcC1cdTAwM2VoZWFkZXIubGVuICA9IGNwdV90b19sZTE2KHNpemVvZigqdmh0X29wKSAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjIwMDpcdFx0XHRcdCAgICAgIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19oZWFkZXIpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMjAxLVx0XHRcdG1lbWNweSgodTggKil2aHRfb3AgJiM0MztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MjAyOlx0XHRcdFx0c2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2hlYWRlciksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTIwMy1cdFx0XHQgICAgICAgKHU4ICopYnNzX2Rlc2MtXHUwMDNlYmNuX3ZodF9vcGVyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMjUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoyNTM6aW50IG13aWZpZXhfY21kXzExYWNfY2ZnKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTI1NC1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjI1NTpcdFx0XHQgc3RydWN0IG13aWZpZXhfMTFhY192aHRfY2ZnICpjZmcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTI1Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yNzItLyogVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgQmxvY2tBQ0sgc2V0dXAgaW5mb3JtYXRpb24gZm9yIGdpdmVuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjI3MzogKiBtd2lmaWV4X3ByaXZhdGUgc3RydWN0dXJlIGZvciAxMWFjIGVuYWJsZWQgbmV0d29ya3MuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTI3NC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6Mjc1OnZvaWQgbXdpZmlleF9zZXRfMTFhY19iYV9wYXJhbXMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMjc2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTI5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6Mjk0OmJvb2wgbXdpZmlleF9pc19ic3NfaW5fMTFhY19tb2RlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTI5NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjI5NjpcdHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yOTctXHRzdHJ1Y3QgaWVlZTgwMjExX3ZodF9vcGVyYXRpb24gKnZodF9vcGVyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMzEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzozMTE6dTggbXdpZmlleF9nZXRfY2VudGVyX2ZyZXFfaW5kZXgoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggYmFuZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMzEyLVx0XHRcdFx0IHUzMiBwcmlfY2hhbiwgdTggY2hhbl9idylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oPTE0PWVudW0gdmh0X2NmZ19taXNjX2NvbmZpZyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuaC0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmg6MjU6aW50IG13aWZpZXhfY21kX2FwcGVuZF8xMWFjX3RsdihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuaDoyNjpcdFx0XHRcdHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuaC0yNy1cdFx0XHRcdHU4ICoqYnVmZmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmg6Mjg6aW50IG13aWZpZXhfY21kXzExYWNfY2ZnKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oLTI5LVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmg6MzA6XHRcdFx0IHN0cnVjdCBtd2lmaWV4XzExYWNfdmh0X2NmZyAqY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmg6MzE6dm9pZCBtd2lmaWV4X2ZpbGxfdmh0X2NhcF90bHYoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmgtMzItXHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwLCB1OCBiYW5kcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjEyOnZvaWQgbXdpZmlleF9pbml0XzExaF9wYXJhbXMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE4OmlubGluZSBpbnQgbXdpZmlleF9pc18xMWhfYWN0aXZlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYz0yNT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI2Om13aWZpZXhfMTFoX3Byb2Nlc3NfaW5mcmFfam9pbihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OCAqKmJ1ZmZlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNzpcdFx0XHQgICAgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI5Olx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaGVhZGVyICppZV9oZWFkZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MzA6XHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19wd3JfY2FwYWJpbGl0eSAqY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjMxOlx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfbG9jYWxfcHdyX2NvbnN0cmFpbnQgKmNvbnN0cmFpbnQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMzItXHRzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6Mzk6XHRyYWRpb190eXBlID0gbXdpZmlleF9iYW5kX3RvX3JhZGlvX3R5cGUoKHU4KSBic3NfZGVzYy1cdTAwM2Vic3NfYmFuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtNDAtXHRzYmFuZCA9IHByaXYtXHUwMDNld2Rldi53aXBoeS1cdTAwM2ViYW5kc1tyYWRpb190eXBlXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy00MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzo0MjpcdGNhcCA9IChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19wd3JfY2FwYWJpbGl0eSAqKSpidWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtNDMtXHRjYXAtXHUwMDNlaGVhZGVyLnR5cGUgPSBjcHVfdG9fbGUxNihXTEFOX0VJRF9QV1JfQ0FQQUJJTElUWSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjQ5Olx0Y29uc3RyYWludCA9IChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19sb2NhbF9wd3JfY29uc3RyYWludCAqKSpidWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtNTAtXHRjb25zdHJhaW50LVx1MDAzZWhlYWRlci50eXBlID0gY3B1X3RvX2xlMTYoV0xBTl9FSURfUFdSX0NPTlNUUkFJTlQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy01NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzo1NjpcdGllX2hlYWRlciA9IChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19oZWFkZXIgKikqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTU3LVx0aWVfaGVhZGVyLVx1MDAzZXR5cGUgPSBjcHVfdG9fbGUxNihUTFZfVFlQRV9QQVNTVEhST1VHSCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTY5LS8qIEVuYWJsZSBvciBkaXNhYmxlIHRoZSAxMWggZXh0ZW5zaW9ucyBpbiB0aGUgZmlybXdhcmUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzo3MDppbnQgbXdpZmlleF8xMWhfYWN0aXZhdGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgYm9vbCBmbGFnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTcxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtNzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6Nzg6XHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfU05NUF9NSUIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtNzktXHRcdFx0XHRIb3N0Q21kX0FDVF9HRU5fU0VULCBET1QxMUhfSSwgXHUwMDI2ZW5hYmxlLCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtODctICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6ODg6dm9pZCBtd2lmaWV4XzExaF9wcm9jZXNzX2pvaW4oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggKipidWZmZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6ODk6XHRcdFx0ICAgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtOTAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy05NC1cdFx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6OTU6XHRcdG13aWZpZXhfMTFoX2FjdGl2YXRlKHByaXYsIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTk2LVx0XHRwcml2LVx1MDAzZXN0YXRlXzExaC5pc18xMWhfYWN0aXZlID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy05Ny1cdFx0YnNzX2Rlc2MtXHUwMDNlY2FwX2luZm9fYml0bWFwIHw9IFdMQU5fQ0FQQUJJTElUWV9TUEVDVFJVTV9NR01UO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjk4Olx0XHRtd2lmaWV4XzExaF9wcm9jZXNzX2luZnJhX2pvaW4ocHJpdiwgYnVmZmVyLCBic3NfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtOTktXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTEwMC1cdFx0LyogRGVhY3RpdmF0ZSAxMWggZnVuY3Rpb25zIGluIHRoZSBmaXJtd2FyZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjEwMTpcdFx0bXdpZmlleF8xMWhfYWN0aXZhdGUocHJpdiwgZmFsc2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTEwMi1cdFx0cHJpdi1cdTAwM2VzdGF0ZV8xMWguaXNfMTFoX2FjdGl2ZSA9IGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMTAtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTExOnZvaWQgbXdpZmlleF9kZnNfY2FjX3dvcmtfcXVldWUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTExMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTExNC1cdHN0cnVjdCBkZWxheWVkX3dvcmsgKmRlbGF5ZWRfd29yayA9IHRvX2RlbGF5ZWRfd29yayh3b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxMTU6XHRzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2ID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxMTY6XHRcdFx0Y29udGFpbmVyX29mKGRlbGF5ZWRfd29yaywgc3RydWN0IG13aWZpZXhfcHJpdmF0ZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMTctXHRcdFx0XHQgICAgIGRmc19jYWNfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTEyMC1cdGlmIChwcml2LVx1MDAzZXdkZXYubGlua3NbMF0uY2FjX3N0YXJ0ZWQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxMjE6XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgTVNHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTEyMi1cdFx0XHQgICAgXCYjMzQ7Q0FDIHRpbWVyIGZpbmlzaGVkOyBObyByYWRhciBkZXRlY3RlZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTEzMS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxMzI6aW50IG13aWZpZXhfY21kX2lzc3VlX2NoYW5fcmVwb3J0X3JlcXVlc3Qoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMzMtXHRcdFx0XHRcdCAgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTM2LVx0c3RydWN0IGhvc3RfY21kX2RzX2NoYW5fcnB0X3JlcSAqY3JfcmVxID0gXHUwMDI2Y21kLVx1MDAzZXBhcmFtcy5jaGFuX3JwdF9yZXE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTM3Olx0c3RydWN0IG13aWZpZXhfcmFkYXJfcGFyYW1zICpyYWRhcl9wYXJhbXMgPSAodm9pZCAqKWRhdGFfYnVmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTEzOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTQ5LVx0aWYgKHJhZGFyX3BhcmFtcy1cdTAwM2VjYWNfdGltZV9tcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxNTA6XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgTVNHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE1MS1cdFx0XHQgICAgXCYjMzQ7MTFoOiBpc3N1aW5nIERGUyBSYWRhciBjaGVjayBmb3IgY2hhbm5lbD0lZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTUzLVx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE1NDpcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBNU0csIFwmIzM0O2NhbmNlbGxpbmcgQ0FDXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE1OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxNTk6aW50IG13aWZpZXhfc3RvcF9yYWRhcl9kZXRlY3Rpb24oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNjAtXHRcdFx0XHQgc3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICpjaGFuZGVmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE2MS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTYyOlx0c3RydWN0IG13aWZpZXhfcmFkYXJfcGFyYW1zIHJhZGFyX3BhcmFtcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTY0Olx0bWVtc2V0KFx1MDAyNnJhZGFyX3BhcmFtcywgMCwgc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X3JhZGFyX3BhcmFtcykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE2NS1cdHJhZGFyX3BhcmFtcy5jaGFuZGVmID0gY2hhbmRlZjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE2ODpcdHJldHVybiBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0NIQU5fUkVQT1JUX1JFUVVFU1QsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTY5LVx0XHRcdFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgXHUwMDI2cmFkYXJfcGFyYW1zLCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTc0LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE3NTp2b2lkIG13aWZpZXhfYWJvcnRfY2FjKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTc2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNzctXHRpZiAocHJpdi1cdTAwM2V3ZGV2LmxpbmtzWzBdLmNhY19zdGFydGVkKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTc4Olx0XHRpZiAobXdpZmlleF9zdG9wX3JhZGFyX2RldGVjdGlvbihwcml2LCBcdTAwMjZwcml2LVx1MDAzZWRmc19jaGFuZGVmKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxNzk6XHRcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBFUlJPUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xODAtXHRcdFx0XHQgICAgXCYjMzQ7ZmFpbGVkIHRvIHN0b3AgQ0FDIGluIEZXXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxODE6XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgTVNHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE4Mi1cdFx0XHQgICAgXCYjMzQ7QWJvcnRpbmcgZGVsYXllZCB3b3JrIGZvciBDQUMuXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTkzLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE5NDppbnQgbXdpZmlleF8xMWhfaGFuZGxlX2NoYW5ycHRfcmVhZHkoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xOTUtXHRcdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE5Ny1cdHN0cnVjdCBob3N0X2NtZF9kc19jaGFuX3JwdF9ldmVudCAqcnB0X2V2ZW50O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE5ODpcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2NoYW5fcnB0X2RhdGEgKnJwdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xOTktXHR1MTYgZXZlbnRfbGVuLCB0bHZfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yMDUtXHRpZiAobGUzMl90b19jcHUocnB0X2V2ZW50LVx1MDAzZXJlc3VsdCkgIT0gSG9zdENtZF9SRVNVTFRfT0spIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyMDY6XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgRVJST1IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjA3LVx0XHRcdCAgICBcJiMzNDtFcnJvciBpbiBjaGFubmVsIHJlcG9ydCBldmVudFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTIxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyMTE6XHR3aGlsZSAoZXZlbnRfbGVuIFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2hlYWRlcikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yMTItXHRcdHJwdCA9ICh2b2lkICopXHUwMDI2cnB0X2V2ZW50LVx1MDAzZXRsdmJ1Zjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjE3LVx0XHRcdGlmIChycHQtXHUwMDNlbWFwLnJhZGFyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjE4Olx0XHRcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBNU0csXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjE5LVx0XHRcdFx0XHQgICAgXCYjMzQ7UkFEQVIgRGV0ZWN0ZWQgb24gY2hhbm5lbCAlZCFcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTIzOC0vKiBIYW5kbGVyIGZvciByYWRhciBkZXRlY3RlZCBldmVudCBmcm9tIEZXLiovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjM5OmludCBtd2lmaWV4XzExaF9oYW5kbGVfcmFkYXJfZGV0ZWN0ZWQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNDAtXHRcdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI0MS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjQyOlx0c3RydWN0IG13aWZpZXhfcmFkYXJfZGV0X2V2ZW50ICpyZHJfZXZlbnQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjQzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjQ2Olx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBNU0csXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjQ3LVx0XHQgICAgXCYjMzQ7cmFkYXIgZGV0ZWN0ZWQ7IGluZGljYXRpbmcga2VybmVsXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNDg6XHRpZiAobXdpZmlleF9zdG9wX3JhZGFyX2RldGVjdGlvbihwcml2LCBcdTAwMjZwcml2LVx1MDAzZWRmc19jaGFuZGVmKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNDk6XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgRVJST1IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjUwLVx0XHRcdCAgICBcJiMzNDtGYWlsZWQgdG8gc3RvcCBDQUMgaW4gRldcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNTItXHRcdFx0ICAgICBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNTM6XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIE1TRywgXCYjMzQ7cmVnZG9tYWluOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNTQtXHRcdCAgICByZHJfZXZlbnQtXHUwMDNlcmVnX2RvbWFpbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjU1Olx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBNU0csIFwmIzM0O3JhZGFyIGRldGVjdGlvbiB0eXBlOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNTYtXHRcdCAgICByZHJfZXZlbnQtXHUwMDNlZGV0X3R5cGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNjUtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjY2OnZvaWQgbXdpZmlleF9kZnNfY2hhbl9zd193b3JrX3F1ZXVlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNjcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI2ODpcdHN0cnVjdCBtd2lmaWV4X3VhcF9ic3NfcGFyYW0gKmJzc19jZmc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjY5LVx0c3RydWN0IGRlbGF5ZWRfd29yayAqZGVsYXllZF93b3JrID0gdG9fZGVsYXllZF93b3JrKHdvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI3MDpcdHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYgPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI3MTpcdFx0XHRjb250YWluZXJfb2YoZGVsYXllZF93b3JrLCBzdHJ1Y3QgbXdpZmlleF9wcml2YXRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI3Mi1cdFx0XHRcdCAgICAgZGZzX2NoYW5fc3dfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI3NS1cdGlmICghYnNzX2NmZy1cdTAwM2ViZWFjb25fcGVyaW9kKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6Mjc2Olx0XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIEVSUk9SLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI3Ny1cdFx0XHQgICAgXCYjMzQ7Y2hhbm5lbCBzd2l0Y2g6IEFQIGFscmVhZHkgc3RvcHBlZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyODE6XHRtd2lmaWV4X3VhcF9zZXRfY2hhbm5lbChwcml2LCBic3NfY2ZnLCBwcml2LVx1MDAzZWRmc19jaGFuZGVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjgzOlx0aWYgKG13aWZpZXhfY29uZmlnX3N0YXJ0X3VhcChwcml2LCBic3NfY2ZnKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI4NDpcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBFUlJPUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yODUtXHRcdFx0ICAgIFwmIzM0O0ZhaWxlZCB0byBzdGFydCBBUCBhZnRlciBjaGFubmVsIHN3aXRjaFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyODk6XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIE1TRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yOTAtXHRcdCAgICBcJiMzNDtpbmRpY2F0aW5nIGNoYW5uZWwgc3dpdGNoIGNvbXBsZXRpb24gdG8ga2VybmVsXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjQtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MjU6aW50IG13aWZpZXhfZmlsbF9jYXBfaW5mbyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OCByYWRpb190eXBlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTI2LVx0XHRcdCAgc3RydWN0IGllZWU4MDIxMV9odF9jYXAgKmh0X2NhcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzItXHRpZiAoV0FSTl9PTl9PTkNFKCFzYmFuZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMzpcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBFUlJPUiwgXCYjMzQ7SW52YWxpZCByYWRpbyB0eXBlIVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzQtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy02OS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo3MDpzdGF0aWMgc3RydWN0IG13aWZpZXhfdHhfYmFfc3RyZWFtX3RibCAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NzE6bXdpZmlleF9nZXRfYmFfc3RhdHVzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NzI6XHRcdCAgICAgIGVudW0gbXdpZmlleF9iYV9zdGF0dXMgYmFfc3RhdHVzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTczLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo3NDpcdHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKnR4X2JhX3Rzcl90Ymw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNzUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTk1LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjk2OmludCBtd2lmaWV4X3JldF8xMW5fZGVsYmEoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy05Ny1cdFx0XHQgIHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy05OS1cdGludCB0aWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTAwOlx0c3RydWN0IG13aWZpZXhfdHhfYmFfc3RyZWFtX3RibCAqdHhfYmFfdGJsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEwMS1cdHN0cnVjdCBob3N0X2NtZF9kc18xMW5fZGVsYmEgKmRlbF9iYSA9IFx1MDAyNnJlc3AtXHUwMDNlcGFyYW1zLmRlbF9iYTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTA1LVx0aWYgKGRlbF9iYS1cdTAwM2VkZWxfcmVzdWx0ID09IEJBX1JFU1VMVF9TVUNDRVNTKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTA2Olx0XHRtd2lmaWV4X2RlbF9iYV90YmwocHJpdiwgdGlkLCBkZWxfYmEtXHUwMDNlcGVlcl9tYWNfYWRkcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMDctXHRcdFx0XHQgICBUWVBFX0RFTEJBX1NFTlQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxMTA6XHRcdHR4X2JhX3RibCA9IG13aWZpZXhfZ2V0X2JhX3N0YXR1cyhwcml2LCBCQV9TRVRVUF9JTlBST0dSRVNTKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMTEtXHRcdGlmICh0eF9iYV90YmwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTEyOlx0XHRcdG13aWZpZXhfc2VuZF9hZGRiYShwcml2LCB0eF9iYV90YmwtXHUwMDNldGlkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTExMy1cdFx0XHRcdFx0ICAgdHhfYmFfdGJsLVx1MDAzZXJhKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjEyMTpcdFx0bXdpZmlleF9jcmVhdGVfYmFfdGJsKHByaXYsIGRlbF9iYS1cdTAwM2VwZWVyX21hY19hZGRyLCB0aWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTIyLVx0XHRcdFx0ICAgICAgQkFfU0VUVVBfSU5QUk9HUkVTUyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjEyNDpcdFx0dHhfYmFfdGJsID0gbXdpZmlleF9nZXRfYmFfc3RhdHVzKHByaXYsIEJBX1NFVFVQX0lOUFJPR1JFU1MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEyNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMjYtXHRcdGlmICh0eF9iYV90YmwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTI3Olx0XHRcdG13aWZpZXhfZGVsX2JhX3RibChwcml2LCB0eF9iYV90YmwtXHUwMDNldGlkLCB0eF9iYV90YmwtXHUwMDNlcmEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTI4LVx0XHRcdFx0XHQgICBUWVBFX0RFTEJBX1NFTlQsIHRydWUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xNDEtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTQyOmludCBtd2lmaWV4X3JldF8xMW5fYWRkYmFfcmVxKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTQzLVx0XHRcdCAgICAgIHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xNDYtXHRzdHJ1Y3QgaG9zdF9jbWRfZHNfMTFuX2FkZGJhX3JzcCAqYWRkX2JhX3JzcCA9IFx1MDAyNnJlc3AtXHUwMDNlcGFyYW1zLmFkZF9iYV9yc3A7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTQ3Olx0c3RydWN0IG13aWZpZXhfdHhfYmFfc3RyZWFtX3RibCAqdHhfYmFfdGJsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE0ODpcdHN0cnVjdCBtd2lmaWV4X3JhX2xpc3RfdGJsICpyYV9saXN0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE0OS1cdHUxNiBibG9ja19hY2tfcGFyYW1fc2V0ID0gbGUxNl90b19jcHUoYWRkX2JhX3JzcC1cdTAwM2VibG9ja19hY2tfcGFyYW1fc2V0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE1NzpcdHRpZF9kb3duID0gbXdpZmlleF93bW1fZG93bmdyYWRlX3RpZChwcml2LCB0aWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE1ODpcdHJhX2xpc3QgPSBtd2lmaWV4X3dtbV9nZXRfcmFsaXN0X25vZGUocHJpdiwgdGlkX2Rvd24sIGFkZF9iYV9yc3AtXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTU5LVx0XHRwZWVyX21hY19hZGRyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTY0LVx0XHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTY1Olx0XHRtd2lmaWV4X2RlbF9iYV90YmwocHJpdiwgdGlkLCBhZGRfYmFfcnNwLVx1MDAzZXBlZXJfbWFjX2FkZHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTY2LVx0XHRcdFx0ICAgVFlQRV9ERUxCQV9TRU5ULCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE3MzpcdHR4X2JhX3RibCA9IG13aWZpZXhfZ2V0X2JhX3RibChwcml2LCB0aWQsIGFkZF9iYV9yc3AtXHUwMDNlcGVlcl9tYWNfYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTc0LVx0aWYgKHR4X2JhX3RibCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE3NTpcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBFVkVOVCwgXCYjMzQ7aW5mbzogQkEgc3RyZWFtIGNvbXBsZXRlXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xNzYtXHRcdHR4X2JhX3RibC1cdTAwM2ViYV9zdGF0dXMgPSBCQV9TRVRVUF9DT01QTEVURTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTg3LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxODg6XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgRVJST1IsIFwmIzM0O0JBIHN0cmVhbSBub3QgY3JlYXRlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTg5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yMDEtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MjAyOmludCBtd2lmaWV4X2NtZF9yZWNmZ190eF9idWYoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yMDMtXHRcdFx0ICAgICBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCBpbnQgY21kX2FjdGlvbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjE0LVx0Y2FzZSBIb3N0Q21kX0FDVF9HRU5fU0VUOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjIxNTpcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBDTUQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjE2LVx0XHRcdCAgICBcJiMzNDtjbWQ6IHNldCB0eF9idWY9JWRcXG5cJiMzNDssICpidWZfc2l6ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTIzNC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoyMzU6aW50IG13aWZpZXhfY21kX2Ftc2R1X2FnZ3JfY3RybChzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTIzNi1cdFx0XHRcdGludCBjbWRfYWN0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjIzNzpcdFx0XHRcdHN0cnVjdCBtd2lmaWV4X2RzXzExbl9hbXNkdV9hZ2dyX2N0cmwgKmFhX2N0cmwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjM4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjY3LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjI2ODppbnQgbXdpZmlleF9jbWRfMTFuX2NmZyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTI2OS1cdFx0XHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoyNzA6XHRcdFx0c3RydWN0IG13aWZpZXhfZHNfMTFuX3R4X2NmZyAqdHhjZmcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjcxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM9Mjk4PWludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjI5OTptd2lmaWV4X2NtZF9hcHBlbmRfMTFuX3RsdihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMwMDpcdFx0XHQgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMDEtXHRcdFx0ICAgdTggKipidWZmZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzAyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMDM6XHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19odGNhcCAqaHRfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMwNDpcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2h0aW5mbyAqaHRfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMDU6XHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19jaGFuX2xpc3RfcGFyYW1fc2V0ICpjaGFuX2xpc3Q7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzA2Olx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfMjA0MGJzc2NvICpic3NfY29fMjA0MDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMDc6XHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19leHRjYXAgKmV4dF9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzA4LVx0aW50IHJldF9sZW4gPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzE2Olx0cmFkaW9fdHlwZSA9IG13aWZpZXhfYmFuZF90b19yYWRpb190eXBlKCh1OCkgYnNzX2Rlc2MtXHUwMDNlYnNzX2JhbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMxNy1cdHNiYW5kID0gcHJpdi1cdTAwM2V3ZGV2LndpcGh5LVx1MDAzZWJhbmRzW3JhZGlvX3R5cGVdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMTktXHRpZiAoYnNzX2Rlc2MtXHUwMDNlYmNuX2h0X2NhcCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMyMDpcdFx0aHRfY2FwID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2h0Y2FwICopICpidWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzIxOlx0XHRtZW1zZXQoaHRfY2FwLCAwLCBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRjYXApKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMjItXHRcdGh0X2NhcC1cdTAwM2VoZWFkZXIudHlwZSA9IGNwdV90b19sZTE2KFdMQU5fRUlEX0hUX0NBUEFCSUxJVFkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMjQtXHRcdFx0XHRjcHVfdG9fbGUxNihzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9odF9jYXApKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMjU6XHRcdG1lbWNweSgodTggKikgaHRfY2FwICYjNDM7IHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19oZWFkZXIpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMyNi1cdFx0ICAgICAgICh1OCAqKWJzc19kZXNjLVx1MDAzZWJjbl9odF9jYXAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMjk6XHRcdG13aWZpZXhfZmlsbF9jYXBfaW5mbyhwcml2LCByYWRpb190eXBlLCBcdTAwMjZodF9jYXAtXHUwMDNlaHRfY2FwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMzAtXHRcdC8qIFVwZGF0ZSBIVDQwIGNhcGFiaWxpdHkgZnJvbSBjdXJyZW50IGNoYW5uZWwgaW5mb3JtYXRpb24gKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzMzLVx0XHRcdHU4IHJhZGlvID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMzQ6XHRcdFx0bXdpZmlleF9iYW5kX3RvX3JhZGlvX3R5cGUoYnNzX2Rlc2MtXHUwMDNlYnNzX2JhbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMzNS1cdFx0XHRpbnQgZnJlcSA9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozNjM6XHRcdCpidWZmZXIgJiM0Mzs9IHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19odGNhcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzY0Olx0XHRyZXRfbGVuICYjNDM7PSBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRjYXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM2NS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzY4LVx0XHRpZiAocHJpdi1cdTAwM2Vic3NfbW9kZSA9PSBOTDgwMjExX0lGVFlQRV9BREhPQykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjM2OTpcdFx0XHRodF9pbmZvID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2h0aW5mbyAqKSAqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM3MC1cdFx0XHRtZW1zZXQoaHRfaW5mbywgMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozNzE6XHRcdFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19odGluZm8pKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zNzItXHRcdFx0aHRfaW5mby1cdTAwM2VoZWFkZXIudHlwZSA9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM3OC1cdFx0XHRtZW1jcHkoKHU4ICopIGh0X2luZm8gJiM0MztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozNzk6XHRcdFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19oZWFkZXIpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM4MC1cdFx0XHQgICAgICAgKHU4ICopYnNzX2Rlc2MtXHUwMDNlYmNuX2h0X29wZXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozODk6XHRcdFx0KmJ1ZmZlciAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2h0aW5mbyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzkwOlx0XHRcdHJldF9sZW4gJiM0Mzs9IHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19odGluZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM5MS1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zOTMtXHRcdGNoYW5fbGlzdCA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6Mzk0Olx0XHRcdChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19jaGFuX2xpc3RfcGFyYW1fc2V0ICopICpidWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzk1LVx0XHRtZW1zZXQoY2hhbl9saXN0LCAwLCBzdHJ1Y3Rfc2l6ZShjaGFuX2xpc3QsIGNoYW5fc2Nhbl9wYXJhbSwgMSkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zOTctXHRcdGNoYW5fbGlzdC1cdTAwM2VoZWFkZXIubGVuID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozOTg6XHRcdFx0Y3B1X3RvX2xlMTYoc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2NoYW5fc2Nhbl9wYXJhbV9zZXQpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zOTktXHRcdGNoYW5fbGlzdC1cdTAwM2VjaGFuX3NjYW5fcGFyYW1bMF0uY2hhbl9udW1iZXIgPVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MDEtXHRcdGNoYW5fbGlzdC1cdTAwM2VjaGFuX3NjYW5fcGFyYW1bMF0ucmFkaW9fdHlwZSA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDAyOlx0XHRcdG13aWZpZXhfYmFuZF90b19yYWRpb190eXBlKCh1OCkgYnNzX2Rlc2MtXHUwMDNlYnNzX2JhbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQwMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDE2LVx0aWYgKGJzc19kZXNjLVx1MDAzZWJjbl9ic3NfY29fMjA0MCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQxNzpcdFx0YnNzX2NvXzIwNDAgPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfMjA0MGJzc2NvICopICpidWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDE4LVx0XHRtZW1zZXQoYnNzX2NvXzIwNDAsIDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDE5Olx0XHQgICAgICAgc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzXzIwNDBic3NjbykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQyMC1cdFx0YnNzX2NvXzIwNDAtXHUwMDNlaGVhZGVyLnR5cGUgPSBjcHVfdG9fbGUxNihXTEFOX0VJRF9CU1NfQ09FWF8yMDQwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDI0LVx0XHRtZW1jcHkoKHU4ICopIGJzc19jb18yMDQwICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDI1Olx0XHQgICAgICAgc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2hlYWRlciksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDI2LVx0XHQgICAgICAgYnNzX2Rlc2MtXHUwMDNlYmNuX2Jzc19jb18yMDQwICYjNDM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQyOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0MzA6XHRcdCpidWZmZXIgJiM0Mzs9IHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc18yMDQwYnNzY28pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQzMTpcdFx0cmV0X2xlbiAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzXzIwNDBic3Njbyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDMyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MzUtXHRcdGhkciA9ICh2b2lkICopYnNzX2Rlc2MtXHUwMDNlYmNuX2V4dF9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDM2Olx0XHRleHRfY2FwID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2V4dGNhcCAqKSAqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQzNzpcdFx0bWVtc2V0KGV4dF9jYXAsIDAsIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19leHRjYXApKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MzgtXHRcdGV4dF9jYXAtXHUwMDNlaGVhZGVyLnR5cGUgPSBjcHVfdG9fbGUxNihXTEFOX0VJRF9FWFRfQ0FQQUJJTElUWSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0NTE6XHRcdCpidWZmZXIgJiM0Mzs9IHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19leHRjYXApICYjNDM7IGhkci1cdTAwM2VsZW47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDUyOlx0XHRyZXRfbGVuICYjNDM7PSBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfZXh0Y2FwKSAmIzQzOyBoZHItXHUwMDNlbGVuO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ1My1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDYxLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQ2MjpzdGF0aWMgaW50IG13aWZpZXhfaXNfdHhfYmFfc3RyZWFtX3B0cl92YWxpZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQ2MzpcdFx0XHRcdHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKnR4X3RibF9wdHIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDY0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0NjU6XHRzdHJ1Y3QgbXdpZmlleF90eF9iYV9zdHJlYW1fdGJsICp0eF9iYV90c3JfdGJsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ2Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDgwLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQ4MTp2b2lkIG13aWZpZXhfMTFuX2RlbGV0ZV90eF9iYV9zdHJlYW1fdGJsX2VudHJ5KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDgyOlx0XHRcdFx0c3RydWN0IG13aWZpZXhfdHhfYmFfc3RyZWFtX3RibCAqdHhfYmFfdHNyX3RibClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00ODMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ4NC1cdGlmICghdHhfYmFfdHNyX3RibCBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0ODU6XHQgICAgbXdpZmlleF9pc190eF9iYV9zdHJlYW1fcHRyX3ZhbGlkKHByaXYsIHR4X2JhX3Rzcl90YmwpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ4Ni1cdFx0cmV0dXJuO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ4Ny1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwMTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODI4MwoJCQkJCQkJb3V0cHV0OiAxNTcKCQkJCQkJCXRob3VnaHRzOiAxMTA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZz1mYWxzZTogQW5hbHl6aW5nIGEgTWFydmVsbCBTRElPIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBTeXprYWxsZXIgaXMgZnV6emluZyBgbXdpZmlleGAgb3ZlciBVU0IuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBmdXp6ZXIgY291bGQgcG90ZW50aWFsbHkgcHJvdmlkZSBhcmJpdHJhcnkgVVNCIGRlc2NyaXB0b3JzIGFuZCByZXNwb25zZXMsIHRoYXQmIzM5O3MgZmluZS4gQnV0LCB0aGlzIHBhcnRpY3VsYXIgcGF0Y2gsIHRob3VnaCwgaXMgYWJvdXQgYSBgbWFydmVsbCxpbnZhbGlkLXJlZy1oaW50LWluLXJvbWAgZGV2aWNlIHByb3BlcnR5LgoKTm93LCB0aGlzIHByb3BlcnR5IGlzIHJlYWQgZnJvbSB0aGUgZGV2aWNlIHRyZWUuIEluIGEgVVNCLWVtdWxhdGVkIGVudmlyb25tZW50LCB3aGVyZSB0aGlzIGZ1enplciBpcyBydW5uaW5nLCBgYWRhcHRlci0mZ3Q7ZGV2YCBpcyB0aGUgVVNCIGRldmljZS4gVVNCIGRldmljZXMgKnVzdWFsbHkqIGRvbiYjMzk7dCBoYXZlIGRldmljZSB0cmVlIG5vZGVzIHVubGVzcyB0aGV5JiMzOTtyZSBoYXJkY29kZWQgb24gYSBib2FyZCwgbGlrZSB3aXRoIGEgbW9kaWZpZWQgZGV2aWNlIHRyZWUgaW4gYGFybWFkYS0zODUtbGlua3N5cy1yYW5nby5kdHNgLiBBaGEhIFRoZSBwYXRjaCAqZG9lcyogbW9kaWZ5IHRoaXMgdmVyeSBEVFMgZmlsZSwgc3BlY2lmaWNhbGx5IGFkZGluZyB0aGUgcHJvcGVydHkgdG8gYW4gU0RJTyBkZXZpY2Ugb24gYSBwYXJ0aWN1bGFyIGJvYXJkIChgd2lmaUAxYCB1bmRlciBgJmFtcDtzZGhjaWApLgoKU28sIHRoaXMgcHJvcGVydHkgaXMgc3BlY2lmaWNhbGx5IGZvciBhbiBTRElPIGRldmljZSBvbiBhIGNlcnRhaW4gQVJNIGJvYXJkLiBUaGUgY3JpdGljYWwgY29kZSBwYXRoIGlzOgoKYGBgYwoJCQkJaWYgKGNvdW50cnlfY29kZSAmYW1wOyZhbXA7CgkJCQkgICAgIWRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woYWRhcHRlci0mZ3Q7ZGV2LAoJCQkJCQkJICAgICAgICYjMzQ7bWFydmVsbCxpbnZhbGlkLXJlZy1oaW50LWluLXJvbSYjMzQ7KSAmYW1wOyZhbXA7CgkJCQkgICAgcmVndWxhdG9yeV9oaW50KHdpcGh5LCBjb3VudHJ5X2NvZGUpKQpgYGAKCklmIHRoZSBwcm9wZXJ0eSAqaXNuJiMzOTt0KiBwcmVzZW50LCB3aGljaCBpcyB0aGUgZGVmYXVsdCBmb3IgZXZlcnl0aGluZyBleGNlcHQgdGhhdCBzcGVjaWZpYyBib2FyZCwgaXQmIzM5O2xsIGNhbGwgYHJlZ3VsYXRvcnlfaGludGAuIFRoZSBwYXRjaCBpcyAqb25seSogYWRkaW5nIGEgd2F5IHRvICpza2lwKiBgcmVndWxhdG9yeV9oaW50YCBpZiB0aGUgcHJvcGVydHkgKmlzKiBwcmVzZW50LgoKQ29uc2lkZXJpbmcgdGhhdCB0aGUgZnV6emVyIHJ1bnMgb24geDg2XzY0IG9yIGFybTY0IGdlbmVyaWMgVk1zLCB0aGUgZGV2aWNlIHRyZWUgd29uJiMzOTt0IGhhdmUgdGhpcyBwcm9wZXJ0eSBzZXQuIFRoZXJlZm9yZSwgdGhlIGZ1enplciYjMzk7cyBleGVjdXRpb24gZmxvdyB3b24mIzM5O3QgY2hhbmdlLiBUaGUgY29uZGl0aW9uIGAhZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbCguLi4pYCB3aWxsIGFsd2F5cyBiZSBgdHJ1ZWAsIGFuZCBpdCB3aWxsIGV4ZWN1dGUgYHJlZ3VsYXRvcnlfaGludGAuCgpTbywgdGhlIG5leHQgcXVlc3Rpb24gaXM6IERvZXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyBmb3IgdGhlIGZ1enplcj8gTm8sIGJlY2F1c2UgaXQgZG9lc24mIzM5O3QgcnVuIHdpdGggdGhhdCBwYXJ0aWN1bGFyIGRldmljZSB0cmVlISBFdmVuIGlmIGl0IGRpZCwgc2tpcHBpbmcgYHJlZ3VsYXRvcnlfaGludGAgaXMgYSB2ZXJ5IG1pbm9yIGNoYW5nZSwgYXZvaWRpbmcgYSBmdW5jdGlvbiBjYWxsIHRvIHRoZSByZWd1bGF0b3J5IHN1YnN5c3RlbS4gSXMgdGhpcyBldmVuIHdvcnRoIGZ1enppbmc/IEl0JiMzOTtzIGp1c3QgYWRkaW5nIGEgZGV2aWNlIHRyZWUgcHJvcGVydHkgY2hlY2ssIGEgYm9hcmQtc3BlY2lmaWMgcXVpcmsuCgpUaGUgZnV6emluZyBydWxlcyBzdGF0ZTogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zLi4uQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7CgpUaGUgY29kZSBwYXRoIHdoZXJlIGBkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sYCByZXR1cm5zIGB0cnVlYCBpcyB1bnJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQgYmVjYXVzZSB0aGUgYG1hcnZlbGwsaW52YWxpZC1yZWctaGludC1pbi1yb21gIHByb3BlcnR5IGlzbiYjMzk7dCBwcmVzZW50LCBhbmQgdGhlIGZ1enplciBjYW4mIzM5O3QgaW5qZWN0IGl0IChhcyBmYXIgYXMgSSBrbm93KSBmb3IgVVNCL1NESU8gZGV2aWNlcy4gTm9wZSwgbm8gd2F5IHRvIGluamVjdCB0aGUgZGV2aWNlIHRyZWUgaGVyZS4gQWxzbywgZXZlbiBpZiBpdCAqd2FzKiByZWFjaGFibGUsIHRoZSBmdW5jdGlvbmFsIGNoYW5nZSBpcyB0cml2aWFsOiBhZGRpbmcgYSBib29sZWFuIGNoZWNrLgoKRG91YmxlLWNoZWNraW5nLCB0aGUgcGF0Y2ggbW9kaWZpZXMgYERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvbWFydmVsbCxzZDg3ODcueWFtbGAsIGBhcmNoL2FybS9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS0zODUtbGlua3N5cy1yYW5nby5kdHNgIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNgLiBUaGlzIGNvbmZpcm1zIGl0JiMzOTtzIGEgY2xhc3NpYyBib2FyZC1zcGVjaWZpYyBxdWlyayB3aGVyZSBpdCBza2lwcyBgcmVndWxhdG9yeV9oaW50YCB3aGVuIHRoZSBEVCBwcm9wZXJ0eSBpcyB0aGVyZS4gQmVjYXVzZSB0aGUgZnV6emVyIHdvbiYjMzk7dCBoYXZlIHRoYXQgRFQgcHJvcGVydHksIHRoZSBleGVjdXRpb24gZmxvdyBpcyBpZGVudGljYWwuIEV2ZW4gaWYgcmVhY2hhYmxlLCBpdCYjMzk7cyBqdXN0IHNraXBwaW5nIGEgc2luZ2xlIGZ1bmN0aW9uIGNhbGwuCgpCYXNlZCBvbiB0aGUgcnVsZXMsIHdoZXJlIEkmIzM5O3ZlIGdvdCAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSYjMzQ7IGFuZCBoZXJlIHRoYXQmIzM5O3MgYGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2xgIHJldHVybmluZyBgdHJ1ZWAsIGFuZCBiZWNhdXNlIHRoZSBmYWxzZSBicmFuY2ggaXMgdGhlIHNhbWUgYXMgdGhlIG9sZCBjb2RlLCBJJiMzOTttIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDAxOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGJvYXJkLXNwZWNpZmljIHF1aXJrIGZvciBNYXJ2ZWxsIFdpRmkgZGV2aWNlcyB0byBza2lwIGEgcmVndWxhdG9yeSBoaW50IGlmIGEgc3BlY2lmaWMgZGV2aWNlIHRyZWUgcHJvcGVydHkgKCYjMzk7bWFydmVsbCxpbnZhbGlkLXJlZy1oaW50LWluLXJvbSYjMzk7KSBpcyBwcmVzZW50LiBUaGlzIHByb3BlcnR5IGlzIG9ubHkgYWRkZWQgdG8gYSBzcGVjaWZpYyBBUk0gYm9hcmQmIzM5O3MgZGV2aWNlIHRyZWUgKGFybWFkYS0zODUtbGlua3N5cy1yYW5nbykuIEluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUvR0NFIHdoZXJlIGZ1enppbmcgb2NjdXJzLCB0aGlzIGRldmljZSB0cmVlIHByb3BlcnR5IHdpbGwgbm90IGJlIHByZXNlbnQsIG1lYW5pbmcgdGhlIGV4ZWN1dGlvbiBmbG93IHdpbGwgYmUgaWRlbnRpY2FsIHRvIHRoZSBwcmUtcGF0Y2ggYmVoYXZpb3IuIFRoZSBuZXcgY29kZSBwYXRoIChza2lwcGluZyB0aGUgcmVndWxhdG9yeSBoaW50KSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgc3RhbmRhcmQgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBib2FyZC1zcGVjaWZpYyBxdWlyayBmb3IgTWFydmVsbCBXaUZpIGRldmljZXMgdG8gc2tpcCBhIHJlZ3VsYXRvcnkgaGludCBpZiBhIHNwZWNpZmljIGRldmljZSB0cmVlIHByb3BlcnR5ICgmIzM5O21hcnZlbGwsaW52YWxpZC1yZWctaGludC1pbi1yb20mIzM5OykgaXMgcHJlc2VudC4gVGhpcyBwcm9wZXJ0eSBpcyBvbmx5IGFkZGVkIHRvIGEgc3BlY2lmaWMgQVJNIGJvYXJkJiMzOTtzIGRldmljZSB0cmVlIChhcm1hZGEtMzg1LWxpbmtzeXMtcmFuZ28pLiBJbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSB3aGVyZSBmdXp6aW5nIG9jY3VycywgdGhpcyBkZXZpY2UgdHJlZSBwcm9wZXJ0eSB3aWxsIG5vdCBiZSBwcmVzZW50LCBtZWFuaW5nIHRoZSBleGVjdXRpb24gZmxvdyB3aWxsIGJlIGlkZW50aWNhbCB0byB0aGUgcHJlLXBhdGNoIGJlaGF2aW9yLiBUaGUgbmV3IGNvZGUgcGF0aCAoc2tpcHBpbmcgdGhlIHJlZ3VsYXRvcnkgaGludCkgaXMgdW5yZWFjaGFibGUgZHVyaW5nIHN0YW5kYXJkIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwMTozNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDE6MzM6MzEuMzI1MTAyNjMzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEzOTk4NDUyNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgYm9hcmQtc3BlY2lmaWMgcXVpcmsgZm9yIE1hcnZlbGwgV2lGaSBkZXZpY2VzIHRvIHNraXAgYSByZWd1bGF0b3J5IGhpbnQgaWYgYSBzcGVjaWZpYyBkZXZpY2UgdHJlZSBwcm9wZXJ0eSAoJ21hcnZlbGwsaW52YWxpZC1yZWctaGludC1pbi1yb20nKSBpcyBwcmVzZW50LiBUaGlzIHByb3BlcnR5IGlzIG9ubHkgYWRkZWQgdG8gYSBzcGVjaWZpYyBBUk0gYm9hcmQncyBkZXZpY2UgdHJlZSAoYXJtYWRhLTM4NS1saW5rc3lzLXJhbmdvKS4gSW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS9HQ0Ugd2hlcmUgZnV6emluZyBvY2N1cnMsIHRoaXMgZGV2aWNlIHRyZWUgcHJvcGVydHkgd2lsbCBub3QgYmUgcHJlc2VudCwgbWVhbmluZyB0aGUgZXhlY3V0aW9uIGZsb3cgd2lsbCBiZSBpZGVudGljYWwgdG8gdGhlIHByZS1wYXRjaCBiZWhhdmlvci4gVGhlIG5ldyBjb2RlIHBhdGggKHNraXBwaW5nIHRoZSByZWd1bGF0b3J5IGhpbnQpIGlzIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDE6MzM6MzEuMzI1MTE1ODEzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTUwNjA0MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyN2M5OGYwYmRmZTBlOGNhZmIyMGNhODZhMTdmNmQzZmU2ODIwOTNiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDIxIDAxOjMzOjMwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvbWFydmVsbCxzZDg3ODcueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvbWFydmVsbCxzZDg3ODcueWFtbFxcbmluZGV4IDkzMGI3MDBiNzNkMDAuLjlmOTA1ZWY1YzJjMDcgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy9tYXJ2ZWxsLHNkODc4Ny55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy9tYXJ2ZWxsLHNkODc4Ny55YW1sXFxuQEAgLTU5LDYgKzU5LDEyIEBAIHByb3BlcnRpZXM6XFxuICAgICBkZXNjcmlwdGlvbjogQ2FsaWJyYXRpb24gZGF0YSBmb3Igc3ViLWJhbmQgMyBpbiB0aGUgNUdIeiBiYW5kLlxcbiAgICAgbWF4SXRlbXM6IDUwMlxcbiBcXG4rICBtYXJ2ZWxsLGludmFsaWQtcmVnLWhpbnQtaW4tcm9tOlxcbisgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvZmxhZ1xcbisgICAgZGVzY3JpcHRpb246XFxuKyAgICAgIFRoZSByZWd1bGF0b3J5IGhpbnQgaW4gUk9NIGNvbmZsaWN0cyB3aXRoIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24uXFxuKyAgICAgIEl0IHNob3VsZCBiZSBpZ25vcmVkLCBzbyB0aGUgcGxhdGZvcm0gcmVndWxhdG9yeSBkb21haW4gY2FuIGJlIHVzZWQuXFxuK1xcbiAgIG1hcnZlbGwsd2FrZXVwLXBpbjpcXG4gICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL3VpbnQzMlxcbiAgICAgZGVzY3JpcHRpb246XFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTM4NS1saW5rc3lzLXJhbmdvLmR0cyBiL2FyY2gvYXJtL2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTM4NS1saW5rc3lzLXJhbmdvLmR0c1xcbmluZGV4IDRhYjQ1ZjI5NGRlMjIuLjJiZjI5OTgxYTAzMTMgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtMzg1LWxpbmtzeXMtcmFuZ28uZHRzXFxuKysrIGIvYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtMzg1LWxpbmtzeXMtcmFuZ28uZHRzXFxuQEAgLTE2NSw2ICsxNjUsMTUgQEAgXFx1MDAyNnNkaGNpIHtcXG4gXFx0d3AtaW52ZXJ0ZWQ7XFxuIFxcdGJ1cy13aWR0aCA9IFxcdTAwM2M4XFx1MDAzZTtcXG4gXFx0c3RhdHVzID0gXFxcIm9rYXlcXFwiO1xcbitcXG4rXFx0I2FkZHJlc3MtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuK1xcdCNzaXplLWNlbGxzID0gXFx1MDAzYzBcXHUwMDNlO1xcbitcXG4rXFx0d2lmaUAxIHtcXG4rXFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJtYXJ2ZWxsLHNkODg5N1xcXCI7XFxuK1xcdFxcdHJlZyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rXFx0XFx0bWFydmVsbCxpbnZhbGlkLXJlZy1oaW50LWluLXJvbTtcXG4rXFx0fTtcXG4gfTtcXG4gXFxuIFxcdTAwMjZ1c2IzXzFfdmJ1cyB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNcXG5pbmRleCA3YTFiYTMyZjFmYjM2Li4yOTM4NzYzOTdiNjcwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNcXG5AQCAtNDg5Nyw3ICs0ODk3LDE0IEBAIGludCBtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuIFxcdFxcdFxcdFxcdGNvdW50cnlfY29kZSA9XFxuIFxcdFxcdFxcdFxcdFxcdG13aWZpZXhfMTFkX2NvZGVfMl9yZWdpb24oXFxuIFxcdFxcdFxcdFxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZXJlZ2lvbl9jb2RlKTtcXG4rXFxuK1xcdFxcdFxcdFxcdC8qIElmIHRoZSByZWcgaGludCBpbiBST00gY29uZmxpY3RzIHdpdGggcGxhdGZvcm1cXG4rXFx0XFx0XFx0XFx0ICogY29uZmlndXJhdGlvbiwgaXQgc2hvdWxkIGJlIGlnbm9yZWQsIHNvIHRoZVxcbitcXHRcXHRcXHRcXHQgKiBwbGF0Zm9ybSByZWd1bGF0b3J5IGRvbWFpbiBjYW4gYmUgdXNlZC5cXG4rXFx0XFx0XFx0XFx0ICovXFxuIFxcdFxcdFxcdFxcdGlmIChjb3VudHJ5X2NvZGUgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0XFx0XFx0ICAgICFkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGFkYXB0ZXItXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcXCJtYXJ2ZWxsLGludmFsaWQtcmVnLWhpbnQtaW4tcm9tXFxcIikgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0XFx0ICAgIHJlZ3VsYXRvcnlfaGludCh3aXBoeSwgY291bnRyeV9jb2RlKSlcXG4gXFx0XFx0XFx0XFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgRVJST1IsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICBcXFwicmVndWxhdG9yeV9oaW50KCkgZmFpbGVkXFxcXG5cXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDE6MzM6MzEuNzgxMzMzMTY5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjA5NDM1OTg4MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBib2FyZC1zcGVjaWZpYyBxdWlyayBmb3IgTWFydmVsbCBXaUZpIGRldmljZXMgdG8gc2tpcCBhIHJlZ3VsYXRvcnkgaGludCBpZiBhIHNwZWNpZmljIGRldmljZSB0cmVlIHByb3BlcnR5ICgnbWFydmVsbCxpbnZhbGlkLXJlZy1oaW50LWluLXJvbScpIGlzIHByZXNlbnQuIFRoaXMgcHJvcGVydHkgaXMgb25seSBhZGRlZCB0byBhIHNwZWNpZmljIEFSTSBib2FyZCdzIGRldmljZSB0cmVlIChhcm1hZGEtMzg1LWxpbmtzeXMtcmFuZ28pLiBJbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSB3aGVyZSBmdXp6aW5nIG9jY3VycywgdGhpcyBkZXZpY2UgdHJlZSBwcm9wZXJ0eSB3aWxsIG5vdCBiZSBwcmVzZW50LCBtZWFuaW5nIHRoZSBleGVjdXRpb24gZmxvdyB3aWxsIGJlIGlkZW50aWNhbCB0byB0aGUgcHJlLXBhdGNoIGJlaGF2aW9yLiBUaGUgbmV3IGNvZGUgcGF0aCAoc2tpcHBpbmcgdGhlIHJlZ3VsYXRvcnkgaGludCkgaXMgdW5yZWFjaGFibGUgZHVyaW5nIHN0YW5kYXJkIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyN2M5OGYwYmRmZTBlOGNhZmIyMGNhODZhMTdmNmQzZmU2ODIwOTNiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMjEgMDE6MzM6MzAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpcmVsZXNzL21hcnZlbGwsc2Q4Nzg3LnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpcmVsZXNzL21hcnZlbGwsc2Q4Nzg3LnlhbWxcbmluZGV4IDkzMGI3MDBiNzNkMDAuLjlmOTA1ZWY1YzJjMDcgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpcmVsZXNzL21hcnZlbGwsc2Q4Nzg3LnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvbWFydmVsbCxzZDg3ODcueWFtbFxuQEAgLTU5LDYgKzU5LDEyIEBAIHByb3BlcnRpZXM6XG4gICAgIGRlc2NyaXB0aW9uOiBDYWxpYnJhdGlvbiBkYXRhIGZvciBzdWItYmFuZCAzIGluIHRoZSA1R0h6IGJhbmQuXG4gICAgIG1heEl0ZW1zOiA1MDJcbiBcbisgIG1hcnZlbGwsaW52YWxpZC1yZWctaGludC1pbi1yb206XG4rICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL2ZsYWdcbisgICAgZGVzY3JpcHRpb246XG4rICAgICAgVGhlIHJlZ3VsYXRvcnkgaGludCBpbiBST00gY29uZmxpY3RzIHdpdGggcGxhdGZvcm0gY29uZmlndXJhdGlvbi5cbisgICAgICBJdCBzaG91bGQgYmUgaWdub3JlZCwgc28gdGhlIHBsYXRmb3JtIHJlZ3VsYXRvcnkgZG9tYWluIGNhbiBiZSB1c2VkLlxuK1xuICAgbWFydmVsbCx3YWtldXAtcGluOlxuICAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy91aW50MzJcbiAgICAgZGVzY3JpcHRpb246XG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtMzg1LWxpbmtzeXMtcmFuZ28uZHRzIGIvYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtMzg1LWxpbmtzeXMtcmFuZ28uZHRzXG5pbmRleCA0YWI0NWYyOTRkZTIyLi4yYmYyOTk4MWEwMzEzIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtMzg1LWxpbmtzeXMtcmFuZ28uZHRzXG4rKysgYi9hcmNoL2FybS9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS0zODUtbGlua3N5cy1yYW5nby5kdHNcbkBAIC0xNjUsNiArMTY1LDE1IEBAIFx1MDAyNnNkaGNpIHtcbiBcdHdwLWludmVydGVkO1xuIFx0YnVzLXdpZHRoID0gXHUwMDNjOFx1MDAzZTtcbiBcdHN0YXR1cyA9IFwib2theVwiO1xuK1xuK1x0I2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuK1x0I3NpemUtY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuK1xuK1x0d2lmaUAxIHtcbitcdFx0Y29tcGF0aWJsZSA9IFwibWFydmVsbCxzZDg4OTdcIjtcbitcdFx0cmVnID0gXHUwMDNjMVx1MDAzZTtcbitcdFx0bWFydmVsbCxpbnZhbGlkLXJlZy1oaW50LWluLXJvbTtcbitcdH07XG4gfTtcbiBcbiBcdTAwMjZ1c2IzXzFfdmJ1cyB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xuaW5kZXggN2ExYmEzMmYxZmIzNi4uMjkzODc2Mzk3YjY3MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xuQEAgLTQ4OTcsNyArNDg5NywxNCBAQCBpbnQgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuIFx0XHRcdFx0Y291bnRyeV9jb2RlID1cbiBcdFx0XHRcdFx0bXdpZmlleF8xMWRfY29kZV8yX3JlZ2lvbihcbiBcdFx0XHRcdFx0XHRhZGFwdGVyLVx1MDAzZXJlZ2lvbl9jb2RlKTtcbitcbitcdFx0XHRcdC8qIElmIHRoZSByZWcgaGludCBpbiBST00gY29uZmxpY3RzIHdpdGggcGxhdGZvcm1cbitcdFx0XHRcdCAqIGNvbmZpZ3VyYXRpb24sIGl0IHNob3VsZCBiZSBpZ25vcmVkLCBzbyB0aGVcbitcdFx0XHRcdCAqIHBsYXRmb3JtIHJlZ3VsYXRvcnkgZG9tYWluIGNhbiBiZSB1c2VkLlxuK1x0XHRcdFx0ICovXG4gXHRcdFx0XHRpZiAoY291bnRyeV9jb2RlIFx1MDAyNlx1MDAyNlxuK1x0XHRcdFx0ICAgICFkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGFkYXB0ZXItXHUwMDNlZGV2LFxuK1x0XHRcdFx0XHRcdFx0ICAgICAgIFwibWFydmVsbCxpbnZhbGlkLXJlZy1oaW50LWluLXJvbVwiKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHRcdCAgICByZWd1bGF0b3J5X2hpbnQod2lwaHksIGNvdW50cnlfY29kZSkpXG4gXHRcdFx0XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgRVJST1IsXG4gXHRcdFx0XHRcdFx0ICAgIFwicmVndWxhdG9yeV9oaW50KCkgZmFpbGVkXFxuXCIpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDE6MzM6MzEuNzgxMzM0NzY5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ4Mjg1NDgzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZlYXNpYmlsaXR5IG9mIGEgTWlub3IgV2lGaSBEcml2ZXIgQ2hhbmdlKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgYSBmZXcgZmlsZXM6IHRoZSBkZXZpY2UgdHJlZSBiaW5kaW5nIGZvciBhIE1hcnZlbGwgV2lGaSBjaGlwLCBhIGRldmljZSB0cmVlIGZpbGUgZm9yIGFuIEFybWFkYSBib2FyZCwgYW5kIHRoZSBgbXdpZmlleGAgd2lyZWxlc3MgZHJpdmVyIGl0c2VsZi4gVGhlIGtleSBjaGFuZ2UgaW4gYG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTFgIGlzIGEgY2hlY2sgZm9yIHRoaXMgbmV3IGRldmljZSBwcm9wZXJ0eSwgYG1hcnZlbGwsaW52YWxpZC1yZWctaGludC1pbi1yb21gLiBJZiBpdCdzIHRoZXJlLCBpdCBqdXN0IHNraXBzIGEgcmVndWxhdG9yeSBoaW50LiBQcmV0dHkgbWluaW1hbCwgcmVhbGx5LlxuXG5UaGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgd29ydGggZnV6emluZz8gVGhlIGRyaXZlciBpbiBxdWVzdGlvbiBpcyBgbXdpZmlleGAsIGEgTWFydmVsbCBXaUZpIGRyaXZlciwgd2hpY2ggaXMgc29tZXdoYXQgbmljaGUuIEl0IHJlcXVpcmVzIHNwZWNpZmljIGhhcmR3YXJlIOKAkyBTRElPLCBQQ0llLCBvciBVU0IgTWFydmVsbCBXaUZpIGNhcmRzLiBDYW4gSSBldmVuIGdldCBhdCBpdCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBMaWtlbHkgbm90IGRpcmVjdGx5LCBhcyBRRU1VIGRvZXNuJ3QgZW11bGF0ZSBNYXJ2ZWxsIFdpRmkuIEhvd2V2ZXIsIHRoZSBsaWdodGJ1bGIganVzdCB3ZW50IG9mZjogYG13aWZpZXhgIGhhcyBhIFVTQiBkcml2ZXIsIGBtd2lmaWV4X3VzYmAhIFRoYXQgb3BlbnMgdXAgcG9zc2liaWxpdGllcy5cblxuVVNCIGRldmljZXMgY2FuIG9mdGVuIGJlIGZ1enplZCB1c2luZyBgZHVtbXlfaGNkYCBvciBzeXprYWxsZXIncyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMuIElmIEkgY2FuIHJlYWNoIGBtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExYCB0aHJvdWdoIHRoZSBVU0IgcGF0aCwgdGhpcyBiZWNvbWVzIGEgbXVjaCBtb3JlIGludGVyZXN0aW5nIHRhcmdldC4gSXQgbG9va3MgbGlrZSBpdCdzIGNhbGxlZCBkdXJpbmcgYWRhcHRlciBpbml0aWFsaXphdGlvbiwgc28gdGhhdCBzZWVtcyBwcm9taXNpbmcuXG5cbk5vdywgbGV0J3MgZGl2ZSBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmNgIG9yIGEgc2ltaWxhciBmaWxlIHRvIGNvbmZpcm0gd2hldGhlciB0aGlzIGluaXRpYWxpemF0aW9uIHBhdGggaXMgVVNCLWFjY2Vzc2libGUgYW5kIHNlZSBpZiBJIGNhbiBmaWd1cmUgb3V0IGhvdyB0byB0cmlnZ2VyIHRoYXQgYG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTFgIGNhbGwgdGhyb3VnaCBhIFVTQiBkZXZpY2UuIElmIEkgY2FuLCB0aGlzIGNoYW5nZSwgZXZlbiB0aG91Z2ggaXQncyBzbWFsbCwgY291bGQgYmUgd29ydGggYSBmdXp6aW5nIGNhbXBhaWduLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzAwLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDE6MzM6MzguMjY0MTkzMTc0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2ODc4OTk4NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz00NjY4PWludCBtd2lmaWV4X2luaXRfY2hhbm5lbF9zY2FuX2dhcChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNDY5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo0Njk4OmludCBtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNDY5OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuaC0xNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuaDoxNTppbnQgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICopO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5oLTE2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz01MzU9c3RhdGljIGludCBfbXdpZmlleF9md19kcGMoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmaXJtd2FyZSwgdm9pZCAqY29udGV4dClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtNTg2LVxcdGlmICghYWRhcHRlci1cXHUwMDNld2lwaHkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjU4NzpcXHRcXHRpZiAobXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMShhZGFwdGVyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtNTg4LVxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwMTozMzozOS45NTIwOTgzODNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTU1MjcwMzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTFgIENhbGwqKlxuXG5Pa2F5LCBzbyBgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMWAgaXMgdHJpZ2dlcmVkIGZyb20gYF9td2lmaWV4X2Z3X2RwY2AuIFJpZ2h0LCB0aGF0J3MgdGhlIGZpcm13YXJlIGRvd25sb2FkIGNvbXBsZXRpb24gY2FsbGJhY2suIFRoYXTigJlzIGludGVyZXN0aW5nLiBJbW1lZGlhdGVseSwgSSdtIHRoaW5raW5nIGFib3V0IGZ1enppbmcgYW5kIHJlYWNoYWJpbGl0eS4gSWYgYG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTFgIGRlcGVuZHMgb24gYSBzdWNjZXNzZnVsIGZpcm13YXJlIGRvd25sb2FkLCBnZXR0aW5nIHRoZXJlIHdpdGggYSBmdXp6ZXIgKmNvdWxkKiBiZSB0cmlja3kuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZSBmdXp6ZXIgcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBmaXJtd2FyZSBkYXRhLCBvciBpZiB0aGUgZHJpdmVyIGNhbiBzb21laG93IHByb2NlZWQgd2l0aG91dCBpdC4gTXkgZ3V0IHNheXMgSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgX213aWZpZXhfZndfZHBjYCB0byBjb25maXJtIHRoaXMgcG90ZW50aWFsIGRlcGVuZGVuY3kgYW5kIHVuZGVyc3RhbmQgdGhlIHBhdGggdG8gdGhpcyBjcnVjaWFsIGZ1bmN0aW9uLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkzMywiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDAxOjMzOjQ0LjEwNzM3MTM1OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODE3MzgxNDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9td2lmaWV4X2Z3X2RwY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTUxMD1zdGF0aWMgdm9pZCBtd2lmaWV4X3Rlcm1pbmF0ZV93b3JrcXVldWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtNTM0LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6NTM1OnN0YXRpYyBpbnQgX213aWZpZXhfZndfZHBjKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZmlybXdhcmUsIHZvaWQgKmNvbnRleHQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy01MzYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz02ODk9c3RhdGljIHZvaWQgbXdpZmlleF9md19kcGMoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmaXJtd2FyZSwgdm9pZCAqY29udGV4dClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTY5MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzo2OTE6XFx0X213aWZpZXhfZndfZHBjKGZpcm13YXJlLCBjb250ZXh0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTY5Mi19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTE1MzA9bXdpZmlleF9yZWluaXRfc3coc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTU5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjE1OTM6XFx0LyogX213aWZpZXhfZndfZHBjKCkgZG9lcyBpdHMgb3duIGNsZWFudXAgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjE1OTQ6XFx0cmV0ID0gX213aWZpZXhfZndfZHBjKGFkYXB0ZXItXFx1MDAzZWZpcm13YXJlLCBhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTE1OTUtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwMTozMzo0NS45MjQ3NzAyNzNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjE1MjMxNzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOlxuXG4qKlBvdGVudGlhbCBGaXJtd2FyZSBEZXBlbmRlbmN5IEZhaWx1cmUqKlxuXG5SaWdodCwgc28gaWYgdGhlIGV4cGVjdGVkIGZpcm13YXJlIGltYWdlIGlzIHNvbWVob3cgbWlzc2luZyBvciBpbmFjY2Vzc2libGUsIGl0J3MgcHJldHR5IGxpa2VseSB0aGF0IHRoZSBgX213aWZpZXhfZndfZHBjYCBmdW5jdGlvbiB3aWxsIGp1c3QgY3JhcCBvdXQuIFRoYXQncyB0aGUgbW9zdCBwcm9iYWJsZSBmYWlsdXJlIHBvaW50LCBnaXZlbiB0aGUgY29udGV4dC4gTGV0J3MgZGlnIGludG8gdGhhdCBgX213aWZpZXhfZndfZHBjYCByb3V0aW5lIGFuZCBzZWUgZXhhY3RseSAqd2h5KiBpdCB3b3VsZCBmYWlsLiBHb3R0YSBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmN5IGNoYWluIGFuZCBhbnkgaW1wbGljaXQgYXNzdW1wdGlvbnMgaXQgbWFrZXMgYWJvdXQgdGhlIGZpcm13YXJlJ3MgYXZhaWxhYmlsaXR5LiBUaGVyZSdzIHByb2JhYmx5IHNvbWUgZXJyb3IgaGFuZGxpbmcgKG9yIGxhY2sgdGhlcmVvZikgaW4gdGhlcmUgdGhhdCdzIGNydWNpYWwgdG8gdW5kZXJzdGFuZC4gTmVlZCB0byBjb25maXJtIG15IGFzc3VtcHRpb24sIG9idmlvdXNseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY4MSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDAxOjMzOjQ5LjU0MDAwNDMyNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUzMCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1MzA6XFx0ICpcXG4gNTMxOlxcdCAqIFRoZSBtYWluIGluaXRpYWxpemF0aW9uIHN0ZXBzIGZvbGxvd2VkIGFyZSAtXFxuIDUzMjpcXHQgKiAgICAgIC0gRG93bmxvYWQgdGhlIGNvcnJlY3QgZmlybXdhcmUgdG8gY2FyZFxcbiA1MzM6XFx0ICogICAgICAtIElzc3VlIHRoZSBpbml0IGNvbW1hbmRzIHRvIGZpcm13YXJlXFxuIDUzNDpcXHQgKi9cXG4gNTM1OlxcdHN0YXRpYyBpbnQgX213aWZpZXhfZndfZHBjKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZmlybXdhcmUsIHZvaWQgKmNvbnRleHQpXFxuIDUzNjpcXHR7XFxuIDUzNzpcXHRcXHRpbnQgcmV0O1xcbiA1Mzg6XFx0XFx0Y2hhciBmbXRbNjRdO1xcbiA1Mzk6XFx0XFx0c3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciA9IGNvbnRleHQ7XFxuIDU0MDpcXHRcXHRzdHJ1Y3QgbXdpZmlleF9md19pbWFnZSBmdztcXG4gNTQxOlxcdFxcdGJvb2wgaW5pdF9mYWlsZWQgPSBmYWxzZTtcXG4gNTQyOlxcdFxcdHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXY7XFxuIDU0MzpcXHRcXHRzdHJ1Y3QgY29tcGxldGlvbiAqZndfZG9uZSA9IGFkYXB0ZXItXFx1MDAzZWZ3X2RvbmU7XFxuIDU0NDpcXHRcXG4gNTQ1OlxcdFxcdGlmICghZmlybXdhcmUpIHtcXG4gNTQ2OlxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxcbiA1NDc6XFx0XFx0XFx0XFx0ICAgIFxcXCJGYWlsZWQgdG8gZ2V0IGZpcm13YXJlICVzXFxcXG5cXFwiLCBhZGFwdGVyLVxcdTAwM2Vmd19uYW1lKTtcXG4gNTQ4OlxcdFxcdFxcdGdvdG8gZXJyX2RubGRfZnc7XFxuIDU0OTpcXHRcXHR9XFxuIDU1MDpcXHRcXG4gNTUxOlxcdFxcdG1lbXNldChcXHUwMDI2ZncsIDAsIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9md19pbWFnZSkpO1xcbiA1NTI6XFx0XFx0YWRhcHRlci1cXHUwMDNlZmlybXdhcmUgPSBmaXJtd2FyZTtcXG4gNTUzOlxcdFxcdGZ3LmZ3X2J1ZiA9ICh1OCAqKSBhZGFwdGVyLVxcdTAwM2VmaXJtd2FyZS1cXHUwMDNlZGF0YTtcXG4gNTU0OlxcdFxcdGZ3LmZ3X2xlbiA9IGFkYXB0ZXItXFx1MDAzZWZpcm13YXJlLVxcdTAwM2VzaXplO1xcbiA1NTU6XFx0XFxuIDU1NjpcXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlaWZfb3BzLmRubGRfZncpIHtcXG4gNTU3OlxcdFxcdFxcdHJldCA9IGFkYXB0ZXItXFx1MDAzZWlmX29wcy5kbmxkX2Z3KGFkYXB0ZXIsIFxcdTAwMjZmdyk7XFxuIDU1ODpcXHRcXHR9IGVsc2Uge1xcbiA1NTk6XFx0XFx0XFx0cmV0ID0gbXdpZmlleF9kbmxkX2Z3KGFkYXB0ZXIsIFxcdTAwMjZmdyk7XFxuIDU2MDpcXHRcXHR9XFxuIDU2MTpcXHRcXG4gNTYyOlxcdFxcdGlmIChyZXQgPT0gLTEpXFxuIDU2MzpcXHRcXHRcXHRnb3RvIGVycl9kbmxkX2Z3O1xcbiA1NjQ6XFx0XFxuIDU2NTpcXHRcXHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBNU0csIFxcXCJXTEFOIEZXIGlzIGFjdGl2ZVxcXFxuXFxcIik7XFxuIDU2NjpcXHRcXG4gNTY3OlxcdFxcdGlmIChjYWxfZGF0YV9jZmcpIHtcXG4gNTY4OlxcdFxcdFxcdGlmICgocmVxdWVzdF9maXJtd2FyZShcXHUwMDI2YWRhcHRlci1cXHUwMDNlY2FsX2RhdGEsIGNhbF9kYXRhX2NmZyxcXG4gNTY5OlxcdFxcdFxcdFxcdFxcdCAgICAgIGFkYXB0ZXItXFx1MDAzZWRldikpIFxcdTAwM2MgMClcXG4gNTcwOlxcdFxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxcbiA1NzE6XFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJDYWwgZGF0YSByZXF1ZXN0X2Zpcm13YXJlKCkgZmFpbGVkXFxcXG5cXFwiKTtcXG4gNTcyOlxcdFxcdH1cXG4gNTczOlxcdFxcbiA1NzQ6XFx0XFx0LyogZW5hYmxlIGhvc3QgaW50ZXJydXB0IGFmdGVyIGZ3IGRubGQgaXMgc3VjY2Vzc2Z1bCAqL1xcbiA1NzU6XFx0XFx0aWYgKGFkYXB0ZXItXFx1MDAzZWlmX29wcy5lbmFibGVfaW50KSB7XFxuIDU3NjpcXHRcXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlaWZfb3BzLmVuYWJsZV9pbnQoYWRhcHRlcikpXFxuIDU3NzpcXHRcXHRcXHRcXHRnb3RvIGVycl9kbmxkX2Z3O1xcbiA1Nzg6XFx0XFx0fVxcbiA1Nzk6XFx0XFxuIDU4MDpcXHRcXHRyZXQgPSBtd2lmaWV4X2luaXRfZncoYWRhcHRlcik7XFxuIDU4MTpcXHRcXHRpZiAocmV0ID09IC0xKVxcbiA1ODI6XFx0XFx0XFx0Z290byBlcnJfaW5pdF9mdztcXG4gNTgzOlxcdFxcbiA1ODQ6XFx0XFx0bWF5YmVfcXVpcmtfZndfZGlzYWJsZV9kcyhhZGFwdGVyKTtcXG4gNTg1OlxcdFxcbiA1ODY6XFx0XFx0aWYgKCFhZGFwdGVyLVxcdTAwM2V3aXBoeSkge1xcbiA1ODc6XFx0XFx0XFx0aWYgKG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTEoYWRhcHRlcikpIHtcXG4gNTg4OlxcdFxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxcbiA1ODk6XFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJjYW5ub3QgcmVnaXN0ZXIgd2l0aCBjZmc4MDIxMVxcXFxuXFxcIik7XFxuIDU5MDpcXHRcXHRcXHRcXHRnb3RvIGVycl9pbml0X2Z3O1xcbiA1OTE6XFx0XFx0XFx0fVxcbiA1OTI6XFx0XFx0fVxcbiA1OTM6XFx0XFxuIDU5NDpcXHRcXHRpZiAobXdpZmlleF9pbml0X2NoYW5uZWxfc2Nhbl9nYXAoYWRhcHRlcikpIHtcXG4gNTk1OlxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxcbiA1OTY6XFx0XFx0XFx0XFx0ICAgIFxcXCJjb3VsZCBub3QgaW5pdCBjaGFubmVsIHN0YXRzIHRhYmxlXFxcXG5cXFwiKTtcXG4gNTk3OlxcdFxcdFxcdGdvdG8gZXJyX2luaXRfY2hhbl9zY2FuO1xcbiA1OTg6XFx0XFx0fVxcbiA1OTk6XFx0XFxuIDYwMDpcXHRcXHRpZiAoZHJpdmVyX21vZGUpIHtcXG4gNjAxOlxcdFxcdFxcdGRyaXZlcl9tb2RlIFxcdTAwMjY9IE1XSUZJRVhfRFJJVkVSX01PREVfQklUTUFTSztcXG4gNjAyOlxcdFxcdFxcdGRyaXZlcl9tb2RlIHw9IE1XSUZJRVhfRFJJVkVSX01PREVfU1RBO1xcbiA2MDM6XFx0XFx0fVxcbiA2MDQ6XFx0XFxuIDYwNTpcXHRcXHRydG5sX2xvY2soKTtcXG4gNjA2OlxcdFxcdHdpcGh5X2xvY2soYWRhcHRlci1cXHUwMDNld2lwaHkpO1xcbiA2MDc6XFx0XFx0LyogQ3JlYXRlIHN0YXRpb24gaW50ZXJmYWNlIGJ5IGRlZmF1bHQgKi9cXG4gNjA4OlxcdFxcdHdkZXYgPSBtd2lmaWV4X2FkZF92aXJ0dWFsX2ludGYoYWRhcHRlci1cXHUwMDNld2lwaHksIFxcXCJtbGFuJWRcXFwiLCBORVRfTkFNRV9FTlVNLFxcbiA2MDk6XFx0XFx0XFx0XFx0XFx0XFx0Tkw4MDIxMV9JRlRZUEVfU1RBVElPTiwgTlVMTCk7XFxuIDYxMDpcXHRcXHRpZiAoSVNfRVJSKHdkZXYpKSB7XFxuIDYxMTpcXHRcXHRcXHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcXG4gNjEyOlxcdFxcdFxcdFxcdCAgICBcXFwiY2Fubm90IGNyZWF0ZSBkZWZhdWx0IFNUQSBpbnRlcmZhY2VcXFxcblxcXCIpO1xcbiA2MTM6XFx0XFx0XFx0d2lwaHlfdW5sb2NrKGFkYXB0ZXItXFx1MDAzZXdpcGh5KTtcXG4gNjE0OlxcdFxcdFxcdHJ0bmxfdW5sb2NrKCk7XFxuIDYxNTpcXHRcXHRcXHRnb3RvIGVycl9hZGRfaW50ZjtcXG4gNjE2OlxcdFxcdH1cXG4gNjE3OlxcdFxcbiA2MTg6XFx0XFx0aWYgKGRyaXZlcl9tb2RlIFxcdTAwMjYgTVdJRklFWF9EUklWRVJfTU9ERV9VQVApIHtcXG4gNjE5OlxcdFxcdFxcdHdkZXYgPSBtd2lmaWV4X2FkZF92aXJ0dWFsX2ludGYoYWRhcHRlci1cXHUwMDNld2lwaHksIFxcXCJ1YXAlZFxcXCIsIE5FVF9OQU1FX0VOVU0sXFxuIDYyMDpcXHRcXHRcXHRcXHRcXHRcXHRcXHROTDgwMjExX0lGVFlQRV9BUCwgTlVMTCk7XFxuIDYyMTpcXHRcXHRcXHRpZiAoSVNfRVJSKHdkZXYpKSB7XFxuIDYyMjpcXHRcXHRcXHRcXHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcXG4gNjIzOlxcdFxcdFxcdFxcdFxcdCAgICBcXFwiY2Fubm90IGNyZWF0ZSBBUCBpbnRlcmZhY2VcXFxcblxcXCIpO1xcbiA2MjQ6XFx0XFx0XFx0XFx0d2lwaHlfdW5sb2NrKGFkYXB0ZXItXFx1MDAzZXdpcGh5KTtcXG4gNjI1OlxcdFxcdFxcdFxcdHJ0bmxfdW5sb2NrKCk7XFxuIDYyNjpcXHRcXHRcXHRcXHRnb3RvIGVycl9hZGRfaW50ZjtcXG4gNjI3OlxcdFxcdFxcdH1cXG4gNjI4OlxcdFxcdH1cXG4gNjI5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwMTozMzo0OS41NDAxNTE0OTRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODcwMDY2NTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBNYXJ2ZWxsIFdpLUZpIEZpcm13YXJlIExvYWRpbmcgUHJvY2VzcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYF9td2lmaWV4X2Z3X2RwY2AgZnVuY3Rpb24gYW5kIGl0J3MgaW1tZWRpYXRlbHkgY2xlYXIgdGhhdCBpdCdzICpjb21wbGV0ZWx5KiByZWxpYW50IG9uIHRoZSBwcmVzZW5jZSBvZiBmaXJtd2FyZS4gSWYgYGZpcm13YXJlYCBpcyBOVUxMLCBpdCdzIGEgaGFyZCBmYWlsLiBUaGlzIG1lYW5zIHRoYXQgaWYgdGhlIGZpcm13YXJlIGlzbid0IHN1Y2Nlc3NmdWxseSBsb2FkZWQsIHdlJ2xsIG5ldmVyIGV2ZW4gZ2V0IHRvIGBtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExYC4gVGhhdCdzIGltcG9ydGFudCB0byByZW1lbWJlciBmb3IgZnV6emluZyBsYXRlci5cblxuVGhlIGltbWVkaWF0ZSBwcm9ibGVtIGlzLCBzeXprYWxsZXIgKnR5cGljYWxseSogZG9lc24ndCBwcm92aWRlIGFyYml0cmFyeSBmaXJtd2FyZSBibG9icyB1bmxlc3MgdGhleSBhcmUgd2l0aGluIGBsaW51eC1maXJtd2FyZWAgYW5kIGluY2x1ZGVkIGluIHRoZSBzeXprYWxsZXIgaW1hZ2UuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHdlIGV2ZW4gaGF2ZSB0aGUgTWFydmVsbCBmaXJtd2FyZSBpbiB0aGUgZW52aXJvbm1lbnQuIEV2ZW4gaWYgd2UgZG8sIHRoYXQncyBub3QgdGhlIGVuZCBvZiB0aGUgc3RvcnkuXG5cbkV2ZW4gaWYgd2UgKmhhdmUqIHRoZSBmaXJtd2FyZSBhdmFpbGFibGUsIHRoZSBVU0IgZnV6emVyIGlzIGdvaW5nIHRvIGhhdmUgdG8gZG8gYSAqcGVyZmVjdCogam9iIG9mIGVtdWxhdGluZyB0aGUgZmlybXdhcmUgZG93bmxvYWQgcHJvY2Vzcy4gVGhpcyBtZWFucyBjb3JyZWN0bHkgaW52b2tpbmcgZWl0aGVyIGBhZGFwdGVyLVx1MDAzZWlmX29wcy5kbmxkX2Z3KGFkYXB0ZXIsIFx1MDAyNmZ3KWAgb3IgYG13aWZpZXhfZG5sZF9mdyhhZGFwdGVyLCBcdTAwMjZmdylgLiBBbmQgdGhlbiBpdCBnZXRzIGV2ZW4gdHJpY2tpZXIuXG5cbkFmdGVyIHRoZSBmaXJtd2FyZSBpcyBkb3dubG9hZGVkLCBgbXdpZmlleF9pbml0X2Z3KGFkYXB0ZXIpYCBpcyBjYWxsZWQuICpUaGlzKiBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nIGJlY2F1c2UgdGhpcyBpcyB3aGVyZSB0aGUgZHJpdmVyIGFjdHVhbGx5ICp0YWxrcyogdG8gdGhlIGRldmljZS4gSXQgc2VuZHMgY29tbWFuZHMgYW5kLCBjcml0aWNhbGx5LCAqZXhwZWN0cyByZXNwb25zZXMqLiBJZiB0aGUgVVNCIGZ1enplciBpc24ndCBhYmxlIHRvIHByb3ZpZGUgdmFsaWQgcmVzcG9uc2VzIHRvIHRoZXNlIGluaXRpYWxpemF0aW9uIGNvbW1hbmRzLCBgbXdpZmlleF9pbml0X2Z3YCBpcyBnb2luZyB0byBmYWlsLiBUaGF0IHdvdWxkIHN0b3AgdGhlIGRyaXZlciBmcm9tIHdvcmtpbmcuXG5cbkkgbmVlZCB0byBkaXZlIGludG8gYG13aWZpZXhfaW5pdF9md2AgdG8gc2VlIHdoYXQgdGhvc2Ugc3BlY2lmaWMgY29tbWFuZHMgYXJlIGFuZCB3aGF0IGtpbmQgb2YgcmVzcG9uc2VzIHRoZSBkZXZpY2UgZXhwZWN0cy4gVGhpcyBpcyB0aGUgY3J1Y2lhbCBhcmVhIHRvIGludmVzdGlnYXRlIHRvIGlkZW50aWZ5IHBvdGVudGlhbCBmdXp6aW5nIHRhcmdldHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0NjIsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwMTozMzo1NS40MTAyMjIzMThaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDUwMDA3MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF9pbml0X2Z3XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9pbml0LmM9NDE3PWludCBtd2lmaWV4X2luaXRfbG9ja19saXN0KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaW5pdC5jLTQ4NC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaW5pdC5jOjQ4NTppbnQgbXdpZmlleF9pbml0X2Z3KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2luaXQuYy00ODYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz01MzU9c3RhdGljIGludCBfbXdpZmlleF9md19kcGMoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmaXJtd2FyZSwgdm9pZCAqY29udGV4dClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtNTc5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6NTgwOlxcdHJldCA9IG13aWZpZXhfaW5pdF9mdyhhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTU4MS1cXHRpZiAocmV0ID09IC0xKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMDU2PXZvaWQgbXdpZmlleF9mcmVlX3ByaXYoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMDU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTA1ODppbnQgbXdpZmlleF9pbml0X2Z3KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTA1OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDE6MzM6NTcuMTE1MjMwMzA3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4ODkxMDIyNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byBgbXdpZmlleF9pbml0X2Z3YC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBmdW5jdGlvbidzIHB1cnBvc2Ugd2l0aGluIHRoZSBicm9hZGVyIGRyaXZlciBjb250ZXh0LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCBhcmUgdGhlIGtleSBzdGVwcyBpbnZvbHZlZCBpbiBpbml0aWFsaXppbmcgdGhlIGZpcm13YXJlIGZvciB0aGUgTWFydmVsbCBXaS1GaSBhZGFwdGVyPyBUaGlzIGZ1bmN0aW9uIGlzIGNsZWFybHkgY3JpdGljYWwsIGFzIHRoZSBuYW1lIHN1Z2dlc3RzIGl0IGhhbmRsZXMgZmlybXdhcmUgaW5pdGlhbGl6YXRpb24sIHdoaWNoIGlzIGEgZm91bmRhdGlvbmFsIHN0ZXAgZm9yIGFueSBoYXJkd2FyZSBkcml2ZXIuIEknbSBleHBlY3RpbmcgdGhpcyBmdW5jdGlvbiB3aWxsIGFsbG9jYXRlIHJlc291cmNlcywgbG9hZCB0aGUgZmlybXdhcmUgaW1hZ2UsIGxpa2VseSBjb25maWd1cmUgc29tZSBoYXJkd2FyZSByZWdpc3RlcnMsIGFuZCBoYW5kbGUgYW55IG5lY2Vzc2FyeSBlcnJvciBjaGVja2luZy4gSSdtIGFsc28gYW50aWNpcGF0aW5nIGl0J2xsIGludGVyYWN0IHdpdGggc29tZSBvZiB0aGUgbW9yZSBnZW5lcmFsIGhhcmR3YXJlIGludGVyZmFjZSBmdW5jdGlvbnMuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgaG93IHdlbGwgbXkgYXNzdW1wdGlvbnMgYWxpZ24gd2l0aCB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU3OSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDAxOjM0OjAwLjAwNDM0MDM4MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDIxMzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2luaXQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0ODAsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDgwOlxcdCAqICAgICAgLSBJbml0aWFsaXplIHRoZSBhZGFwdGVyIHN0cnVjdHVyZVxcbiA0ODE6XFx0ICogICAgICAtIEluaXRpYWxpemUgdGhlIHByaXZhdGUgc3RydWN0dXJlXFxuIDQ4MjpcXHQgKiAgICAgIC0gQWRkIEJTUyBwcmlvcml0eSB0YWJsZXMgdG8gdGhlIGFkYXB0ZXIgc3RydWN0dXJlXFxuIDQ4MzpcXHQgKiAgICAgIC0gRm9yIGVhY2ggaW50ZXJmYWNlLCBzZW5kIHRoZSBpbml0IGNvbW1hbmRzIHRvIGZpcm13YXJlXFxuIDQ4NDpcXHQgKi9cXG4gNDg1OlxcdGludCBtd2lmaWV4X2luaXRfZncoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4gNDg2OlxcdHtcXG4gNDg3OlxcdFxcdGludCByZXQ7XFxuIDQ4ODpcXHRcXHRzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2O1xcbiA0ODk6XFx0XFx0dTggaSwgZmlyc3Rfc3RhID0gdHJ1ZTtcXG4gNDkwOlxcdFxcbiA0OTE6XFx0XFx0YWRhcHRlci1cXHUwMDNlaHdfc3RhdHVzID0gTVdJRklFWF9IV19TVEFUVVNfSU5JVElBTElaSU5HO1xcbiA0OTI6XFx0XFxuIDQ5MzpcXHRcXHQvKiBBbGxvY2F0ZSBtZW1vcnkgZm9yIG1lbWJlciBvZiBhZGFwdGVyIHN0cnVjdHVyZSAqL1xcbiA0OTQ6XFx0XFx0cmV0ID0gbXdpZmlleF9hbGxvY2F0ZV9hZGFwdGVyKGFkYXB0ZXIpO1xcbiA0OTU6XFx0XFx0aWYgKHJldClcXG4gNDk2OlxcdFxcdFxcdHJldHVybiAtMTtcXG4gNDk3OlxcdFxcbiA0OTg6XFx0XFx0LyogSW5pdGlhbGl6ZSBhZGFwdGVyIHN0cnVjdHVyZSAqL1xcbiA0OTk6XFx0XFx0bXdpZmlleF9pbml0X2FkYXB0ZXIoYWRhcHRlcik7XFxuIDUwMDpcXHRcXG4gNTAxOlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhZGFwdGVyLVxcdTAwM2Vwcml2X251bTsgaSsrKSB7XFxuIDUwMjpcXHRcXHRcXHRwcml2ID0gYWRhcHRlci1cXHUwMDNlcHJpdltpXTtcXG4gNTAzOlxcdFxcbiA1MDQ6XFx0XFx0XFx0LyogSW5pdGlhbGl6ZSBwcml2YXRlIHN0cnVjdHVyZSAqL1xcbiA1MDU6XFx0XFx0XFx0cmV0ID0gbXdpZmlleF9pbml0X3ByaXYocHJpdik7XFxuIDUwNjpcXHRcXHRcXHRpZiAocmV0KVxcbiA1MDc6XFx0XFx0XFx0XFx0cmV0dXJuIC0xO1xcbiA1MDg6XFx0XFx0fVxcbiA1MDk6XFx0XFx0aWYgKGFkYXB0ZXItXFx1MDAzZW1mZ19tb2RlKSB7XFxuIDUxMDpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2Vod19zdGF0dXMgPSBNV0lGSUVYX0hXX1NUQVRVU19SRUFEWTtcXG4gNTExOlxcdFxcdH0gZWxzZSB7XFxuIDUxMjpcXHRcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYWRhcHRlci1cXHUwMDNlcHJpdl9udW07IGkrKykge1xcbiA1MTM6XFx0XFx0XFx0XFx0cmV0ID0gbXdpZmlleF9zdGFfaW5pdF9jbWQoYWRhcHRlci1cXHUwMDNlcHJpdltpXSxcXG4gNTE0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIGZpcnN0X3N0YSk7XFxuIDUxNTpcXHRcXHRcXHRcXHRpZiAocmV0ID09IC0xKVxcbiA1MTY6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIC0xO1xcbiA1MTc6XFx0XFxuIDUxODpcXHRcXHRcXHRcXHRmaXJzdF9zdGEgPSBmYWxzZTtcXG4gNTE5OlxcdFxcdFxcdH1cXG4gNTIwOlxcdFxcdH1cXG4gNTIxOlxcdFxcbiA1MjI6XFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VjbWRfcGVuZGluZ19xX2xvY2spO1xcbiA1MjM6XFx0XFx0V0FSTl9PTighbGlzdF9lbXB0eShcXHUwMDI2YWRhcHRlci1cXHUwMDNlY21kX3BlbmRpbmdfcSkpO1xcbiA1MjQ6XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWNtZF9wZW5kaW5nX3FfbG9jayk7XFxuIDUyNTpcXHRcXG4gNTI2OlxcdFxcdGFkYXB0ZXItXFx1MDAzZWh3X3N0YXR1cyA9IE1XSUZJRVhfSFdfU1RBVFVTX1JFQURZO1xcbiA1Mjc6XFx0XFxuIDUyODpcXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlaWZfb3BzLmluaXRfZndfcG9ydClcXG4gNTI5OlxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWlmX29wcy5pbml0X2Z3X3BvcnQoYWRhcHRlcik7XFxuIDUzMDpcXHRcXG4gNTMxOlxcdFxcdHJldHVybiAwO1xcbiA1MzI6XFx0fVxcbiA1MzM6XFx0XFxuIDUzNDpcXHQvKlxcbiA1MzU6XFx0ICogVGhpcyBmdW5jdGlvbiBkZWxldGVzIHRoZSBCU1MgcHJpb3JpdHkgdGFibGVzLlxcbiA1MzY6XFx0ICpcXG4gNTM3OlxcdCAqIFRoZSBmdW5jdGlvbiB0cmF2ZXJzZXMgdGhyb3VnaCBhbGwgdGhlIGFsbG9jYXRlZCBCU1MgcHJpb3JpdHkgbm9kZXNcXG4gNTM4OlxcdCAqIGluIGV2ZXJ5IEJTUyBwcmlvcml0eSB0YWJsZSBhbmQgZnJlZXMgdGhlbS5cXG4gNTM5OlxcdCAqL1xcbiA1NDA6XFx0c3RhdGljIHZvaWQgbXdpZmlleF9kZWxldGVfYnNzX3ByaW9fdGJsKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuIDU0MTpcXHR7XFxuIDU0MjpcXHRcXHRpbnQgaTtcXG4gNTQzOlxcdFxcdHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbiA1NDQ6XFx0XFx0c3RydWN0IG13aWZpZXhfYnNzX3ByaW9fbm9kZSAqYnNzcHJpb19ub2RlLCAqdG1wX25vZGU7XFxuIDU0NTpcXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkO1xcbiA1NDY6XFx0XFx0c3BpbmxvY2tfdCAqbG9jazsgLyogYnNzIHByaW9yaXR5IGxvY2sgKi9cXG4gNTQ3OlxcdFxcbiA1NDg6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFkYXB0ZXItXFx1MDAzZXByaXZfbnVtOyArK2kpIHtcXG4gNTQ5OlxcdFxcdFxcdGhlYWQgPSBcXHUwMDI2YWRhcHRlci1cXHUwMDNlYnNzX3ByaW9fdGJsW2ldLmJzc19wcmlvX2hlYWQ7XFxuIDU1MDpcXHRcXHRcXHRsb2NrID0gXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWJzc19wcmlvX3RibFtpXS5ic3NfcHJpb19sb2NrO1xcbiA1NTE6XFx0XFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgSU5GTyxcXG4gNTUyOlxcdFxcdFxcdFxcdCAgICBcXFwiaW5mbzogZGVsZXRlIEJTUyBwcmlvcml0eSB0YWJsZSxcXFxcdFxcXCJcXG4gNTUzOlxcdFxcdFxcdFxcdCAgICBcXFwiYnNzX3R5cGUgPSAlZCwgYnNzX251bSA9ICVkLCBpID0gJWQsXFxcXHRcXFwiXFxuIDU1NDpcXHRcXHRcXHRcXHQgICAgXFxcImhlYWQgPSAlcFxcXFxuXFxcIixcXG4gNTU1OlxcdFxcdFxcdFxcdCAgICBwcml2LVxcdTAwM2Vic3NfdHlwZSwgcHJpdi1cXHUwMDNlYnNzX251bSwgaSwgaGVhZCk7XFxuIDU1NjpcXHRcXG4gNTU3OlxcdFxcdFxcdHtcXG4gNTU4OlxcdFxcdFxcdFxcdHNwaW5fbG9ja19iaChsb2NrKTtcXG4gNTU5OlxcdFxcdFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShic3NwcmlvX25vZGUsIHRtcF9ub2RlLCBoZWFkLFxcbiA1NjA6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IGxpc3QpIHtcXG4gNTYxOlxcdFxcdFxcdFxcdFxcdGlmIChic3NwcmlvX25vZGUtXFx1MDAzZXByaXYgPT0gcHJpdikge1xcbiA1NjI6XFx0XFx0XFx0XFx0XFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgSU5GTyxcXG4gNTYzOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBcXFwiaW5mbzogRGVsZXRlXFxcXHRcXFwiXFxuIDU2NDpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgXFxcIm5vZGUgJXAsIG5leHQgPSAlcFxcXFxuXFxcIixcXG4gNTY1OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBic3NwcmlvX25vZGUsIHRtcF9ub2RlKTtcXG4gNTY2OlxcdFxcdFxcdFxcdFxcdFxcdGxpc3RfZGVsKFxcdTAwMjZic3NwcmlvX25vZGUtXFx1MDAzZWxpc3QpO1xcbiA1Njc6XFx0XFx0XFx0XFx0XFx0XFx0a2ZyZWUoYnNzcHJpb19ub2RlKTtcXG4gNTY4OlxcdFxcdFxcdFxcdFxcdH1cXG4gNTY5OlxcdFxcdFxcdFxcdH1cXG4gNTcwOlxcdFxcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKGxvY2spO1xcbiA1NzE6XFx0XFx0XFx0fVxcbiA1NzI6XFx0XFx0fVxcbiA1NzM6XFx0fVxcbiA1NzQ6XFx0XFxuIDU3NTpcXHQvKlxcbiA1NzY6XFx0ICogVGhpcyBmdW5jdGlvbiBmcmVlcyB0aGUgcHJpdmF0ZSBzdHJ1Y3R1cmUsIGluY2x1ZGluZyBjbGVhbnNcXG4gNTc3OlxcdCAqIHVwIHRoZSBUWCBhbmQgUlggcXVldWVzIGFuZCBmcmVlcyB0aGUgQlNTIHByaW9yaXR5IHRhYmxlcy5cXG4gNTc4OlxcdCAqL1xcbiA1Nzk6XFx0dm9pZCBtd2lmaWV4X2ZyZWVfcHJpdihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwMTozNDowMC4wMDQ0ODQxODFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA0ODI2Njk5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZpcm13YXJlIEluaXRpYWxpemF0aW9uIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGluaXRpYWxpemF0aW9uIHJvdXRpbmUsIGFuZCBpdCBzZWVtcyB0aGUgY3JpdGljYWwgcGFydCBpcyB0aGlzIGBtd2lmaWV4X3N0YV9pbml0X2NtZGAgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2UgdGhhdCdzIHRoZSBwb2ludCB3aGVyZSB3ZSdyZSBhY3R1YWxseSBwdXNoaW5nIGNvbW1hbmRzIGRvd24gdG8gdGhlIGZpcm13YXJlLiBNYWtlcyBzZW5zZTsgdGhhdCdzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLlxuXG5NeSBpbml0aWFsIGNvbmNlcm4gaXMsIGlmIHRoYXQgZmFpbHMg4oCTIGlmIGBtd2lmaWV4X3N0YV9pbml0X2NtZGAgaGl0cyBhIHNuYWcg4oCTIHRoZSBlbnRpcmUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBib21icyBvdXQgd2l0aCBhIHJldHVybiBjb2RlIG9mIC0xIGZyb20gYG13aWZpZXhfaW5pdF9md2AuIFNvLCB0aGUgZmFpbHVyZSBvZiB0aGUgY29tbWFuZCB0byBleGVjdXRlIGlzIHRoZSBzaW5nbGUgcG9pbnQgb2YgZmFpbHVyZS5cblxuR2l2ZW4gdGhhdCwgSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiwgcmlnaHQgbm93LCBvbiB1bmRlcnN0YW5kaW5nIGV4YWN0bHkgd2hhdCBgbXdpZmlleF9zdGFfaW5pdF9jbWRgIGlzIGRvaW5nIGFuZCB3aGF0IGl0cyBmYWlsdXJlIG1vZGVzIGFyZS4gV2UgaGF2ZSB0byB1bmRlcnN0YW5kIHRoaXMgZnVuY3Rpb24gY29tcGxldGVseSwgYmVjYXVzZSBpdCBkaWN0YXRlcyB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIHRoZSBlbnRpcmUgcHJvY2Vzcy4gTm8gcm9vbSBmb3IgYW1iaWd1aXR5IGhlcmUuIExldCdzIGRpZyBpbiBhbmQgZmlndXJlIG91dCB3aHkgdGhpcyBtaWdodCBmYWlsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5Mjk4LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwMTozNDowNC4wNTI3NTMwOTlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NjQxNTcxMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF9zdGFfaW5pdF9jbWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MTA4Mz1td2lmaWV4X2NoYW5nZV92aWZfdG9fcDJwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xMTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjExMzA6XFx0aWYgKG13aWZpZXhfc3RhX2luaXRfY21kKHByaXYsIGZhbHNlKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xMTMxLVxcdFxcdHJldHVybiAtMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTExMzc9bXdpZmlleF9jaGFuZ2VfdmlmX3RvX3N0YV9hZGhvYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTE3MC1cXHRcXHRyZXR1cm4gLTE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTE3MTpcXHRpZiAobXdpZmlleF9zdGFfaW5pdF9jbWQocHJpdiwgZmFsc2UpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTExNzItXFx0XFx0cmV0dXJuIC0xO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MTE3OD1td2lmaWV4X2NoYW5nZV92aWZfdG9fYXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTEyMDctXFx0XFx0cmV0dXJuIC0xO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjEyMDg6XFx0aWYgKG13aWZpZXhfc3RhX2luaXRfY21kKHByaXYsIGZhbHNlKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xMjA5LVxcdFxcdHJldHVybiAtMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTI5ODA9c3RydWN0IHdpcmVsZXNzX2RldiAqbXdpZmlleF9hZGRfdmlydHVhbF9pbnRmKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0zMTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjMxMTc6XFx0XFx0cmV0ID0gbXdpZmlleF9zdGFfaW5pdF9jbWQocHJpdiwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTMxMTgtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9pbml0LmM9NDg1PWludCBtd2lmaWV4X2luaXRfZncoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9pbml0LmMtNTEyLVxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhZGFwdGVyLVxcdTAwM2Vwcml2X251bTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2luaXQuYzo1MTM6XFx0XFx0XFx0cmV0ID0gbXdpZmlleF9zdGFfaW5pdF9jbWQoYWRhcHRlci1cXHUwMDNlcHJpdltpXSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaW5pdC5jLTUxNC1cXHRcXHRcXHRcXHRcXHRcXHQgICBmaXJzdF9zdGEpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMTUyPXZvaWQgbXdpZmlleF9wcm9jZXNzX3VhcF90eHBkKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMTUzLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTE1NDppbnQgbXdpZmlleF9zdGFfaW5pdF9jbWQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqLCB1OCBmaXJzdF9zdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTE1NS1pbnQgbXdpZmlleF9jbWRfODAyXzExX3NjYW4oc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM9MjAzMz1pbnQgbXdpZmlleF9zdGFfcHJlcGFyZV9jbWQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdWludDE2X3QgY21kX25vLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yMzUzLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MjM1NDppbnQgbXdpZmlleF9zdGFfaW5pdF9jbWQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggZmlyc3Rfc3RhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjM1NS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDAxOjM0OjA1LjgxNjkxOTE0NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjE3MzMzMzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQW5hbHl6aW5nIGBtd2lmaWV4X3N0YV9pbml0X2NtZGAncyBDb21tYW5kIGFuZCBSZXBseSBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gYG13aWZpZXhfc3RhX2luaXRfY21kYC4gTXkgcHJpbWFyeSBjb25jZXJuIHJpZ2h0IG5vdyBpcyB0aGUgY29tbWFuZCBmbG93LiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgZnVuY3Rpb24gaW5pdGlhdGVzIGNvbW1hbmQgdHJhbnNtaXNzaW9uIHRvIHRoZSBoYXJkd2FyZSBhbmQgdGhlbiBwYXRpZW50bHkgd2FpdHMgZm9yIGEgcmVzcG9uc2UgZnJvbSB0aGUgZGV2aWNlLiBBcmUgd2UgZGVhbGluZyB3aXRoIGEgc3luY2hyb25vdXMgb3IgYXN5bmNocm9ub3VzIG1vZGVsIGhlcmU/IERvZXMgaXQgdXNlIHNvbWUga2luZCBvZiBpbnRlcm5hbCBtZWNoYW5pc20gdG8gdHJhY2sgdGhlIGNvbW1hbmQgSUQgYW5kIGNvcnJlbGF0ZSBpdCB3aXRoIHRoZSBldmVudHVhbCByZXBseSwgb3IgaXMgaXQgZG9pbmcgc29tZXRoaW5nIG1vcmUgbG93LWxldmVsPyBJJ20gbG9va2luZyBmb3IgY2x1ZXMgaW4gdGhlIGNvZGUgcmVnYXJkaW5nIGhvdyBpdCBoYW5kbGVzIHBvdGVudGlhbCB0aW1lb3V0cywgZXJyb3IgY29uZGl0aW9ucyBpZiBubyByZXBseSBpcyByZWNlaXZlZCB3aXRoaW4gYSByZWFzb25hYmxlIHRpbWVmcmFtZSwgb3IgaWYgaXQgZG9lcyBzb21lIGNsZXZlciBpbnRlcnJ1cHQgb3IgcG9sbGluZyBzZXR1cC4gQWxzbywgSSdtIGNoZWNraW5nIGlmIGl0IGNvcnJlY3RseSBzZXRzIGZsYWdzIHRvIGhhbmRsZSBjb21tYW5kIGNvbXBsZXRpb24gYW5kIHJlcGx5IHNpZ25hbGluZy4gVGhlIGdvYWwgaXMgdG8gc2VlIGlmIGl0cyBpbXBsZW1lbnRlZCBpbiBhIGNsZWFuIHdheSBvciBpZiBJIGhhdmUgdG8gbWFrZSBtb2RpZmljYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDc0NCwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDAxOjM0OjEwLjQzNDI1NjY5N1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODU5OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMzUwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjM1MDpcXHQgKiAgICAgIC0gU2V0IEFNU0RVIGFnZ3JlZ2F0aW9uIGNvbnRyb2xcXG4yMzUxOlxcdCAqICAgICAgLSBTZXQgMTFkIGNvbnRyb2xcXG4yMzUyOlxcdCAqICAgICAgLSBTZXQgTUFDIGNvbnRyb2wgKHRoaXMgbXVzdCBiZSB0aGUgbGFzdCBjb21tYW5kIHRvIGluaXRpYWxpemUgZmlybXdhcmUpXFxuMjM1MzpcXHQgKi9cXG4yMzU0OlxcdGludCBtd2lmaWV4X3N0YV9pbml0X2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OCBmaXJzdF9zdGEpXFxuMjM1NTpcXHR7XFxuMjM1NjpcXHRcXHRzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG4yMzU3OlxcdFxcdGludCByZXQ7XFxuMjM1ODpcXHRcXHRzdHJ1Y3QgbXdpZmlleF9kc18xMW5fYW1zZHVfYWdncl9jdHJsIGFtc2R1X2FnZ3JfY3RybDtcXG4yMzU5OlxcdFxcdHN0cnVjdCBtd2lmaWV4X2RzX2F1dG9fZHMgYXV0b19kcztcXG4yMzYwOlxcdFxcdGVudW0gc3RhdGVfMTFkX3Qgc3RhdGVfMTFkO1xcbjIzNjE6XFx0XFx0c3RydWN0IG13aWZpZXhfZHNfMTFuX3R4X2NmZyB0eF9jZmc7XFxuMjM2MjpcXHRcXHR1OCBzZGlvX3NwX3J4X2FnZ3JfZW5hYmxlO1xcbjIzNjM6XFx0XFx0dTE2IHBhY2tldF9hZ2dyX2VuYWJsZTtcXG4yMzY0OlxcdFxcdGludCBkYXRhO1xcbjIzNjU6XFx0XFxuMjM2NjpcXHRcXHRpZiAoZmlyc3Rfc3RhKSB7XFxuMjM2NzpcXHRcXHRcXHRpZiAocHJpdi1cXHUwMDNlYWRhcHRlci1cXHUwMDNlaWZhY2VfdHlwZSA9PSBNV0lGSUVYX1BDSUUpIHtcXG4yMzY4OlxcdFxcdFxcdFxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdixcXG4yMzY5OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBIb3N0Q21kX0NNRF9QQ0lFX0RFU0NfREVUQUlMUyxcXG4yMzcwOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBOVUxMLFxcbjIzNzE6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHRydWUpO1xcbjIzNzI6XFx0XFx0XFx0XFx0aWYgKHJldClcXG4yMzczOlxcdFxcdFxcdFxcdFxcdHJldHVybiAtMTtcXG4yMzc0OlxcdFxcdFxcdH1cXG4yMzc1OlxcdFxcbjIzNzY6XFx0XFx0XFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9GVU5DX0lOSVQsXFxuMjM3NzpcXHRcXHRcXHRcXHRcXHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgTlVMTCwgdHJ1ZSk7XFxuMjM3ODpcXHRcXHRcXHRpZiAocmV0KVxcbjIzNzk6XFx0XFx0XFx0XFx0cmV0dXJuIC0xO1xcbjIzODA6XFx0XFxuMjM4MTpcXHRcXHRcXHQvKiBEb3dubG9hZCBjYWxpYnJhdGlvbiBkYXRhIHRvIGZpcm13YXJlLlxcbjIzODI6XFx0XFx0XFx0ICogVGhlIGNhbC1kYXRhIGNhbiBiZSByZWFkIGZyb20gZGV2aWNlIHRyZWUgYW5kL29yXFxuMjM4MzpcXHRcXHRcXHQgKiBhIGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgZG93bmxvYWRlZCB0byBmaXJtd2FyZS5cXG4yMzg0OlxcdFxcdFxcdCAqL1xcbjIzODU6XFx0XFx0XFx0aWYgKGFkYXB0ZXItXFx1MDAzZWR0X25vZGUpIHtcXG4yMzg2OlxcdFxcdFxcdFxcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihhZGFwdGVyLVxcdTAwM2VkdF9ub2RlLFxcbjIzODc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IFxcXCJtYXJ2ZWxsLHdha2V1cC1waW5cXFwiLFxcbjIzODg6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZkYXRhKSA9PSAwKSB7XFxuMjM4OTpcXHRcXHRcXHRcXHRcXHRwcl9kZWJ1ZyhcXFwiV2FrZXVwIHBpbiA9IDB4JXhcXFxcblxcXCIsIGRhdGEpO1xcbjIzOTA6XFx0XFx0XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlaHNfY2ZnLmdwaW8gPSBkYXRhO1xcbjIzOTE6XFx0XFx0XFx0XFx0fVxcbjIzOTI6XFx0XFxuMjM5MzpcXHRcXHRcXHRcXHRtd2lmaWV4X2RubGRfZHRfY2ZnZGF0YShwcml2LCBhZGFwdGVyLVxcdTAwM2VkdF9ub2RlLFxcbjIzOTQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcIm1hcnZlbGwsY2FsZGF0YVxcXCIpO1xcbjIzOTU6XFx0XFx0XFx0fVxcbjIzOTY6XFx0XFxuMjM5NzpcXHRcXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlY2FsX2RhdGEpIHtcXG4yMzk4OlxcdFxcdFxcdFxcdG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfQ0ZHX0RBVEEsXFxuMjM5OTpcXHRcXHRcXHRcXHRcXHRcXHQgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgTlVMTCwgdHJ1ZSk7XFxuMjQwMDpcXHRcXHRcXHRcXHRyZWxlYXNlX2Zpcm13YXJlKGFkYXB0ZXItXFx1MDAzZWNhbF9kYXRhKTtcXG4yNDAxOlxcdFxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWNhbF9kYXRhID0gTlVMTDtcXG4yNDAyOlxcdFxcdFxcdH1cXG4yNDAzOlxcdFxcbjI0MDQ6XFx0XFxuMjQwNTpcXHRcXHRcXHQvKiBSZWFkIE1BQyBhZGRyZXNzIGZyb20gSFcgKi9cXG4yNDA2OlxcdFxcdFxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfR0VUX0hXX1NQRUMsXFxuMjQwNzpcXHRcXHRcXHRcXHRcXHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX0dFVCwgMCwgTlVMTCwgdHJ1ZSk7XFxuMjQwODpcXHRcXHRcXHRpZiAocmV0KVxcbjI0MDk6XFx0XFx0XFx0XFx0cmV0dXJuIC0xO1xcbjI0MTA6XFx0XFxuMjQxMTpcXHRcXHRcXHQvKiogU2V0IFNESU8gU2luZ2xlIFBvcnQgUlggQWdnciBJbmZvICovXFxuMjQxMjpcXHRcXHRcXHRpZiAocHJpdi1cXHUwMDNlYWRhcHRlci1cXHUwMDNlaWZhY2VfdHlwZSA9PSBNV0lGSUVYX1NESU8gXFx1MDAyNlxcdTAwMjZcXG4yNDEzOlxcdFxcdFxcdCAgICBJU1NVUFBfU0RJT19TUEFfRU5BQkxFRChwcml2LVxcdTAwM2VhZGFwdGVyLVxcdTAwM2Vmd19jYXBfaW5mbykgXFx1MDAyNlxcdTAwMjZcXG4yNDE0OlxcdFxcdFxcdCAgICAhcHJpdi1cXHUwMDNlYWRhcHRlci1cXHUwMDNlaG9zdF9kaXNhYmxlX3NkaW9fcnhfYWdncikge1xcbjI0MTU6XFx0XFx0XFx0XFx0c2Rpb19zcF9yeF9hZ2dyX2VuYWJsZSA9IHRydWU7XFxuMjQxNjpcXHRcXHRcXHRcXHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsXFxuMjQxNzpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgSG9zdENtZF9DTURfU0RJT19TUF9SWF9BR0dSX0NGRyxcXG4yNDE4OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLFxcbjI0MTk6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZzZGlvX3NwX3J4X2FnZ3JfZW5hYmxlLFxcbjI0MjA6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHRydWUpO1xcbjI0MjE6XFx0XFx0XFx0XFx0aWYgKHJldCkge1xcbjI0MjI6XFx0XFx0XFx0XFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgRVJST1IsXFxuMjQyMzpcXHRcXHRcXHRcXHRcXHRcXHQgICAgXFxcImVycm9yIHdoaWxlIGVuYWJsaW5nIFNQIGFnZ3JlZ2F0aW9uLi5kaXNhYmxlIGl0XFxcIik7XFxuMjQyNDpcXHRcXHRcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VzZGlvX3J4X2FnZ3JfZW5hYmxlID0gZmFsc2U7XFxuMjQyNTpcXHRcXHRcXHRcXHR9XFxuMjQyNjpcXHRcXHRcXHR9XFxuMjQyNzpcXHRcXG4yNDI4OlxcdFxcdFxcdC8qIFJlY29uZmlndXJlIHR4IGJ1ZiBzaXplICovXFxuMjQyOTpcXHRcXHRcXHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1JFQ09ORklHVVJFX1RYX0JVRkYsXFxuMjQzMDpcXHRcXHRcXHRcXHRcXHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCxcXG4yNDMxOlxcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2cHJpdi1cXHUwMDNlYWRhcHRlci1cXHUwMDNldHhfYnVmX3NpemUsIHRydWUpO1xcbjI0MzI6XFx0XFx0XFx0aWYgKHJldClcXG4yNDMzOlxcdFxcdFxcdFxcdHJldHVybiAtMTtcXG4yNDM0OlxcdFxcbjI0MzU6XFx0XFx0XFx0aWYgKHByaXYtXFx1MDAzZWJzc190eXBlICE9IE1XSUZJRVhfQlNTX1RZUEVfVUFQKSB7XFxuMjQzNjpcXHRcXHRcXHRcXHQvKiBFbmFibGUgSUVFRSBQUyBieSBkZWZhdWx0ICovXFxuMjQzNzpcXHRcXHRcXHRcXHRwcml2LVxcdTAwM2VhZGFwdGVyLVxcdTAwM2Vwc19tb2RlID0gTVdJRklFWF84MDJfMTFfUE9XRVJfTU9ERV9QU1A7XFxuMjQzODpcXHRcXHRcXHRcXHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsXFxuMjQzOTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgSG9zdENtZF9DTURfODAyXzExX1BTX01PREVfRU5ILFxcbjI0NDA6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIEVOX0FVVE9fUFMsIEJJVE1BUF9TVEFfUFMsIE5VTEwsXFxuMjQ0MTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgdHJ1ZSk7XFxuMjQ0MjpcXHRcXHRcXHRcXHRpZiAocmV0KVxcbjI0NDM6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIC0xO1xcbjI0NDQ6XFx0XFx0XFx0fVxcbjI0NDU6XFx0XFxuMjQ0NjpcXHRcXHRcXHRpZiAoZHJjcykge1xcbjI0NDc6XFx0XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlZHJjc19lbmFibGVkID0gdHJ1ZTtcXG4yNDQ4OlxcdFxcdFxcdFxcdGlmIChJU1NVUFBfRFJDU19FTkFCTEVEKGFkYXB0ZXItXFx1MDAzZWZ3X2NhcF9pbmZvKSlcXG4yNDQ5OlxcdFxcdFxcdFxcdFxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDE6MzQ6MTAuNDM0NDQ0NjY3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMTg1NDQ3OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBvdGVudGlhbCBgbXdpZmlleGAgVnVsbmVyYWJpbGl0aWVzIHdpdGggU3l6a2FsbGVyKipcblxuT2theSwgc28gYG13aWZpZXhfc2VuZF9jbWRgIHdpdGggdGhhdCBgdHJ1ZWAgYXJndW1lbnQ/IFRoYXQgbWVhbnMgaXQgKmFic29sdXRlbHkqIHdhaXRzIGZvciBhIHJlc3BvbnNlLiBObyByZXNwb25zZSwgYW5kIGl0J3MgZWl0aGVyIHRpbWluZyBvdXQgb3IganVzdCBwbGFpbiBmYWlsaW5nLiBUaGF0J3MgYSBrZXkgcG9pbnQuIE5vdywgdGhlIFVTQiBmdXp6ZXIuLi5yaWdodCwgSSByZW1lbWJlciB0aGF0LiBJdCAqY2FuKiBwcm92aWRlIHJlc3BvbnNlcyBpZiBpdCBrbm93cyB0aGUgcHJvdG9jb2wsIGJ1dCB1c3VhbGx5LCBpdCdzIGp1c3Qgc3Bld2luZyBvdXQgZ2FyYmFnZSBkYXRhLiBTbywgdGhlIHF1ZXN0aW9uIGlzLCBoYXMgc3l6a2FsbGVyIGV2ZW4gYmVlbiBzZXQgdXAgdG8gZWZmZWN0aXZlbHkgZnV6eiBgbXdpZmlleGA/IFRoYXQncyB3aGF0IEkgbmVlZCB0byBmaWd1cmUgb3V0LiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBmb3IgYW55IGV4aXN0aW5nIHN5emthbGxlciBidWcgcmVwb3J0cyBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBgbXdpZmlleGAuIFRoYXQgd291bGQgYmUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGVzdGFibGlzaCB0aGUgZXh0ZW50IG9mIGV4aXN0aW5nIGNvdmVyYWdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjcxOSwiT3V0cHV0VG9rZW5zIjoxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDAxOjM0OjE0Ljc1Mjk5MjgxOVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5NjE3NDQwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTg1NzcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbk1BSU5UQUlORVJTPTE1NzM2PVM6XFx0T2RkIEZpeGVzXFxuTUFJTlRBSU5FUlM6MTU3Mzc6RjpcXHRkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXFxuTUFJTlRBSU5FUlMtMTU3MzgtXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9yb2NrY2hpcC9yazMyODgtdmV5cm9uLWplcnJ5LmR0cz00Mz1cXHUwMDI2c2RpbzAge1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcmszMjg4LXZleXJvbi1qZXJyeS5kdHMtNDYtXFxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcmszMjg4LXZleXJvbi1qZXJyeS5kdHM6NDc6XFx0bXdpZmlleDogd2lmaUAxIHtcXG5hcmNoL2FybS9ib290L2R0cy9yb2NrY2hpcC9yazMyODgtdmV5cm9uLWplcnJ5LmR0cy00OC1cXHRcXHRjb21wYXRpYmxlID0gXFxcIm1hcnZlbGwsc2Q4ODk3XFxcIjtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDhtcC1iZWFjb24tc29tLmR0c2k9Mjg1PVxcdTAwMjZ1c2RoYzEge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OG1wLWJlYWNvbi1zb20uZHRzaS0zMDItXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OG1wLWJlYWNvbi1zb20uZHRzaTozMDM6XFx0bXdpZmlleDogd2lmaUAxIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXAtYmVhY29uLXNvbS5kdHNpLTMwNC1cXHRcXHRjb21wYXRpYmxlID0gXFxcIm1hcnZlbGwsc2Q4OTk3XFxcIjtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTczLWVsbS5kdHNpPTQxMj1cXHUwMDI2bW1jMyB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE3My1lbG0uZHRzaS00MzItXFxuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxNzMtZWxtLmR0c2k6NDMzOlxcdG13aWZpZXg6IHdpZmlAMSB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxNzMtZWxtLmR0c2ktNDM0LVxcdFxcdGNvbXBhdGlibGUgPSBcXFwibWFydmVsbCxzZDg4OTdcXFwiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnPTE2PXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhc190Zi9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZzoxNzpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZy0xOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvTWFrZWZpbGU9ND1vYmotJChDT05GSUdfTElCRVJUQVNfVEhJTkZJUk0pXFx0Kz0gbGliZXJ0YXNfdGYvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19NV0lGSUVYKVxcdCs9IG13aWZpZXgvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9NYWtlZmlsZS02LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYz00Mj1zdGF0aWMgdTE2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzo0Mzptd2lmaWV4X2NvbnZlcnRfbWNzbWFwX3RvX21heHJhdGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTQ0LVxcdFxcdFxcdFxcdCAgdTggYmFuZHMsIHUxNiBtY3NfbWFwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy00OC1cXHR1MzIgdXNyX3ZodF9jYXBfaW5mbyA9IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzo0OTpcXHRzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTUwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYz04NT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6ODY6bXdpZmlleF9maWxsX3ZodF9jYXBfaW5mbyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtODctXFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXAsIHU4IGJhbmRzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtODgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6ODk6XFx0c3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy05MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtOTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzo5OTp2b2lkIG13aWZpZXhfZmlsbF92aHRfY2FwX3RsdihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTAwLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCAqdmh0X2NhcCwgdTggYmFuZHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xMDEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTAyOlxcdHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTAzLVxcdHUxNiBtY3NfbWFwX3VzZXIsIG1jc19tYXBfcmVzcCwgbWNzX21hcF9yZXN1bHQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTEwNi1cXHQvKiBGaWxsIFZIVCBjYXAgaW5mbyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTA3OlxcdG13aWZpZXhfZmlsbF92aHRfY2FwX2luZm8ocHJpdiwgdmh0X2NhcCwgYmFuZHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTA4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxMjk6XFx0dG1wID0gbXdpZmlleF9jb252ZXJ0X21jc21hcF90b19tYXhyYXRlKHByaXYsIGJhbmRzLCBtY3NfbWFwX3Jlc3VsdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xMzAtXFx0dmh0X2NhcC1cXHUwMDNlc3VwcF9tY3MucnhfaGlnaGVzdCA9IGNwdV90b19sZTE2KHRtcCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE1MTpcXHR0bXAgPSBtd2lmaWV4X2NvbnZlcnRfbWNzbWFwX3RvX21heHJhdGUocHJpdiwgYmFuZHMsIG1jc19tYXBfcmVzdWx0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE1Mi1cXHR2aHRfY2FwLVxcdTAwM2VzdXBwX21jcy50eF9oaWdoZXN0ID0gY3B1X3RvX2xlMTYodG1wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTU3OmludCBtd2lmaWV4X2NtZF9hcHBlbmRfMTFhY190bHYoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE1ODpcXHRcXHRcXHQgICAgIHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTU5LVxcdFxcdFxcdCAgICAgdTggKipidWZmZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xNjAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTYxOlxcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX3ZodGNhcCAqdmh0X2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE2MjpcXHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19vcGVyX21vZGVfbnRmICpvcGVyX250ZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE2My1cXHRzdHJ1Y3QgaWVlZV90eXBlc19vcGVyX21vZGVfbnRmICppZWVlX29wZXJfbnRmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTY0OlxcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX3ZodF9vcGVyICp2aHRfb3A7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxNjU6XFx0c3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xNjYtXFx0dTggc3VwcF9jaHdkX3NldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTc2LVxcdGlmIChic3NfZGVzYy1cXHUwMDNlYmNuX3ZodF9jYXApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE3NzpcXHRcXHR2aHRfY2FwID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX3ZodGNhcCAqKSpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xNzgtXFx0XFx0bWVtc2V0KHZodF9jYXAsIDAsIHNpemVvZigqdmh0X2NhcCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xODEtXFx0XFx0XFx0XFx0Y3B1X3RvX2xlMTYoc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTgyOlxcdFxcdG1lbWNweSgodTggKil2aHRfY2FwICsgc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2hlYWRlciksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xODMtXFx0XFx0ICAgICAgICh1OCAqKWJzc19kZXNjLVxcdTAwM2ViY25fdmh0X2NhcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTg1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTg2OlxcdFxcdG13aWZpZXhfZmlsbF92aHRfY2FwX3Rsdihwcml2LCBcXHUwMDI2dmh0X2NhcC1cXHUwMDNldmh0X2NhcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE4Ny1cXHRcXHRcXHRcXHRcXHQgYnNzX2Rlc2MtXFx1MDAzZWJzc19iYW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTk0LVxcdFxcdGlmIChwcml2LVxcdTAwM2Vic3NfbW9kZSA9PSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxOTU6XFx0XFx0XFx0dmh0X29wID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX3ZodF9vcGVyICopKmJ1ZmZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE5Ni1cXHRcXHRcXHRtZW1zZXQodmh0X29wLCAwLCBzaXplb2YoKnZodF9vcCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xOTktXFx0XFx0XFx0dmh0X29wLVxcdTAwM2VoZWFkZXIubGVuICA9IGNwdV90b19sZTE2KHNpemVvZigqdmh0X29wKSAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoyMDA6XFx0XFx0XFx0XFx0ICAgICAgc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2hlYWRlcikpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMjAxLVxcdFxcdFxcdG1lbWNweSgodTggKil2aHRfb3AgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MjAyOlxcdFxcdFxcdFxcdHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19oZWFkZXIpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMjAzLVxcdFxcdFxcdCAgICAgICAodTggKilic3NfZGVzYy1cXHUwMDNlYmNuX3ZodF9vcGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yNTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoyNTM6aW50IG13aWZpZXhfY21kXzExYWNfY2ZnKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yNTQtXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MjU1OlxcdFxcdFxcdCBzdHJ1Y3QgbXdpZmlleF8xMWFjX3ZodF9jZmcgKmNmZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTI1Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTI3Mi0vKiBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBCbG9ja0FDSyBzZXR1cCBpbmZvcm1hdGlvbiBmb3IgZ2l2ZW5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjI3MzogKiBtd2lmaWV4X3ByaXZhdGUgc3RydWN0dXJlIGZvciAxMWFjIGVuYWJsZWQgbmV0d29ya3MuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yNzQtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoyNzU6dm9pZCBtd2lmaWV4X3NldF8xMWFjX2JhX3BhcmFtcyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMjc2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMjkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6Mjk0OmJvb2wgbXdpZmlleF9pc19ic3NfaW5fMTFhY19tb2RlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yOTUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6Mjk2OlxcdHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMjk3LVxcdHN0cnVjdCBpZWVlODAyMTFfdmh0X29wZXJhdGlvbiAqdmh0X29wZXI7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTMxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjMxMTp1OCBtd2lmaWV4X2dldF9jZW50ZXJfZnJlcV9pbmRleChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OCBiYW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMzEyLVxcdFxcdFxcdFxcdCB1MzIgcHJpX2NoYW4sIHU4IGNoYW5fYncpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oPTE0PWVudW0gdmh0X2NmZ19taXNjX2NvbmZpZyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oLTI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmg6MjU6aW50IG13aWZpZXhfY21kX2FwcGVuZF8xMWFjX3RsdihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmg6MjY6XFx0XFx0XFx0XFx0c3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuaC0yNy1cXHRcXHRcXHRcXHR1OCAqKmJ1ZmZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuaDoyODppbnQgbXdpZmlleF9jbWRfMTFhY19jZmcoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oLTI5LVxcdFxcdFxcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oOjMwOlxcdFxcdFxcdCBzdHJ1Y3QgbXdpZmlleF8xMWFjX3ZodF9jZmcgKmNmZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuaDozMTp2b2lkIG13aWZpZXhfZmlsbF92aHRfY2FwX3RsdihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmgtMzItXFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwLCB1OCBiYW5kcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjEyOnZvaWQgbXdpZmlleF9pbml0XzExaF9wYXJhbXMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxODppbmxpbmUgaW50IG13aWZpZXhfaXNfMTFoX2FjdGl2ZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM9MjU9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjY6bXdpZmlleF8xMWhfcHJvY2Vzc19pbmZyYV9qb2luKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHU4ICoqYnVmZmVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNzpcXHRcXHRcXHQgICAgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6Mjk6XFx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaGVhZGVyICppZV9oZWFkZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjMwOlxcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX3B3cl9jYXBhYmlsaXR5ICpjYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjMxOlxcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2xvY2FsX3B3cl9jb25zdHJhaW50ICpjb25zdHJhaW50O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0zMi1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0zOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6Mzk6XFx0cmFkaW9fdHlwZSA9IG13aWZpZXhfYmFuZF90b19yYWRpb190eXBlKCh1OCkgYnNzX2Rlc2MtXFx1MDAzZWJzc19iYW5kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtNDAtXFx0c2JhbmQgPSBwcml2LVxcdTAwM2V3ZGV2LndpcGh5LVxcdTAwM2ViYW5kc1tyYWRpb190eXBlXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjQyOlxcdGNhcCA9IChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19wd3JfY2FwYWJpbGl0eSAqKSpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTQzLVxcdGNhcC1cXHUwMDNlaGVhZGVyLnR5cGUgPSBjcHVfdG9fbGUxNihXTEFOX0VJRF9QV1JfQ0FQQUJJTElUWSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjQ5OlxcdGNvbnN0cmFpbnQgPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfbG9jYWxfcHdyX2NvbnN0cmFpbnQgKikqYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy01MC1cXHRjb25zdHJhaW50LVxcdTAwM2VoZWFkZXIudHlwZSA9IGNwdV90b19sZTE2KFdMQU5fRUlEX1BXUl9DT05TVFJBSU5UKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy01NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6NTY6XFx0aWVfaGVhZGVyID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2hlYWRlciAqKSpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTU3LVxcdGllX2hlYWRlci1cXHUwMDNldHlwZSA9IGNwdV90b19sZTE2KFRMVl9UWVBFX1BBU1NUSFJPVUdIKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy02OS0vKiBFbmFibGUgb3IgZGlzYWJsZSB0aGUgMTFoIGV4dGVuc2lvbnMgaW4gdGhlIGZpcm13YXJlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjcwOmludCBtd2lmaWV4XzExaF9hY3RpdmF0ZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBib29sIGZsYWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTcxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy03Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6Nzg6XFx0cmV0dXJuIG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX1NOTVBfTUlCLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy03OS1cXHRcXHRcXHRcXHRIb3N0Q21kX0FDVF9HRU5fU0VULCBET1QxMUhfSSwgXFx1MDAyNmVuYWJsZSwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtODctICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjg4OnZvaWQgbXdpZmlleF8xMWhfcHJvY2Vzc19qb2luKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHU4ICoqYnVmZmVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzo4OTpcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtOTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTk0LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzo5NTpcXHRcXHRtd2lmaWV4XzExaF9hY3RpdmF0ZShwcml2LCB0cnVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtOTYtXFx0XFx0cHJpdi1cXHUwMDNlc3RhdGVfMTFoLmlzXzExaF9hY3RpdmUgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy05Ny1cXHRcXHRic3NfZGVzYy1cXHUwMDNlY2FwX2luZm9fYml0bWFwIHw9IFdMQU5fQ0FQQUJJTElUWV9TUEVDVFJVTV9NR01UO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzo5ODpcXHRcXHRtd2lmaWV4XzExaF9wcm9jZXNzX2luZnJhX2pvaW4ocHJpdiwgYnVmZmVyLCBic3NfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTk5LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTEwMC1cXHRcXHQvKiBEZWFjdGl2YXRlIDExaCBmdW5jdGlvbnMgaW4gdGhlIGZpcm13YXJlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjEwMTpcXHRcXHRtd2lmaWV4XzExaF9hY3RpdmF0ZShwcml2LCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTEwMi1cXHRcXHRwcml2LVxcdTAwM2VzdGF0ZV8xMWguaXNfMTFoX2FjdGl2ZSA9IGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTExMC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTExOnZvaWQgbXdpZmlleF9kZnNfY2FjX3dvcmtfcXVldWUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMTIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTExNC1cXHRzdHJ1Y3QgZGVsYXllZF93b3JrICpkZWxheWVkX3dvcmsgPSB0b19kZWxheWVkX3dvcmsod29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjExNTpcXHRzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2ID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTE2OlxcdFxcdFxcdGNvbnRhaW5lcl9vZihkZWxheWVkX3dvcmssIHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTExNy1cXHRcXHRcXHRcXHQgICAgIGRmc19jYWNfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTIwLVxcdGlmIChwcml2LVxcdTAwM2V3ZGV2LmxpbmtzWzBdLmNhY19zdGFydGVkKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjEyMTpcXHRcXHRtd2lmaWV4X2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBNU0csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTEyMi1cXHRcXHRcXHQgICAgXFxcIkNBQyB0aW1lciBmaW5pc2hlZDsgTm8gcmFkYXIgZGV0ZWN0ZWRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTEzMS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTMyOmludCBtd2lmaWV4X2NtZF9pc3N1ZV9jaGFuX3JlcG9ydF9yZXF1ZXN0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTEzMy1cXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTM2LVxcdHN0cnVjdCBob3N0X2NtZF9kc19jaGFuX3JwdF9yZXEgKmNyX3JlcSA9IFxcdTAwMjZjbWQtXFx1MDAzZXBhcmFtcy5jaGFuX3JwdF9yZXE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjEzNzpcXHRzdHJ1Y3QgbXdpZmlleF9yYWRhcl9wYXJhbXMgKnJhZGFyX3BhcmFtcyA9ICh2b2lkICopZGF0YV9idWY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTEzOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNDktXFx0aWYgKHJhZGFyX3BhcmFtcy1cXHUwMDNlY2FjX3RpbWVfbXMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE1MDpcXHRcXHRtd2lmaWV4X2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBNU0csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE1MS1cXHRcXHRcXHQgICAgXFxcIjExaDogaXNzdWluZyBERlMgUmFkYXIgY2hlY2sgZm9yIGNoYW5uZWw9JWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTUzLVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTU0OlxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIE1TRywgXFxcImNhbmNlbGxpbmcgQ0FDXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTU1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE1OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTU5OmludCBtd2lmaWV4X3N0b3BfcmFkYXJfZGV0ZWN0aW9uKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE2MC1cXHRcXHRcXHRcXHQgc3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICpjaGFuZGVmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNjEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxNjI6XFx0c3RydWN0IG13aWZpZXhfcmFkYXJfcGFyYW1zIHJhZGFyX3BhcmFtcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxNjQ6XFx0bWVtc2V0KFxcdTAwMjZyYWRhcl9wYXJhbXMsIDAsIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9yYWRhcl9wYXJhbXMpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTY1LVxcdHJhZGFyX3BhcmFtcy5jaGFuZGVmID0gY2hhbmRlZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE2ODpcXHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9DSEFOX1JFUE9SVF9SRVFVRVNULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNjktXFx0XFx0XFx0XFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgXFx1MDAyNnJhZGFyX3BhcmFtcywgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTc0LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxNzU6dm9pZCBtd2lmaWV4X2Fib3J0X2NhYyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNzYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNzctXFx0aWYgKHByaXYtXFx1MDAzZXdkZXYubGlua3NbMF0uY2FjX3N0YXJ0ZWQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTc4OlxcdFxcdGlmIChtd2lmaWV4X3N0b3BfcmFkYXJfZGV0ZWN0aW9uKHByaXYsIFxcdTAwMjZwcml2LVxcdTAwM2VkZnNfY2hhbmRlZikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE3OTpcXHRcXHRcXHRtd2lmaWV4X2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBFUlJPUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTgwLVxcdFxcdFxcdFxcdCAgICBcXFwiZmFpbGVkIHRvIHN0b3AgQ0FDIGluIEZXXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTgxOlxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIE1TRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTgyLVxcdFxcdFxcdCAgICBcXFwiQWJvcnRpbmcgZGVsYXllZCB3b3JrIGZvciBDQUMuXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xOTMtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE5NDppbnQgbXdpZmlleF8xMWhfaGFuZGxlX2NoYW5ycHRfcmVhZHkoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTk1LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xOTctXFx0c3RydWN0IGhvc3RfY21kX2RzX2NoYW5fcnB0X2V2ZW50ICpycHRfZXZlbnQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE5ODpcXHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19jaGFuX3JwdF9kYXRhICpycHQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE5OS1cXHR1MTYgZXZlbnRfbGVuLCB0bHZfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTIwNS1cXHRpZiAobGUzMl90b19jcHUocnB0X2V2ZW50LVxcdTAwM2VyZXN1bHQpICE9IEhvc3RDbWRfUkVTVUxUX09LKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjIwNjpcXHRcXHRtd2lmaWV4X2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBFUlJPUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjA3LVxcdFxcdFxcdCAgICBcXFwiRXJyb3IgaW4gY2hhbm5lbCByZXBvcnQgZXZlbnRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTIxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjExOlxcdHdoaWxlIChldmVudF9sZW4gXFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2hlYWRlcikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjEyLVxcdFxcdHJwdCA9ICh2b2lkICopXFx1MDAyNnJwdF9ldmVudC1cXHUwMDNldGx2YnVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTIxNy1cXHRcXHRcXHRpZiAocnB0LVxcdTAwM2VtYXAucmFkYXIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjE4OlxcdFxcdFxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIE1TRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjE5LVxcdFxcdFxcdFxcdFxcdCAgICBcXFwiUkFEQVIgRGV0ZWN0ZWQgb24gY2hhbm5lbCAlZCFcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjM4LS8qIEhhbmRsZXIgZm9yIHJhZGFyIGRldGVjdGVkIGV2ZW50IGZyb20gRlcuKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjM5OmludCBtd2lmaWV4XzExaF9oYW5kbGVfcmFkYXJfZGV0ZWN0ZWQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjQwLVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI0MS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI0MjpcXHRzdHJ1Y3QgbXdpZmlleF9yYWRhcl9kZXRfZXZlbnQgKnJkcl9ldmVudDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjQzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjQ2OlxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIE1TRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjQ3LVxcdFxcdCAgICBcXFwicmFkYXIgZGV0ZWN0ZWQ7IGluZGljYXRpbmcga2VybmVsXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjQ4OlxcdGlmIChtd2lmaWV4X3N0b3BfcmFkYXJfZGV0ZWN0aW9uKHByaXYsIFxcdTAwMjZwcml2LVxcdTAwM2VkZnNfY2hhbmRlZikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI0OTpcXHRcXHRtd2lmaWV4X2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBFUlJPUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjUwLVxcdFxcdFxcdCAgICBcXFwiRmFpbGVkIHRvIHN0b3AgQ0FDIGluIEZXXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNTItXFx0XFx0XFx0ICAgICBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjUzOlxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIE1TRywgXFxcInJlZ2RvbWFpbjogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI1NC1cXHRcXHQgICAgcmRyX2V2ZW50LVxcdTAwM2VyZWdfZG9tYWluKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjU1OlxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIE1TRywgXFxcInJhZGFyIGRldGVjdGlvbiB0eXBlOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjU2LVxcdFxcdCAgICByZHJfZXZlbnQtXFx1MDAzZWRldF90eXBlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNjUtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI2Njp2b2lkIG13aWZpZXhfZGZzX2NoYW5fc3dfd29ya19xdWV1ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI2Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI2ODpcXHRzdHJ1Y3QgbXdpZmlleF91YXBfYnNzX3BhcmFtICpic3NfY2ZnO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNjktXFx0c3RydWN0IGRlbGF5ZWRfd29yayAqZGVsYXllZF93b3JrID0gdG9fZGVsYXllZF93b3JrKHdvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNzA6XFx0c3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI3MTpcXHRcXHRcXHRjb250YWluZXJfb2YoZGVsYXllZF93b3JrLCBzdHJ1Y3QgbXdpZmlleF9wcml2YXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNzItXFx0XFx0XFx0XFx0ICAgICBkZnNfY2hhbl9zd193b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNzUtXFx0aWYgKCFic3NfY2ZnLVxcdTAwM2ViZWFjb25fcGVyaW9kKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI3NjpcXHRcXHRtd2lmaWV4X2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBFUlJPUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjc3LVxcdFxcdFxcdCAgICBcXFwiY2hhbm5lbCBzd2l0Y2g6IEFQIGFscmVhZHkgc3RvcHBlZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyODE6XFx0bXdpZmlleF91YXBfc2V0X2NoYW5uZWwocHJpdiwgYnNzX2NmZywgcHJpdi1cXHUwMDNlZGZzX2NoYW5kZWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI4MzpcXHRpZiAobXdpZmlleF9jb25maWdfc3RhcnRfdWFwKHByaXYsIGJzc19jZmcpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI4NDpcXHRcXHRtd2lmaWV4X2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBFUlJPUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjg1LVxcdFxcdFxcdCAgICBcXFwiRmFpbGVkIHRvIHN0YXJ0IEFQIGFmdGVyIGNoYW5uZWwgc3dpdGNoXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI4OTpcXHRtd2lmaWV4X2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBNU0csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI5MC1cXHRcXHQgICAgXFxcImluZGljYXRpbmcgY2hhbm5lbCBzd2l0Y2ggY29tcGxldGlvbiB0byBrZXJuZWxcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTI0LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoyNTppbnQgbXdpZmlleF9maWxsX2NhcF9pbmZvKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHU4IHJhZGlvX3R5cGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTI2LVxcdFxcdFxcdCAgc3RydWN0IGllZWU4MDIxMV9odF9jYXAgKmh0X2NhcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMi1cXHRpZiAoV0FSTl9PTl9PTkNFKCFzYmFuZCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzM6XFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgRVJST1IsIFxcXCJJbnZhbGlkIHJhZGlvIHR5cGUhXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzQtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNjktICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjcwOnN0YXRpYyBzdHJ1Y3QgbXdpZmlleF90eF9iYV9zdHJlYW1fdGJsICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NzE6bXdpZmlleF9nZXRfYmFfc3RhdHVzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjcyOlxcdFxcdCAgICAgIGVudW0gbXdpZmlleF9iYV9zdGF0dXMgYmFfc3RhdHVzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy03My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjc0OlxcdHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKnR4X2JhX3Rzcl90Ymw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTc1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTk1LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo5NjppbnQgbXdpZmlleF9yZXRfMTFuX2RlbGJhKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTk3LVxcdFxcdFxcdCAgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtOTktXFx0aW50IHRpZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTAwOlxcdHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKnR4X2JhX3RibDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTAxLVxcdHN0cnVjdCBob3N0X2NtZF9kc18xMW5fZGVsYmEgKmRlbF9iYSA9IFxcdTAwMjZyZXNwLVxcdTAwM2VwYXJhbXMuZGVsX2JhO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEwNS1cXHRpZiAoZGVsX2JhLVxcdTAwM2VkZWxfcmVzdWx0ID09IEJBX1JFU1VMVF9TVUNDRVNTKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjEwNjpcXHRcXHRtd2lmaWV4X2RlbF9iYV90YmwocHJpdiwgdGlkLCBkZWxfYmEtXFx1MDAzZXBlZXJfbWFjX2FkZHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEwNy1cXHRcXHRcXHRcXHQgICBUWVBFX0RFTEJBX1NFTlQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxMTA6XFx0XFx0dHhfYmFfdGJsID0gbXdpZmlleF9nZXRfYmFfc3RhdHVzKHByaXYsIEJBX1NFVFVQX0lOUFJPR1JFU1MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMTEtXFx0XFx0aWYgKHR4X2JhX3RibClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTEyOlxcdFxcdFxcdG13aWZpZXhfc2VuZF9hZGRiYShwcml2LCB0eF9iYV90YmwtXFx1MDAzZXRpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTEzLVxcdFxcdFxcdFxcdFxcdCAgIHR4X2JhX3RibC1cXHUwMDNlcmEpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTIxOlxcdFxcdG13aWZpZXhfY3JlYXRlX2JhX3RibChwcml2LCBkZWxfYmEtXFx1MDAzZXBlZXJfbWFjX2FkZHIsIHRpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTIyLVxcdFxcdFxcdFxcdCAgICAgIEJBX1NFVFVQX0lOUFJPR1JFU1MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjEyNDpcXHRcXHR0eF9iYV90YmwgPSBtd2lmaWV4X2dldF9iYV9zdGF0dXMocHJpdiwgQkFfU0VUVVBfSU5QUk9HUkVTUyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEyNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTI2LVxcdFxcdGlmICh0eF9iYV90YmwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjEyNzpcXHRcXHRcXHRtd2lmaWV4X2RlbF9iYV90YmwocHJpdiwgdHhfYmFfdGJsLVxcdTAwM2V0aWQsIHR4X2JhX3RibC1cXHUwMDNlcmEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEyOC1cXHRcXHRcXHRcXHRcXHQgICBUWVBFX0RFTEJBX1NFTlQsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE0MS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTQyOmludCBtd2lmaWV4X3JldF8xMW5fYWRkYmFfcmVxKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE0My1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xNDYtXFx0c3RydWN0IGhvc3RfY21kX2RzXzExbl9hZGRiYV9yc3AgKmFkZF9iYV9yc3AgPSBcXHUwMDI2cmVzcC1cXHUwMDNlcGFyYW1zLmFkZF9iYV9yc3A7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE0NzpcXHRzdHJ1Y3QgbXdpZmlleF90eF9iYV9zdHJlYW1fdGJsICp0eF9iYV90Ymw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE0ODpcXHRzdHJ1Y3QgbXdpZmlleF9yYV9saXN0X3RibCAqcmFfbGlzdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTQ5LVxcdHUxNiBibG9ja19hY2tfcGFyYW1fc2V0ID0gbGUxNl90b19jcHUoYWRkX2JhX3JzcC1cXHUwMDNlYmxvY2tfYWNrX3BhcmFtX3NldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxNTc6XFx0dGlkX2Rvd24gPSBtd2lmaWV4X3dtbV9kb3duZ3JhZGVfdGlkKHByaXYsIHRpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE1ODpcXHRyYV9saXN0ID0gbXdpZmlleF93bW1fZ2V0X3JhbGlzdF9ub2RlKHByaXYsIHRpZF9kb3duLCBhZGRfYmFfcnNwLVxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTU5LVxcdFxcdHBlZXJfbWFjX2FkZHIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE2NC1cXHRcXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE2NTpcXHRcXHRtd2lmaWV4X2RlbF9iYV90YmwocHJpdiwgdGlkLCBhZGRfYmFfcnNwLVxcdTAwM2VwZWVyX21hY19hZGRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xNjYtXFx0XFx0XFx0XFx0ICAgVFlQRV9ERUxCQV9TRU5ULCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE3MzpcXHR0eF9iYV90YmwgPSBtd2lmaWV4X2dldF9iYV90YmwocHJpdiwgdGlkLCBhZGRfYmFfcnNwLVxcdTAwM2VwZWVyX21hY19hZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTc0LVxcdGlmICh0eF9iYV90YmwpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTc1OlxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIEVWRU5ULCBcXFwiaW5mbzogQkEgc3RyZWFtIGNvbXBsZXRlXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTc2LVxcdFxcdHR4X2JhX3RibC1cXHUwMDNlYmFfc3RhdHVzID0gQkFfU0VUVVBfQ09NUExFVEU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTg3LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE4ODpcXHRcXHRtd2lmaWV4X2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBFUlJPUiwgXFxcIkJBIHN0cmVhbSBub3QgY3JlYXRlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE4OS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjAxLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoyMDI6aW50IG13aWZpZXhfY21kX3JlY2ZnX3R4X2J1ZihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yMDMtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCBpbnQgY21kX2FjdGlvbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yMTQtXFx0Y2FzZSBIb3N0Q21kX0FDVF9HRU5fU0VUOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoyMTU6XFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgQ01ELFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yMTYtXFx0XFx0XFx0ICAgIFxcXCJjbWQ6IHNldCB0eF9idWY9JWRcXFxcblxcXCIsICpidWZfc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjM0LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoyMzU6aW50IG13aWZpZXhfY21kX2Ftc2R1X2FnZ3JfY3RybChzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yMzYtXFx0XFx0XFx0XFx0aW50IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjIzNzpcXHRcXHRcXHRcXHRzdHJ1Y3QgbXdpZmlleF9kc18xMW5fYW1zZHVfYWdncl9jdHJsICphYV9jdHJsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yMzgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTI2Ny0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MjY4OmludCBtd2lmaWV4X2NtZF8xMW5fY2ZnKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTI2OS1cXHRcXHRcXHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MjcwOlxcdFxcdFxcdHN0cnVjdCBtd2lmaWV4X2RzXzExbl90eF9jZmcgKnR4Y2ZnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yNzEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jPTI5OD1pbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6Mjk5Om13aWZpZXhfY21kX2FwcGVuZF8xMW5fdGx2KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMwMDpcXHRcXHRcXHQgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzAxLVxcdFxcdFxcdCAgIHU4ICoqYnVmZmVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMDIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMDM6XFx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRjYXAgKmh0X2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzA0OlxcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2h0aW5mbyAqaHRfaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzA1OlxcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2NoYW5fbGlzdF9wYXJhbV9zZXQgKmNoYW5fbGlzdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzA2OlxcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzXzIwNDBic3NjbyAqYnNzX2NvXzIwNDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMwNzpcXHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19leHRjYXAgKmV4dF9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMwOC1cXHRpbnQgcmV0X2xlbiA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMTY6XFx0cmFkaW9fdHlwZSA9IG13aWZpZXhfYmFuZF90b19yYWRpb190eXBlKCh1OCkgYnNzX2Rlc2MtXFx1MDAzZWJzc19iYW5kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzE3LVxcdHNiYW5kID0gcHJpdi1cXHUwMDNld2Rldi53aXBoeS1cXHUwMDNlYmFuZHNbcmFkaW9fdHlwZV07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzE5LVxcdGlmIChic3NfZGVzYy1cXHUwMDNlYmNuX2h0X2NhcCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMjA6XFx0XFx0aHRfY2FwID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2h0Y2FwICopICpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMyMTpcXHRcXHRtZW1zZXQoaHRfY2FwLCAwLCBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRjYXApKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzIyLVxcdFxcdGh0X2NhcC1cXHUwMDNlaGVhZGVyLnR5cGUgPSBjcHVfdG9fbGUxNihXTEFOX0VJRF9IVF9DQVBBQklMSVRZKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMjQtXFx0XFx0XFx0XFx0Y3B1X3RvX2xlMTYoc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMyNTpcXHRcXHRtZW1jcHkoKHU4ICopIGh0X2NhcCArIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19oZWFkZXIpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMjYtXFx0XFx0ICAgICAgICh1OCAqKWJzc19kZXNjLVxcdTAwM2ViY25faHRfY2FwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzI5OlxcdFxcdG13aWZpZXhfZmlsbF9jYXBfaW5mbyhwcml2LCByYWRpb190eXBlLCBcXHUwMDI2aHRfY2FwLVxcdTAwM2VodF9jYXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMzAtXFx0XFx0LyogVXBkYXRlIEhUNDAgY2FwYWJpbGl0eSBmcm9tIGN1cnJlbnQgY2hhbm5lbCBpbmZvcm1hdGlvbiAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMzMy1cXHRcXHRcXHR1OCByYWRpbyA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMzNDpcXHRcXHRcXHRtd2lmaWV4X2JhbmRfdG9fcmFkaW9fdHlwZShic3NfZGVzYy1cXHUwMDNlYnNzX2JhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMzUtXFx0XFx0XFx0aW50IGZyZXEgPVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzYzOlxcdFxcdCpidWZmZXIgKz0gc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2h0Y2FwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzY0OlxcdFxcdHJldF9sZW4gKz0gc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2h0Y2FwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzY1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zNjgtXFx0XFx0aWYgKHByaXYtXFx1MDAzZWJzc19tb2RlID09IE5MODAyMTFfSUZUWVBFX0FESE9DKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjM2OTpcXHRcXHRcXHRodF9pbmZvID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2h0aW5mbyAqKSAqYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zNzAtXFx0XFx0XFx0bWVtc2V0KGh0X2luZm8sIDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjM3MTpcXHRcXHRcXHQgICAgICAgc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2h0aW5mbykpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zNzItXFx0XFx0XFx0aHRfaW5mby1cXHUwMDNlaGVhZGVyLnR5cGUgPVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM3OC1cXHRcXHRcXHRtZW1jcHkoKHU4ICopIGh0X2luZm8gK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozNzk6XFx0XFx0XFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19oZWFkZXIpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zODAtXFx0XFx0XFx0ICAgICAgICh1OCAqKWJzc19kZXNjLVxcdTAwM2ViY25faHRfb3BlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjM4OTpcXHRcXHRcXHQqYnVmZmVyICs9IHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19odGluZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozOTA6XFx0XFx0XFx0cmV0X2xlbiArPSBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRpbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzkxLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zOTMtXFx0XFx0Y2hhbl9saXN0ID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6Mzk0OlxcdFxcdFxcdChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19jaGFuX2xpc3RfcGFyYW1fc2V0ICopICpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM5NS1cXHRcXHRtZW1zZXQoY2hhbl9saXN0LCAwLCBzdHJ1Y3Rfc2l6ZShjaGFuX2xpc3QsIGNoYW5fc2Nhbl9wYXJhbSwgMSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM5Ny1cXHRcXHRjaGFuX2xpc3QtXFx1MDAzZWhlYWRlci5sZW4gPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozOTg6XFx0XFx0XFx0Y3B1X3RvX2xlMTYoc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2NoYW5fc2Nhbl9wYXJhbV9zZXQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzk5LVxcdFxcdGNoYW5fbGlzdC1cXHUwMDNlY2hhbl9zY2FuX3BhcmFtWzBdLmNoYW5fbnVtYmVyID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MDEtXFx0XFx0Y2hhbl9saXN0LVxcdTAwM2VjaGFuX3NjYW5fcGFyYW1bMF0ucmFkaW9fdHlwZSA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQwMjpcXHRcXHRcXHRtd2lmaWV4X2JhbmRfdG9fcmFkaW9fdHlwZSgodTgpIGJzc19kZXNjLVxcdTAwM2Vic3NfYmFuZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQwMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MTYtXFx0aWYgKGJzc19kZXNjLVxcdTAwM2ViY25fYnNzX2NvXzIwNDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDE3OlxcdFxcdGJzc19jb18yMDQwID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzXzIwNDBic3NjbyAqKSAqYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MTgtXFx0XFx0bWVtc2V0KGJzc19jb18yMDQwLCAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0MTk6XFx0XFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc18yMDQwYnNzY28pKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDIwLVxcdFxcdGJzc19jb18yMDQwLVxcdTAwM2VoZWFkZXIudHlwZSA9IGNwdV90b19sZTE2KFdMQU5fRUlEX0JTU19DT0VYXzIwNDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQyNC1cXHRcXHRtZW1jcHkoKHU4ICopIGJzc19jb18yMDQwICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDI1OlxcdFxcdCAgICAgICBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaGVhZGVyKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDI2LVxcdFxcdCAgICAgICBic3NfZGVzYy1cXHUwMDNlYmNuX2Jzc19jb18yMDQwICtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQzMDpcXHRcXHQqYnVmZmVyICs9IHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc18yMDQwYnNzY28pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0MzE6XFx0XFx0cmV0X2xlbiArPSBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfMjA0MGJzc2NvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDMyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MzUtXFx0XFx0aGRyID0gKHZvaWQgKilic3NfZGVzYy1cXHUwMDNlYmNuX2V4dF9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQzNjpcXHRcXHRleHRfY2FwID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2V4dGNhcCAqKSAqYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0Mzc6XFx0XFx0bWVtc2V0KGV4dF9jYXAsIDAsIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19leHRjYXApKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDM4LVxcdFxcdGV4dF9jYXAtXFx1MDAzZWhlYWRlci50eXBlID0gY3B1X3RvX2xlMTYoV0xBTl9FSURfRVhUX0NBUEFCSUxJVFkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDUxOlxcdFxcdCpidWZmZXIgKz0gc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2V4dGNhcCkgKyBoZHItXFx1MDAzZWxlbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDUyOlxcdFxcdHJldF9sZW4gKz0gc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2V4dGNhcCkgKyBoZHItXFx1MDAzZWxlbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDUzLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00NjEtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQ2MjpzdGF0aWMgaW50IG13aWZpZXhfaXNfdHhfYmFfc3RyZWFtX3B0cl92YWxpZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0NjM6XFx0XFx0XFx0XFx0c3RydWN0IG13aWZpZXhfdHhfYmFfc3RyZWFtX3RibCAqdHhfdGJsX3B0cilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDY0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDY1OlxcdHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKnR4X2JhX3Rzcl90Ymw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00ODAtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQ4MTp2b2lkIG13aWZpZXhfMTFuX2RlbGV0ZV90eF9iYV9zdHJlYW1fdGJsX2VudHJ5KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQ4MjpcXHRcXHRcXHRcXHRzdHJ1Y3QgbXdpZmlleF90eF9iYV9zdHJlYW1fdGJsICp0eF9iYV90c3JfdGJsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00ODMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00ODQtXFx0aWYgKCF0eF9iYV90c3JfdGJsIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQ4NTpcXHQgICAgbXdpZmlleF9pc190eF9iYV9zdHJlYW1fcHRyX3ZhbGlkKHByaXYsIHR4X2JhX3Rzcl90YmwpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00ODYtXFx0XFx0cmV0dXJuO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00ODctXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDAxOjM0OjE2LjQ0OTE4MDI5N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjI3NTcxODEwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmc9ZmFsc2U6IEFuYWx5emluZyBhIE1hcnZlbGwgU0RJTyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBTeXprYWxsZXIgaXMgZnV6emluZyBgbXdpZmlleGAgb3ZlciBVU0IuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBmdXp6ZXIgY291bGQgcG90ZW50aWFsbHkgcHJvdmlkZSBhcmJpdHJhcnkgVVNCIGRlc2NyaXB0b3JzIGFuZCByZXNwb25zZXMsIHRoYXQncyBmaW5lLiBCdXQsIHRoaXMgcGFydGljdWxhciBwYXRjaCwgdGhvdWdoLCBpcyBhYm91dCBhIGBtYXJ2ZWxsLGludmFsaWQtcmVnLWhpbnQtaW4tcm9tYCBkZXZpY2UgcHJvcGVydHkuXG5cbk5vdywgdGhpcyBwcm9wZXJ0eSBpcyByZWFkIGZyb20gdGhlIGRldmljZSB0cmVlLiBJbiBhIFVTQi1lbXVsYXRlZCBlbnZpcm9ubWVudCwgd2hlcmUgdGhpcyBmdXp6ZXIgaXMgcnVubmluZywgYGFkYXB0ZXItXHUwMDNlZGV2YCBpcyB0aGUgVVNCIGRldmljZS4gVVNCIGRldmljZXMgKnVzdWFsbHkqIGRvbid0IGhhdmUgZGV2aWNlIHRyZWUgbm9kZXMgdW5sZXNzIHRoZXkncmUgaGFyZGNvZGVkIG9uIGEgYm9hcmQsIGxpa2Ugd2l0aCBhIG1vZGlmaWVkIGRldmljZSB0cmVlIGluIGBhcm1hZGEtMzg1LWxpbmtzeXMtcmFuZ28uZHRzYC4gQWhhISBUaGUgcGF0Y2ggKmRvZXMqIG1vZGlmeSB0aGlzIHZlcnkgRFRTIGZpbGUsIHNwZWNpZmljYWxseSBhZGRpbmcgdGhlIHByb3BlcnR5IHRvIGFuIFNESU8gZGV2aWNlIG9uIGEgcGFydGljdWxhciBib2FyZCAoYHdpZmlAMWAgdW5kZXIgYFx1MDAyNnNkaGNpYCkuXG5cblNvLCB0aGlzIHByb3BlcnR5IGlzIHNwZWNpZmljYWxseSBmb3IgYW4gU0RJTyBkZXZpY2Ugb24gYSBjZXJ0YWluIEFSTSBib2FyZC4gVGhlIGNyaXRpY2FsIGNvZGUgcGF0aCBpczpcblxuYGBgY1xuXHRcdFx0XHRpZiAoY291bnRyeV9jb2RlIFx1MDAyNlx1MDAyNlxuXHRcdFx0XHQgICAgIWRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woYWRhcHRlci1cdTAwM2VkZXYsXG5cdFx0XHRcdFx0XHRcdCAgICAgICBcIm1hcnZlbGwsaW52YWxpZC1yZWctaGludC1pbi1yb21cIikgXHUwMDI2XHUwMDI2XG5cdFx0XHRcdCAgICByZWd1bGF0b3J5X2hpbnQod2lwaHksIGNvdW50cnlfY29kZSkpXG5gYGBcblxuSWYgdGhlIHByb3BlcnR5ICppc24ndCogcHJlc2VudCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQgZm9yIGV2ZXJ5dGhpbmcgZXhjZXB0IHRoYXQgc3BlY2lmaWMgYm9hcmQsIGl0J2xsIGNhbGwgYHJlZ3VsYXRvcnlfaGludGAuIFRoZSBwYXRjaCBpcyAqb25seSogYWRkaW5nIGEgd2F5IHRvICpza2lwKiBgcmVndWxhdG9yeV9oaW50YCBpZiB0aGUgcHJvcGVydHkgKmlzKiBwcmVzZW50LlxuXG5Db25zaWRlcmluZyB0aGF0IHRoZSBmdXp6ZXIgcnVucyBvbiB4ODZfNjQgb3IgYXJtNjQgZ2VuZXJpYyBWTXMsIHRoZSBkZXZpY2UgdHJlZSB3b24ndCBoYXZlIHRoaXMgcHJvcGVydHkgc2V0LiBUaGVyZWZvcmUsIHRoZSBmdXp6ZXIncyBleGVjdXRpb24gZmxvdyB3b24ndCBjaGFuZ2UuIFRoZSBjb25kaXRpb24gYCFkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKC4uLilgIHdpbGwgYWx3YXlzIGJlIGB0cnVlYCwgYW5kIGl0IHdpbGwgZXhlY3V0ZSBgcmVndWxhdG9yeV9oaW50YC5cblxuU28sIHRoZSBuZXh0IHF1ZXN0aW9uIGlzOiBEb2VzIHRoaXMgcGF0Y2ggaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgZm9yIHRoZSBmdXp6ZXI/IE5vLCBiZWNhdXNlIGl0IGRvZXNuJ3QgcnVuIHdpdGggdGhhdCBwYXJ0aWN1bGFyIGRldmljZSB0cmVlISBFdmVuIGlmIGl0IGRpZCwgc2tpcHBpbmcgYHJlZ3VsYXRvcnlfaGludGAgaXMgYSB2ZXJ5IG1pbm9yIGNoYW5nZSwgYXZvaWRpbmcgYSBmdW5jdGlvbiBjYWxsIHRvIHRoZSByZWd1bGF0b3J5IHN1YnN5c3RlbS4gSXMgdGhpcyBldmVuIHdvcnRoIGZ1enppbmc/IEl0J3MganVzdCBhZGRpbmcgYSBkZXZpY2UgdHJlZSBwcm9wZXJ0eSBjaGVjaywgYSBib2FyZC1zcGVjaWZpYyBxdWlyay5cblxuVGhlIGZ1enppbmcgcnVsZXMgc3RhdGU6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucy4uLkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIlxuXG5UaGUgY29kZSBwYXRoIHdoZXJlIGBkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sYCByZXR1cm5zIGB0cnVlYCBpcyB1bnJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQgYmVjYXVzZSB0aGUgYG1hcnZlbGwsaW52YWxpZC1yZWctaGludC1pbi1yb21gIHByb3BlcnR5IGlzbid0IHByZXNlbnQsIGFuZCB0aGUgZnV6emVyIGNhbid0IGluamVjdCBpdCAoYXMgZmFyIGFzIEkga25vdykgZm9yIFVTQi9TRElPIGRldmljZXMuIE5vcGUsIG5vIHdheSB0byBpbmplY3QgdGhlIGRldmljZSB0cmVlIGhlcmUuIEFsc28sIGV2ZW4gaWYgaXQgKndhcyogcmVhY2hhYmxlLCB0aGUgZnVuY3Rpb25hbCBjaGFuZ2UgaXMgdHJpdmlhbDogYWRkaW5nIGEgYm9vbGVhbiBjaGVjay5cblxuRG91YmxlLWNoZWNraW5nLCB0aGUgcGF0Y2ggbW9kaWZpZXMgYERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvbWFydmVsbCxzZDg3ODcueWFtbGAsIGBhcmNoL2FybS9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS0zODUtbGlua3N5cy1yYW5nby5kdHNgIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNgLiBUaGlzIGNvbmZpcm1zIGl0J3MgYSBjbGFzc2ljIGJvYXJkLXNwZWNpZmljIHF1aXJrIHdoZXJlIGl0IHNraXBzIGByZWd1bGF0b3J5X2hpbnRgIHdoZW4gdGhlIERUIHByb3BlcnR5IGlzIHRoZXJlLiBCZWNhdXNlIHRoZSBmdXp6ZXIgd29uJ3QgaGF2ZSB0aGF0IERUIHByb3BlcnR5LCB0aGUgZXhlY3V0aW9uIGZsb3cgaXMgaWRlbnRpY2FsLiBFdmVuIGlmIHJlYWNoYWJsZSwgaXQncyBqdXN0IHNraXBwaW5nIGEgc2luZ2xlIGZ1bmN0aW9uIGNhbGwuXG5cbkJhc2VkIG9uIHRoZSBydWxlcywgd2hlcmUgSSd2ZSBnb3QgXCJDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVVcIiBhbmQgaGVyZSB0aGF0J3MgYGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2xgIHJldHVybmluZyBgdHJ1ZWAsIGFuZCBiZWNhdXNlIHRoZSBmYWxzZSBicmFuY2ggaXMgdGhlIHNhbWUgYXMgdGhlIG9sZCBjb2RlLCBJJ20gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgyODMsIk91dHB1dFRva2VucyI6MTU3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEwOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwMTozNDozMi43MjQ5MDE4NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBib2FyZC1zcGVjaWZpYyBxdWlyayBmb3IgTWFydmVsbCBXaUZpIGRldmljZXMgdG8gc2tpcCBhIHJlZ3VsYXRvcnkgaGludCBpZiBhIHNwZWNpZmljIGRldmljZSB0cmVlIHByb3BlcnR5ICgnbWFydmVsbCxpbnZhbGlkLXJlZy1oaW50LWluLXJvbScpIGlzIHByZXNlbnQuIFRoaXMgcHJvcGVydHkgaXMgb25seSBhZGRlZCB0byBhIHNwZWNpZmljIEFSTSBib2FyZCdzIGRldmljZSB0cmVlIChhcm1hZGEtMzg1LWxpbmtzeXMtcmFuZ28pLiBJbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSB3aGVyZSBmdXp6aW5nIG9jY3VycywgdGhpcyBkZXZpY2UgdHJlZSBwcm9wZXJ0eSB3aWxsIG5vdCBiZSBwcmVzZW50LCBtZWFuaW5nIHRoZSBleGVjdXRpb24gZmxvdyB3aWxsIGJlIGlkZW50aWNhbCB0byB0aGUgcHJlLXBhdGNoIGJlaGF2aW9yLiBUaGUgbmV3IGNvZGUgcGF0aCAoc2tpcHBpbmcgdGhlIHJlZ3VsYXRvcnkgaGludCkgaXMgdW5yZWFjaGFibGUgZHVyaW5nIHN0YW5kYXJkIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgYm9hcmQtc3BlY2lmaWMgcXVpcmsgZm9yIE1hcnZlbGwgV2lGaSBkZXZpY2VzIHRvIHNraXAgYSByZWd1bGF0b3J5IGhpbnQgaWYgYSBzcGVjaWZpYyBkZXZpY2UgdHJlZSBwcm9wZXJ0eSAoJ21hcnZlbGwsaW52YWxpZC1yZWctaGludC1pbi1yb20nKSBpcyBwcmVzZW50LiBUaGlzIHByb3BlcnR5IGlzIG9ubHkgYWRkZWQgdG8gYSBzcGVjaWZpYyBBUk0gYm9hcmQncyBkZXZpY2UgdHJlZSAoYXJtYWRhLTM4NS1saW5rc3lzLXJhbmdvKS4gSW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS9HQ0Ugd2hlcmUgZnV6emluZyBvY2N1cnMsIHRoaXMgZGV2aWNlIHRyZWUgcHJvcGVydHkgd2lsbCBub3QgYmUgcHJlc2VudCwgbWVhbmluZyB0aGUgZXhlY3V0aW9uIGZsb3cgd2lsbCBiZSBpZGVudGljYWwgdG8gdGhlIHByZS1wYXRjaCBiZWhhdmlvci4gVGhlIG5ldyBjb2RlIHBhdGggKHNraXBwaW5nIHRoZSByZWd1bGF0b3J5IGhpbnQpIGlzIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDE6MzQ6MzIuNzI0OTM0ODhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowczdb8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-21 01:17:12 +0000 UTC FinishedAt: 2026-08-21 01:34:33 +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+CgkJCTx0ZD4yMDI2LzA4LzIxIDAxOjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGJvYXJkLXNwZWNpZmljIHF1aXJrIGZvciBNYXJ2ZWxsIFdpRmkgZGV2aWNlcyB0byBza2lwIGEgcmVndWxhdG9yeSBoaW50IGlmIGEgc3BlY2lmaWMgZGV2aWNlIHRyZWUgcHJvcGVydHkgKCYjMzk7bWFydmVsbCxpbnZhbGlkLXJlZy1oaW50LWluLXJvbSYjMzk7KSBpcyBwcmVzZW50LiBUaGlzIHByb3BlcnR5IGlzIG9ubHkgYWRkZWQgdG8gYSBzcGVjaWZpYyBBUk0gYm9hcmQmIzM5O3MgZGV2aWNlIHRyZWUgKGFybWFkYS0zODUtbGlua3N5cy1yYW5nbykuIEluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUvR0NFIHdoZXJlIGZ1enppbmcgb2NjdXJzLCB0aGlzIGRldmljZSB0cmVlIHByb3BlcnR5IHdpbGwgbm90IGJlIHByZXNlbnQsIG1lYW5pbmcgdGhlIGV4ZWN1dGlvbiBmbG93IHdpbGwgYmUgaWRlbnRpY2FsIHRvIHRoZSBwcmUtcGF0Y2ggYmVoYXZpb3IuIFRoZSBuZXcgY29kZSBwYXRoIChza2lwcGluZyB0aGUgcmVndWxhdG9yeSBoaW50KSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgc3RhbmRhcmQgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDE6MzM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyN2M5OGYwYmRmZTBlOGNhZmIyMGNhODZhMTdmNmQzZmU2ODIwOTNiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMjEgMDE6MzM6MzAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy9tYXJ2ZWxsLHNkODc4Ny55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy9tYXJ2ZWxsLHNkODc4Ny55YW1sXG5pbmRleCA5MzBiNzAwYjczZDAwLi45ZjkwNWVmNWMyYzA3IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy9tYXJ2ZWxsLHNkODc4Ny55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpcmVsZXNzL21hcnZlbGwsc2Q4Nzg3LnlhbWxcbkBAIC01OSw2ICYjNDM7NTksMTIgQEAgcHJvcGVydGllczpcbiAgICAgZGVzY3JpcHRpb246IENhbGlicmF0aW9uIGRhdGEgZm9yIHN1Yi1iYW5kIDMgaW4gdGhlIDVHSHogYmFuZC5cbiAgICAgbWF4SXRlbXM6IDUwMlxuIFxuJiM0MzsgIG1hcnZlbGwsaW52YWxpZC1yZWctaGludC1pbi1yb206XG4mIzQzOyAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy9mbGFnXG4mIzQzOyAgICBkZXNjcmlwdGlvbjpcbiYjNDM7ICAgICAgVGhlIHJlZ3VsYXRvcnkgaGludCBpbiBST00gY29uZmxpY3RzIHdpdGggcGxhdGZvcm0gY29uZmlndXJhdGlvbi5cbiYjNDM7ICAgICAgSXQgc2hvdWxkIGJlIGlnbm9yZWQsIHNvIHRoZSBwbGF0Zm9ybSByZWd1bGF0b3J5IGRvbWFpbiBjYW4gYmUgdXNlZC5cbiYjNDM7XG4gICBtYXJ2ZWxsLHdha2V1cC1waW46XG4gICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL3VpbnQzMlxuICAgICBkZXNjcmlwdGlvbjpcbmRpZmYgLS1naXQgYS9hcmNoL2FybS9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS0zODUtbGlua3N5cy1yYW5nby5kdHMgYi9hcmNoL2FybS9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS0zODUtbGlua3N5cy1yYW5nby5kdHNcbmluZGV4IDRhYjQ1ZjI5NGRlMjIuLjJiZjI5OTgxYTAzMTMgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybS9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS0zODUtbGlua3N5cy1yYW5nby5kdHNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtL2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTM4NS1saW5rc3lzLXJhbmdvLmR0c1xuQEAgLTE2NSw2ICYjNDM7MTY1LDE1IEBAIFx1MDAyNnNkaGNpIHtcbiBcdHdwLWludmVydGVkO1xuIFx0YnVzLXdpZHRoID0gXHUwMDNjOFx1MDAzZTtcbiBcdHN0YXR1cyA9IFwmIzM0O29rYXlcJiMzNDs7XG4mIzQzO1xuJiM0MztcdCNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7XHQjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4mIzQzO1xuJiM0MztcdHdpZmlAMSB7XG4mIzQzO1x0XHRjb21wYXRpYmxlID0gXCYjMzQ7bWFydmVsbCxzZDg4OTdcJiMzNDs7XG4mIzQzO1x0XHRyZWcgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MztcdFx0bWFydmVsbCxpbnZhbGlkLXJlZy1oaW50LWluLXJvbTtcbiYjNDM7XHR9O1xuIH07XG4gXG4gXHUwMDI2dXNiM18xX3ZidXMge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNcbmluZGV4IDdhMWJhMzJmMWZiMzYuLjI5Mzg3NjM5N2I2NzAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNcbkBAIC00ODk3LDcgJiM0Mzs0ODk3LDE0IEBAIGludCBtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXHRcdFx0XHRjb3VudHJ5X2NvZGUgPVxuIFx0XHRcdFx0XHRtd2lmaWV4XzExZF9jb2RlXzJfcmVnaW9uKFxuIFx0XHRcdFx0XHRcdGFkYXB0ZXItXHUwMDNlcmVnaW9uX2NvZGUpO1xuJiM0MztcbiYjNDM7XHRcdFx0XHQvKiBJZiB0aGUgcmVnIGhpbnQgaW4gUk9NIGNvbmZsaWN0cyB3aXRoIHBsYXRmb3JtXG4mIzQzO1x0XHRcdFx0ICogY29uZmlndXJhdGlvbiwgaXQgc2hvdWxkIGJlIGlnbm9yZWQsIHNvIHRoZVxuJiM0MztcdFx0XHRcdCAqIHBsYXRmb3JtIHJlZ3VsYXRvcnkgZG9tYWluIGNhbiBiZSB1c2VkLlxuJiM0MztcdFx0XHRcdCAqL1xuIFx0XHRcdFx0aWYgKGNvdW50cnlfY29kZSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0XHQgICAgIWRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woYWRhcHRlci1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdFx0XHRcdFx0ICAgICAgIFwmIzM0O21hcnZlbGwsaW52YWxpZC1yZWctaGludC1pbi1yb21cJiMzNDspIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0ICAgIHJlZ3VsYXRvcnlfaGludCh3aXBoeSwgY291bnRyeV9jb2RlKSlcbiBcdFx0XHRcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBFUlJPUixcbiBcdFx0XHRcdFx0XHQgICAgXCYjMzQ7cmVndWxhdG9yeV9oaW50KCkgZmFpbGVkXFxuXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwMTozMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGJvYXJkLXNwZWNpZmljIHF1aXJrIGZvciBNYXJ2ZWxsIFdpRmkgZGV2aWNlcyB0byBza2lwIGEgcmVndWxhdG9yeSBoaW50IGlmIGEgc3BlY2lmaWMgZGV2aWNlIHRyZWUgcHJvcGVydHkgKCYjMzk7bWFydmVsbCxpbnZhbGlkLXJlZy1oaW50LWluLXJvbSYjMzk7KSBpcyBwcmVzZW50LiBUaGlzIHByb3BlcnR5IGlzIG9ubHkgYWRkZWQgdG8gYSBzcGVjaWZpYyBBUk0gYm9hcmQmIzM5O3MgZGV2aWNlIHRyZWUgKGFybWFkYS0zODUtbGlua3N5cy1yYW5nbykuIEluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUvR0NFIHdoZXJlIGZ1enppbmcgb2NjdXJzLCB0aGlzIGRldmljZSB0cmVlIHByb3BlcnR5IHdpbGwgbm90IGJlIHByZXNlbnQsIG1lYW5pbmcgdGhlIGV4ZWN1dGlvbiBmbG93IHdpbGwgYmUgaWRlbnRpY2FsIHRvIHRoZSBwcmUtcGF0Y2ggYmVoYXZpb3IuIFRoZSBuZXcgY29kZSBwYXRoIChza2lwcGluZyB0aGUgcmVndWxhdG9yeSBoaW50KSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgc3RhbmRhcmQgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyN2M5OGYwYmRmZTBlOGNhZmIyMGNhODZhMTdmNmQzZmU2ODIwOTNiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMjEgMDE6MzM6MzAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpcmVsZXNzL21hcnZlbGwsc2Q4Nzg3LnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpcmVsZXNzL21hcnZlbGwsc2Q4Nzg3LnlhbWwKaW5kZXggOTMwYjcwMGI3M2QwMC4uOWY5MDVlZjVjMmMwNyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy9tYXJ2ZWxsLHNkODc4Ny55YW1sCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvbWFydmVsbCxzZDg3ODcueWFtbApAQCAtNTksNiAmIzQzOzU5LDEyIEBAIHByb3BlcnRpZXM6CiAgICAgZGVzY3JpcHRpb246IENhbGlicmF0aW9uIGRhdGEgZm9yIHN1Yi1iYW5kIDMgaW4gdGhlIDVHSHogYmFuZC4KICAgICBtYXhJdGVtczogNTAyCiAKJiM0MzsgIG1hcnZlbGwsaW52YWxpZC1yZWctaGludC1pbi1yb206CiYjNDM7ICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL2ZsYWcKJiM0MzsgICAgZGVzY3JpcHRpb246CiYjNDM7ICAgICAgVGhlIHJlZ3VsYXRvcnkgaGludCBpbiBST00gY29uZmxpY3RzIHdpdGggcGxhdGZvcm0gY29uZmlndXJhdGlvbi4KJiM0MzsgICAgICBJdCBzaG91bGQgYmUgaWdub3JlZCwgc28gdGhlIHBsYXRmb3JtIHJlZ3VsYXRvcnkgZG9tYWluIGNhbiBiZSB1c2VkLgomIzQzOwogICBtYXJ2ZWxsLHdha2V1cC1waW46CiAgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvdWludDMyCiAgICAgZGVzY3JpcHRpb246CmRpZmYgLS1naXQgYS9hcmNoL2FybS9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS0zODUtbGlua3N5cy1yYW5nby5kdHMgYi9hcmNoL2FybS9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS0zODUtbGlua3N5cy1yYW5nby5kdHMKaW5kZXggNGFiNDVmMjk0ZGUyMi4uMmJmMjk5ODFhMDMxMyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtMzg1LWxpbmtzeXMtcmFuZ28uZHRzCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtL2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTM4NS1saW5rc3lzLXJhbmdvLmR0cwpAQCAtMTY1LDYgJiM0MzsxNjUsMTUgQEAgJmFtcDtzZGhjaSB7CiAJd3AtaW52ZXJ0ZWQ7CiAJYnVzLXdpZHRoID0gJmx0OzgmZ3Q7OwogCXN0YXR1cyA9ICYjMzQ7b2theSYjMzQ7OwomIzQzOwomIzQzOwkjYWRkcmVzcy1jZWxscyA9ICZsdDsxJmd0OzsKJiM0MzsJI3NpemUtY2VsbHMgPSAmbHQ7MCZndDs7CiYjNDM7CiYjNDM7CXdpZmlAMSB7CiYjNDM7CQljb21wYXRpYmxlID0gJiMzNDttYXJ2ZWxsLHNkODg5NyYjMzQ7OwomIzQzOwkJcmVnID0gJmx0OzEmZ3Q7OwomIzQzOwkJbWFydmVsbCxpbnZhbGlkLXJlZy1oaW50LWluLXJvbTsKJiM0MzsJfTsKIH07CiAKICZhbXA7dXNiM18xX3ZidXMgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYwppbmRleCA3YTFiYTMyZjFmYjM2Li4yOTM4NzYzOTdiNjcwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYwpAQCAtNDg5Nyw3ICYjNDM7NDg5NywxNCBAQCBpbnQgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKQogCQkJCWNvdW50cnlfY29kZSA9CiAJCQkJCW13aWZpZXhfMTFkX2NvZGVfMl9yZWdpb24oCiAJCQkJCQlhZGFwdGVyLSZndDtyZWdpb25fY29kZSk7CiYjNDM7CiYjNDM7CQkJCS8qIElmIHRoZSByZWcgaGludCBpbiBST00gY29uZmxpY3RzIHdpdGggcGxhdGZvcm0KJiM0MzsJCQkJICogY29uZmlndXJhdGlvbiwgaXQgc2hvdWxkIGJlIGlnbm9yZWQsIHNvIHRoZQomIzQzOwkJCQkgKiBwbGF0Zm9ybSByZWd1bGF0b3J5IGRvbWFpbiBjYW4gYmUgdXNlZC4KJiM0MzsJCQkJICovCiAJCQkJaWYgKGNvdW50cnlfY29kZSAmYW1wOyZhbXA7CiYjNDM7CQkJCSAgICAhZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChhZGFwdGVyLSZndDtkZXYsCiYjNDM7CQkJCQkJCSAgICAgICAmIzM0O21hcnZlbGwsaW52YWxpZC1yZWctaGludC1pbi1yb20mIzM0OykgJmFtcDsmYW1wOwogCQkJCSAgICByZWd1bGF0b3J5X2hpbnQod2lwaHksIGNvdW50cnlfY29kZSkpCiAJCQkJCW13aWZpZXhfZGJnKHByaXYtJmd0O2FkYXB0ZXIsIEVSUk9SLAogCQkJCQkJICAgICYjMzQ7cmVndWxhdG9yeV9oaW50KCkgZmFpbGVkXG4mIzM0Oyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDAxOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MDAKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAzODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBGZWFzaWJpbGl0eSBvZiBhIE1pbm9yIFdpRmkgRHJpdmVyIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgYSBmZXcgZmlsZXM6IHRoZSBkZXZpY2UgdHJlZSBiaW5kaW5nIGZvciBhIE1hcnZlbGwgV2lGaSBjaGlwLCBhIGRldmljZSB0cmVlIGZpbGUgZm9yIGFuIEFybWFkYSBib2FyZCwgYW5kIHRoZSBgbXdpZmlleGAgd2lyZWxlc3MgZHJpdmVyIGl0c2VsZi4gVGhlIGtleSBjaGFuZ2UgaW4gYG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTFgIGlzIGEgY2hlY2sgZm9yIHRoaXMgbmV3IGRldmljZSBwcm9wZXJ0eSwgYG1hcnZlbGwsaW52YWxpZC1yZWctaGludC1pbi1yb21gLiBJZiBpdCYjMzk7cyB0aGVyZSwgaXQganVzdCBza2lwcyBhIHJlZ3VsYXRvcnkgaGludC4gUHJldHR5IG1pbmltYWwsIHJlYWxseS4KClRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyB3b3J0aCBmdXp6aW5nPyBUaGUgZHJpdmVyIGluIHF1ZXN0aW9uIGlzIGBtd2lmaWV4YCwgYSBNYXJ2ZWxsIFdpRmkgZHJpdmVyLCB3aGljaCBpcyBzb21ld2hhdCBuaWNoZS4gSXQgcmVxdWlyZXMgc3BlY2lmaWMgaGFyZHdhcmUg4oCTIFNESU8sIFBDSWUsIG9yIFVTQiBNYXJ2ZWxsIFdpRmkgY2FyZHMuIENhbiBJIGV2ZW4gZ2V0IGF0IGl0IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IExpa2VseSBub3QgZGlyZWN0bHksIGFzIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSBNYXJ2ZWxsIFdpRmkuIEhvd2V2ZXIsIHRoZSBsaWdodGJ1bGIganVzdCB3ZW50IG9mZjogYG13aWZpZXhgIGhhcyBhIFVTQiBkcml2ZXIsIGBtd2lmaWV4X3VzYmAhIFRoYXQgb3BlbnMgdXAgcG9zc2liaWxpdGllcy4KClVTQiBkZXZpY2VzIGNhbiBvZnRlbiBiZSBmdXp6ZWQgdXNpbmcgYGR1bW15X2hjZGAgb3Igc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcy4gSWYgSSBjYW4gcmVhY2ggYG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTFgIHRocm91Z2ggdGhlIFVTQiBwYXRoLCB0aGlzIGJlY29tZXMgYSBtdWNoIG1vcmUgaW50ZXJlc3RpbmcgdGFyZ2V0LiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGNhbGxlZCBkdXJpbmcgYWRhcHRlciBpbml0aWFsaXphdGlvbiwgc28gdGhhdCBzZWVtcyBwcm9taXNpbmcuCgpOb3csIGxldCYjMzk7cyBkaXZlIGludG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuY2Agb3IgYSBzaW1pbGFyIGZpbGUgdG8gY29uZmlybSB3aGV0aGVyIHRoaXMgaW5pdGlhbGl6YXRpb24gcGF0aCBpcyBVU0ItYWNjZXNzaWJsZSBhbmQgc2VlIGlmIEkgY2FuIGZpZ3VyZSBvdXQgaG93IHRvIHRyaWdnZXIgdGhhdCBgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMWAgY2FsbCB0aHJvdWdoIGEgVVNCIGRldmljZS4gSWYgSSBjYW4sIHRoaXMgY2hhbmdlLCBldmVuIHRob3VnaCBpdCYjMzk7cyBzbWFsbCwgY291bGQgYmUgd29ydGggYSBmdXp6aW5nIGNhbXBhaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDAxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9NDY2OD1pbnQgbXdpZmlleF9pbml0X2NoYW5uZWxfc2Nhbl9nYXAoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy00Njk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NDY5ODppbnQgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNDY5OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmgtMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuaDoxNTppbnQgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICopO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmgtMTYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz01MzU9c3RhdGljIGludCBfbXdpZmlleF9md19kcGMoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmaXJtd2FyZSwgdm9pZCAqY29udGV4dClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTU4Ni1cdGlmICghYWRhcHRlci1cdTAwM2V3aXBoeSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzo1ODc6XHRcdGlmIChtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExKGFkYXB0ZXIpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTU4OC1cdFx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTMzCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMWAgQ2FsbCoqCgpPa2F5LCBzbyBgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMWAgaXMgdHJpZ2dlcmVkIGZyb20gYF9td2lmaWV4X2Z3X2RwY2AuIFJpZ2h0LCB0aGF0JiMzOTtzIHRoZSBmaXJtd2FyZSBkb3dubG9hZCBjb21wbGV0aW9uIGNhbGxiYWNrLiBUaGF04oCZcyBpbnRlcmVzdGluZy4gSW1tZWRpYXRlbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgZnV6emluZyBhbmQgcmVhY2hhYmlsaXR5LiBJZiBgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMWAgZGVwZW5kcyBvbiBhIHN1Y2Nlc3NmdWwgZmlybXdhcmUgZG93bmxvYWQsIGdldHRpbmcgdGhlcmUgd2l0aCBhIGZ1enplciAqY291bGQqIGJlIHRyaWNreS4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZSBmdXp6ZXIgcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBmaXJtd2FyZSBkYXRhLCBvciBpZiB0aGUgZHJpdmVyIGNhbiBzb21laG93IHByb2NlZWQgd2l0aG91dCBpdC4gTXkgZ3V0IHNheXMgSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgX213aWZpZXhfZndfZHBjYCB0byBjb25maXJtIHRoaXMgcG90ZW50aWFsIGRlcGVuZGVuY3kgYW5kIHVuZGVyc3RhbmQgdGhlIHBhdGggdG8gdGhpcyBjcnVjaWFsIGZ1bmN0aW9uLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfbXdpZmlleF9md19kcGMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz01MTA9c3RhdGljIHZvaWQgbXdpZmlleF90ZXJtaW5hdGVfd29ya3F1ZXVlKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy01MzQtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjUzNTpzdGF0aWMgaW50IF9td2lmaWV4X2Z3X2RwYyhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZpcm13YXJlLCB2b2lkICpjb250ZXh0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy01MzYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9Njg5PXN0YXRpYyB2b2lkIG13aWZpZXhfZndfZHBjKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZmlybXdhcmUsIHZvaWQgKmNvbnRleHQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTY5MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjY5MTpcdF9td2lmaWV4X2Z3X2RwYyhmaXJtd2FyZSwgY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTY5Mi19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz0xNTMwPW13aWZpZXhfcmVpbml0X3N3KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0xNTkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoxNTkzOlx0LyogX213aWZpZXhfZndfZHBjKCkgZG9lcyBpdHMgb3duIGNsZWFudXAgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6MTU5NDpcdHJldCA9IF9td2lmaWV4X2Z3X2RwYyhhZGFwdGVyLVx1MDAzZWZpcm13YXJlLCBhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTU5NS1cdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjgxCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOgoKKipQb3RlbnRpYWwgRmlybXdhcmUgRGVwZW5kZW5jeSBGYWlsdXJlKioKClJpZ2h0LCBzbyBpZiB0aGUgZXhwZWN0ZWQgZmlybXdhcmUgaW1hZ2UgaXMgc29tZWhvdyBtaXNzaW5nIG9yIGluYWNjZXNzaWJsZSwgaXQmIzM5O3MgcHJldHR5IGxpa2VseSB0aGF0IHRoZSBgX213aWZpZXhfZndfZHBjYCBmdW5jdGlvbiB3aWxsIGp1c3QgY3JhcCBvdXQuIFRoYXQmIzM5O3MgdGhlIG1vc3QgcHJvYmFibGUgZmFpbHVyZSBwb2ludCwgZ2l2ZW4gdGhlIGNvbnRleHQuIExldCYjMzk7cyBkaWcgaW50byB0aGF0IGBfbXdpZmlleF9md19kcGNgIHJvdXRpbmUgYW5kIHNlZSBleGFjdGx5ICp3aHkqIGl0IHdvdWxkIGZhaWwuIEdvdHRhIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY3kgY2hhaW4gYW5kIGFueSBpbXBsaWNpdCBhc3N1bXB0aW9ucyBpdCBtYWtlcyBhYm91dCB0aGUgZmlybXdhcmUmIzM5O3MgYXZhaWxhYmlsaXR5LiBUaGVyZSYjMzk7cyBwcm9iYWJseSBzb21lIGVycm9yIGhhbmRsaW5nIChvciBsYWNrIHRoZXJlb2YpIGluIHRoZXJlIHRoYXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kLiBOZWVkIHRvIGNvbmZpcm0gbXkgYXNzdW1wdGlvbiwgb2J2aW91c2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDAxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDUzMDpcdCAqXG4gNTMxOlx0ICogVGhlIG1haW4gaW5pdGlhbGl6YXRpb24gc3RlcHMgZm9sbG93ZWQgYXJlIC1cbiA1MzI6XHQgKiAgICAgIC0gRG93bmxvYWQgdGhlIGNvcnJlY3QgZmlybXdhcmUgdG8gY2FyZFxuIDUzMzpcdCAqICAgICAgLSBJc3N1ZSB0aGUgaW5pdCBjb21tYW5kcyB0byBmaXJtd2FyZVxuIDUzNDpcdCAqL1xuIDUzNTpcdHN0YXRpYyBpbnQgX213aWZpZXhfZndfZHBjKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZmlybXdhcmUsIHZvaWQgKmNvbnRleHQpXG4gNTM2Olx0e1xuIDUzNzpcdFx0aW50IHJldDtcbiA1Mzg6XHRcdGNoYXIgZm10WzY0XTtcbiA1Mzk6XHRcdHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBjb250ZXh0O1xuIDU0MDpcdFx0c3RydWN0IG13aWZpZXhfZndfaW1hZ2UgZnc7XG4gNTQxOlx0XHRib29sIGluaXRfZmFpbGVkID0gZmFsc2U7XG4gNTQyOlx0XHRzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2O1xuIDU0MzpcdFx0c3RydWN0IGNvbXBsZXRpb24gKmZ3X2RvbmUgPSBhZGFwdGVyLVx1MDAzZWZ3X2RvbmU7XG4gNTQ0Olx0XG4gNTQ1Olx0XHRpZiAoIWZpcm13YXJlKSB7XG4gNTQ2Olx0XHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuIDU0NzpcdFx0XHRcdCAgICBcJiMzNDtGYWlsZWQgdG8gZ2V0IGZpcm13YXJlICVzXFxuXCYjMzQ7LCBhZGFwdGVyLVx1MDAzZWZ3X25hbWUpO1xuIDU0ODpcdFx0XHRnb3RvIGVycl9kbmxkX2Z3O1xuIDU0OTpcdFx0fVxuIDU1MDpcdFxuIDU1MTpcdFx0bWVtc2V0KFx1MDAyNmZ3LCAwLCBzaXplb2Yoc3RydWN0IG13aWZpZXhfZndfaW1hZ2UpKTtcbiA1NTI6XHRcdGFkYXB0ZXItXHUwMDNlZmlybXdhcmUgPSBmaXJtd2FyZTtcbiA1NTM6XHRcdGZ3LmZ3X2J1ZiA9ICh1OCAqKSBhZGFwdGVyLVx1MDAzZWZpcm13YXJlLVx1MDAzZWRhdGE7XG4gNTU0Olx0XHRmdy5md19sZW4gPSBhZGFwdGVyLVx1MDAzZWZpcm13YXJlLVx1MDAzZXNpemU7XG4gNTU1Olx0XG4gNTU2Olx0XHRpZiAoYWRhcHRlci1cdTAwM2VpZl9vcHMuZG5sZF9mdykge1xuIDU1NzpcdFx0XHRyZXQgPSBhZGFwdGVyLVx1MDAzZWlmX29wcy5kbmxkX2Z3KGFkYXB0ZXIsIFx1MDAyNmZ3KTtcbiA1NTg6XHRcdH0gZWxzZSB7XG4gNTU5Olx0XHRcdHJldCA9IG13aWZpZXhfZG5sZF9mdyhhZGFwdGVyLCBcdTAwMjZmdyk7XG4gNTYwOlx0XHR9XG4gNTYxOlx0XG4gNTYyOlx0XHRpZiAocmV0ID09IC0xKVxuIDU2MzpcdFx0XHRnb3RvIGVycl9kbmxkX2Z3O1xuIDU2NDpcdFxuIDU2NTpcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgTVNHLCBcJiMzNDtXTEFOIEZXIGlzIGFjdGl2ZVxcblwmIzM0Oyk7XG4gNTY2Olx0XG4gNTY3Olx0XHRpZiAoY2FsX2RhdGFfY2ZnKSB7XG4gNTY4Olx0XHRcdGlmICgocmVxdWVzdF9maXJtd2FyZShcdTAwMjZhZGFwdGVyLVx1MDAzZWNhbF9kYXRhLCBjYWxfZGF0YV9jZmcsXG4gNTY5Olx0XHRcdFx0XHQgICAgICBhZGFwdGVyLVx1MDAzZWRldikpIFx1MDAzYyAwKVxuIDU3MDpcdFx0XHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuIDU3MTpcdFx0XHRcdFx0ICAgIFwmIzM0O0NhbCBkYXRhIHJlcXVlc3RfZmlybXdhcmUoKSBmYWlsZWRcXG5cJiMzNDspO1xuIDU3MjpcdFx0fVxuIDU3MzpcdFxuIDU3NDpcdFx0LyogZW5hYmxlIGhvc3QgaW50ZXJydXB0IGFmdGVyIGZ3IGRubGQgaXMgc3VjY2Vzc2Z1bCAqL1xuIDU3NTpcdFx0aWYgKGFkYXB0ZXItXHUwMDNlaWZfb3BzLmVuYWJsZV9pbnQpIHtcbiA1NzY6XHRcdFx0aWYgKGFkYXB0ZXItXHUwMDNlaWZfb3BzLmVuYWJsZV9pbnQoYWRhcHRlcikpXG4gNTc3Olx0XHRcdFx0Z290byBlcnJfZG5sZF9mdztcbiA1Nzg6XHRcdH1cbiA1Nzk6XHRcbiA1ODA6XHRcdHJldCA9IG13aWZpZXhfaW5pdF9mdyhhZGFwdGVyKTtcbiA1ODE6XHRcdGlmIChyZXQgPT0gLTEpXG4gNTgyOlx0XHRcdGdvdG8gZXJyX2luaXRfZnc7XG4gNTgzOlx0XG4gNTg0Olx0XHRtYXliZV9xdWlya19md19kaXNhYmxlX2RzKGFkYXB0ZXIpO1xuIDU4NTpcdFxuIDU4NjpcdFx0aWYgKCFhZGFwdGVyLVx1MDAzZXdpcGh5KSB7XG4gNTg3Olx0XHRcdGlmIChtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExKGFkYXB0ZXIpKSB7XG4gNTg4Olx0XHRcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsXG4gNTg5Olx0XHRcdFx0XHQgICAgXCYjMzQ7Y2Fubm90IHJlZ2lzdGVyIHdpdGggY2ZnODAyMTFcXG5cJiMzNDspO1xuIDU5MDpcdFx0XHRcdGdvdG8gZXJyX2luaXRfZnc7XG4gNTkxOlx0XHRcdH1cbiA1OTI6XHRcdH1cbiA1OTM6XHRcbiA1OTQ6XHRcdGlmIChtd2lmaWV4X2luaXRfY2hhbm5lbF9zY2FuX2dhcChhZGFwdGVyKSkge1xuIDU5NTpcdFx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcbiA1OTY6XHRcdFx0XHQgICAgXCYjMzQ7Y291bGQgbm90IGluaXQgY2hhbm5lbCBzdGF0cyB0YWJsZVxcblwmIzM0Oyk7XG4gNTk3Olx0XHRcdGdvdG8gZXJyX2luaXRfY2hhbl9zY2FuO1xuIDU5ODpcdFx0fVxuIDU5OTpcdFxuIDYwMDpcdFx0aWYgKGRyaXZlcl9tb2RlKSB7XG4gNjAxOlx0XHRcdGRyaXZlcl9tb2RlIFx1MDAyNj0gTVdJRklFWF9EUklWRVJfTU9ERV9CSVRNQVNLO1xuIDYwMjpcdFx0XHRkcml2ZXJfbW9kZSB8PSBNV0lGSUVYX0RSSVZFUl9NT0RFX1NUQTtcbiA2MDM6XHRcdH1cbiA2MDQ6XHRcbiA2MDU6XHRcdHJ0bmxfbG9jaygpO1xuIDYwNjpcdFx0d2lwaHlfbG9jayhhZGFwdGVyLVx1MDAzZXdpcGh5KTtcbiA2MDc6XHRcdC8qIENyZWF0ZSBzdGF0aW9uIGludGVyZmFjZSBieSBkZWZhdWx0ICovXG4gNjA4Olx0XHR3ZGV2ID0gbXdpZmlleF9hZGRfdmlydHVhbF9pbnRmKGFkYXB0ZXItXHUwMDNld2lwaHksIFwmIzM0O21sYW4lZFwmIzM0OywgTkVUX05BTUVfRU5VTSxcbiA2MDk6XHRcdFx0XHRcdFx0Tkw4MDIxMV9JRlRZUEVfU1RBVElPTiwgTlVMTCk7XG4gNjEwOlx0XHRpZiAoSVNfRVJSKHdkZXYpKSB7XG4gNjExOlx0XHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuIDYxMjpcdFx0XHRcdCAgICBcJiMzNDtjYW5ub3QgY3JlYXRlIGRlZmF1bHQgU1RBIGludGVyZmFjZVxcblwmIzM0Oyk7XG4gNjEzOlx0XHRcdHdpcGh5X3VubG9jayhhZGFwdGVyLVx1MDAzZXdpcGh5KTtcbiA2MTQ6XHRcdFx0cnRubF91bmxvY2soKTtcbiA2MTU6XHRcdFx0Z290byBlcnJfYWRkX2ludGY7XG4gNjE2Olx0XHR9XG4gNjE3Olx0XG4gNjE4Olx0XHRpZiAoZHJpdmVyX21vZGUgXHUwMDI2IE1XSUZJRVhfRFJJVkVSX01PREVfVUFQKSB7XG4gNjE5Olx0XHRcdHdkZXYgPSBtd2lmaWV4X2FkZF92aXJ0dWFsX2ludGYoYWRhcHRlci1cdTAwM2V3aXBoeSwgXCYjMzQ7dWFwJWRcJiMzNDssIE5FVF9OQU1FX0VOVU0sXG4gNjIwOlx0XHRcdFx0XHRcdFx0Tkw4MDIxMV9JRlRZUEVfQVAsIE5VTEwpO1xuIDYyMTpcdFx0XHRpZiAoSVNfRVJSKHdkZXYpKSB7XG4gNjIyOlx0XHRcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsXG4gNjIzOlx0XHRcdFx0XHQgICAgXCYjMzQ7Y2Fubm90IGNyZWF0ZSBBUCBpbnRlcmZhY2VcXG5cJiMzNDspO1xuIDYyNDpcdFx0XHRcdHdpcGh5X3VubG9jayhhZGFwdGVyLVx1MDAzZXdpcGh5KTtcbiA2MjU6XHRcdFx0XHRydG5sX3VubG9jaygpO1xuIDYyNjpcdFx0XHRcdGdvdG8gZXJyX2FkZF9pbnRmO1xuIDYyNzpcdFx0XHR9XG4gNjI4Olx0XHR9XG4gNjI5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDE6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQ2MgoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDI4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgTWFydmVsbCBXaS1GaSBGaXJtd2FyZSBMb2FkaW5nIFByb2Nlc3MqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYF9td2lmaWV4X2Z3X2RwY2AgZnVuY3Rpb24gYW5kIGl0JiMzOTtzIGltbWVkaWF0ZWx5IGNsZWFyIHRoYXQgaXQmIzM5O3MgKmNvbXBsZXRlbHkqIHJlbGlhbnQgb24gdGhlIHByZXNlbmNlIG9mIGZpcm13YXJlLiBJZiBgZmlybXdhcmVgIGlzIE5VTEwsIGl0JiMzOTtzIGEgaGFyZCBmYWlsLiBUaGlzIG1lYW5zIHRoYXQgaWYgdGhlIGZpcm13YXJlIGlzbiYjMzk7dCBzdWNjZXNzZnVsbHkgbG9hZGVkLCB3ZSYjMzk7bGwgbmV2ZXIgZXZlbiBnZXQgdG8gYG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTFgLiBUaGF0JiMzOTtzIGltcG9ydGFudCB0byByZW1lbWJlciBmb3IgZnV6emluZyBsYXRlci4KClRoZSBpbW1lZGlhdGUgcHJvYmxlbSBpcywgc3l6a2FsbGVyICp0eXBpY2FsbHkqIGRvZXNuJiMzOTt0IHByb3ZpZGUgYXJiaXRyYXJ5IGZpcm13YXJlIGJsb2JzIHVubGVzcyB0aGV5IGFyZSB3aXRoaW4gYGxpbnV4LWZpcm13YXJlYCBhbmQgaW5jbHVkZWQgaW4gdGhlIHN5emthbGxlciBpbWFnZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgd2UgZXZlbiBoYXZlIHRoZSBNYXJ2ZWxsIGZpcm13YXJlIGluIHRoZSBlbnZpcm9ubWVudC4gRXZlbiBpZiB3ZSBkbywgdGhhdCYjMzk7cyBub3QgdGhlIGVuZCBvZiB0aGUgc3RvcnkuCgpFdmVuIGlmIHdlICpoYXZlKiB0aGUgZmlybXdhcmUgYXZhaWxhYmxlLCB0aGUgVVNCIGZ1enplciBpcyBnb2luZyB0byBoYXZlIHRvIGRvIGEgKnBlcmZlY3QqIGpvYiBvZiBlbXVsYXRpbmcgdGhlIGZpcm13YXJlIGRvd25sb2FkIHByb2Nlc3MuIFRoaXMgbWVhbnMgY29ycmVjdGx5IGludm9raW5nIGVpdGhlciBgYWRhcHRlci0mZ3Q7aWZfb3BzLmRubGRfZncoYWRhcHRlciwgJmFtcDtmdylgIG9yIGBtd2lmaWV4X2RubGRfZncoYWRhcHRlciwgJmFtcDtmdylgLiBBbmQgdGhlbiBpdCBnZXRzIGV2ZW4gdHJpY2tpZXIuCgpBZnRlciB0aGUgZmlybXdhcmUgaXMgZG93bmxvYWRlZCwgYG13aWZpZXhfaW5pdF9mdyhhZGFwdGVyKWAgaXMgY2FsbGVkLiAqVGhpcyogaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZyBiZWNhdXNlIHRoaXMgaXMgd2hlcmUgdGhlIGRyaXZlciBhY3R1YWxseSAqdGFsa3MqIHRvIHRoZSBkZXZpY2UuIEl0IHNlbmRzIGNvbW1hbmRzIGFuZCwgY3JpdGljYWxseSwgKmV4cGVjdHMgcmVzcG9uc2VzKi4gSWYgdGhlIFVTQiBmdXp6ZXIgaXNuJiMzOTt0IGFibGUgdG8gcHJvdmlkZSB2YWxpZCByZXNwb25zZXMgdG8gdGhlc2UgaW5pdGlhbGl6YXRpb24gY29tbWFuZHMsIGBtd2lmaWV4X2luaXRfZndgIGlzIGdvaW5nIHRvIGZhaWwuIFRoYXQgd291bGQgc3RvcCB0aGUgZHJpdmVyIGZyb20gd29ya2luZy4KCkkgbmVlZCB0byBkaXZlIGludG8gYG13aWZpZXhfaW5pdF9md2AgdG8gc2VlIHdoYXQgdGhvc2Ugc3BlY2lmaWMgY29tbWFuZHMgYXJlIGFuZCB3aGF0IGtpbmQgb2YgcmVzcG9uc2VzIHRoZSBkZXZpY2UgZXhwZWN0cy4gVGhpcyBpcyB0aGUgY3J1Y2lhbCBhcmVhIHRvIGludmVzdGlnYXRlIHRvIGlkZW50aWZ5IHBvdGVudGlhbCBmdXp6aW5nIHRhcmdldHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDAxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfaW5pdF9mdyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaW5pdC5jPTQxNz1pbnQgbXdpZmlleF9pbml0X2xvY2tfbGlzdChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9pbml0LmMtNDg0LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2luaXQuYzo0ODU6aW50IG13aWZpZXhfaW5pdF9mdyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2luaXQuYy00ODYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9NTM1PXN0YXRpYyBpbnQgX213aWZpZXhfZndfZHBjKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZmlybXdhcmUsIHZvaWQgKmNvbnRleHQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy01NzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjU4MDpcdHJldCA9IG13aWZpZXhfaW5pdF9mdyhhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtNTgxLVx0aWYgKHJldCA9PSAtMSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTEwNTY9dm9pZCBtd2lmaWV4X2ZyZWVfcHJpdihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTA1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTA1ODppbnQgbXdpZmlleF9pbml0X2Z3KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMDU5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTc5CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gYG13aWZpZXhfaW5pdF9md2AuIEkgbmVlZCB0byBnZXQgYSBjbGVhciB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgZnVuY3Rpb24mIzM5O3MgcHVycG9zZSB3aXRoaW4gdGhlIGJyb2FkZXIgZHJpdmVyIGNvbnRleHQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0IGFyZSB0aGUga2V5IHN0ZXBzIGludm9sdmVkIGluIGluaXRpYWxpemluZyB0aGUgZmlybXdhcmUgZm9yIHRoZSBNYXJ2ZWxsIFdpLUZpIGFkYXB0ZXI/IFRoaXMgZnVuY3Rpb24gaXMgY2xlYXJseSBjcml0aWNhbCwgYXMgdGhlIG5hbWUgc3VnZ2VzdHMgaXQgaGFuZGxlcyBmaXJtd2FyZSBpbml0aWFsaXphdGlvbiwgd2hpY2ggaXMgYSBmb3VuZGF0aW9uYWwgc3RlcCBmb3IgYW55IGhhcmR3YXJlIGRyaXZlci4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBmdW5jdGlvbiB3aWxsIGFsbG9jYXRlIHJlc291cmNlcywgbG9hZCB0aGUgZmlybXdhcmUgaW1hZ2UsIGxpa2VseSBjb25maWd1cmUgc29tZSBoYXJkd2FyZSByZWdpc3RlcnMsIGFuZCBoYW5kbGUgYW55IG5lY2Vzc2FyeSBlcnJvciBjaGVja2luZy4gSSYjMzk7bSBhbHNvIGFudGljaXBhdGluZyBpdCYjMzk7bGwgaW50ZXJhY3Qgd2l0aCBzb21lIG9mIHRoZSBtb3JlIGdlbmVyYWwgaGFyZHdhcmUgaW50ZXJmYWNlIGZ1bmN0aW9ucy4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSBob3cgd2VsbCBteSBhc3N1bXB0aW9ucyBhbGlnbiB3aXRoIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwMTozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9pbml0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0ODA6XHQgKiAgICAgIC0gSW5pdGlhbGl6ZSB0aGUgYWRhcHRlciBzdHJ1Y3R1cmVcbiA0ODE6XHQgKiAgICAgIC0gSW5pdGlhbGl6ZSB0aGUgcHJpdmF0ZSBzdHJ1Y3R1cmVcbiA0ODI6XHQgKiAgICAgIC0gQWRkIEJTUyBwcmlvcml0eSB0YWJsZXMgdG8gdGhlIGFkYXB0ZXIgc3RydWN0dXJlXG4gNDgzOlx0ICogICAgICAtIEZvciBlYWNoIGludGVyZmFjZSwgc2VuZCB0aGUgaW5pdCBjb21tYW5kcyB0byBmaXJtd2FyZVxuIDQ4NDpcdCAqL1xuIDQ4NTpcdGludCBtd2lmaWV4X2luaXRfZncoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbiA0ODY6XHR7XG4gNDg3Olx0XHRpbnQgcmV0O1xuIDQ4ODpcdFx0c3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdjtcbiA0ODk6XHRcdHU4IGksIGZpcnN0X3N0YSA9IHRydWU7XG4gNDkwOlx0XG4gNDkxOlx0XHRhZGFwdGVyLVx1MDAzZWh3X3N0YXR1cyA9IE1XSUZJRVhfSFdfU1RBVFVTX0lOSVRJQUxJWklORztcbiA0OTI6XHRcbiA0OTM6XHRcdC8qIEFsbG9jYXRlIG1lbW9yeSBmb3IgbWVtYmVyIG9mIGFkYXB0ZXIgc3RydWN0dXJlICovXG4gNDk0Olx0XHRyZXQgPSBtd2lmaWV4X2FsbG9jYXRlX2FkYXB0ZXIoYWRhcHRlcik7XG4gNDk1Olx0XHRpZiAocmV0KVxuIDQ5NjpcdFx0XHRyZXR1cm4gLTE7XG4gNDk3Olx0XG4gNDk4Olx0XHQvKiBJbml0aWFsaXplIGFkYXB0ZXIgc3RydWN0dXJlICovXG4gNDk5Olx0XHRtd2lmaWV4X2luaXRfYWRhcHRlcihhZGFwdGVyKTtcbiA1MDA6XHRcbiA1MDE6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFkYXB0ZXItXHUwMDNlcHJpdl9udW07IGkmIzQzOyYjNDM7KSB7XG4gNTAyOlx0XHRcdHByaXYgPSBhZGFwdGVyLVx1MDAzZXByaXZbaV07XG4gNTAzOlx0XG4gNTA0Olx0XHRcdC8qIEluaXRpYWxpemUgcHJpdmF0ZSBzdHJ1Y3R1cmUgKi9cbiA1MDU6XHRcdFx0cmV0ID0gbXdpZmlleF9pbml0X3ByaXYocHJpdik7XG4gNTA2Olx0XHRcdGlmIChyZXQpXG4gNTA3Olx0XHRcdFx0cmV0dXJuIC0xO1xuIDUwODpcdFx0fVxuIDUwOTpcdFx0aWYgKGFkYXB0ZXItXHUwMDNlbWZnX21vZGUpIHtcbiA1MTA6XHRcdFx0YWRhcHRlci1cdTAwM2Vod19zdGF0dXMgPSBNV0lGSUVYX0hXX1NUQVRVU19SRUFEWTtcbiA1MTE6XHRcdH0gZWxzZSB7XG4gNTEyOlx0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFkYXB0ZXItXHUwMDNlcHJpdl9udW07IGkmIzQzOyYjNDM7KSB7XG4gNTEzOlx0XHRcdFx0cmV0ID0gbXdpZmlleF9zdGFfaW5pdF9jbWQoYWRhcHRlci1cdTAwM2Vwcml2W2ldLFxuIDUxNDpcdFx0XHRcdFx0XHRcdCAgIGZpcnN0X3N0YSk7XG4gNTE1Olx0XHRcdFx0aWYgKHJldCA9PSAtMSlcbiA1MTY6XHRcdFx0XHRcdHJldHVybiAtMTtcbiA1MTc6XHRcbiA1MTg6XHRcdFx0XHRmaXJzdF9zdGEgPSBmYWxzZTtcbiA1MTk6XHRcdFx0fVxuIDUyMDpcdFx0fVxuIDUyMTpcdFxuIDUyMjpcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFkYXB0ZXItXHUwMDNlY21kX3BlbmRpbmdfcV9sb2NrKTtcbiA1MjM6XHRcdFdBUk5fT04oIWxpc3RfZW1wdHkoXHUwMDI2YWRhcHRlci1cdTAwM2VjbWRfcGVuZGluZ19xKSk7XG4gNTI0Olx0XHRzcGluX3VubG9ja19iaChcdTAwMjZhZGFwdGVyLVx1MDAzZWNtZF9wZW5kaW5nX3FfbG9jayk7XG4gNTI1Olx0XG4gNTI2Olx0XHRhZGFwdGVyLVx1MDAzZWh3X3N0YXR1cyA9IE1XSUZJRVhfSFdfU1RBVFVTX1JFQURZO1xuIDUyNzpcdFxuIDUyODpcdFx0aWYgKGFkYXB0ZXItXHUwMDNlaWZfb3BzLmluaXRfZndfcG9ydClcbiA1Mjk6XHRcdFx0YWRhcHRlci1cdTAwM2VpZl9vcHMuaW5pdF9md19wb3J0KGFkYXB0ZXIpO1xuIDUzMDpcdFxuIDUzMTpcdFx0cmV0dXJuIDA7XG4gNTMyOlx0fVxuIDUzMzpcdFxuIDUzNDpcdC8qXG4gNTM1Olx0ICogVGhpcyBmdW5jdGlvbiBkZWxldGVzIHRoZSBCU1MgcHJpb3JpdHkgdGFibGVzLlxuIDUzNjpcdCAqXG4gNTM3Olx0ICogVGhlIGZ1bmN0aW9uIHRyYXZlcnNlcyB0aHJvdWdoIGFsbCB0aGUgYWxsb2NhdGVkIEJTUyBwcmlvcml0eSBub2Rlc1xuIDUzODpcdCAqIGluIGV2ZXJ5IEJTUyBwcmlvcml0eSB0YWJsZSBhbmQgZnJlZXMgdGhlbS5cbiA1Mzk6XHQgKi9cbiA1NDA6XHRzdGF0aWMgdm9pZCBtd2lmaWV4X2RlbGV0ZV9ic3NfcHJpb190Ymwoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcbiA1NDE6XHR7XG4gNTQyOlx0XHRpbnQgaTtcbiA1NDM6XHRcdHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG4gNTQ0Olx0XHRzdHJ1Y3QgbXdpZmlleF9ic3NfcHJpb19ub2RlICpic3NwcmlvX25vZGUsICp0bXBfbm9kZTtcbiA1NDU6XHRcdHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQ7XG4gNTQ2Olx0XHRzcGlubG9ja190ICpsb2NrOyAvKiBic3MgcHJpb3JpdHkgbG9jayAqL1xuIDU0NzpcdFxuIDU0ODpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWRhcHRlci1cdTAwM2Vwcml2X251bTsgJiM0MzsmIzQzO2kpIHtcbiA1NDk6XHRcdFx0aGVhZCA9IFx1MDAyNmFkYXB0ZXItXHUwMDNlYnNzX3ByaW9fdGJsW2ldLmJzc19wcmlvX2hlYWQ7XG4gNTUwOlx0XHRcdGxvY2sgPSBcdTAwMjZhZGFwdGVyLVx1MDAzZWJzc19wcmlvX3RibFtpXS5ic3NfcHJpb19sb2NrO1xuIDU1MTpcdFx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBJTkZPLFxuIDU1MjpcdFx0XHRcdCAgICBcJiMzNDtpbmZvOiBkZWxldGUgQlNTIHByaW9yaXR5IHRhYmxlLFxcdFwmIzM0O1xuIDU1MzpcdFx0XHRcdCAgICBcJiMzNDtic3NfdHlwZSA9ICVkLCBic3NfbnVtID0gJWQsIGkgPSAlZCxcXHRcJiMzNDtcbiA1NTQ6XHRcdFx0XHQgICAgXCYjMzQ7aGVhZCA9ICVwXFxuXCYjMzQ7LFxuIDU1NTpcdFx0XHRcdCAgICBwcml2LVx1MDAzZWJzc190eXBlLCBwcml2LVx1MDAzZWJzc19udW0sIGksIGhlYWQpO1xuIDU1NjpcdFxuIDU1NzpcdFx0XHR7XG4gNTU4Olx0XHRcdFx0c3Bpbl9sb2NrX2JoKGxvY2spO1xuIDU1OTpcdFx0XHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShic3NwcmlvX25vZGUsIHRtcF9ub2RlLCBoZWFkLFxuIDU2MDpcdFx0XHRcdFx0XHRcdCBsaXN0KSB7XG4gNTYxOlx0XHRcdFx0XHRpZiAoYnNzcHJpb19ub2RlLVx1MDAzZXByaXYgPT0gcHJpdikge1xuIDU2MjpcdFx0XHRcdFx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBJTkZPLFxuIDU2MzpcdFx0XHRcdFx0XHRcdCAgICBcJiMzNDtpbmZvOiBEZWxldGVcXHRcJiMzNDtcbiA1NjQ6XHRcdFx0XHRcdFx0XHQgICAgXCYjMzQ7bm9kZSAlcCwgbmV4dCA9ICVwXFxuXCYjMzQ7LFxuIDU2NTpcdFx0XHRcdFx0XHRcdCAgICBic3NwcmlvX25vZGUsIHRtcF9ub2RlKTtcbiA1NjY6XHRcdFx0XHRcdFx0bGlzdF9kZWwoXHUwMDI2YnNzcHJpb19ub2RlLVx1MDAzZWxpc3QpO1xuIDU2NzpcdFx0XHRcdFx0XHRrZnJlZShic3NwcmlvX25vZGUpO1xuIDU2ODpcdFx0XHRcdFx0fVxuIDU2OTpcdFx0XHRcdH1cbiA1NzA6XHRcdFx0XHRzcGluX3VubG9ja19iaChsb2NrKTtcbiA1NzE6XHRcdFx0fVxuIDU3MjpcdFx0fVxuIDU3MzpcdH1cbiA1NzQ6XHRcbiA1NzU6XHQvKlxuIDU3NjpcdCAqIFRoaXMgZnVuY3Rpb24gZnJlZXMgdGhlIHByaXZhdGUgc3RydWN0dXJlLCBpbmNsdWRpbmcgY2xlYW5zXG4gNTc3Olx0ICogdXAgdGhlIFRYIGFuZCBSWCBxdWV1ZXMgYW5kIGZyZWVzIHRoZSBCU1MgcHJpb3JpdHkgdGFibGVzLlxuIDU3ODpcdCAqL1xuIDU3OTpcdHZvaWQgbXdpZmlleF9mcmVlX3ByaXYoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTI5OAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRmlybXdhcmUgSW5pdGlhbGl6YXRpb24gUHJvY2VzcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBpbml0aWFsaXphdGlvbiByb3V0aW5lLCBhbmQgaXQgc2VlbXMgdGhlIGNyaXRpY2FsIHBhcnQgaXMgdGhpcyBgbXdpZmlleF9zdGFfaW5pdF9jbWRgIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIHRoYXQmIzM5O3MgdGhlIHBvaW50IHdoZXJlIHdlJiMzOTtyZSBhY3R1YWxseSBwdXNoaW5nIGNvbW1hbmRzIGRvd24gdG8gdGhlIGZpcm13YXJlLiBNYWtlcyBzZW5zZTsgdGhhdCYjMzk7cyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLCBzbyB0byBzcGVhay4KCk15IGluaXRpYWwgY29uY2VybiBpcywgaWYgdGhhdCBmYWlscyDigJMgaWYgYG13aWZpZXhfc3RhX2luaXRfY21kYCBoaXRzIGEgc25hZyDigJMgdGhlIGVudGlyZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGJvbWJzIG91dCB3aXRoIGEgcmV0dXJuIGNvZGUgb2YgLTEgZnJvbSBgbXdpZmlleF9pbml0X2Z3YC4gU28sIHRoZSBmYWlsdXJlIG9mIHRoZSBjb21tYW5kIHRvIGV4ZWN1dGUgaXMgdGhlIHNpbmdsZSBwb2ludCBvZiBmYWlsdXJlLgoKR2l2ZW4gdGhhdCwgSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiwgcmlnaHQgbm93LCBvbiB1bmRlcnN0YW5kaW5nIGV4YWN0bHkgd2hhdCBgbXdpZmlleF9zdGFfaW5pdF9jbWRgIGlzIGRvaW5nIGFuZCB3aGF0IGl0cyBmYWlsdXJlIG1vZGVzIGFyZS4gV2UgaGF2ZSB0byB1bmRlcnN0YW5kIHRoaXMgZnVuY3Rpb24gY29tcGxldGVseSwgYmVjYXVzZSBpdCBkaWN0YXRlcyB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIHRoZSBlbnRpcmUgcHJvY2Vzcy4gTm8gcm9vbSBmb3IgYW1iaWd1aXR5IGhlcmUuIExldCYjMzk7cyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgd2h5IHRoaXMgbWlnaHQgZmFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF9zdGFfaW5pdF9jbWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MTA4Mz1td2lmaWV4X2NoYW5nZV92aWZfdG9fcDJwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTEyOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjExMzA6XHRpZiAobXdpZmlleF9zdGFfaW5pdF9jbWQocHJpdiwgZmFsc2UpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTEzMS1cdFx0cmV0dXJuIC0xO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTExMzc9bXdpZmlleF9jaGFuZ2VfdmlmX3RvX3N0YV9hZGhvYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTExNzAtXHRcdHJldHVybiAtMTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjExNzE6XHRpZiAobXdpZmlleF9zdGFfaW5pdF9jbWQocHJpdiwgZmFsc2UpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTE3Mi1cdFx0cmV0dXJuIC0xO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTExNzg9bXdpZmlleF9jaGFuZ2VfdmlmX3RvX2FwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTIwNy1cdFx0cmV0dXJuIC0xO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTIwODpcdGlmIChtd2lmaWV4X3N0YV9pbml0X2NtZChwcml2LCBmYWxzZSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xMjA5LVx0XHRyZXR1cm4gLTE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9Mjk4MD1zdHJ1Y3Qgd2lyZWxlc3NfZGV2ICptd2lmaWV4X2FkZF92aXJ0dWFsX2ludGYoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0zMTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MzExNzpcdFx0cmV0ID0gbXdpZmlleF9zdGFfaW5pdF9jbWQocHJpdiwgZmFsc2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMzExOC1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaW5pdC5jPTQ4NT1pbnQgbXdpZmlleF9pbml0X2Z3KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2luaXQuYy01MTItXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFkYXB0ZXItXHUwMDNlcHJpdl9udW07IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaW5pdC5jOjUxMzpcdFx0XHRyZXQgPSBtd2lmaWV4X3N0YV9pbml0X2NtZChhZGFwdGVyLVx1MDAzZXByaXZbaV0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaW5pdC5jLTUxNC1cdFx0XHRcdFx0XHQgICBmaXJzdF9zdGEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTE1Mj12b2lkIG13aWZpZXhfcHJvY2Vzc191YXBfdHhwZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMTUzLVx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMTU0OmludCBtd2lmaWV4X3N0YV9pbml0X2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICosIHU4IGZpcnN0X3N0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTExNTUtaW50IG13aWZpZXhfY21kXzgwMl8xMV9zY2FuKHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYz0yMDMzPWludCBtd2lmaWV4X3N0YV9wcmVwYXJlX2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1aW50MTZfdCBjbWRfbm8sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yMzUzLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYzoyMzU0OmludCBtd2lmaWV4X3N0YV9pbml0X2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OCBmaXJzdF9zdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTIzNTUte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwMTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDc0NAoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgYG13aWZpZXhfc3RhX2luaXRfY21kYCYjMzk7cyBDb21tYW5kIGFuZCBSZXBseSBIYW5kbGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBgbXdpZmlleF9zdGFfaW5pdF9jbWRgLiBNeSBwcmltYXJ5IGNvbmNlcm4gcmlnaHQgbm93IGlzIHRoZSBjb21tYW5kIGZsb3cuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBmdW5jdGlvbiBpbml0aWF0ZXMgY29tbWFuZCB0cmFuc21pc3Npb24gdG8gdGhlIGhhcmR3YXJlIGFuZCB0aGVuIHBhdGllbnRseSB3YWl0cyBmb3IgYSByZXNwb25zZSBmcm9tIHRoZSBkZXZpY2UuIEFyZSB3ZSBkZWFsaW5nIHdpdGggYSBzeW5jaHJvbm91cyBvciBhc3luY2hyb25vdXMgbW9kZWwgaGVyZT8gRG9lcyBpdCB1c2Ugc29tZSBraW5kIG9mIGludGVybmFsIG1lY2hhbmlzbSB0byB0cmFjayB0aGUgY29tbWFuZCBJRCBhbmQgY29ycmVsYXRlIGl0IHdpdGggdGhlIGV2ZW50dWFsIHJlcGx5LCBvciBpcyBpdCBkb2luZyBzb21ldGhpbmcgbW9yZSBsb3ctbGV2ZWw/IEkmIzM5O20gbG9va2luZyBmb3IgY2x1ZXMgaW4gdGhlIGNvZGUgcmVnYXJkaW5nIGhvdyBpdCBoYW5kbGVzIHBvdGVudGlhbCB0aW1lb3V0cywgZXJyb3IgY29uZGl0aW9ucyBpZiBubyByZXBseSBpcyByZWNlaXZlZCB3aXRoaW4gYSByZWFzb25hYmxlIHRpbWVmcmFtZSwgb3IgaWYgaXQgZG9lcyBzb21lIGNsZXZlciBpbnRlcnJ1cHQgb3IgcG9sbGluZyBzZXR1cC4gQWxzbywgSSYjMzk7bSBjaGVja2luZyBpZiBpdCBjb3JyZWN0bHkgc2V0cyBmbGFncyB0byBoYW5kbGUgY29tbWFuZCBjb21wbGV0aW9uIGFuZCByZXBseSBzaWduYWxpbmcuIFRoZSBnb2FsIGlzIHRvIHNlZSBpZiBpdHMgaW1wbGVtZW50ZWQgaW4gYSBjbGVhbiB3YXkgb3IgaWYgSSBoYXZlIHRvIG1ha2UgbW9kaWZpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjM1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjM1MDpcdCAqICAgICAgLSBTZXQgQU1TRFUgYWdncmVnYXRpb24gY29udHJvbFxuMjM1MTpcdCAqICAgICAgLSBTZXQgMTFkIGNvbnRyb2xcbjIzNTI6XHQgKiAgICAgIC0gU2V0IE1BQyBjb250cm9sICh0aGlzIG11c3QgYmUgdGhlIGxhc3QgY29tbWFuZCB0byBpbml0aWFsaXplIGZpcm13YXJlKVxuMjM1MzpcdCAqL1xuMjM1NDpcdGludCBtd2lmaWV4X3N0YV9pbml0X2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OCBmaXJzdF9zdGEpXG4yMzU1Olx0e1xuMjM1NjpcdFx0c3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbjIzNTc6XHRcdGludCByZXQ7XG4yMzU4Olx0XHRzdHJ1Y3QgbXdpZmlleF9kc18xMW5fYW1zZHVfYWdncl9jdHJsIGFtc2R1X2FnZ3JfY3RybDtcbjIzNTk6XHRcdHN0cnVjdCBtd2lmaWV4X2RzX2F1dG9fZHMgYXV0b19kcztcbjIzNjA6XHRcdGVudW0gc3RhdGVfMTFkX3Qgc3RhdGVfMTFkO1xuMjM2MTpcdFx0c3RydWN0IG13aWZpZXhfZHNfMTFuX3R4X2NmZyB0eF9jZmc7XG4yMzYyOlx0XHR1OCBzZGlvX3NwX3J4X2FnZ3JfZW5hYmxlO1xuMjM2MzpcdFx0dTE2IHBhY2tldF9hZ2dyX2VuYWJsZTtcbjIzNjQ6XHRcdGludCBkYXRhO1xuMjM2NTpcdFxuMjM2NjpcdFx0aWYgKGZpcnN0X3N0YSkge1xuMjM2NzpcdFx0XHRpZiAocHJpdi1cdTAwM2VhZGFwdGVyLVx1MDAzZWlmYWNlX3R5cGUgPT0gTVdJRklFWF9QQ0lFKSB7XG4yMzY4Olx0XHRcdFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LFxuMjM2OTpcdFx0XHRcdFx0XHQgICAgICAgSG9zdENtZF9DTURfUENJRV9ERVNDX0RFVEFJTFMsXG4yMzcwOlx0XHRcdFx0XHRcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBOVUxMLFxuMjM3MTpcdFx0XHRcdFx0XHQgICAgICAgdHJ1ZSk7XG4yMzcyOlx0XHRcdFx0aWYgKHJldClcbjIzNzM6XHRcdFx0XHRcdHJldHVybiAtMTtcbjIzNzQ6XHRcdFx0fVxuMjM3NTpcdFxuMjM3NjpcdFx0XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0ZVTkNfSU5JVCxcbjIzNzc6XHRcdFx0XHRcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBOVUxMLCB0cnVlKTtcbjIzNzg6XHRcdFx0aWYgKHJldClcbjIzNzk6XHRcdFx0XHRyZXR1cm4gLTE7XG4yMzgwOlx0XG4yMzgxOlx0XHRcdC8qIERvd25sb2FkIGNhbGlicmF0aW9uIGRhdGEgdG8gZmlybXdhcmUuXG4yMzgyOlx0XHRcdCAqIFRoZSBjYWwtZGF0YSBjYW4gYmUgcmVhZCBmcm9tIGRldmljZSB0cmVlIGFuZC9vclxuMjM4MzpcdFx0XHQgKiBhIGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgZG93bmxvYWRlZCB0byBmaXJtd2FyZS5cbjIzODQ6XHRcdFx0ICovXG4yMzg1Olx0XHRcdGlmIChhZGFwdGVyLVx1MDAzZWR0X25vZGUpIHtcbjIzODY6XHRcdFx0XHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIoYWRhcHRlci1cdTAwM2VkdF9ub2RlLFxuMjM4NzpcdFx0XHRcdFx0XHRcdCBcJiMzNDttYXJ2ZWxsLHdha2V1cC1waW5cJiMzNDssXG4yMzg4Olx0XHRcdFx0XHRcdFx0IFx1MDAyNmRhdGEpID09IDApIHtcbjIzODk6XHRcdFx0XHRcdHByX2RlYnVnKFwmIzM0O1dha2V1cCBwaW4gPSAweCV4XFxuXCYjMzQ7LCBkYXRhKTtcbjIzOTA6XHRcdFx0XHRcdGFkYXB0ZXItXHUwMDNlaHNfY2ZnLmdwaW8gPSBkYXRhO1xuMjM5MTpcdFx0XHRcdH1cbjIzOTI6XHRcbjIzOTM6XHRcdFx0XHRtd2lmaWV4X2RubGRfZHRfY2ZnZGF0YShwcml2LCBhZGFwdGVyLVx1MDAzZWR0X25vZGUsXG4yMzk0Olx0XHRcdFx0XHRcdFx0XCYjMzQ7bWFydmVsbCxjYWxkYXRhXCYjMzQ7KTtcbjIzOTU6XHRcdFx0fVxuMjM5NjpcdFxuMjM5NzpcdFx0XHRpZiAoYWRhcHRlci1cdTAwM2VjYWxfZGF0YSkge1xuMjM5ODpcdFx0XHRcdG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfQ0ZHX0RBVEEsXG4yMzk5Olx0XHRcdFx0XHRcdCBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBOVUxMLCB0cnVlKTtcbjI0MDA6XHRcdFx0XHRyZWxlYXNlX2Zpcm13YXJlKGFkYXB0ZXItXHUwMDNlY2FsX2RhdGEpO1xuMjQwMTpcdFx0XHRcdGFkYXB0ZXItXHUwMDNlY2FsX2RhdGEgPSBOVUxMO1xuMjQwMjpcdFx0XHR9XG4yNDAzOlx0XG4yNDA0Olx0XG4yNDA1Olx0XHRcdC8qIFJlYWQgTUFDIGFkZHJlc3MgZnJvbSBIVyAqL1xuMjQwNjpcdFx0XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0dFVF9IV19TUEVDLFxuMjQwNzpcdFx0XHRcdFx0ICAgICAgIEhvc3RDbWRfQUNUX0dFTl9HRVQsIDAsIE5VTEwsIHRydWUpO1xuMjQwODpcdFx0XHRpZiAocmV0KVxuMjQwOTpcdFx0XHRcdHJldHVybiAtMTtcbjI0MTA6XHRcbjI0MTE6XHRcdFx0LyoqIFNldCBTRElPIFNpbmdsZSBQb3J0IFJYIEFnZ3IgSW5mbyAqL1xuMjQxMjpcdFx0XHRpZiAocHJpdi1cdTAwM2VhZGFwdGVyLVx1MDAzZWlmYWNlX3R5cGUgPT0gTVdJRklFWF9TRElPIFx1MDAyNlx1MDAyNlxuMjQxMzpcdFx0XHQgICAgSVNTVVBQX1NESU9fU1BBX0VOQUJMRUQocHJpdi1cdTAwM2VhZGFwdGVyLVx1MDAzZWZ3X2NhcF9pbmZvKSBcdTAwMjZcdTAwMjZcbjI0MTQ6XHRcdFx0ICAgICFwcml2LVx1MDAzZWFkYXB0ZXItXHUwMDNlaG9zdF9kaXNhYmxlX3NkaW9fcnhfYWdncikge1xuMjQxNTpcdFx0XHRcdHNkaW9fc3BfcnhfYWdncl9lbmFibGUgPSB0cnVlO1xuMjQxNjpcdFx0XHRcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdixcbjI0MTc6XHRcdFx0XHRcdFx0ICAgICAgIEhvc3RDbWRfQ01EX1NESU9fU1BfUlhfQUdHUl9DRkcsXG4yNDE4Olx0XHRcdFx0XHRcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLFxuMjQxOTpcdFx0XHRcdFx0XHQgICAgICAgXHUwMDI2c2Rpb19zcF9yeF9hZ2dyX2VuYWJsZSxcbjI0MjA6XHRcdFx0XHRcdFx0ICAgICAgIHRydWUpO1xuMjQyMTpcdFx0XHRcdGlmIChyZXQpIHtcbjI0MjI6XHRcdFx0XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgRVJST1IsXG4yNDIzOlx0XHRcdFx0XHRcdCAgICBcJiMzNDtlcnJvciB3aGlsZSBlbmFibGluZyBTUCBhZ2dyZWdhdGlvbi4uZGlzYWJsZSBpdFwmIzM0Oyk7XG4yNDI0Olx0XHRcdFx0XHRhZGFwdGVyLVx1MDAzZXNkaW9fcnhfYWdncl9lbmFibGUgPSBmYWxzZTtcbjI0MjU6XHRcdFx0XHR9XG4yNDI2Olx0XHRcdH1cbjI0Mjc6XHRcbjI0Mjg6XHRcdFx0LyogUmVjb25maWd1cmUgdHggYnVmIHNpemUgKi9cbjI0Mjk6XHRcdFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9SRUNPTkZJR1VSRV9UWF9CVUZGLFxuMjQzMDpcdFx0XHRcdFx0ICAgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsXG4yNDMxOlx0XHRcdFx0XHQgICAgICAgXHUwMDI2cHJpdi1cdTAwM2VhZGFwdGVyLVx1MDAzZXR4X2J1Zl9zaXplLCB0cnVlKTtcbjI0MzI6XHRcdFx0aWYgKHJldClcbjI0MzM6XHRcdFx0XHRyZXR1cm4gLTE7XG4yNDM0Olx0XG4yNDM1Olx0XHRcdGlmIChwcml2LVx1MDAzZWJzc190eXBlICE9IE1XSUZJRVhfQlNTX1RZUEVfVUFQKSB7XG4yNDM2Olx0XHRcdFx0LyogRW5hYmxlIElFRUUgUFMgYnkgZGVmYXVsdCAqL1xuMjQzNzpcdFx0XHRcdHByaXYtXHUwMDNlYWRhcHRlci1cdTAwM2Vwc19tb2RlID0gTVdJRklFWF84MDJfMTFfUE9XRVJfTU9ERV9QU1A7XG4yNDM4Olx0XHRcdFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LFxuMjQzOTpcdFx0XHRcdFx0XHQgICAgICAgSG9zdENtZF9DTURfODAyXzExX1BTX01PREVfRU5ILFxuMjQ0MDpcdFx0XHRcdFx0XHQgICAgICAgRU5fQVVUT19QUywgQklUTUFQX1NUQV9QUywgTlVMTCxcbjI0NDE6XHRcdFx0XHRcdFx0ICAgICAgIHRydWUpO1xuMjQ0MjpcdFx0XHRcdGlmIChyZXQpXG4yNDQzOlx0XHRcdFx0XHRyZXR1cm4gLTE7XG4yNDQ0Olx0XHRcdH1cbjI0NDU6XHRcbjI0NDY6XHRcdFx0aWYgKGRyY3MpIHtcbjI0NDc6XHRcdFx0XHRhZGFwdGVyLVx1MDAzZWRyY3NfZW5hYmxlZCA9IHRydWU7XG4yNDQ4Olx0XHRcdFx0aWYgKElTU1VQUF9EUkNTX0VOQUJMRUQoYWRhcHRlci1cdTAwM2Vmd19jYXBfaW5mbykpXG4yNDQ5Olx0XHRcdFx0XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDAxOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNzE5CgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogMTE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBQb3RlbnRpYWwgYG13aWZpZXhgIFZ1bG5lcmFiaWxpdGllcyB3aXRoIFN5emthbGxlcioqCgpPa2F5LCBzbyBgbXdpZmlleF9zZW5kX2NtZGAgd2l0aCB0aGF0IGB0cnVlYCBhcmd1bWVudD8gVGhhdCBtZWFucyBpdCAqYWJzb2x1dGVseSogd2FpdHMgZm9yIGEgcmVzcG9uc2UuIE5vIHJlc3BvbnNlLCBhbmQgaXQmIzM5O3MgZWl0aGVyIHRpbWluZyBvdXQgb3IganVzdCBwbGFpbiBmYWlsaW5nLiBUaGF0JiMzOTtzIGEga2V5IHBvaW50LiBOb3csIHRoZSBVU0IgZnV6emVyLi4ucmlnaHQsIEkgcmVtZW1iZXIgdGhhdC4gSXQgKmNhbiogcHJvdmlkZSByZXNwb25zZXMgaWYgaXQga25vd3MgdGhlIHByb3RvY29sLCBidXQgdXN1YWxseSwgaXQmIzM5O3MganVzdCBzcGV3aW5nIG91dCBnYXJiYWdlIGRhdGEuIFNvLCB0aGUgcXVlc3Rpb24gaXMsIGhhcyBzeXprYWxsZXIgZXZlbiBiZWVuIHNldCB1cCB0byBlZmZlY3RpdmVseSBmdXp6IGBtd2lmaWV4YD8gVGhhdCYjMzk7cyB3aGF0IEkgbmVlZCB0byBmaWd1cmUgb3V0LiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgZm9yIGFueSBleGlzdGluZyBzeXprYWxsZXIgYnVnIHJlcG9ydHMgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gYG13aWZpZXhgLiBUaGF0IHdvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBlc3RhYmxpc2ggdGhlIGV4dGVudCBvZiBleGlzdGluZyBjb3ZlcmFnZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTg1NzcgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbk1BSU5UQUlORVJTPTE1NzM2PVM6XHRPZGQgRml4ZXNcbk1BSU5UQUlORVJTOjE1NzM3OkY6XHRkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXG5NQUlOVEFJTkVSUy0xNTczOC1cbi0tXG5hcmNoL2FybS9ib290L2R0cy9yb2NrY2hpcC9yazMyODgtdmV5cm9uLWplcnJ5LmR0cz00Mz1cdTAwMjZzZGlvMCB7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcmszMjg4LXZleXJvbi1qZXJyeS5kdHMtNDYtXG5hcmNoL2FybS9ib290L2R0cy9yb2NrY2hpcC9yazMyODgtdmV5cm9uLWplcnJ5LmR0czo0NzpcdG13aWZpZXg6IHdpZmlAMSB7XG5hcmNoL2FybS9ib290L2R0cy9yb2NrY2hpcC9yazMyODgtdmV5cm9uLWplcnJ5LmR0cy00OC1cdFx0Y29tcGF0aWJsZSA9IFwmIzM0O21hcnZlbGwsc2Q4ODk3XCYjMzQ7O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDhtcC1iZWFjb24tc29tLmR0c2k9Mjg1PVx1MDAyNnVzZGhjMSB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OG1wLWJlYWNvbi1zb20uZHRzaS0zMDItXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXAtYmVhY29uLXNvbS5kdHNpOjMwMzpcdG13aWZpZXg6IHdpZmlAMSB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXAtYmVhY29uLXNvbS5kdHNpLTMwNC1cdFx0Y29tcGF0aWJsZSA9IFwmIzM0O21hcnZlbGwsc2Q4OTk3XCYjMzQ7O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTczLWVsbS5kdHNpPTQxMj1cdTAwMjZtbWMzIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE3My1lbG0uZHRzaS00MzItXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE3My1lbG0uZHRzaTo0MzM6XHRtd2lmaWV4OiB3aWZpQDEge1xuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxNzMtZWxtLmR0c2ktNDM0LVx0XHRjb21wYXRpYmxlID0gXCYjMzQ7bWFydmVsbCxzZDg4OTdcJiMzNDs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnPTE2PXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzX3RmL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZzoxNzpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZy0xOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL01ha2VmaWxlPTQ9b2JqLSQoQ09ORklHX0xJQkVSVEFTX1RISU5GSVJNKVx0JiM0Mzs9IGxpYmVydGFzX3RmL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19NV0lGSUVYKVx0JiM0Mzs9IG13aWZpZXgvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL01ha2VmaWxlLTYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYz00Mj1zdGF0aWMgdTE2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjQzOm13aWZpZXhfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy00NC1cdFx0XHRcdCAgdTggYmFuZHMsIHUxNiBtY3NfbWFwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtNDgtXHR1MzIgdXNyX3ZodF9jYXBfaW5mbyA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjQ5Olx0c3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtNTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYz04NT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzo4Njptd2lmaWV4X2ZpbGxfdmh0X2NhcF9pbmZvKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTg3LVx0XHRcdCAgc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwLCB1OCBiYW5kcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtODgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzo4OTpcdHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTkwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtOTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjk5OnZvaWQgbXdpZmlleF9maWxsX3ZodF9jYXBfdGx2KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTEwMC1cdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXAsIHU4IGJhbmRzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xMDEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxMDI6XHRzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xMDMtXHR1MTYgbWNzX21hcF91c2VyLCBtY3NfbWFwX3Jlc3AsIG1jc19tYXBfcmVzdWx0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTA2LVx0LyogRmlsbCBWSFQgY2FwIGluZm8gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTA3Olx0bXdpZmlleF9maWxsX3ZodF9jYXBfaW5mbyhwcml2LCB2aHRfY2FwLCBiYW5kcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTEwOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTEyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTI5Olx0dG1wID0gbXdpZmlleF9jb252ZXJ0X21jc21hcF90b19tYXhyYXRlKHByaXYsIGJhbmRzLCBtY3NfbWFwX3Jlc3VsdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTEzMC1cdHZodF9jYXAtXHUwMDNlc3VwcF9tY3MucnhfaGlnaGVzdCA9IGNwdV90b19sZTE2KHRtcCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE1MTpcdHRtcCA9IG13aWZpZXhfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShwcml2LCBiYW5kcywgbWNzX21hcF9yZXN1bHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xNTItXHR2aHRfY2FwLVx1MDAzZXN1cHBfbWNzLnR4X2hpZ2hlc3QgPSBjcHVfdG9fbGUxNih0bXApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxNTc6aW50IG13aWZpZXhfY21kX2FwcGVuZF8xMWFjX3RsdihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxNTg6XHRcdFx0ICAgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTU5LVx0XHRcdCAgICAgdTggKipidWZmZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE2MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE2MTpcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX3ZodGNhcCAqdmh0X2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTYyOlx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfb3Blcl9tb2RlX250ZiAqb3Blcl9udGY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE2My1cdHN0cnVjdCBpZWVlX3R5cGVzX29wZXJfbW9kZV9udGYgKmllZWVfb3Blcl9udGY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE2NDpcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX3ZodF9vcGVyICp2aHRfb3A7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE2NTpcdHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE2Ni1cdHU4IHN1cHBfY2h3ZF9zZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xNzYtXHRpZiAoYnNzX2Rlc2MtXHUwMDNlYmNuX3ZodF9jYXApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTc3Olx0XHR2aHRfY2FwID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX3ZodGNhcCAqKSpidWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE3OC1cdFx0bWVtc2V0KHZodF9jYXAsIDAsIHNpemVvZigqdmh0X2NhcCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTgxLVx0XHRcdFx0Y3B1X3RvX2xlMTYoc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxODI6XHRcdG1lbWNweSgodTggKil2aHRfY2FwICYjNDM7IHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19oZWFkZXIpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xODMtXHRcdCAgICAgICAodTggKilic3NfZGVzYy1cdTAwM2ViY25fdmh0X2NhcCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE4NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTg2Olx0XHRtd2lmaWV4X2ZpbGxfdmh0X2NhcF90bHYocHJpdiwgXHUwMDI2dmh0X2NhcC1cdTAwM2V2aHRfY2FwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xODctXHRcdFx0XHRcdCBic3NfZGVzYy1cdTAwM2Vic3NfYmFuZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xOTQtXHRcdGlmIChwcml2LVx1MDAzZWJzc19tb2RlID09IE5MODAyMTFfSUZUWVBFX1NUQVRJT04pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTk1Olx0XHRcdHZodF9vcCA9IChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc192aHRfb3BlciAqKSpidWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE5Ni1cdFx0XHRtZW1zZXQodmh0X29wLCAwLCBzaXplb2YoKnZodF9vcCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTk5LVx0XHRcdHZodF9vcC1cdTAwM2VoZWFkZXIubGVuICA9IGNwdV90b19sZTE2KHNpemVvZigqdmh0X29wKSAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjIwMDpcdFx0XHRcdCAgICAgIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19oZWFkZXIpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMjAxLVx0XHRcdG1lbWNweSgodTggKil2aHRfb3AgJiM0MztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MjAyOlx0XHRcdFx0c2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2hlYWRlciksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTIwMy1cdFx0XHQgICAgICAgKHU4ICopYnNzX2Rlc2MtXHUwMDNlYmNuX3ZodF9vcGVyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMjUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoyNTM6aW50IG13aWZpZXhfY21kXzExYWNfY2ZnKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTI1NC1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjI1NTpcdFx0XHQgc3RydWN0IG13aWZpZXhfMTFhY192aHRfY2ZnICpjZmcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTI1Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yNzItLyogVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgQmxvY2tBQ0sgc2V0dXAgaW5mb3JtYXRpb24gZm9yIGdpdmVuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjI3MzogKiBtd2lmaWV4X3ByaXZhdGUgc3RydWN0dXJlIGZvciAxMWFjIGVuYWJsZWQgbmV0d29ya3MuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTI3NC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6Mjc1OnZvaWQgbXdpZmlleF9zZXRfMTFhY19iYV9wYXJhbXMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMjc2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTI5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6Mjk0OmJvb2wgbXdpZmlleF9pc19ic3NfaW5fMTFhY19tb2RlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTI5NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjI5NjpcdHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yOTctXHRzdHJ1Y3QgaWVlZTgwMjExX3ZodF9vcGVyYXRpb24gKnZodF9vcGVyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMzEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzozMTE6dTggbXdpZmlleF9nZXRfY2VudGVyX2ZyZXFfaW5kZXgoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggYmFuZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMzEyLVx0XHRcdFx0IHUzMiBwcmlfY2hhbiwgdTggY2hhbl9idylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oPTE0PWVudW0gdmh0X2NmZ19taXNjX2NvbmZpZyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuaC0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmg6MjU6aW50IG13aWZpZXhfY21kX2FwcGVuZF8xMWFjX3RsdihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuaDoyNjpcdFx0XHRcdHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuaC0yNy1cdFx0XHRcdHU4ICoqYnVmZmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmg6Mjg6aW50IG13aWZpZXhfY21kXzExYWNfY2ZnKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oLTI5LVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmg6MzA6XHRcdFx0IHN0cnVjdCBtd2lmaWV4XzExYWNfdmh0X2NmZyAqY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmg6MzE6dm9pZCBtd2lmaWV4X2ZpbGxfdmh0X2NhcF90bHYoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmgtMzItXHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwLCB1OCBiYW5kcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjEyOnZvaWQgbXdpZmlleF9pbml0XzExaF9wYXJhbXMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE4OmlubGluZSBpbnQgbXdpZmlleF9pc18xMWhfYWN0aXZlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYz0yNT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI2Om13aWZpZXhfMTFoX3Byb2Nlc3NfaW5mcmFfam9pbihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OCAqKmJ1ZmZlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNzpcdFx0XHQgICAgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI5Olx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaGVhZGVyICppZV9oZWFkZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MzA6XHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19wd3JfY2FwYWJpbGl0eSAqY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjMxOlx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfbG9jYWxfcHdyX2NvbnN0cmFpbnQgKmNvbnN0cmFpbnQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMzItXHRzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6Mzk6XHRyYWRpb190eXBlID0gbXdpZmlleF9iYW5kX3RvX3JhZGlvX3R5cGUoKHU4KSBic3NfZGVzYy1cdTAwM2Vic3NfYmFuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtNDAtXHRzYmFuZCA9IHByaXYtXHUwMDNld2Rldi53aXBoeS1cdTAwM2ViYW5kc1tyYWRpb190eXBlXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy00MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzo0MjpcdGNhcCA9IChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19wd3JfY2FwYWJpbGl0eSAqKSpidWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtNDMtXHRjYXAtXHUwMDNlaGVhZGVyLnR5cGUgPSBjcHVfdG9fbGUxNihXTEFOX0VJRF9QV1JfQ0FQQUJJTElUWSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjQ5Olx0Y29uc3RyYWludCA9IChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19sb2NhbF9wd3JfY29uc3RyYWludCAqKSpidWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtNTAtXHRjb25zdHJhaW50LVx1MDAzZWhlYWRlci50eXBlID0gY3B1X3RvX2xlMTYoV0xBTl9FSURfUFdSX0NPTlNUUkFJTlQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy01NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzo1NjpcdGllX2hlYWRlciA9IChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19oZWFkZXIgKikqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTU3LVx0aWVfaGVhZGVyLVx1MDAzZXR5cGUgPSBjcHVfdG9fbGUxNihUTFZfVFlQRV9QQVNTVEhST1VHSCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTY5LS8qIEVuYWJsZSBvciBkaXNhYmxlIHRoZSAxMWggZXh0ZW5zaW9ucyBpbiB0aGUgZmlybXdhcmUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzo3MDppbnQgbXdpZmlleF8xMWhfYWN0aXZhdGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgYm9vbCBmbGFnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTcxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtNzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6Nzg6XHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfU05NUF9NSUIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtNzktXHRcdFx0XHRIb3N0Q21kX0FDVF9HRU5fU0VULCBET1QxMUhfSSwgXHUwMDI2ZW5hYmxlLCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtODctICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6ODg6dm9pZCBtd2lmaWV4XzExaF9wcm9jZXNzX2pvaW4oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggKipidWZmZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6ODk6XHRcdFx0ICAgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtOTAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy05NC1cdFx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6OTU6XHRcdG13aWZpZXhfMTFoX2FjdGl2YXRlKHByaXYsIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTk2LVx0XHRwcml2LVx1MDAzZXN0YXRlXzExaC5pc18xMWhfYWN0aXZlID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy05Ny1cdFx0YnNzX2Rlc2MtXHUwMDNlY2FwX2luZm9fYml0bWFwIHw9IFdMQU5fQ0FQQUJJTElUWV9TUEVDVFJVTV9NR01UO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjk4Olx0XHRtd2lmaWV4XzExaF9wcm9jZXNzX2luZnJhX2pvaW4ocHJpdiwgYnVmZmVyLCBic3NfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtOTktXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTEwMC1cdFx0LyogRGVhY3RpdmF0ZSAxMWggZnVuY3Rpb25zIGluIHRoZSBmaXJtd2FyZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjEwMTpcdFx0bXdpZmlleF8xMWhfYWN0aXZhdGUocHJpdiwgZmFsc2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTEwMi1cdFx0cHJpdi1cdTAwM2VzdGF0ZV8xMWguaXNfMTFoX2FjdGl2ZSA9IGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMTAtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTExOnZvaWQgbXdpZmlleF9kZnNfY2FjX3dvcmtfcXVldWUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTExMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTExNC1cdHN0cnVjdCBkZWxheWVkX3dvcmsgKmRlbGF5ZWRfd29yayA9IHRvX2RlbGF5ZWRfd29yayh3b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxMTU6XHRzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2ID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxMTY6XHRcdFx0Y29udGFpbmVyX29mKGRlbGF5ZWRfd29yaywgc3RydWN0IG13aWZpZXhfcHJpdmF0ZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMTctXHRcdFx0XHQgICAgIGRmc19jYWNfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTEyMC1cdGlmIChwcml2LVx1MDAzZXdkZXYubGlua3NbMF0uY2FjX3N0YXJ0ZWQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxMjE6XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgTVNHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTEyMi1cdFx0XHQgICAgXCYjMzQ7Q0FDIHRpbWVyIGZpbmlzaGVkOyBObyByYWRhciBkZXRlY3RlZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTEzMS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxMzI6aW50IG13aWZpZXhfY21kX2lzc3VlX2NoYW5fcmVwb3J0X3JlcXVlc3Qoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMzMtXHRcdFx0XHRcdCAgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTM2LVx0c3RydWN0IGhvc3RfY21kX2RzX2NoYW5fcnB0X3JlcSAqY3JfcmVxID0gXHUwMDI2Y21kLVx1MDAzZXBhcmFtcy5jaGFuX3JwdF9yZXE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTM3Olx0c3RydWN0IG13aWZpZXhfcmFkYXJfcGFyYW1zICpyYWRhcl9wYXJhbXMgPSAodm9pZCAqKWRhdGFfYnVmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTEzOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTQ5LVx0aWYgKHJhZGFyX3BhcmFtcy1cdTAwM2VjYWNfdGltZV9tcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxNTA6XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgTVNHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE1MS1cdFx0XHQgICAgXCYjMzQ7MTFoOiBpc3N1aW5nIERGUyBSYWRhciBjaGVjayBmb3IgY2hhbm5lbD0lZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTUzLVx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE1NDpcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBNU0csIFwmIzM0O2NhbmNlbGxpbmcgQ0FDXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE1OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxNTk6aW50IG13aWZpZXhfc3RvcF9yYWRhcl9kZXRlY3Rpb24oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNjAtXHRcdFx0XHQgc3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICpjaGFuZGVmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE2MS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTYyOlx0c3RydWN0IG13aWZpZXhfcmFkYXJfcGFyYW1zIHJhZGFyX3BhcmFtcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTY0Olx0bWVtc2V0KFx1MDAyNnJhZGFyX3BhcmFtcywgMCwgc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X3JhZGFyX3BhcmFtcykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE2NS1cdHJhZGFyX3BhcmFtcy5jaGFuZGVmID0gY2hhbmRlZjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE2ODpcdHJldHVybiBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0NIQU5fUkVQT1JUX1JFUVVFU1QsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTY5LVx0XHRcdFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgXHUwMDI2cmFkYXJfcGFyYW1zLCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTc0LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE3NTp2b2lkIG13aWZpZXhfYWJvcnRfY2FjKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTc2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNzctXHRpZiAocHJpdi1cdTAwM2V3ZGV2LmxpbmtzWzBdLmNhY19zdGFydGVkKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTc4Olx0XHRpZiAobXdpZmlleF9zdG9wX3JhZGFyX2RldGVjdGlvbihwcml2LCBcdTAwMjZwcml2LVx1MDAzZWRmc19jaGFuZGVmKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxNzk6XHRcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBFUlJPUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xODAtXHRcdFx0XHQgICAgXCYjMzQ7ZmFpbGVkIHRvIHN0b3AgQ0FDIGluIEZXXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxODE6XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgTVNHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE4Mi1cdFx0XHQgICAgXCYjMzQ7QWJvcnRpbmcgZGVsYXllZCB3b3JrIGZvciBDQUMuXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTkzLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE5NDppbnQgbXdpZmlleF8xMWhfaGFuZGxlX2NoYW5ycHRfcmVhZHkoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xOTUtXHRcdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE5Ny1cdHN0cnVjdCBob3N0X2NtZF9kc19jaGFuX3JwdF9ldmVudCAqcnB0X2V2ZW50O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE5ODpcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2NoYW5fcnB0X2RhdGEgKnJwdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xOTktXHR1MTYgZXZlbnRfbGVuLCB0bHZfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yMDUtXHRpZiAobGUzMl90b19jcHUocnB0X2V2ZW50LVx1MDAzZXJlc3VsdCkgIT0gSG9zdENtZF9SRVNVTFRfT0spIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyMDY6XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgRVJST1IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjA3LVx0XHRcdCAgICBcJiMzNDtFcnJvciBpbiBjaGFubmVsIHJlcG9ydCBldmVudFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTIxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyMTE6XHR3aGlsZSAoZXZlbnRfbGVuIFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2hlYWRlcikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yMTItXHRcdHJwdCA9ICh2b2lkICopXHUwMDI2cnB0X2V2ZW50LVx1MDAzZXRsdmJ1Zjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjE3LVx0XHRcdGlmIChycHQtXHUwMDNlbWFwLnJhZGFyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjE4Olx0XHRcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBNU0csXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjE5LVx0XHRcdFx0XHQgICAgXCYjMzQ7UkFEQVIgRGV0ZWN0ZWQgb24gY2hhbm5lbCAlZCFcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTIzOC0vKiBIYW5kbGVyIGZvciByYWRhciBkZXRlY3RlZCBldmVudCBmcm9tIEZXLiovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjM5OmludCBtd2lmaWV4XzExaF9oYW5kbGVfcmFkYXJfZGV0ZWN0ZWQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNDAtXHRcdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI0MS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjQyOlx0c3RydWN0IG13aWZpZXhfcmFkYXJfZGV0X2V2ZW50ICpyZHJfZXZlbnQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjQzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjQ2Olx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBNU0csXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjQ3LVx0XHQgICAgXCYjMzQ7cmFkYXIgZGV0ZWN0ZWQ7IGluZGljYXRpbmcga2VybmVsXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNDg6XHRpZiAobXdpZmlleF9zdG9wX3JhZGFyX2RldGVjdGlvbihwcml2LCBcdTAwMjZwcml2LVx1MDAzZWRmc19jaGFuZGVmKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNDk6XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgRVJST1IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjUwLVx0XHRcdCAgICBcJiMzNDtGYWlsZWQgdG8gc3RvcCBDQUMgaW4gRldcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNTItXHRcdFx0ICAgICBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNTM6XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIE1TRywgXCYjMzQ7cmVnZG9tYWluOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNTQtXHRcdCAgICByZHJfZXZlbnQtXHUwMDNlcmVnX2RvbWFpbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjU1Olx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBNU0csIFwmIzM0O3JhZGFyIGRldGVjdGlvbiB0eXBlOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNTYtXHRcdCAgICByZHJfZXZlbnQtXHUwMDNlZGV0X3R5cGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNjUtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjY2OnZvaWQgbXdpZmlleF9kZnNfY2hhbl9zd193b3JrX3F1ZXVlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNjcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI2ODpcdHN0cnVjdCBtd2lmaWV4X3VhcF9ic3NfcGFyYW0gKmJzc19jZmc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjY5LVx0c3RydWN0IGRlbGF5ZWRfd29yayAqZGVsYXllZF93b3JrID0gdG9fZGVsYXllZF93b3JrKHdvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI3MDpcdHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYgPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI3MTpcdFx0XHRjb250YWluZXJfb2YoZGVsYXllZF93b3JrLCBzdHJ1Y3QgbXdpZmlleF9wcml2YXRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI3Mi1cdFx0XHRcdCAgICAgZGZzX2NoYW5fc3dfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI3NS1cdGlmICghYnNzX2NmZy1cdTAwM2ViZWFjb25fcGVyaW9kKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6Mjc2Olx0XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIEVSUk9SLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI3Ny1cdFx0XHQgICAgXCYjMzQ7Y2hhbm5lbCBzd2l0Y2g6IEFQIGFscmVhZHkgc3RvcHBlZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyODE6XHRtd2lmaWV4X3VhcF9zZXRfY2hhbm5lbChwcml2LCBic3NfY2ZnLCBwcml2LVx1MDAzZWRmc19jaGFuZGVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjgzOlx0aWYgKG13aWZpZXhfY29uZmlnX3N0YXJ0X3VhcChwcml2LCBic3NfY2ZnKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI4NDpcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBFUlJPUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yODUtXHRcdFx0ICAgIFwmIzM0O0ZhaWxlZCB0byBzdGFydCBBUCBhZnRlciBjaGFubmVsIHN3aXRjaFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyODk6XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIE1TRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yOTAtXHRcdCAgICBcJiMzNDtpbmRpY2F0aW5nIGNoYW5uZWwgc3dpdGNoIGNvbXBsZXRpb24gdG8ga2VybmVsXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjQtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MjU6aW50IG13aWZpZXhfZmlsbF9jYXBfaW5mbyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OCByYWRpb190eXBlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTI2LVx0XHRcdCAgc3RydWN0IGllZWU4MDIxMV9odF9jYXAgKmh0X2NhcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzItXHRpZiAoV0FSTl9PTl9PTkNFKCFzYmFuZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMzpcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBFUlJPUiwgXCYjMzQ7SW52YWxpZCByYWRpbyB0eXBlIVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzQtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy02OS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo3MDpzdGF0aWMgc3RydWN0IG13aWZpZXhfdHhfYmFfc3RyZWFtX3RibCAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NzE6bXdpZmlleF9nZXRfYmFfc3RhdHVzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NzI6XHRcdCAgICAgIGVudW0gbXdpZmlleF9iYV9zdGF0dXMgYmFfc3RhdHVzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTczLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo3NDpcdHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKnR4X2JhX3Rzcl90Ymw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNzUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTk1LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjk2OmludCBtd2lmaWV4X3JldF8xMW5fZGVsYmEoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy05Ny1cdFx0XHQgIHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy05OS1cdGludCB0aWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTAwOlx0c3RydWN0IG13aWZpZXhfdHhfYmFfc3RyZWFtX3RibCAqdHhfYmFfdGJsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEwMS1cdHN0cnVjdCBob3N0X2NtZF9kc18xMW5fZGVsYmEgKmRlbF9iYSA9IFx1MDAyNnJlc3AtXHUwMDNlcGFyYW1zLmRlbF9iYTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTA1LVx0aWYgKGRlbF9iYS1cdTAwM2VkZWxfcmVzdWx0ID09IEJBX1JFU1VMVF9TVUNDRVNTKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTA2Olx0XHRtd2lmaWV4X2RlbF9iYV90YmwocHJpdiwgdGlkLCBkZWxfYmEtXHUwMDNlcGVlcl9tYWNfYWRkcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMDctXHRcdFx0XHQgICBUWVBFX0RFTEJBX1NFTlQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxMTA6XHRcdHR4X2JhX3RibCA9IG13aWZpZXhfZ2V0X2JhX3N0YXR1cyhwcml2LCBCQV9TRVRVUF9JTlBST0dSRVNTKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMTEtXHRcdGlmICh0eF9iYV90YmwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTEyOlx0XHRcdG13aWZpZXhfc2VuZF9hZGRiYShwcml2LCB0eF9iYV90YmwtXHUwMDNldGlkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTExMy1cdFx0XHRcdFx0ICAgdHhfYmFfdGJsLVx1MDAzZXJhKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjEyMTpcdFx0bXdpZmlleF9jcmVhdGVfYmFfdGJsKHByaXYsIGRlbF9iYS1cdTAwM2VwZWVyX21hY19hZGRyLCB0aWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTIyLVx0XHRcdFx0ICAgICAgQkFfU0VUVVBfSU5QUk9HUkVTUyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjEyNDpcdFx0dHhfYmFfdGJsID0gbXdpZmlleF9nZXRfYmFfc3RhdHVzKHByaXYsIEJBX1NFVFVQX0lOUFJPR1JFU1MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEyNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMjYtXHRcdGlmICh0eF9iYV90YmwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTI3Olx0XHRcdG13aWZpZXhfZGVsX2JhX3RibChwcml2LCB0eF9iYV90YmwtXHUwMDNldGlkLCB0eF9iYV90YmwtXHUwMDNlcmEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTI4LVx0XHRcdFx0XHQgICBUWVBFX0RFTEJBX1NFTlQsIHRydWUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xNDEtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTQyOmludCBtd2lmaWV4X3JldF8xMW5fYWRkYmFfcmVxKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTQzLVx0XHRcdCAgICAgIHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xNDYtXHRzdHJ1Y3QgaG9zdF9jbWRfZHNfMTFuX2FkZGJhX3JzcCAqYWRkX2JhX3JzcCA9IFx1MDAyNnJlc3AtXHUwMDNlcGFyYW1zLmFkZF9iYV9yc3A7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTQ3Olx0c3RydWN0IG13aWZpZXhfdHhfYmFfc3RyZWFtX3RibCAqdHhfYmFfdGJsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE0ODpcdHN0cnVjdCBtd2lmaWV4X3JhX2xpc3RfdGJsICpyYV9saXN0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE0OS1cdHUxNiBibG9ja19hY2tfcGFyYW1fc2V0ID0gbGUxNl90b19jcHUoYWRkX2JhX3JzcC1cdTAwM2VibG9ja19hY2tfcGFyYW1fc2V0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE1NzpcdHRpZF9kb3duID0gbXdpZmlleF93bW1fZG93bmdyYWRlX3RpZChwcml2LCB0aWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE1ODpcdHJhX2xpc3QgPSBtd2lmaWV4X3dtbV9nZXRfcmFsaXN0X25vZGUocHJpdiwgdGlkX2Rvd24sIGFkZF9iYV9yc3AtXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTU5LVx0XHRwZWVyX21hY19hZGRyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTY0LVx0XHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTY1Olx0XHRtd2lmaWV4X2RlbF9iYV90YmwocHJpdiwgdGlkLCBhZGRfYmFfcnNwLVx1MDAzZXBlZXJfbWFjX2FkZHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTY2LVx0XHRcdFx0ICAgVFlQRV9ERUxCQV9TRU5ULCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE3MzpcdHR4X2JhX3RibCA9IG13aWZpZXhfZ2V0X2JhX3RibChwcml2LCB0aWQsIGFkZF9iYV9yc3AtXHUwMDNlcGVlcl9tYWNfYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTc0LVx0aWYgKHR4X2JhX3RibCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE3NTpcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBFVkVOVCwgXCYjMzQ7aW5mbzogQkEgc3RyZWFtIGNvbXBsZXRlXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xNzYtXHRcdHR4X2JhX3RibC1cdTAwM2ViYV9zdGF0dXMgPSBCQV9TRVRVUF9DT01QTEVURTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTg3LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxODg6XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgRVJST1IsIFwmIzM0O0JBIHN0cmVhbSBub3QgY3JlYXRlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTg5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yMDEtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MjAyOmludCBtd2lmaWV4X2NtZF9yZWNmZ190eF9idWYoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yMDMtXHRcdFx0ICAgICBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCBpbnQgY21kX2FjdGlvbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjE0LVx0Y2FzZSBIb3N0Q21kX0FDVF9HRU5fU0VUOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjIxNTpcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBDTUQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjE2LVx0XHRcdCAgICBcJiMzNDtjbWQ6IHNldCB0eF9idWY9JWRcXG5cJiMzNDssICpidWZfc2l6ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTIzNC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoyMzU6aW50IG13aWZpZXhfY21kX2Ftc2R1X2FnZ3JfY3RybChzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTIzNi1cdFx0XHRcdGludCBjbWRfYWN0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjIzNzpcdFx0XHRcdHN0cnVjdCBtd2lmaWV4X2RzXzExbl9hbXNkdV9hZ2dyX2N0cmwgKmFhX2N0cmwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjM4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjY3LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjI2ODppbnQgbXdpZmlleF9jbWRfMTFuX2NmZyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTI2OS1cdFx0XHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoyNzA6XHRcdFx0c3RydWN0IG13aWZpZXhfZHNfMTFuX3R4X2NmZyAqdHhjZmcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjcxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM9Mjk4PWludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjI5OTptd2lmaWV4X2NtZF9hcHBlbmRfMTFuX3RsdihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMwMDpcdFx0XHQgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMDEtXHRcdFx0ICAgdTggKipidWZmZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzAyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMDM6XHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19odGNhcCAqaHRfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMwNDpcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2h0aW5mbyAqaHRfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMDU6XHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19jaGFuX2xpc3RfcGFyYW1fc2V0ICpjaGFuX2xpc3Q7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzA2Olx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfMjA0MGJzc2NvICpic3NfY29fMjA0MDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMDc6XHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19leHRjYXAgKmV4dF9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzA4LVx0aW50IHJldF9sZW4gPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzE2Olx0cmFkaW9fdHlwZSA9IG13aWZpZXhfYmFuZF90b19yYWRpb190eXBlKCh1OCkgYnNzX2Rlc2MtXHUwMDNlYnNzX2JhbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMxNy1cdHNiYW5kID0gcHJpdi1cdTAwM2V3ZGV2LndpcGh5LVx1MDAzZWJhbmRzW3JhZGlvX3R5cGVdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMTktXHRpZiAoYnNzX2Rlc2MtXHUwMDNlYmNuX2h0X2NhcCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMyMDpcdFx0aHRfY2FwID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2h0Y2FwICopICpidWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzIxOlx0XHRtZW1zZXQoaHRfY2FwLCAwLCBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRjYXApKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMjItXHRcdGh0X2NhcC1cdTAwM2VoZWFkZXIudHlwZSA9IGNwdV90b19sZTE2KFdMQU5fRUlEX0hUX0NBUEFCSUxJVFkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMjQtXHRcdFx0XHRjcHVfdG9fbGUxNihzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9odF9jYXApKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMjU6XHRcdG1lbWNweSgodTggKikgaHRfY2FwICYjNDM7IHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19oZWFkZXIpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMyNi1cdFx0ICAgICAgICh1OCAqKWJzc19kZXNjLVx1MDAzZWJjbl9odF9jYXAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMjk6XHRcdG13aWZpZXhfZmlsbF9jYXBfaW5mbyhwcml2LCByYWRpb190eXBlLCBcdTAwMjZodF9jYXAtXHUwMDNlaHRfY2FwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMzAtXHRcdC8qIFVwZGF0ZSBIVDQwIGNhcGFiaWxpdHkgZnJvbSBjdXJyZW50IGNoYW5uZWwgaW5mb3JtYXRpb24gKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzMzLVx0XHRcdHU4IHJhZGlvID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMzQ6XHRcdFx0bXdpZmlleF9iYW5kX3RvX3JhZGlvX3R5cGUoYnNzX2Rlc2MtXHUwMDNlYnNzX2JhbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMzNS1cdFx0XHRpbnQgZnJlcSA9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozNjM6XHRcdCpidWZmZXIgJiM0Mzs9IHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19odGNhcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzY0Olx0XHRyZXRfbGVuICYjNDM7PSBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRjYXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM2NS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzY4LVx0XHRpZiAocHJpdi1cdTAwM2Vic3NfbW9kZSA9PSBOTDgwMjExX0lGVFlQRV9BREhPQykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjM2OTpcdFx0XHRodF9pbmZvID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2h0aW5mbyAqKSAqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM3MC1cdFx0XHRtZW1zZXQoaHRfaW5mbywgMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozNzE6XHRcdFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19odGluZm8pKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zNzItXHRcdFx0aHRfaW5mby1cdTAwM2VoZWFkZXIudHlwZSA9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM3OC1cdFx0XHRtZW1jcHkoKHU4ICopIGh0X2luZm8gJiM0MztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozNzk6XHRcdFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19oZWFkZXIpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM4MC1cdFx0XHQgICAgICAgKHU4ICopYnNzX2Rlc2MtXHUwMDNlYmNuX2h0X29wZXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozODk6XHRcdFx0KmJ1ZmZlciAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2h0aW5mbyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzkwOlx0XHRcdHJldF9sZW4gJiM0Mzs9IHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19odGluZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM5MS1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zOTMtXHRcdGNoYW5fbGlzdCA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6Mzk0Olx0XHRcdChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19jaGFuX2xpc3RfcGFyYW1fc2V0ICopICpidWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzk1LVx0XHRtZW1zZXQoY2hhbl9saXN0LCAwLCBzdHJ1Y3Rfc2l6ZShjaGFuX2xpc3QsIGNoYW5fc2Nhbl9wYXJhbSwgMSkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zOTctXHRcdGNoYW5fbGlzdC1cdTAwM2VoZWFkZXIubGVuID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozOTg6XHRcdFx0Y3B1X3RvX2xlMTYoc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2NoYW5fc2Nhbl9wYXJhbV9zZXQpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zOTktXHRcdGNoYW5fbGlzdC1cdTAwM2VjaGFuX3NjYW5fcGFyYW1bMF0uY2hhbl9udW1iZXIgPVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MDEtXHRcdGNoYW5fbGlzdC1cdTAwM2VjaGFuX3NjYW5fcGFyYW1bMF0ucmFkaW9fdHlwZSA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDAyOlx0XHRcdG13aWZpZXhfYmFuZF90b19yYWRpb190eXBlKCh1OCkgYnNzX2Rlc2MtXHUwMDNlYnNzX2JhbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQwMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDE2LVx0aWYgKGJzc19kZXNjLVx1MDAzZWJjbl9ic3NfY29fMjA0MCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQxNzpcdFx0YnNzX2NvXzIwNDAgPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfMjA0MGJzc2NvICopICpidWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDE4LVx0XHRtZW1zZXQoYnNzX2NvXzIwNDAsIDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDE5Olx0XHQgICAgICAgc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzXzIwNDBic3NjbykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQyMC1cdFx0YnNzX2NvXzIwNDAtXHUwMDNlaGVhZGVyLnR5cGUgPSBjcHVfdG9fbGUxNihXTEFOX0VJRF9CU1NfQ09FWF8yMDQwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDI0LVx0XHRtZW1jcHkoKHU4ICopIGJzc19jb18yMDQwICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDI1Olx0XHQgICAgICAgc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2hlYWRlciksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDI2LVx0XHQgICAgICAgYnNzX2Rlc2MtXHUwMDNlYmNuX2Jzc19jb18yMDQwICYjNDM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQyOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0MzA6XHRcdCpidWZmZXIgJiM0Mzs9IHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc18yMDQwYnNzY28pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQzMTpcdFx0cmV0X2xlbiAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzXzIwNDBic3Njbyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDMyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MzUtXHRcdGhkciA9ICh2b2lkICopYnNzX2Rlc2MtXHUwMDNlYmNuX2V4dF9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDM2Olx0XHRleHRfY2FwID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2V4dGNhcCAqKSAqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQzNzpcdFx0bWVtc2V0KGV4dF9jYXAsIDAsIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19leHRjYXApKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MzgtXHRcdGV4dF9jYXAtXHUwMDNlaGVhZGVyLnR5cGUgPSBjcHVfdG9fbGUxNihXTEFOX0VJRF9FWFRfQ0FQQUJJTElUWSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0NTE6XHRcdCpidWZmZXIgJiM0Mzs9IHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19leHRjYXApICYjNDM7IGhkci1cdTAwM2VsZW47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDUyOlx0XHRyZXRfbGVuICYjNDM7PSBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfZXh0Y2FwKSAmIzQzOyBoZHItXHUwMDNlbGVuO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ1My1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDYxLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQ2MjpzdGF0aWMgaW50IG13aWZpZXhfaXNfdHhfYmFfc3RyZWFtX3B0cl92YWxpZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQ2MzpcdFx0XHRcdHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKnR4X3RibF9wdHIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDY0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0NjU6XHRzdHJ1Y3QgbXdpZmlleF90eF9iYV9zdHJlYW1fdGJsICp0eF9iYV90c3JfdGJsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ2Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDgwLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQ4MTp2b2lkIG13aWZpZXhfMTFuX2RlbGV0ZV90eF9iYV9zdHJlYW1fdGJsX2VudHJ5KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDgyOlx0XHRcdFx0c3RydWN0IG13aWZpZXhfdHhfYmFfc3RyZWFtX3RibCAqdHhfYmFfdHNyX3RibClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00ODMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ4NC1cdGlmICghdHhfYmFfdHNyX3RibCBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0ODU6XHQgICAgbXdpZmlleF9pc190eF9iYV9zdHJlYW1fcHRyX3ZhbGlkKHByaXYsIHR4X2JhX3Rzcl90YmwpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ4Ni1cdFx0cmV0dXJuO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ4Ny1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwMTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODI4MwoJCQkJCQkJb3V0cHV0OiAxNTcKCQkJCQkJCXRob3VnaHRzOiAxMTA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZz1mYWxzZTogQW5hbHl6aW5nIGEgTWFydmVsbCBTRElPIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBTeXprYWxsZXIgaXMgZnV6emluZyBgbXdpZmlleGAgb3ZlciBVU0IuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBmdXp6ZXIgY291bGQgcG90ZW50aWFsbHkgcHJvdmlkZSBhcmJpdHJhcnkgVVNCIGRlc2NyaXB0b3JzIGFuZCByZXNwb25zZXMsIHRoYXQmIzM5O3MgZmluZS4gQnV0LCB0aGlzIHBhcnRpY3VsYXIgcGF0Y2gsIHRob3VnaCwgaXMgYWJvdXQgYSBgbWFydmVsbCxpbnZhbGlkLXJlZy1oaW50LWluLXJvbWAgZGV2aWNlIHByb3BlcnR5LgoKTm93LCB0aGlzIHByb3BlcnR5IGlzIHJlYWQgZnJvbSB0aGUgZGV2aWNlIHRyZWUuIEluIGEgVVNCLWVtdWxhdGVkIGVudmlyb25tZW50LCB3aGVyZSB0aGlzIGZ1enplciBpcyBydW5uaW5nLCBgYWRhcHRlci0mZ3Q7ZGV2YCBpcyB0aGUgVVNCIGRldmljZS4gVVNCIGRldmljZXMgKnVzdWFsbHkqIGRvbiYjMzk7dCBoYXZlIGRldmljZSB0cmVlIG5vZGVzIHVubGVzcyB0aGV5JiMzOTtyZSBoYXJkY29kZWQgb24gYSBib2FyZCwgbGlrZSB3aXRoIGEgbW9kaWZpZWQgZGV2aWNlIHRyZWUgaW4gYGFybWFkYS0zODUtbGlua3N5cy1yYW5nby5kdHNgLiBBaGEhIFRoZSBwYXRjaCAqZG9lcyogbW9kaWZ5IHRoaXMgdmVyeSBEVFMgZmlsZSwgc3BlY2lmaWNhbGx5IGFkZGluZyB0aGUgcHJvcGVydHkgdG8gYW4gU0RJTyBkZXZpY2Ugb24gYSBwYXJ0aWN1bGFyIGJvYXJkIChgd2lmaUAxYCB1bmRlciBgJmFtcDtzZGhjaWApLgoKU28sIHRoaXMgcHJvcGVydHkgaXMgc3BlY2lmaWNhbGx5IGZvciBhbiBTRElPIGRldmljZSBvbiBhIGNlcnRhaW4gQVJNIGJvYXJkLiBUaGUgY3JpdGljYWwgY29kZSBwYXRoIGlzOgoKYGBgYwoJCQkJaWYgKGNvdW50cnlfY29kZSAmYW1wOyZhbXA7CgkJCQkgICAgIWRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woYWRhcHRlci0mZ3Q7ZGV2LAoJCQkJCQkJICAgICAgICYjMzQ7bWFydmVsbCxpbnZhbGlkLXJlZy1oaW50LWluLXJvbSYjMzQ7KSAmYW1wOyZhbXA7CgkJCQkgICAgcmVndWxhdG9yeV9oaW50KHdpcGh5LCBjb3VudHJ5X2NvZGUpKQpgYGAKCklmIHRoZSBwcm9wZXJ0eSAqaXNuJiMzOTt0KiBwcmVzZW50LCB3aGljaCBpcyB0aGUgZGVmYXVsdCBmb3IgZXZlcnl0aGluZyBleGNlcHQgdGhhdCBzcGVjaWZpYyBib2FyZCwgaXQmIzM5O2xsIGNhbGwgYHJlZ3VsYXRvcnlfaGludGAuIFRoZSBwYXRjaCBpcyAqb25seSogYWRkaW5nIGEgd2F5IHRvICpza2lwKiBgcmVndWxhdG9yeV9oaW50YCBpZiB0aGUgcHJvcGVydHkgKmlzKiBwcmVzZW50LgoKQ29uc2lkZXJpbmcgdGhhdCB0aGUgZnV6emVyIHJ1bnMgb24geDg2XzY0IG9yIGFybTY0IGdlbmVyaWMgVk1zLCB0aGUgZGV2aWNlIHRyZWUgd29uJiMzOTt0IGhhdmUgdGhpcyBwcm9wZXJ0eSBzZXQuIFRoZXJlZm9yZSwgdGhlIGZ1enplciYjMzk7cyBleGVjdXRpb24gZmxvdyB3b24mIzM5O3QgY2hhbmdlLiBUaGUgY29uZGl0aW9uIGAhZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbCguLi4pYCB3aWxsIGFsd2F5cyBiZSBgdHJ1ZWAsIGFuZCBpdCB3aWxsIGV4ZWN1dGUgYHJlZ3VsYXRvcnlfaGludGAuCgpTbywgdGhlIG5leHQgcXVlc3Rpb24gaXM6IERvZXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyBmb3IgdGhlIGZ1enplcj8gTm8sIGJlY2F1c2UgaXQgZG9lc24mIzM5O3QgcnVuIHdpdGggdGhhdCBwYXJ0aWN1bGFyIGRldmljZSB0cmVlISBFdmVuIGlmIGl0IGRpZCwgc2tpcHBpbmcgYHJlZ3VsYXRvcnlfaGludGAgaXMgYSB2ZXJ5IG1pbm9yIGNoYW5nZSwgYXZvaWRpbmcgYSBmdW5jdGlvbiBjYWxsIHRvIHRoZSByZWd1bGF0b3J5IHN1YnN5c3RlbS4gSXMgdGhpcyBldmVuIHdvcnRoIGZ1enppbmc/IEl0JiMzOTtzIGp1c3QgYWRkaW5nIGEgZGV2aWNlIHRyZWUgcHJvcGVydHkgY2hlY2ssIGEgYm9hcmQtc3BlY2lmaWMgcXVpcmsuCgpUaGUgZnV6emluZyBydWxlcyBzdGF0ZTogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zLi4uQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7CgpUaGUgY29kZSBwYXRoIHdoZXJlIGBkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sYCByZXR1cm5zIGB0cnVlYCBpcyB1bnJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQgYmVjYXVzZSB0aGUgYG1hcnZlbGwsaW52YWxpZC1yZWctaGludC1pbi1yb21gIHByb3BlcnR5IGlzbiYjMzk7dCBwcmVzZW50LCBhbmQgdGhlIGZ1enplciBjYW4mIzM5O3QgaW5qZWN0IGl0IChhcyBmYXIgYXMgSSBrbm93KSBmb3IgVVNCL1NESU8gZGV2aWNlcy4gTm9wZSwgbm8gd2F5IHRvIGluamVjdCB0aGUgZGV2aWNlIHRyZWUgaGVyZS4gQWxzbywgZXZlbiBpZiBpdCAqd2FzKiByZWFjaGFibGUsIHRoZSBmdW5jdGlvbmFsIGNoYW5nZSBpcyB0cml2aWFsOiBhZGRpbmcgYSBib29sZWFuIGNoZWNrLgoKRG91YmxlLWNoZWNraW5nLCB0aGUgcGF0Y2ggbW9kaWZpZXMgYERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvbWFydmVsbCxzZDg3ODcueWFtbGAsIGBhcmNoL2FybS9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS0zODUtbGlua3N5cy1yYW5nby5kdHNgIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNgLiBUaGlzIGNvbmZpcm1zIGl0JiMzOTtzIGEgY2xhc3NpYyBib2FyZC1zcGVjaWZpYyBxdWlyayB3aGVyZSBpdCBza2lwcyBgcmVndWxhdG9yeV9oaW50YCB3aGVuIHRoZSBEVCBwcm9wZXJ0eSBpcyB0aGVyZS4gQmVjYXVzZSB0aGUgZnV6emVyIHdvbiYjMzk7dCBoYXZlIHRoYXQgRFQgcHJvcGVydHksIHRoZSBleGVjdXRpb24gZmxvdyBpcyBpZGVudGljYWwuIEV2ZW4gaWYgcmVhY2hhYmxlLCBpdCYjMzk7cyBqdXN0IHNraXBwaW5nIGEgc2luZ2xlIGZ1bmN0aW9uIGNhbGwuCgpCYXNlZCBvbiB0aGUgcnVsZXMsIHdoZXJlIEkmIzM5O3ZlIGdvdCAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSYjMzQ7IGFuZCBoZXJlIHRoYXQmIzM5O3MgYGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2xgIHJldHVybmluZyBgdHJ1ZWAsIGFuZCBiZWNhdXNlIHRoZSBmYWxzZSBicmFuY2ggaXMgdGhlIHNhbWUgYXMgdGhlIG9sZCBjb2RlLCBJJiMzOTttIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDAxOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGJvYXJkLXNwZWNpZmljIHF1aXJrIGZvciBNYXJ2ZWxsIFdpRmkgZGV2aWNlcyB0byBza2lwIGEgcmVndWxhdG9yeSBoaW50IGlmIGEgc3BlY2lmaWMgZGV2aWNlIHRyZWUgcHJvcGVydHkgKCYjMzk7bWFydmVsbCxpbnZhbGlkLXJlZy1oaW50LWluLXJvbSYjMzk7KSBpcyBwcmVzZW50LiBUaGlzIHByb3BlcnR5IGlzIG9ubHkgYWRkZWQgdG8gYSBzcGVjaWZpYyBBUk0gYm9hcmQmIzM5O3MgZGV2aWNlIHRyZWUgKGFybWFkYS0zODUtbGlua3N5cy1yYW5nbykuIEluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUvR0NFIHdoZXJlIGZ1enppbmcgb2NjdXJzLCB0aGlzIGRldmljZSB0cmVlIHByb3BlcnR5IHdpbGwgbm90IGJlIHByZXNlbnQsIG1lYW5pbmcgdGhlIGV4ZWN1dGlvbiBmbG93IHdpbGwgYmUgaWRlbnRpY2FsIHRvIHRoZSBwcmUtcGF0Y2ggYmVoYXZpb3IuIFRoZSBuZXcgY29kZSBwYXRoIChza2lwcGluZyB0aGUgcmVndWxhdG9yeSBoaW50KSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgc3RhbmRhcmQgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBib2FyZC1zcGVjaWZpYyBxdWlyayBmb3IgTWFydmVsbCBXaUZpIGRldmljZXMgdG8gc2tpcCBhIHJlZ3VsYXRvcnkgaGludCBpZiBhIHNwZWNpZmljIGRldmljZSB0cmVlIHByb3BlcnR5ICgmIzM5O21hcnZlbGwsaW52YWxpZC1yZWctaGludC1pbi1yb20mIzM5OykgaXMgcHJlc2VudC4gVGhpcyBwcm9wZXJ0eSBpcyBvbmx5IGFkZGVkIHRvIGEgc3BlY2lmaWMgQVJNIGJvYXJkJiMzOTtzIGRldmljZSB0cmVlIChhcm1hZGEtMzg1LWxpbmtzeXMtcmFuZ28pLiBJbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSB3aGVyZSBmdXp6aW5nIG9jY3VycywgdGhpcyBkZXZpY2UgdHJlZSBwcm9wZXJ0eSB3aWxsIG5vdCBiZSBwcmVzZW50LCBtZWFuaW5nIHRoZSBleGVjdXRpb24gZmxvdyB3aWxsIGJlIGlkZW50aWNhbCB0byB0aGUgcHJlLXBhdGNoIGJlaGF2aW9yLiBUaGUgbmV3IGNvZGUgcGF0aCAoc2tpcHBpbmcgdGhlIHJlZ3VsYXRvcnkgaGludCkgaXMgdW5yZWFjaGFibGUgZHVyaW5nIHN0YW5kYXJkIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwMTozNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDE6MzM6MzEuMzI1MTAyNjMzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEzOTk4NDUyNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgYm9hcmQtc3BlY2lmaWMgcXVpcmsgZm9yIE1hcnZlbGwgV2lGaSBkZXZpY2VzIHRvIHNraXAgYSByZWd1bGF0b3J5IGhpbnQgaWYgYSBzcGVjaWZpYyBkZXZpY2UgdHJlZSBwcm9wZXJ0eSAoJ21hcnZlbGwsaW52YWxpZC1yZWctaGludC1pbi1yb20nKSBpcyBwcmVzZW50LiBUaGlzIHByb3BlcnR5IGlzIG9ubHkgYWRkZWQgdG8gYSBzcGVjaWZpYyBBUk0gYm9hcmQncyBkZXZpY2UgdHJlZSAoYXJtYWRhLTM4NS1saW5rc3lzLXJhbmdvKS4gSW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS9HQ0Ugd2hlcmUgZnV6emluZyBvY2N1cnMsIHRoaXMgZGV2aWNlIHRyZWUgcHJvcGVydHkgd2lsbCBub3QgYmUgcHJlc2VudCwgbWVhbmluZyB0aGUgZXhlY3V0aW9uIGZsb3cgd2lsbCBiZSBpZGVudGljYWwgdG8gdGhlIHByZS1wYXRjaCBiZWhhdmlvci4gVGhlIG5ldyBjb2RlIHBhdGggKHNraXBwaW5nIHRoZSByZWd1bGF0b3J5IGhpbnQpIGlzIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDE6MzM6MzEuMzI1MTE1ODEzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTUwNjA0MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyN2M5OGYwYmRmZTBlOGNhZmIyMGNhODZhMTdmNmQzZmU2ODIwOTNiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDIxIDAxOjMzOjMwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvbWFydmVsbCxzZDg3ODcueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvbWFydmVsbCxzZDg3ODcueWFtbFxcbmluZGV4IDkzMGI3MDBiNzNkMDAuLjlmOTA1ZWY1YzJjMDcgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy9tYXJ2ZWxsLHNkODc4Ny55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy9tYXJ2ZWxsLHNkODc4Ny55YW1sXFxuQEAgLTU5LDYgKzU5LDEyIEBAIHByb3BlcnRpZXM6XFxuICAgICBkZXNjcmlwdGlvbjogQ2FsaWJyYXRpb24gZGF0YSBmb3Igc3ViLWJhbmQgMyBpbiB0aGUgNUdIeiBiYW5kLlxcbiAgICAgbWF4SXRlbXM6IDUwMlxcbiBcXG4rICBtYXJ2ZWxsLGludmFsaWQtcmVnLWhpbnQtaW4tcm9tOlxcbisgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvZmxhZ1xcbisgICAgZGVzY3JpcHRpb246XFxuKyAgICAgIFRoZSByZWd1bGF0b3J5IGhpbnQgaW4gUk9NIGNvbmZsaWN0cyB3aXRoIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24uXFxuKyAgICAgIEl0IHNob3VsZCBiZSBpZ25vcmVkLCBzbyB0aGUgcGxhdGZvcm0gcmVndWxhdG9yeSBkb21haW4gY2FuIGJlIHVzZWQuXFxuK1xcbiAgIG1hcnZlbGwsd2FrZXVwLXBpbjpcXG4gICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL3VpbnQzMlxcbiAgICAgZGVzY3JpcHRpb246XFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTM4NS1saW5rc3lzLXJhbmdvLmR0cyBiL2FyY2gvYXJtL2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTM4NS1saW5rc3lzLXJhbmdvLmR0c1xcbmluZGV4IDRhYjQ1ZjI5NGRlMjIuLjJiZjI5OTgxYTAzMTMgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtMzg1LWxpbmtzeXMtcmFuZ28uZHRzXFxuKysrIGIvYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtMzg1LWxpbmtzeXMtcmFuZ28uZHRzXFxuQEAgLTE2NSw2ICsxNjUsMTUgQEAgXFx1MDAyNnNkaGNpIHtcXG4gXFx0d3AtaW52ZXJ0ZWQ7XFxuIFxcdGJ1cy13aWR0aCA9IFxcdTAwM2M4XFx1MDAzZTtcXG4gXFx0c3RhdHVzID0gXFxcIm9rYXlcXFwiO1xcbitcXG4rXFx0I2FkZHJlc3MtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuK1xcdCNzaXplLWNlbGxzID0gXFx1MDAzYzBcXHUwMDNlO1xcbitcXG4rXFx0d2lmaUAxIHtcXG4rXFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJtYXJ2ZWxsLHNkODg5N1xcXCI7XFxuK1xcdFxcdHJlZyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rXFx0XFx0bWFydmVsbCxpbnZhbGlkLXJlZy1oaW50LWluLXJvbTtcXG4rXFx0fTtcXG4gfTtcXG4gXFxuIFxcdTAwMjZ1c2IzXzFfdmJ1cyB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNcXG5pbmRleCA3YTFiYTMyZjFmYjM2Li4yOTM4NzYzOTdiNjcwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNcXG5AQCAtNDg5Nyw3ICs0ODk3LDE0IEBAIGludCBtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuIFxcdFxcdFxcdFxcdGNvdW50cnlfY29kZSA9XFxuIFxcdFxcdFxcdFxcdFxcdG13aWZpZXhfMTFkX2NvZGVfMl9yZWdpb24oXFxuIFxcdFxcdFxcdFxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZXJlZ2lvbl9jb2RlKTtcXG4rXFxuK1xcdFxcdFxcdFxcdC8qIElmIHRoZSByZWcgaGludCBpbiBST00gY29uZmxpY3RzIHdpdGggcGxhdGZvcm1cXG4rXFx0XFx0XFx0XFx0ICogY29uZmlndXJhdGlvbiwgaXQgc2hvdWxkIGJlIGlnbm9yZWQsIHNvIHRoZVxcbitcXHRcXHRcXHRcXHQgKiBwbGF0Zm9ybSByZWd1bGF0b3J5IGRvbWFpbiBjYW4gYmUgdXNlZC5cXG4rXFx0XFx0XFx0XFx0ICovXFxuIFxcdFxcdFxcdFxcdGlmIChjb3VudHJ5X2NvZGUgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0XFx0XFx0ICAgICFkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGFkYXB0ZXItXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcXCJtYXJ2ZWxsLGludmFsaWQtcmVnLWhpbnQtaW4tcm9tXFxcIikgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0XFx0ICAgIHJlZ3VsYXRvcnlfaGludCh3aXBoeSwgY291bnRyeV9jb2RlKSlcXG4gXFx0XFx0XFx0XFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgRVJST1IsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICBcXFwicmVndWxhdG9yeV9oaW50KCkgZmFpbGVkXFxcXG5cXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDE6MzM6MzEuNzgxMzMzMTY5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjA5NDM1OTg4MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBib2FyZC1zcGVjaWZpYyBxdWlyayBmb3IgTWFydmVsbCBXaUZpIGRldmljZXMgdG8gc2tpcCBhIHJlZ3VsYXRvcnkgaGludCBpZiBhIHNwZWNpZmljIGRldmljZSB0cmVlIHByb3BlcnR5ICgnbWFydmVsbCxpbnZhbGlkLXJlZy1oaW50LWluLXJvbScpIGlzIHByZXNlbnQuIFRoaXMgcHJvcGVydHkgaXMgb25seSBhZGRlZCB0byBhIHNwZWNpZmljIEFSTSBib2FyZCdzIGRldmljZSB0cmVlIChhcm1hZGEtMzg1LWxpbmtzeXMtcmFuZ28pLiBJbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSB3aGVyZSBmdXp6aW5nIG9jY3VycywgdGhpcyBkZXZpY2UgdHJlZSBwcm9wZXJ0eSB3aWxsIG5vdCBiZSBwcmVzZW50LCBtZWFuaW5nIHRoZSBleGVjdXRpb24gZmxvdyB3aWxsIGJlIGlkZW50aWNhbCB0byB0aGUgcHJlLXBhdGNoIGJlaGF2aW9yLiBUaGUgbmV3IGNvZGUgcGF0aCAoc2tpcHBpbmcgdGhlIHJlZ3VsYXRvcnkgaGludCkgaXMgdW5yZWFjaGFibGUgZHVyaW5nIHN0YW5kYXJkIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyN2M5OGYwYmRmZTBlOGNhZmIyMGNhODZhMTdmNmQzZmU2ODIwOTNiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMjEgMDE6MzM6MzAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpcmVsZXNzL21hcnZlbGwsc2Q4Nzg3LnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpcmVsZXNzL21hcnZlbGwsc2Q4Nzg3LnlhbWxcbmluZGV4IDkzMGI3MDBiNzNkMDAuLjlmOTA1ZWY1YzJjMDcgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpcmVsZXNzL21hcnZlbGwsc2Q4Nzg3LnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvbWFydmVsbCxzZDg3ODcueWFtbFxuQEAgLTU5LDYgKzU5LDEyIEBAIHByb3BlcnRpZXM6XG4gICAgIGRlc2NyaXB0aW9uOiBDYWxpYnJhdGlvbiBkYXRhIGZvciBzdWItYmFuZCAzIGluIHRoZSA1R0h6IGJhbmQuXG4gICAgIG1heEl0ZW1zOiA1MDJcbiBcbisgIG1hcnZlbGwsaW52YWxpZC1yZWctaGludC1pbi1yb206XG4rICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL2ZsYWdcbisgICAgZGVzY3JpcHRpb246XG4rICAgICAgVGhlIHJlZ3VsYXRvcnkgaGludCBpbiBST00gY29uZmxpY3RzIHdpdGggcGxhdGZvcm0gY29uZmlndXJhdGlvbi5cbisgICAgICBJdCBzaG91bGQgYmUgaWdub3JlZCwgc28gdGhlIHBsYXRmb3JtIHJlZ3VsYXRvcnkgZG9tYWluIGNhbiBiZSB1c2VkLlxuK1xuICAgbWFydmVsbCx3YWtldXAtcGluOlxuICAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy91aW50MzJcbiAgICAgZGVzY3JpcHRpb246XG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtMzg1LWxpbmtzeXMtcmFuZ28uZHRzIGIvYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtMzg1LWxpbmtzeXMtcmFuZ28uZHRzXG5pbmRleCA0YWI0NWYyOTRkZTIyLi4yYmYyOTk4MWEwMzEzIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtMzg1LWxpbmtzeXMtcmFuZ28uZHRzXG4rKysgYi9hcmNoL2FybS9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS0zODUtbGlua3N5cy1yYW5nby5kdHNcbkBAIC0xNjUsNiArMTY1LDE1IEBAIFx1MDAyNnNkaGNpIHtcbiBcdHdwLWludmVydGVkO1xuIFx0YnVzLXdpZHRoID0gXHUwMDNjOFx1MDAzZTtcbiBcdHN0YXR1cyA9IFwib2theVwiO1xuK1xuK1x0I2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuK1x0I3NpemUtY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuK1xuK1x0d2lmaUAxIHtcbitcdFx0Y29tcGF0aWJsZSA9IFwibWFydmVsbCxzZDg4OTdcIjtcbitcdFx0cmVnID0gXHUwMDNjMVx1MDAzZTtcbitcdFx0bWFydmVsbCxpbnZhbGlkLXJlZy1oaW50LWluLXJvbTtcbitcdH07XG4gfTtcbiBcbiBcdTAwMjZ1c2IzXzFfdmJ1cyB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xuaW5kZXggN2ExYmEzMmYxZmIzNi4uMjkzODc2Mzk3YjY3MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xuQEAgLTQ4OTcsNyArNDg5NywxNCBAQCBpbnQgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuIFx0XHRcdFx0Y291bnRyeV9jb2RlID1cbiBcdFx0XHRcdFx0bXdpZmlleF8xMWRfY29kZV8yX3JlZ2lvbihcbiBcdFx0XHRcdFx0XHRhZGFwdGVyLVx1MDAzZXJlZ2lvbl9jb2RlKTtcbitcbitcdFx0XHRcdC8qIElmIHRoZSByZWcgaGludCBpbiBST00gY29uZmxpY3RzIHdpdGggcGxhdGZvcm1cbitcdFx0XHRcdCAqIGNvbmZpZ3VyYXRpb24sIGl0IHNob3VsZCBiZSBpZ25vcmVkLCBzbyB0aGVcbitcdFx0XHRcdCAqIHBsYXRmb3JtIHJlZ3VsYXRvcnkgZG9tYWluIGNhbiBiZSB1c2VkLlxuK1x0XHRcdFx0ICovXG4gXHRcdFx0XHRpZiAoY291bnRyeV9jb2RlIFx1MDAyNlx1MDAyNlxuK1x0XHRcdFx0ICAgICFkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGFkYXB0ZXItXHUwMDNlZGV2LFxuK1x0XHRcdFx0XHRcdFx0ICAgICAgIFwibWFydmVsbCxpbnZhbGlkLXJlZy1oaW50LWluLXJvbVwiKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHRcdCAgICByZWd1bGF0b3J5X2hpbnQod2lwaHksIGNvdW50cnlfY29kZSkpXG4gXHRcdFx0XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgRVJST1IsXG4gXHRcdFx0XHRcdFx0ICAgIFwicmVndWxhdG9yeV9oaW50KCkgZmFpbGVkXFxuXCIpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDE6MzM6MzEuNzgxMzM0NzY5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ4Mjg1NDgzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZlYXNpYmlsaXR5IG9mIGEgTWlub3IgV2lGaSBEcml2ZXIgQ2hhbmdlKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgYSBmZXcgZmlsZXM6IHRoZSBkZXZpY2UgdHJlZSBiaW5kaW5nIGZvciBhIE1hcnZlbGwgV2lGaSBjaGlwLCBhIGRldmljZSB0cmVlIGZpbGUgZm9yIGFuIEFybWFkYSBib2FyZCwgYW5kIHRoZSBgbXdpZmlleGAgd2lyZWxlc3MgZHJpdmVyIGl0c2VsZi4gVGhlIGtleSBjaGFuZ2UgaW4gYG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTFgIGlzIGEgY2hlY2sgZm9yIHRoaXMgbmV3IGRldmljZSBwcm9wZXJ0eSwgYG1hcnZlbGwsaW52YWxpZC1yZWctaGludC1pbi1yb21gLiBJZiBpdCdzIHRoZXJlLCBpdCBqdXN0IHNraXBzIGEgcmVndWxhdG9yeSBoaW50LiBQcmV0dHkgbWluaW1hbCwgcmVhbGx5LlxuXG5UaGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgd29ydGggZnV6emluZz8gVGhlIGRyaXZlciBpbiBxdWVzdGlvbiBpcyBgbXdpZmlleGAsIGEgTWFydmVsbCBXaUZpIGRyaXZlciwgd2hpY2ggaXMgc29tZXdoYXQgbmljaGUuIEl0IHJlcXVpcmVzIHNwZWNpZmljIGhhcmR3YXJlIOKAkyBTRElPLCBQQ0llLCBvciBVU0IgTWFydmVsbCBXaUZpIGNhcmRzLiBDYW4gSSBldmVuIGdldCBhdCBpdCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBMaWtlbHkgbm90IGRpcmVjdGx5LCBhcyBRRU1VIGRvZXNuJ3QgZW11bGF0ZSBNYXJ2ZWxsIFdpRmkuIEhvd2V2ZXIsIHRoZSBsaWdodGJ1bGIganVzdCB3ZW50IG9mZjogYG13aWZpZXhgIGhhcyBhIFVTQiBkcml2ZXIsIGBtd2lmaWV4X3VzYmAhIFRoYXQgb3BlbnMgdXAgcG9zc2liaWxpdGllcy5cblxuVVNCIGRldmljZXMgY2FuIG9mdGVuIGJlIGZ1enplZCB1c2luZyBgZHVtbXlfaGNkYCBvciBzeXprYWxsZXIncyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMuIElmIEkgY2FuIHJlYWNoIGBtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExYCB0aHJvdWdoIHRoZSBVU0IgcGF0aCwgdGhpcyBiZWNvbWVzIGEgbXVjaCBtb3JlIGludGVyZXN0aW5nIHRhcmdldC4gSXQgbG9va3MgbGlrZSBpdCdzIGNhbGxlZCBkdXJpbmcgYWRhcHRlciBpbml0aWFsaXphdGlvbiwgc28gdGhhdCBzZWVtcyBwcm9taXNpbmcuXG5cbk5vdywgbGV0J3MgZGl2ZSBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmNgIG9yIGEgc2ltaWxhciBmaWxlIHRvIGNvbmZpcm0gd2hldGhlciB0aGlzIGluaXRpYWxpemF0aW9uIHBhdGggaXMgVVNCLWFjY2Vzc2libGUgYW5kIHNlZSBpZiBJIGNhbiBmaWd1cmUgb3V0IGhvdyB0byB0cmlnZ2VyIHRoYXQgYG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTFgIGNhbGwgdGhyb3VnaCBhIFVTQiBkZXZpY2UuIElmIEkgY2FuLCB0aGlzIGNoYW5nZSwgZXZlbiB0aG91Z2ggaXQncyBzbWFsbCwgY291bGQgYmUgd29ydGggYSBmdXp6aW5nIGNhbXBhaWduLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzAwLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDE6MzM6MzguMjY0MTkzMTc0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2ODc4OTk4NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz00NjY4PWludCBtd2lmaWV4X2luaXRfY2hhbm5lbF9zY2FuX2dhcChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNDY5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo0Njk4OmludCBtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNDY5OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuaC0xNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuaDoxNTppbnQgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICopO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5oLTE2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz01MzU9c3RhdGljIGludCBfbXdpZmlleF9md19kcGMoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmaXJtd2FyZSwgdm9pZCAqY29udGV4dClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtNTg2LVxcdGlmICghYWRhcHRlci1cXHUwMDNld2lwaHkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjU4NzpcXHRcXHRpZiAobXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMShhZGFwdGVyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtNTg4LVxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwMTozMzozOS45NTIwOTgzODNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTU1MjcwMzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTFgIENhbGwqKlxuXG5Pa2F5LCBzbyBgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMWAgaXMgdHJpZ2dlcmVkIGZyb20gYF9td2lmaWV4X2Z3X2RwY2AuIFJpZ2h0LCB0aGF0J3MgdGhlIGZpcm13YXJlIGRvd25sb2FkIGNvbXBsZXRpb24gY2FsbGJhY2suIFRoYXTigJlzIGludGVyZXN0aW5nLiBJbW1lZGlhdGVseSwgSSdtIHRoaW5raW5nIGFib3V0IGZ1enppbmcgYW5kIHJlYWNoYWJpbGl0eS4gSWYgYG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTFgIGRlcGVuZHMgb24gYSBzdWNjZXNzZnVsIGZpcm13YXJlIGRvd25sb2FkLCBnZXR0aW5nIHRoZXJlIHdpdGggYSBmdXp6ZXIgKmNvdWxkKiBiZSB0cmlja3kuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZSBmdXp6ZXIgcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBmaXJtd2FyZSBkYXRhLCBvciBpZiB0aGUgZHJpdmVyIGNhbiBzb21laG93IHByb2NlZWQgd2l0aG91dCBpdC4gTXkgZ3V0IHNheXMgSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgX213aWZpZXhfZndfZHBjYCB0byBjb25maXJtIHRoaXMgcG90ZW50aWFsIGRlcGVuZGVuY3kgYW5kIHVuZGVyc3RhbmQgdGhlIHBhdGggdG8gdGhpcyBjcnVjaWFsIGZ1bmN0aW9uLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkzMywiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDAxOjMzOjQ0LjEwNzM3MTM1OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODE3MzgxNDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9td2lmaWV4X2Z3X2RwY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTUxMD1zdGF0aWMgdm9pZCBtd2lmaWV4X3Rlcm1pbmF0ZV93b3JrcXVldWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtNTM0LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6NTM1OnN0YXRpYyBpbnQgX213aWZpZXhfZndfZHBjKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZmlybXdhcmUsIHZvaWQgKmNvbnRleHQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy01MzYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz02ODk9c3RhdGljIHZvaWQgbXdpZmlleF9md19kcGMoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmaXJtd2FyZSwgdm9pZCAqY29udGV4dClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTY5MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzo2OTE6XFx0X213aWZpZXhfZndfZHBjKGZpcm13YXJlLCBjb250ZXh0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTY5Mi19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTE1MzA9bXdpZmlleF9yZWluaXRfc3coc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTU5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjE1OTM6XFx0LyogX213aWZpZXhfZndfZHBjKCkgZG9lcyBpdHMgb3duIGNsZWFudXAgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjE1OTQ6XFx0cmV0ID0gX213aWZpZXhfZndfZHBjKGFkYXB0ZXItXFx1MDAzZWZpcm13YXJlLCBhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTE1OTUtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwMTozMzo0NS45MjQ3NzAyNzNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjE1MjMxNzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOlxuXG4qKlBvdGVudGlhbCBGaXJtd2FyZSBEZXBlbmRlbmN5IEZhaWx1cmUqKlxuXG5SaWdodCwgc28gaWYgdGhlIGV4cGVjdGVkIGZpcm13YXJlIGltYWdlIGlzIHNvbWVob3cgbWlzc2luZyBvciBpbmFjY2Vzc2libGUsIGl0J3MgcHJldHR5IGxpa2VseSB0aGF0IHRoZSBgX213aWZpZXhfZndfZHBjYCBmdW5jdGlvbiB3aWxsIGp1c3QgY3JhcCBvdXQuIFRoYXQncyB0aGUgbW9zdCBwcm9iYWJsZSBmYWlsdXJlIHBvaW50LCBnaXZlbiB0aGUgY29udGV4dC4gTGV0J3MgZGlnIGludG8gdGhhdCBgX213aWZpZXhfZndfZHBjYCByb3V0aW5lIGFuZCBzZWUgZXhhY3RseSAqd2h5KiBpdCB3b3VsZCBmYWlsLiBHb3R0YSBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmN5IGNoYWluIGFuZCBhbnkgaW1wbGljaXQgYXNzdW1wdGlvbnMgaXQgbWFrZXMgYWJvdXQgdGhlIGZpcm13YXJlJ3MgYXZhaWxhYmlsaXR5LiBUaGVyZSdzIHByb2JhYmx5IHNvbWUgZXJyb3IgaGFuZGxpbmcgKG9yIGxhY2sgdGhlcmVvZikgaW4gdGhlcmUgdGhhdCdzIGNydWNpYWwgdG8gdW5kZXJzdGFuZC4gTmVlZCB0byBjb25maXJtIG15IGFzc3VtcHRpb24sIG9idmlvdXNseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY4MSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDAxOjMzOjQ5LjU0MDAwNDMyNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUzMCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1MzA6XFx0ICpcXG4gNTMxOlxcdCAqIFRoZSBtYWluIGluaXRpYWxpemF0aW9uIHN0ZXBzIGZvbGxvd2VkIGFyZSAtXFxuIDUzMjpcXHQgKiAgICAgIC0gRG93bmxvYWQgdGhlIGNvcnJlY3QgZmlybXdhcmUgdG8gY2FyZFxcbiA1MzM6XFx0ICogICAgICAtIElzc3VlIHRoZSBpbml0IGNvbW1hbmRzIHRvIGZpcm13YXJlXFxuIDUzNDpcXHQgKi9cXG4gNTM1OlxcdHN0YXRpYyBpbnQgX213aWZpZXhfZndfZHBjKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZmlybXdhcmUsIHZvaWQgKmNvbnRleHQpXFxuIDUzNjpcXHR7XFxuIDUzNzpcXHRcXHRpbnQgcmV0O1xcbiA1Mzg6XFx0XFx0Y2hhciBmbXRbNjRdO1xcbiA1Mzk6XFx0XFx0c3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciA9IGNvbnRleHQ7XFxuIDU0MDpcXHRcXHRzdHJ1Y3QgbXdpZmlleF9md19pbWFnZSBmdztcXG4gNTQxOlxcdFxcdGJvb2wgaW5pdF9mYWlsZWQgPSBmYWxzZTtcXG4gNTQyOlxcdFxcdHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXY7XFxuIDU0MzpcXHRcXHRzdHJ1Y3QgY29tcGxldGlvbiAqZndfZG9uZSA9IGFkYXB0ZXItXFx1MDAzZWZ3X2RvbmU7XFxuIDU0NDpcXHRcXG4gNTQ1OlxcdFxcdGlmICghZmlybXdhcmUpIHtcXG4gNTQ2OlxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxcbiA1NDc6XFx0XFx0XFx0XFx0ICAgIFxcXCJGYWlsZWQgdG8gZ2V0IGZpcm13YXJlICVzXFxcXG5cXFwiLCBhZGFwdGVyLVxcdTAwM2Vmd19uYW1lKTtcXG4gNTQ4OlxcdFxcdFxcdGdvdG8gZXJyX2RubGRfZnc7XFxuIDU0OTpcXHRcXHR9XFxuIDU1MDpcXHRcXG4gNTUxOlxcdFxcdG1lbXNldChcXHUwMDI2ZncsIDAsIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9md19pbWFnZSkpO1xcbiA1NTI6XFx0XFx0YWRhcHRlci1cXHUwMDNlZmlybXdhcmUgPSBmaXJtd2FyZTtcXG4gNTUzOlxcdFxcdGZ3LmZ3X2J1ZiA9ICh1OCAqKSBhZGFwdGVyLVxcdTAwM2VmaXJtd2FyZS1cXHUwMDNlZGF0YTtcXG4gNTU0OlxcdFxcdGZ3LmZ3X2xlbiA9IGFkYXB0ZXItXFx1MDAzZWZpcm13YXJlLVxcdTAwM2VzaXplO1xcbiA1NTU6XFx0XFxuIDU1NjpcXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlaWZfb3BzLmRubGRfZncpIHtcXG4gNTU3OlxcdFxcdFxcdHJldCA9IGFkYXB0ZXItXFx1MDAzZWlmX29wcy5kbmxkX2Z3KGFkYXB0ZXIsIFxcdTAwMjZmdyk7XFxuIDU1ODpcXHRcXHR9IGVsc2Uge1xcbiA1NTk6XFx0XFx0XFx0cmV0ID0gbXdpZmlleF9kbmxkX2Z3KGFkYXB0ZXIsIFxcdTAwMjZmdyk7XFxuIDU2MDpcXHRcXHR9XFxuIDU2MTpcXHRcXG4gNTYyOlxcdFxcdGlmIChyZXQgPT0gLTEpXFxuIDU2MzpcXHRcXHRcXHRnb3RvIGVycl9kbmxkX2Z3O1xcbiA1NjQ6XFx0XFxuIDU2NTpcXHRcXHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBNU0csIFxcXCJXTEFOIEZXIGlzIGFjdGl2ZVxcXFxuXFxcIik7XFxuIDU2NjpcXHRcXG4gNTY3OlxcdFxcdGlmIChjYWxfZGF0YV9jZmcpIHtcXG4gNTY4OlxcdFxcdFxcdGlmICgocmVxdWVzdF9maXJtd2FyZShcXHUwMDI2YWRhcHRlci1cXHUwMDNlY2FsX2RhdGEsIGNhbF9kYXRhX2NmZyxcXG4gNTY5OlxcdFxcdFxcdFxcdFxcdCAgICAgIGFkYXB0ZXItXFx1MDAzZWRldikpIFxcdTAwM2MgMClcXG4gNTcwOlxcdFxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxcbiA1NzE6XFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJDYWwgZGF0YSByZXF1ZXN0X2Zpcm13YXJlKCkgZmFpbGVkXFxcXG5cXFwiKTtcXG4gNTcyOlxcdFxcdH1cXG4gNTczOlxcdFxcbiA1NzQ6XFx0XFx0LyogZW5hYmxlIGhvc3QgaW50ZXJydXB0IGFmdGVyIGZ3IGRubGQgaXMgc3VjY2Vzc2Z1bCAqL1xcbiA1NzU6XFx0XFx0aWYgKGFkYXB0ZXItXFx1MDAzZWlmX29wcy5lbmFibGVfaW50KSB7XFxuIDU3NjpcXHRcXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlaWZfb3BzLmVuYWJsZV9pbnQoYWRhcHRlcikpXFxuIDU3NzpcXHRcXHRcXHRcXHRnb3RvIGVycl9kbmxkX2Z3O1xcbiA1Nzg6XFx0XFx0fVxcbiA1Nzk6XFx0XFxuIDU4MDpcXHRcXHRyZXQgPSBtd2lmaWV4X2luaXRfZncoYWRhcHRlcik7XFxuIDU4MTpcXHRcXHRpZiAocmV0ID09IC0xKVxcbiA1ODI6XFx0XFx0XFx0Z290byBlcnJfaW5pdF9mdztcXG4gNTgzOlxcdFxcbiA1ODQ6XFx0XFx0bWF5YmVfcXVpcmtfZndfZGlzYWJsZV9kcyhhZGFwdGVyKTtcXG4gNTg1OlxcdFxcbiA1ODY6XFx0XFx0aWYgKCFhZGFwdGVyLVxcdTAwM2V3aXBoeSkge1xcbiA1ODc6XFx0XFx0XFx0aWYgKG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTEoYWRhcHRlcikpIHtcXG4gNTg4OlxcdFxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxcbiA1ODk6XFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJjYW5ub3QgcmVnaXN0ZXIgd2l0aCBjZmc4MDIxMVxcXFxuXFxcIik7XFxuIDU5MDpcXHRcXHRcXHRcXHRnb3RvIGVycl9pbml0X2Z3O1xcbiA1OTE6XFx0XFx0XFx0fVxcbiA1OTI6XFx0XFx0fVxcbiA1OTM6XFx0XFxuIDU5NDpcXHRcXHRpZiAobXdpZmlleF9pbml0X2NoYW5uZWxfc2Nhbl9nYXAoYWRhcHRlcikpIHtcXG4gNTk1OlxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxcbiA1OTY6XFx0XFx0XFx0XFx0ICAgIFxcXCJjb3VsZCBub3QgaW5pdCBjaGFubmVsIHN0YXRzIHRhYmxlXFxcXG5cXFwiKTtcXG4gNTk3OlxcdFxcdFxcdGdvdG8gZXJyX2luaXRfY2hhbl9zY2FuO1xcbiA1OTg6XFx0XFx0fVxcbiA1OTk6XFx0XFxuIDYwMDpcXHRcXHRpZiAoZHJpdmVyX21vZGUpIHtcXG4gNjAxOlxcdFxcdFxcdGRyaXZlcl9tb2RlIFxcdTAwMjY9IE1XSUZJRVhfRFJJVkVSX01PREVfQklUTUFTSztcXG4gNjAyOlxcdFxcdFxcdGRyaXZlcl9tb2RlIHw9IE1XSUZJRVhfRFJJVkVSX01PREVfU1RBO1xcbiA2MDM6XFx0XFx0fVxcbiA2MDQ6XFx0XFxuIDYwNTpcXHRcXHRydG5sX2xvY2soKTtcXG4gNjA2OlxcdFxcdHdpcGh5X2xvY2soYWRhcHRlci1cXHUwMDNld2lwaHkpO1xcbiA2MDc6XFx0XFx0LyogQ3JlYXRlIHN0YXRpb24gaW50ZXJmYWNlIGJ5IGRlZmF1bHQgKi9cXG4gNjA4OlxcdFxcdHdkZXYgPSBtd2lmaWV4X2FkZF92aXJ0dWFsX2ludGYoYWRhcHRlci1cXHUwMDNld2lwaHksIFxcXCJtbGFuJWRcXFwiLCBORVRfTkFNRV9FTlVNLFxcbiA2MDk6XFx0XFx0XFx0XFx0XFx0XFx0Tkw4MDIxMV9JRlRZUEVfU1RBVElPTiwgTlVMTCk7XFxuIDYxMDpcXHRcXHRpZiAoSVNfRVJSKHdkZXYpKSB7XFxuIDYxMTpcXHRcXHRcXHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcXG4gNjEyOlxcdFxcdFxcdFxcdCAgICBcXFwiY2Fubm90IGNyZWF0ZSBkZWZhdWx0IFNUQSBpbnRlcmZhY2VcXFxcblxcXCIpO1xcbiA2MTM6XFx0XFx0XFx0d2lwaHlfdW5sb2NrKGFkYXB0ZXItXFx1MDAzZXdpcGh5KTtcXG4gNjE0OlxcdFxcdFxcdHJ0bmxfdW5sb2NrKCk7XFxuIDYxNTpcXHRcXHRcXHRnb3RvIGVycl9hZGRfaW50ZjtcXG4gNjE2OlxcdFxcdH1cXG4gNjE3OlxcdFxcbiA2MTg6XFx0XFx0aWYgKGRyaXZlcl9tb2RlIFxcdTAwMjYgTVdJRklFWF9EUklWRVJfTU9ERV9VQVApIHtcXG4gNjE5OlxcdFxcdFxcdHdkZXYgPSBtd2lmaWV4X2FkZF92aXJ0dWFsX2ludGYoYWRhcHRlci1cXHUwMDNld2lwaHksIFxcXCJ1YXAlZFxcXCIsIE5FVF9OQU1FX0VOVU0sXFxuIDYyMDpcXHRcXHRcXHRcXHRcXHRcXHRcXHROTDgwMjExX0lGVFlQRV9BUCwgTlVMTCk7XFxuIDYyMTpcXHRcXHRcXHRpZiAoSVNfRVJSKHdkZXYpKSB7XFxuIDYyMjpcXHRcXHRcXHRcXHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcXG4gNjIzOlxcdFxcdFxcdFxcdFxcdCAgICBcXFwiY2Fubm90IGNyZWF0ZSBBUCBpbnRlcmZhY2VcXFxcblxcXCIpO1xcbiA2MjQ6XFx0XFx0XFx0XFx0d2lwaHlfdW5sb2NrKGFkYXB0ZXItXFx1MDAzZXdpcGh5KTtcXG4gNjI1OlxcdFxcdFxcdFxcdHJ0bmxfdW5sb2NrKCk7XFxuIDYyNjpcXHRcXHRcXHRcXHRnb3RvIGVycl9hZGRfaW50ZjtcXG4gNjI3OlxcdFxcdFxcdH1cXG4gNjI4OlxcdFxcdH1cXG4gNjI5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwMTozMzo0OS41NDAxNTE0OTRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODcwMDY2NTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBNYXJ2ZWxsIFdpLUZpIEZpcm13YXJlIExvYWRpbmcgUHJvY2VzcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYF9td2lmaWV4X2Z3X2RwY2AgZnVuY3Rpb24gYW5kIGl0J3MgaW1tZWRpYXRlbHkgY2xlYXIgdGhhdCBpdCdzICpjb21wbGV0ZWx5KiByZWxpYW50IG9uIHRoZSBwcmVzZW5jZSBvZiBmaXJtd2FyZS4gSWYgYGZpcm13YXJlYCBpcyBOVUxMLCBpdCdzIGEgaGFyZCBmYWlsLiBUaGlzIG1lYW5zIHRoYXQgaWYgdGhlIGZpcm13YXJlIGlzbid0IHN1Y2Nlc3NmdWxseSBsb2FkZWQsIHdlJ2xsIG5ldmVyIGV2ZW4gZ2V0IHRvIGBtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExYC4gVGhhdCdzIGltcG9ydGFudCB0byByZW1lbWJlciBmb3IgZnV6emluZyBsYXRlci5cblxuVGhlIGltbWVkaWF0ZSBwcm9ibGVtIGlzLCBzeXprYWxsZXIgKnR5cGljYWxseSogZG9lc24ndCBwcm92aWRlIGFyYml0cmFyeSBmaXJtd2FyZSBibG9icyB1bmxlc3MgdGhleSBhcmUgd2l0aGluIGBsaW51eC1maXJtd2FyZWAgYW5kIGluY2x1ZGVkIGluIHRoZSBzeXprYWxsZXIgaW1hZ2UuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHdlIGV2ZW4gaGF2ZSB0aGUgTWFydmVsbCBmaXJtd2FyZSBpbiB0aGUgZW52aXJvbm1lbnQuIEV2ZW4gaWYgd2UgZG8sIHRoYXQncyBub3QgdGhlIGVuZCBvZiB0aGUgc3RvcnkuXG5cbkV2ZW4gaWYgd2UgKmhhdmUqIHRoZSBmaXJtd2FyZSBhdmFpbGFibGUsIHRoZSBVU0IgZnV6emVyIGlzIGdvaW5nIHRvIGhhdmUgdG8gZG8gYSAqcGVyZmVjdCogam9iIG9mIGVtdWxhdGluZyB0aGUgZmlybXdhcmUgZG93bmxvYWQgcHJvY2Vzcy4gVGhpcyBtZWFucyBjb3JyZWN0bHkgaW52b2tpbmcgZWl0aGVyIGBhZGFwdGVyLVx1MDAzZWlmX29wcy5kbmxkX2Z3KGFkYXB0ZXIsIFx1MDAyNmZ3KWAgb3IgYG13aWZpZXhfZG5sZF9mdyhhZGFwdGVyLCBcdTAwMjZmdylgLiBBbmQgdGhlbiBpdCBnZXRzIGV2ZW4gdHJpY2tpZXIuXG5cbkFmdGVyIHRoZSBmaXJtd2FyZSBpcyBkb3dubG9hZGVkLCBgbXdpZmlleF9pbml0X2Z3KGFkYXB0ZXIpYCBpcyBjYWxsZWQuICpUaGlzKiBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nIGJlY2F1c2UgdGhpcyBpcyB3aGVyZSB0aGUgZHJpdmVyIGFjdHVhbGx5ICp0YWxrcyogdG8gdGhlIGRldmljZS4gSXQgc2VuZHMgY29tbWFuZHMgYW5kLCBjcml0aWNhbGx5LCAqZXhwZWN0cyByZXNwb25zZXMqLiBJZiB0aGUgVVNCIGZ1enplciBpc24ndCBhYmxlIHRvIHByb3ZpZGUgdmFsaWQgcmVzcG9uc2VzIHRvIHRoZXNlIGluaXRpYWxpemF0aW9uIGNvbW1hbmRzLCBgbXdpZmlleF9pbml0X2Z3YCBpcyBnb2luZyB0byBmYWlsLiBUaGF0IHdvdWxkIHN0b3AgdGhlIGRyaXZlciBmcm9tIHdvcmtpbmcuXG5cbkkgbmVlZCB0byBkaXZlIGludG8gYG13aWZpZXhfaW5pdF9md2AgdG8gc2VlIHdoYXQgdGhvc2Ugc3BlY2lmaWMgY29tbWFuZHMgYXJlIGFuZCB3aGF0IGtpbmQgb2YgcmVzcG9uc2VzIHRoZSBkZXZpY2UgZXhwZWN0cy4gVGhpcyBpcyB0aGUgY3J1Y2lhbCBhcmVhIHRvIGludmVzdGlnYXRlIHRvIGlkZW50aWZ5IHBvdGVudGlhbCBmdXp6aW5nIHRhcmdldHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0NjIsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwMTozMzo1NS40MTAyMjIzMThaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDUwMDA3MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF9pbml0X2Z3XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9pbml0LmM9NDE3PWludCBtd2lmaWV4X2luaXRfbG9ja19saXN0KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaW5pdC5jLTQ4NC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaW5pdC5jOjQ4NTppbnQgbXdpZmlleF9pbml0X2Z3KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2luaXQuYy00ODYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz01MzU9c3RhdGljIGludCBfbXdpZmlleF9md19kcGMoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmaXJtd2FyZSwgdm9pZCAqY29udGV4dClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtNTc5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6NTgwOlxcdHJldCA9IG13aWZpZXhfaW5pdF9mdyhhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTU4MS1cXHRpZiAocmV0ID09IC0xKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMDU2PXZvaWQgbXdpZmlleF9mcmVlX3ByaXYoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMDU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTA1ODppbnQgbXdpZmlleF9pbml0X2Z3KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTA1OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDE6MzM6NTcuMTE1MjMwMzA3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4ODkxMDIyNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byBgbXdpZmlleF9pbml0X2Z3YC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBmdW5jdGlvbidzIHB1cnBvc2Ugd2l0aGluIHRoZSBicm9hZGVyIGRyaXZlciBjb250ZXh0LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCBhcmUgdGhlIGtleSBzdGVwcyBpbnZvbHZlZCBpbiBpbml0aWFsaXppbmcgdGhlIGZpcm13YXJlIGZvciB0aGUgTWFydmVsbCBXaS1GaSBhZGFwdGVyPyBUaGlzIGZ1bmN0aW9uIGlzIGNsZWFybHkgY3JpdGljYWwsIGFzIHRoZSBuYW1lIHN1Z2dlc3RzIGl0IGhhbmRsZXMgZmlybXdhcmUgaW5pdGlhbGl6YXRpb24sIHdoaWNoIGlzIGEgZm91bmRhdGlvbmFsIHN0ZXAgZm9yIGFueSBoYXJkd2FyZSBkcml2ZXIuIEknbSBleHBlY3RpbmcgdGhpcyBmdW5jdGlvbiB3aWxsIGFsbG9jYXRlIHJlc291cmNlcywgbG9hZCB0aGUgZmlybXdhcmUgaW1hZ2UsIGxpa2VseSBjb25maWd1cmUgc29tZSBoYXJkd2FyZSByZWdpc3RlcnMsIGFuZCBoYW5kbGUgYW55IG5lY2Vzc2FyeSBlcnJvciBjaGVja2luZy4gSSdtIGFsc28gYW50aWNpcGF0aW5nIGl0J2xsIGludGVyYWN0IHdpdGggc29tZSBvZiB0aGUgbW9yZSBnZW5lcmFsIGhhcmR3YXJlIGludGVyZmFjZSBmdW5jdGlvbnMuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgaG93IHdlbGwgbXkgYXNzdW1wdGlvbnMgYWxpZ24gd2l0aCB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU3OSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDAxOjM0OjAwLjAwNDM0MDM4MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDIxMzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2luaXQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0ODAsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDgwOlxcdCAqICAgICAgLSBJbml0aWFsaXplIHRoZSBhZGFwdGVyIHN0cnVjdHVyZVxcbiA0ODE6XFx0ICogICAgICAtIEluaXRpYWxpemUgdGhlIHByaXZhdGUgc3RydWN0dXJlXFxuIDQ4MjpcXHQgKiAgICAgIC0gQWRkIEJTUyBwcmlvcml0eSB0YWJsZXMgdG8gdGhlIGFkYXB0ZXIgc3RydWN0dXJlXFxuIDQ4MzpcXHQgKiAgICAgIC0gRm9yIGVhY2ggaW50ZXJmYWNlLCBzZW5kIHRoZSBpbml0IGNvbW1hbmRzIHRvIGZpcm13YXJlXFxuIDQ4NDpcXHQgKi9cXG4gNDg1OlxcdGludCBtd2lmaWV4X2luaXRfZncoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4gNDg2OlxcdHtcXG4gNDg3OlxcdFxcdGludCByZXQ7XFxuIDQ4ODpcXHRcXHRzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2O1xcbiA0ODk6XFx0XFx0dTggaSwgZmlyc3Rfc3RhID0gdHJ1ZTtcXG4gNDkwOlxcdFxcbiA0OTE6XFx0XFx0YWRhcHRlci1cXHUwMDNlaHdfc3RhdHVzID0gTVdJRklFWF9IV19TVEFUVVNfSU5JVElBTElaSU5HO1xcbiA0OTI6XFx0XFxuIDQ5MzpcXHRcXHQvKiBBbGxvY2F0ZSBtZW1vcnkgZm9yIG1lbWJlciBvZiBhZGFwdGVyIHN0cnVjdHVyZSAqL1xcbiA0OTQ6XFx0XFx0cmV0ID0gbXdpZmlleF9hbGxvY2F0ZV9hZGFwdGVyKGFkYXB0ZXIpO1xcbiA0OTU6XFx0XFx0aWYgKHJldClcXG4gNDk2OlxcdFxcdFxcdHJldHVybiAtMTtcXG4gNDk3OlxcdFxcbiA0OTg6XFx0XFx0LyogSW5pdGlhbGl6ZSBhZGFwdGVyIHN0cnVjdHVyZSAqL1xcbiA0OTk6XFx0XFx0bXdpZmlleF9pbml0X2FkYXB0ZXIoYWRhcHRlcik7XFxuIDUwMDpcXHRcXG4gNTAxOlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhZGFwdGVyLVxcdTAwM2Vwcml2X251bTsgaSsrKSB7XFxuIDUwMjpcXHRcXHRcXHRwcml2ID0gYWRhcHRlci1cXHUwMDNlcHJpdltpXTtcXG4gNTAzOlxcdFxcbiA1MDQ6XFx0XFx0XFx0LyogSW5pdGlhbGl6ZSBwcml2YXRlIHN0cnVjdHVyZSAqL1xcbiA1MDU6XFx0XFx0XFx0cmV0ID0gbXdpZmlleF9pbml0X3ByaXYocHJpdik7XFxuIDUwNjpcXHRcXHRcXHRpZiAocmV0KVxcbiA1MDc6XFx0XFx0XFx0XFx0cmV0dXJuIC0xO1xcbiA1MDg6XFx0XFx0fVxcbiA1MDk6XFx0XFx0aWYgKGFkYXB0ZXItXFx1MDAzZW1mZ19tb2RlKSB7XFxuIDUxMDpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2Vod19zdGF0dXMgPSBNV0lGSUVYX0hXX1NUQVRVU19SRUFEWTtcXG4gNTExOlxcdFxcdH0gZWxzZSB7XFxuIDUxMjpcXHRcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYWRhcHRlci1cXHUwMDNlcHJpdl9udW07IGkrKykge1xcbiA1MTM6XFx0XFx0XFx0XFx0cmV0ID0gbXdpZmlleF9zdGFfaW5pdF9jbWQoYWRhcHRlci1cXHUwMDNlcHJpdltpXSxcXG4gNTE0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIGZpcnN0X3N0YSk7XFxuIDUxNTpcXHRcXHRcXHRcXHRpZiAocmV0ID09IC0xKVxcbiA1MTY6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIC0xO1xcbiA1MTc6XFx0XFxuIDUxODpcXHRcXHRcXHRcXHRmaXJzdF9zdGEgPSBmYWxzZTtcXG4gNTE5OlxcdFxcdFxcdH1cXG4gNTIwOlxcdFxcdH1cXG4gNTIxOlxcdFxcbiA1MjI6XFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VjbWRfcGVuZGluZ19xX2xvY2spO1xcbiA1MjM6XFx0XFx0V0FSTl9PTighbGlzdF9lbXB0eShcXHUwMDI2YWRhcHRlci1cXHUwMDNlY21kX3BlbmRpbmdfcSkpO1xcbiA1MjQ6XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWNtZF9wZW5kaW5nX3FfbG9jayk7XFxuIDUyNTpcXHRcXG4gNTI2OlxcdFxcdGFkYXB0ZXItXFx1MDAzZWh3X3N0YXR1cyA9IE1XSUZJRVhfSFdfU1RBVFVTX1JFQURZO1xcbiA1Mjc6XFx0XFxuIDUyODpcXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlaWZfb3BzLmluaXRfZndfcG9ydClcXG4gNTI5OlxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWlmX29wcy5pbml0X2Z3X3BvcnQoYWRhcHRlcik7XFxuIDUzMDpcXHRcXG4gNTMxOlxcdFxcdHJldHVybiAwO1xcbiA1MzI6XFx0fVxcbiA1MzM6XFx0XFxuIDUzNDpcXHQvKlxcbiA1MzU6XFx0ICogVGhpcyBmdW5jdGlvbiBkZWxldGVzIHRoZSBCU1MgcHJpb3JpdHkgdGFibGVzLlxcbiA1MzY6XFx0ICpcXG4gNTM3OlxcdCAqIFRoZSBmdW5jdGlvbiB0cmF2ZXJzZXMgdGhyb3VnaCBhbGwgdGhlIGFsbG9jYXRlZCBCU1MgcHJpb3JpdHkgbm9kZXNcXG4gNTM4OlxcdCAqIGluIGV2ZXJ5IEJTUyBwcmlvcml0eSB0YWJsZSBhbmQgZnJlZXMgdGhlbS5cXG4gNTM5OlxcdCAqL1xcbiA1NDA6XFx0c3RhdGljIHZvaWQgbXdpZmlleF9kZWxldGVfYnNzX3ByaW9fdGJsKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuIDU0MTpcXHR7XFxuIDU0MjpcXHRcXHRpbnQgaTtcXG4gNTQzOlxcdFxcdHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbiA1NDQ6XFx0XFx0c3RydWN0IG13aWZpZXhfYnNzX3ByaW9fbm9kZSAqYnNzcHJpb19ub2RlLCAqdG1wX25vZGU7XFxuIDU0NTpcXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkO1xcbiA1NDY6XFx0XFx0c3BpbmxvY2tfdCAqbG9jazsgLyogYnNzIHByaW9yaXR5IGxvY2sgKi9cXG4gNTQ3OlxcdFxcbiA1NDg6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFkYXB0ZXItXFx1MDAzZXByaXZfbnVtOyArK2kpIHtcXG4gNTQ5OlxcdFxcdFxcdGhlYWQgPSBcXHUwMDI2YWRhcHRlci1cXHUwMDNlYnNzX3ByaW9fdGJsW2ldLmJzc19wcmlvX2hlYWQ7XFxuIDU1MDpcXHRcXHRcXHRsb2NrID0gXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWJzc19wcmlvX3RibFtpXS5ic3NfcHJpb19sb2NrO1xcbiA1NTE6XFx0XFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgSU5GTyxcXG4gNTUyOlxcdFxcdFxcdFxcdCAgICBcXFwiaW5mbzogZGVsZXRlIEJTUyBwcmlvcml0eSB0YWJsZSxcXFxcdFxcXCJcXG4gNTUzOlxcdFxcdFxcdFxcdCAgICBcXFwiYnNzX3R5cGUgPSAlZCwgYnNzX251bSA9ICVkLCBpID0gJWQsXFxcXHRcXFwiXFxuIDU1NDpcXHRcXHRcXHRcXHQgICAgXFxcImhlYWQgPSAlcFxcXFxuXFxcIixcXG4gNTU1OlxcdFxcdFxcdFxcdCAgICBwcml2LVxcdTAwM2Vic3NfdHlwZSwgcHJpdi1cXHUwMDNlYnNzX251bSwgaSwgaGVhZCk7XFxuIDU1NjpcXHRcXG4gNTU3OlxcdFxcdFxcdHtcXG4gNTU4OlxcdFxcdFxcdFxcdHNwaW5fbG9ja19iaChsb2NrKTtcXG4gNTU5OlxcdFxcdFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShic3NwcmlvX25vZGUsIHRtcF9ub2RlLCBoZWFkLFxcbiA1NjA6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IGxpc3QpIHtcXG4gNTYxOlxcdFxcdFxcdFxcdFxcdGlmIChic3NwcmlvX25vZGUtXFx1MDAzZXByaXYgPT0gcHJpdikge1xcbiA1NjI6XFx0XFx0XFx0XFx0XFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgSU5GTyxcXG4gNTYzOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBcXFwiaW5mbzogRGVsZXRlXFxcXHRcXFwiXFxuIDU2NDpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgXFxcIm5vZGUgJXAsIG5leHQgPSAlcFxcXFxuXFxcIixcXG4gNTY1OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBic3NwcmlvX25vZGUsIHRtcF9ub2RlKTtcXG4gNTY2OlxcdFxcdFxcdFxcdFxcdFxcdGxpc3RfZGVsKFxcdTAwMjZic3NwcmlvX25vZGUtXFx1MDAzZWxpc3QpO1xcbiA1Njc6XFx0XFx0XFx0XFx0XFx0XFx0a2ZyZWUoYnNzcHJpb19ub2RlKTtcXG4gNTY4OlxcdFxcdFxcdFxcdFxcdH1cXG4gNTY5OlxcdFxcdFxcdFxcdH1cXG4gNTcwOlxcdFxcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKGxvY2spO1xcbiA1NzE6XFx0XFx0XFx0fVxcbiA1NzI6XFx0XFx0fVxcbiA1NzM6XFx0fVxcbiA1NzQ6XFx0XFxuIDU3NTpcXHQvKlxcbiA1NzY6XFx0ICogVGhpcyBmdW5jdGlvbiBmcmVlcyB0aGUgcHJpdmF0ZSBzdHJ1Y3R1cmUsIGluY2x1ZGluZyBjbGVhbnNcXG4gNTc3OlxcdCAqIHVwIHRoZSBUWCBhbmQgUlggcXVldWVzIGFuZCBmcmVlcyB0aGUgQlNTIHByaW9yaXR5IHRhYmxlcy5cXG4gNTc4OlxcdCAqL1xcbiA1Nzk6XFx0dm9pZCBtd2lmaWV4X2ZyZWVfcHJpdihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwMTozNDowMC4wMDQ0ODQxODFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA0ODI2Njk5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZpcm13YXJlIEluaXRpYWxpemF0aW9uIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGluaXRpYWxpemF0aW9uIHJvdXRpbmUsIGFuZCBpdCBzZWVtcyB0aGUgY3JpdGljYWwgcGFydCBpcyB0aGlzIGBtd2lmaWV4X3N0YV9pbml0X2NtZGAgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2UgdGhhdCdzIHRoZSBwb2ludCB3aGVyZSB3ZSdyZSBhY3R1YWxseSBwdXNoaW5nIGNvbW1hbmRzIGRvd24gdG8gdGhlIGZpcm13YXJlLiBNYWtlcyBzZW5zZTsgdGhhdCdzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLlxuXG5NeSBpbml0aWFsIGNvbmNlcm4gaXMsIGlmIHRoYXQgZmFpbHMg4oCTIGlmIGBtd2lmaWV4X3N0YV9pbml0X2NtZGAgaGl0cyBhIHNuYWcg4oCTIHRoZSBlbnRpcmUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBib21icyBvdXQgd2l0aCBhIHJldHVybiBjb2RlIG9mIC0xIGZyb20gYG13aWZpZXhfaW5pdF9md2AuIFNvLCB0aGUgZmFpbHVyZSBvZiB0aGUgY29tbWFuZCB0byBleGVjdXRlIGlzIHRoZSBzaW5nbGUgcG9pbnQgb2YgZmFpbHVyZS5cblxuR2l2ZW4gdGhhdCwgSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiwgcmlnaHQgbm93LCBvbiB1bmRlcnN0YW5kaW5nIGV4YWN0bHkgd2hhdCBgbXdpZmlleF9zdGFfaW5pdF9jbWRgIGlzIGRvaW5nIGFuZCB3aGF0IGl0cyBmYWlsdXJlIG1vZGVzIGFyZS4gV2UgaGF2ZSB0byB1bmRlcnN0YW5kIHRoaXMgZnVuY3Rpb24gY29tcGxldGVseSwgYmVjYXVzZSBpdCBkaWN0YXRlcyB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIHRoZSBlbnRpcmUgcHJvY2Vzcy4gTm8gcm9vbSBmb3IgYW1iaWd1aXR5IGhlcmUuIExldCdzIGRpZyBpbiBhbmQgZmlndXJlIG91dCB3aHkgdGhpcyBtaWdodCBmYWlsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5Mjk4LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwMTozNDowNC4wNTI3NTMwOTlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NjQxNTcxMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF9zdGFfaW5pdF9jbWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MTA4Mz1td2lmaWV4X2NoYW5nZV92aWZfdG9fcDJwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xMTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjExMzA6XFx0aWYgKG13aWZpZXhfc3RhX2luaXRfY21kKHByaXYsIGZhbHNlKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xMTMxLVxcdFxcdHJldHVybiAtMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTExMzc9bXdpZmlleF9jaGFuZ2VfdmlmX3RvX3N0YV9hZGhvYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTE3MC1cXHRcXHRyZXR1cm4gLTE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTE3MTpcXHRpZiAobXdpZmlleF9zdGFfaW5pdF9jbWQocHJpdiwgZmFsc2UpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTExNzItXFx0XFx0cmV0dXJuIC0xO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MTE3OD1td2lmaWV4X2NoYW5nZV92aWZfdG9fYXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTEyMDctXFx0XFx0cmV0dXJuIC0xO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjEyMDg6XFx0aWYgKG13aWZpZXhfc3RhX2luaXRfY21kKHByaXYsIGZhbHNlKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xMjA5LVxcdFxcdHJldHVybiAtMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTI5ODA9c3RydWN0IHdpcmVsZXNzX2RldiAqbXdpZmlleF9hZGRfdmlydHVhbF9pbnRmKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0zMTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjMxMTc6XFx0XFx0cmV0ID0gbXdpZmlleF9zdGFfaW5pdF9jbWQocHJpdiwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTMxMTgtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9pbml0LmM9NDg1PWludCBtd2lmaWV4X2luaXRfZncoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9pbml0LmMtNTEyLVxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhZGFwdGVyLVxcdTAwM2Vwcml2X251bTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2luaXQuYzo1MTM6XFx0XFx0XFx0cmV0ID0gbXdpZmlleF9zdGFfaW5pdF9jbWQoYWRhcHRlci1cXHUwMDNlcHJpdltpXSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaW5pdC5jLTUxNC1cXHRcXHRcXHRcXHRcXHRcXHQgICBmaXJzdF9zdGEpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMTUyPXZvaWQgbXdpZmlleF9wcm9jZXNzX3VhcF90eHBkKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMTUzLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTE1NDppbnQgbXdpZmlleF9zdGFfaW5pdF9jbWQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqLCB1OCBmaXJzdF9zdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTE1NS1pbnQgbXdpZmlleF9jbWRfODAyXzExX3NjYW4oc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM9MjAzMz1pbnQgbXdpZmlleF9zdGFfcHJlcGFyZV9jbWQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdWludDE2X3QgY21kX25vLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yMzUzLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MjM1NDppbnQgbXdpZmlleF9zdGFfaW5pdF9jbWQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggZmlyc3Rfc3RhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjM1NS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDAxOjM0OjA1LjgxNjkxOTE0NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjE3MzMzMzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQW5hbHl6aW5nIGBtd2lmaWV4X3N0YV9pbml0X2NtZGAncyBDb21tYW5kIGFuZCBSZXBseSBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gYG13aWZpZXhfc3RhX2luaXRfY21kYC4gTXkgcHJpbWFyeSBjb25jZXJuIHJpZ2h0IG5vdyBpcyB0aGUgY29tbWFuZCBmbG93LiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgZnVuY3Rpb24gaW5pdGlhdGVzIGNvbW1hbmQgdHJhbnNtaXNzaW9uIHRvIHRoZSBoYXJkd2FyZSBhbmQgdGhlbiBwYXRpZW50bHkgd2FpdHMgZm9yIGEgcmVzcG9uc2UgZnJvbSB0aGUgZGV2aWNlLiBBcmUgd2UgZGVhbGluZyB3aXRoIGEgc3luY2hyb25vdXMgb3IgYXN5bmNocm9ub3VzIG1vZGVsIGhlcmU/IERvZXMgaXQgdXNlIHNvbWUga2luZCBvZiBpbnRlcm5hbCBtZWNoYW5pc20gdG8gdHJhY2sgdGhlIGNvbW1hbmQgSUQgYW5kIGNvcnJlbGF0ZSBpdCB3aXRoIHRoZSBldmVudHVhbCByZXBseSwgb3IgaXMgaXQgZG9pbmcgc29tZXRoaW5nIG1vcmUgbG93LWxldmVsPyBJJ20gbG9va2luZyBmb3IgY2x1ZXMgaW4gdGhlIGNvZGUgcmVnYXJkaW5nIGhvdyBpdCBoYW5kbGVzIHBvdGVudGlhbCB0aW1lb3V0cywgZXJyb3IgY29uZGl0aW9ucyBpZiBubyByZXBseSBpcyByZWNlaXZlZCB3aXRoaW4gYSByZWFzb25hYmxlIHRpbWVmcmFtZSwgb3IgaWYgaXQgZG9lcyBzb21lIGNsZXZlciBpbnRlcnJ1cHQgb3IgcG9sbGluZyBzZXR1cC4gQWxzbywgSSdtIGNoZWNraW5nIGlmIGl0IGNvcnJlY3RseSBzZXRzIGZsYWdzIHRvIGhhbmRsZSBjb21tYW5kIGNvbXBsZXRpb24gYW5kIHJlcGx5IHNpZ25hbGluZy4gVGhlIGdvYWwgaXMgdG8gc2VlIGlmIGl0cyBpbXBsZW1lbnRlZCBpbiBhIGNsZWFuIHdheSBvciBpZiBJIGhhdmUgdG8gbWFrZSBtb2RpZmljYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDc0NCwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDAxOjM0OjEwLjQzNDI1NjY5N1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODU5OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMzUwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjM1MDpcXHQgKiAgICAgIC0gU2V0IEFNU0RVIGFnZ3JlZ2F0aW9uIGNvbnRyb2xcXG4yMzUxOlxcdCAqICAgICAgLSBTZXQgMTFkIGNvbnRyb2xcXG4yMzUyOlxcdCAqICAgICAgLSBTZXQgTUFDIGNvbnRyb2wgKHRoaXMgbXVzdCBiZSB0aGUgbGFzdCBjb21tYW5kIHRvIGluaXRpYWxpemUgZmlybXdhcmUpXFxuMjM1MzpcXHQgKi9cXG4yMzU0OlxcdGludCBtd2lmaWV4X3N0YV9pbml0X2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OCBmaXJzdF9zdGEpXFxuMjM1NTpcXHR7XFxuMjM1NjpcXHRcXHRzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG4yMzU3OlxcdFxcdGludCByZXQ7XFxuMjM1ODpcXHRcXHRzdHJ1Y3QgbXdpZmlleF9kc18xMW5fYW1zZHVfYWdncl9jdHJsIGFtc2R1X2FnZ3JfY3RybDtcXG4yMzU5OlxcdFxcdHN0cnVjdCBtd2lmaWV4X2RzX2F1dG9fZHMgYXV0b19kcztcXG4yMzYwOlxcdFxcdGVudW0gc3RhdGVfMTFkX3Qgc3RhdGVfMTFkO1xcbjIzNjE6XFx0XFx0c3RydWN0IG13aWZpZXhfZHNfMTFuX3R4X2NmZyB0eF9jZmc7XFxuMjM2MjpcXHRcXHR1OCBzZGlvX3NwX3J4X2FnZ3JfZW5hYmxlO1xcbjIzNjM6XFx0XFx0dTE2IHBhY2tldF9hZ2dyX2VuYWJsZTtcXG4yMzY0OlxcdFxcdGludCBkYXRhO1xcbjIzNjU6XFx0XFxuMjM2NjpcXHRcXHRpZiAoZmlyc3Rfc3RhKSB7XFxuMjM2NzpcXHRcXHRcXHRpZiAocHJpdi1cXHUwMDNlYWRhcHRlci1cXHUwMDNlaWZhY2VfdHlwZSA9PSBNV0lGSUVYX1BDSUUpIHtcXG4yMzY4OlxcdFxcdFxcdFxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdixcXG4yMzY5OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBIb3N0Q21kX0NNRF9QQ0lFX0RFU0NfREVUQUlMUyxcXG4yMzcwOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBOVUxMLFxcbjIzNzE6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHRydWUpO1xcbjIzNzI6XFx0XFx0XFx0XFx0aWYgKHJldClcXG4yMzczOlxcdFxcdFxcdFxcdFxcdHJldHVybiAtMTtcXG4yMzc0OlxcdFxcdFxcdH1cXG4yMzc1OlxcdFxcbjIzNzY6XFx0XFx0XFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9GVU5DX0lOSVQsXFxuMjM3NzpcXHRcXHRcXHRcXHRcXHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgTlVMTCwgdHJ1ZSk7XFxuMjM3ODpcXHRcXHRcXHRpZiAocmV0KVxcbjIzNzk6XFx0XFx0XFx0XFx0cmV0dXJuIC0xO1xcbjIzODA6XFx0XFxuMjM4MTpcXHRcXHRcXHQvKiBEb3dubG9hZCBjYWxpYnJhdGlvbiBkYXRhIHRvIGZpcm13YXJlLlxcbjIzODI6XFx0XFx0XFx0ICogVGhlIGNhbC1kYXRhIGNhbiBiZSByZWFkIGZyb20gZGV2aWNlIHRyZWUgYW5kL29yXFxuMjM4MzpcXHRcXHRcXHQgKiBhIGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgZG93bmxvYWRlZCB0byBmaXJtd2FyZS5cXG4yMzg0OlxcdFxcdFxcdCAqL1xcbjIzODU6XFx0XFx0XFx0aWYgKGFkYXB0ZXItXFx1MDAzZWR0X25vZGUpIHtcXG4yMzg2OlxcdFxcdFxcdFxcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihhZGFwdGVyLVxcdTAwM2VkdF9ub2RlLFxcbjIzODc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IFxcXCJtYXJ2ZWxsLHdha2V1cC1waW5cXFwiLFxcbjIzODg6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZkYXRhKSA9PSAwKSB7XFxuMjM4OTpcXHRcXHRcXHRcXHRcXHRwcl9kZWJ1ZyhcXFwiV2FrZXVwIHBpbiA9IDB4JXhcXFxcblxcXCIsIGRhdGEpO1xcbjIzOTA6XFx0XFx0XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlaHNfY2ZnLmdwaW8gPSBkYXRhO1xcbjIzOTE6XFx0XFx0XFx0XFx0fVxcbjIzOTI6XFx0XFxuMjM5MzpcXHRcXHRcXHRcXHRtd2lmaWV4X2RubGRfZHRfY2ZnZGF0YShwcml2LCBhZGFwdGVyLVxcdTAwM2VkdF9ub2RlLFxcbjIzOTQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcIm1hcnZlbGwsY2FsZGF0YVxcXCIpO1xcbjIzOTU6XFx0XFx0XFx0fVxcbjIzOTY6XFx0XFxuMjM5NzpcXHRcXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlY2FsX2RhdGEpIHtcXG4yMzk4OlxcdFxcdFxcdFxcdG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfQ0ZHX0RBVEEsXFxuMjM5OTpcXHRcXHRcXHRcXHRcXHRcXHQgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgTlVMTCwgdHJ1ZSk7XFxuMjQwMDpcXHRcXHRcXHRcXHRyZWxlYXNlX2Zpcm13YXJlKGFkYXB0ZXItXFx1MDAzZWNhbF9kYXRhKTtcXG4yNDAxOlxcdFxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWNhbF9kYXRhID0gTlVMTDtcXG4yNDAyOlxcdFxcdFxcdH1cXG4yNDAzOlxcdFxcbjI0MDQ6XFx0XFxuMjQwNTpcXHRcXHRcXHQvKiBSZWFkIE1BQyBhZGRyZXNzIGZyb20gSFcgKi9cXG4yNDA2OlxcdFxcdFxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfR0VUX0hXX1NQRUMsXFxuMjQwNzpcXHRcXHRcXHRcXHRcXHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX0dFVCwgMCwgTlVMTCwgdHJ1ZSk7XFxuMjQwODpcXHRcXHRcXHRpZiAocmV0KVxcbjI0MDk6XFx0XFx0XFx0XFx0cmV0dXJuIC0xO1xcbjI0MTA6XFx0XFxuMjQxMTpcXHRcXHRcXHQvKiogU2V0IFNESU8gU2luZ2xlIFBvcnQgUlggQWdnciBJbmZvICovXFxuMjQxMjpcXHRcXHRcXHRpZiAocHJpdi1cXHUwMDNlYWRhcHRlci1cXHUwMDNlaWZhY2VfdHlwZSA9PSBNV0lGSUVYX1NESU8gXFx1MDAyNlxcdTAwMjZcXG4yNDEzOlxcdFxcdFxcdCAgICBJU1NVUFBfU0RJT19TUEFfRU5BQkxFRChwcml2LVxcdTAwM2VhZGFwdGVyLVxcdTAwM2Vmd19jYXBfaW5mbykgXFx1MDAyNlxcdTAwMjZcXG4yNDE0OlxcdFxcdFxcdCAgICAhcHJpdi1cXHUwMDNlYWRhcHRlci1cXHUwMDNlaG9zdF9kaXNhYmxlX3NkaW9fcnhfYWdncikge1xcbjI0MTU6XFx0XFx0XFx0XFx0c2Rpb19zcF9yeF9hZ2dyX2VuYWJsZSA9IHRydWU7XFxuMjQxNjpcXHRcXHRcXHRcXHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsXFxuMjQxNzpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgSG9zdENtZF9DTURfU0RJT19TUF9SWF9BR0dSX0NGRyxcXG4yNDE4OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLFxcbjI0MTk6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZzZGlvX3NwX3J4X2FnZ3JfZW5hYmxlLFxcbjI0MjA6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHRydWUpO1xcbjI0MjE6XFx0XFx0XFx0XFx0aWYgKHJldCkge1xcbjI0MjI6XFx0XFx0XFx0XFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgRVJST1IsXFxuMjQyMzpcXHRcXHRcXHRcXHRcXHRcXHQgICAgXFxcImVycm9yIHdoaWxlIGVuYWJsaW5nIFNQIGFnZ3JlZ2F0aW9uLi5kaXNhYmxlIGl0XFxcIik7XFxuMjQyNDpcXHRcXHRcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VzZGlvX3J4X2FnZ3JfZW5hYmxlID0gZmFsc2U7XFxuMjQyNTpcXHRcXHRcXHRcXHR9XFxuMjQyNjpcXHRcXHRcXHR9XFxuMjQyNzpcXHRcXG4yNDI4OlxcdFxcdFxcdC8qIFJlY29uZmlndXJlIHR4IGJ1ZiBzaXplICovXFxuMjQyOTpcXHRcXHRcXHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1JFQ09ORklHVVJFX1RYX0JVRkYsXFxuMjQzMDpcXHRcXHRcXHRcXHRcXHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCxcXG4yNDMxOlxcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2cHJpdi1cXHUwMDNlYWRhcHRlci1cXHUwMDNldHhfYnVmX3NpemUsIHRydWUpO1xcbjI0MzI6XFx0XFx0XFx0aWYgKHJldClcXG4yNDMzOlxcdFxcdFxcdFxcdHJldHVybiAtMTtcXG4yNDM0OlxcdFxcbjI0MzU6XFx0XFx0XFx0aWYgKHByaXYtXFx1MDAzZWJzc190eXBlICE9IE1XSUZJRVhfQlNTX1RZUEVfVUFQKSB7XFxuMjQzNjpcXHRcXHRcXHRcXHQvKiBFbmFibGUgSUVFRSBQUyBieSBkZWZhdWx0ICovXFxuMjQzNzpcXHRcXHRcXHRcXHRwcml2LVxcdTAwM2VhZGFwdGVyLVxcdTAwM2Vwc19tb2RlID0gTVdJRklFWF84MDJfMTFfUE9XRVJfTU9ERV9QU1A7XFxuMjQzODpcXHRcXHRcXHRcXHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsXFxuMjQzOTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgSG9zdENtZF9DTURfODAyXzExX1BTX01PREVfRU5ILFxcbjI0NDA6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIEVOX0FVVE9fUFMsIEJJVE1BUF9TVEFfUFMsIE5VTEwsXFxuMjQ0MTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgdHJ1ZSk7XFxuMjQ0MjpcXHRcXHRcXHRcXHRpZiAocmV0KVxcbjI0NDM6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIC0xO1xcbjI0NDQ6XFx0XFx0XFx0fVxcbjI0NDU6XFx0XFxuMjQ0NjpcXHRcXHRcXHRpZiAoZHJjcykge1xcbjI0NDc6XFx0XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlZHJjc19lbmFibGVkID0gdHJ1ZTtcXG4yNDQ4OlxcdFxcdFxcdFxcdGlmIChJU1NVUFBfRFJDU19FTkFCTEVEKGFkYXB0ZXItXFx1MDAzZWZ3X2NhcF9pbmZvKSlcXG4yNDQ5OlxcdFxcdFxcdFxcdFxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDE6MzQ6MTAuNDM0NDQ0NjY3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMTg1NDQ3OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBvdGVudGlhbCBgbXdpZmlleGAgVnVsbmVyYWJpbGl0aWVzIHdpdGggU3l6a2FsbGVyKipcblxuT2theSwgc28gYG13aWZpZXhfc2VuZF9jbWRgIHdpdGggdGhhdCBgdHJ1ZWAgYXJndW1lbnQ/IFRoYXQgbWVhbnMgaXQgKmFic29sdXRlbHkqIHdhaXRzIGZvciBhIHJlc3BvbnNlLiBObyByZXNwb25zZSwgYW5kIGl0J3MgZWl0aGVyIHRpbWluZyBvdXQgb3IganVzdCBwbGFpbiBmYWlsaW5nLiBUaGF0J3MgYSBrZXkgcG9pbnQuIE5vdywgdGhlIFVTQiBmdXp6ZXIuLi5yaWdodCwgSSByZW1lbWJlciB0aGF0LiBJdCAqY2FuKiBwcm92aWRlIHJlc3BvbnNlcyBpZiBpdCBrbm93cyB0aGUgcHJvdG9jb2wsIGJ1dCB1c3VhbGx5LCBpdCdzIGp1c3Qgc3Bld2luZyBvdXQgZ2FyYmFnZSBkYXRhLiBTbywgdGhlIHF1ZXN0aW9uIGlzLCBoYXMgc3l6a2FsbGVyIGV2ZW4gYmVlbiBzZXQgdXAgdG8gZWZmZWN0aXZlbHkgZnV6eiBgbXdpZmlleGA/IFRoYXQncyB3aGF0IEkgbmVlZCB0byBmaWd1cmUgb3V0LiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBmb3IgYW55IGV4aXN0aW5nIHN5emthbGxlciBidWcgcmVwb3J0cyBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBgbXdpZmlleGAuIFRoYXQgd291bGQgYmUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGVzdGFibGlzaCB0aGUgZXh0ZW50IG9mIGV4aXN0aW5nIGNvdmVyYWdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjcxOSwiT3V0cHV0VG9rZW5zIjoxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDAxOjM0OjE0Ljc1Mjk5MjgxOVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5NjE3NDQwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTg1NzcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbk1BSU5UQUlORVJTPTE1NzM2PVM6XFx0T2RkIEZpeGVzXFxuTUFJTlRBSU5FUlM6MTU3Mzc6RjpcXHRkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXFxuTUFJTlRBSU5FUlMtMTU3MzgtXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9yb2NrY2hpcC9yazMyODgtdmV5cm9uLWplcnJ5LmR0cz00Mz1cXHUwMDI2c2RpbzAge1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcmszMjg4LXZleXJvbi1qZXJyeS5kdHMtNDYtXFxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcmszMjg4LXZleXJvbi1qZXJyeS5kdHM6NDc6XFx0bXdpZmlleDogd2lmaUAxIHtcXG5hcmNoL2FybS9ib290L2R0cy9yb2NrY2hpcC9yazMyODgtdmV5cm9uLWplcnJ5LmR0cy00OC1cXHRcXHRjb21wYXRpYmxlID0gXFxcIm1hcnZlbGwsc2Q4ODk3XFxcIjtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDhtcC1iZWFjb24tc29tLmR0c2k9Mjg1PVxcdTAwMjZ1c2RoYzEge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OG1wLWJlYWNvbi1zb20uZHRzaS0zMDItXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OG1wLWJlYWNvbi1zb20uZHRzaTozMDM6XFx0bXdpZmlleDogd2lmaUAxIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXAtYmVhY29uLXNvbS5kdHNpLTMwNC1cXHRcXHRjb21wYXRpYmxlID0gXFxcIm1hcnZlbGwsc2Q4OTk3XFxcIjtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTczLWVsbS5kdHNpPTQxMj1cXHUwMDI2bW1jMyB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE3My1lbG0uZHRzaS00MzItXFxuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxNzMtZWxtLmR0c2k6NDMzOlxcdG13aWZpZXg6IHdpZmlAMSB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxNzMtZWxtLmR0c2ktNDM0LVxcdFxcdGNvbXBhdGlibGUgPSBcXFwibWFydmVsbCxzZDg4OTdcXFwiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnPTE2PXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhc190Zi9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZzoxNzpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZy0xOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvTWFrZWZpbGU9ND1vYmotJChDT05GSUdfTElCRVJUQVNfVEhJTkZJUk0pXFx0Kz0gbGliZXJ0YXNfdGYvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19NV0lGSUVYKVxcdCs9IG13aWZpZXgvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9NYWtlZmlsZS02LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYz00Mj1zdGF0aWMgdTE2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzo0Mzptd2lmaWV4X2NvbnZlcnRfbWNzbWFwX3RvX21heHJhdGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTQ0LVxcdFxcdFxcdFxcdCAgdTggYmFuZHMsIHUxNiBtY3NfbWFwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy00OC1cXHR1MzIgdXNyX3ZodF9jYXBfaW5mbyA9IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzo0OTpcXHRzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTUwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYz04NT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6ODY6bXdpZmlleF9maWxsX3ZodF9jYXBfaW5mbyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtODctXFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXAsIHU4IGJhbmRzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtODgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6ODk6XFx0c3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy05MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtOTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzo5OTp2b2lkIG13aWZpZXhfZmlsbF92aHRfY2FwX3RsdihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTAwLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCAqdmh0X2NhcCwgdTggYmFuZHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xMDEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTAyOlxcdHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTAzLVxcdHUxNiBtY3NfbWFwX3VzZXIsIG1jc19tYXBfcmVzcCwgbWNzX21hcF9yZXN1bHQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTEwNi1cXHQvKiBGaWxsIFZIVCBjYXAgaW5mbyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTA3OlxcdG13aWZpZXhfZmlsbF92aHRfY2FwX2luZm8ocHJpdiwgdmh0X2NhcCwgYmFuZHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTA4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxMjk6XFx0dG1wID0gbXdpZmlleF9jb252ZXJ0X21jc21hcF90b19tYXhyYXRlKHByaXYsIGJhbmRzLCBtY3NfbWFwX3Jlc3VsdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xMzAtXFx0dmh0X2NhcC1cXHUwMDNlc3VwcF9tY3MucnhfaGlnaGVzdCA9IGNwdV90b19sZTE2KHRtcCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE1MTpcXHR0bXAgPSBtd2lmaWV4X2NvbnZlcnRfbWNzbWFwX3RvX21heHJhdGUocHJpdiwgYmFuZHMsIG1jc19tYXBfcmVzdWx0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE1Mi1cXHR2aHRfY2FwLVxcdTAwM2VzdXBwX21jcy50eF9oaWdoZXN0ID0gY3B1X3RvX2xlMTYodG1wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTU3OmludCBtd2lmaWV4X2NtZF9hcHBlbmRfMTFhY190bHYoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE1ODpcXHRcXHRcXHQgICAgIHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTU5LVxcdFxcdFxcdCAgICAgdTggKipidWZmZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xNjAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTYxOlxcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX3ZodGNhcCAqdmh0X2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE2MjpcXHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19vcGVyX21vZGVfbnRmICpvcGVyX250ZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE2My1cXHRzdHJ1Y3QgaWVlZV90eXBlc19vcGVyX21vZGVfbnRmICppZWVlX29wZXJfbnRmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTY0OlxcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX3ZodF9vcGVyICp2aHRfb3A7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxNjU6XFx0c3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xNjYtXFx0dTggc3VwcF9jaHdkX3NldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTc2LVxcdGlmIChic3NfZGVzYy1cXHUwMDNlYmNuX3ZodF9jYXApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE3NzpcXHRcXHR2aHRfY2FwID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX3ZodGNhcCAqKSpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xNzgtXFx0XFx0bWVtc2V0KHZodF9jYXAsIDAsIHNpemVvZigqdmh0X2NhcCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xODEtXFx0XFx0XFx0XFx0Y3B1X3RvX2xlMTYoc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTgyOlxcdFxcdG1lbWNweSgodTggKil2aHRfY2FwICsgc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2hlYWRlciksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xODMtXFx0XFx0ICAgICAgICh1OCAqKWJzc19kZXNjLVxcdTAwM2ViY25fdmh0X2NhcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTg1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTg2OlxcdFxcdG13aWZpZXhfZmlsbF92aHRfY2FwX3Rsdihwcml2LCBcXHUwMDI2dmh0X2NhcC1cXHUwMDNldmh0X2NhcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE4Ny1cXHRcXHRcXHRcXHRcXHQgYnNzX2Rlc2MtXFx1MDAzZWJzc19iYW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTk0LVxcdFxcdGlmIChwcml2LVxcdTAwM2Vic3NfbW9kZSA9PSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxOTU6XFx0XFx0XFx0dmh0X29wID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX3ZodF9vcGVyICopKmJ1ZmZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE5Ni1cXHRcXHRcXHRtZW1zZXQodmh0X29wLCAwLCBzaXplb2YoKnZodF9vcCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xOTktXFx0XFx0XFx0dmh0X29wLVxcdTAwM2VoZWFkZXIubGVuICA9IGNwdV90b19sZTE2KHNpemVvZigqdmh0X29wKSAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoyMDA6XFx0XFx0XFx0XFx0ICAgICAgc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2hlYWRlcikpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMjAxLVxcdFxcdFxcdG1lbWNweSgodTggKil2aHRfb3AgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MjAyOlxcdFxcdFxcdFxcdHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19oZWFkZXIpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMjAzLVxcdFxcdFxcdCAgICAgICAodTggKilic3NfZGVzYy1cXHUwMDNlYmNuX3ZodF9vcGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yNTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoyNTM6aW50IG13aWZpZXhfY21kXzExYWNfY2ZnKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yNTQtXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MjU1OlxcdFxcdFxcdCBzdHJ1Y3QgbXdpZmlleF8xMWFjX3ZodF9jZmcgKmNmZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTI1Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTI3Mi0vKiBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBCbG9ja0FDSyBzZXR1cCBpbmZvcm1hdGlvbiBmb3IgZ2l2ZW5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjI3MzogKiBtd2lmaWV4X3ByaXZhdGUgc3RydWN0dXJlIGZvciAxMWFjIGVuYWJsZWQgbmV0d29ya3MuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yNzQtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoyNzU6dm9pZCBtd2lmaWV4X3NldF8xMWFjX2JhX3BhcmFtcyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMjc2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMjkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6Mjk0OmJvb2wgbXdpZmlleF9pc19ic3NfaW5fMTFhY19tb2RlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yOTUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6Mjk2OlxcdHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMjk3LVxcdHN0cnVjdCBpZWVlODAyMTFfdmh0X29wZXJhdGlvbiAqdmh0X29wZXI7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTMxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjMxMTp1OCBtd2lmaWV4X2dldF9jZW50ZXJfZnJlcV9pbmRleChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OCBiYW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMzEyLVxcdFxcdFxcdFxcdCB1MzIgcHJpX2NoYW4sIHU4IGNoYW5fYncpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oPTE0PWVudW0gdmh0X2NmZ19taXNjX2NvbmZpZyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oLTI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmg6MjU6aW50IG13aWZpZXhfY21kX2FwcGVuZF8xMWFjX3RsdihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmg6MjY6XFx0XFx0XFx0XFx0c3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuaC0yNy1cXHRcXHRcXHRcXHR1OCAqKmJ1ZmZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuaDoyODppbnQgbXdpZmlleF9jbWRfMTFhY19jZmcoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oLTI5LVxcdFxcdFxcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oOjMwOlxcdFxcdFxcdCBzdHJ1Y3QgbXdpZmlleF8xMWFjX3ZodF9jZmcgKmNmZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuaDozMTp2b2lkIG13aWZpZXhfZmlsbF92aHRfY2FwX3RsdihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmgtMzItXFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwLCB1OCBiYW5kcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjEyOnZvaWQgbXdpZmlleF9pbml0XzExaF9wYXJhbXMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxODppbmxpbmUgaW50IG13aWZpZXhfaXNfMTFoX2FjdGl2ZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM9MjU9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjY6bXdpZmlleF8xMWhfcHJvY2Vzc19pbmZyYV9qb2luKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHU4ICoqYnVmZmVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNzpcXHRcXHRcXHQgICAgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6Mjk6XFx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaGVhZGVyICppZV9oZWFkZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjMwOlxcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX3B3cl9jYXBhYmlsaXR5ICpjYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjMxOlxcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2xvY2FsX3B3cl9jb25zdHJhaW50ICpjb25zdHJhaW50O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0zMi1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0zOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6Mzk6XFx0cmFkaW9fdHlwZSA9IG13aWZpZXhfYmFuZF90b19yYWRpb190eXBlKCh1OCkgYnNzX2Rlc2MtXFx1MDAzZWJzc19iYW5kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtNDAtXFx0c2JhbmQgPSBwcml2LVxcdTAwM2V3ZGV2LndpcGh5LVxcdTAwM2ViYW5kc1tyYWRpb190eXBlXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjQyOlxcdGNhcCA9IChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19wd3JfY2FwYWJpbGl0eSAqKSpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTQzLVxcdGNhcC1cXHUwMDNlaGVhZGVyLnR5cGUgPSBjcHVfdG9fbGUxNihXTEFOX0VJRF9QV1JfQ0FQQUJJTElUWSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjQ5OlxcdGNvbnN0cmFpbnQgPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfbG9jYWxfcHdyX2NvbnN0cmFpbnQgKikqYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy01MC1cXHRjb25zdHJhaW50LVxcdTAwM2VoZWFkZXIudHlwZSA9IGNwdV90b19sZTE2KFdMQU5fRUlEX1BXUl9DT05TVFJBSU5UKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy01NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6NTY6XFx0aWVfaGVhZGVyID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2hlYWRlciAqKSpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTU3LVxcdGllX2hlYWRlci1cXHUwMDNldHlwZSA9IGNwdV90b19sZTE2KFRMVl9UWVBFX1BBU1NUSFJPVUdIKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy02OS0vKiBFbmFibGUgb3IgZGlzYWJsZSB0aGUgMTFoIGV4dGVuc2lvbnMgaW4gdGhlIGZpcm13YXJlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjcwOmludCBtd2lmaWV4XzExaF9hY3RpdmF0ZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBib29sIGZsYWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTcxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy03Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6Nzg6XFx0cmV0dXJuIG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX1NOTVBfTUlCLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy03OS1cXHRcXHRcXHRcXHRIb3N0Q21kX0FDVF9HRU5fU0VULCBET1QxMUhfSSwgXFx1MDAyNmVuYWJsZSwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtODctICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjg4OnZvaWQgbXdpZmlleF8xMWhfcHJvY2Vzc19qb2luKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHU4ICoqYnVmZmVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzo4OTpcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtOTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTk0LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzo5NTpcXHRcXHRtd2lmaWV4XzExaF9hY3RpdmF0ZShwcml2LCB0cnVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtOTYtXFx0XFx0cHJpdi1cXHUwMDNlc3RhdGVfMTFoLmlzXzExaF9hY3RpdmUgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy05Ny1cXHRcXHRic3NfZGVzYy1cXHUwMDNlY2FwX2luZm9fYml0bWFwIHw9IFdMQU5fQ0FQQUJJTElUWV9TUEVDVFJVTV9NR01UO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzo5ODpcXHRcXHRtd2lmaWV4XzExaF9wcm9jZXNzX2luZnJhX2pvaW4ocHJpdiwgYnVmZmVyLCBic3NfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTk5LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTEwMC1cXHRcXHQvKiBEZWFjdGl2YXRlIDExaCBmdW5jdGlvbnMgaW4gdGhlIGZpcm13YXJlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjEwMTpcXHRcXHRtd2lmaWV4XzExaF9hY3RpdmF0ZShwcml2LCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTEwMi1cXHRcXHRwcml2LVxcdTAwM2VzdGF0ZV8xMWguaXNfMTFoX2FjdGl2ZSA9IGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTExMC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTExOnZvaWQgbXdpZmlleF9kZnNfY2FjX3dvcmtfcXVldWUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMTIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTExNC1cXHRzdHJ1Y3QgZGVsYXllZF93b3JrICpkZWxheWVkX3dvcmsgPSB0b19kZWxheWVkX3dvcmsod29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjExNTpcXHRzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2ID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTE2OlxcdFxcdFxcdGNvbnRhaW5lcl9vZihkZWxheWVkX3dvcmssIHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTExNy1cXHRcXHRcXHRcXHQgICAgIGRmc19jYWNfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTIwLVxcdGlmIChwcml2LVxcdTAwM2V3ZGV2LmxpbmtzWzBdLmNhY19zdGFydGVkKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjEyMTpcXHRcXHRtd2lmaWV4X2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBNU0csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTEyMi1cXHRcXHRcXHQgICAgXFxcIkNBQyB0aW1lciBmaW5pc2hlZDsgTm8gcmFkYXIgZGV0ZWN0ZWRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTEzMS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTMyOmludCBtd2lmaWV4X2NtZF9pc3N1ZV9jaGFuX3JlcG9ydF9yZXF1ZXN0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTEzMy1cXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTM2LVxcdHN0cnVjdCBob3N0X2NtZF9kc19jaGFuX3JwdF9yZXEgKmNyX3JlcSA9IFxcdTAwMjZjbWQtXFx1MDAzZXBhcmFtcy5jaGFuX3JwdF9yZXE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjEzNzpcXHRzdHJ1Y3QgbXdpZmlleF9yYWRhcl9wYXJhbXMgKnJhZGFyX3BhcmFtcyA9ICh2b2lkICopZGF0YV9idWY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTEzOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNDktXFx0aWYgKHJhZGFyX3BhcmFtcy1cXHUwMDNlY2FjX3RpbWVfbXMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE1MDpcXHRcXHRtd2lmaWV4X2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBNU0csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE1MS1cXHRcXHRcXHQgICAgXFxcIjExaDogaXNzdWluZyBERlMgUmFkYXIgY2hlY2sgZm9yIGNoYW5uZWw9JWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTUzLVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTU0OlxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIE1TRywgXFxcImNhbmNlbGxpbmcgQ0FDXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTU1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE1OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTU5OmludCBtd2lmaWV4X3N0b3BfcmFkYXJfZGV0ZWN0aW9uKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE2MC1cXHRcXHRcXHRcXHQgc3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICpjaGFuZGVmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNjEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxNjI6XFx0c3RydWN0IG13aWZpZXhfcmFkYXJfcGFyYW1zIHJhZGFyX3BhcmFtcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxNjQ6XFx0bWVtc2V0KFxcdTAwMjZyYWRhcl9wYXJhbXMsIDAsIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9yYWRhcl9wYXJhbXMpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTY1LVxcdHJhZGFyX3BhcmFtcy5jaGFuZGVmID0gY2hhbmRlZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE2ODpcXHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9DSEFOX1JFUE9SVF9SRVFVRVNULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNjktXFx0XFx0XFx0XFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgXFx1MDAyNnJhZGFyX3BhcmFtcywgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTc0LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxNzU6dm9pZCBtd2lmaWV4X2Fib3J0X2NhYyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNzYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNzctXFx0aWYgKHByaXYtXFx1MDAzZXdkZXYubGlua3NbMF0uY2FjX3N0YXJ0ZWQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTc4OlxcdFxcdGlmIChtd2lmaWV4X3N0b3BfcmFkYXJfZGV0ZWN0aW9uKHByaXYsIFxcdTAwMjZwcml2LVxcdTAwM2VkZnNfY2hhbmRlZikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE3OTpcXHRcXHRcXHRtd2lmaWV4X2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBFUlJPUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTgwLVxcdFxcdFxcdFxcdCAgICBcXFwiZmFpbGVkIHRvIHN0b3AgQ0FDIGluIEZXXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTgxOlxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIE1TRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTgyLVxcdFxcdFxcdCAgICBcXFwiQWJvcnRpbmcgZGVsYXllZCB3b3JrIGZvciBDQUMuXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xOTMtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE5NDppbnQgbXdpZmlleF8xMWhfaGFuZGxlX2NoYW5ycHRfcmVhZHkoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTk1LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xOTctXFx0c3RydWN0IGhvc3RfY21kX2RzX2NoYW5fcnB0X2V2ZW50ICpycHRfZXZlbnQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE5ODpcXHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19jaGFuX3JwdF9kYXRhICpycHQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE5OS1cXHR1MTYgZXZlbnRfbGVuLCB0bHZfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTIwNS1cXHRpZiAobGUzMl90b19jcHUocnB0X2V2ZW50LVxcdTAwM2VyZXN1bHQpICE9IEhvc3RDbWRfUkVTVUxUX09LKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjIwNjpcXHRcXHRtd2lmaWV4X2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBFUlJPUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjA3LVxcdFxcdFxcdCAgICBcXFwiRXJyb3IgaW4gY2hhbm5lbCByZXBvcnQgZXZlbnRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTIxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjExOlxcdHdoaWxlIChldmVudF9sZW4gXFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2hlYWRlcikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjEyLVxcdFxcdHJwdCA9ICh2b2lkICopXFx1MDAyNnJwdF9ldmVudC1cXHUwMDNldGx2YnVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTIxNy1cXHRcXHRcXHRpZiAocnB0LVxcdTAwM2VtYXAucmFkYXIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjE4OlxcdFxcdFxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIE1TRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjE5LVxcdFxcdFxcdFxcdFxcdCAgICBcXFwiUkFEQVIgRGV0ZWN0ZWQgb24gY2hhbm5lbCAlZCFcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjM4LS8qIEhhbmRsZXIgZm9yIHJhZGFyIGRldGVjdGVkIGV2ZW50IGZyb20gRlcuKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjM5OmludCBtd2lmaWV4XzExaF9oYW5kbGVfcmFkYXJfZGV0ZWN0ZWQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjQwLVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI0MS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI0MjpcXHRzdHJ1Y3QgbXdpZmlleF9yYWRhcl9kZXRfZXZlbnQgKnJkcl9ldmVudDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjQzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjQ2OlxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIE1TRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjQ3LVxcdFxcdCAgICBcXFwicmFkYXIgZGV0ZWN0ZWQ7IGluZGljYXRpbmcga2VybmVsXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjQ4OlxcdGlmIChtd2lmaWV4X3N0b3BfcmFkYXJfZGV0ZWN0aW9uKHByaXYsIFxcdTAwMjZwcml2LVxcdTAwM2VkZnNfY2hhbmRlZikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI0OTpcXHRcXHRtd2lmaWV4X2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBFUlJPUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjUwLVxcdFxcdFxcdCAgICBcXFwiRmFpbGVkIHRvIHN0b3AgQ0FDIGluIEZXXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNTItXFx0XFx0XFx0ICAgICBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjUzOlxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIE1TRywgXFxcInJlZ2RvbWFpbjogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI1NC1cXHRcXHQgICAgcmRyX2V2ZW50LVxcdTAwM2VyZWdfZG9tYWluKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjU1OlxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIE1TRywgXFxcInJhZGFyIGRldGVjdGlvbiB0eXBlOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjU2LVxcdFxcdCAgICByZHJfZXZlbnQtXFx1MDAzZWRldF90eXBlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNjUtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI2Njp2b2lkIG13aWZpZXhfZGZzX2NoYW5fc3dfd29ya19xdWV1ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI2Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI2ODpcXHRzdHJ1Y3QgbXdpZmlleF91YXBfYnNzX3BhcmFtICpic3NfY2ZnO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNjktXFx0c3RydWN0IGRlbGF5ZWRfd29yayAqZGVsYXllZF93b3JrID0gdG9fZGVsYXllZF93b3JrKHdvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNzA6XFx0c3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI3MTpcXHRcXHRcXHRjb250YWluZXJfb2YoZGVsYXllZF93b3JrLCBzdHJ1Y3QgbXdpZmlleF9wcml2YXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNzItXFx0XFx0XFx0XFx0ICAgICBkZnNfY2hhbl9zd193b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNzUtXFx0aWYgKCFic3NfY2ZnLVxcdTAwM2ViZWFjb25fcGVyaW9kKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI3NjpcXHRcXHRtd2lmaWV4X2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBFUlJPUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjc3LVxcdFxcdFxcdCAgICBcXFwiY2hhbm5lbCBzd2l0Y2g6IEFQIGFscmVhZHkgc3RvcHBlZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyODE6XFx0bXdpZmlleF91YXBfc2V0X2NoYW5uZWwocHJpdiwgYnNzX2NmZywgcHJpdi1cXHUwMDNlZGZzX2NoYW5kZWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI4MzpcXHRpZiAobXdpZmlleF9jb25maWdfc3RhcnRfdWFwKHByaXYsIGJzc19jZmcpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI4NDpcXHRcXHRtd2lmaWV4X2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBFUlJPUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjg1LVxcdFxcdFxcdCAgICBcXFwiRmFpbGVkIHRvIHN0YXJ0IEFQIGFmdGVyIGNoYW5uZWwgc3dpdGNoXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI4OTpcXHRtd2lmaWV4X2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBNU0csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI5MC1cXHRcXHQgICAgXFxcImluZGljYXRpbmcgY2hhbm5lbCBzd2l0Y2ggY29tcGxldGlvbiB0byBrZXJuZWxcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTI0LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoyNTppbnQgbXdpZmlleF9maWxsX2NhcF9pbmZvKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHU4IHJhZGlvX3R5cGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTI2LVxcdFxcdFxcdCAgc3RydWN0IGllZWU4MDIxMV9odF9jYXAgKmh0X2NhcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMi1cXHRpZiAoV0FSTl9PTl9PTkNFKCFzYmFuZCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzM6XFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgRVJST1IsIFxcXCJJbnZhbGlkIHJhZGlvIHR5cGUhXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzQtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNjktICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjcwOnN0YXRpYyBzdHJ1Y3QgbXdpZmlleF90eF9iYV9zdHJlYW1fdGJsICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NzE6bXdpZmlleF9nZXRfYmFfc3RhdHVzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjcyOlxcdFxcdCAgICAgIGVudW0gbXdpZmlleF9iYV9zdGF0dXMgYmFfc3RhdHVzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy03My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjc0OlxcdHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKnR4X2JhX3Rzcl90Ymw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTc1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTk1LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo5NjppbnQgbXdpZmlleF9yZXRfMTFuX2RlbGJhKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTk3LVxcdFxcdFxcdCAgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtOTktXFx0aW50IHRpZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTAwOlxcdHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKnR4X2JhX3RibDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTAxLVxcdHN0cnVjdCBob3N0X2NtZF9kc18xMW5fZGVsYmEgKmRlbF9iYSA9IFxcdTAwMjZyZXNwLVxcdTAwM2VwYXJhbXMuZGVsX2JhO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEwNS1cXHRpZiAoZGVsX2JhLVxcdTAwM2VkZWxfcmVzdWx0ID09IEJBX1JFU1VMVF9TVUNDRVNTKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjEwNjpcXHRcXHRtd2lmaWV4X2RlbF9iYV90YmwocHJpdiwgdGlkLCBkZWxfYmEtXFx1MDAzZXBlZXJfbWFjX2FkZHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEwNy1cXHRcXHRcXHRcXHQgICBUWVBFX0RFTEJBX1NFTlQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxMTA6XFx0XFx0dHhfYmFfdGJsID0gbXdpZmlleF9nZXRfYmFfc3RhdHVzKHByaXYsIEJBX1NFVFVQX0lOUFJPR1JFU1MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMTEtXFx0XFx0aWYgKHR4X2JhX3RibClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTEyOlxcdFxcdFxcdG13aWZpZXhfc2VuZF9hZGRiYShwcml2LCB0eF9iYV90YmwtXFx1MDAzZXRpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTEzLVxcdFxcdFxcdFxcdFxcdCAgIHR4X2JhX3RibC1cXHUwMDNlcmEpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTIxOlxcdFxcdG13aWZpZXhfY3JlYXRlX2JhX3RibChwcml2LCBkZWxfYmEtXFx1MDAzZXBlZXJfbWFjX2FkZHIsIHRpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTIyLVxcdFxcdFxcdFxcdCAgICAgIEJBX1NFVFVQX0lOUFJPR1JFU1MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjEyNDpcXHRcXHR0eF9iYV90YmwgPSBtd2lmaWV4X2dldF9iYV9zdGF0dXMocHJpdiwgQkFfU0VUVVBfSU5QUk9HUkVTUyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEyNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTI2LVxcdFxcdGlmICh0eF9iYV90YmwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjEyNzpcXHRcXHRcXHRtd2lmaWV4X2RlbF9iYV90YmwocHJpdiwgdHhfYmFfdGJsLVxcdTAwM2V0aWQsIHR4X2JhX3RibC1cXHUwMDNlcmEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEyOC1cXHRcXHRcXHRcXHRcXHQgICBUWVBFX0RFTEJBX1NFTlQsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE0MS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTQyOmludCBtd2lmaWV4X3JldF8xMW5fYWRkYmFfcmVxKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE0My1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xNDYtXFx0c3RydWN0IGhvc3RfY21kX2RzXzExbl9hZGRiYV9yc3AgKmFkZF9iYV9yc3AgPSBcXHUwMDI2cmVzcC1cXHUwMDNlcGFyYW1zLmFkZF9iYV9yc3A7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE0NzpcXHRzdHJ1Y3QgbXdpZmlleF90eF9iYV9zdHJlYW1fdGJsICp0eF9iYV90Ymw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE0ODpcXHRzdHJ1Y3QgbXdpZmlleF9yYV9saXN0X3RibCAqcmFfbGlzdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTQ5LVxcdHUxNiBibG9ja19hY2tfcGFyYW1fc2V0ID0gbGUxNl90b19jcHUoYWRkX2JhX3JzcC1cXHUwMDNlYmxvY2tfYWNrX3BhcmFtX3NldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxNTc6XFx0dGlkX2Rvd24gPSBtd2lmaWV4X3dtbV9kb3duZ3JhZGVfdGlkKHByaXYsIHRpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE1ODpcXHRyYV9saXN0ID0gbXdpZmlleF93bW1fZ2V0X3JhbGlzdF9ub2RlKHByaXYsIHRpZF9kb3duLCBhZGRfYmFfcnNwLVxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTU5LVxcdFxcdHBlZXJfbWFjX2FkZHIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE2NC1cXHRcXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE2NTpcXHRcXHRtd2lmaWV4X2RlbF9iYV90YmwocHJpdiwgdGlkLCBhZGRfYmFfcnNwLVxcdTAwM2VwZWVyX21hY19hZGRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xNjYtXFx0XFx0XFx0XFx0ICAgVFlQRV9ERUxCQV9TRU5ULCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE3MzpcXHR0eF9iYV90YmwgPSBtd2lmaWV4X2dldF9iYV90YmwocHJpdiwgdGlkLCBhZGRfYmFfcnNwLVxcdTAwM2VwZWVyX21hY19hZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTc0LVxcdGlmICh0eF9iYV90YmwpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTc1OlxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIEVWRU5ULCBcXFwiaW5mbzogQkEgc3RyZWFtIGNvbXBsZXRlXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTc2LVxcdFxcdHR4X2JhX3RibC1cXHUwMDNlYmFfc3RhdHVzID0gQkFfU0VUVVBfQ09NUExFVEU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTg3LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE4ODpcXHRcXHRtd2lmaWV4X2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBFUlJPUiwgXFxcIkJBIHN0cmVhbSBub3QgY3JlYXRlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE4OS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjAxLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoyMDI6aW50IG13aWZpZXhfY21kX3JlY2ZnX3R4X2J1ZihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yMDMtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCBpbnQgY21kX2FjdGlvbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yMTQtXFx0Y2FzZSBIb3N0Q21kX0FDVF9HRU5fU0VUOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoyMTU6XFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgQ01ELFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yMTYtXFx0XFx0XFx0ICAgIFxcXCJjbWQ6IHNldCB0eF9idWY9JWRcXFxcblxcXCIsICpidWZfc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjM0LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoyMzU6aW50IG13aWZpZXhfY21kX2Ftc2R1X2FnZ3JfY3RybChzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yMzYtXFx0XFx0XFx0XFx0aW50IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjIzNzpcXHRcXHRcXHRcXHRzdHJ1Y3QgbXdpZmlleF9kc18xMW5fYW1zZHVfYWdncl9jdHJsICphYV9jdHJsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yMzgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTI2Ny0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MjY4OmludCBtd2lmaWV4X2NtZF8xMW5fY2ZnKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTI2OS1cXHRcXHRcXHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MjcwOlxcdFxcdFxcdHN0cnVjdCBtd2lmaWV4X2RzXzExbl90eF9jZmcgKnR4Y2ZnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yNzEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jPTI5OD1pbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6Mjk5Om13aWZpZXhfY21kX2FwcGVuZF8xMW5fdGx2KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMwMDpcXHRcXHRcXHQgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzAxLVxcdFxcdFxcdCAgIHU4ICoqYnVmZmVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMDIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMDM6XFx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRjYXAgKmh0X2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzA0OlxcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2h0aW5mbyAqaHRfaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzA1OlxcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2NoYW5fbGlzdF9wYXJhbV9zZXQgKmNoYW5fbGlzdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzA2OlxcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzXzIwNDBic3NjbyAqYnNzX2NvXzIwNDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMwNzpcXHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19leHRjYXAgKmV4dF9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMwOC1cXHRpbnQgcmV0X2xlbiA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMTY6XFx0cmFkaW9fdHlwZSA9IG13aWZpZXhfYmFuZF90b19yYWRpb190eXBlKCh1OCkgYnNzX2Rlc2MtXFx1MDAzZWJzc19iYW5kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzE3LVxcdHNiYW5kID0gcHJpdi1cXHUwMDNld2Rldi53aXBoeS1cXHUwMDNlYmFuZHNbcmFkaW9fdHlwZV07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzE5LVxcdGlmIChic3NfZGVzYy1cXHUwMDNlYmNuX2h0X2NhcCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMjA6XFx0XFx0aHRfY2FwID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2h0Y2FwICopICpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMyMTpcXHRcXHRtZW1zZXQoaHRfY2FwLCAwLCBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRjYXApKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzIyLVxcdFxcdGh0X2NhcC1cXHUwMDNlaGVhZGVyLnR5cGUgPSBjcHVfdG9fbGUxNihXTEFOX0VJRF9IVF9DQVBBQklMSVRZKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMjQtXFx0XFx0XFx0XFx0Y3B1X3RvX2xlMTYoc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMyNTpcXHRcXHRtZW1jcHkoKHU4ICopIGh0X2NhcCArIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19oZWFkZXIpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMjYtXFx0XFx0ICAgICAgICh1OCAqKWJzc19kZXNjLVxcdTAwM2ViY25faHRfY2FwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzI5OlxcdFxcdG13aWZpZXhfZmlsbF9jYXBfaW5mbyhwcml2LCByYWRpb190eXBlLCBcXHUwMDI2aHRfY2FwLVxcdTAwM2VodF9jYXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMzAtXFx0XFx0LyogVXBkYXRlIEhUNDAgY2FwYWJpbGl0eSBmcm9tIGN1cnJlbnQgY2hhbm5lbCBpbmZvcm1hdGlvbiAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMzMy1cXHRcXHRcXHR1OCByYWRpbyA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMzNDpcXHRcXHRcXHRtd2lmaWV4X2JhbmRfdG9fcmFkaW9fdHlwZShic3NfZGVzYy1cXHUwMDNlYnNzX2JhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMzUtXFx0XFx0XFx0aW50IGZyZXEgPVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzYzOlxcdFxcdCpidWZmZXIgKz0gc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2h0Y2FwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzY0OlxcdFxcdHJldF9sZW4gKz0gc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2h0Y2FwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzY1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zNjgtXFx0XFx0aWYgKHByaXYtXFx1MDAzZWJzc19tb2RlID09IE5MODAyMTFfSUZUWVBFX0FESE9DKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjM2OTpcXHRcXHRcXHRodF9pbmZvID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2h0aW5mbyAqKSAqYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zNzAtXFx0XFx0XFx0bWVtc2V0KGh0X2luZm8sIDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjM3MTpcXHRcXHRcXHQgICAgICAgc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2h0aW5mbykpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zNzItXFx0XFx0XFx0aHRfaW5mby1cXHUwMDNlaGVhZGVyLnR5cGUgPVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM3OC1cXHRcXHRcXHRtZW1jcHkoKHU4ICopIGh0X2luZm8gK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozNzk6XFx0XFx0XFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19oZWFkZXIpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zODAtXFx0XFx0XFx0ICAgICAgICh1OCAqKWJzc19kZXNjLVxcdTAwM2ViY25faHRfb3BlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjM4OTpcXHRcXHRcXHQqYnVmZmVyICs9IHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19odGluZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozOTA6XFx0XFx0XFx0cmV0X2xlbiArPSBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRpbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzkxLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zOTMtXFx0XFx0Y2hhbl9saXN0ID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6Mzk0OlxcdFxcdFxcdChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19jaGFuX2xpc3RfcGFyYW1fc2V0ICopICpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM5NS1cXHRcXHRtZW1zZXQoY2hhbl9saXN0LCAwLCBzdHJ1Y3Rfc2l6ZShjaGFuX2xpc3QsIGNoYW5fc2Nhbl9wYXJhbSwgMSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM5Ny1cXHRcXHRjaGFuX2xpc3QtXFx1MDAzZWhlYWRlci5sZW4gPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozOTg6XFx0XFx0XFx0Y3B1X3RvX2xlMTYoc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2NoYW5fc2Nhbl9wYXJhbV9zZXQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzk5LVxcdFxcdGNoYW5fbGlzdC1cXHUwMDNlY2hhbl9zY2FuX3BhcmFtWzBdLmNoYW5fbnVtYmVyID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MDEtXFx0XFx0Y2hhbl9saXN0LVxcdTAwM2VjaGFuX3NjYW5fcGFyYW1bMF0ucmFkaW9fdHlwZSA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQwMjpcXHRcXHRcXHRtd2lmaWV4X2JhbmRfdG9fcmFkaW9fdHlwZSgodTgpIGJzc19kZXNjLVxcdTAwM2Vic3NfYmFuZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQwMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MTYtXFx0aWYgKGJzc19kZXNjLVxcdTAwM2ViY25fYnNzX2NvXzIwNDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDE3OlxcdFxcdGJzc19jb18yMDQwID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzXzIwNDBic3NjbyAqKSAqYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MTgtXFx0XFx0bWVtc2V0KGJzc19jb18yMDQwLCAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0MTk6XFx0XFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc18yMDQwYnNzY28pKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDIwLVxcdFxcdGJzc19jb18yMDQwLVxcdTAwM2VoZWFkZXIudHlwZSA9IGNwdV90b19sZTE2KFdMQU5fRUlEX0JTU19DT0VYXzIwNDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQyNC1cXHRcXHRtZW1jcHkoKHU4ICopIGJzc19jb18yMDQwICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDI1OlxcdFxcdCAgICAgICBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaGVhZGVyKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDI2LVxcdFxcdCAgICAgICBic3NfZGVzYy1cXHUwMDNlYmNuX2Jzc19jb18yMDQwICtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQzMDpcXHRcXHQqYnVmZmVyICs9IHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc18yMDQwYnNzY28pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0MzE6XFx0XFx0cmV0X2xlbiArPSBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfMjA0MGJzc2NvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDMyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MzUtXFx0XFx0aGRyID0gKHZvaWQgKilic3NfZGVzYy1cXHUwMDNlYmNuX2V4dF9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQzNjpcXHRcXHRleHRfY2FwID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2V4dGNhcCAqKSAqYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0Mzc6XFx0XFx0bWVtc2V0KGV4dF9jYXAsIDAsIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19leHRjYXApKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDM4LVxcdFxcdGV4dF9jYXAtXFx1MDAzZWhlYWRlci50eXBlID0gY3B1X3RvX2xlMTYoV0xBTl9FSURfRVhUX0NBUEFCSUxJVFkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDUxOlxcdFxcdCpidWZmZXIgKz0gc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2V4dGNhcCkgKyBoZHItXFx1MDAzZWxlbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDUyOlxcdFxcdHJldF9sZW4gKz0gc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2V4dGNhcCkgKyBoZHItXFx1MDAzZWxlbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDUzLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00NjEtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQ2MjpzdGF0aWMgaW50IG13aWZpZXhfaXNfdHhfYmFfc3RyZWFtX3B0cl92YWxpZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0NjM6XFx0XFx0XFx0XFx0c3RydWN0IG13aWZpZXhfdHhfYmFfc3RyZWFtX3RibCAqdHhfdGJsX3B0cilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDY0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDY1OlxcdHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKnR4X2JhX3Rzcl90Ymw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00ODAtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQ4MTp2b2lkIG13aWZpZXhfMTFuX2RlbGV0ZV90eF9iYV9zdHJlYW1fdGJsX2VudHJ5KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQ4MjpcXHRcXHRcXHRcXHRzdHJ1Y3QgbXdpZmlleF90eF9iYV9zdHJlYW1fdGJsICp0eF9iYV90c3JfdGJsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00ODMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00ODQtXFx0aWYgKCF0eF9iYV90c3JfdGJsIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQ4NTpcXHQgICAgbXdpZmlleF9pc190eF9iYV9zdHJlYW1fcHRyX3ZhbGlkKHByaXYsIHR4X2JhX3Rzcl90YmwpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00ODYtXFx0XFx0cmV0dXJuO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00ODctXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDAxOjM0OjE2LjQ0OTE4MDI5N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjI3NTcxODEwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmc9ZmFsc2U6IEFuYWx5emluZyBhIE1hcnZlbGwgU0RJTyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBTeXprYWxsZXIgaXMgZnV6emluZyBgbXdpZmlleGAgb3ZlciBVU0IuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBmdXp6ZXIgY291bGQgcG90ZW50aWFsbHkgcHJvdmlkZSBhcmJpdHJhcnkgVVNCIGRlc2NyaXB0b3JzIGFuZCByZXNwb25zZXMsIHRoYXQncyBmaW5lLiBCdXQsIHRoaXMgcGFydGljdWxhciBwYXRjaCwgdGhvdWdoLCBpcyBhYm91dCBhIGBtYXJ2ZWxsLGludmFsaWQtcmVnLWhpbnQtaW4tcm9tYCBkZXZpY2UgcHJvcGVydHkuXG5cbk5vdywgdGhpcyBwcm9wZXJ0eSBpcyByZWFkIGZyb20gdGhlIGRldmljZSB0cmVlLiBJbiBhIFVTQi1lbXVsYXRlZCBlbnZpcm9ubWVudCwgd2hlcmUgdGhpcyBmdXp6ZXIgaXMgcnVubmluZywgYGFkYXB0ZXItXHUwMDNlZGV2YCBpcyB0aGUgVVNCIGRldmljZS4gVVNCIGRldmljZXMgKnVzdWFsbHkqIGRvbid0IGhhdmUgZGV2aWNlIHRyZWUgbm9kZXMgdW5sZXNzIHRoZXkncmUgaGFyZGNvZGVkIG9uIGEgYm9hcmQsIGxpa2Ugd2l0aCBhIG1vZGlmaWVkIGRldmljZSB0cmVlIGluIGBhcm1hZGEtMzg1LWxpbmtzeXMtcmFuZ28uZHRzYC4gQWhhISBUaGUgcGF0Y2ggKmRvZXMqIG1vZGlmeSB0aGlzIHZlcnkgRFRTIGZpbGUsIHNwZWNpZmljYWxseSBhZGRpbmcgdGhlIHByb3BlcnR5IHRvIGFuIFNESU8gZGV2aWNlIG9uIGEgcGFydGljdWxhciBib2FyZCAoYHdpZmlAMWAgdW5kZXIgYFx1MDAyNnNkaGNpYCkuXG5cblNvLCB0aGlzIHByb3BlcnR5IGlzIHNwZWNpZmljYWxseSBmb3IgYW4gU0RJTyBkZXZpY2Ugb24gYSBjZXJ0YWluIEFSTSBib2FyZC4gVGhlIGNyaXRpY2FsIGNvZGUgcGF0aCBpczpcblxuYGBgY1xuXHRcdFx0XHRpZiAoY291bnRyeV9jb2RlIFx1MDAyNlx1MDAyNlxuXHRcdFx0XHQgICAgIWRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woYWRhcHRlci1cdTAwM2VkZXYsXG5cdFx0XHRcdFx0XHRcdCAgICAgICBcIm1hcnZlbGwsaW52YWxpZC1yZWctaGludC1pbi1yb21cIikgXHUwMDI2XHUwMDI2XG5cdFx0XHRcdCAgICByZWd1bGF0b3J5X2hpbnQod2lwaHksIGNvdW50cnlfY29kZSkpXG5gYGBcblxuSWYgdGhlIHByb3BlcnR5ICppc24ndCogcHJlc2VudCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQgZm9yIGV2ZXJ5dGhpbmcgZXhjZXB0IHRoYXQgc3BlY2lmaWMgYm9hcmQsIGl0J2xsIGNhbGwgYHJlZ3VsYXRvcnlfaGludGAuIFRoZSBwYXRjaCBpcyAqb25seSogYWRkaW5nIGEgd2F5IHRvICpza2lwKiBgcmVndWxhdG9yeV9oaW50YCBpZiB0aGUgcHJvcGVydHkgKmlzKiBwcmVzZW50LlxuXG5Db25zaWRlcmluZyB0aGF0IHRoZSBmdXp6ZXIgcnVucyBvbiB4ODZfNjQgb3IgYXJtNjQgZ2VuZXJpYyBWTXMsIHRoZSBkZXZpY2UgdHJlZSB3b24ndCBoYXZlIHRoaXMgcHJvcGVydHkgc2V0LiBUaGVyZWZvcmUsIHRoZSBmdXp6ZXIncyBleGVjdXRpb24gZmxvdyB3b24ndCBjaGFuZ2UuIFRoZSBjb25kaXRpb24gYCFkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKC4uLilgIHdpbGwgYWx3YXlzIGJlIGB0cnVlYCwgYW5kIGl0IHdpbGwgZXhlY3V0ZSBgcmVndWxhdG9yeV9oaW50YC5cblxuU28sIHRoZSBuZXh0IHF1ZXN0aW9uIGlzOiBEb2VzIHRoaXMgcGF0Y2ggaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgZm9yIHRoZSBmdXp6ZXI/IE5vLCBiZWNhdXNlIGl0IGRvZXNuJ3QgcnVuIHdpdGggdGhhdCBwYXJ0aWN1bGFyIGRldmljZSB0cmVlISBFdmVuIGlmIGl0IGRpZCwgc2tpcHBpbmcgYHJlZ3VsYXRvcnlfaGludGAgaXMgYSB2ZXJ5IG1pbm9yIGNoYW5nZSwgYXZvaWRpbmcgYSBmdW5jdGlvbiBjYWxsIHRvIHRoZSByZWd1bGF0b3J5IHN1YnN5c3RlbS4gSXMgdGhpcyBldmVuIHdvcnRoIGZ1enppbmc/IEl0J3MganVzdCBhZGRpbmcgYSBkZXZpY2UgdHJlZSBwcm9wZXJ0eSBjaGVjaywgYSBib2FyZC1zcGVjaWZpYyBxdWlyay5cblxuVGhlIGZ1enppbmcgcnVsZXMgc3RhdGU6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucy4uLkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIlxuXG5UaGUgY29kZSBwYXRoIHdoZXJlIGBkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sYCByZXR1cm5zIGB0cnVlYCBpcyB1bnJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQgYmVjYXVzZSB0aGUgYG1hcnZlbGwsaW52YWxpZC1yZWctaGludC1pbi1yb21gIHByb3BlcnR5IGlzbid0IHByZXNlbnQsIGFuZCB0aGUgZnV6emVyIGNhbid0IGluamVjdCBpdCAoYXMgZmFyIGFzIEkga25vdykgZm9yIFVTQi9TRElPIGRldmljZXMuIE5vcGUsIG5vIHdheSB0byBpbmplY3QgdGhlIGRldmljZSB0cmVlIGhlcmUuIEFsc28sIGV2ZW4gaWYgaXQgKndhcyogcmVhY2hhYmxlLCB0aGUgZnVuY3Rpb25hbCBjaGFuZ2UgaXMgdHJpdmlhbDogYWRkaW5nIGEgYm9vbGVhbiBjaGVjay5cblxuRG91YmxlLWNoZWNraW5nLCB0aGUgcGF0Y2ggbW9kaWZpZXMgYERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvbWFydmVsbCxzZDg3ODcueWFtbGAsIGBhcmNoL2FybS9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS0zODUtbGlua3N5cy1yYW5nby5kdHNgIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNgLiBUaGlzIGNvbmZpcm1zIGl0J3MgYSBjbGFzc2ljIGJvYXJkLXNwZWNpZmljIHF1aXJrIHdoZXJlIGl0IHNraXBzIGByZWd1bGF0b3J5X2hpbnRgIHdoZW4gdGhlIERUIHByb3BlcnR5IGlzIHRoZXJlLiBCZWNhdXNlIHRoZSBmdXp6ZXIgd29uJ3QgaGF2ZSB0aGF0IERUIHByb3BlcnR5LCB0aGUgZXhlY3V0aW9uIGZsb3cgaXMgaWRlbnRpY2FsLiBFdmVuIGlmIHJlYWNoYWJsZSwgaXQncyBqdXN0IHNraXBwaW5nIGEgc2luZ2xlIGZ1bmN0aW9uIGNhbGwuXG5cbkJhc2VkIG9uIHRoZSBydWxlcywgd2hlcmUgSSd2ZSBnb3QgXCJDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVVcIiBhbmQgaGVyZSB0aGF0J3MgYGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2xgIHJldHVybmluZyBgdHJ1ZWAsIGFuZCBiZWNhdXNlIHRoZSBmYWxzZSBicmFuY2ggaXMgdGhlIHNhbWUgYXMgdGhlIG9sZCBjb2RlLCBJJ20gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgyODMsIk91dHB1dFRva2VucyI6MTU3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEwOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwMTozNDozMi43MjQ5MDE4NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBib2FyZC1zcGVjaWZpYyBxdWlyayBmb3IgTWFydmVsbCBXaUZpIGRldmljZXMgdG8gc2tpcCBhIHJlZ3VsYXRvcnkgaGludCBpZiBhIHNwZWNpZmljIGRldmljZSB0cmVlIHByb3BlcnR5ICgnbWFydmVsbCxpbnZhbGlkLXJlZy1oaW50LWluLXJvbScpIGlzIHByZXNlbnQuIFRoaXMgcHJvcGVydHkgaXMgb25seSBhZGRlZCB0byBhIHNwZWNpZmljIEFSTSBib2FyZCdzIGRldmljZSB0cmVlIChhcm1hZGEtMzg1LWxpbmtzeXMtcmFuZ28pLiBJbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSB3aGVyZSBmdXp6aW5nIG9jY3VycywgdGhpcyBkZXZpY2UgdHJlZSBwcm9wZXJ0eSB3aWxsIG5vdCBiZSBwcmVzZW50LCBtZWFuaW5nIHRoZSBleGVjdXRpb24gZmxvdyB3aWxsIGJlIGlkZW50aWNhbCB0byB0aGUgcHJlLXBhdGNoIGJlaGF2aW9yLiBUaGUgbmV3IGNvZGUgcGF0aCAoc2tpcHBpbmcgdGhlIHJlZ3VsYXRvcnkgaGludCkgaXMgdW5yZWFjaGFibGUgZHVyaW5nIHN0YW5kYXJkIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgYm9hcmQtc3BlY2lmaWMgcXVpcmsgZm9yIE1hcnZlbGwgV2lGaSBkZXZpY2VzIHRvIHNraXAgYSByZWd1bGF0b3J5IGhpbnQgaWYgYSBzcGVjaWZpYyBkZXZpY2UgdHJlZSBwcm9wZXJ0eSAoJ21hcnZlbGwsaW52YWxpZC1yZWctaGludC1pbi1yb20nKSBpcyBwcmVzZW50LiBUaGlzIHByb3BlcnR5IGlzIG9ubHkgYWRkZWQgdG8gYSBzcGVjaWZpYyBBUk0gYm9hcmQncyBkZXZpY2UgdHJlZSAoYXJtYWRhLTM4NS1saW5rc3lzLXJhbmdvKS4gSW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS9HQ0Ugd2hlcmUgZnV6emluZyBvY2N1cnMsIHRoaXMgZGV2aWNlIHRyZWUgcHJvcGVydHkgd2lsbCBub3QgYmUgcHJlc2VudCwgbWVhbmluZyB0aGUgZXhlY3V0aW9uIGZsb3cgd2lsbCBiZSBpZGVudGljYWwgdG8gdGhlIHByZS1wYXRjaCBiZWhhdmlvci4gVGhlIG5ldyBjb2RlIHBhdGggKHNraXBwaW5nIHRoZSByZWd1bGF0b3J5IGhpbnQpIGlzIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDE6MzQ6MzIuNzI0OTM0ODhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowczdb8[1] Phase: Running StartedAt: 2026-08-21 01:34:40 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowczdb8[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-21 01:34:40 +0000 UTC FinishedAt: 2026-08-21 01:34:45 +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,}