Name: series-workflowpf69f Phase: Failed StartedAt: 2026-07-17 19:34:10 +0000 UTC FinishedAt: 2026-07-17 19:52:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpf69f[0] Phase: Succeeded StartedAt: 2026-07-17 19:34:10 +0000 UTC FinishedAt: 2026-07-17 19:52:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpf69f[0].run-triage Phase: Succeeded StartedAt: 2026-07-17 19:34:11 +0000 UTC FinishedAt: 2026-07-17 19:52:30 +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+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGZpcm13YXJlIHBhcnNpbmcgYW5kIEFDUEkvVUVGSSB0YWJsZSBwYXJzaW5nIGxvZ2ljIGluIHRoZSBJbnRlbCBXaXJlbGVzcyBXaUZpIChpd2x3aWZpKSBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBTaW5jZSBzeXprYWxsZXIgYW5kIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUvR0NFIGRvIG5vdCBlbXVsYXRlIEludGVsIFdpLUZpIFBDSSBoYXJkd2FyZSwgdGhlIGRyaXZlciB3aWxsIG5ldmVyIHByb2JlLiBDb25zZXF1ZW50bHksIHRoZSBmaXJtd2FyZSByZXF1ZXN0IGFuZCBwYXJzaW5nIHBhdGhzIChlLmcuLCBpd2xfcmVxX2Z3X2NhbGxiYWNrLCBpd2xfcGFyc2VfdGx2X2Zpcm13YXJlKSBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBhbmQgY2Fubm90IGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1MjMwZjVmNmI3YzA1OGM5YzZmZmI1ODQ5NmY3MmU4Y2E1YzZlMzA5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTcgMTk6NDk6NDQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuY1xuaW5kZXggYmYwZjg1MWE5MDc1NTQuLjQzMGE3NjQyZTAxYTMyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jXG5AQCAtODY1LDYgJiM0Mzs4NjUsMTEgQEAgaW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbiBcdFx0XHRcdFx0XHQgICAgICAgbWluX3NpemUsIG1heF9zaXplLFxuIFx0XHRcdFx0XHRcdCAgICAgICBcdTAwMjZ0YmxfcmV2KTtcbiBcdFx0aWYgKCFJU19FUlIod2lmaV9wa2cpKSB7XG4mIzQzO1x0XHRcdGlmICh0YmxfcmV2IFx1MDAzYyAwIHx8XG4mIzQzO1x0XHRcdCAgICB0YmxfcmV2IFx1MDAzZT0gQklUU19QRVJfQllURSAqXG4mIzQzO1x0XHRcdCAgICBzaXplb2YocmV2X2RhdGFbaWR4XS5yZXZpc2lvbnMpKVxuJiM0MztcdFx0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiBcdFx0XHRpZiAoIShCSVQodGJsX3JldikgXHUwMDI2IHJldl9kYXRhW2lkeF0ucmV2aXNpb25zKSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmNcbmluZGV4IDJlZjBhN2E5MjBhZGI1Li4wMTRmMjJjNDJmNDFhOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY1xuQEAgLTcwMCw3ICYjNDM7NzAwLDcgQEAgaW50IGl3bF91ZWZpX2dldF9wcGFnX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbiBcdHJldHVybiAtRUlOVkFMO1xuIFxuIHBhcnNlX3RhYmxlOlxuLVx0aWYgKCEoQklUKGRhdGEtXHUwMDNlcmV2aXNpb24pIFx1MDAyNiB2YWxpZF9yZXYpKSB7XG4mIzQzO1x0aWYgKGRhdGEtXHUwMDNlcmV2aXNpb24gXHUwMDNlPSAzMiB8fCAhKEJJVChkYXRhLVx1MDAzZXJldmlzaW9uKSBcdTAwMjYgdmFsaWRfcmV2KSkge1xuIFx0XHRyZXQgPSAtRUlOVkFMO1xuIFx0XHRJV0xfREVCVUdfUkFESU8oZndydCxcbiBcdFx0XHRcdFwmIzM0O1Vuc3VwcG9ydGVkIFVFRkkgUFBBRyByZXZpc2lvbjolZFxcblwmIzM0OyxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmNcbmluZGV4IGQwMjFiMjRkMDRkNmI5Li5iMWE1NTkwOWYwZDRiYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5jXG5AQCAtNDc1LDYgJiM0Mzs0NzUsNyBAQCBzdGF0aWMgaW50IGl3bF9kYmdfdGx2X3BhcnNlX2JpbihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3QgdTggKmRhdGEsXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGl3bF91Y29kZV90bHYgKnRsdjtcbiBcdHUzMiB0bHZfbGVuO1xuJiM0MztcdHNpemVfdCBhbGlnbmVkX3Rsdl9sZW47XG4gXG4gXHR3aGlsZSAobGVuIFx1MDAzZT0gc2l6ZW9mKCp0bHYpKSB7XG4gXHRcdGxlbiAtPSBzaXplb2YoKnRsdik7XG5AQCAtNDg3LDggJiM0Mzs0ODgsMTYgQEAgc3RhdGljIGludCBpd2xfZGJnX3Rsdl9wYXJzZV9iaW4oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxuIFx0XHRcdFx0bGVuLCB0bHZfbGVuKTtcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0fVxuLVx0XHRsZW4gLT0gQUxJR04odGx2X2xlbiwgNCk7XG4tXHRcdGRhdGEgJiM0Mzs9IHNpemVvZigqdGx2KSAmIzQzOyBBTElHTih0bHZfbGVuLCA0KTtcbiYjNDM7XG4mIzQzO1x0XHRhbGlnbmVkX3Rsdl9sZW4gPSBBTElHTih0bHZfbGVuLCA0KTtcbiYjNDM7XHRcdGlmIChsZW4gXHUwMDNjIGFsaWduZWRfdGx2X2xlbikge1xuJiM0MztcdFx0XHRJV0xfRVJSKHRyYW5zLCBcJiMzNDtpbnZhbGlkIGFsaWduZWQgVExWIGxlbjogJXpkLyV6dVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRsZW4sIGFsaWduZWRfdGx2X2xlbik7XG4mIzQzO1x0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdGxlbiAtPSBhbGlnbmVkX3Rsdl9sZW47XG4mIzQzO1x0XHRkYXRhICYjNDM7PSBzaXplb2YoKnRsdikgJiM0MzsgYWxpZ25lZF90bHZfbGVuO1xuIFxuIFx0XHRpd2xfZGJnX3Rsdl9hbGxvYyh0cmFucywgdGx2LCB0cnVlKTtcbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jXG5pbmRleCA4NDI1ODZkNGZjNWNlNC4uN2YxNTE1ZGZjNWJmOWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmNcbkBAIC00OTIsNyAmIzQzOzQ5Miw3IEBAIHN0YXRpYyB2b2lkIHNldF9zZWNfb2Zmc2V0KHN0cnVjdCBpd2xfZmlybXdhcmVfcGllY2VzICpwaWVjZXMsXG4gICogR2V0cyB1Q29kZSBzZWN0aW9uIGZyb20gdGx2LlxuICAqL1xuIHN0YXRpYyBpbnQgaXdsX3N0b3JlX3Vjb2RlX3NlYyhzdHJ1Y3QgZndfaW1nX3BhcnNpbmcgKmltZyxcbi1cdFx0XHQgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwgaW50IHNpemUpXG4mIzQzO1x0XHRcdCAgICAgICBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSlcbiB7XG4gXHRzdHJ1Y3QgZndfc2VjICpzZWM7XG4gXHRjb25zdCBzdHJ1Y3QgZndfc2VjX3BhcnNpbmcgKnNlY19wYXJzZTtcbkBAIC01MDEsNiAmIzQzOzUwMSw5IEBAIHN0YXRpYyBpbnQgaXdsX3N0b3JlX3Vjb2RlX3NlYyhzdHJ1Y3QgZndfaW1nX3BhcnNpbmcgKmltZyxcbiBcdGlmIChXQVJOX09OKCFpbWcgfHwgIWRhdGEpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiYjNDM7XHRpZiAoc2l6ZSBcdTAwM2Mgc2l6ZW9mKHNlY19wYXJzZS1cdTAwM2VvZmZzZXQpKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuIFx0c2VjX3BhcnNlID0gKGNvbnN0IHN0cnVjdCBmd19zZWNfcGFyc2luZyAqKWRhdGE7XG4gXG4gXHRhbGxvY19zaXplID0gc2l6ZW9mKCppbWctXHUwMDNlc2VjKSAqIChpbWctXHUwMDNlc2VjX2NvdW50ZXIgJiM0MzsgMSk7XG5AQCAtODA0LDYgJiM0Mzs4MDcsNyBAQCBzdGF0aWMgaW50IGl3bF9wYXJzZV90bHZfZmlybXdhcmUoc3RydWN0IGl3bF9kcnYgKmRydixcbiBcdHUzMiBidWlsZCwgcGFnaW5nX21lbV9zaXplO1xuIFx0aW50IG51bV9vZl9jcHVzO1xuIFx0Ym9vbCB1c25pZmZlcl9yZXEgPSBmYWxzZTtcbiYjNDM7XHRzaXplX3QgYWxpZ25lZF90bHZfbGVuO1xuIFxuIFx0aWYgKGxlbiBcdTAwM2Mgc2l6ZW9mKCp1Y29kZSkpIHtcbiBcdFx0SVdMX0VSUihkcnYsIFwmIzM0O3VDb2RlIGhhcyBpbnZhbGlkIGxlbmd0aDogJXpkXFxuXCYjMzQ7LCBsZW4pO1xuQEAgLTg1Miw4ICYjNDM7ODU2LDE2IEBAIHN0YXRpYyBpbnQgaXdsX3BhcnNlX3Rsdl9maXJtd2FyZShzdHJ1Y3QgaXdsX2RydiAqZHJ2LFxuIFx0XHRcdFx0bGVuLCB0bHZfbGVuKTtcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0fVxuLVx0XHRsZW4gLT0gQUxJR04odGx2X2xlbiwgNCk7XG4tXHRcdGRhdGEgJiM0Mzs9IHNpemVvZigqdGx2KSAmIzQzOyBBTElHTih0bHZfbGVuLCA0KTtcbiYjNDM7XG4mIzQzO1x0XHRhbGlnbmVkX3Rsdl9sZW4gPSBBTElHTih0bHZfbGVuLCA0KTtcbiYjNDM7XHRcdGlmIChsZW4gXHUwMDNjIGFsaWduZWRfdGx2X2xlbikge1xuJiM0MztcdFx0XHRJV0xfRVJSKGRydiwgXCYjMzQ7aW52YWxpZCBhbGlnbmVkIFRMViBsZW46ICV6ZC8lenVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0bGVuLCBhbGlnbmVkX3Rsdl9sZW4pO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRsZW4gLT0gYWxpZ25lZF90bHZfbGVuO1xuJiM0MztcdFx0ZGF0YSAmIzQzOz0gc2l6ZW9mKCp0bHYpICYjNDM7IGFsaWduZWRfdGx2X2xlbjtcbiBcbiBcdFx0c3dpdGNoICh0bHZfdHlwZSkge1xuIFx0XHRjYXNlIElXTF9VQ09ERV9UTFZfSU5TVDpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxOTo0OTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBmaXJtd2FyZSBwYXJzaW5nIGFuZCBBQ1BJL1VFRkkgdGFibGUgcGFyc2luZyBsb2dpYyBpbiB0aGUgSW50ZWwgV2lyZWxlc3MgV2lGaSAoaXdsd2lmaSkgZHJpdmVyLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gU2luY2Ugc3l6a2FsbGVyIGFuZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSBkbyBub3QgZW11bGF0ZSBJbnRlbCBXaS1GaSBQQ0kgaGFyZHdhcmUsIHRoZSBkcml2ZXIgd2lsbCBuZXZlciBwcm9iZS4gQ29uc2VxdWVudGx5LCB0aGUgZmlybXdhcmUgcmVxdWVzdCBhbmQgcGFyc2luZyBwYXRocyAoZS5nLiwgaXdsX3JlcV9md19jYWxsYmFjaywgaXdsX3BhcnNlX3Rsdl9maXJtd2FyZSkgYXJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1MjMwZjVmNmI3YzA1OGM5YzZmZmI1ODQ5NmY3MmU4Y2E1YzZlMzA5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMTcgMTk6NDk6NDQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jCmluZGV4IGJmMGY4NTFhOTA3NTU0Li40MzBhNzY0MmUwMWEzMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmMKQEAgLTg2NSw2ICYjNDM7ODY1LDExIEBAIGludCBpd2xfYWNwaV9nZXRfd2dkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpCiAJCQkJCQkgICAgICAgbWluX3NpemUsIG1heF9zaXplLAogCQkJCQkJICAgICAgICZhbXA7dGJsX3Jldik7CiAJCWlmICghSVNfRVJSKHdpZmlfcGtnKSkgewomIzQzOwkJCWlmICh0YmxfcmV2ICZsdDsgMCB8fAomIzQzOwkJCSAgICB0YmxfcmV2ICZndDs9IEJJVFNfUEVSX0JZVEUgKgomIzQzOwkJCSAgICBzaXplb2YocmV2X2RhdGFbaWR4XS5yZXZpc2lvbnMpKQomIzQzOwkJCQljb250aW51ZTsKJiM0MzsKIAkJCWlmICghKEJJVCh0YmxfcmV2KSAmYW1wOyByZXZfZGF0YVtpZHhdLnJldmlzaW9ucykpCiAJCQkJY29udGludWU7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMKaW5kZXggMmVmMGE3YTkyMGFkYjUuLjAxNGYyMmM0MmY0MWE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYwpAQCAtNzAwLDcgJiM0Mzs3MDAsNyBAQCBpbnQgaXdsX3VlZmlfZ2V0X3BwYWdfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KQogCXJldHVybiAtRUlOVkFMOwogCiBwYXJzZV90YWJsZToKLQlpZiAoIShCSVQoZGF0YS0mZ3Q7cmV2aXNpb24pICZhbXA7IHZhbGlkX3JldikpIHsKJiM0MzsJaWYgKGRhdGEtJmd0O3JldmlzaW9uICZndDs9IDMyIHx8ICEoQklUKGRhdGEtJmd0O3JldmlzaW9uKSAmYW1wOyB2YWxpZF9yZXYpKSB7CiAJCXJldCA9IC1FSU5WQUw7CiAJCUlXTF9ERUJVR19SQURJTyhmd3J0LAogCQkJCSYjMzQ7VW5zdXBwb3J0ZWQgVUVGSSBQUEFHIHJldmlzaW9uOiVkXG4mIzM0OywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuYwppbmRleCBkMDIxYjI0ZDA0ZDZiOS4uYjFhNTU5MDlmMGQ0YmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmMKQEAgLTQ3NSw2ICYjNDM7NDc1LDcgQEAgc3RhdGljIGludCBpd2xfZGJnX3Rsdl9wYXJzZV9iaW4oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLAogewogCWNvbnN0IHN0cnVjdCBpd2xfdWNvZGVfdGx2ICp0bHY7CiAJdTMyIHRsdl9sZW47CiYjNDM7CXNpemVfdCBhbGlnbmVkX3Rsdl9sZW47CiAKIAl3aGlsZSAobGVuICZndDs9IHNpemVvZigqdGx2KSkgewogCQlsZW4gLT0gc2l6ZW9mKCp0bHYpOwpAQCAtNDg3LDggJiM0Mzs0ODgsMTYgQEAgc3RhdGljIGludCBpd2xfZGJnX3Rsdl9wYXJzZV9iaW4oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLAogCQkJCWxlbiwgdGx2X2xlbik7CiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJfQotCQlsZW4gLT0gQUxJR04odGx2X2xlbiwgNCk7Ci0JCWRhdGEgJiM0Mzs9IHNpemVvZigqdGx2KSAmIzQzOyBBTElHTih0bHZfbGVuLCA0KTsKJiM0MzsKJiM0MzsJCWFsaWduZWRfdGx2X2xlbiA9IEFMSUdOKHRsdl9sZW4sIDQpOwomIzQzOwkJaWYgKGxlbiAmbHQ7IGFsaWduZWRfdGx2X2xlbikgewomIzQzOwkJCUlXTF9FUlIodHJhbnMsICYjMzQ7aW52YWxpZCBhbGlnbmVkIFRMViBsZW46ICV6ZC8lenVcbiYjMzQ7LAomIzQzOwkJCQlsZW4sIGFsaWduZWRfdGx2X2xlbik7CiYjNDM7CQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlsZW4gLT0gYWxpZ25lZF90bHZfbGVuOwomIzQzOwkJZGF0YSAmIzQzOz0gc2l6ZW9mKCp0bHYpICYjNDM7IGFsaWduZWRfdGx2X2xlbjsKIAogCQlpd2xfZGJnX3Rsdl9hbGxvYyh0cmFucywgdGx2LCB0cnVlKTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jCmluZGV4IDg0MjU4NmQ0ZmM1Y2U0Li43ZjE1MTVkZmM1YmY5ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMKQEAgLTQ5Miw3ICYjNDM7NDkyLDcgQEAgc3RhdGljIHZvaWQgc2V0X3NlY19vZmZzZXQoc3RydWN0IGl3bF9maXJtd2FyZV9waWVjZXMgKnBpZWNlcywKICAqIEdldHMgdUNvZGUgc2VjdGlvbiBmcm9tIHRsdi4KICAqLwogc3RhdGljIGludCBpd2xfc3RvcmVfdWNvZGVfc2VjKHN0cnVjdCBmd19pbWdfcGFyc2luZyAqaW1nLAotCQkJICAgICAgIGNvbnN0IHZvaWQgKmRhdGEsIGludCBzaXplKQomIzQzOwkJCSAgICAgICBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKIAlzdHJ1Y3QgZndfc2VjICpzZWM7CiAJY29uc3Qgc3RydWN0IGZ3X3NlY19wYXJzaW5nICpzZWNfcGFyc2U7CkBAIC01MDEsNiAmIzQzOzUwMSw5IEBAIHN0YXRpYyBpbnQgaXdsX3N0b3JlX3Vjb2RlX3NlYyhzdHJ1Y3QgZndfaW1nX3BhcnNpbmcgKmltZywKIAlpZiAoV0FSTl9PTighaW1nIHx8ICFkYXRhKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKJiM0MzsJaWYgKHNpemUgJmx0OyBzaXplb2Yoc2VjX3BhcnNlLSZndDtvZmZzZXQpKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJc2VjX3BhcnNlID0gKGNvbnN0IHN0cnVjdCBmd19zZWNfcGFyc2luZyAqKWRhdGE7CiAKIAlhbGxvY19zaXplID0gc2l6ZW9mKCppbWctJmd0O3NlYykgKiAoaW1nLSZndDtzZWNfY291bnRlciAmIzQzOyAxKTsKQEAgLTgwNCw2ICYjNDM7ODA3LDcgQEAgc3RhdGljIGludCBpd2xfcGFyc2VfdGx2X2Zpcm13YXJlKHN0cnVjdCBpd2xfZHJ2ICpkcnYsCiAJdTMyIGJ1aWxkLCBwYWdpbmdfbWVtX3NpemU7CiAJaW50IG51bV9vZl9jcHVzOwogCWJvb2wgdXNuaWZmZXJfcmVxID0gZmFsc2U7CiYjNDM7CXNpemVfdCBhbGlnbmVkX3Rsdl9sZW47CiAKIAlpZiAobGVuICZsdDsgc2l6ZW9mKCp1Y29kZSkpIHsKIAkJSVdMX0VSUihkcnYsICYjMzQ7dUNvZGUgaGFzIGludmFsaWQgbGVuZ3RoOiAlemRcbiYjMzQ7LCBsZW4pOwpAQCAtODUyLDggJiM0Mzs4NTYsMTYgQEAgc3RhdGljIGludCBpd2xfcGFyc2VfdGx2X2Zpcm13YXJlKHN0cnVjdCBpd2xfZHJ2ICpkcnYsCiAJCQkJbGVuLCB0bHZfbGVuKTsKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9Ci0JCWxlbiAtPSBBTElHTih0bHZfbGVuLCA0KTsKLQkJZGF0YSAmIzQzOz0gc2l6ZW9mKCp0bHYpICYjNDM7IEFMSUdOKHRsdl9sZW4sIDQpOwomIzQzOwomIzQzOwkJYWxpZ25lZF90bHZfbGVuID0gQUxJR04odGx2X2xlbiwgNCk7CiYjNDM7CQlpZiAobGVuICZsdDsgYWxpZ25lZF90bHZfbGVuKSB7CiYjNDM7CQkJSVdMX0VSUihkcnYsICYjMzQ7aW52YWxpZCBhbGlnbmVkIFRMViBsZW46ICV6ZC8lenVcbiYjMzQ7LAomIzQzOwkJCQlsZW4sIGFsaWduZWRfdGx2X2xlbik7CiYjNDM7CQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlsZW4gLT0gYWxpZ25lZF90bHZfbGVuOwomIzQzOwkJZGF0YSAmIzQzOz0gc2l6ZW9mKCp0bHYpICYjNDM7IGFsaWduZWRfdGx2X2xlbjsKIAogCQlzd2l0Y2ggKHRsdl90eXBlKSB7CiAJCWNhc2UgSVdMX1VDT0RFX1RMVl9JTlNUOgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxOTo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDAwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNzExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGl3bHdpZmkgRHJpdmVyIFBhdGNoZXMgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYGl3bHdpZmlgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBuZXcgYm91bmRzIGFuZCBhbGlnbm1lbnQgY2hlY2tzIHRoZXkmIzM5O3ZlIGFkZGVkLiBJdCYjMzk7cyBhY3Jvc3Mgc2V2ZXJhbCBmaWxlczogYGFjcGkuY2AsIGB1ZWZpLmNgLCBgaXdsLWRiZy10bHYuY2AsIGFuZCBgaXdsLWRydi5jYC4gVGhpcyBpcyBhbGwgYWJvdXQgZW5zdXJpbmcgZGF0YSBpbnRlZ3JpdHkgd2l0aGluIHRoZSBkcml2ZXIsIGdvb2Qgc3R1ZmYuIE15IG1haW4gY29uY2VybiwgdGhvdWdoLCBpcyB3aGV0aGVyIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGFjdHVhbGx5ICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgd2hpY2ggaXMgY3JpdGljYWwgZm9yIGZ1enppbmcgYW5kIHRlc3RpbmcuCgpGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlLiBgaXdsd2lmaWAgaXMgZm9yIEludGVsIFdpcmVsZXNzIFdpRmkgTmV4dCBHZW4gQUdOIGhhcmR3YXJlLiBUaGF0JiMzOTtzIHRoZSBjb3JlIHF1ZXN0aW9uIOKAkyBjYW4gd2UgdHJpZ2dlciB0aGVzZSBuZXcgY2hlY2tzIHdpdGhpbiBzb21ldGhpbmcgbGlrZSBHQ0Ugb3IgUUVNVT8gSSBrbm93IHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIG5hdGl2ZSBJbnRlbCBXaS1GaSBlbXVsYXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBnb2VzIHRvIGBtYWM4MDIxMV9od3NpbWAgYXMgYSBzb2Z0d2FyZSBzaW11bGF0b3IuLi4gYnV0IHRoYXQgd29uJiMzOTt0IHdvcmssIHJpZ2h0PyBJdCYjMzk7cyBzb2Z0d2FyZSwgbm90IHVzaW5nIGBpd2x3aWZpYC4KCkFscmlnaHQsIGhvdyBhYm91dCBVU0I/IFNvbWV0aW1lcyB0aG9zZSBkcml2ZXJzIHN1cHBvcnQgVVNCLiBJIG5lZWQgdG8gY2xhcmlmeSB0aGF0LiBCdXQgdGhlbiBJIHJlbWVtYmVyOiBtb3N0bHkgUENJZS4gU28gbGlrZWx5IG5vdCBVU0IuIEdvdHRhIGNoZWNrIHRvIGJlIHN1cmUsIHRob3VnaC4gVGhlbiB0aGVyZSYjMzk7cyBmaXJtd2FyZSBwYXJzaW5nLiBUaGlzIGlzIHBvdGVudGlhbGx5IGludGVyZXN0aW5nLiBJZiB0aGUgZHJpdmVyIHJlcXVlc3RzIGZpcm13YXJlLCBhbmQgc3l6a2FsbGVyIGNhbiBmZWVkIGl0IGZha2Ugb3IgZnV6emVkIGZpcm13YXJlIHRocm91Z2ggdGhlIGZpcm13YXJlIGxvYWRlciwgd2UgY291bGQgYmUgaW4gYnVzaW5lc3MuIFN5emthbGxlciAqY2FuKiBwcm92aWRlIGZha2UgZmlybXdhcmUhIE9rYXksIHRoYXQmIzM5O3MgYSBrZXkgcG9pbnQuCgpIb3dldmVyLCB0aGUgZHJpdmVyIG5lZWRzIHRvIGxvYWQgZmlyc3QsIHJpZ2h0PyBQQ0kgZHJpdmVycyB1c3VhbGx5IHByb2JlIGJhc2VkIG9uIFBDSSBJRHMuIFNvLCB3aXRob3V0IHRoZSByaWdodCBQQ0kgZGV2aWNlLCBpdCBtaWdodCBub3QgZXZlbiBsb2FkLiBCdXQgc3l6a2FsbGVyIGhhcyBgc3l6LXVzYmdlbmAgZm9yIFVTQiBhbmQgbWF5YmUsIGBzeXotcGNpZ2VuYD8gQ2FuIHN5emthbGxlciBlbXVsYXRlIFBDSSBkZXZpY2VzPyBOb3cgdGhhdCYjMzk7cyB0aGUgcmVhbCBxdWVzdGlvbi4gV2FpdCwgZG8gd2UgaGF2ZSBhbnkgUENJIGZ1enppbmcgc3VwcG9ydD8gTm90IGEgZ2VuZXJpYyBlbXVsYXRvciwgYnV0IG1heWJlIHRoZXJlJiMzOTtzIHNvbWUuLi4gYWgsIEkgdGhpbmsgdGhlcmUgaXMgbm93IQoKT2theSwgY2lyY2xpbmcgYmFjayB0byB0aGUgb3JpZ2luYWwgcHJvbXB0LCBpdCBzdHJlc3NlcyB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBJZiBgaXdsd2lmaWAgaXMgc3RyaWN0bHkgUENJLCBhbmQgd2UgKmRvbiYjMzk7dCogaGF2ZSBQQ0kgZW11bGF0aW9uLCB0aGVuIHdlIG1pZ2h0IGJlIHN0dWNrLiBTbywgdWx0aW1hdGVseSwgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzOiBjYW4gdGhlIGRyaXZlciBldmVuIGJlIHByb2JlZCBpbiB0aGVzZSBlbnZpcm9ubWVudHM/IEdvdHRhIGZpbmQgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaV9yZWdpc3Rlcl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTIxMDk9c3RhdGljIGludCBfX2luaXQgaXdsX2Rydl9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMjEyMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjIxMjE6XHRlcnIgPSBpd2xfcGNpX3JlZ2lzdGVyX2RyaXZlcigpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMjEyMi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaD0xMTQxPXN0YXRpYyBpbmxpbmUgdm9pZCBpd2xfdHJhbnNfbm90aWZ5X2Z3X2Vycm9yKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtMTE0OC0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oOjExNDk6aW50IF9fbXVzdF9jaGVjayBpd2xfcGNpX3JlZ2lzdGVyX2RyaXZlcih2b2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtMTE1MC12b2lkIGl3bF9wY2lfdW5yZWdpc3Rlcl9kcml2ZXIodm9pZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jPTEzMzg9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGl3bF9wY2lfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMzQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jOjEzNDc6aW50IF9fbXVzdF9jaGVjayBpd2xfcGNpX3JlZ2lzdGVyX2RyaXZlcih2b2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTEzNDgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTEzNDktXHRpbnQgcmV0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jOjEzNTA6XHRyZXQgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNml3bF9wY2lfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMzUxLVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxOTo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjIxCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUENJIERyaXZlciBGdXp6aW5nIExhbmRzY2FwZSoqCgpPa2F5LCBzbyB0aGlzIGlzIGEgUENJIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gc3l6a2FsbGVyIGV2ZW4gZnV6eiB0aGVzZSB0aGluZ3MgZWZmZWN0aXZlbHk/IEkga25vdyBzeXprYWxsZXIgaGFzIHNvbWUgS1ZNIHNldHVwIGNhbGxzIGxpa2UgYHN5el9rdm1fc2V0dXBfY3B1YCwgYnV0IGRvZXMgaXQgaGF2ZSBhIHdheSB0byBpbmplY3QgYXJiaXRyYXJ5IFBDSSBjb25maWd1cmF0aW9ucz8gSSBxdWlja2x5IHNjYW4gbXkgbWVudGFsIGRhdGFiYXNlLiBObywgd2FpdCwgdGhlcmUmIzM5O3Mgbm90IGEgYHN5el9wY2lfZGV2aWNlYCBjYWxsLCBvciBhbnl0aGluZyBzaW1pbGFyIGZvciBnZW5lcmFsIFBDSSBkZXZpY2UgaW5zdGFudGlhdGlvbi4gSSByZW1lbWJlciB0aGluZ3MgbGlrZSBgc3l6X21vdW50X2ltYWdlYCwgYnV0IHRoYXQmIzM5O3MgYSBkaWZmZXJlbnQgYXJlYS4KCkhvbGQgb24sIEkgcmVjYWxsIHRoYXQgc3l6a2FsbGVyICpkb2VzbiYjMzk7dCogaGF2ZSBhIGNvbXByZWhlbnNpdmUgUENJIGVtdWxhdG9yIHRvIHRyaWdnZXIgZ2VuZXJpYyBQQ0kgcHJvYmVzLiBVbmxlc3MsIG9mIGNvdXJzZSwgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyBQQ0kgZnV6emluZyBtb2R1bGUgdGhhdCBJJiMzOTttIGZvcmdldHRpbmcsIG9yIGl0JiMzOTtzIGxldmVyYWdpbmcgUUVNVSYjMzk7cyBQQ0kgZW11bGF0aW9uLiBCdXQgZXZlbiB0aGF0JiMzOTtzIGxpbWl0ZWQ7IFFFTVUgdHlwaWNhbGx5IGVtdWxhdGVzIHNwZWNpZmljIGRldmljZXMgbGlrZSBlMTAwMCBvciB2aXJ0aW8sIG5vdCBzb21ldGhpbmcgbGlrZSBpd2x3aWZpLiBEYW1uLCBJIHRob3VnaHQgSSBoYWQgYSBzb2x1dGlvbiBoZXJlLgoKV2FpdCwgaXMgdGhlcmUgdGhhdCBgQ09ORklHX1BDSV9FTkRQT0lOVF9URVNUYCBvcHRpb24gb3Igc29tZXRoaW5nIHNpbWlsYXI/IEkgc2hvdWxkIGNoZWNrIGludG8gdGhhdC4KCk5vdywgaWYgSSB0aGluayBhYm91dCBpdCwgd2hhdCBpZiB0aGUgZHJpdmVyICppcyogbG9hZGVkLCBidXQgdGhlIGBwcm9iZWAgZnVuY3Rpb24gaXMgbmV2ZXIgY2FsbGVkIGJlY2F1c2UgdGhlcmUmIzM5O3Mgbm8gYWN0dWFsIGhhcmR3YXJlIHRvIHRyaWdnZXIgaXQ/IFRoYXQgd291bGQgYmUgYSBtYWpvciBwcm9ibGVtLgoKSWYgYHByb2JlYCBuZXZlciBydW5zLCB0aGVuIG15IHRhcmdldCwgYGl3bF9wYXJzZV90bHZfZmlybXdhcmVgLCB3aWxsIGFsc28gbmV2ZXIgYmUgY2FsbGVkLiBTbywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgYGl3bF9wYXJzZV90bHZfZmlybXdhcmVgIGlzIGNhbGxlZCBmcm9tIGFueXdoZXJlIGVsc2UgaW4gdGhlIGNvZGUuIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBzZWUgaWYgaXQgY2FuIGJlIHJlYWNoZWQgaW4gYW5vdGhlciB3YXksIGFuZCB0aHVzIGZ1enplZCBpbiBhIGRpZmZlcmVudCBtYW5uZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3BhcnNlX3Rsdl9maXJtd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9NzMyPXN0YXRpYyB2b2lkIGl3bF9wYXJzZV9kYmdfdGx2X2Fzc2VydF90YWJsZXMoc3RydWN0IGl3bF9kcnYgKmRydixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy03OTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzo3OTI6c3RhdGljIGludCBpd2xfcGFyc2VfdGx2X2Zpcm13YXJlKHN0cnVjdCBpd2xfZHJ2ICpkcnYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy03OTMtXHRcdFx0XHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKnVjb2RlX3Jhdyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz0xNjQ0PXN0YXRpYyB2b2lkIGl3bF9yZXFfZndfY2FsbGJhY2soY29uc3Qgc3RydWN0IGZpcm13YXJlICp1Y29kZV9yYXcsIHZvaWQgKmNvbnRleHQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTY5My1cdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjE2OTQ6XHRcdGVyciA9IGl3bF9wYXJzZV90bHZfZmlybXdhcmUoZHJ2LCB1Y29kZV9yYXcsIHBpZWNlcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE2OTUtXHRcdFx0XHRcdCAgICAgXHUwMDI2ZnctXHUwMDNldWNvZGVfY2FwYSwgXHUwMDI2dXNuaWZmZXJfaW1hZ2VzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxOTo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjMwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGaXJtd2FyZSBMb2FkaW5nIFByb2Nlc3MqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgaXdsX3JlcV9md19jYWxsYmFja2AgZnVuY3Rpb24uIEZyb20gd2hhdCBJIHVuZGVyc3RhbmQsIHRoaXMgaXMgdGhlIGNhbGxiYWNrIHRoYXQgZ2V0cyB0cmlnZ2VyZWQgd2hlbiBmaXJtd2FyZSBpcyBzdWNjZXNzZnVsbHkgbG9hZGVkIGZvciBhbiBJbnRlbCB3aXJlbGVzcyBkZXZpY2UsIHJpZ2h0PyBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIEZpcm13YXJlIGxvYWRpbmcgaXMgYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBib290IHByb2Nlc3MgYW5kIGRyaXZlciBpbml0aWFsaXphdGlvbi4KCkJ1dCB3YWl0LCB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgKmNhbGxlZCogd2hlbiBmaXJtd2FyZSBpcyAqcmVxdWVzdGVkKi4gQW5kIGZpcm13YXJlIGlzIG9ubHkgcmVxdWVzdGVkIGR1cmluZyB0aGUgKnByb2JpbmcqIHN0YWdlIG9mIHRoZSBkZXZpY2UuIFNvLCB0aGUgcmVnaXN0cmF0aW9uIG9mIHRoaXMgYGl3bF9yZXFfZndfY2FsbGJhY2tgIGZ1bmN0aW9uIGlzIGNsZWFybHkgaW1wb3J0YW50IHRvIHRoZSBwcm9wZXIgb3BlcmF0aW9uIG9mIHRoZSBkcml2ZXIuCgpUaGVyZWZvcmUsIEkgbmVlZCB0byBmaWd1cmUgb3V0ICp3aGVyZSogdGhpcyBgaXdsX3JlcV9md19jYWxsYmFja2AgaXMgYmVpbmcgcmVnaXN0ZXJlZCBpbiB0aGUga2VybmVsIGNvZGUuIFVuZGVyc3RhbmRpbmcgaXRzIHJlZ2lzdHJhdGlvbiBsb2NhdGlvbiB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBmaXJtd2FyZSBsb2FkaW5nIGFyY2hpdGVjdHVyZSBhbmQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQgd2l0aGluIHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIExldCYjMzk7cyBzZWUgaWYgSSBjYW4gdHJhY2UgdGhhdCBkb3duLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3JlcV9md19jYWxsYmFjayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9MjkzPUlXTF9FWFBPUlRfU1lNQk9MKGl3bF9kcnZfZ2V0X2Z3bmFtZV9wcmUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMjk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6Mjk1OnN0YXRpYyB2b2lkIGl3bF9yZXFfZndfY2FsbGJhY2soY29uc3Qgc3RydWN0IGZpcm13YXJlICp1Y29kZV9yYXcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0yOTYtXHRcdFx0XHR2b2lkICpjb250ZXh0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz0zMjU9c3RhdGljIGludCBpd2xfcmVxdWVzdF9maXJtd2FyZShzdHJ1Y3QgaXdsX2RydiAqZHJ2LCBib29sIGZpcnN0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTM4NS1cdFx0XHRcdCAgICAgICBkcnYtXHUwMDNldHJhbnMtXHUwMDNlZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6Mzg2Olx0XHRcdFx0ICAgICAgIEdGUF9LRVJORUwsIGRydiwgaXdsX3JlcV9md19jYWxsYmFjayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0zODctfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTE2MjE9c3RhdGljIHZvaWQgX2l3bF9vcF9tb2RlX3N0b3Aoc3RydWN0IGl3bF9kcnYgKmRydilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xNjM4LS8qXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoxNjM5OiAqIGl3bF9yZXFfZndfY2FsbGJhY2sgLSBjYWxsYmFjayB3aGVuIGZpcm13YXJlIHdhcyBsb2FkZWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE2NDAtICpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xNjQzLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6MTY0NDpzdGF0aWMgdm9pZCBpd2xfcmVxX2Z3X2NhbGxiYWNrKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqdWNvZGVfcmF3LCB2b2lkICpjb250ZXh0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTY0NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtNDgtICogICAgKGl3bF9kcnZfc3RhcnQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaDo0OTogKiA2KSBpd2xfZHJ2X3N0YXJ0IGZldGNoZXMgdGhlIGZ3IEFTWU5DLCBpd2xfcmVxX2Z3X2NhbGxiYWNrXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaDo1MDogKiA3KSBpd2xfcmVxX2Z3X2NhbGxiYWNrIHBhcnNlcyB0aGUgZncgZmlsZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6NTE6ICogOCkgaXdsX3JlcV9md19jYWxsYmFjayBzdGFydHMgdGhlIHdpZmkgaW1wbGVtZW50YXRpb24gdG8gbWF0Y2hlcyB0aGUgZndcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTUyLSAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyNjIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRob3NlIHRob3VnaHRzIGZyb20gYSBmaXJzdC1wZXJzb24sIGV4cGVydCBwZXJzcGVjdGl2ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgSW50ZWwgV2lyZWxlc3MgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IG1pbmQgaXMgaW1tZWRpYXRlbHkgZHJhd24gdG8gdGhlIEludGVsIFdpcmVsZXNzIGRyaXZlciBzdGFydHVwIHNlcXVlbmNlLCBzcGVjaWZpY2FsbHkgYGl3bF9kcnZfc3RhcnRgLiAqVGhhdCogZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGZldGNoaW5nIHRoZSBmaXJtd2FyZSwgd2hpY2ggaXMgYSBjcnVjaWFsIGZpcnN0IHN0ZXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgaW5pdGlhdGlvbiBvY2N1cnMuIFNvLCB3aGVyZSBpbiB0aGUgY29kZSBpcyBgaXdsX2Rydl9zdGFydGAgYWN0dWFsbHkgKmNhbGxlZCo/IEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBncmFwaCB0byBzZWUgd2hhdCBldmVudHMgb3IgZnVuY3Rpb25zIHRyaWdnZXIgdGhpcyBjcml0aWNhbCBzdGVwLiBUaGF0IHdpbGwgaGVscCBtZSBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gZmxvdyBhbmQgaWRlbnRpZnkgcG90ZW50aWFsIGFyZWFzIGZvciBvcHRpbWl6YXRpb24sIG9yIHBlcmhhcHMgZXZlbiBkZWJ1Z2dpbmcgaWYgSSYjMzk7bSBsb29raW5nIGF0IGFuIGlzc3VlLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHN0YWNrIGFyb3VuZCBgaXdsX2Rydl9zdGFydGAgaXMgdml0YWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9kcnZfc3RhcnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTE2NDQ9c3RhdGljIHZvaWQgaXdsX3JlcV9md19jYWxsYmFjayhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKnVjb2RlX3Jhdywgdm9pZCAqY29udGV4dClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xOTU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6MTk2MDpzdHJ1Y3QgaXdsX2RydiAqaXdsX2Rydl9zdGFydChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE5NjEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTQ3LSAqIDUpIFRoZSBidXMgc3BlY2lmaWMgY29tcG9uZW50IGNhbGxzIHRvIHRoZSBkcnYgYnVzIGFnbm9zdGljIHBhcnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oOjQ4OiAqICAgIChpd2xfZHJ2X3N0YXJ0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6NDk6ICogNikgaXdsX2Rydl9zdGFydCBmZXRjaGVzIHRoZSBmdyBBU1lOQywgaXdsX3JlcV9md19jYWxsYmFja1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtNTAtICogNykgaXdsX3JlcV9md19jYWxsYmFjayBwYXJzZXMgdGhlIGZ3IGZpbGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaD01Nj1zdHJ1Y3QgaXdsX3JmX2NmZztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTU3LS8qKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6NTg6ICogaXdsX2Rydl9zdGFydCAtIHN0YXJ0IHRoZSBkcnZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTU5LSAqXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtNjctICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaDo2ODpzdHJ1Y3QgaXdsX2RydiAqaXdsX2Rydl9zdGFydChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC02OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM9NDIzMj1pbnQgaXdsX3BjaV9nZW4xXzJfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTQzNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM6NDM2ODpcdGl3bF90cmFucy1cdTAwM2VkcnYgPSBpd2xfZHJ2X3N0YXJ0KGl3bF90cmFucyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtNDM2OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODE5OAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDM5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBQQ0kgRnV6emluZyBEaWxlbW1hKioKCk9rYXksIHNvIGBpd2xfcGNpX2dlbjFfMl9wcm9iZWAgY2FsbHMgYGl3bF9kcnZfc3RhcnRgLiBSaWdodCwgdGhpcyBpcyBhIFBDSSBkcml2ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gSSBmdXp6IHRoaXMgd2l0aCBzeXprYWxsZXI/IFN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgKmdlbmVyaWMqIFBDSSBmdXp6ZXIgdGhhdCBjYW4gcHJvYmUgYW55IFBDSSBkZXZpY2UsIEkga25vdyB0aGF0IG11Y2guIEJ1dCB3YWl0Li4uIGRpZG4mIzM5O3QgdGhleSBhZGQgc29tZXRoaW5nIGZvciBQQ0kgYSB3aGlsZSBiYWNrPyBJIHNob3VsZCBjaGVjayBpZiB0aGVyZSYjMzk7cyAqYW55KiBQQ0kgZnV6emluZyBjYXBhYmlsaXR5LiBBaCwgYnV0IHRoZSBwcm9tcHQgZG9lcyBzYXkgc29tZXRoaW5nIGFib3V0IGNvZGUgcGF0aHMgYmVpbmcgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6YXRpb24sIGVzcGVjaWFsbHkgd2hlbiB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4KCk9rYXksIHNvIGRvZXMgc3l6a2FsbGVyICplbXVsYXRlKiBQQ0kgZGV2aWNlcz8gTm8sIHRoYXQmIzM5O3MgcmlnaHQuIEl0IHVzZXMgYGR1bW15X2hjZGAgKHVzYiBnYWRnZXQpIGZvciBVU0IuIEJ1dCBmb3IgUENJLCB0aGVyZSYjMzk7cyBubyBgZHVtbXlfcGNpYCBlcXVpdmFsZW50IGluIHRoZSBrZXJuZWwgdG8gYWxsb3cgaW5qZWN0aW5nIGFyYml0cmFyeSBQQ0kgZGV2aWNlcy4gCgpIYW5nIG9uLi4uIHdoYXQgYWJvdXQgYHZmaW9gIG9yIGBwY2lfZW5kcG9pbnRfdGVzdGA/IENvdWxkIHRob3NlIGJlIHVzZWZ1bCBoZXJlPyBMZXQmIzM5O3MgZ28gYmFjayBhbmQgZXhwbGljaXRseSBzZWFyY2ggZm9yIFBDSSBmdXp6aW5nIGluIHN5emthbGxlci4gRGlkIEkgY29uZnVzZSBpdCB3aXRoIGBzeXpfcGNpX2RldmljZWAgb3Igc29tZXRoaW5nPyBObywgdGhhdCYjMzk7cyBub3QgaXQsIHN5emthbGxlciAqZG9lcyogaGF2ZSB0aGluZ3MgbGlrZSBgc3l6X3VzYl9jb25uZWN0YCwgYHN5el91c2JfZGlzY29ubmVjdGAsIGBzeXpfdXNiX2NvbnRyb2xfaW9gLi4uIGJ1dCBub3RoaW5nIGRpcmVjdGx5IGVxdWl2YWxlbnQgZm9yIFBDSS4gCgpXYWl0LCB3YWl0Li4uIHdoYXQgYWJvdXQgYG1hYzgwMjExX2h3c2ltYD8gVGhhdCYjMzk7cyBhIHNvZnR3YXJlIHNpbXVsYXRvciBmb3IgV2ktRmksIGJ1dCBpdCYjMzk7cyBub3QgYWN0dWFsbHkgdGhlIGBpd2x3aWZpYCBkcml2ZXIsIGlzIGl0PyBDb3VsZCBJIHJlYWNoIHRoaXMgc3BlY2lmaWMgY29kZSwgYGl3bHdpZmlgPyBJIG5lZWQgdG8gY2hlY2sgaWYgYGl3bHdpZmlgIGl0c2VsZiBoYXMgYW55IHZpcnR1YWwgb3Igc2ltdWxhdGVkIG1vZGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxOTo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hYzgwMjExX2h3c2ltJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwNDAKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBNaXNzaW5nIExpbmsqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIHRocm91Z2ggdGhlIGBpd2x3aWZpYCBrZXJuZWwgbW9kdWxlIGFuZCBJJiMzOTttIG5vdCBzZWVpbmcgYW55IHJlZmVyZW5jZXMsIG5vdCBhIHNpbmdsZSBtZW50aW9uLCBvZiBgbWFjODAyMTFfaHdzaW1gLiBUaGF0JiMzOTtzLi4uIHVudXN1YWwuIEdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggd2lyZWxlc3MgZHJpdmVycywgZXNwZWNpYWxseSB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCwgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCBzb21lIGluZGljYXRpb24gb2YgaW50ZXJhY3Rpb24sIHBlcmhhcHMgYSBicmlkZ2luZyBwb2ludCwgaWYgdGhlcmUgd2FzIGEgdGVzdGluZyBvciBzaW11bGF0aW9uIGRyaXZlciB0aWVkIGluLgoKTXkgaW1tZWRpYXRlIGh5cG90aGVzaXMgaXMgdGhhdCB0aGVyZSBtaWdodCBiZSBhIGRlZGljYXRlZCB0ZXN0IG9yICYjMzQ7ZHVtbXkmIzM0OyBkcml2ZXIsIHBlcmhhcHMgb25lIHVzZWQgaW50ZXJuYWxseSB3aXRoaW4gYGl3bHdpZmlgLCBvciBwZXJoYXBzIGEgc2VwYXJhdGUgbW9kdWxlIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBzaW11bGF0ZSB0aGUgaGFyZHdhcmUgaW50ZXJhY3Rpb24gZm9yIHRlc3RpbmcgcHVycG9zZXMuIEl0JiMzOTtzIHRpbWUgdG8gYnJvYWRlbiB0aGUgc2VhcmNoLiBJIG5lZWQgdG8gcGl2b3QgYW5kIGV4cGxvcmUgdGhlIHN1cnJvdW5kaW5nIGNvZGUsIHRoZSBidWlsZCBpbmZyYXN0cnVjdHVyZSwgYW5kIGFueSBleGlzdGluZyBkb2N1bWVudGF0aW9uIGZvciBgaXdsd2lmaWAgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFuIGFsdGVybmF0aXZlIGFwcHJvYWNoIHRvIHRlc3Rpbmcgb3Igc2ltdWxhdGluZyBpdHMgaGFyZHdhcmUuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYWJvdXQgZmluZGluZyBgbWFjODAyMTFfaHdzaW1gIGRpcmVjdGx5OyBpdCYjMzk7cyBhYm91dCB1bmRlcnN0YW5kaW5nIGhvdyB0aGV5ICp3b3VsZCogdGVzdCB0aGlzIHRoaW5nIGlmIHRoZXkgKmRpZG4mIzM5O3QqIHVzZSBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHVtbXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWZoLmgtMzAtICogRHJpdmVyIG11c3QgYWxsb2NhdGUgYSA0S0J5dGUgYnVmZmVyIHRoYXQgaXMgZm9yIGtlZXBpbmcgdGhlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1maC5oOjMxOiAqIGhvc3QgRFJBTSBwb3dlcmVkIG9uICh2aWEgZHVtbXkgYWNjZXNzZXMgdG8gRFJBTSkgdG8gbWFpbnRhaW4gbG93LWxhdGVuY3lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWZoLmg6MzI6ICogRFJBTSBhY2Nlc3Mgd2hlbiBkb2luZyBUeGluZyBvciBSeGluZy4gIFRoZSBkdW1teSBhY2Nlc3NlcyBwcmV2ZW50IGhvc3RcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWZoLmgtMzMtICogZnJvbSBnb2luZyBpbnRvIGEgcG93ZXItc2F2aW5ncyBtb2RlIHRoYXQgd291bGQgY2F1c2UgaGlnaGVyIERSQU0gbGF0ZW5jeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1udm0tcGFyc2UuYz0xNzEyPWl3bF9wYXJzZV9udm1fbWNjX2luZm8oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtbnZtLXBhcnNlLmMtMTc1OS1cdCAqIHNpbmNlIGNmZzgwMjExIGRvZXNuJiMzOTt0IGFjY2VwdCBhbiBlbXB0eSByZWdkb21haW4sIHdlIG5lZWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLW52bS1wYXJzZS5jOjE3NjA6XHQgKiB0byBhbGxvY2F0ZSBzcGFjZSBmb3IgYXQgbGVhc3Qgb25lIHJ1bGUgdG8gYWRkIGEgZHVtbXlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLW52bS1wYXJzZS5jLTE3NjEtXHQgKiAodW51c2FibGUpIHJ1bGUgaW4gdGhpcyBjYXNlIHNvIHdlIGNhbiBpbml0LlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLW52bS1wYXJzZS5jLTE4MzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1udm0tcGFyc2UuYzoxODM3Olx0LyogSWYgbm8gdmFsaWQgcnVsZXMgd2VyZSBmb3VuZCwgYWRkIGEgZHVtbXkgcnVsZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtbnZtLXBhcnNlLmMtMTgzOC1cdGlmICghdmFsaWRfcnVsZXMpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jPTI0MDg9aXdsX21sZF9jaGFubmVsX3N3aXRjaChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jLTI0MTktXHRJV0xfREVCVUdfTUFDODAyMTEobWxkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYzoyNDIwOlx0XHRcdCAgIFwmIzM0O2R1bW15IGNoYW5uZWwgc3dpdGNoIG9wXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmMtMjQyMS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vY29leC5jPTE2PXN0YXRpYyBjb25zdCBfX2xlNjQgaXdsX2NpX21hc2tbXVszXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2NvZXguYzoxNzpcdC8qIGR1bW15IGVudHJ5IGZvciBjaGFubmVsIDAgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2NvZXguYy0xOC1cdHtjcHVfdG9fbGU2NCgwKSwgY3B1X3RvX2xlNjQoMCksIGNwdV90b19sZTY0KDApfSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jPTUzNzA9dm9pZCBpd2xfbXZtX2NoYW5uZWxfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmMtNTM3OS1cdElXTF9ERUJVR19NQUM4MDIxMShJV0xfTUFDODAyMTFfR0VUX01WTShodyksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jOjUzODA6XHRcdFx0ICAgXCYjMzQ7ZHVtbXkgY2hhbm5lbCBzd2l0Y2ggb3BcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYy01MzgxLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvY3R4dC1pbmZvLXYyLmM9MTAwPWludCBpd2xfcGNpZV9jdHh0X2luZm9fdjJfYWxsb2Moc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2N0eHQtaW5mby12Mi5jLTIwMS1cdCAqIFdlIGFsc28gdXNlIHRoZSBzZWNvbmQgaGFsZiBvZiB0aGlzIHBhZ2UgdG8gZ2l2ZSB0aGUgZGV2aWNlIHNvbWVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9jdHh0LWluZm8tdjIuYzoyMDI6XHQgKiBkdW1teSBUUi9DUiB0YWlsIHBvaW50ZXJzIC0gd2hpY2ggc2hvdWxkbiYjMzk7dCBiZSBuZWNlc3NhcnkgYXMgd2UgZG9uJiMzOTt0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvY3R4dC1pbmZvLXYyLmMtMjAzLVx0ICogdXNlIHRoaXMsIGJ1dCB0aGUgaGFyZHdhcmUgc3RpbGwgcmVhZHMvd3JpdGVzIHRoZXJlIGFuZCB3ZSBjYW4mIzM5O3QgbGV0XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jPTM4MDA9aXdsX3RyYW5zX3BjaWVfYWxsb2Moc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTM4NzgtXHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYzozODc5Olx0dHJhbnNfcGNpZS1cdTAwM2VuYXBpX2RldiA9IGFsbG9jX25ldGRldl9kdW1teShzaXplb2Yoc3RydWN0IGl3bF90cmFuc19wY2llICopKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0zODgwLVx0aWYgKCF0cmFuc19wY2llLVx1MDAzZW5hcGlfZGV2KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNzAzCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgaXdsd2lmaSBEcml2ZXIgYW5kIEZpcm13YXJlIFBhcnNpbmcqKgoKT2theSwgc28gdGhlcmUmIzM5O3Mgbm8gd2F5IHRvIHRyaWNrIHRoZSBzeXN0ZW0gaW50byB0aGlua2luZyB0aGVyZSYjMzk7cyBhbiBpd2x3aWZpIGNhcmQgcHJlc2VudCB3aGVuIHRoZXJlIGlzbiYjMzk7dCwgcmlnaHQ/IFdhaXQuLi4gaXMgdGhlcmUgYSB3YXkgdG8gZm9yY2UgdGhlIGRyaXZlciB0byBsb2FkIGFuZCwgY3J1Y2lhbGx5LCB0cmlnZ2VyIHRoYXQgZmlybXdhcmUgcGFyc2luZyBldmVuIHdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlPyBUaGF0JiMzOTtzIHRoZSByZWFsIHF1ZXN0aW9uLgoKSSByZW1lbWJlciB0aGUgZHJpdmVyIHJlZ2lzdGVycyBhcyBhIFBDSSBkcml2ZXIuIFRoZSBwcm9iZSBmdW5jdGlvbiBpcyBzb21ldGhpbmcgbGlrZSBgaXdsX3BjaV9nZW4xXzJfcHJvYmVgLiBOYXR1cmFsbHksIHdpdGhvdXQgdGhlIGhhcmR3YXJlLCB0aGF0IHByb2JlIGZ1bmN0aW9uICpuZXZlciogZ2V0cyBjYWxsZWQuIEFuZCBpZiB0aGF0JiMzOTtzIG5ldmVyIGNhbGxlZCwgYGl3bF9kcnZfc3RhcnRgIGlzIG5ldmVyIGNhbGxlZC4gV2hpY2ggbWVhbnMgZmlybXdhcmUgaXNuJiMzOTt0IHJlcXVlc3RlZC4gVGhlcmVmb3JlIGBpd2xfcmVxX2Z3X2NhbGxiYWNrYCBuZXZlciBoYXBwZW5zLiBDb25zZXF1ZW50bHkgYGl3bF9wYXJzZV90bHZfZmlybXdhcmVgIGlzIG5ldmVyIHJlYWNoZWQuCgpTbywgaW4gYSBwdXJlbHkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIHdpdGhvdXQgc3BlY2lmaWMgSW50ZWwgV2ktRmkgaGFyZHdhcmUsIG15IG1vZGlmaWVkIGNvZGUgaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZS4gVGhhdCYjMzk7cyBhIHNvbGlkIGNvbmNsdXNpb24uCgpIb3dldmVyLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4uLiBpcyB0aGVyZSAqYW55KiBvdGhlciBwb3NzaWJsZSBwYXRoIHRvIGBpd2xfcGFyc2VfdGx2X2Zpcm13YXJlYD8gSXQmIzM5O3MgdGltZSB0byBjaGVjayBpZiB0aGF0IGZ1bmN0aW9uIGlzIGV4cG9ydGVkLCBvciBpZiBpdCBpcyBjYWxsZWQgZnJvbSBhbnl3aGVyZSBlbHNlIGluIHRoZSBjb2RlIGJhc2UuIExldCYjMzk7cyBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IG90aGVyIGhvb2sgdGhhdCBjb3VsZCB0cmlnZ2VyIHRoaXMgcGFydCBvZiB0aGUgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3BhcnNlX3Rsdl9maXJtd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9NzMyPXN0YXRpYyB2b2lkIGl3bF9wYXJzZV9kYmdfdGx2X2Fzc2VydF90YWJsZXMoc3RydWN0IGl3bF9kcnYgKmRydixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy03OTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzo3OTI6c3RhdGljIGludCBpd2xfcGFyc2VfdGx2X2Zpcm13YXJlKHN0cnVjdCBpd2xfZHJ2ICpkcnYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy03OTMtXHRcdFx0XHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKnVjb2RlX3Jhdyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz0xNjQ0PXN0YXRpYyB2b2lkIGl3bF9yZXFfZndfY2FsbGJhY2soY29uc3Qgc3RydWN0IGZpcm13YXJlICp1Y29kZV9yYXcsIHZvaWQgKmNvbnRleHQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTY5My1cdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjE2OTQ6XHRcdGVyciA9IGl3bF9wYXJzZV90bHZfZmlybXdhcmUoZHJ2LCB1Y29kZV9yYXcsIHBpZWNlcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE2OTUtXHRcdFx0XHRcdCAgICAgXHUwMDI2ZnctXHUwMDNldWNvZGVfY2FwYSwgXHUwMDI2dXNuaWZmZXJfaW1hZ2VzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE2MTIKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyB0aGUgY29udGV4dCBpcyBteSBhcmVhIG9mIGV4cGVydGlzZToKCioqRmlybXdhcmUgTG9hZGluZyBJbnF1aXJ5KioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzLiBJIHNlZSB0aGF0IHRoaXMgYGl3bF9yZXFfZndfY2FsbGJhY2tgIGZ1bmN0aW9uIGlzIHRoZSBvbmx5IGNhbGxlciwgd2hpY2ggbWFrZXMgdGhlIGNvbnRyb2wgZmxvdyBhIGxvdCBzaW1wbGVyLCBidXQgSSBjYW4mIzM5O3Qgc2hha2UgdGhlIG5hZ2dpbmcgZmVlbGluZyB0aGF0IHRoZXJlJiMzOTtzIGFub3RoZXIgcG9pbnQgb2YgZW50cnkuIFNvbWV0aGluZyBsaWtlIGBpd2xfYWNwaV9nZXRfd2dkc190YWJsZWAga2VlcHMgcG9wcGluZyBpbnRvIG1pbmQsIGNvdWxkIHRoaXMgaW1wYWN0IHRoZSB3aG9sZSBmaXJtd2FyZSBsb2FkaW5nIGFzIHdlbGw/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9hY3BpX2dldF93Z2RzX3RhYmxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYz02Mzk9aW50IGl3bF9hY3BpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYy04MDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYzo4MDQ6aW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jLTgwNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg9MTgzPWludCBpd2xfYWNwaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmgtMTg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg6MTg1OmludCBpd2xfYWNwaV9nZXRfd2dkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmgtMTg2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oPTIzND1zdGF0aWMgaW5saW5lIGludCBpd2xfYWNwaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmgtMjM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg6MjM5OnN0YXRpYyBpbmxpbmUgaW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTI0MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMjc3CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipUcmFjaW5nIHRoZSBgaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGVgIENhbGwgU2l0ZSoqCgpBbHJpZ2h0LCBzbyB0aGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGJ1enppbmcgaW4gbXkgaGVhZCBpczogd2hlcmUgZXhhY3RseSBpcyB0aGlzIGBpd2xfYWNwaV9nZXRfd2dkc190YWJsZWAgZnVuY3Rpb24gYmVpbmcgaW52b2tlZD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuIEtub3dpbmcgdGhlIGNhbGwgc2l0ZXMgaXMgY3J1Y2lhbC4gSXMgaXQgcGFydCBvZiB0aGUgaW5pdGlhbCBkcml2ZXIgcHJvYmUsIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24/IE9yIG1heWJlIGl0JiMzOTtzIHRyaWdnZXJlZCBieSBzb21lIGxhdGVyIGV2ZW50LCBsaWtlIGEgcG93ZXIgbWFuYWdlbWVudCB0cmFuc2l0aW9uIG9yIGFuIEFDUEkgbm90aWZpY2F0aW9uPwoKSSYjMzk7bSB0aGlua2luZyBJJiMzOTtsbCBzdGFydCBieSBkb2luZyBhIHF1aWNrIGNvZGUgc2VhcmNoLCBsaWtlbHkgd2l0aCBgZ3JlcGAgb3Igc2ltaWxhciwgdG8gaWRlbnRpZnkgdGhlIHNvdXJjZSBmaWxlcyB0aGF0IHJlZmVyZW5jZSB0aGlzIGZ1bmN0aW9uLiBPbmNlIEkgaGF2ZSB0aGUgZmlsZSBsaXN0LCBJIGNhbiB0aGVuIGRvIGEgbW9yZSBpbi1kZXB0aCBhbmFseXNpcyBvZiB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBncmFzcCBpdHMgcHVycG9zZS4gTXkgcHJpbWFyeSBnb2FsIGhlcmUgaXMgdG8gZXN0YWJsaXNoIHRoZSBjb250cm9sIGZsb3cgYW5kIGRldGVybWluZSB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGlzIGZ1bmN0aW9uIGV4ZWN1dGVzLiBLbm93aW5nIHRoZSBjYWxsIGNoYWluIGlzIGtleSB0byBkZWJ1Z2dpbmcgb3IgbW9kaWZ5aW5nIGl0cyBiZWhhdmlvci4gSSBleHBlY3QgdG8gYmUgYWJsZSB0byBxdWlja2x5IGRldGVybWluZSBob3cgdG8gdHJhY2UgdGhlIGNhbGxzLCBieSB1c2luZyBhIGRlYnVnZ2VyIG9yIHNpbWlsYXIgdG9vbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9hY3BpX2dldF93Z2RzX3RhYmxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYz02Mzk9aW50IGl3bF9hY3BpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYy04MDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYzo4MDQ6aW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jLTgwNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg9MTgzPWludCBpd2xfYWNwaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmgtMTg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg6MTg1OmludCBpd2xfYWNwaV9nZXRfd2dkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmgtMTg2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oPTIzND1zdGF0aWMgaW5saW5lIGludCBpd2xfYWNwaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmgtMjM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg6MjM5OnN0YXRpYyBpbmxpbmUgaW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTI0MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMDQ2CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqQ2hlY2tpbmcgZm9yIFVuZXhwZWN0ZWQgQ2FsbHMqKgoKSG9sZCBvbiBhIHNlY29uZCwgYW0gSSByZWFkaW5nIHRoaXMgcmlnaHQ/IFRoaXMgc3BlY2lmaWMgdGhpbmcgaXNuJiMzOTt0IHJlZmVyZW5jZWQgKmFueXdoZXJlKiBlbHNlIGluIHRoZSBjb2RlYmFzZT8gVGhhdCBzZWVtcy4uLnVudXN1YWwuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYSBjcm9zcy1yZWZlcmVuY2Ugc29tZXdoZXJlLiBJdCYjMzk7cyBlYXN5IHRvIG92ZXJsb29rIHRoaW5ncyBpbiB0aGVzZSBsYXJnZSBkcml2ZXIgbW9kdWxlcy4KClJpZ2h0LCBsZXQgbWUgZG91YmxlLWNoZWNrLiBJJiMzOTttIGdvaW5nIHRvIHNjYW4gdGhlIGVudGlyZSBwcm9qZWN0IHRvIGNvbmZpcm0gd2hldGhlciB0aGlzIGNvZGUgcGF0aCBpcyBpbnZva2VkIG9yIHBlcmhhcHMgaGFzIGFuIGluZGlyZWN0IGRlcGVuZGVuY3kgdGhhdCBJJiMzOTttIG5vdCBpbW1lZGlhdGVseSBjb25zaWRlcmluZywgb3IgZXZlbiBpZiBpdCBpcyBjYWxsZWQgZnJvbSBvdXRzaWRlIHRoZSBgaXdsd2lmaWAgbW9kdWxlLiBOZWVkIHRvIGVuc3VyZSBubyBleHRlcm5hbCBjb21wb25lbnRzIGFyZSBpbnRlcmFjdGluZyB3aXRoIGl0IHVuZXhwZWN0ZWRseS4gSXQgd291bGQgYmUgYSBzaWduaWZpY2FudCBvdmVyc2lnaHQgaWYgc28uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9hY3BpX2dldF93Z2RzX3RhYmxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jPTYzOT1pbnQgaXdsX2FjcGlfZ2V0X2V3cmRfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jLTgwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jOjgwNDppbnQgaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmMtODA1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaD0xODM9aW50IGl3bF9hY3BpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaC0xODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaDoxODU6aW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaC0xODYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg9MjM0PXN0YXRpYyBpbmxpbmUgaW50IGl3bF9hY3BpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaC0yMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaDoyMzk6c3RhdGljIGlubGluZSBpbnQgaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmgtMjQwLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM3MjkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVidWdnaW5nIGEgU3VzcGVjdCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGZ1bmN0aW9uLCB3aGF0ZXZlciBpdCBpcywgaXMgYWN0dWFsbHkgKnVzZWQqLiBNeSBpbml0aWFsIGdyZXAgc2VhcmNoIGRpZG4mIzM5O3QgdHVybiB1cCBhbnkgZGlyZWN0IGNhbGxzIHRvIGl0IOKAkyB0aGF0JiMzOTtzIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBlZCBvdXQgYXQgbWUuIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7V2FpdCwgaXMgaXQgbm90IGJlaW5nIGNhbGxlZCAqYW55d2hlcmUqPyBUaGF0IGNhbiYjMzk7dCBiZSByaWdodCEmIzM0OwoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gYnJvYWRlbiBteSBzZWFyY2guIEl0IGNvdWxkIGJlIGNhbGxlZCBieSBhbm90aGVyIGZ1bmN0aW9uIG9yIG1hY3JvLCBzbyBhIHNpbXBsZSBncmVwIG1pZ2h0IG1pc3MgaXQuIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBJJiMzOTttIGdvaW5nIHRvIGNoZWNrIHRoZSBtb3JlIG9idmlvdXMgcGxhY2VzIHdoZXJlIHRoaXMga2luZCBvZiBmdW5jdGlvbiBtaWdodCBiZSB1c2VkLiBJIHNob3VsZCBzdGFydCB3aXRoIGBpd2xfYWNwaV9nZXRfd2dkc190YWJsZWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmNgIG9yIG90aGVyIHNpbWlsYXIgZmlsZXMgdG8gYmUgc3VyZS4KCkJ1dCBpZiB0aGVyZSBpcyBubyBjYWxscyB0byB0aGF0IGZ1bmN0aW9uLCB0aGVuIGl0IG5lZWRzIHRvIGJlIGtub3duIGhvdyBpdCBpcyB1c2VkLiBJJiMzOTttIHN0YXJ0aW5nIHRvIGNvbnNpZGVyIG90aGVyIHBvc3NpYmlsaXRpZXM7IGlzIGl0IGJlaW5nIGFjY2Vzc2VkIHZpYSBhIGZ1bmN0aW9uIHBvaW50ZXI/IElmIHRoYXQmIzM5O3MgdGhlIGNhc2UsIGEgZGlyZWN0IGdyZXAgb24gdGhlIGZ1bmN0aW9uIG5hbWUgd29uJiMzOTt0IHdvcmsuIFRoZSBmdW5jdGlvbiB3b3VsZCBiZSBjYWxsZWQgaW5kaXJlY3RseS4KCkFscmlnaHQsIHRpbWUgdG8gc2hpZnQgZ2VhcnMgYW5kIGNoZWNrIGZvciB0aGUgaW5kaXJlY3QgdXNlLiBJIHNob3VsZCBsb29rIGludG8gdGhlIHNvdXJjZSBmaWxlcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuY2AgYW5kIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jYCwgd2hlcmUgZnVuY3Rpb24gcG9pbnRlcnMgbWlnaHQgYmUgdXNlZC4gSG9wZWZ1bGx5LCB0aGlzIGFwcHJvYWNoIHdpbGwgcmV2ZWFsIGhvdyB0aGUgZnVuY3Rpb24gaXMgaW52b2tlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7d2dkcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmM9NjM5PWludCBpd2xfYWNwaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmMtODAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmM6ODA0OmludCBpd2xfYWNwaV9nZXRfd2dkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYy04MDUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oPTE4Mz1pbnQgaXdsX2FjcGlfZ2V0X2V3cmRfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTE4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oOjE4NTppbnQgaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTE4Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaD0yMzQ9c3RhdGljIGlubGluZSBpbnQgaXdsX2FjcGlfZ2V0X2V3cmRfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTIzOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oOjIzOTpzdGF0aWMgaW5saW5lIGludCBpd2xfYWNwaV9nZXRfd2dkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaC0yNDAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jPTM0PUlXTF9CSU9TX1RBQkxFX0xPQURFUihld3JkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jOjM1OklXTF9CSU9TX1RBQkxFX0xPQURFUih3Z2RzX3RhYmxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jLTM2LUlXTF9CSU9TX1RBQkxFX0xPQURFUihwcGFnX3RhYmxlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuaD0yMDc9aW50IGl3bF9iaW9zX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuaC0yMDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuaDoyMDk6aW50IGl3bF9iaW9zX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuaC0yMTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9NTM5PWludCBpd2xfdWVmaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NTkzOmludCBpd2xfdWVmaV9nZXRfd2dkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01OTQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NTk1Olx0c3RydWN0IHVlZmlfY252X3Zhcl93Z2RzICpkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTk2LVx0dW5zaWduZWQgbG9uZyBleHBlY3RlZF9zaXplO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oPTEzMD1zdHJ1Y3QgdWVmaV9jbnZfdmFyX2V3cmQge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE0NS0vKipcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjE0NjogKiBzdHJ1Y3QgdWVmaV9jbnZfdmFyX3dnZHMgLSBXR0RTIHRhYmxlIGFzIGRlZmluZWQgaW4gVUVGSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTQ3LSAqIEByZXZpc2lvbjogdGhlIHJldmlzaW9uIG9mIHRoZSB0YWJsZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE1NS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjE1NjpzdHJ1Y3QgdWVmaV9jbnZfdmFyX3dnZHMge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTU3LVx0dTggcmV2aXNpb247XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTY5LSNkZWZpbmUgVUVGSV9XR0RTX1RBQkxFX1NJWkVfUkVWM1x0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjE3MDpcdChvZmZzZXRvZihzdHJ1Y3QgdWVmaV9jbnZfdmFyX3dnZHMsIHZhbHMpICYjNDM7XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xNzEtXHQgVUVGSV9XR0RTX1BST0ZJTEVfU0laRV9SRVYzICogQklPU19HRU9fTUFYX1BST0ZJTEVfTlVNKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE3My0jZGVmaW5lIFVFRklfV0dEU19UQUJMRV9TSVpFX1JFVjRcdFx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxNzQ6XHQob2Zmc2V0b2Yoc3RydWN0IHVlZmlfY252X3Zhcl93Z2RzLCB2YWxzKSAmIzQzO1x0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTc1LVx0IFVFRklfV0dEU19QUk9GSUxFX1NJWkVfUkVWNCAqIEJJT1NfR0VPX01BWF9QUk9GSUxFX05VTSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaD0zMzQ9aW50IGl3bF91ZWZpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDozMzU6aW50IGl3bF91ZWZpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0zMzYtaW50IGl3bF91ZWZpX2dldF9wcGFnX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg9MzkxPXN0YXRpYyBpbmxpbmUgaW50IGl3bF91ZWZpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0zOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDozOTY6c3RhdGljIGlubGluZSBpbnQgaXdsX3VlZmlfZ2V0X3dnZHNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMzk3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9yZWd1bGF0b3J5LmM9MTY9dm9pZCBpd2xfbWxkX2dldF9iaW9zX3RhYmxlcyhzdHJ1Y3QgaXdsX21sZCAqbWxkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3JlZ3VsYXRvcnkuYy0zOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3JlZ3VsYXRvcnkuYzozOTpcdFx0aWYgKCFpd2xfYmlvc19nZXRfd2dkc190YWJsZShcdTAwMjZtbGQtXHUwMDNlZndydCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3JlZ3VsYXRvcnkuYy00MC1cdFx0XHQvKiBJZiBiYXNpYyBTQVIgaXMgbm90IGF2YWlsYWJsZSwgd2UgY2hlY2sgZm9yIFdHRFMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvcmVndWxhdG9yeS5jLTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvcmVndWxhdG9yeS5jOjU4Olx0XHRyZXQgPSBpd2xfYmlvc19nZXRfd2dkc190YWJsZShcdTAwMjZtbGQtXHUwMDNlZndydCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9yZWd1bGF0b3J5LmMtNTktXHRcdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvcmVndWxhdG9yeS5jPTcyPXN0YXRpYyBpbnQgaXdsX21sZF9nZW9fc2FyX2luaXQoc3RydWN0IGl3bF9tbGQgKm1sZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9yZWd1bGF0b3J5LmMtMTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvcmVndWxhdG9yeS5jOjEwNzpcdC8qIEl0IGlzIGEgdmFsaWQgc2NlbmFyaW8gdG8gbm90IHN1cHBvcnQgU0FSLCBvciBtaXNzIHdnZHMgdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9yZWd1bGF0b3J5LmMtMTA4LVx0ICogYnV0IGluIHRoYXQgY2FzZSB0aGVyZSBpcyBubyBuZWVkIHRvIHNlbmQgdGhlIGNvbW1hbmQuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYz05Nzc9c3RhdGljIGludCBpd2xfbXZtX3Nhcl9nZW9faW5pdChzdHJ1Y3QgaXdsX212bSAqbXZtKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmMtMTA0NC1cdC8qXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jOjEwNDU6XHQgKiBJdCBpcyBhIHZhbGlkIHNjZW5hcmlvIHRvIG5vdCBzdXBwb3J0IFNBUiwgb3IgbWlzcyB3Z2RzIHRhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYy0xMDQ2LVx0ICogYnV0IGluIHRoYXQgY2FzZSB0aGVyZSBpcyBubyBuZWVkIHRvIHNlbmQgdGhlIGNvbW1hbmQuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYz0xNTI5PXZvaWQgaXdsX212bV9nZXRfYmlvc190YWJsZXMoc3RydWN0IGl3bF9tdm0gKm12bSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jLTE1NTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jOjE1NTM6XHRcdGlmICghaXdsX2Jpb3NfZ2V0X3dnZHNfdGFibGUoXHUwMDI2bXZtLVx1MDAzZWZ3cnQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jLTE1NTQtXHRcdFx0Lypcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jLTE1NzMtXHRcdGlmIChpd2xfc2FyX2dlb19zdXBwb3J0KFx1MDAyNm12bS1cdTAwM2Vmd3J0KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYzoxNTc0Olx0XHRcdHJldCA9IGl3bF9iaW9zX2dldF93Z2RzX3RhYmxlKFx1MDAyNm12bS1cdTAwM2Vmd3J0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmMtMTU3NS1cdFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL252bS5jPTU5MT12b2lkIGl3bF9tdm1fcnhfY2h1Yl91cGRhdGVfbWNjKHN0cnVjdCBpd2xfbXZtICptdm0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbnZtLmMtNTk4LVx0c3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gKnJlZ2Q7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9udm0uYzo1OTk6XHRpbnQgd2dkc190YmxfaWR4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbnZtLmMtNjAwLVx0Ym9vbCBjaGFuZ2VkID0gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbnZtLmMtNjI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbnZtLmM6NjI5Olx0d2dkc190YmxfaWR4ID0gaXdsX212bV9nZXRfc2FyX2dlb19wcm9maWxlKG12bSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9udm0uYzo2MzA6XHRpZiAod2dkc190YmxfaWR4IFx1MDAzYyAxKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbnZtLmMtNjMxLVx0XHRJV0xfREVCVUdfSU5GTyhtdm0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9udm0uYy02MzItXHRcdFx0ICAgICAgIFwmIzM0O1NBUiBXR0RTIGlzIGRpc2FibGVkIG9yIGVycm9yIHJlY2VpdmVkICglZClcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9udm0uYzo2MzM6XHRcdFx0ICAgICAgIHdnZHNfdGJsX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9udm0uYy02MzQtXHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9udm0uYy02MzUtXHRcdElXTF9ERUJVR19JTkZPKG12bSwgXCYjMzQ7U0FSIFdHRFM6IGdlbyBwcm9maWxlICVkIGlzIGNvbmZpZ3VyZWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9udm0uYzo2MzY6XHRcdFx0ICAgICAgIHdnZHNfdGJsX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9udm0uYy02MzctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3Mzk0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQXR0YWNrIFN1cmZhY2Ugb2YgdGhlIGl3bHdpZmkgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBpd2xfYmlvc19nZXRfd2dkc190YWJsZWAgZnVuY3Rpb24sIGFuZCBpdCBzZWVtcyB0byBjYWxsIGVpdGhlciBgaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGVgIG9yIGBpd2xfdWVmaV9nZXRfd2dkc190YWJsZWAuIFJpZ2h0LCBhbmQgYGl3bF9tdm1fZ2V0X2Jpb3NfdGFibGVzYCBpcyBhbHNvIGluIHRoZSBtaXgsIGNhbGxlZCBmcm9tIGBpd2xfbXZtX21hY19zZXR1cF9yZWdpc3RlcmAgYW5kIHNpbWlsYXIgcGxhY2VzLiBUaGUgY29yZSBvZiB0aGlzIGlzIGFsbCBwYXJ0IG9mIHRoZSBpd2x3aWZpIGRyaXZlciwgd2hpY2ggaXMsIG9idmlvdXNseSwgYSBQQ0kgZHJpdmVyLiBUaGUgY3JpdGljYWwgcG9pbnQgaXM6IGlmIHRoZXJlIGlzbiYjMzk7dCByZWFsIGhhcmR3YXJlLCB0aGUgZHJpdmVyIGlzbiYjMzk7dCBnb2luZyB0byBwcm9iZSwgYW5kIG5vbmUgb2YgdGhpcyBjb2RlIHdpbGwgZXZlbiBiZSB0b3VjaGVkLgoKVGhlIG1pbGxpb24tZG9sbGFyIHF1ZXN0aW9uOiBDYW4gSSB0cmlnZ2VyIHRoaXMgc3R1ZmYgd2l0aCBzeXprYWxsZXI/IFN5emthbGxlciBkb2VzbiYjMzk7dCB0eXBpY2FsbHkgaGF2ZSBhIGdlbmVyYWwgUENJIGVtdWxhdG9yLCBidXQgSSBzZWVtIHRvIHJlY2FsbCBzb21ldGhpbmcgYWJvdXQgdGhhdCBjaGFuZ2luZyByZWNlbnRseS4gTGV0JiMzOTtzIGRvdWJsZS1jaGVjay4gRG9lcyBzeXprYWxsZXIgaGF2ZSBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXM/IE5vLCB3YWl0LCBpcyB0aGVyZSBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV9kZXZpY2VgPyBOb3BlLCBub3RoaW5nIGxpa2UgdGhhdC4KCkFscmlnaHQsIGxldCYjMzk7cyB0cnkgYSBkaWZmZXJlbnQgYXBwcm9hY2guIExldCYjMzk7cyBkZWx2ZSBpbnRvIHRoZSBrZXJuZWwgc291cmNlIGFuZCBzZWUgaWYgSSBjYW4gZmluZCBhIGhvb2ssIHNvbWUgYHBjaV9lbmRwb2ludF90ZXN0YCwgb3IgYHZmaW9gIGludGVyZmFjZSwgYW55dGhpbmcgdGhhdCB3b3VsZCBhbGxvdyBtZSB0byBpbmplY3QgYSBQQ0kgZGV2aWNlLiBIb2xkIG9uIGEgc2Vjb25kLCB3YXNuJiMzOTt0IHRoZXJlIHNvbWV0aGluZyBhYm91dCBgc3l6X2t2bV9zZXR1cF9jcHVgIGFuZCBgc3l6X3VzYl9jb25uZWN0YD8gQWgsIEkgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nLiBTeXprYWxsZXIgY2FuIGZ1enogUENJIGRldmljZXMgaWYgdGhleSBhcmUgc29tZWhvdyBleHBvc2VkLiBUaGUgcHJvYmxlbSBpcyB0aGF0IHRoZXkgdXN1YWxseSBhcmUgbm90IGV4cG9zZWQuCgpPa2F5LCBsZXQmIzM5O3MgZXhwbG9yZSBpZiBJIGNhbiB1c2UgdGhlIGBtYWM4MDIxMV9od3NpbWAgZHJpdmVyLCB0byBpbmRpcmVjdGx5IGZ1enogdGhlIGBpd2x3aWZpYCBkcml2ZXIuIE5vcGUsIHRoYXQmIzM5O3MgYSBkZWFkIGVuZC4gYG1hYzgwMjExX2h3c2ltYCBpcyBjb21wbGV0ZWx5IHNlcGFyYXRlLgoKRmluYWxseSwgSSYjMzk7bGwgY2hlY2sgaWYgdGhlIGBpd2x3aWZpYCBkcml2ZXIgaGFzIGFueSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBtaWdodCBlbmFibGUgc29tZSBraW5kIG9mIHRlc3QgbW9kZS4gTWF5YmUgdGhlcmUmIzM5O3MgYSBoaWRkZW4gZmxhZyBJIGNhbiBsZXZlcmFnZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElXTFdJRkkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjI6Y29uZmlnIElXTFdJRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBOZXh0IEdlbiBBR04gLSBXaXJlbGVzcy1OL0FkdmFuY2VkLU4vVWx0aW1hdGUtTiAoaXdsd2lmaSkgXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTQ3PWlmIElXTFdJRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy00OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo0OTpjb25maWcgSVdMV0lGSV9LVU5JVF9URVNUU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTUwLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NTg6Y29uZmlnIElXTFdJRklfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU5LVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz04ND1jb25maWcgSVdMTUxEXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk0LSMgZG9uJiMzOTt0IGNhbGwgaXQgX01PRFVMRSAtLSB3aWxsIGNvbmZ1c2UgS2NvbmZpZy9maXhkZXAvLi4uXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6OTU6Y29uZmlnIElXTFdJRklfT1BNT0RFX01PRFVMQVJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05Ni1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTA1PW1lbnUgXCYjMzQ7RGVidWdnaW5nIE9wdGlvbnNcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTA3OmNvbmZpZyBJV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA4LVx0Ym9vbCBcJiMzNDtFbmFibGUgZnVsbCBkZWJ1Z2dpbmcgb3V0cHV0IGluIHRoZSBpd2x3aWZpIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMxOmNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzItXHRib29sIFwmIzM0O2l3bHdpZmkgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzk6Y29uZmlnIElXTFdJRklfREVWSUNFX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNDAtXHRib29sIFwmIzM0O2l3bHdpZmkgZGV2aWNlIGFjY2VzcyB0cmFjaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4OTEzCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKktVbml0IFRlc3QgQ292ZXJhZ2UgQ2hlY2sqKgoKT2theSwgc28gSSBzZWUgYElXTFdJRklfS1VOSVRfVEVTVFNgIGxpc3RlZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7RG8gdGhlIEtVbml0IHRlc3RzIGFjdHVhbGx5ICpjb3ZlciogdGhlIGNoYW5nZXMgSSYjMzk7dmUgbWFkZT8mIzM0OyBJdCYjMzk7cyBub3QgZW5vdWdoIHRvICpoYXZlKiB0ZXN0czsgdGhleSBuZWVkIHRvIGJlIHJlbGV2YW50IHRvIHRoZSBtb2RpZmljYXRpb25zLiBUaGlzIGlzIGEgY3JpdGljYWwgc3RlcCBpbiBlbnN1cmluZyB0aGUgc3RhYmlsaXR5IGFuZCBjb3JyZWN0bmVzcyBvZiB0aGUgZHJpdmVyLCBzbyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhvc2UgdGVzdHMgYXJlIHByZXNlbnQgYW5kIGNvbXByZWhlbnNpdmUgZm9yIHRoZSBjb2RlIEkmIzM5O3ZlIHRvdWNoZWQuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCYjMzk7cyBiZWluZyB0ZXN0ZWQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX2FjcGlfZ2V0X3dnZHNfdGFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkxMzUKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgQXNzZXNzbWVudDogTm8gT2J2aW91cyBIaXRzKioKCkRhbW4sIG5vdGhpbmcmIzM5O3MgY29taW5nIHVwIGluIHRoZSB0ZXN0IHJlc3VsdHMuIFRoYXQmIzM5O3MgZnJ1c3RyYXRpbmcuIEkgd2FzIGhvcGluZyBmb3Igc29tZXRoaW5nIG1vcmUgZGlyZWN0LCBidXQgaXQgc2VlbXMgd2hhdGV2ZXIgSSYjMzk7bSBsb29raW5nIGZvciBpc24mIzM5O3QgaW1tZWRpYXRlbHkgYXBwYXJlbnQuIFRpbWUgdG8gZGlnIGRlZXBlciwgdGhlIHRyYWlsJiMzOTtzIGdvbmUgY29sZCBmb3Igbm93LgoKV2FpdCwgaG9sZCBvbiBhIG1pbnV0ZS4uLiBXaGF0IGFib3V0IGBpd2xfcGFyc2VfdGx2X2Zpcm13YXJlYD8gVGhhdCBmdW5jdGlvbiBuYW1lIGp1c3QgcG9wcGVkIGludG8gbXkgaGVhZCwgYW5kIGl0JiMzOTtzIG5hZ2dpbmcgYXQgbWUuIEl0IGRlYWxzIHdpdGggcGFyc2luZyBmaXJtd2FyZSBzdHJ1Y3R1cmVzLCB3aGljaCBpcyBjZXJ0YWlubHkgcmVsYXRlZCB0byB3aGF0IEkmIzM5O20gaW52ZXN0aWdhdGluZy4gSXQgbWlnaHQgYmUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGNoZWNrLCBldmVuIGlmIGl0IHNlZW1zIHRhbmdlbnRpYWwuIExldCYjMzk7cyBzZWUgaWYgdGhhdCBzcGFya3Mgc29tZXRoaW5nLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3BhcnNlX3Rsdl9maXJtd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvdGVzdHMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxOTo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTM4NQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgd2VudDoKCioqRXhhbWluaW5nIHRoZSBDb2RlYmFzZSoqCgpPa2F5LCBJJiMzOTttIGZhY2luZyBhIHNlYXJjaCB3aXRoIG5vIHJlc3VsdHMuIFRoYXQmIzM5O3MgYWx3YXlzIHRoZSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2h5LiBXaGF0IGNvdWxkIGJlIGEgdXNlZnVsIHN0YXJ0aW5nIHBvaW50PyBIbW0uLi4gTGV0JiMzOTtzIHRoaW5rIGFsb25nIHRoZSBsaW5lcyBvZiBhIGRlYnVnLWZvY3VzZWQgZnVuY3Rpb24gcmVsYXRlZCB0byBUTFYgcGFyc2luZyB3aXRoaW4gYW4gSW50ZWwgV2lyZWxlc3MgbW9kdWxlLiBJJiMzOTtsbCBzZWFyY2ggZm9yIGBpd2xfZGJnX3Rsdl9wYXJzZV9iaW5gLiBUaGF0IG1pZ2h0IGp1c3QgZ2V0IG1lIGNsb3Nlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfZGJnX3Rsdl9wYXJzZV9iaW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk1NzAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA1MDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5yZWFjaGFibGUgQ29kZSBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIG1vZGlmaWVkIGNvZGUgaW4gdGhlIGBpd2x3aWZpYCBkcml2ZXIsIHdoaWNoIGlzIGEgUENJIGRyaXZlci4gVGhlIHByb2JsZW0gaXMsIHdpdGhvdXQgYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlLCBpdCB3b24mIzM5O3QgcHJvYmUsIGFuZCB0aGUgY29kZSBJJiMzOTttIGludGVyZXN0ZWQgaW4gd2lsbCBuZXZlciBleGVjdXRlLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzLCAmIzM0O0lzIHRoZXJlICphbnkqIHdheSB0byBmb3JjZSBhIHByb2JlPyYjMzQ7IEkgaW1tZWRpYXRlbHkgY29uc2lkZXJlZCBgc3l6X3BjaV9kZXZpY2VgIGZyb20gc3l6a2FsbGVyLCBidXQgdGhhdCYjMzk7cyBhIGRlYWQgZW5kLiBTeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSB0aGF0IHByaW1pdGl2ZS4KClRoZW4sIEkgcmVtZW1iZXJlZCB0aGUgcmVjZW50IFBDSSBmdXp6aW5nIHdvcmsgaW4gc3l6a2FsbGVyIHVzaW5nIGB2ZmlvYCBvciBzaW1pbGFyIHRlY2hub2xvZ2llcy4gQnV0LCBubywgc3l6a2FsbGVyIHByaW1hcmlseSBsZXZlcmFnZXMgUUVNVSYjMzk7cyBQQ0kgZW11bGF0aW9uIGZvciBmdXp6aW5nLCBhbmQgUUVNVSwgaW4gaXRzIHdpc2RvbSwgZG9lc24mIzM5O3QgZW11bGF0ZSBJbnRlbCBXaS1GaSBjYXJkcyAodGhlIGBpd2x3aWZpYCBvbmVzKS4KClNvLCBJIGNoZWNrZWQgUUVNVSYjMzk7cyBzdXBwb3J0ZWQgZGV2aWNlcy4gSSByYXR0bGVkIG9mZiB0aGUgdXN1YWwgc3VzcGVjdHM6IGBlMTAwMGAsIGBydGw4MTM5YCwgYHBjbmV0YCwgeW91IGtub3cgdGhlIGRyaWxsLiBRRU1VIGhhbmRsZXMgYWxsIG9mIHRob3NlLiBIb3dldmVyLCBgaXdsd2lmaWAgd2FzbiYjMzk7dCBhbW9uZyB0aGVtLiBUaGlzIG1lYW5zIHRoZSBkcml2ZXIgd29uJiMzOTt0IHByb2JlIGluIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLiBQcmV0dHkgbXVjaCBhIG5vLWdvIGluIGFueSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4KCk5vdywgSSBuZWVkIHRvIGJlICphYnNvbHV0ZWx5KiBzdXJlLiBJcyB0aGVyZSAqYW55KiBvdGhlciBwYXRoIHRvIGBpd2xfYWNwaV9nZXRfd2dkc190YWJsZWA/IEkgdHJhY2VkIHRoZSBjYWxsIGdyYXBoLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgaXdsX2Jpb3NfZ2V0X3dnZHNfdGFibGVgLCB3aGljaCBpdHNlbGYgaXMgY2FsbGVkIGZyb20gYGl3bF9tdm1fZ2V0X2Jpb3NfdGFibGVzYCBhbmQgYGl3bF9tbGRfZ2V0X2Jpb3NfdGFibGVzYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBkdXJpbmcgdGhlIHNldHVwIG9mIHRoZSBNVk0gb3IgTUxEIG9wZXJhdGlvbiBtb2Rlcywgd2hpY2ggaGFwcGVucyAqYWZ0ZXIqIHRoZSBQQ0kgZGV2aWNlIGlzIHByb2JlZCBhbmQgdGhlIGZpcm13YXJlIGxvYWRzLiBTaW5jZSwgYWdhaW4sIHRoZXJlJiMzOTtzIG5vIFBDSSBkZXZpY2UsIG5vIHByb2JlLCBubyBkaWNlLgoKV2FpdCwgaXMgdGhlcmUgKmFueSogc29mdHdhcmUgZnJhbWV3b3JrIHRoYXQgbWlnaHQgbWFnaWNhbGx5IHByb2JlIHRoZSBkcml2ZXI/IEkgdGhvdWdodCBhYm91dCBgbWFjODAyMTFfaHdzaW1gLCB0aGUgc29mdHdhcmUgc2ltdWxhdG9yLCBidXQgdGhhdOKAmXMgbm90IHVzaW5nIGBpd2x3aWZpYC4gSXMgdGhlcmUgYSBzcGVjaWFsIGBpd2x3aWZpYCBzaW11bGF0b3I/IEkgdGhlbiBzdGFydGVkIHNlYXJjaGluZyB0aGUgZGlyZWN0b3J5IGluIHF1ZXN0aW9uIChgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaWApIGZvciBhbnkgY2x1ZSAoZS5nLiwgYGR1bW15YCwgYGh3c2ltYCkuIE5vdGhpbmcuIEkgZmlndXJlZCBpdCB3b3VsZCBiZSB3b3J0aCBjaGVja2luZyB0aGUgY29kZSBmb3IgYW55IGB0ZXN0YCBtb2R1bGUgdGhhdCBwcm9iZXMgdGhlIGRyaXZlciBpbiBhIGNvbnRyb2xsZWQgZW52aXJvbm1lbnQuIEkgZ290IG5vdGhpbmcuCgpTbywgaW4gY29uY2x1c2lvbiwgaXQgc2VlbXMgdGhlIGNvZGUgcGF0aCBJJiMzOTttIGludGVyZXN0ZWQgaW4gaXMgdW5yZWFjaGFibGUgaW4gYWxsIG9mIG15IHR5cGljYWwgdGVzdGluZyBlbnZpcm9ubWVudHMuIExvb2tzIGxpa2UgdGhpcyBzcGVjaWZpYyBhcmVhIHJlcXVpcmVzIHJlYWwgaGFyZHdhcmUgZm9yIGV4ZWN1dGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3BjaV9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtMzItICogVGhpcyBjb21wb25lbnQgaW1wbGVtZW50cyB0aGUgc3lzdGVtIGZsb3dzIHN1Y2ggYXMgYnVzIGVudW1lcmF0aW9uLCBidXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oOjMzOiAqIHJlbW92YWwuIEJ1cyBkZXBlbmRlbnQgcGFydHMgb2Ygc3lzdGVtIGZsb3dzIChzdWNoIGFzIGl3bF9wY2lfcHJvYmUpIGFyZSBpblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtMzQtICogYnVzIHNwZWNpZmljIGZpbGVzICh0cmFuc3BvcnQgZmlsZXMpLiBUaGlzIGlzIHRoZSBjb2RlIHRoYXQgaXMgY29tbW9uIGFtb25nXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jPTExNDc9RVhQT1JUX1NZTUJPTF9JRl9JV0xXSUZJX0tVTklUKGl3bF9wY2lfZmluZF9kZXZfaW5mbyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTE0OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYzoxMTQ5OnN0YXRpYyBpbnQgaXdsX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMTUwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM9MTMzOD1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaXdsX3BjaV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTEzNDAtXHQuaWRfdGFibGUgPSBpd2xfaHdfY2FyZF9pZHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM6MTM0MTpcdC5wcm9iZSA9IGl3bF9wY2lfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTM0Mi1cdC5yZW1vdmUgPSBpd2xfcGNpX3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExMzgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbml0aWFsIFByb2JlICZhbXA7IEJ1cyBFeHBsb3JhdGlvbioqCgpPa2F5LCBzbyBgaXdsX3BjaV9wcm9iZWAgaXMgZGVmaW5pdGVseSB0aGUgcHJvYmUgZnVuY3Rpb24gd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgaGVyZS4gVGhhdCBjb25maXJtcyB0aGUgUENJIGNvbnRleHQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBhcmUgd2UgKnNvbGVseSogZGVhbGluZyB3aXRoIFBDSSBoZXJlPyBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggaWYgdGhlcmUgYXJlIGFueSBvdGhlciBidXMgdmFyaWFudHMgZm9yIHRoaXMgaXdsd2lmaSBkcml2ZXIuIExldCBtZSBqdXN0IGRvdWJsZS1jaGVjayBpZiB0aGVyZSYjMzk7cyBhbiBTRElPIG9yIGEgVVNCIGltcGxlbWVudGF0aW9uIGtub2NraW5nIGFyb3VuZCBzb21ld2hlcmUuIEl0JiMzOTtzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCB0aGUgYnVzIGNvbnRleHQsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggcHJvYmUgZnVuY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxOTo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEzMzYgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oPTIwMD1pbnQgX19tdXN0X2NoZWNrIGl3bF9zY2FuX2luaXRpYXRlKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaC0yMDYtICogUExDUF9RVUlFVF9USFJFU0ggcGFja2V0cyBhcmUgaGVhcmQgb24gdGhpcyBjaGFubmVsIHdpdGhpblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmg6MjA3OiAqIEFDVElWRV9RVUlFVF9USU1FIGFmdGVyIHNlbmRpbmcgcHJvYmUgcmVxdWVzdC4gIFRoaXMgc2hvcnRlbnMgdGhlIGR3ZWxsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaDoyMDg6ICogdGltZSBpZiBpdCYjMzk7cyBhIHF1aWV0IGNoYW5uZWwgKG5vdGhpbmcgcmVzcG9uZGVkIHRvIG91ciBwcm9iZSwgYW5kIHRoZXJlJiMzOTtzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaC0yMDktICogbm8gb3RoZXIgdHJhZmZpYykuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaD0xMDY0PXN0cnVjdCBpd2xfcnhfbXBkdV9yZXNfc3RhcnQge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmgtMTEzOC0gKiAwOiBObyBUU0YgcmVxdWlyZWQgaW4gb3V0Z29pbmcgZnJhbWUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjExMzk6ICogU2V0IHRoaXMgZm9yIHRyYW5zbWl0dGluZyBiZWFjb25zIGFuZCBwcm9iZSByZXNwb25zZXMuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oLTExNDAtI2RlZmluZSBUWF9DTURfRkxHX1RTRl9NU0sgY3B1X3RvX2xlMzIoMSBcdTAwM2NcdTAwM2MgMTYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaD0yMTk5PXN0cnVjdCBpd2xfc2Nhbl9jaGFubmVsIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oLTIyMDMtXHQgKiAxOjIwIFNTSUQgZGlyZWN0IGJpdCBtYXA7IGlmIGEgYml0IGlzIHNldCwgdGhlbiBjb3JyZXNwb25kaW5nXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjIyMDQ6XHQgKiAgICAgU1NJRCBJRSBpcyB0cmFuc21pdHRlZCBpbiBwcm9iZSByZXF1ZXN0LlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaC0yMjA1LVx0ICogMjE6MzEgcmVzZXJ2ZWRcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oLTIyMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjIyMTU6Lyogc2V0IG51bWJlciBvZiBkaXJlY3QgcHJvYmVzIF9fbGUzMiB0eXBlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oLTIyMTYtI2RlZmluZSBJV0xfU0NBTl9QUk9CRV9NQVNLKG4pIFx0Y3B1X3RvX2xlMzIoKEJJVChuKSB8IChCSVQobikgLSBCSVQoMSkpKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oPTIyMjY9c3RydWN0IGl3bF9zc2lkX2llIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oLTIyNzUtICogYSBjaGFubmVsIGZvciBqdXN0IGEgc2hvcnQgdGltZSwgaWYgZG9pbmcgYWN0aXZlIHNjYW5uaW5nIGFuZCBnZXR0aW5nIG5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjIyNzY6ICogcmVzcG9uc2VzIHRvIHRoZSB0cmFuc21pdHRlZCBwcm9iZSByZXF1ZXN0LiAgVGhpcyB0aW1lIGlzIGNvbnRyb2xsZWQgYnlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmgtMjI3Ny0gKiBxdWlldF90aW1lLCBhbmQgdGhlIG51bWJlciBvZiByZWNlaXZlZCBwYWNrZXRzIGJlbG93IHdoaWNoIGEgY2hhbm5lbCBpc1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmgtMjI4My0gKiBwYWNrZXRzIGFyZSBjbGVhbmx5IHJlY2VpdmVkIG9uIHRoZSBjaGFubmVsIChjb250cm9sbGVkIGJ5IGdvb2RfQ1JDX3RoLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaDoyMjg0OiAqIHR5cGljYWwgdmFsdWUgMSksIHRoZSBzY2FuIGVuZ2luZSBzdGFydHMgdHJhbnNtaXR0aW5nIHByb2JlIHJlcXVlc3RzLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaC0yMjg1LSAqXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaD0yMjk4PXN0cnVjdCBpd2xfc2Nhbl9jbWQge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmgtMjMyNC1cdCAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjIzMjU6XHQgKiBTaXplIG9mIHByb2JlIHJlcXVlc3QgZnJhbWUgaXMgc3BlY2lmaWVkIGJ5IGJ5dGUgY291bnQgaW4gdHhfY21kLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaDoyMzI2Olx0ICogQ2hhbm5lbCBsaXN0IGZvbGxvd3MgaW1tZWRpYXRlbHkgYWZ0ZXIgcHJvYmUgcmVxdWVzdCBmcmFtZS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmgtMjMyNy1cdCAqIE51bWJlciBvZiBjaGFubmVscyBpbiBsaXN0IGlzIHNwZWNpZmllZCBieSBjaGFubmVsX2NvdW50LlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmg9MjM3OD1zdHJ1Y3QgaXdsX3NjYW5yZXN1bHRzX25vdGlmaWNhdGlvbiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaC0yMzgwLVx0dTggYmFuZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmg6MjM4MTpcdHU4IHByb2JlX3N0YXR1cztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmg6MjM4MjpcdHU4IG51bV9wcm9iZV9ub3Rfc2VudDsgLyogbm90IGVub3VnaCB0aW1lIHRvIHNlbmQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmgtMjM4My1cdF9fbGUzMiB0c2ZfbG93O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmg9MjYxNj1zdHJ1Y3Qgc3RhdGlzdGljc19kaXYge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmgtMjYxOS1cdF9fbGUzMiBleGVjX3RpbWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjI2MjA6XHRfX2xlMzIgcHJvYmVfdGltZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmgtMjYyMS1cdF9fbGUzMiByZXNlcnZlZDE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaD0zOTAyPXN0cnVjdCBpd2xfd2lwYW5fcDJwX2NoYW5uZWxfc3dpdGNoX2NtZCB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaC0zOTExLSAqIE5vQSBzY2hlZHVsZSBpdCBkZXRlcm1pbmVkIHNvIHdlIGNhbiBmb3J3YXJkIGl0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjM5MTI6ICogdG8gdXNlcnNwYWNlIGZvciBpbmNsdXNpb24gaW4gcHJvYmUgcmVzcG9uc2VzLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaC0zOTEzLSAqXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGVidWdmcy5jPTEyOTY9c3RhdGljIHNzaXplX3QgaXdsX2RiZ2ZzX3Vjb2RlX2dlbmVyYWxfc3RhdHNfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZWJ1Z2ZzLmMtMTM5Mi1cdHBvcyAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBwb3MsIGJ1ZnN6IC0gcG9zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGVidWdmcy5jOjEzOTM6XHRcdFx0IGZtdF90YWJsZSwgXCYjMzQ7cHJvYmVfdGltZTpcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZWJ1Z2ZzLmM6MTM5NDpcdFx0XHQgbGUzMl90b19jcHUoZGl2LVx1MDAzZXByb2JlX3RpbWUpLCBhY2N1bV9kaXYtXHUwMDNlcHJvYmVfdGltZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RlYnVnZnMuYzoxMzk1Olx0XHRcdCBkZWx0YV9kaXYtXHUwMDNlcHJvYmVfdGltZSwgbWF4X2Rpdi1cdTAwM2Vwcm9iZV90aW1lKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RlYnVnZnMuYy0xMzk2LVx0cG9zICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IHBvcywgYnVmc3ogLSBwb3MsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2aWNlcy5jPTI1MD1zdGF0aWMgY29uc3Qgc3RydWN0IGl3bF9kdm1fYnRfcGFyYW1zIGl3bDIwMzBfYnRfcGFyYW1zID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2aWNlcy5jOjI1MTpcdC8qIER1ZSB0byBibHVldG9vdGgsIHdlIHRyYW5zbWl0IDIuNCBHSHogcHJvYmVzIG9ubHkgb24gYW50ZW5uYSBBICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZXZpY2VzLmMtMjUyLVx0LmFkdmFuY2VkX2J0X2NvZXhpc3QgPSB0cnVlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RldmljZXMuYz02NTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBpd2xfZHZtX2J0X3BhcmFtcyBpd2w2MDAwX2J0X3BhcmFtcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RldmljZXMuYzo2NTU6XHQvKiBEdWUgdG8gYmx1ZXRvb3RoLCB3ZSB0cmFuc21pdCAyLjQgR0h6IHByb2JlcyBvbmx5IG9uIGFudGVubmEgQSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2aWNlcy5jLTY1Ni1cdC5hZHZhbmNlZF9idF9jb2V4aXN0ID0gdHJ1ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jPTc4PWludCBpd2xhZ25fbWFjX3NldHVwX3JlZ2lzdGVyKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jLTE3My1cdC8qIHdlIGNyZWF0ZSB0aGUgODAyLjExIGhlYWRlciBhbmQgYSBtYXgtbGVuZ3RoIFNTSUQgZWxlbWVudCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFjODAyMTEuYzoxNzQ6XHRody1cdTAwM2V3aXBoeS1cdTAwM2VtYXhfc2Nhbl9pZV9sZW4gPSBjYXBhLVx1MDAzZW1heF9wcm9iZV9sZW5ndGggLSAyNCAtIDM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFjODAyMTEuYy0xNzUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jPTEyMzM9c3RhdGljIHN0cnVjdCBpd2xfb3BfbW9kZSAqaXdsX29wX21vZGVfZHZtX3N0YXJ0KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYy0xNDk0LVx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM6MTQ5NTpcdCAqIFRoaXMgaXMgc3RpbGwgcGFydCBvZiBwcm9iZSgpIGluIGEgc2Vuc2UuLi5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYy0xNDk2LVx0ICpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtMTUtLyogRm9yIGFjdGl2ZSBzY2FuLCBsaXN0ZW4gQUNUSVZFX0RXRUxMX1RJTUUgKG1zZWMpIG9uIGVhY2ggY2hhbm5lbCBhZnRlclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjE2OiAqIHNlbmRpbmcgcHJvYmUgcmVxLiAgVGhpcyBzaG91bGQgYmUgc2V0IGxvbmcgZW5vdWdoIHRvIGhlYXIgcHJvYmUgcmVzcG9uc2VzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtMTctICogZnJvbSBtb3JlIHRoYW4gb25lIEFQLiAgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM9MjYyPXN0YXRpYyB2b2lkIGl3bF9yeF9zY2FuX3Jlc3VsdHNfbm90aWYoc3RydWN0IGl3bF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy0yNzAtXHRcdCAgICAgICBcJiMzNDslZCBbODAyLjExJXNdIFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjI3MTpcdFx0ICAgICAgIFwmIzM0O3Byb2JlIHN0YXR1czogJXU6JXUgXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtMjcyLVx0XHQgICAgICAgXCYjMzQ7KFRTRjogMHglMDhYOiUwOFgpIC0gJWQgXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTI3NS1cdFx0ICAgICAgIG5vdGlmLVx1MDAzZWJhbmQgPyBcJiMzNDtiZ1wmIzM0OyA6IFwmIzM0O2FcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6Mjc2Olx0XHQgICAgICAgbm90aWYtXHUwMDNlcHJvYmVfc3RhdHVzLCBub3RpZi1cdTAwM2VudW1fcHJvYmVfbm90X3NlbnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtMjc3LVx0XHQgICAgICAgbGUzMl90b19jcHUobm90aWYtXHUwMDNldHNmX2hpZ2gpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYz0zNDY9c3RhdGljIHUxNiBpd2xfZ2V0X2FjdGl2ZV9kd2VsbF90aW1lKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzozNDc6XHRcdFx0XHQgICAgIGVudW0gbmw4MDIxMV9iYW5kIGJhbmQsIHU4IG5fcHJvYmVzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTM0OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTM1MC1cdFx0cmV0dXJuIElXTF9BQ1RJVkVfRFdFTExfVElNRV81MiAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjM1MTpcdFx0XHRJV0xfQUNUSVZFX0RXRUxMX0ZBQ1RPUl81MkdIWiAqIChuX3Byb2JlcyAmIzQzOyAxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy0zNTItXHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtMzUzLVx0XHRyZXR1cm4gSVdMX0FDVElWRV9EV0VMTF9USU1FXzI0ICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6MzU0Olx0XHRcdElXTF9BQ1RJVkVfRFdFTExfRkFDVE9SXzI0R0haICogKG5fcHJvYmVzICYjNDM7IDEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTM1NS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jPTQ4OD1zdGF0aWMgaW50IGl3bF9nZXRfY2hhbm5lbHNfZm9yX3NjYW4oc3RydWN0IGl3bF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy00OTAtXHRcdFx0XHQgICAgIGVudW0gbmw4MDIxMV9iYW5kIGJhbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6NDkxOlx0XHRcdFx0ICAgICB1OCBpc19hY3RpdmUsIHU4IG5fcHJvYmVzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTQ5Mi1cdFx0XHRcdCAgICAgc3RydWN0IGl3bF9zY2FuX2NoYW5uZWwgKnNjYW5fY2gpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTUwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzo1MDU6XHRhY3RpdmVfZHdlbGwgPSBpd2xfZ2V0X2FjdGl2ZV9kd2VsbF90aW1lKHByaXYsIGJhbmQsIG5fcHJvYmVzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy01MDYtXHRwYXNzaXZlX2R3ZWxsID0gaXdsX2dldF9wYXNzaXZlX2R3ZWxsX3RpbWUocHJpdiwgYmFuZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTUyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzo1MjU6XHRcdGlmIChuX3Byb2JlcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzo1MjY6XHRcdFx0c2Nhbl9jaC1cdTAwM2V0eXBlIHw9IElXTF9TQ0FOX1BST0JFX01BU0sobl9wcm9iZXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTUyNy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNTU4LS8qXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6NTU5OiAqIGl3bF9maWxsX3Byb2JlX3JlcSAtIGZpbGwgaW4gYWxsIHJlcXVpcmVkIGZpZWxkcyBhbmQgSUUgZm9yIHByb2JlIHJlcXVlc3RcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy01NjAtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6NTYxOnN0YXRpYyB1MTYgaXdsX2ZpbGxfcHJvYmVfcmVxKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqZnJhbWUsIGNvbnN0IHU4ICp0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy01NjItXHRcdFx0ICAgICAgY29uc3QgdTggKmllcywgaW50IGllX2xlbiwgY29uc3QgdTggKnNzaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTU2Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzo1Njg6XHQvKiBNYWtlIHN1cmUgdGhlcmUgaXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgcHJvYmUgcmVxdWVzdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy01NjktXHQgKiB0d28gbWFuZGF0b3J5IElFcyBhbmQgdGhlIGRhdGEgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNTgyLVx0LyogLi4ubmV4dCBJRS4uLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjU4MzpcdHBvcyA9IFx1MDAyNmZyYW1lLVx1MDAzZXUucHJvYmVfcmVxLnZhcmlhYmxlWzBdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTU4NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM9NjA5PXN0YXRpYyBpbnQgaXdsYWduX3JlcXVlc3Rfc2NhbihzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTYyMC1cdGVudW0gbmw4MDIxMV9iYW5kIGJhbmQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6NjIxOlx0dTggbl9wcm9iZXMgPSAwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTYyMi1cdHU4IHJ4X2FudCA9IHByaXYtXHUwMDNlbnZtX2RhdGEtXHUwMDNldmFsaWRfcnhfYW50O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy02MzAtXHRcdFx0ICAgIE1BWF9TQ0FOX0NIQU5ORUwgKiBzaXplb2Yoc3RydWN0IGl3bF9zY2FuX2NoYW5uZWwpICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6NjMxOlx0XHRcdCAgICBwcml2LVx1MDAzZWZ3LVx1MDAzZXVjb2RlX2NhcGEubWF4X3Byb2JlX2xlbmd0aDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy02MzItXHRjb25zdCB1OCAqc3NpZCA9IE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTcwOS1cdFx0XHQgKiBUaGUgaGlnaGVzdCBwcmlvcml0eSBTU0lEIGlzIGluc2VydGVkIHRvIHRoZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjcxMDpcdFx0XHQgKiBwcm9iZSByZXF1ZXN0IHRlbXBsYXRlLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTcxMS1cdFx0XHQgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNzI1LVx0XHRcdFx0ICAgICAgIHByaXYtXHUwMDNlc2Nhbl9yZXF1ZXN0LVx1MDAzZXNzaWRzW2ldLnNzaWRfbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzo3MjY6XHRcdFx0XHRuX3Byb2JlcyYjNDM7JiM0Mzs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNzI3LVx0XHRcdFx0cCYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTc3Ni1cdCAqIG9uIGEgcmFkYXIgY2hhbm5lbCBldmVuIHRob3VnaCB0aGlzIG1lYW5zIHRoYXQgd2Ugc2hvdWxkIE5PVFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjc3NzpcdCAqIHNlbmQgcHJvYmVzLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTc3OC1cdCAqXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTc4MC1cdCAqIG5lZWQgdG8gcmVjZWl2ZSBkdXJpbmcgb3VyIGR3ZWxsIHRpbWUgb24gYSBjaGFubmVsIGJlZm9yZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjc4MTpcdCAqIHNlbmRpbmcgb3V0IHByb2JlcyAtLSBzZXR0aW5nIHRoaXMgdG8gYSBodWdlIHZhbHVlIHdpbGxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy03ODItXHQgKiBtZWFuIHdlIG5ldmVyIHJlYWNoIGl0LCBidXQgYXQgdGhlIHNhbWUgdGltZSB3b3JrIGFyb3VuZFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy04MDEtXHQgICAgcHJpdi1cdTAwM2VsaWItXHUwMDNlYnRfcGFyYW1zLVx1MDAzZWFkdmFuY2VkX2J0X2NvZXhpc3QpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzo4MDI6XHRcdC8qIHRyYW5zbWl0IDIuNCBHSHogcHJvYmVzIG9ubHkgb24gZmlyc3QgYW50ZW5uYSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTgwMy1cdFx0c2Nhbl90eF9hbnRlbm5hcyA9IGZpcnN0X2FudGVubmEoc2Nhbl90eF9hbnRlbm5hcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTg0NC1cdGNhc2UgSVdMX1NDQU5fTk9STUFMOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjg0NTpcdFx0Y21kX2xlbiA9IGl3bF9maWxsX3Byb2JlX3JlcShcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy04NDYtXHRcdFx0XHRcdChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilzY2FuLVx1MDAzZWRhdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTg1NC1cdFx0LyogdXNlIGJjYXN0IGFkZHIsIHdpbGwgbm90IGJlIHRyYW5zbWl0dGVkIGJ1dCBtdXN0IGJlIHZhbGlkICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6ODU1Olx0XHRjbWRfbGVuID0gaXdsX2ZpbGxfcHJvYmVfcmVxKFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTg1Ni1cdFx0XHRcdFx0KHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNjYW4tXHUwMDNlZGF0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtODc3LVx0XHRcdGl3bF9nZXRfY2hhbm5lbHNfZm9yX3NjYW4ocHJpdiwgdmlmLCBiYW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjg3ODpcdFx0XHRcdGlzX2FjdGl2ZSwgbl9wcm9iZXMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtODc5LVx0XHRcdFx0KHZvaWQgKilcdTAwMjZzY2FuLVx1MDAzZWRhdGFbY21kX2xlbl0pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmM9NDM9c3RhdGljIHZvaWQgaXdsYWduX3R4X2NtZF9idWlsZF9iYXNpYyhzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy01OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmM6NTk6XHRpZiAoaWVlZTgwMjExX2lzX3Byb2JlX3Jlc3AoZmMpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy02MC1cdFx0dHhfZmxhZ3MgfD0gVFhfQ01EX0ZMR19UU0ZfTVNLO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmM9MTA1PXN0YXRpYyB2b2lkIGl3bGFnbl90eF9jbWRfYnVpbGRfcmF0ZShzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy0xMjQtXHRcdC8qIFNldCByZXRyeSBsaW1pdCBvbiBEQVRBIHBhY2tldHMgYW5kIFByb2JlIFJlc3BvbnNlcyovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jOjEyNTpcdFx0aWYgKGllZWU4MDIxMV9pc19wcm9iZV9yZXNwKGZjKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy0xMjYtXHRcdFx0ZGF0YV9yZXRyeV9saW1pdCA9IElXTEFHTl9NR01UX0RGQVVMVF9SRVRSWV9MSU1JVDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jPTI2MD1pbnQgaXdsYWduX3R4X3NrYihzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy0yOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jOjI5NjpcdGlmICh1bmxpa2VseShpZWVlODAyMTFfaXNfcHJvYmVfcmVzcChmYykpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jLTI5Ny1cdFx0c3RydWN0IGl3bF93aXBhbl9ub2FfZGF0YSAqbm9hX2RhdGEgPVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaD0xNj1lbnVtIGl3bF9tYWNfY29uZl9zdWJjbWRfaWRzIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9tYWMtY2ZnLmgtMTE3LVx0LyoqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9tYWMtY2ZnLmg6MTE4Olx0ICogQFBST0JFX1JFU1BPTlNFX0RBVEFfTk9USUY6IFx1MDAyNnN0cnVjdCBpd2xfcHJvYmVfcmVzcF9kYXRhX25vdGlmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9tYWMtY2ZnLmgtMTE5LVx0ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oLTEzNS0vKipcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaDoxMzY6ICogc3RydWN0IGl3bF9wMnBfbm9hX2F0dHIgLSBOT0EgYXR0ciBjb250YWluZWQgaW4gcHJvYmUgcmVzcCBGVyBub3RpZmljYXRpb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC0xMzctICpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9tYWMtY2ZnLmg9MTQ2PXN0cnVjdCBpd2xfcDJwX25vYV9hdHRyIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9tYWMtY2ZnLmgtMTU4LS8qKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oOjE1OTogKiBzdHJ1Y3QgaXdsX3Byb2JlX3Jlc3BfZGF0YV9ub3RpZiAtIG5vdGlmaWNhdGlvbiB3aXRoIE5PQSBhbmQgQ1NBIGNvdW50ZXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC0xNjAtICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaDoxNjE6ICogQG1hY19pZDogdGhlIG1hYyB3aGljaCBzaG91bGQgc2VuZCB0aGUgcHJvYmUgcmVzcG9uc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC0xNjItICogQG5vYV9hY3RpdmU6IG5vdGlmaWVzIGlmIHRoZSBub2EgYXR0cmlidXRlIHNob3VsZCBiZSBoYW5kbGVkXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oLTE2Ni0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaDoxNjc6c3RydWN0IGl3bF9wcm9iZV9yZXNwX2RhdGFfbm90aWYge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oLTE2OC1cdF9fbGUzMiBtYWNfaWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oPTMyMT1zdHJ1Y3QgaXdsX21hY19wMnBfZGV2X2RhdGEge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC0zMzItICogQE1BQ19DRkdfRklMVEVSX0FDQ0VQVF9CRUFDT046IGFjY2VwdCBiZWFjb24gZnJhbWVzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9tYWMtY2ZnLmg6MzMzOiAqIEBNQUNfQ0ZHX0ZJTFRFUl9BQ0NFUFRfQkNBU1RfUFJPQkVfUkVTUDogYWNjZXB0IGJyb2FkY2FzdCBwcm9iZSByZXNwb25zZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oOjMzNDogKiBATUFDX0NGR19GSUxURVJfQUNDRVBUX1BST0JFX1JFUTogYWNjZXB0IHByb2JlIHJlcXVlc3RzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9tYWMtY2ZnLmgtMzM1LSAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaD02ODI9c3RydWN0IGl3bF9saW5rX2NvbmZpZ19jbWQge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC03NDQtICogQFNUQVRJT05fVFlQRV9CQ0FTVF9NR01UOiBUaGUgc3RhdGlvbiB1c2VkIHRvIHNlbmQgYmVhY29ucyBhbmRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaDo3NDU6ICpcdHByb2JlIHJlc3BvbnNlcy4gQWxzbyB1c2VkIGZvciB0cmFmZmljIGluamVjdGlvbiBpbiBzbmlmZmVyIG1vZGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC03NDYtICogQFNUQVRJT05fVFlQRV9NQ0FTVDogdGhlIHN0YXRpb24gdXNlZCBmb3IgQkNBU1QgLyBNQ0FTVCBpbiBHTy4gV2lsbCBiZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy5oPTIxOT1zdHJ1Y3QgaXdsX21hY19kYXRhX3AycF9kZXYge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy5oLTIzNC0gKiBATUFDX0ZJTFRFUl9JTl9DUkMzMjogZXh0cmFjdCBGQ1MgYW5kIGFwcGVuZCBpdCB0byBmcmFtZXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy5oOjIzNTogKiBATUFDX0ZJTFRFUl9JTl9QUk9CRV9SRVFVRVNUOiBwYXNzIHByb2JlIHJlcXVlc3RzIHRvIGhvc3RcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy5oLTIzNi0gKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg9MjIzPXN0cnVjdCBpd2xfc2Nhbl9jaGFubmVsX2NmZ19sbWFjIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMjMwLS8qKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjIzMTogKiBzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfc2VnbWVudCAtIFBST0JFX1NFR01FTlRfQVBJX1NfVkVSXzFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0yMzItICogQG9mZnNldDogb2Zmc2V0IGluIHRoZSBkYXRhIGJsb2NrXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTIzNC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoyMzU6c3RydWN0IGl3bF9zY2FuX3Byb2JlX3NlZ21lbnQge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTIzNi1cdF9fbGUxNiBvZmZzZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTI0MC0vKipcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoyNDE6ICogc3RydWN0IGl3bF9zY2FuX3Byb2JlX3JlcV92MSAtIFBST0JFX1JFUVVFU1RfRlJBTUVfQVBJX1NfVkVSXzJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoyNDI6ICogQG1hY19oZWFkZXI6IGZpcnN0IChhbmQgY29tbW9uKSBwYXJ0IG9mIHRoZSBwcm9iZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTI0My0gKiBAYmFuZF9kYXRhOiBiYW5kIHNwZWNpZmljIGRhdGFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoyNDQ6ICogQGNvbW1vbl9kYXRhOiBsYXN0IChhbmQgY29tbW9uKSBwYXJ0IG9mIHRoZSBwcm9iZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTI0NS0gKiBAYnVmOiByYXcgZGF0YSBibG9ja1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTI0Ni0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoyNDc6c3RydWN0IGl3bF9zY2FuX3Byb2JlX3JlcV92MSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MjQ4Olx0c3RydWN0IGl3bF9zY2FuX3Byb2JlX3NlZ21lbnQgbWFjX2hlYWRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoyNDk6XHRzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfc2VnbWVudCBiYW5kX2RhdGFbU0NBTl9OVU1fQkFORF9QUk9CRV9EQVRBX1ZfMV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MjUwOlx0c3RydWN0IGl3bF9zY2FuX3Byb2JlX3NlZ21lbnQgY29tbW9uX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMjUxLVx0dTggYnVmW1NDQU5fT0ZGTE9BRF9QUk9CRV9SRVFfU0laRV07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTI1NC0vKipcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoyNTU6ICogc3RydWN0IGl3bF9zY2FuX3Byb2JlX3JlcSAtIFBST0JFX1JFUVVFU1RfRlJBTUVfQVBJX1NfVkVSX3YyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MjU2OiAqIEBtYWNfaGVhZGVyOiBmaXJzdCAoYW5kIGNvbW1vbikgcGFydCBvZiB0aGUgcHJvYmVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0yNTctICogQGJhbmRfZGF0YTogYmFuZCBzcGVjaWZpYyBkYXRhXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MjU4OiAqIEBjb21tb25fZGF0YTogbGFzdCAoYW5kIGNvbW1vbikgcGFydCBvZiB0aGUgcHJvYmVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0yNTktICogQGJ1ZjogcmF3IGRhdGEgYmxvY2tcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0yNjAtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MjYxOnN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9yZXEge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjI2MjpcdHN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9zZWdtZW50IG1hY19oZWFkZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MjYzOlx0c3RydWN0IGl3bF9zY2FuX3Byb2JlX3NlZ21lbnQgYmFuZF9kYXRhW1NDQU5fTlVNX0JBTkRfUFJPQkVfREFUQV9WXzJdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjI2NDpcdHN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9zZWdtZW50IGNvbW1vbl9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTI2NS1cdHU4IGJ1ZltTQ0FOX09GRkxPQURfUFJPQkVfUkVRX1NJWkVdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD0yODY9c3RydWN0IGl3bF9zY2FuX2NoYW5uZWxfb3B0IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMjkyLSAqIGVudW0gaXdsX212bV9sbWFjX3NjYW5fZmxhZ3MgLSBMTUFDIHNjYW4gZmxhZ3NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoyOTM6ICogQElXTF9NVk1fTE1BQ19TQ0FOX0ZMQUdfUEFTU19BTEw6IHBhc3MgYWxsIGJlYWNvbnMgYW5kIHByb2JlIHJlc3BvbnNlc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTI5NC0gKlx0d2l0aG91dCBmaWx0ZXJpbmcuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTMwMC0gKiBASVdMX01WTV9MTUFDX1NDQU5fRkxBR1NfUlJNX0VOQUJMRUQ6IGluc2VydCBXRkEgdmVuZG9yLXNwZWNpZmljIFRQQyByZXBvcnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDozMDE6ICpcdGFuZCBEUyBwYXJhbWV0ZXIgc2V0IElFcyBpbnRvIHByb2JlIHJlcXVlc3RzLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTMwMi0gKiBASVdMX01WTV9MTUFDX1NDQU5fRkxBR19FWFRFTkRFRF9EV0VMTDogdXNlIGV4dGVuZGVkIGR3ZWxsIHRpbWUgb24gY2hhbm5lbHNcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg9MzI0PWVudW0gaXdsX3NjYW5fcHJpb3JpdHlfZXh0IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMzU3LSAqIEBjaGFubmVsX29wdDogY2hhbm5lbCBvcHRpbWl6YXRpb24gb3B0aW9ucywgZm9yIGZ1bGwgYW5kIHBhcnRpYWwgc2NhblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjM1ODogKiBAZGF0YTogY2hhbm5lbCBjb25maWd1cmF0aW9uIGFuZCBwcm9iZSByZXF1ZXN0IHBhY2tldC5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0zNTktICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg9MzYwPXN0cnVjdCBpd2xfc2Nhbl9yZXFfbG1hYyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTM5MS0gKiBAYmFuZDogMCBmb3IgNS4yIEdIeiwgMSBmb3IgMi40IEdIelxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjM5MjogKiBAcHJvYmVfc3RhdHVzOiBTQ0FOX1BST0JFX1NUQVRVU18qLCBpbmRpY2F0ZXMgc3VjY2VzcyBvZiBwcm9iZSByZXF1ZXN0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MzkzOiAqIEBudW1fcHJvYmVfbm90X3NlbnQ6ICMgb2YgcmVxdWVzdCB0aGF0IHdlcmVuJiMzOTt0IHNlbnQgZHVlIHRvIG5vdCBlbm91Z2ggdGltZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTM5NC0gKiBAZHVyYXRpb246IGR1cmF0aW9uIHNwZW50IGluIGNoYW5uZWwsIGluIHVzZWNzXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oPTM5Nj1zdHJ1Y3QgaXdsX3NjYW5fcmVzdWx0c19ub3RpZiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTM5OC1cdHU4IGJhbmQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6Mzk5Olx0dTggcHJvYmVfc3RhdHVzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjQwMDpcdHU4IG51bV9wcm9iZV9ub3Rfc2VudDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC00MDEtXHRfX2xlMzIgZHVyYXRpb247XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oPTUxNj1zdHJ1Y3QgaXdsX3NjYW5fZHdlbGwge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC01MzEtICogQGR3ZWxsOlx0XHRcdGR3ZWxscyBmb3IgdGhlIHNjYW5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo1MzI6ICogQG1hY19hZGRyOlx0XHRcdGRlZmF1bHQgbWFjIGFkZHJlc3MgdG8gYmUgdXNlZCBpbiBwcm9iZXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC01MzMtICogQGJjYXN0X3N0YV9pZDpcdFx0dGhlIGluZGV4IG9mIHRoZSBzdGF0aW9uIGluIHRoZSBmd1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD01Mzg9c3RydWN0IGl3bF9zY2FuX2NvbmZpZ192MSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTU2NC0gKiBAZHdlbGw6XHRcdFx0ZHdlbGxzIGZvciB0aGUgc2NhblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjU2NTogKiBAbWFjX2FkZHI6XHRcdFx0ZGVmYXVsdCBtYWMgYWRkcmVzcyB0byBiZSB1c2VkIGluIHByb2Jlc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTU2Ni0gKiBAYmNhc3Rfc3RhX2lkOlx0XHR0aGUgaW5kZXggb2YgdGhlIHN0YXRpb24gaW4gdGhlIGZ3XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oPTYyMz1lbnVtIGl3bF91bWFjX3NjYW5fZ2VuZXJhbF9mbGFncyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTYzNS1cdC8qIEV4dGVuZGVkIGR3ZWxsIGlzIG9ic2VsZXRlIHdoZW4gYWRhcHRpdmUgZHdlbGwgaXMgdXNlZCwgbWFraW5nIHRoaXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo2MzY6XHQgKiBiaXQgcmV1c2FibGUuIEhlbmNlLCBwcm9iZSByZXF1ZXN0IGRlZmVyIGlzIHVzZWQgb25seSB3aGVuIGFkYXB0aXZlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtNjM3LVx0ICogZHdlbGwgaXMgc3VwcG9ydGVkLiAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD02NTQ9ZW51bSBpd2xfdW1hY19zY2FuX2dlbmVyYWxfZmxhZ3MyIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtNjY1LSAqIEBJV0xfVU1BQ19TQ0FOX0dFTl9GTEFHU19WMl9QRVJJT0RJQzogcGVyaW9kaWMgb3Igc2NoZWR1bGVkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6NjY2OiAqIEBJV0xfVU1BQ19TQ0FOX0dFTl9GTEFHU19WMl9QQVNTX0FMTDogcGFzcyBhbGwgcHJvYmUgcmVzcG9uc2VzIGFuZCBiZWFjb25zXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtNjY3LSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHNjYW4gaXRlcmF0aW9uc1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC02ODgtICogICAgICBcdTAwMjZJV0xfVU1BQ19TQ0FOX0dFTl9GTEFHU19WMl82R0haX1BBU1NJVkVfU0NBTiBpcyBlbmFibGVkIGFuZCBzY2FuIGlzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6Njg5OiAqICAgICAgYWN0aXZhdGVkIG92ZXIgNkdIeiBQU0MgY2hhbm5lbHMsIGZpbHRlciBpbiBiZWFjb25zIGFuZCBwcm9iZSByZXNwb25zZXMuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6NjkwOiAqIEBJV0xfVU1BQ19TQ0FOX0dFTl9GTEFHU19WMl9PQ0U6IGlmIHNldCwgc2VuZCBwcm9iZSByZXF1ZXN0cyBpbiBhIG1pbmltdW1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo2OTE6ICogICAgICByYXRlIG9mIDUuNU1wYnMsIGZpbHRlciBpbiBicm9hZGNhc3QgcHJvYmUgcmVzcG9uc2VzIGFuZCBzZXQgdGhlIG1heFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTY5Mi0gKiAgICAgIGNoYW5uZWwgdGltZSBpbmRpY2F0aW9uIGZpZWxkIGluIHRoZSBGSUxTIHJlcXVlc3QgcGFyYW1ldGVycyBlbGVtZW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6NjkzOiAqICAgICAgKGlmIGluY2x1ZGVkIGJ5IHRoZSBkcml2ZXIgaW4gdGhlIHByb2JlIHJlcXVlc3QgSUVzKS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC02OTQtICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oPTc4OD1zdHJ1Y3QgaXdsX3NjYW5fcmVxX3VtYWNfdGFpbF92MSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTc5My1cdC8qIFNDQU5fUFJPQkVfUEFSQU1TX0FQSV9TX1ZFUl8xICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6Nzk0Olx0c3RydWN0IGl3bF9zY2FuX3Byb2JlX3JlcV92MSBwcmVxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTc5NS1cdHN0cnVjdCBpd2xfc3NpZF9pZSBkaXJlY3Rfc2NhbltQUk9CRV9PUFRJT05fTUFYXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtODAzLSAqIEByZXNlcnZlZDogZm9yIGZ1dHVyZSB1c2UgYW5kIGFsaWdubWVudFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjgwNDogKiBAcHJlcTogcHJvYmUgcmVxdWVzdCB3aXRoIElFcyBibG9ja3NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC04MDUtICogQGRpcmVjdF9zY2FuOiBsaXN0IG9mIFNTSURzIGZvciBkaXJlY3RlZCBhY3RpdmUgc2NhblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD04MDc9c3RydWN0IGl3bF9zY2FuX3JlcV91bWFjX3RhaWxfdjIge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC04MTItXHQvKiBTQ0FOX1BST0JFX1BBUkFNU19BUElfU19WRVJfMiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjgxMzpcdHN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9yZXEgcHJlcTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC04MTQtXHRzdHJ1Y3QgaXdsX3NzaWRfaWUgZGlyZWN0X3NjYW5bUFJPQkVfT1BUSU9OX01BWF07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oPTg2Mz1zdHJ1Y3QgaXdsX3NjYW5fcmVxX3VtYWMge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC05NDUtLyoqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6OTQ2OiAqIHN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9wYXJhbXNfdjMgLSBzY2FuIHByb2JlIHBhcmFtZXRlcnNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo5NDc6ICogQHByZXE6IHNjYW4gcHJvYmUgcmVxdWVzdCBwYXJhbXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC05NDgtICogQHNzaWRfbnVtOiBudW1iZXIgb2YgdmFsaWQgU1NJRHMgaW4gZGlyZWN0IHNjYW4gYXJyYXlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtOTU1LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjk1NjpzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfcGFyYW1zX3YzIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo5NTc6XHRzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfcmVxIHByZXE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtOTU4LVx0dTggc3NpZF9udW07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTk2Ny0vKipcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo5Njg6ICogc3RydWN0IGl3bF9zY2FuX3Byb2JlX3BhcmFtc192NCAtIHNjYW4gcHJvYmUgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjk2OTogKiBAcHJlcTogc2NhbiBwcm9iZSByZXF1ZXN0IHBhcmFtc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTk3MC0gKiBAc2hvcnRfc3NpZF9udW06IG51bWJlciBvZiB2YWxpZCBzaG9ydCBTU0lEcyBpbiBzaG9ydCBzc2lkIGFycmF5XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTk3Ni0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo5Nzc6c3RydWN0IGl3bF9zY2FuX3Byb2JlX3BhcmFtc192NCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6OTc4Olx0c3RydWN0IGl3bF9zY2FuX3Byb2JlX3JlcSBwcmVxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTk3OS1cdHU4IHNob3J0X3NzaWRfbnVtO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD0xMDk3PXN0cnVjdCBpd2xfc2Nhbl9wZXJpb2RpY19wYXJtc192MSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTExMDctICogQHBlcmlvZGljX3BhcmFtczogXHUwMDI2c3RydWN0IGl3bF9zY2FuX3BlcmlvZGljX3Bhcm1zX3YxXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MTEwODogKiBAcHJvYmVfcGFyYW1zOiBcdTAwMjZzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfcGFyYW1zX3YzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMTEwOS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD0xMTEwPXN0cnVjdCBpd2xfc2Nhbl9yZXFfcGFyYW1zX3YxMiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTExMTMtXHRzdHJ1Y3QgaXdsX3NjYW5fcGVyaW9kaWNfcGFybXNfdjEgcGVyaW9kaWNfcGFyYW1zO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjExMTQ6XHRzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfcGFyYW1zX3YzIHByb2JlX3BhcmFtcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0xMTE1LX0gX19wYWNrZWQ7IC8qIFNDQU5fUkVRVUVTVF9QQVJBTVNfQVBJX1NfVkVSXzEyICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTExMjEtICogQHBlcmlvZGljX3BhcmFtczogXHUwMDI2c3RydWN0IGl3bF9zY2FuX3BlcmlvZGljX3Bhcm1zX3YxXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MTEyMjogKiBAcHJvYmVfcGFyYW1zOiBcdTAwMjZzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfcGFyYW1zX3Y0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMTEyMy0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD0xMTI0PXN0cnVjdCBpd2xfc2Nhbl9yZXFfcGFyYW1zX3YxNyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTExMjctXHRzdHJ1Y3QgaXdsX3NjYW5fcGVyaW9kaWNfcGFybXNfdjEgcGVyaW9kaWNfcGFyYW1zO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjExMjg6XHRzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfcGFyYW1zX3Y0IHByb2JlX3BhcmFtcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0xMTI5LX0gX19wYWNrZWQ7IC8qIFNDQU5fUkVRVUVTVF9QQVJBTVNfQVBJX1NfVkVSXzE3IC0gMTQgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMTEzNS0gKiBAcGVyaW9kaWNfcGFyYW1zOiBcdTAwMjZzdHJ1Y3QgaXdsX3NjYW5fcGVyaW9kaWNfcGFybXNfdjFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoxMTM2OiAqIEBwcm9iZV9wYXJhbXM6IFx1MDAyNnN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9wYXJhbXNfdjRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0xMTM3LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oPTExMzg9c3RydWN0IGl3bF9zY2FuX3JlcV9wYXJhbXNfdjE4IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMTE0MS1cdHN0cnVjdCBpd2xfc2Nhbl9wZXJpb2RpY19wYXJtc192MSBwZXJpb2RpY19wYXJhbXM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MTE0MjpcdHN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9wYXJhbXNfdjQgcHJvYmVfcGFyYW1zO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTExNDMtfSBfX3BhY2tlZDsgLyogU0NBTl9SRVFVRVNUX1BBUkFNU19BUElfU19WRVJfMTggKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zdGEuaD0yNDI9c3RydWN0IGl3bF9tdm1fYWRkX3N0YV9jbWRfdjcge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3N0YS5oLTI2OC0gKiBASVdMX1NUQV9HRU5FUkFMX1BVUlBPU0U6IEdlbmVyYWwgcHVycG9zZS4gSW4gQVAgbW9kZSB1c2VkIGZvciBiZWFjb25zXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zdGEuaDoyNjk6ICpcdGFuZCBwcm9iZSByZXNwb25zZXMuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zdGEuaC0yNzAtICogQElXTF9TVEFfTVVMVElDQVNUOiBtdWx0aWNhc3QgdHJhZmZpYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zdGF0cy5oPTE5PXN0cnVjdCBtdm1fc3RhdGlzdGljc19kaXYge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3N0YXRzLmgtMjItXHRfX2xlMzIgZXhlY190aW1lO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc3RhdHMuaDoyMzpcdF9fbGUzMiBwcm9iZV90aW1lO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc3RhdHMuaC0yNC1cdF9fbGUzMiByc3NpX2FudDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS90eC5oLTMwLSAqIEBUWF9DTURfRkxHX1RTRjogRlcgc2hvdWxkIGNhbGN1bGF0ZSBhbmQgaW5zZXJ0IFRTRiBpbiB0aGUgZnJhbWVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3R4Lmg6MzE6ICpcdFNob3VsZCBiZSBzZXQgZm9yIGJlYWNvbnMgYW5kIHByb2JlIHJlc3BvbnNlc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvdHguaC0zMi0gKiBAVFhfQ01EX0ZMR19DQUxJQjogYWN0aXZhdGUgUEEgVFggcG93ZXIgY2FsaWJyYXRpb25zXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvdHhxLmgtMjUtICogQElXTF9NVk1fRFFBX01BWF9NR01UX1FVRVVFOiBsYXN0IFRYUSBpbiBwb29sIGZvciBNR01UIGZyYW1lc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvdHhxLmg6MjY6ICogQElXTF9NVk1fRFFBX0FQX1BST0JFX1JFU1BfUVVFVUU6IGEgcXVldWUgcmVzZXJ2ZWQgZm9yIFAyUCBHTy9Tb2Z0QVAgcHJvYmVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3R4cS5oLTI3LSAqXHRyZXNwb25zZXNcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaD0xNzE9c3RydWN0IGl3bF91Y29kZV9jYXBhIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaC0xODctICpcdChyYXRoZXIgdGhhbiB0d28pIElQdjYgYWRkcmVzc2VzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaDoxODg6ICogQElXTF9VQ09ERV9UTFZfRkxBR1NfTk9fQkFTSUNfU1NJRDogbm90IHNlbmRpbmcgYSBwcm9iZSB3aXRoIHRoZSBTU0lEIGVsZW1lbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oOjE4OTogKlx0ZnJvbSB0aGUgcHJvYmUgcmVxdWVzdCB0ZW1wbGF0ZS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oLTE5MC0gKiBASVdMX1VDT0RFX1RMVl9GTEFHU19ORVdfTlNPRkZMX1NNQUxMOiBuZXcgTlMgb2ZmbG9hZCAoc21hbGwgdmVyc2lvbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaD0zMjY9dHlwZWRlZiB1bnNpZ25lZCBpbnQgX19iaXR3aXNlIGl3bF91Y29kZV90bHZfY2FwYV90O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oLTMzOC0gKiBASVdMX1VDT0RFX1RMVl9DQVBBX0RTX1BBUkFNX1NFVF9JRV9TVVBQT1JUOiBzdXBwb3J0cyB1cGRhdGluZyBjdXJyZW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaDozMzk6ICpcdGNoYW5uZWwgaW4gRFMgcGFyYW1ldGVyIHNldCBlbGVtZW50IGluIHByb2JlIHJlcXVlc3RzLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmgtMzQwLSAqIEBJV0xfVUNPREVfVExWX0NBUEFfV0ZBX1RQQ19SRVBfSUVfU1VQUE9SVDogc3VwcG9ydHMgYWRkaW5nIFRQQyBSZXBvcnQgSUUgaW5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oOjM0MTogKlx0cHJvYmUgcmVxdWVzdHMuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaC0zNDItICogQElXTF9VQ09ERV9UTFZfQ0FQQV9RVUlFVF9QRVJJT0RfU1VQUE9SVDogc3VwcG9ydHMgUXVpZXQgUGVyaW9kIHJlcXVlc3RzXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmg9NDU3PWVudW0gaXdsX3Vjb2RlX3Rsdl9jYXBhIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaC01NzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaDo1NzY6LyogVGhlIGRlZmF1bHQgbWF4IHByb2JlIGxlbmd0aCBpZiBub3Qgc3BlY2lmaWVkIGJ5IHRoZSBmaXJtd2FyZSBmaWxlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaC01NzctI2RlZmluZSBJV0xfREVGQVVMVF9NQVhfUFJPQkVfTEVOR1RIXHQyMDBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ltZy5oPTQ2PXN0cnVjdCBpd2xfdWNvZGVfY2FwYWJpbGl0aWVzIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvaW1nLmg6NDc6XHR1MzIgbWF4X3Byb2JlX2xlbmd0aDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvaW1nLmgtNDgtXHR1MzIgbl9zY2FuX2NoYW5uZWxzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTc5Mj1zdGF0aWMgaW50IGl3bF9wYXJzZV90bHZfZmlybXdhcmUoc3RydWN0IGl3bF9kcnYgKmRydixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy05MTItXHRcdFx0XHRnb3RvIGludmFsaWRfdGx2X2xlbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjkxMzpcdFx0XHRjYXBhLVx1MDAzZW1heF9wcm9iZV9sZW5ndGggPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtOTE0LVx0XHRcdFx0XHRsZTMyX3RvX2NwdXAoKGNvbnN0IF9fbGUzMiAqKXRsdl9kYXRhKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz0xNjQ0PXN0YXRpYyB2b2lkIGl3bF9yZXFfZndfY2FsbGJhY2soY29uc3Qgc3RydWN0IGZpcm13YXJlICp1Y29kZV9yYXcsIHZvaWQgKmNvbnRleHQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTY2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjE2NjI6XHRmdy1cdTAwM2V1Y29kZV9jYXBhLm1heF9wcm9iZV9sZW5ndGggPSBJV0xfREVGQVVMVF9NQVhfUFJPQkVfTEVOR1RIO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTY2My1cdGZ3LVx1MDAzZXVjb2RlX2NhcGEuc3RhbmRhcmRfcGh5X2NhbGlicmF0aW9uX3NpemUgPVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTMyLSAqIFRoaXMgY29tcG9uZW50IGltcGxlbWVudHMgdGhlIHN5c3RlbSBmbG93cyBzdWNoIGFzIGJ1cyBlbnVtZXJhdGlvbiwgYnVzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaDozMzogKiByZW1vdmFsLiBCdXMgZGVwZW5kZW50IHBhcnRzIG9mIHN5c3RlbSBmbG93cyAoc3VjaCBhcyBpd2xfcGNpX3Byb2JlKSBhcmUgaW5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTM0LSAqIGJ1cyBzcGVjaWZpYyBmaWxlcyAodHJhbnNwb3J0IGZpbGVzKS4gVGhpcyBpcyB0aGUgY29kZSB0aGF0IGlzIGNvbW1vbiBhbW9uZ1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTQ0LSAqIDIpIFRoZSBidXMgc3BlY2lmaWMgY29tcG9uZW50IHJlZ2lzdGVycyB0aGUgYnVzIGRyaXZlclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6NDU6ICogMykgVGhlIGJ1cyBkcml2ZXIgY2FsbHMgdGhlIHByb2JlIGZ1bmN0aW9uXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC00Ni0gKiA0KSBUaGUgYnVzIHNwZWNpZmljIGNvbXBvbmVudCBjb25maWd1cmVzIHRoZSBidXNcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaD01Nj1zdHJ1Y3QgaXdsX3JmX2NmZztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC02Mi0gKiBzdGFydHMgdGhlIGRyaXZlcjogZmV0Y2hlcyB0aGUgZmlybXdhcmUuIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBieSBidXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oOjYzOiAqIHNwZWNpZmljIHN5c3RlbSBmbG93cyBpbXBsZW1lbnRhdGlvbnMuIEZvciBleGFtcGxlLCB0aGUgYnVzIHNwZWNpZmljIHByb2JlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC02NC0gKiBmdW5jdGlvbiBzaG91bGQgZG8gYnVzIHJlbGF0ZWQgb3BlcmF0aW9ucyBvbmx5LCBhbmQgdGhlbiBjYWxsIHRvIHRoaXNcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jPTcwPXZvaWQgaXdsX3RyYW5zX2ZyZWVfcmVzdGFydF9saXN0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy04MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6ODE6c3RydWN0IGl3bF90cmFuc19yZXByb2JlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtODItXHRzdHJ1Y3QgZGV2aWNlICpkZXY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy04NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6ODY6c3RhdGljIHZvaWQgaXdsX3RyYW5zX3JlcHJvYmVfd2soc3RydWN0IHdvcmtfc3RydWN0ICp3aylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtODcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzo4ODpcdHN0cnVjdCBpd2xfdHJhbnNfcmVwcm9iZSAqcmVwcm9iZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjkwOlx0cmVwcm9iZSA9IGNvbnRhaW5lcl9vZih3aywgdHlwZW9mKCpyZXByb2JlKSwgd29yay53b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjkyOlx0aWYgKGRldmljZV9yZXByb2JlKHJlcHJvYmUtXHUwMDNlZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6OTM6XHRcdGRldl9lcnIocmVwcm9iZS1cdTAwM2VkZXYsIFwmIzM0O3JlcHJvYmUgZmFpbGVkIVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjk0Olx0cHV0X2RldmljZShyZXByb2JlLVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjk1Olx0a2ZyZWUocmVwcm9iZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTk2LVx0bW9kdWxlX3B1dChUSElTX01PRFVMRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy05OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6OTk6c3RhdGljIHZvaWQgaXdsX3RyYW5zX3NjaGVkdWxlX3JlcHJvYmUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTEwMC1cdFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgZGVsYXlfbXMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTEwMS17XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU2NzQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgYGl3bF90cmFuc19zY2hlZHVsZV9yZXByb2JlYCBDYWxsKioKCk9rYXksIHNvIGBpd2xfdHJhbnNfc2NoZWR1bGVfcmVwcm9iZWAgaXMgY2FsbGluZyBgZGV2aWNlX3JlcHJvYmVgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtSaWdodCwgdGhlIGRldmljZSBoYXMgdG8gZXhpc3QgZm9yIHRoYXQgdG8gZXZlbiAqaGFwcGVuKi4mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gTm93LCBJJiMzOTttIHRyeWluZyB0byByZWNhbGwg4oCTIGlzIHRoZXJlIGEgdmlydHVhbCBkZXZpY2UgZHJpdmVyIGZvciBgaXdsd2lmaWA/IEkgZG9uJiMzOTt0IHRoaW5rIHNvLCBidXQgSSBuZWVkIHRvIGJlIGNlcnRhaW4uIE5vcGUsIG5vdGhpbmcgY29tZXMgdG8gbWluZC4KCkFscmlnaHQsIGEgbW9yZSBwcmVzc2luZyBxdWVzdGlvbiBpcywgY2FuIEkgZXZlbiAqcmVhY2gqIHRoaXMgY29kZSB3aXRoIHN5emthbGxlcj8gVGhhdCYjMzk7cyB0aGUgcmVhbCB0ZXN0LiBTeXprYWxsZXIgY2FuIGZ1enogVVNCIGRldmljZXMgdXNpbmcgYGR1bW15X2hjZGAgYW5kIGVtdWxhdGUgYSBVU0IgZ2FkZ2V0LiBTbywgSSBuZWVkIHRvIGNoZWNrIGlmIGl3bHdpZmkgaGFzIGEgVVNCIGRyaXZlciB0aGF0IHN5emthbGxlciBtaWdodCBiZSBhYmxlIHRvIGludGVyYWN0IHdpdGg/IExldCYjMzk7cyBjaGVjay4gVGltZSB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxOTo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VzYl9yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxOTo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjAyNQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6CgoqKlRoZSBQZXJpcGhlcmFsIERpbGVtbWEqKgoKUmlnaHQsIG5vIFVTQiBkcml2ZXLigKYgdGhhdCYjMzk7cyBhIHNpZ25pZmljYW50IHJvYWRibG9jay4gV2UmIzM5O3JlIG9idmlvdXNseSBsYWNraW5nIHRoZSBwcm9wZXIgaW50ZXJmYWNlIHRvIGhhbmRsZSBkYXRhIGV4Y2hhbmdlIHdpdGggZXh0ZXJuYWwgZGV2aWNlcy4gRm9yZ2V0IHRoZSBvYnZpb3VzIHNvbHV0aW9ucyBhbmQgd29ya2Fyb3VuZHMgZm9yIHRoZSBtb21lbnQuIExldCYjMzk7cyBkaWcgZGVlcGVyLiBXaGF0IG90aGVyIG9wdGlvbnMgYXJlIHRoZXJlPyBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGEgd2VsbC1lc3RhYmxpc2hlZCBzdGFuZGFyZCBmb3IgZW1iZWRkZWQgc3lzdGVtczogKipTRElPKiouIElzIHRoYXQgYSB2aWFibGUgYWx0ZXJuYXRpdmUgaW4gdGhpcyBjb250ZXh0PyBDb25zaWRlcmluZyB0aGUgZGVzaWduIGNvbnN0cmFpbnRzIGFuZCB0aGUgZXhwZWN0ZWQgZnVuY3Rpb25hbGl0eSwgZG9lcyBpdCBhbGlnbiB3aXRoIHRoZSBwcm9qZWN0IHJlcXVpcmVtZW50cz8gV2UgbXVzdCBldmFsdWF0ZSB0aGUgZmVhc2liaWxpdHkgb2YgaW50ZWdyYXRpbmcgU0RJTyBhcyBhIHNlY29uZGFyeSBvciBwcmltYXJ5IGRhdGEgcGF0aHdheS4gSXMgaXQgd29ydGggdGhlIGVmZm9ydD8gV2hhdCBhYm91dCBwb3dlciBjb25zdW1wdGlvbiwgZGF0YSByYXRlcywgYW5kIGNvbXBhdGliaWxpdHk/IFdlIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgaWYgaXQmIzM5O3MgYSB3b3J0aHdoaWxlIGF2ZW51ZSB0byBleHBsb3JlLiBUaW1lIHRvIHB1bGwgdXAgdGhlIGRhdGFzaGVldHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2Rpb19yZWdpc3Rlcl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYyNzQKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0OTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJd2x3aWZpIERyaXZlciYjMzk7cyBBY2Nlc3NpYmlsaXR5IGluIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqCgpPa2F5LCBzbyB0aGUgYGl3bHdpZmlgIGRyaXZlciwgaXQmIzM5O3Mgc3RyaWN0bHkgUENJLCBub3QgU0RJTy4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkga25vdyB0aGlzIGlzIGEgcHJvYmxlbS4gU3l6a2FsbGVyIGRvZXNuJiMzOTt0IG9mZmVyIGEgZ2VuZXJpYyBQQ0kgZW11bGF0b3IgY2FwYWJsZSBvZiBpbmplY3RpbmcgYXJiaXRyYXJ5IFBDSSBkZXZpY2VzIGxpa2UgaXQgZG9lcyBmb3IgVVNCIHdpdGggYGR1bW15X2hjZGAuIEFuZCBRRU1VLCBhcyBmYXIgYXMgSSBrbm93LCBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoZSBgaXdsd2lmaWAgaGFyZHdhcmUgc3BlY2lmaWNhbGx5LiBUaGlzIG1lYW5zIHRoZSBkcml2ZXIgc2ltcGx5IHdvbiYjMzk7dCBwcm9iZSBpbiBhbnkgb2YgdGhlc2UgdmlydHVhbGl6ZWQgc2V0dXBzLgoKSWYgdGhlIGRyaXZlciAqbmV2ZXIqIHByb2JlcywgdGhlIGZpcm13YXJlIHJlcXVlc3QgbmV2ZXIgaGFwcGVucy4gVGhhdOKAmXMgY3J1Y2lhbC4gV2hpY2ggbWVhbnMgZnVuY3Rpb25zIGxpa2UgYGl3bF9wYXJzZV90bHZfZmlybXdhcmVgIGFuZCBgaXdsX2RiZ190bHZfcGFyc2VfYmluYCBhcmUgY29tcGxldGVseSBieXBhc3NlZC4gTGlrZXdpc2UsIGBpd2xfbXZtX2dldF9iaW9zX3RhYmxlc2Agd29uJiMzOTt0IGJlIGNhbGxlZCwgc28gd2Ugd29uJiMzOTt0IGhpdCBgaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGVgIG9yIGBpd2xfdWVmaV9nZXRfd2dkc190YWJsZWAgZWl0aGVyLgoKSGFuZyBvbiwgd2FpdCBhIHNlY29uZC4uLiBkb2VzIFN5emthbGxlciAqbWF5YmUqIGhhdmUgUENJIGZ1enppbmcgdXNpbmcgYHZmaW9gIG9yIGBwY2lfZW5kcG9pbnRfdGVzdGA/IEkgbmVlZCB0byBjb25zaWRlciB0aGF0LiBFdmVuIHRoZW4sIFBDSSBmdXp6aW5nIHVzdWFsbHkgbmVlZHMgYSBob3N0IGRldmljZSBleHBvc2VkIG9yIFFFTVUgZW11bGF0aW9uLiBBbmQgSSBkb27igJl0IHRoaW5rIFN5emthbGxlciBoYXMgYSBgc3l6X3BjaV9kZXZpY2VgIHN5c2NhbGwsIGRvZXMgaXQ/IE5vcGUuIE9rYXksIHdhaXQsIGl0IGhhcyBgc3l6X2t2bV9zZXR1cF9jcHVgIGFuZCBgc3l6X3VzYl9jb25uZWN0YC4gSSYjMzk7bGwgaGF2ZSB0byBkb3VibGUtY2hlY2sgZm9yIFBDSS1yZWxhdGVkIHBzZXVkby1zeXNjYWxscy4KCkkmIzM5O2QgaWRlYWxseSBjaGVjayB0aGUgU3l6a2FsbGVyIHNvdXJjZSBkaXJlY3RseSwgYnV0IEkgZG9uJiMzOTt0IGhhdmUgdGhhdCBhY2Nlc3MuIEhvd2V2ZXIsIGxvb2tpbmcgYmFjayBhdCB0aGUgcHJvbXB0LCBpdCBzYXlzOiAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLiYjMzQ7IFRoZSBwcm9tcHQgZXhwbGljaXRseSBsaXN0cyBgdXNiIGdhZGdldGAgYW5kIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIEkmIzM5O20gZmFtaWxpYXIgd2l0aCwgYnV0IGl0IGNvbXBsZXRlbHkgKmF2b2lkcyogbWVudGlvbmluZyBhbnkgUENJIGVtdWxhdG9yLCBiZWNhdXNlIHRoZXJlIGlzbiYjMzk7dCBhIGdlbmVyaWMgb25lIGluIHRoZSBrZXJuZWwgdGhhdCBTeXprYWxsZXIgY2FuIGxldmVyYWdlIHRvIGluamVjdCBhcmJpdHJhcnkgUENJIGRldmljZXMuCgpTbywgYWJzZW50IGEgUENJIGRldmljZSwgdGhlIGBpd2x3aWZpYCBkcml2ZXIgd2lsbCBqdXN0IHJlZ2lzdGVyIGl0cyBQQ0kgZHJpdmVyIHN0cnVjdCBhbmQgZG8gcHJlY2lzZWx5IG5vdGhpbmcgZWxzZS4gSeKAmW0gcXVpdGUgY29uZmlkZW50LiBUaGVyZWZvcmUsIHRoZSBjb2RlIHRoYXQmIzM5O3MgYmVlbiBtb2RpZmllZCBpbiB0aGlzIGNhc2Ugd2lsbCBiZSBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIGFueSBvZiB0aGVzZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIGRvdWJsZS1jaGVjayBpZiBgaXdsX2RiZ190bHZfcGFyc2VfYmluYCBtaWdodCBiZSBhY2Nlc3NpYmxlIHRocm91Z2ggZGVidWdmcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX2RiZ190bHZfcGFyc2VfYmluJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmM9NDE4PXZvaWQgaXdsX2RiZ190bHZfZnJlZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmMtNDcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5jOjQ3MzpzdGF0aWMgaW50IGl3bF9kYmdfdGx2X3BhcnNlX2JpbihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3QgdTggKmRhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmMtNDc0LVx0XHRcdFx0IHNpemVfdCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5jPTUwOD12b2lkIGl3bF9kYmdfdGx2X2xvYWRfYmluKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5jLTUyNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuYzo1MjY6XHRpd2xfZGJnX3Rsdl9wYXJzZV9iaW4odHJhbnMsIGZ3LVx1MDAzZWRhdGEsIGZ3LVx1MDAzZXNpemUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5jLTUyNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc3MzUKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIGBpd2xfZGJnX3Rsdl9sb2FkX2JpbmAqKgoKT2theSwgc28gdGhlIHByb21wdCBpcyBqdXN0ICYjMzQ7aXdsX2RiZ190bHZfbG9hZF9iaW4mIzM0OyAtIG15IGltbWVkaWF0ZSBpbnN0aW5jdCwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSwgaXMgdG8gZmlndXJlIG91dCB0aGUgY29udGV4dC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2hlcmUqIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20uIFRoYXQmIzM5O3MgdGhlIGNydWNpYWwgZmlyc3Qgc3RlcC4gSXMgaXQgY2FsbGVkIGZyb20gYSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2U/IFBlcmhhcHMgZHVyaW5nIGZpcm13YXJlIGxvYWRpbmc/IE9yIG1heWJlIGl0JiMzOTtzIHJlbGF0ZWQgdG8gc29tZSBzb3J0IG9mIGRlYnVnIGludGVyZmFjZSBvciBkZWJ1Z2dpbmcgdG9vbHM/IEtub3dpbmcgdGhlIGNhbGwgc2l0ZXMgd2lsbCBpbW1lZGlhdGVseSBnaXZlIG1lIHNpZ25pZmljYW50IGluc2lnaHQgaW50byBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlIG9mIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIuIEkgbmVlZCB0byB0cmFjZSBpdHMgY2FsbCBncmFwaCBhbmQgc2VlIHdobyBpcyBjYWxsaW5nIHdob20uIFdpdGhvdXQgdGhhdCBpbml0aWFsIHVuZGVyc3RhbmRpbmcsIEkmIzM5O20ganVzdCBndWVzc2luZywgYW5kIEkgZG9uJiMzOTt0IG9wZXJhdGUgb24gZ3Vlc3Nlcy4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxOTo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfZGJnX3Rsdl9sb2FkX2JpbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5jPTQ3Mz1zdGF0aWMgaW50IGl3bF9kYmdfdGx2X3BhcnNlX2JpbihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3QgdTggKmRhdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5jLTUwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuYzo1MDg6dm9pZCBpd2xfZGJnX3Rsdl9sb2FkX2JpbihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5jLTUwOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5oPTQ5PXN0cnVjdCBpd2xfZndfcnVudGltZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuaC01MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuaDo1MTp2b2lkIGl3bF9kYmdfdGx2X2xvYWRfYmluKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGl3bF90cmFucyAqdHJhbnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5oLTUyLXZvaWQgaXdsX2RiZ190bHZfZnJlZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9MTY0ND1zdGF0aWMgdm9pZCBpd2xfcmVxX2Z3X2NhbGxiYWNrKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqdWNvZGVfcmF3LCB2b2lkICpjb250ZXh0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE4OTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoxODkxOlx0aXdsX2RiZ190bHZfbG9hZF9iaW4oZHJ2LVx1MDAzZXRyYW5zLVx1MDAzZWRldiwgZHJ2LVx1MDAzZXRyYW5zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE4OTItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NDcwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIENvZGUmIzM5O3MgUmVhY2hhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBpd2xfcmVxX2Z3X2NhbGxiYWNrYC4gUmlnaHQsIHRoZSBzYW1lIG9sZCBwYXRoOiBQQ0kgcHJvYmUgLSZndDsgYGl3bF9kcnZfc3RhcnRgIC0mZ3Q7IGBpd2xfcmVxdWVzdF9maXJtd2FyZWAgLSZndDsgYGl3bF9yZXFfZndfY2FsbGJhY2tgLiBNYWtlcyBzZW5zZS4gV2l0aG91dCB0aGUgUENJIGRldmljZSwgdGhpcyBlbnRpcmUgc2VxdWVuY2UgaXMgYnlwYXNzZWQuCgpMZXQgbWUgdGhpbmsuLi4gSXMgdGhlcmUgKmFueSogb3RoZXIgY29uY2VpdmFibGUgcm91dGUgdG8gaGl0IGBpd2xfcmVxX2Z3X2NhbGxiYWNrYD8gTm9wZSwgaXQmIzM5O3MgYSBjYWxsYmFjayBzcGVjaWZpY2FsbHkgcGFzc2VkIHRvIGByZXF1ZXN0X2Zpcm13YXJlX25vd2FpdGAuIFRoZSBmdW5jdGlvbiBzZWVtcyBzb2xlbHkgdGllZCB0byBmaXJtd2FyZSByZXF1ZXN0cywgYW5kIHRob3NlIHJlcXVlc3RzIGFyZSBpbml0aWF0ZWQgc29sZWx5IHdpdGhpbiBgaXdsX2Rydl9zdGFydGAuIEFuZCBgaXdsX2Rydl9zdGFydGAsIHRoYXQmIzM5O3MganVzdCB0aGUgUENJIHByb2JlIGZ1bmN0aW9uJiMzOTtzIGJhYnkuCgpUaGVyZWZvcmUsIGFzIGl0IHN0YW5kcywgdGhhdCBzcGVjaWZpYyBwaWVjZSBvZiBtb2RpZmllZCBjb2RlIGlzIGNvbXBsZXRlbHkgaW5hY2Nlc3NpYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQg4oCTIG5vIGNoYW5jZSBpbiBoZWxsIHdpdGhvdXQgdGhhdCBwYXJ0aWN1bGFyIEludGVsIFdpLUZpIGhhcmR3YXJlLiBJIG5lZWQgdG8gbWFrZSBhIGp1ZGdtZW50IGNhbGwgaGVyZS4gSSYjMzk7bSBnb2luZyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIE15IHJlYXNvbmluZyBpcyBzb2xpZDogdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIuIFlvdSBjYW4mIzM5O3QgcHJvYmUgaXQgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHdoaWNoIHdvdWxkIG1ha2UgdGhlIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuCgpIYW5nIG9uLi4uIHdhaXQgYSBzZWNvbmQuIElzIHRoZXJlIGV2ZW4gYSBzbGl2ZXIgb2YgYSBjaGFuY2UgYGl3bHdpZmlgICpjb3VsZCogYmUgcHJvYmVkIHZpYSBhIHRlc3RpbmcgZnJhbWV3b3JrIG9mIHNvbWUga2luZD8gSSB2YWd1ZWx5IHJlY2FsbCBzZWVpbmcgc29tZXRoaW5nIGFib3V0IGBLVU5JVGAuLi4geWVwLCB0aGVyZSBpdCBpczogYElXTFdJRklfS1VOSVRfVEVTVFNgLiBBbHJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgd2hhdCB0aG9zZSBLVW5pdCB0ZXN0cyBhcmUgZG9pbmcuIE1heWJlLCBqdXN0IG1heWJlLCB0aGVyZSYjMzk7cyBhIGJhY2sgZG9vci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfZHJ2X3N0YXJ0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS90ZXN0cyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MTcwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIEVtcHR5IFNldCoqCgpXZWxsLCB0aGlzIGlz4oCmIGludGVyZXN0aW5nLiBUaGUgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGNsZWFyOiAmIzM0O05vIG1hdGNoZXMuJiMzNDsgTm8gaGl0cywgbm8gcmVsZXZhbnQgcmVzdWx0cywgbm90aGluZyB0byB3b3JrIHdpdGguIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgZGlhZ25vc2UgdGhlIHByb2JsZW0uIEFtIEkgdXNpbmcgdGhlIGNvcnJlY3Qgc2VhcmNoIHRlcm1zPyBIYXZlIEkgcHJvdmlkZWQgZW5vdWdoIGNvbnRleHR1YWwgaW5mb3JtYXRpb24/IElzIHRoZSBkYXRhIHNvdXJjZSBJJiMzOTttIHF1ZXJ5aW5nIGV2ZW4gcmVsaWFibGUgb3IgcmVsZXZhbnQgdG8gdGhlIHByb2JsZW0gSSYjMzk7bSB0cnlpbmcgdG8gc29sdmU/IE9yLCBpcyBpdCBwb3NzaWJsZSwgdGhhdCBJJiMzOTt2ZSBhbHJlYWR5IGV4cGxvcmVkIHRoaXMgYXJlYSBjb21wcmVoZW5zaXZlbHkgYW5kIHRoaXMgaXMgYSBjb25maXJtYXRpb24gb2YgbXkgcHJpb3IgYW5hbHlzaXMuCgpQZXJoYXBzIHRoaXMgbGFjayBvZiBtYXRjaGVzIGlzIHNpZ25pZmljYW50IGluIGl0c2VsZi4gRG9lcyB0aGlzICYjMzk7bm8gbWF0Y2gmIzM5OyByZXN1bHQgc2lnbmlmeSBhIGdhcCBpbiBvdXIgY3VycmVudCB1bmRlcnN0YW5kaW5nPyBPciwgbWF5YmUgaXQgcG9pbnRzIHRvIHRoZSBuZWVkIGZvciBhIHJhZGljYWxseSBkaWZmZXJlbnQgYXBwcm9hY2gsIGEgZGlmZmVyZW50IGZyYW1ld29yayBhbHRvZ2V0aGVyLCBvciBhIGNvbXBsZXRlbHkgbmV3IGxpbmUgb2YgaW52ZXN0aWdhdGlvbi4gSXQgY291bGQgZXZlbiBiZSB0aGF0IHRoZSBxdWVzdGlvbiBpdHNlbGYgaXMgZmxhd2VkLCBhbmQgbmVlZHMgdG8gYmUgcmVkZWZpbmVkIG9yIHJlZnJhbWVkLiBJJiMzOTtsbCBuZWVkIHRvIGdvIGJhY2ssIHJlYXNzZXNzIHRoZSBwYXJhbWV0ZXJzLCBhbmQgbWV0aWN1bG91c2x5IHNjcnV0aW5pemUgdGhlIGNvbmRpdGlvbnMgdGhhdCBzaG91bGQgaGF2ZSBnZW5lcmF0ZWQgYSByZXN1bHQsIHRvIHVuZGVyc3RhbmQgd2h5IEkmIzM5O20gaGVyZS4gVGhpcyBpcyBub3QgdGhlIGVuZDsgaXQmIzM5O3MgYSBjcml0aWNhbCBzdGFydGluZyBwb2ludCB0byBkZWVwZW4gbXkgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfcmVxX2Z3X2NhbGxiYWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS90ZXN0cyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NDkwCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIEVtcHR5IFNlYXJjaCBTcGFjZSoqCgpIbW0sICYjMzQ7bm8gbWF0Y2hlcy4mIzM0OyBUaGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcsIGlzbiYjMzk7dCBpdD8gQXMgYW4gZXhwZXJ0LCBJJiMzOTttIGltbWVkaWF0ZWx5IHJ1bm5pbmcgdGhyb3VnaCBhIG1lbnRhbCBjaGVja2xpc3Qgb2YgcG9zc2liaWxpdGllcy4gVGhlIGluaXRpYWwgYXNzdW1wdGlvbiBpcyBhbHdheXMgdGhlIHF1ZXJ5IGl0c2VsZi4gSXMgdGhlIHNlYXJjaCB0ZXJtIHRvbyBzcGVjaWZpYz8gVG9vIHZhZ3VlPyBJcyBpdCB1c2luZyB0aGUgY29ycmVjdCB0ZXJtaW5vbG9neSwgdGhlIHZlcm5hY3VsYXIgb2YgdGhlIGZpZWxkLCBvciBwZXJoYXBzIGEgbW9yZSBvYnNjdXJlLCB0ZWNobmljYWwgcGhyYXNpbmcgdGhhdCBJIGhhZG4mIzM5O3QgY29uc2lkZXJlZD8gSSYjMzk7bSBhbHJlYWR5IG1lbnRhbGx5IGNyb3NzLXJlZmVyZW5jaW5nIHN5bm9ueW1zLCByZWxhdGVkIGNvbmNlcHRzLCBhbmQgcG90ZW50aWFsIGJyb2FkZXIgY2F0ZWdvcmllcyB0aGUgc2VhcmNoIG1pZ2h0IGZhbGwgdW5kZXIuCgpOZXh0LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBkYXRhIHNvdXJjZS4gSXMgaXQgZXZlbiB0aGUgKnJpZ2h0KiBkYXRhc2V0PyBBcmUgdGhlcmUgYW55IGxpbWl0YXRpb25zIG9yIGNhdmVhdHMgdG8gdGhpcyBwYXJ0aWN1bGFyIGRhdGFiYXNlIG9yIGluZGV4PyBDb3VsZCB0aGVyZSBiZSBhbiBpbmRleGluZyBpc3N1ZSwgYSBrbm93biBnbGl0Y2gsIG9yIGV2ZW4gYSBzaW1wbGUgdHlwbyBpbiB0aGUgc291cmNlIGl0c2VsZj8gQW0gSSBkZWFsaW5nIHdpdGggYSBjbG9zZWQgc3lzdGVtLCBvciBhbSBJIGFibGUgdG8gZXhwYW5kIHRoZSBzZWFyY2ggcGFyYW1ldGVycywgcGVyaGFwcyB0byBhIG1vcmUgY29tcHJlaGVuc2l2ZSBvcGVuIGFjY2VzcyBzb3VyY2UsIG9yIGV2ZW4gY29uc2lkZXJpbmcgZXh0ZXJuYWwgcmVzb3VyY2VzIGFuZCBhIGRpZmZlcmVudCwgcGVyaGFwcyBtdWx0aS1mYWNldGVkIHJlc2VhcmNoIGFwcHJvYWNoPwoKVGhlbiBJJiMzOTttIGNvbnNpZGVyaW5nIHRoZSBzZWFyY2ggbWV0aG9kb2xvZ3kgaXRzZWxmLiBBbSBJIHVzaW5nIHRoZSBjb3JyZWN0IHNlYXJjaCBvcGVyYXRvcnM/IFNob3VsZCBJIGJlIHVzaW5nIEJvb2xlYW4gbG9naWMsIHdpbGRjYXJkIGNoYXJhY3RlcnMsIHByb3hpbWl0eSBzZWFyY2hlcz8gSGF2ZSBJIHRyaWVkIGRpZmZlcmVudCBjb21iaW5hdGlvbnMgb2Yga2V5d29yZHMgYW5kIGZpbHRlcnM/IE1heWJlIGEgc3RydWN0dXJlZCBxdWVyeSB3aXRoIHNwZWNpZmljIHBhcmFtZXRlcnMgd291bGQgYmUgbW9yZSBlZmZlY3RpdmUgdGhhbiBhIGZyZWUtdGV4dCBzZWFyY2guIEkmIzM5O20gZXhwbG9yaW5nIHRoZSBwb3NzaWJpbGl0aWVzLCBldmVuIHRob3VnaCB0aGVyZSYjMzk7cyBub3RoaW5nIG9idmlvdXMgb24gdGhlIGhvcml6b24sIHRyeWluZyB0byBmaW5kIHdoaWNoIGFuZ2xlIGdpdmVzIHRoZSBtb3N0IHBvdGVudGlhbCBmb3IgZXhwbG9yYXRpb24uCgpFc3NlbnRpYWxseSwgJiMzNDtubyBtYXRjaGVzJiMzNDsgaXNuJiMzOTt0IGEgZGVhZCBlbmQuIEl0JiMzOTtzIGEgc3RhcnRpbmcgcG9pbnQuIEl0JiMzOTtzIGEgc2lnbmFsIHRvIGRpdmUgZGVlcGVyLCB0byByZWZpbmUgdGhlIGFwcHJvYWNoLCBhbmQgdG8gY3JlYXRpdmVseSByZWZyYW1lIHRoZSBwcm9ibGVtLiBJdCBoaWdobGlnaHRzIHRoZSBpbXBvcnRhbmNlIG9mIGl0ZXJhdGluZywgb2YgdHJ5aW5nIGRpZmZlcmVudCBzdHJhdGVnaWVzLCBhbmQgb2YgY29uc3RhbnRseSBxdWVzdGlvbmluZyB0aGUgYXNzdW1wdGlvbnMgdW5kZXJseWluZyB0aGUgaW5pdGlhbCBxdWVyeSBhbmQgdGhlIGRhdGEgaXRzZWxmLiBUaGUgc2VhcmNoIGp1c3QgZ290ICptdWNoKiBtb3JlIGludGVyZXN0aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxOTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9wYXJzZV90bHZfZmlybXdhcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk5NjAKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbml0aWFsIEFzc2Vzc21lbnQgb2YgS1VuaXQgVGVzdCBDb3ZlcmFnZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBoaXQgYSBkZWFkIGVuZCB3aXRoIHRoZSBpbml0aWFsIHNlYXJjaC4gSXQgbG9va3MgbGlrZSB0aGUgc3RhbmRhcmQgc2VhcmNoIGhhc24mIzM5O3QgeWllbGRlZCBhbnkgcmVsZXZhbnQgbWF0Y2hlcy4gVGhhdCYjMzk7cyBhIGJpdCBmcnVzdHJhdGluZywgYnV0IG5vdCBlbnRpcmVseSB1bmV4cGVjdGVkLiBHaXZlbiB0aGUgbmF0dXJlIG9mIGZpcm13YXJlIGludGVyYWN0aW9uIGFuZCBBQ1BJL1VFRkkgdGFibGUgcGFyc2luZywgdGhvc2UgYXJlYXMgYXJlIG9mdGVuIHRpZ2h0bHkgY291cGxlZCB3aXRoIHRoZSBsb3ctbGV2ZWwgaGFyZHdhcmUgb3IgbW9yZSBjb21wbGV4LiBJdCYjMzk7cyBoaWdobHkgdW5saWtlbHkgdGhhdCB0aGUgc2ltcGxlIEtVbml0IHRlc3RzIHdvdWxkIGZvY3VzIG9uIHRoYXQga2luZCBvZiBkZWVwIHBhcnNpbmcgbG9naWMgZGlyZWN0bHkuIFRoZXkgYXJlIHByb2JhYmx5IGZvY3VzZWQgb24gdGhvc2UgdXRpbGl0eSBmdW5jdGlvbnMgSSBtZW50aW9uZWQgZWFybGllci4KCkxldCYjMzk7cyBhZGp1c3QgdGhlIHNlYXJjaC4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gZXhwbG9yZSBhIG1vcmUgdGFyZ2V0ZWQgYXJlYS4gSSYjMzk7bGwgdGFrZSBhIGxvb2sgYXQgdGhlIHRlc3RzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvdGVzdHNgIGRpcmVjdG9yeS4gV2hpbGUgd2lyZWxlc3MgZHJpdmVycyBtaWdodCBzZWVtIGxpa2UgYW4gb2RkIHBsYWNlIHRvIHN0YXJ0LCBpdCYjMzk7cyBvZnRlbiBhIGdvb2QgcGxhY2UgdG8gc3RhcnQsIHNpbmNlIHRoZSB1bmRlcmx5aW5nIHRlc3Qgc3RydWN0dXJlIG1heSBiZSBzaW1pbGFyLiBUaGlzIGRpcmVjdG9yeSB3b3VsZCBsaWtlbHkgY29udGFpbiBpdHMgb3duIHRlc3Qgc3VpdGUgdGhhdCBtaWdodCBzaGVkIGxpZ2h0IG9uIGhvdyB0aGV5IGFwcHJvYWNoIHRlc3RpbmcgdGhlIGRlZXBlciwgbW9yZSBoYXJkd2FyZS1zcGVjaWZpYyBpbnRlcmFjdGlvbnMsIG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgcHJvdmlkZSBhIG1vcmUgc3VpdGFibGUgc3RhcnRpbmcgcG9pbnQuIEkmIzM5O20gaG9waW5nIHRvIGRpc2NvdmVyIHRoZSB0ZXN0aW5nIG1ldGhvZG9sb2dpZXMgb3Igc3RydWN0dXJlcyB0aGF0IGFyZSB1c2VkLCB3aGljaCBJIGNhbiBhZGFwdCBmb3IgbXkgb3duIG5lZWRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxOTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7ZGV2aW5mby5jJiMzNDssCiAgICAmIzM0O21vZHVsZS5jJiMzNDssCiAgICAmIzM0O252bV9wYXJzZS5jJiMzNDssCiAgICAmIzM0O3V0aWxzLmMmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IG51bGwKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxOTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDM0NAoJCQkJCQkJb3V0cHV0OiAxNDAKCQkJCQkJCXRob3VnaHRzOiAyMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5yZWFjaGFibGUgQ29kZSBpbiBpd2x3aWZpIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgYXQgdGhlc2UgdGVzdHMsIGFuZCBpdCYjMzk7cyBjbGVhciB0aGV5JiMzOTtyZSBub3QgdG91Y2hpbmcgdGhlIGNvZGUgSSYjMzk7dmUganVzdCBtb2RpZmllZC4gU3BlY2lmaWNhbGx5LCB0aGUgS1VuaXQgdGVzdHMgZm9yIGBkZXZpbmZvYCwgYG52bV9wYXJzZWAsIGFuZCBgdXRpbHNgIGFyZW4mIzM5O3QgY292ZXJpbmcgYW55dGhpbmcgaW4gYGZ3L2FjcGkuY2AsIGBmdy91ZWZpLmNgLCBgaXdsLWRiZy10bHYuY2AsIG9yIGBpd2wtZHJ2LmNgLiBUaGF0JiMzOTtzIGEgcHJvYmxlbS4gTXkgY2hhbmdlcyBhcmUgaW4gZmlybXdhcmUgcGFyc2luZyBhbmQgQUNQSS9VRUZJIHRhYmxlIGhhbmRsaW5nIHdpdGhpbiB0aGUgSW50ZWwgV2lyZWxlc3MgV2lGaSBkcml2ZXIg4oCTIGEgUENJIGRyaXZlciwgaGFyZHdhcmUtc3BlY2lmaWMuIE5vdywgdGhlIGtleSBoZXJlIGlzIHRoZSBlbnZpcm9ubWVudDogc3l6a2FsbGVyIGFuZCB0aGVzZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIGFuZCBHQ0UgKmRvbiYjMzk7dCogZW11bGF0ZSBJbnRlbCBXaS1GaSBoYXJkd2FyZS4gVGhlIGRyaXZlciB3b24mIzM5O3QgZXZlbiBwcm9iZSwgbWFraW5nIHRoZSBwYXJ0cyBJIGNoYW5nZWQgdW5yZWFjaGFibGUuIFRoaW5ncyBsaWtlIGBpd2xfcmVxX2Z3X2NhbGxiYWNrYCBhbmQgYGl3bF9wYXJzZV90bHZfZmlybXdhcmVgIGFyZSBkZWFkIGNvZGUgaW4gdGhpcyBjb250ZXh0LiBUaGVyZWZvcmUsIGZ1enppbmcgdGhvc2UgYXJlYXMgaXMgcG9pbnRsZXNzLiBJJiMzOTttIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBmaXJtd2FyZSBwYXJzaW5nIGFuZCBBQ1BJL1VFRkkgdGFibGUgcGFyc2luZyBsb2dpYyBpbiB0aGUgSW50ZWwgV2lyZWxlc3MgV2lGaSAoaXdsd2lmaSkgZHJpdmVyLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gU2luY2Ugc3l6a2FsbGVyIGFuZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSBkbyBub3QgZW11bGF0ZSBJbnRlbCBXaS1GaSBQQ0kgaGFyZHdhcmUsIHRoZSBkcml2ZXIgd2lsbCBuZXZlciBwcm9iZS4gQ29uc2VxdWVudGx5LCB0aGUgZmlybXdhcmUgcmVxdWVzdCBhbmQgcGFyc2luZyBwYXRocyAoZS5nLiwgaXdsX3JlcV9md19jYWxsYmFjaywgaXdsX3BhcnNlX3Rsdl9maXJtd2FyZSkgYXJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBmaXJtd2FyZSBwYXJzaW5nIGFuZCBBQ1BJL1VFRkkgdGFibGUgcGFyc2luZyBsb2dpYyBpbiB0aGUgSW50ZWwgV2lyZWxlc3MgV2lGaSAoaXdsd2lmaSkgZHJpdmVyLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gU2luY2Ugc3l6a2FsbGVyIGFuZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSBkbyBub3QgZW11bGF0ZSBJbnRlbCBXaS1GaSBQQ0kgaGFyZHdhcmUsIHRoZSBkcml2ZXIgd2lsbCBuZXZlciBwcm9iZS4gQ29uc2VxdWVudGx5LCB0aGUgZmlybXdhcmUgcmVxdWVzdCBhbmQgcGFyc2luZyBwYXRocyAoZS5nLiwgaXdsX3JlcV9md19jYWxsYmFjaywgaXdsX3BhcnNlX3Rsdl9maXJtd2FyZSkgYXJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NDk6NDUuNDMzNjc5MjU5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyNjgzMzIwODM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBmaXJtd2FyZSBwYXJzaW5nIGFuZCBBQ1BJL1VFRkkgdGFibGUgcGFyc2luZyBsb2dpYyBpbiB0aGUgSW50ZWwgV2lyZWxlc3MgV2lGaSAoaXdsd2lmaSkgZHJpdmVyLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gU2luY2Ugc3l6a2FsbGVyIGFuZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSBkbyBub3QgZW11bGF0ZSBJbnRlbCBXaS1GaSBQQ0kgaGFyZHdhcmUsIHRoZSBkcml2ZXIgd2lsbCBuZXZlciBwcm9iZS4gQ29uc2VxdWVudGx5LCB0aGUgZmlybXdhcmUgcmVxdWVzdCBhbmQgcGFyc2luZyBwYXRocyAoZS5nLiwgaXdsX3JlcV9md19jYWxsYmFjaywgaXdsX3BhcnNlX3Rsdl9maXJtd2FyZSkgYXJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo0OTo0NS40MzM2ODQyNDlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMTI5NTk5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDUyMzBmNWY2YjdjMDU4YzljNmZmYjU4NDk2ZjcyZThjYTVjNmUzMDlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMTcgMTk6NDk6NDQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuY1xcbmluZGV4IGJmMGY4NTFhOTA3NTU0Li40MzBhNzY0MmUwMWEzMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jXFxuQEAgLTg2NSw2ICs4NjUsMTEgQEAgaW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIG1pbl9zaXplLCBtYXhfc2l6ZSxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZ0YmxfcmV2KTtcXG4gXFx0XFx0aWYgKCFJU19FUlIod2lmaV9wa2cpKSB7XFxuK1xcdFxcdFxcdGlmICh0YmxfcmV2IFxcdTAwM2MgMCB8fFxcbitcXHRcXHRcXHQgICAgdGJsX3JldiBcXHUwMDNlPSBCSVRTX1BFUl9CWVRFICpcXG4rXFx0XFx0XFx0ICAgIHNpemVvZihyZXZfZGF0YVtpZHhdLnJldmlzaW9ucykpXFxuK1xcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4gXFx0XFx0XFx0aWYgKCEoQklUKHRibF9yZXYpIFxcdTAwMjYgcmV2X2RhdGFbaWR4XS5yZXZpc2lvbnMpKVxcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmNcXG5pbmRleCAyZWYwYTdhOTIwYWRiNS4uMDE0ZjIyYzQyZjQxYTkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY1xcbkBAIC03MDAsNyArNzAwLDcgQEAgaW50IGl3bF91ZWZpX2dldF9wcGFnX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4gXFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbiBwYXJzZV90YWJsZTpcXG4tXFx0aWYgKCEoQklUKGRhdGEtXFx1MDAzZXJldmlzaW9uKSBcXHUwMDI2IHZhbGlkX3JldikpIHtcXG4rXFx0aWYgKGRhdGEtXFx1MDAzZXJldmlzaW9uIFxcdTAwM2U9IDMyIHx8ICEoQklUKGRhdGEtXFx1MDAzZXJldmlzaW9uKSBcXHUwMDI2IHZhbGlkX3JldikpIHtcXG4gXFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4gXFx0XFx0SVdMX0RFQlVHX1JBRElPKGZ3cnQsXFxuIFxcdFxcdFxcdFxcdFxcXCJVbnN1cHBvcnRlZCBVRUZJIFBQQUcgcmV2aXNpb246JWRcXFxcblxcXCIsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuY1xcbmluZGV4IGQwMjFiMjRkMDRkNmI5Li5iMWE1NTkwOWYwZDRiYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmNcXG5AQCAtNDc1LDYgKzQ3NSw3IEBAIHN0YXRpYyBpbnQgaXdsX2RiZ190bHZfcGFyc2VfYmluKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCB1OCAqZGF0YSxcXG4ge1xcbiBcXHRjb25zdCBzdHJ1Y3QgaXdsX3Vjb2RlX3RsdiAqdGx2O1xcbiBcXHR1MzIgdGx2X2xlbjtcXG4rXFx0c2l6ZV90IGFsaWduZWRfdGx2X2xlbjtcXG4gXFxuIFxcdHdoaWxlIChsZW4gXFx1MDAzZT0gc2l6ZW9mKCp0bHYpKSB7XFxuIFxcdFxcdGxlbiAtPSBzaXplb2YoKnRsdik7XFxuQEAgLTQ4Nyw4ICs0ODgsMTYgQEAgc3RhdGljIGludCBpd2xfZGJnX3Rsdl9wYXJzZV9iaW4oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxcbiBcXHRcXHRcXHRcXHRsZW4sIHRsdl9sZW4pO1xcbiBcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0XFx0fVxcbi1cXHRcXHRsZW4gLT0gQUxJR04odGx2X2xlbiwgNCk7XFxuLVxcdFxcdGRhdGEgKz0gc2l6ZW9mKCp0bHYpICsgQUxJR04odGx2X2xlbiwgNCk7XFxuK1xcbitcXHRcXHRhbGlnbmVkX3Rsdl9sZW4gPSBBTElHTih0bHZfbGVuLCA0KTtcXG4rXFx0XFx0aWYgKGxlbiBcXHUwMDNjIGFsaWduZWRfdGx2X2xlbikge1xcbitcXHRcXHRcXHRJV0xfRVJSKHRyYW5zLCBcXFwiaW52YWxpZCBhbGlnbmVkIFRMViBsZW46ICV6ZC8lenVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdGxlbiwgYWxpZ25lZF90bHZfbGVuKTtcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdGxlbiAtPSBhbGlnbmVkX3Rsdl9sZW47XFxuK1xcdFxcdGRhdGEgKz0gc2l6ZW9mKCp0bHYpICsgYWxpZ25lZF90bHZfbGVuO1xcbiBcXG4gXFx0XFx0aXdsX2RiZ190bHZfYWxsb2ModHJhbnMsIHRsdiwgdHJ1ZSk7XFxuIFxcdH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuY1xcbmluZGV4IDg0MjU4NmQ0ZmM1Y2U0Li43ZjE1MTVkZmM1YmY5ZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jXFxuQEAgLTQ5Miw3ICs0OTIsNyBAQCBzdGF0aWMgdm9pZCBzZXRfc2VjX29mZnNldChzdHJ1Y3QgaXdsX2Zpcm13YXJlX3BpZWNlcyAqcGllY2VzLFxcbiAgKiBHZXRzIHVDb2RlIHNlY3Rpb24gZnJvbSB0bHYuXFxuICAqL1xcbiBzdGF0aWMgaW50IGl3bF9zdG9yZV91Y29kZV9zZWMoc3RydWN0IGZ3X2ltZ19wYXJzaW5nICppbWcsXFxuLVxcdFxcdFxcdCAgICAgICBjb25zdCB2b2lkICpkYXRhLCBpbnQgc2l6ZSlcXG4rXFx0XFx0XFx0ICAgICAgIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKVxcbiB7XFxuIFxcdHN0cnVjdCBmd19zZWMgKnNlYztcXG4gXFx0Y29uc3Qgc3RydWN0IGZ3X3NlY19wYXJzaW5nICpzZWNfcGFyc2U7XFxuQEAgLTUwMSw2ICs1MDEsOSBAQCBzdGF0aWMgaW50IGl3bF9zdG9yZV91Y29kZV9zZWMoc3RydWN0IGZ3X2ltZ19wYXJzaW5nICppbWcsXFxuIFxcdGlmIChXQVJOX09OKCFpbWcgfHwgIWRhdGEpKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuK1xcdGlmIChzaXplIFxcdTAwM2Mgc2l6ZW9mKHNlY19wYXJzZS1cXHUwMDNlb2Zmc2V0KSlcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbiBcXHRzZWNfcGFyc2UgPSAoY29uc3Qgc3RydWN0IGZ3X3NlY19wYXJzaW5nICopZGF0YTtcXG4gXFxuIFxcdGFsbG9jX3NpemUgPSBzaXplb2YoKmltZy1cXHUwMDNlc2VjKSAqIChpbWctXFx1MDAzZXNlY19jb3VudGVyICsgMSk7XFxuQEAgLTgwNCw2ICs4MDcsNyBAQCBzdGF0aWMgaW50IGl3bF9wYXJzZV90bHZfZmlybXdhcmUoc3RydWN0IGl3bF9kcnYgKmRydixcXG4gXFx0dTMyIGJ1aWxkLCBwYWdpbmdfbWVtX3NpemU7XFxuIFxcdGludCBudW1fb2ZfY3B1cztcXG4gXFx0Ym9vbCB1c25pZmZlcl9yZXEgPSBmYWxzZTtcXG4rXFx0c2l6ZV90IGFsaWduZWRfdGx2X2xlbjtcXG4gXFxuIFxcdGlmIChsZW4gXFx1MDAzYyBzaXplb2YoKnVjb2RlKSkge1xcbiBcXHRcXHRJV0xfRVJSKGRydiwgXFxcInVDb2RlIGhhcyBpbnZhbGlkIGxlbmd0aDogJXpkXFxcXG5cXFwiLCBsZW4pO1xcbkBAIC04NTIsOCArODU2LDE2IEBAIHN0YXRpYyBpbnQgaXdsX3BhcnNlX3Rsdl9maXJtd2FyZShzdHJ1Y3QgaXdsX2RydiAqZHJ2LFxcbiBcXHRcXHRcXHRcXHRsZW4sIHRsdl9sZW4pO1xcbiBcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0XFx0fVxcbi1cXHRcXHRsZW4gLT0gQUxJR04odGx2X2xlbiwgNCk7XFxuLVxcdFxcdGRhdGEgKz0gc2l6ZW9mKCp0bHYpICsgQUxJR04odGx2X2xlbiwgNCk7XFxuK1xcbitcXHRcXHRhbGlnbmVkX3Rsdl9sZW4gPSBBTElHTih0bHZfbGVuLCA0KTtcXG4rXFx0XFx0aWYgKGxlbiBcXHUwMDNjIGFsaWduZWRfdGx2X2xlbikge1xcbitcXHRcXHRcXHRJV0xfRVJSKGRydiwgXFxcImludmFsaWQgYWxpZ25lZCBUTFYgbGVuOiAlemQvJXp1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHRsZW4sIGFsaWduZWRfdGx2X2xlbik7XFxuK1xcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRsZW4gLT0gYWxpZ25lZF90bHZfbGVuO1xcbitcXHRcXHRkYXRhICs9IHNpemVvZigqdGx2KSArIGFsaWduZWRfdGx2X2xlbjtcXG4gXFxuIFxcdFxcdHN3aXRjaCAodGx2X3R5cGUpIHtcXG4gXFx0XFx0Y2FzZSBJV0xfVUNPREVfVExWX0lOU1Q6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjQ5OjQ1Ljk1NTc0OTkzMVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTUyMTYxMjQ0NTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBmaXJtd2FyZSBwYXJzaW5nIGFuZCBBQ1BJL1VFRkkgdGFibGUgcGFyc2luZyBsb2dpYyBpbiB0aGUgSW50ZWwgV2lyZWxlc3MgV2lGaSAoaXdsd2lmaSkgZHJpdmVyLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gU2luY2Ugc3l6a2FsbGVyIGFuZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSBkbyBub3QgZW11bGF0ZSBJbnRlbCBXaS1GaSBQQ0kgaGFyZHdhcmUsIHRoZSBkcml2ZXIgd2lsbCBuZXZlciBwcm9iZS4gQ29uc2VxdWVudGx5LCB0aGUgZmlybXdhcmUgcmVxdWVzdCBhbmQgcGFyc2luZyBwYXRocyAoZS5nLiwgaXdsX3JlcV9md19jYWxsYmFjaywgaXdsX3BhcnNlX3Rsdl9maXJtd2FyZSkgYXJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDUyMzBmNWY2YjdjMDU4YzljNmZmYjU4NDk2ZjcyZThjYTVjNmUzMDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxNyAxOTo0OTo0NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmNcbmluZGV4IGJmMGY4NTFhOTA3NTU0Li40MzBhNzY0MmUwMWEzMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuY1xuQEAgLTg2NSw2ICs4NjUsMTEgQEAgaW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbiBcdFx0XHRcdFx0XHQgICAgICAgbWluX3NpemUsIG1heF9zaXplLFxuIFx0XHRcdFx0XHRcdCAgICAgICBcdTAwMjZ0YmxfcmV2KTtcbiBcdFx0aWYgKCFJU19FUlIod2lmaV9wa2cpKSB7XG4rXHRcdFx0aWYgKHRibF9yZXYgXHUwMDNjIDAgfHxcbitcdFx0XHQgICAgdGJsX3JldiBcdTAwM2U9IEJJVFNfUEVSX0JZVEUgKlxuK1x0XHRcdCAgICBzaXplb2YocmV2X2RhdGFbaWR4XS5yZXZpc2lvbnMpKVxuK1x0XHRcdFx0Y29udGludWU7XG4rXG4gXHRcdFx0aWYgKCEoQklUKHRibF9yZXYpIFx1MDAyNiByZXZfZGF0YVtpZHhdLnJldmlzaW9ucykpXG4gXHRcdFx0XHRjb250aW51ZTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jXG5pbmRleCAyZWYwYTdhOTIwYWRiNS4uMDE0ZjIyYzQyZjQxYTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmNcbkBAIC03MDAsNyArNzAwLDcgQEAgaW50IGl3bF91ZWZpX2dldF9wcGFnX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbiBcdHJldHVybiAtRUlOVkFMO1xuIFxuIHBhcnNlX3RhYmxlOlxuLVx0aWYgKCEoQklUKGRhdGEtXHUwMDNlcmV2aXNpb24pIFx1MDAyNiB2YWxpZF9yZXYpKSB7XG4rXHRpZiAoZGF0YS1cdTAwM2VyZXZpc2lvbiBcdTAwM2U9IDMyIHx8ICEoQklUKGRhdGEtXHUwMDNlcmV2aXNpb24pIFx1MDAyNiB2YWxpZF9yZXYpKSB7XG4gXHRcdHJldCA9IC1FSU5WQUw7XG4gXHRcdElXTF9ERUJVR19SQURJTyhmd3J0LFxuIFx0XHRcdFx0XCJVbnN1cHBvcnRlZCBVRUZJIFBQQUcgcmV2aXNpb246JWRcXG5cIixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmNcbmluZGV4IGQwMjFiMjRkMDRkNmI5Li5iMWE1NTkwOWYwZDRiYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5jXG5AQCAtNDc1LDYgKzQ3NSw3IEBAIHN0YXRpYyBpbnQgaXdsX2RiZ190bHZfcGFyc2VfYmluKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCB1OCAqZGF0YSxcbiB7XG4gXHRjb25zdCBzdHJ1Y3QgaXdsX3Vjb2RlX3RsdiAqdGx2O1xuIFx0dTMyIHRsdl9sZW47XG4rXHRzaXplX3QgYWxpZ25lZF90bHZfbGVuO1xuIFxuIFx0d2hpbGUgKGxlbiBcdTAwM2U9IHNpemVvZigqdGx2KSkge1xuIFx0XHRsZW4gLT0gc2l6ZW9mKCp0bHYpO1xuQEAgLTQ4Nyw4ICs0ODgsMTYgQEAgc3RhdGljIGludCBpd2xfZGJnX3Rsdl9wYXJzZV9iaW4oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxuIFx0XHRcdFx0bGVuLCB0bHZfbGVuKTtcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0fVxuLVx0XHRsZW4gLT0gQUxJR04odGx2X2xlbiwgNCk7XG4tXHRcdGRhdGEgKz0gc2l6ZW9mKCp0bHYpICsgQUxJR04odGx2X2xlbiwgNCk7XG4rXG4rXHRcdGFsaWduZWRfdGx2X2xlbiA9IEFMSUdOKHRsdl9sZW4sIDQpO1xuK1x0XHRpZiAobGVuIFx1MDAzYyBhbGlnbmVkX3Rsdl9sZW4pIHtcbitcdFx0XHRJV0xfRVJSKHRyYW5zLCBcImludmFsaWQgYWxpZ25lZCBUTFYgbGVuOiAlemQvJXp1XFxuXCIsXG4rXHRcdFx0XHRsZW4sIGFsaWduZWRfdGx2X2xlbik7XG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdH1cbitcbitcdFx0bGVuIC09IGFsaWduZWRfdGx2X2xlbjtcbitcdFx0ZGF0YSArPSBzaXplb2YoKnRsdikgKyBhbGlnbmVkX3Rsdl9sZW47XG4gXG4gXHRcdGl3bF9kYmdfdGx2X2FsbG9jKHRyYW5zLCB0bHYsIHRydWUpO1xuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmNcbmluZGV4IDg0MjU4NmQ0ZmM1Y2U0Li43ZjE1MTVkZmM1YmY5ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuY1xuQEAgLTQ5Miw3ICs0OTIsNyBAQCBzdGF0aWMgdm9pZCBzZXRfc2VjX29mZnNldChzdHJ1Y3QgaXdsX2Zpcm13YXJlX3BpZWNlcyAqcGllY2VzLFxuICAqIEdldHMgdUNvZGUgc2VjdGlvbiBmcm9tIHRsdi5cbiAgKi9cbiBzdGF0aWMgaW50IGl3bF9zdG9yZV91Y29kZV9zZWMoc3RydWN0IGZ3X2ltZ19wYXJzaW5nICppbWcsXG4tXHRcdFx0ICAgICAgIGNvbnN0IHZvaWQgKmRhdGEsIGludCBzaXplKVxuK1x0XHRcdCAgICAgICBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSlcbiB7XG4gXHRzdHJ1Y3QgZndfc2VjICpzZWM7XG4gXHRjb25zdCBzdHJ1Y3QgZndfc2VjX3BhcnNpbmcgKnNlY19wYXJzZTtcbkBAIC01MDEsNiArNTAxLDkgQEAgc3RhdGljIGludCBpd2xfc3RvcmVfdWNvZGVfc2VjKHN0cnVjdCBmd19pbWdfcGFyc2luZyAqaW1nLFxuIFx0aWYgKFdBUk5fT04oIWltZyB8fCAhZGF0YSkpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuK1x0aWYgKHNpemUgXHUwMDNjIHNpemVvZihzZWNfcGFyc2UtXHUwMDNlb2Zmc2V0KSlcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4gXHRzZWNfcGFyc2UgPSAoY29uc3Qgc3RydWN0IGZ3X3NlY19wYXJzaW5nICopZGF0YTtcbiBcbiBcdGFsbG9jX3NpemUgPSBzaXplb2YoKmltZy1cdTAwM2VzZWMpICogKGltZy1cdTAwM2VzZWNfY291bnRlciArIDEpO1xuQEAgLTgwNCw2ICs4MDcsNyBAQCBzdGF0aWMgaW50IGl3bF9wYXJzZV90bHZfZmlybXdhcmUoc3RydWN0IGl3bF9kcnYgKmRydixcbiBcdHUzMiBidWlsZCwgcGFnaW5nX21lbV9zaXplO1xuIFx0aW50IG51bV9vZl9jcHVzO1xuIFx0Ym9vbCB1c25pZmZlcl9yZXEgPSBmYWxzZTtcbitcdHNpemVfdCBhbGlnbmVkX3Rsdl9sZW47XG4gXG4gXHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKnVjb2RlKSkge1xuIFx0XHRJV0xfRVJSKGRydiwgXCJ1Q29kZSBoYXMgaW52YWxpZCBsZW5ndGg6ICV6ZFxcblwiLCBsZW4pO1xuQEAgLTg1Miw4ICs4NTYsMTYgQEAgc3RhdGljIGludCBpd2xfcGFyc2VfdGx2X2Zpcm13YXJlKHN0cnVjdCBpd2xfZHJ2ICpkcnYsXG4gXHRcdFx0XHRsZW4sIHRsdl9sZW4pO1xuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHR9XG4tXHRcdGxlbiAtPSBBTElHTih0bHZfbGVuLCA0KTtcbi1cdFx0ZGF0YSArPSBzaXplb2YoKnRsdikgKyBBTElHTih0bHZfbGVuLCA0KTtcbitcbitcdFx0YWxpZ25lZF90bHZfbGVuID0gQUxJR04odGx2X2xlbiwgNCk7XG4rXHRcdGlmIChsZW4gXHUwMDNjIGFsaWduZWRfdGx2X2xlbikge1xuK1x0XHRcdElXTF9FUlIoZHJ2LCBcImludmFsaWQgYWxpZ25lZCBUTFYgbGVuOiAlemQvJXp1XFxuXCIsXG4rXHRcdFx0XHRsZW4sIGFsaWduZWRfdGx2X2xlbik7XG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdH1cbitcbitcdFx0bGVuIC09IGFsaWduZWRfdGx2X2xlbjtcbitcdFx0ZGF0YSArPSBzaXplb2YoKnRsdikgKyBhbGlnbmVkX3Rsdl9sZW47XG4gXG4gXHRcdHN3aXRjaCAodGx2X3R5cGUpIHtcbiBcdFx0Y2FzZSBJV0xfVUNPREVfVExWX0lOU1Q6XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo0OTo0NS45NTU3NTE2MDFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTkxMDgxNDY3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBpd2x3aWZpIERyaXZlciBQYXRjaGVzIGluIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgaXdsd2lmaWAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIG5ldyBib3VuZHMgYW5kIGFsaWdubWVudCBjaGVja3MgdGhleSd2ZSBhZGRlZC4gSXQncyBhY3Jvc3Mgc2V2ZXJhbCBmaWxlczogYGFjcGkuY2AsIGB1ZWZpLmNgLCBgaXdsLWRiZy10bHYuY2AsIGFuZCBgaXdsLWRydi5jYC4gVGhpcyBpcyBhbGwgYWJvdXQgZW5zdXJpbmcgZGF0YSBpbnRlZ3JpdHkgd2l0aGluIHRoZSBkcml2ZXIsIGdvb2Qgc3R1ZmYuIE15IG1haW4gY29uY2VybiwgdGhvdWdoLCBpcyB3aGV0aGVyIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGFjdHVhbGx5ICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgd2hpY2ggaXMgY3JpdGljYWwgZm9yIGZ1enppbmcgYW5kIHRlc3RpbmcuXG5cbkZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUuIGBpd2x3aWZpYCBpcyBmb3IgSW50ZWwgV2lyZWxlc3MgV2lGaSBOZXh0IEdlbiBBR04gaGFyZHdhcmUuIFRoYXQncyB0aGUgY29yZSBxdWVzdGlvbiDigJMgY2FuIHdlIHRyaWdnZXIgdGhlc2UgbmV3IGNoZWNrcyB3aXRoaW4gc29tZXRoaW5nIGxpa2UgR0NFIG9yIFFFTVU/IEkga25vdyBzeXprYWxsZXIgZG9lc24ndCBoYXZlIG5hdGl2ZSBJbnRlbCBXaS1GaSBlbXVsYXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBnb2VzIHRvIGBtYWM4MDIxMV9od3NpbWAgYXMgYSBzb2Z0d2FyZSBzaW11bGF0b3IuLi4gYnV0IHRoYXQgd29uJ3Qgd29yaywgcmlnaHQ/IEl0J3Mgc29mdHdhcmUsIG5vdCB1c2luZyBgaXdsd2lmaWAuXG5cbkFscmlnaHQsIGhvdyBhYm91dCBVU0I/IFNvbWV0aW1lcyB0aG9zZSBkcml2ZXJzIHN1cHBvcnQgVVNCLiBJIG5lZWQgdG8gY2xhcmlmeSB0aGF0LiBCdXQgdGhlbiBJIHJlbWVtYmVyOiBtb3N0bHkgUENJZS4gU28gbGlrZWx5IG5vdCBVU0IuIEdvdHRhIGNoZWNrIHRvIGJlIHN1cmUsIHRob3VnaC4gVGhlbiB0aGVyZSdzIGZpcm13YXJlIHBhcnNpbmcuIFRoaXMgaXMgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcuIElmIHRoZSBkcml2ZXIgcmVxdWVzdHMgZmlybXdhcmUsIGFuZCBzeXprYWxsZXIgY2FuIGZlZWQgaXQgZmFrZSBvciBmdXp6ZWQgZmlybXdhcmUgdGhyb3VnaCB0aGUgZmlybXdhcmUgbG9hZGVyLCB3ZSBjb3VsZCBiZSBpbiBidXNpbmVzcy4gU3l6a2FsbGVyICpjYW4qIHByb3ZpZGUgZmFrZSBmaXJtd2FyZSEgT2theSwgdGhhdCdzIGEga2V5IHBvaW50LlxuXG5Ib3dldmVyLCB0aGUgZHJpdmVyIG5lZWRzIHRvIGxvYWQgZmlyc3QsIHJpZ2h0PyBQQ0kgZHJpdmVycyB1c3VhbGx5IHByb2JlIGJhc2VkIG9uIFBDSSBJRHMuIFNvLCB3aXRob3V0IHRoZSByaWdodCBQQ0kgZGV2aWNlLCBpdCBtaWdodCBub3QgZXZlbiBsb2FkLiBCdXQgc3l6a2FsbGVyIGhhcyBgc3l6LXVzYmdlbmAgZm9yIFVTQiBhbmQgbWF5YmUsIGBzeXotcGNpZ2VuYD8gQ2FuIHN5emthbGxlciBlbXVsYXRlIFBDSSBkZXZpY2VzPyBOb3cgdGhhdCdzIHRoZSByZWFsIHF1ZXN0aW9uLiBXYWl0LCBkbyB3ZSBoYXZlIGFueSBQQ0kgZnV6emluZyBzdXBwb3J0PyBOb3QgYSBnZW5lcmljIGVtdWxhdG9yLCBidXQgbWF5YmUgdGhlcmUncyBzb21lLi4uIGFoLCBJIHRoaW5rIHRoZXJlIGlzIG5vdyFcblxuT2theSwgY2lyY2xpbmcgYmFjayB0byB0aGUgb3JpZ2luYWwgcHJvbXB0LCBpdCBzdHJlc3NlcyB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBJZiBgaXdsd2lmaWAgaXMgc3RyaWN0bHkgUENJLCBhbmQgd2UgKmRvbid0KiBoYXZlIFBDSSBlbXVsYXRpb24sIHRoZW4gd2UgbWlnaHQgYmUgc3R1Y2suIFNvLCB1bHRpbWF0ZWx5LCB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaXM6IGNhbiB0aGUgZHJpdmVyIGV2ZW4gYmUgcHJvYmVkIGluIHRoZXNlIGVudmlyb25tZW50cz8gR290dGEgZmluZCBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MDAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo0OTo1Ny44NjY1NjkzNjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYwMDM2OTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV9yZWdpc3Rlcl9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz0yMTA5PXN0YXRpYyBpbnQgX19pbml0IGl3bF9kcnZfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMjEyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoyMTIxOlxcdGVyciA9IGl3bF9wY2lfcmVnaXN0ZXJfZHJpdmVyKCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMjEyMi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaD0xMTQxPXN0YXRpYyBpbmxpbmUgdm9pZCBpd2xfdHJhbnNfbm90aWZ5X2Z3X2Vycm9yKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0xMTQ4LSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oOjExNDk6aW50IF9fbXVzdF9jaGVjayBpd2xfcGNpX3JlZ2lzdGVyX2RyaXZlcih2b2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTExNTAtdm9pZCBpd2xfcGNpX3VucmVnaXN0ZXJfZHJpdmVyKHZvaWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jPTEzMzg9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGl3bF9wY2lfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTEzNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jOjEzNDc6aW50IF9fbXVzdF9jaGVjayBpd2xfcGNpX3JlZ2lzdGVyX2RyaXZlcih2b2lkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMzQ4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTM0OS1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYzoxMzUwOlxcdHJldCA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNml3bF9wY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTM1MS1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo0OTo1OC4wMjY2MTQxODNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzAyMDc5MDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUENJIERyaXZlciBGdXp6aW5nIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIHRoaXMgaXMgYSBQQ0kgZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiBzeXprYWxsZXIgZXZlbiBmdXp6IHRoZXNlIHRoaW5ncyBlZmZlY3RpdmVseT8gSSBrbm93IHN5emthbGxlciBoYXMgc29tZSBLVk0gc2V0dXAgY2FsbHMgbGlrZSBgc3l6X2t2bV9zZXR1cF9jcHVgLCBidXQgZG9lcyBpdCBoYXZlIGEgd2F5IHRvIGluamVjdCBhcmJpdHJhcnkgUENJIGNvbmZpZ3VyYXRpb25zPyBJIHF1aWNrbHkgc2NhbiBteSBtZW50YWwgZGF0YWJhc2UuIE5vLCB3YWl0LCB0aGVyZSdzIG5vdCBhIGBzeXpfcGNpX2RldmljZWAgY2FsbCwgb3IgYW55dGhpbmcgc2ltaWxhciBmb3IgZ2VuZXJhbCBQQ0kgZGV2aWNlIGluc3RhbnRpYXRpb24uIEkgcmVtZW1iZXIgdGhpbmdzIGxpa2UgYHN5el9tb3VudF9pbWFnZWAsIGJ1dCB0aGF0J3MgYSBkaWZmZXJlbnQgYXJlYS5cblxuSG9sZCBvbiwgSSByZWNhbGwgdGhhdCBzeXprYWxsZXIgKmRvZXNuJ3QqIGhhdmUgYSBjb21wcmVoZW5zaXZlIFBDSSBlbXVsYXRvciB0byB0cmlnZ2VyIGdlbmVyaWMgUENJIHByb2Jlcy4gVW5sZXNzLCBvZiBjb3Vyc2UsIHRoZXJlJ3MgYSBzcGVjaWZpYyBQQ0kgZnV6emluZyBtb2R1bGUgdGhhdCBJJ20gZm9yZ2V0dGluZywgb3IgaXQncyBsZXZlcmFnaW5nIFFFTVUncyBQQ0kgZW11bGF0aW9uLiBCdXQgZXZlbiB0aGF0J3MgbGltaXRlZDsgUUVNVSB0eXBpY2FsbHkgZW11bGF0ZXMgc3BlY2lmaWMgZGV2aWNlcyBsaWtlIGUxMDAwIG9yIHZpcnRpbywgbm90IHNvbWV0aGluZyBsaWtlIGl3bHdpZmkuIERhbW4sIEkgdGhvdWdodCBJIGhhZCBhIHNvbHV0aW9uIGhlcmUuXG5cbldhaXQsIGlzIHRoZXJlIHRoYXQgYENPTkZJR19QQ0lfRU5EUE9JTlRfVEVTVGAgb3B0aW9uIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBJIHNob3VsZCBjaGVjayBpbnRvIHRoYXQuXG5cbk5vdywgaWYgSSB0aGluayBhYm91dCBpdCwgd2hhdCBpZiB0aGUgZHJpdmVyICppcyogbG9hZGVkLCBidXQgdGhlIGBwcm9iZWAgZnVuY3Rpb24gaXMgbmV2ZXIgY2FsbGVkIGJlY2F1c2UgdGhlcmUncyBubyBhY3R1YWwgaGFyZHdhcmUgdG8gdHJpZ2dlciBpdD8gVGhhdCB3b3VsZCBiZSBhIG1ham9yIHByb2JsZW0uXG5cbklmIGBwcm9iZWAgbmV2ZXIgcnVucywgdGhlbiBteSB0YXJnZXQsIGBpd2xfcGFyc2VfdGx2X2Zpcm13YXJlYCwgd2lsbCBhbHNvIG5ldmVyIGJlIGNhbGxlZC4gU28sIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGBpd2xfcGFyc2VfdGx2X2Zpcm13YXJlYCBpcyBjYWxsZWQgZnJvbSBhbnl3aGVyZSBlbHNlIGluIHRoZSBjb2RlLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gc2VlIGlmIGl0IGNhbiBiZSByZWFjaGVkIGluIGFub3RoZXIgd2F5LCBhbmQgdGh1cyBmdXp6ZWQgaW4gYSBkaWZmZXJlbnQgbWFubmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjIxLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUwOjA0LjMyODY5NjEyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNzAxOTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9wYXJzZV90bHZfZmlybXdhcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz03MzI9c3RhdGljIHZvaWQgaXdsX3BhcnNlX2RiZ190bHZfYXNzZXJ0X3RhYmxlcyhzdHJ1Y3QgaXdsX2RydiAqZHJ2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtNzkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjc5MjpzdGF0aWMgaW50IGl3bF9wYXJzZV90bHZfZmlybXdhcmUoc3RydWN0IGl3bF9kcnYgKmRydixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy03OTMtXFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IGZpcm13YXJlICp1Y29kZV9yYXcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz0xNjQ0PXN0YXRpYyB2b2lkIGl3bF9yZXFfZndfY2FsbGJhY2soY29uc3Qgc3RydWN0IGZpcm13YXJlICp1Y29kZV9yYXcsIHZvaWQgKmNvbnRleHQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xNjkzLVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoxNjk0OlxcdFxcdGVyciA9IGl3bF9wYXJzZV90bHZfZmlybXdhcmUoZHJ2LCB1Y29kZV9yYXcsIHBpZWNlcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xNjk1LVxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNmZ3LVxcdTAwM2V1Y29kZV9jYXBhLCBcXHUwMDI2dXNuaWZmZXJfaW1hZ2VzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTA6MDQuMzkxNDAyOTg2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc0MjY2MjMyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZpcm13YXJlIExvYWRpbmcgUHJvY2VzcyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgaXdsX3JlcV9md19jYWxsYmFja2AgZnVuY3Rpb24uIEZyb20gd2hhdCBJIHVuZGVyc3RhbmQsIHRoaXMgaXMgdGhlIGNhbGxiYWNrIHRoYXQgZ2V0cyB0cmlnZ2VyZWQgd2hlbiBmaXJtd2FyZSBpcyBzdWNjZXNzZnVsbHkgbG9hZGVkIGZvciBhbiBJbnRlbCB3aXJlbGVzcyBkZXZpY2UsIHJpZ2h0PyBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIEZpcm13YXJlIGxvYWRpbmcgaXMgYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBib290IHByb2Nlc3MgYW5kIGRyaXZlciBpbml0aWFsaXphdGlvbi5cblxuQnV0IHdhaXQsIHRoaXMgZnVuY3Rpb24gaXMgb25seSAqY2FsbGVkKiB3aGVuIGZpcm13YXJlIGlzICpyZXF1ZXN0ZWQqLiBBbmQgZmlybXdhcmUgaXMgb25seSByZXF1ZXN0ZWQgZHVyaW5nIHRoZSAqcHJvYmluZyogc3RhZ2Ugb2YgdGhlIGRldmljZS4gU28sIHRoZSByZWdpc3RyYXRpb24gb2YgdGhpcyBgaXdsX3JlcV9md19jYWxsYmFja2AgZnVuY3Rpb24gaXMgY2xlYXJseSBpbXBvcnRhbnQgdG8gdGhlIHByb3BlciBvcGVyYXRpb24gb2YgdGhlIGRyaXZlci5cblxuVGhlcmVmb3JlLCBJIG5lZWQgdG8gZmlndXJlIG91dCAqd2hlcmUqIHRoaXMgYGl3bF9yZXFfZndfY2FsbGJhY2tgIGlzIGJlaW5nIHJlZ2lzdGVyZWQgaW4gdGhlIGtlcm5lbCBjb2RlLiBVbmRlcnN0YW5kaW5nIGl0cyByZWdpc3RyYXRpb24gbG9jYXRpb24gd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgZmlybXdhcmUgbG9hZGluZyBhcmNoaXRlY3R1cmUgYW5kIGhvdyBpdCdzIGludGVncmF0ZWQgd2l0aGluIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gTGV0J3Mgc2VlIGlmIEkgY2FuIHRyYWNlIHRoYXQgZG93bi4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjMwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTA6MDguMTM0MDY3ODY5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDc3NDQxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfcmVxX2Z3X2NhbGxiYWNrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9MjkzPUlXTF9FWFBPUlRfU1lNQk9MKGl3bF9kcnZfZ2V0X2Z3bmFtZV9wcmUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTI5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoyOTU6c3RhdGljIHZvaWQgaXdsX3JlcV9md19jYWxsYmFjayhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKnVjb2RlX3JhdyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0yOTYtXFx0XFx0XFx0XFx0dm9pZCAqY29udGV4dCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz0zMjU9c3RhdGljIGludCBpd2xfcmVxdWVzdF9maXJtd2FyZShzdHJ1Y3QgaXdsX2RydiAqZHJ2LCBib29sIGZpcnN0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMzg1LVxcdFxcdFxcdFxcdCAgICAgICBkcnYtXFx1MDAzZXRyYW5zLVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6Mzg2OlxcdFxcdFxcdFxcdCAgICAgICBHRlBfS0VSTkVMLCBkcnYsIGl3bF9yZXFfZndfY2FsbGJhY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTM4Ny19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz0xNjIxPXN0YXRpYyB2b2lkIF9pd2xfb3BfbW9kZV9zdG9wKHN0cnVjdCBpd2xfZHJ2ICpkcnYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xNjM4LS8qXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6MTYzOTogKiBpd2xfcmVxX2Z3X2NhbGxiYWNrIC0gY2FsbGJhY2sgd2hlbiBmaXJtd2FyZSB3YXMgbG9hZGVkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTY0MC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTY0My0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoxNjQ0OnN0YXRpYyB2b2lkIGl3bF9yZXFfZndfY2FsbGJhY2soY29uc3Qgc3RydWN0IGZpcm13YXJlICp1Y29kZV9yYXcsIHZvaWQgKmNvbnRleHQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTY0NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC00OC0gKiAgICAoaXdsX2Rydl9zdGFydClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaDo0OTogKiA2KSBpd2xfZHJ2X3N0YXJ0IGZldGNoZXMgdGhlIGZ3IEFTWU5DLCBpd2xfcmVxX2Z3X2NhbGxiYWNrXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6NTA6ICogNykgaXdsX3JlcV9md19jYWxsYmFjayBwYXJzZXMgdGhlIGZ3IGZpbGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaDo1MTogKiA4KSBpd2xfcmVxX2Z3X2NhbGxiYWNrIHN0YXJ0cyB0aGUgd2lmaSBpbXBsZW1lbnRhdGlvbiB0byBtYXRjaGVzIHRoZSBmd1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTUyLSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MDowOC4yNDg4NDc3N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MDA1MDQ1MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRob3NlIHRob3VnaHRzIGZyb20gYSBmaXJzdC1wZXJzb24sIGV4cGVydCBwZXJzcGVjdGl2ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBJbnRlbCBXaXJlbGVzcyBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IG1pbmQgaXMgaW1tZWRpYXRlbHkgZHJhd24gdG8gdGhlIEludGVsIFdpcmVsZXNzIGRyaXZlciBzdGFydHVwIHNlcXVlbmNlLCBzcGVjaWZpY2FsbHkgYGl3bF9kcnZfc3RhcnRgLiAqVGhhdCogZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGZldGNoaW5nIHRoZSBmaXJtd2FyZSwgd2hpY2ggaXMgYSBjcnVjaWFsIGZpcnN0IHN0ZXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgaW5pdGlhdGlvbiBvY2N1cnMuIFNvLCB3aGVyZSBpbiB0aGUgY29kZSBpcyBgaXdsX2Rydl9zdGFydGAgYWN0dWFsbHkgKmNhbGxlZCo/IEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBncmFwaCB0byBzZWUgd2hhdCBldmVudHMgb3IgZnVuY3Rpb25zIHRyaWdnZXIgdGhpcyBjcml0aWNhbCBzdGVwLiBUaGF0IHdpbGwgaGVscCBtZSBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBmbG93IGFuZCBpZGVudGlmeSBwb3RlbnRpYWwgYXJlYXMgZm9yIG9wdGltaXphdGlvbiwgb3IgcGVyaGFwcyBldmVuIGRlYnVnZ2luZyBpZiBJJ20gbG9va2luZyBhdCBhbiBpc3N1ZS4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzdGFjayBhcm91bmQgYGl3bF9kcnZfc3RhcnRgIGlzIHZpdGFsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjYyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTA6MTIuNjQ5MzUzOTc4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjM2MzM4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfZHJ2X3N0YXJ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9MTY0ND1zdGF0aWMgdm9pZCBpd2xfcmVxX2Z3X2NhbGxiYWNrKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqdWNvZGVfcmF3LCB2b2lkICpjb250ZXh0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTk1OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoxOTYwOnN0cnVjdCBpd2xfZHJ2ICppd2xfZHJ2X3N0YXJ0KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE5NjEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtNDctICogNSkgVGhlIGJ1cyBzcGVjaWZpYyBjb21wb25lbnQgY2FsbHMgdG8gdGhlIGRydiBidXMgYWdub3N0aWMgcGFydFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oOjQ4OiAqICAgIChpd2xfZHJ2X3N0YXJ0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oOjQ5OiAqIDYpIGl3bF9kcnZfc3RhcnQgZmV0Y2hlcyB0aGUgZncgQVNZTkMsIGl3bF9yZXFfZndfY2FsbGJhY2tcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC01MC0gKiA3KSBpd2xfcmVxX2Z3X2NhbGxiYWNrIHBhcnNlcyB0aGUgZncgZmlsZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg9NTY9c3RydWN0IGl3bF9yZl9jZmc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtNTctLyoqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6NTg6ICogaXdsX2Rydl9zdGFydCAtIHN0YXJ0IHRoZSBkcnZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC01OS0gKlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtNjctICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6Njg6c3RydWN0IGl3bF9kcnYgKml3bF9kcnZfc3RhcnQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTY5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jPTQyMzI9aW50IGl3bF9wY2lfZ2VuMV8yX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTQzNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jOjQzNjg6XFx0aXdsX3RyYW5zLVxcdTAwM2VkcnYgPSBpd2xfZHJ2X3N0YXJ0KGl3bF90cmFucyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTQzNjktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUwOjEyLjcxNTcyMjQwNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NjU3MzI2MDMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFBDSSBGdXp6aW5nIERpbGVtbWEqKlxuXG5Pa2F5LCBzbyBgaXdsX3BjaV9nZW4xXzJfcHJvYmVgIGNhbGxzIGBpd2xfZHJ2X3N0YXJ0YC4gUmlnaHQsIHRoaXMgaXMgYSBQQ0kgZHJpdmVyLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIEkgZnV6eiB0aGlzIHdpdGggc3l6a2FsbGVyPyBTeXprYWxsZXIgZG9lc24ndCBoYXZlIGEgKmdlbmVyaWMqIFBDSSBmdXp6ZXIgdGhhdCBjYW4gcHJvYmUgYW55IFBDSSBkZXZpY2UsIEkga25vdyB0aGF0IG11Y2guIEJ1dCB3YWl0Li4uIGRpZG4ndCB0aGV5IGFkZCBzb21ldGhpbmcgZm9yIFBDSSBhIHdoaWxlIGJhY2s/IEkgc2hvdWxkIGNoZWNrIGlmIHRoZXJlJ3MgKmFueSogUENJIGZ1enppbmcgY2FwYWJpbGl0eS4gQWgsIGJ1dCB0aGUgcHJvbXB0IGRvZXMgc2F5IHNvbWV0aGluZyBhYm91dCBjb2RlIHBhdGhzIGJlaW5nIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemF0aW9uLCBlc3BlY2lhbGx5IHdoZW4gdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuXG5cbk9rYXksIHNvIGRvZXMgc3l6a2FsbGVyICplbXVsYXRlKiBQQ0kgZGV2aWNlcz8gTm8sIHRoYXQncyByaWdodC4gSXQgdXNlcyBgZHVtbXlfaGNkYCAodXNiIGdhZGdldCkgZm9yIFVTQi4gQnV0IGZvciBQQ0ksIHRoZXJlJ3Mgbm8gYGR1bW15X3BjaWAgZXF1aXZhbGVudCBpbiB0aGUga2VybmVsIHRvIGFsbG93IGluamVjdGluZyBhcmJpdHJhcnkgUENJIGRldmljZXMuIFxuXG5IYW5nIG9uLi4uIHdoYXQgYWJvdXQgYHZmaW9gIG9yIGBwY2lfZW5kcG9pbnRfdGVzdGA/IENvdWxkIHRob3NlIGJlIHVzZWZ1bCBoZXJlPyBMZXQncyBnbyBiYWNrIGFuZCBleHBsaWNpdGx5IHNlYXJjaCBmb3IgUENJIGZ1enppbmcgaW4gc3l6a2FsbGVyLiBEaWQgSSBjb25mdXNlIGl0IHdpdGggYHN5el9wY2lfZGV2aWNlYCBvciBzb21ldGhpbmc/IE5vLCB0aGF0J3Mgbm90IGl0LCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgdGhpbmdzIGxpa2UgYHN5el91c2JfY29ubmVjdGAsIGBzeXpfdXNiX2Rpc2Nvbm5lY3RgLCBgc3l6X3VzYl9jb250cm9sX2lvYC4uLiBidXQgbm90aGluZyBkaXJlY3RseSBlcXVpdmFsZW50IGZvciBQQ0kuIFxuXG5XYWl0LCB3YWl0Li4uIHdoYXQgYWJvdXQgYG1hYzgwMjExX2h3c2ltYD8gVGhhdCdzIGEgc29mdHdhcmUgc2ltdWxhdG9yIGZvciBXaS1GaSwgYnV0IGl0J3Mgbm90IGFjdHVhbGx5IHRoZSBgaXdsd2lmaWAgZHJpdmVyLCBpcyBpdD8gQ291bGQgSSByZWFjaCB0aGlzIHNwZWNpZmljIGNvZGUsIGBpd2x3aWZpYD8gSSBuZWVkIHRvIGNoZWNrIGlmIGBpd2x3aWZpYCBpdHNlbGYgaGFzIGFueSB2aXJ0dWFsIG9yIHNpbXVsYXRlZCBtb2Rlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODE5OCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MDoyMC4zNzMwNTE5MzdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1NjMyMDE3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYWM4MDIxMV9od3NpbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MDoyMC40Mzg2OTUwMTRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY4MzY4NDExNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBNaXNzaW5nIExpbmsqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyB0aHJvdWdoIHRoZSBgaXdsd2lmaWAga2VybmVsIG1vZHVsZSBhbmQgSSdtIG5vdCBzZWVpbmcgYW55IHJlZmVyZW5jZXMsIG5vdCBhIHNpbmdsZSBtZW50aW9uLCBvZiBgbWFjODAyMTFfaHdzaW1gLiBUaGF0J3MuLi4gdW51c3VhbC4gR2l2ZW4gbXkgZmFtaWxpYXJpdHkgd2l0aCB3aXJlbGVzcyBkcml2ZXJzLCBlc3BlY2lhbGx5IHdpdGhpbiB0aGUgTGludXgga2VybmVsLCBJJ2QgZXhwZWN0IHRvIGZpbmQgc29tZSBpbmRpY2F0aW9uIG9mIGludGVyYWN0aW9uLCBwZXJoYXBzIGEgYnJpZGdpbmcgcG9pbnQsIGlmIHRoZXJlIHdhcyBhIHRlc3Rpbmcgb3Igc2ltdWxhdGlvbiBkcml2ZXIgdGllZCBpbi5cblxuTXkgaW1tZWRpYXRlIGh5cG90aGVzaXMgaXMgdGhhdCB0aGVyZSBtaWdodCBiZSBhIGRlZGljYXRlZCB0ZXN0IG9yIFwiZHVtbXlcIiBkcml2ZXIsIHBlcmhhcHMgb25lIHVzZWQgaW50ZXJuYWxseSB3aXRoaW4gYGl3bHdpZmlgLCBvciBwZXJoYXBzIGEgc2VwYXJhdGUgbW9kdWxlIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBzaW11bGF0ZSB0aGUgaGFyZHdhcmUgaW50ZXJhY3Rpb24gZm9yIHRlc3RpbmcgcHVycG9zZXMuIEl0J3MgdGltZSB0byBicm9hZGVuIHRoZSBzZWFyY2guIEkgbmVlZCB0byBwaXZvdCBhbmQgZXhwbG9yZSB0aGUgc3Vycm91bmRpbmcgY29kZSwgdGhlIGJ1aWxkIGluZnJhc3RydWN0dXJlLCBhbmQgYW55IGV4aXN0aW5nIGRvY3VtZW50YXRpb24gZm9yIGBpd2x3aWZpYCB0byBzZWUgaWYgdGhlcmUncyBhbiBhbHRlcm5hdGl2ZSBhcHByb2FjaCB0byB0ZXN0aW5nIG9yIHNpbXVsYXRpbmcgaXRzIGhhcmR3YXJlLiBUaGlzIGlzbid0IGp1c3QgYWJvdXQgZmluZGluZyBgbWFjODAyMTFfaHdzaW1gIGRpcmVjdGx5OyBpdCdzIGFib3V0IHVuZGVyc3RhbmRpbmcgaG93IHRoZXkgKndvdWxkKiB0ZXN0IHRoaXMgdGhpbmcgaWYgdGhleSAqZGlkbid0KiB1c2UgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwNDAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MDoyNC4xMjIzODE4MDlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3NDI4MjY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImR1bW15XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZmguaC0zMC0gKiBEcml2ZXIgbXVzdCBhbGxvY2F0ZSBhIDRLQnl0ZSBidWZmZXIgdGhhdCBpcyBmb3Iga2VlcGluZyB0aGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1maC5oOjMxOiAqIGhvc3QgRFJBTSBwb3dlcmVkIG9uICh2aWEgZHVtbXkgYWNjZXNzZXMgdG8gRFJBTSkgdG8gbWFpbnRhaW4gbG93LWxhdGVuY3lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1maC5oOjMyOiAqIERSQU0gYWNjZXNzIHdoZW4gZG9pbmcgVHhpbmcgb3IgUnhpbmcuICBUaGUgZHVtbXkgYWNjZXNzZXMgcHJldmVudCBob3N0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZmguaC0zMy0gKiBmcm9tIGdvaW5nIGludG8gYSBwb3dlci1zYXZpbmdzIG1vZGUgdGhhdCB3b3VsZCBjYXVzZSBoaWdoZXIgRFJBTSBsYXRlbmN5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtbnZtLXBhcnNlLmM9MTcxMj1pd2xfcGFyc2VfbnZtX21jY19pbmZvKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtbnZtLXBhcnNlLmMtMTc1OS1cXHQgKiBzaW5jZSBjZmc4MDIxMSBkb2Vzbid0IGFjY2VwdCBhbiBlbXB0eSByZWdkb21haW4sIHdlIG5lZWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1udm0tcGFyc2UuYzoxNzYwOlxcdCAqIHRvIGFsbG9jYXRlIHNwYWNlIGZvciBhdCBsZWFzdCBvbmUgcnVsZSB0byBhZGQgYSBkdW1teVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLW52bS1wYXJzZS5jLTE3NjEtXFx0ICogKHVudXNhYmxlKSBydWxlIGluIHRoaXMgY2FzZSBzbyB3ZSBjYW4gaW5pdC5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLW52bS1wYXJzZS5jLTE4MzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtbnZtLXBhcnNlLmM6MTgzNzpcXHQvKiBJZiBubyB2YWxpZCBydWxlcyB3ZXJlIGZvdW5kLCBhZGQgYSBkdW1teSBydWxlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtbnZtLXBhcnNlLmMtMTgzOC1cXHRpZiAoIXZhbGlkX3J1bGVzKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jPTI0MDg9aXdsX21sZF9jaGFubmVsX3N3aXRjaChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmMtMjQxOS1cXHRJV0xfREVCVUdfTUFDODAyMTEobWxkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmM6MjQyMDpcXHRcXHRcXHQgICBcXFwiZHVtbXkgY2hhbm5lbCBzd2l0Y2ggb3BcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmMtMjQyMS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9jb2V4LmM9MTY9c3RhdGljIGNvbnN0IF9fbGU2NCBpd2xfY2lfbWFza1tdWzNdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2NvZXguYzoxNzpcXHQvKiBkdW1teSBlbnRyeSBmb3IgY2hhbm5lbCAwICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vY29leC5jLTE4LVxcdHtjcHVfdG9fbGU2NCgwKSwgY3B1X3RvX2xlNjQoMCksIGNwdV90b19sZTY0KDApfSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmM9NTM3MD12b2lkIGl3bF9tdm1fY2hhbm5lbF9zd2l0Y2goc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jLTUzNzktXFx0SVdMX0RFQlVHX01BQzgwMjExKElXTF9NQUM4MDIxMV9HRVRfTVZNKGh3KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jOjUzODA6XFx0XFx0XFx0ICAgXFxcImR1bW15IGNoYW5uZWwgc3dpdGNoIG9wXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jLTUzODEtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2N0eHQtaW5mby12Mi5jPTEwMD1pbnQgaXdsX3BjaWVfY3R4dF9pbmZvX3YyX2FsbG9jKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2N0eHQtaW5mby12Mi5jLTIwMS1cXHQgKiBXZSBhbHNvIHVzZSB0aGUgc2Vjb25kIGhhbGYgb2YgdGhpcyBwYWdlIHRvIGdpdmUgdGhlIGRldmljZSBzb21lXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2N0eHQtaW5mby12Mi5jOjIwMjpcXHQgKiBkdW1teSBUUi9DUiB0YWlsIHBvaW50ZXJzIC0gd2hpY2ggc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSBhcyB3ZSBkb24ndFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9jdHh0LWluZm8tdjIuYy0yMDMtXFx0ICogdXNlIHRoaXMsIGJ1dCB0aGUgaGFyZHdhcmUgc3RpbGwgcmVhZHMvd3JpdGVzIHRoZXJlIGFuZCB3ZSBjYW4ndCBsZXRcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYz0zODAwPWl3bF90cmFuc19wY2llX2FsbG9jKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTM4NzgtXFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jOjM4Nzk6XFx0dHJhbnNfcGNpZS1cXHUwMDNlbmFwaV9kZXYgPSBhbGxvY19uZXRkZXZfZHVtbXkoc2l6ZW9mKHN0cnVjdCBpd2xfdHJhbnNfcGNpZSAqKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTM4ODAtXFx0aWYgKCF0cmFuc19wY2llLVxcdTAwM2VuYXBpX2Rldikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MDoyNC4xODk4MjYyOTZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY5MDc4NTIwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGl3bHdpZmkgRHJpdmVyIGFuZCBGaXJtd2FyZSBQYXJzaW5nKipcblxuT2theSwgc28gdGhlcmUncyBubyB3YXkgdG8gdHJpY2sgdGhlIHN5c3RlbSBpbnRvIHRoaW5raW5nIHRoZXJlJ3MgYW4gaXdsd2lmaSBjYXJkIHByZXNlbnQgd2hlbiB0aGVyZSBpc24ndCwgcmlnaHQ/IFdhaXQuLi4gaXMgdGhlcmUgYSB3YXkgdG8gZm9yY2UgdGhlIGRyaXZlciB0byBsb2FkIGFuZCwgY3J1Y2lhbGx5LCB0cmlnZ2VyIHRoYXQgZmlybXdhcmUgcGFyc2luZyBldmVuIHdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlPyBUaGF0J3MgdGhlIHJlYWwgcXVlc3Rpb24uXG5cbkkgcmVtZW1iZXIgdGhlIGRyaXZlciByZWdpc3RlcnMgYXMgYSBQQ0kgZHJpdmVyLiBUaGUgcHJvYmUgZnVuY3Rpb24gaXMgc29tZXRoaW5nIGxpa2UgYGl3bF9wY2lfZ2VuMV8yX3Byb2JlYC4gTmF0dXJhbGx5LCB3aXRob3V0IHRoZSBoYXJkd2FyZSwgdGhhdCBwcm9iZSBmdW5jdGlvbiAqbmV2ZXIqIGdldHMgY2FsbGVkLiBBbmQgaWYgdGhhdCdzIG5ldmVyIGNhbGxlZCwgYGl3bF9kcnZfc3RhcnRgIGlzIG5ldmVyIGNhbGxlZC4gV2hpY2ggbWVhbnMgZmlybXdhcmUgaXNuJ3QgcmVxdWVzdGVkLiBUaGVyZWZvcmUgYGl3bF9yZXFfZndfY2FsbGJhY2tgIG5ldmVyIGhhcHBlbnMuIENvbnNlcXVlbnRseSBgaXdsX3BhcnNlX3Rsdl9maXJtd2FyZWAgaXMgbmV2ZXIgcmVhY2hlZC5cblxuU28sIGluIGEgcHVyZWx5IHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB3aXRob3V0IHNwZWNpZmljIEludGVsIFdpLUZpIGhhcmR3YXJlLCBteSBtb2RpZmllZCBjb2RlIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUuIFRoYXQncyBhIHNvbGlkIGNvbmNsdXNpb24uXG5cbkhvd2V2ZXIsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLi4uIGlzIHRoZXJlICphbnkqIG90aGVyIHBvc3NpYmxlIHBhdGggdG8gYGl3bF9wYXJzZV90bHZfZmlybXdhcmVgPyBJdCdzIHRpbWUgdG8gY2hlY2sgaWYgdGhhdCBmdW5jdGlvbiBpcyBleHBvcnRlZCwgb3IgaWYgaXQgaXMgY2FsbGVkIGZyb20gYW55d2hlcmUgZWxzZSBpbiB0aGUgY29kZSBiYXNlLiBMZXQncyBzZWUgaWYgdGhlcmUncyBhbnkgb3RoZXIgaG9vayB0aGF0IGNvdWxkIHRyaWdnZXIgdGhpcyBwYXJ0IG9mIHRoZSBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDcwMywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MDoyOS44ODA2MTM3MzFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2Njk0NzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9wYXJzZV90bHZfZmlybXdhcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz03MzI9c3RhdGljIHZvaWQgaXdsX3BhcnNlX2RiZ190bHZfYXNzZXJ0X3RhYmxlcyhzdHJ1Y3QgaXdsX2RydiAqZHJ2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtNzkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjc5MjpzdGF0aWMgaW50IGl3bF9wYXJzZV90bHZfZmlybXdhcmUoc3RydWN0IGl3bF9kcnYgKmRydixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy03OTMtXFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IGZpcm13YXJlICp1Y29kZV9yYXcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz0xNjQ0PXN0YXRpYyB2b2lkIGl3bF9yZXFfZndfY2FsbGJhY2soY29uc3Qgc3RydWN0IGZpcm13YXJlICp1Y29kZV9yYXcsIHZvaWQgKmNvbnRleHQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xNjkzLVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoxNjk0OlxcdFxcdGVyciA9IGl3bF9wYXJzZV90bHZfZmlybXdhcmUoZHJ2LCB1Y29kZV9yYXcsIHBpZWNlcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xNjk1LVxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNmZ3LVxcdTAwM2V1Y29kZV9jYXBhLCBcXHUwMDI2dXNuaWZmZXJfaW1hZ2VzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTA6MjkuOTQ3MzE1NzQ4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NzAxMzI4NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyB0aGUgY29udGV4dCBpcyBteSBhcmVhIG9mIGV4cGVydGlzZTpcblxuKipGaXJtd2FyZSBMb2FkaW5nIElucXVpcnkqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzLiBJIHNlZSB0aGF0IHRoaXMgYGl3bF9yZXFfZndfY2FsbGJhY2tgIGZ1bmN0aW9uIGlzIHRoZSBvbmx5IGNhbGxlciwgd2hpY2ggbWFrZXMgdGhlIGNvbnRyb2wgZmxvdyBhIGxvdCBzaW1wbGVyLCBidXQgSSBjYW4ndCBzaGFrZSB0aGUgbmFnZ2luZyBmZWVsaW5nIHRoYXQgdGhlcmUncyBhbm90aGVyIHBvaW50IG9mIGVudHJ5LiBTb21ldGhpbmcgbGlrZSBgaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGVgIGtlZXBzIHBvcHBpbmcgaW50byBtaW5kLCBjb3VsZCB0aGlzIGltcGFjdCB0aGUgd2hvbGUgZmlybXdhcmUgbG9hZGluZyBhcyB3ZWxsP1xuXG5cbiIsIklucHV0VG9rZW5zIjoxMTYxMiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUwOjMzLjYxNzQ1Mjg0M1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjczOTkzOTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYz02Mzk9aW50IGl3bF9hY3BpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jLTgwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYzo4MDQ6aW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYy04MDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg9MTgzPWludCBpd2xfYWNwaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTE4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaDoxODU6aW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmgtMTg2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg9MjM0PXN0YXRpYyBpbmxpbmUgaW50IGl3bF9hY3BpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTIzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaDoyMzk6c3RhdGljIGlubGluZSBpbnQgaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTI0MC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUwOjMzLjY4NDg2MTUxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzNDY0MTQyMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipUcmFjaW5nIHRoZSBgaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGVgIENhbGwgU2l0ZSoqXG5cbkFscmlnaHQsIHNvIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gYnV6emluZyBpbiBteSBoZWFkIGlzOiB3aGVyZSBleGFjdGx5IGlzIHRoaXMgYGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlYCBmdW5jdGlvbiBiZWluZyBpbnZva2VkPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gS25vd2luZyB0aGUgY2FsbCBzaXRlcyBpcyBjcnVjaWFsLiBJcyBpdCBwYXJ0IG9mIHRoZSBpbml0aWFsIGRyaXZlciBwcm9iZSwgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbj8gT3IgbWF5YmUgaXQncyB0cmlnZ2VyZWQgYnkgc29tZSBsYXRlciBldmVudCwgbGlrZSBhIHBvd2VyIG1hbmFnZW1lbnQgdHJhbnNpdGlvbiBvciBhbiBBQ1BJIG5vdGlmaWNhdGlvbj9cblxuSSdtIHRoaW5raW5nIEknbGwgc3RhcnQgYnkgZG9pbmcgYSBxdWljayBjb2RlIHNlYXJjaCwgbGlrZWx5IHdpdGggYGdyZXBgIG9yIHNpbWlsYXIsIHRvIGlkZW50aWZ5IHRoZSBzb3VyY2UgZmlsZXMgdGhhdCByZWZlcmVuY2UgdGhpcyBmdW5jdGlvbi4gT25jZSBJIGhhdmUgdGhlIGZpbGUgbGlzdCwgSSBjYW4gdGhlbiBkbyBhIG1vcmUgaW4tZGVwdGggYW5hbHlzaXMgb2YgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZ3Jhc3AgaXRzIHB1cnBvc2UuIE15IHByaW1hcnkgZ29hbCBoZXJlIGlzIHRvIGVzdGFibGlzaCB0aGUgY29udHJvbCBmbG93IGFuZCBkZXRlcm1pbmUgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhpcyBmdW5jdGlvbiBleGVjdXRlcy4gS25vd2luZyB0aGUgY2FsbCBjaGFpbiBpcyBrZXkgdG8gZGVidWdnaW5nIG9yIG1vZGlmeWluZyBpdHMgYmVoYXZpb3IuIEkgZXhwZWN0IHRvIGJlIGFibGUgdG8gcXVpY2tseSBkZXRlcm1pbmUgaG93IHRvIHRyYWNlIHRoZSBjYWxscywgYnkgdXNpbmcgYSBkZWJ1Z2dlciBvciBzaW1pbGFyIHRvb2xzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjI3NywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUwOjM5LjAzMTI3ODU0MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA1Mzk1MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYz02Mzk9aW50IGl3bF9hY3BpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jLTgwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYzo4MDQ6aW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYy04MDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg9MTgzPWludCBpd2xfYWNwaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTE4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaDoxODU6aW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmgtMTg2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg9MjM0PXN0YXRpYyBpbmxpbmUgaW50IGl3bF9hY3BpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTIzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaDoyMzk6c3RhdGljIGlubGluZSBpbnQgaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTI0MC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUwOjM5LjEwMTgyNTQ4OVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDAwODM4MDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuLi5cblxuKipDaGVja2luZyBmb3IgVW5leHBlY3RlZCBDYWxscyoqXG5cbkhvbGQgb24gYSBzZWNvbmQsIGFtIEkgcmVhZGluZyB0aGlzIHJpZ2h0PyBUaGlzIHNwZWNpZmljIHRoaW5nIGlzbid0IHJlZmVyZW5jZWQgKmFueXdoZXJlKiBlbHNlIGluIHRoZSBjb2RlYmFzZT8gVGhhdCBzZWVtcy4uLnVudXN1YWwuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhIGNyb3NzLXJlZmVyZW5jZSBzb21ld2hlcmUuIEl0J3MgZWFzeSB0byBvdmVybG9vayB0aGluZ3MgaW4gdGhlc2UgbGFyZ2UgZHJpdmVyIG1vZHVsZXMuXG5cblJpZ2h0LCBsZXQgbWUgZG91YmxlLWNoZWNrLiBJJ20gZ29pbmcgdG8gc2NhbiB0aGUgZW50aXJlIHByb2plY3QgdG8gY29uZmlybSB3aGV0aGVyIHRoaXMgY29kZSBwYXRoIGlzIGludm9rZWQgb3IgcGVyaGFwcyBoYXMgYW4gaW5kaXJlY3QgZGVwZW5kZW5jeSB0aGF0IEknbSBub3QgaW1tZWRpYXRlbHkgY29uc2lkZXJpbmcsIG9yIGV2ZW4gaWYgaXQgaXMgY2FsbGVkIGZyb20gb3V0c2lkZSB0aGUgYGl3bHdpZmlgIG1vZHVsZS4gTmVlZCB0byBlbnN1cmUgbm8gZXh0ZXJuYWwgY29tcG9uZW50cyBhcmUgaW50ZXJhY3Rpbmcgd2l0aCBpdCB1bmV4cGVjdGVkbHkuIEl0IHdvdWxkIGJlIGEgc2lnbmlmaWNhbnQgb3ZlcnNpZ2h0IGlmIHNvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzA0NiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUwOjQyLjUwMjY2NTc4OFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM1NTMxOTkxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfYWNwaV9nZXRfd2dkc190YWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmM9NjM5PWludCBpd2xfYWNwaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYy04MDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmM6ODA0OmludCBpd2xfYWNwaV9nZXRfd2dkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmMtODA1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oPTE4Mz1pbnQgaXdsX2FjcGlfZ2V0X2V3cmRfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaC0xODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg6MTg1OmludCBpd2xfYWNwaV9nZXRfd2dkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTE4Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oPTIzND1zdGF0aWMgaW5saW5lIGludCBpd2xfYWNwaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaC0yMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg6MjM5OnN0YXRpYyBpbmxpbmUgaW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaC0yNDAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MDo0NC44NTc5OTI5ODJaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTgyOTYxNjUwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZWJ1Z2dpbmcgYSBTdXNwZWN0IEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGZ1bmN0aW9uLCB3aGF0ZXZlciBpdCBpcywgaXMgYWN0dWFsbHkgKnVzZWQqLiBNeSBpbml0aWFsIGdyZXAgc2VhcmNoIGRpZG4ndCB0dXJuIHVwIGFueSBkaXJlY3QgY2FsbHMgdG8gaXQg4oCTIHRoYXQncyB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wZWQgb3V0IGF0IG1lLiBJJ20gdGhpbmtpbmcsIFwiV2FpdCwgaXMgaXQgbm90IGJlaW5nIGNhbGxlZCAqYW55d2hlcmUqPyBUaGF0IGNhbid0IGJlIHJpZ2h0IVwiXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGJyb2FkZW4gbXkgc2VhcmNoLiBJdCBjb3VsZCBiZSBjYWxsZWQgYnkgYW5vdGhlciBmdW5jdGlvbiBvciBtYWNybywgc28gYSBzaW1wbGUgZ3JlcCBtaWdodCBtaXNzIGl0LiBJIG5lZWQgdG8gZGlnIGRlZXBlci4gSSdtIGdvaW5nIHRvIGNoZWNrIHRoZSBtb3JlIG9idmlvdXMgcGxhY2VzIHdoZXJlIHRoaXMga2luZCBvZiBmdW5jdGlvbiBtaWdodCBiZSB1c2VkLiBJIHNob3VsZCBzdGFydCB3aXRoIGBpd2xfYWNwaV9nZXRfd2dkc190YWJsZWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmNgIG9yIG90aGVyIHNpbWlsYXIgZmlsZXMgdG8gYmUgc3VyZS5cblxuQnV0IGlmIHRoZXJlIGlzIG5vIGNhbGxzIHRvIHRoYXQgZnVuY3Rpb24sIHRoZW4gaXQgbmVlZHMgdG8gYmUga25vd24gaG93IGl0IGlzIHVzZWQuIEknbSBzdGFydGluZyB0byBjb25zaWRlciBvdGhlciBwb3NzaWJpbGl0aWVzOyBpcyBpdCBiZWluZyBhY2Nlc3NlZCB2aWEgYSBmdW5jdGlvbiBwb2ludGVyPyBJZiB0aGF0J3MgdGhlIGNhc2UsIGEgZGlyZWN0IGdyZXAgb24gdGhlIGZ1bmN0aW9uIG5hbWUgd29uJ3Qgd29yay4gVGhlIGZ1bmN0aW9uIHdvdWxkIGJlIGNhbGxlZCBpbmRpcmVjdGx5LlxuXG5BbHJpZ2h0LCB0aW1lIHRvIHNoaWZ0IGdlYXJzIGFuZCBjaGVjayBmb3IgdGhlIGluZGlyZWN0IHVzZS4gSSBzaG91bGQgbG9vayBpbnRvIHRoZSBzb3VyY2UgZmlsZXMgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmNgIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuY2AsIHdoZXJlIGZ1bmN0aW9uIHBvaW50ZXJzIG1pZ2h0IGJlIHVzZWQuIEhvcGVmdWxseSwgdGhpcyBhcHByb2FjaCB3aWxsIHJldmVhbCBob3cgdGhlIGZ1bmN0aW9uIGlzIGludm9rZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNzI5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUwOjUwLjY4NzYxMjIxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjYwMzk1NzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndnZHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYz02Mzk9aW50IGl3bF9hY3BpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jLTgwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYzo4MDQ6aW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYy04MDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg9MTgzPWludCBpd2xfYWNwaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTE4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaDoxODU6aW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmgtMTg2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg9MjM0PXN0YXRpYyBpbmxpbmUgaW50IGl3bF9hY3BpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTIzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaDoyMzk6c3RhdGljIGlubGluZSBpbnQgaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTI0MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuYz0zND1JV0xfQklPU19UQUJMRV9MT0FERVIoZXdyZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9yZWd1bGF0b3J5LmM6MzU6SVdMX0JJT1NfVEFCTEVfTE9BREVSKHdnZHNfdGFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jLTM2LUlXTF9CSU9TX1RBQkxFX0xPQURFUihwcGFnX3RhYmxlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5oPTIwNz1pbnQgaXdsX2Jpb3NfZ2V0X2V3cmRfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuaC0yMDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9yZWd1bGF0b3J5Lmg6MjA5OmludCBpd2xfYmlvc19nZXRfd2dkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5oLTIxMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTUzOT1pbnQgaXdsX3VlZmlfZ2V0X2V3cmRfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjU5MzppbnQgaXdsX3VlZmlfZ2V0X3dnZHNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTU5NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NTk1OlxcdHN0cnVjdCB1ZWZpX2Nudl92YXJfd2dkcyAqZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01OTYtXFx0dW5zaWduZWQgbG9uZyBleHBlY3RlZF9zaXplO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg9MTMwPXN0cnVjdCB1ZWZpX2Nudl92YXJfZXdyZCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xNDUtLyoqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MTQ2OiAqIHN0cnVjdCB1ZWZpX2Nudl92YXJfd2dkcyAtIFdHRFMgdGFibGUgYXMgZGVmaW5lZCBpbiBVRUZJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTQ3LSAqIEByZXZpc2lvbjogdGhlIHJldmlzaW9uIG9mIHRoZSB0YWJsZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTU1LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjE1NjpzdHJ1Y3QgdWVmaV9jbnZfdmFyX3dnZHMge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE1Ny1cXHR1OCByZXZpc2lvbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE2OS0jZGVmaW5lIFVFRklfV0dEU19UQUJMRV9TSVpFX1JFVjNcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MTcwOlxcdChvZmZzZXRvZihzdHJ1Y3QgdWVmaV9jbnZfdmFyX3dnZHMsIHZhbHMpICtcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTcxLVxcdCBVRUZJX1dHRFNfUFJPRklMRV9TSVpFX1JFVjMgKiBCSU9TX0dFT19NQVhfUFJPRklMRV9OVU0pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xNzMtI2RlZmluZSBVRUZJX1dHRFNfVEFCTEVfU0laRV9SRVY0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjE3NDpcXHQob2Zmc2V0b2Yoc3RydWN0IHVlZmlfY252X3Zhcl93Z2RzLCB2YWxzKSArXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE3NS1cXHQgVUVGSV9XR0RTX1BST0ZJTEVfU0laRV9SRVY0ICogQklPU19HRU9fTUFYX1BST0ZJTEVfTlVNKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg9MzM0PWludCBpd2xfdWVmaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjMzNTppbnQgaXdsX3VlZmlfZ2V0X3dnZHNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0zMzYtaW50IGl3bF91ZWZpX2dldF9wcGFnX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaD0zOTE9c3RhdGljIGlubGluZSBpbnQgaXdsX3VlZmlfZ2V0X2V3cmRfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMzk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjM5NjpzdGF0aWMgaW5saW5lIGludCBpd2xfdWVmaV9nZXRfd2dkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMzk3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3JlZ3VsYXRvcnkuYz0xNj12b2lkIGl3bF9tbGRfZ2V0X2Jpb3NfdGFibGVzKHN0cnVjdCBpd2xfbWxkICptbGQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9yZWd1bGF0b3J5LmMtMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvcmVndWxhdG9yeS5jOjM5OlxcdFxcdGlmICghaXdsX2Jpb3NfZ2V0X3dnZHNfdGFibGUoXFx1MDAyNm1sZC1cXHUwMDNlZndydCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9yZWd1bGF0b3J5LmMtNDAtXFx0XFx0XFx0LyogSWYgYmFzaWMgU0FSIGlzIG5vdCBhdmFpbGFibGUsIHdlIGNoZWNrIGZvciBXR0RTLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvcmVndWxhdG9yeS5jLTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3JlZ3VsYXRvcnkuYzo1ODpcXHRcXHRyZXQgPSBpd2xfYmlvc19nZXRfd2dkc190YWJsZShcXHUwMDI2bWxkLVxcdTAwM2Vmd3J0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9yZWd1bGF0b3J5LmMtNTktXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9yZWd1bGF0b3J5LmM9NzI9c3RhdGljIGludCBpd2xfbWxkX2dlb19zYXJfaW5pdChzdHJ1Y3QgaXdsX21sZCAqbWxkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvcmVndWxhdG9yeS5jLTEwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9yZWd1bGF0b3J5LmM6MTA3OlxcdC8qIEl0IGlzIGEgdmFsaWQgc2NlbmFyaW8gdG8gbm90IHN1cHBvcnQgU0FSLCBvciBtaXNzIHdnZHMgdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvcmVndWxhdG9yeS5jLTEwOC1cXHQgKiBidXQgaW4gdGhhdCBjYXNlIHRoZXJlIGlzIG5vIG5lZWQgdG8gc2VuZCB0aGUgY29tbWFuZC5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmM9OTc3PXN0YXRpYyBpbnQgaXdsX212bV9zYXJfZ2VvX2luaXQoc3RydWN0IGl3bF9tdm0gKm12bSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmMtMTA0NC1cXHQvKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmM6MTA0NTpcXHQgKiBJdCBpcyBhIHZhbGlkIHNjZW5hcmlvIHRvIG5vdCBzdXBwb3J0IFNBUiwgb3IgbWlzcyB3Z2RzIHRhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmMtMTA0Ni1cXHQgKiBidXQgaW4gdGhhdCBjYXNlIHRoZXJlIGlzIG5vIG5lZWQgdG8gc2VuZCB0aGUgY29tbWFuZC5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmM9MTUyOT12b2lkIGl3bF9tdm1fZ2V0X2Jpb3NfdGFibGVzKHN0cnVjdCBpd2xfbXZtICptdm0pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jLTE1NTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYzoxNTUzOlxcdFxcdGlmICghaXdsX2Jpb3NfZ2V0X3dnZHNfdGFibGUoXFx1MDAyNm12bS1cXHUwMDNlZndydCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jLTE1NTQtXFx0XFx0XFx0LypcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmMtMTU3My1cXHRcXHRpZiAoaXdsX3Nhcl9nZW9fc3VwcG9ydChcXHUwMDI2bXZtLVxcdTAwM2Vmd3J0KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmM6MTU3NDpcXHRcXHRcXHRyZXQgPSBpd2xfYmlvc19nZXRfd2dkc190YWJsZShcXHUwMDI2bXZtLVxcdTAwM2Vmd3J0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jLTE1NzUtXFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9udm0uYz01OTE9dm9pZCBpd2xfbXZtX3J4X2NodWJfdXBkYXRlX21jYyhzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbnZtLmMtNTk4LVxcdHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluICpyZWdkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL252bS5jOjU5OTpcXHRpbnQgd2dkc190YmxfaWR4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL252bS5jLTYwMC1cXHRib29sIGNoYW5nZWQgPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL252bS5jLTYyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9udm0uYzo2Mjk6XFx0d2dkc190YmxfaWR4ID0gaXdsX212bV9nZXRfc2FyX2dlb19wcm9maWxlKG12bSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbnZtLmM6NjMwOlxcdGlmICh3Z2RzX3RibF9pZHggXFx1MDAzYyAxKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL252bS5jLTYzMS1cXHRcXHRJV0xfREVCVUdfSU5GTyhtdm0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbnZtLmMtNjMyLVxcdFxcdFxcdCAgICAgICBcXFwiU0FSIFdHRFMgaXMgZGlzYWJsZWQgb3IgZXJyb3IgcmVjZWl2ZWQgKCVkKVxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9udm0uYzo2MzM6XFx0XFx0XFx0ICAgICAgIHdnZHNfdGJsX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbnZtLmMtNjM0LVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9udm0uYy02MzUtXFx0XFx0SVdMX0RFQlVHX0lORk8obXZtLCBcXFwiU0FSIFdHRFM6IGdlbyBwcm9maWxlICVkIGlzIGNvbmZpZ3VyZWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbnZtLmM6NjM2OlxcdFxcdFxcdCAgICAgICB3Z2RzX3RibF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL252bS5jLTYzNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTA6NTIuMzQ4MDEyNjg2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxOTI4NDQ4MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBBdHRhY2sgU3VyZmFjZSBvZiB0aGUgaXdsd2lmaSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBpd2xfYmlvc19nZXRfd2dkc190YWJsZWAgZnVuY3Rpb24sIGFuZCBpdCBzZWVtcyB0byBjYWxsIGVpdGhlciBgaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGVgIG9yIGBpd2xfdWVmaV9nZXRfd2dkc190YWJsZWAuIFJpZ2h0LCBhbmQgYGl3bF9tdm1fZ2V0X2Jpb3NfdGFibGVzYCBpcyBhbHNvIGluIHRoZSBtaXgsIGNhbGxlZCBmcm9tIGBpd2xfbXZtX21hY19zZXR1cF9yZWdpc3RlcmAgYW5kIHNpbWlsYXIgcGxhY2VzLiBUaGUgY29yZSBvZiB0aGlzIGlzIGFsbCBwYXJ0IG9mIHRoZSBpd2x3aWZpIGRyaXZlciwgd2hpY2ggaXMsIG9idmlvdXNseSwgYSBQQ0kgZHJpdmVyLiBUaGUgY3JpdGljYWwgcG9pbnQgaXM6IGlmIHRoZXJlIGlzbid0IHJlYWwgaGFyZHdhcmUsIHRoZSBkcml2ZXIgaXNuJ3QgZ29pbmcgdG8gcHJvYmUsIGFuZCBub25lIG9mIHRoaXMgY29kZSB3aWxsIGV2ZW4gYmUgdG91Y2hlZC5cblxuVGhlIG1pbGxpb24tZG9sbGFyIHF1ZXN0aW9uOiBDYW4gSSB0cmlnZ2VyIHRoaXMgc3R1ZmYgd2l0aCBzeXprYWxsZXI/IFN5emthbGxlciBkb2Vzbid0IHR5cGljYWxseSBoYXZlIGEgZ2VuZXJhbCBQQ0kgZW11bGF0b3IsIGJ1dCBJIHNlZW0gdG8gcmVjYWxsIHNvbWV0aGluZyBhYm91dCB0aGF0IGNoYW5naW5nIHJlY2VudGx5LiBMZXQncyBkb3VibGUtY2hlY2suIERvZXMgc3l6a2FsbGVyIGhhdmUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzPyBObywgd2FpdCwgaXMgdGhlcmUgc29tZXRoaW5nIGxpa2UgYHN5el9wY2lfZGV2aWNlYD8gTm9wZSwgbm90aGluZyBsaWtlIHRoYXQuXG5cbkFscmlnaHQsIGxldCdzIHRyeSBhIGRpZmZlcmVudCBhcHByb2FjaC4gTGV0J3MgZGVsdmUgaW50byB0aGUga2VybmVsIHNvdXJjZSBhbmQgc2VlIGlmIEkgY2FuIGZpbmQgYSBob29rLCBzb21lIGBwY2lfZW5kcG9pbnRfdGVzdGAsIG9yIGB2ZmlvYCBpbnRlcmZhY2UsIGFueXRoaW5nIHRoYXQgd291bGQgYWxsb3cgbWUgdG8gaW5qZWN0IGEgUENJIGRldmljZS4gSG9sZCBvbiBhIHNlY29uZCwgd2Fzbid0IHRoZXJlIHNvbWV0aGluZyBhYm91dCBgc3l6X2t2bV9zZXR1cF9jcHVgIGFuZCBgc3l6X3VzYl9jb25uZWN0YD8gQWgsIEkgc2VlIHdoYXQncyBoYXBwZW5pbmcuIFN5emthbGxlciBjYW4gZnV6eiBQQ0kgZGV2aWNlcyBpZiB0aGV5IGFyZSBzb21laG93IGV4cG9zZWQuIFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhleSB1c3VhbGx5IGFyZSBub3QgZXhwb3NlZC5cblxuT2theSwgbGV0J3MgZXhwbG9yZSBpZiBJIGNhbiB1c2UgdGhlIGBtYWM4MDIxMV9od3NpbWAgZHJpdmVyLCB0byBpbmRpcmVjdGx5IGZ1enogdGhlIGBpd2x3aWZpYCBkcml2ZXIuIE5vcGUsIHRoYXQncyBhIGRlYWQgZW5kLiBgbWFjODAyMTFfaHdzaW1gIGlzIGNvbXBsZXRlbHkgc2VwYXJhdGUuXG5cbkZpbmFsbHksIEknbGwgY2hlY2sgaWYgdGhlIGBpd2x3aWZpYCBkcml2ZXIgaGFzIGFueSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBtaWdodCBlbmFibGUgc29tZSBraW5kIG9mIHRlc3QgbW9kZS4gTWF5YmUgdGhlcmUncyBhIGhpZGRlbiBmbGFnIEkgY2FuIGxldmVyYWdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzM5NCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MDo1OS41NDA4NjAzOTFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3ODM0ODQxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVdMV0lGSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoyOmNvbmZpZyBJV0xXSUZJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkludGVsIFdpcmVsZXNzIFdpRmkgTmV4dCBHZW4gQUdOIC0gV2lyZWxlc3MtTi9BZHZhbmNlZC1OL1VsdGltYXRlLU4gKGl3bHdpZmkpIFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz00Nz1pZiBJV0xXSUZJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo0OTpjb25maWcgSVdMV0lGSV9LVU5JVF9URVNUU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01MC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo1ODpjb25maWcgSVdMV0lGSV9MRURTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU5LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz04ND1jb25maWcgSVdMTUxEXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTQtIyBkb24ndCBjYWxsIGl0IF9NT0RVTEUgLS0gd2lsbCBjb25mdXNlIEtjb25maWcvZml4ZGVwLy4uLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo5NTpjb25maWcgSVdMV0lGSV9PUE1PREVfTU9EVUxBUlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05Ni1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTA1PW1lbnUgXFxcIkRlYnVnZ2luZyBPcHRpb25zXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEwNzpjb25maWcgSVdMV0lGSV9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDgtXFx0Ym9vbCBcXFwiRW5hYmxlIGZ1bGwgZGVidWdnaW5nIG91dHB1dCBpbiB0aGUgaXdsd2lmaSBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzE6Y29uZmlnIElXTFdJRklfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzItXFx0Ym9vbCBcXFwiaXdsd2lmaSBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzk6Y29uZmlnIElXTFdJRklfREVWSUNFX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTQwLVxcdGJvb2wgXFxcIml3bHdpZmkgZGV2aWNlIGFjY2VzcyB0cmFjaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MTowMC4wMTkyMTUwMTlaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE4MjI2NTU0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqS1VuaXQgVGVzdCBDb3ZlcmFnZSBDaGVjayoqXG5cbk9rYXksIHNvIEkgc2VlIGBJV0xXSUZJX0tVTklUX1RFU1RTYCBsaXN0ZWQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkRvIHRoZSBLVW5pdCB0ZXN0cyBhY3R1YWxseSAqY292ZXIqIHRoZSBjaGFuZ2VzIEkndmUgbWFkZT9cIiBJdCdzIG5vdCBlbm91Z2ggdG8gKmhhdmUqIHRlc3RzOyB0aGV5IG5lZWQgdG8gYmUgcmVsZXZhbnQgdG8gdGhlIG1vZGlmaWNhdGlvbnMuIFRoaXMgaXMgYSBjcml0aWNhbCBzdGVwIGluIGVuc3VyaW5nIHRoZSBzdGFiaWxpdHkgYW5kIGNvcnJlY3RuZXNzIG9mIHRoZSBkcml2ZXIsIHNvIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aG9zZSB0ZXN0cyBhcmUgcHJlc2VudCBhbmQgY29tcHJlaGVuc2l2ZSBmb3IgdGhlIGNvZGUgSSd2ZSB0b3VjaGVkLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQncyBiZWluZyB0ZXN0ZWQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4OTEzLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTE6MDUuMjAxNDg0MTY1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTQzMDE1NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS90ZXN0c1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTE6MDUuMjY2OTIyNjUyWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MjUyOTAwNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBObyBPYnZpb3VzIEhpdHMqKlxuXG5EYW1uLCBub3RoaW5nJ3MgY29taW5nIHVwIGluIHRoZSB0ZXN0IHJlc3VsdHMuIFRoYXQncyBmcnVzdHJhdGluZy4gSSB3YXMgaG9waW5nIGZvciBzb21ldGhpbmcgbW9yZSBkaXJlY3QsIGJ1dCBpdCBzZWVtcyB3aGF0ZXZlciBJJ20gbG9va2luZyBmb3IgaXNuJ3QgaW1tZWRpYXRlbHkgYXBwYXJlbnQuIFRpbWUgdG8gZGlnIGRlZXBlciwgdGhlIHRyYWlsJ3MgZ29uZSBjb2xkIGZvciBub3cuXG5cbldhaXQsIGhvbGQgb24gYSBtaW51dGUuLi4gV2hhdCBhYm91dCBgaXdsX3BhcnNlX3Rsdl9maXJtd2FyZWA/IFRoYXQgZnVuY3Rpb24gbmFtZSBqdXN0IHBvcHBlZCBpbnRvIG15IGhlYWQsIGFuZCBpdCdzIG5hZ2dpbmcgYXQgbWUuIEl0IGRlYWxzIHdpdGggcGFyc2luZyBmaXJtd2FyZSBzdHJ1Y3R1cmVzLCB3aGljaCBpcyBjZXJ0YWlubHkgcmVsYXRlZCB0byB3aGF0IEknbSBpbnZlc3RpZ2F0aW5nLiBJdCBtaWdodCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gY2hlY2ssIGV2ZW4gaWYgaXQgc2VlbXMgdGFuZ2VudGlhbC4gTGV0J3Mgc2VlIGlmIHRoYXQgc3BhcmtzIHNvbWV0aGluZy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTEzNSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUxOjA4Ljc5MjIxNDk5M1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUxNzQxNTU1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfcGFyc2VfdGx2X2Zpcm13YXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvdGVzdHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUxOjA5LjI0Mzk2NzIyOFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDI2MDQ2MTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCB3ZW50OlxuXG4qKkV4YW1pbmluZyB0aGUgQ29kZWJhc2UqKlxuXG5Pa2F5LCBJJ20gZmFjaW5nIGEgc2VhcmNoIHdpdGggbm8gcmVzdWx0cy4gVGhhdCdzIGFsd2F5cyB0aGUgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoeS4gV2hhdCBjb3VsZCBiZSBhIHVzZWZ1bCBzdGFydGluZyBwb2ludD8gSG1tLi4uIExldCdzIHRoaW5rIGFsb25nIHRoZSBsaW5lcyBvZiBhIGRlYnVnLWZvY3VzZWQgZnVuY3Rpb24gcmVsYXRlZCB0byBUTFYgcGFyc2luZyB3aXRoaW4gYW4gSW50ZWwgV2lyZWxlc3MgbW9kdWxlLiBJJ2xsIHNlYXJjaCBmb3IgYGl3bF9kYmdfdGx2X3BhcnNlX2JpbmAuIFRoYXQgbWlnaHQganVzdCBnZXQgbWUgY2xvc2VyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTM4NSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUxOjEyLjI3MDAxNTQ3OVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjcwMzE4NzcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9kYmdfdGx2X3BhcnNlX2JpblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MToxMi4zMzcwNTg5NDVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTI3NjcyNzEzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIG1vZGlmaWVkIGNvZGUgaW4gdGhlIGBpd2x3aWZpYCBkcml2ZXIsIHdoaWNoIGlzIGEgUENJIGRyaXZlci4gVGhlIHByb2JsZW0gaXMsIHdpdGhvdXQgYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlLCBpdCB3b24ndCBwcm9iZSwgYW5kIHRoZSBjb2RlIEknbSBpbnRlcmVzdGVkIGluIHdpbGwgbmV2ZXIgZXhlY3V0ZS4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcywgXCJJcyB0aGVyZSAqYW55KiB3YXkgdG8gZm9yY2UgYSBwcm9iZT9cIiBJIGltbWVkaWF0ZWx5IGNvbnNpZGVyZWQgYHN5el9wY2lfZGV2aWNlYCBmcm9tIHN5emthbGxlciwgYnV0IHRoYXQncyBhIGRlYWQgZW5kLiBTeXprYWxsZXIgZG9lc24ndCBoYXZlIHRoYXQgcHJpbWl0aXZlLlxuXG5UaGVuLCBJIHJlbWVtYmVyZWQgdGhlIHJlY2VudCBQQ0kgZnV6emluZyB3b3JrIGluIHN5emthbGxlciB1c2luZyBgdmZpb2Agb3Igc2ltaWxhciB0ZWNobm9sb2dpZXMuIEJ1dCwgbm8sIHN5emthbGxlciBwcmltYXJpbHkgbGV2ZXJhZ2VzIFFFTVUncyBQQ0kgZW11bGF0aW9uIGZvciBmdXp6aW5nLCBhbmQgUUVNVSwgaW4gaXRzIHdpc2RvbSwgZG9lc24ndCBlbXVsYXRlIEludGVsIFdpLUZpIGNhcmRzICh0aGUgYGl3bHdpZmlgIG9uZXMpLlxuXG5TbywgSSBjaGVja2VkIFFFTVUncyBzdXBwb3J0ZWQgZGV2aWNlcy4gSSByYXR0bGVkIG9mZiB0aGUgdXN1YWwgc3VzcGVjdHM6IGBlMTAwMGAsIGBydGw4MTM5YCwgYHBjbmV0YCwgeW91IGtub3cgdGhlIGRyaWxsLiBRRU1VIGhhbmRsZXMgYWxsIG9mIHRob3NlLiBIb3dldmVyLCBgaXdsd2lmaWAgd2Fzbid0IGFtb25nIHRoZW0uIFRoaXMgbWVhbnMgdGhlIGRyaXZlciB3b24ndCBwcm9iZSBpbiBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZS4gUHJldHR5IG11Y2ggYSBuby1nbyBpbiBhbnkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cbk5vdywgSSBuZWVkIHRvIGJlICphYnNvbHV0ZWx5KiBzdXJlLiBJcyB0aGVyZSAqYW55KiBvdGhlciBwYXRoIHRvIGBpd2xfYWNwaV9nZXRfd2dkc190YWJsZWA/IEkgdHJhY2VkIHRoZSBjYWxsIGdyYXBoLiBJdCdzIGNhbGxlZCBmcm9tIGBpd2xfYmlvc19nZXRfd2dkc190YWJsZWAsIHdoaWNoIGl0c2VsZiBpcyBjYWxsZWQgZnJvbSBgaXdsX212bV9nZXRfYmlvc190YWJsZXNgIGFuZCBgaXdsX21sZF9nZXRfYmlvc190YWJsZXNgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgY2FsbGVkIGR1cmluZyB0aGUgc2V0dXAgb2YgdGhlIE1WTSBvciBNTEQgb3BlcmF0aW9uIG1vZGVzLCB3aGljaCBoYXBwZW5zICphZnRlciogdGhlIFBDSSBkZXZpY2UgaXMgcHJvYmVkIGFuZCB0aGUgZmlybXdhcmUgbG9hZHMuIFNpbmNlLCBhZ2FpbiwgdGhlcmUncyBubyBQQ0kgZGV2aWNlLCBubyBwcm9iZSwgbm8gZGljZS5cblxuV2FpdCwgaXMgdGhlcmUgKmFueSogc29mdHdhcmUgZnJhbWV3b3JrIHRoYXQgbWlnaHQgbWFnaWNhbGx5IHByb2JlIHRoZSBkcml2ZXI/IEkgdGhvdWdodCBhYm91dCBgbWFjODAyMTFfaHdzaW1gLCB0aGUgc29mdHdhcmUgc2ltdWxhdG9yLCBidXQgdGhhdOKAmXMgbm90IHVzaW5nIGBpd2x3aWZpYC4gSXMgdGhlcmUgYSBzcGVjaWFsIGBpd2x3aWZpYCBzaW11bGF0b3I/IEkgdGhlbiBzdGFydGVkIHNlYXJjaGluZyB0aGUgZGlyZWN0b3J5IGluIHF1ZXN0aW9uIChgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaWApIGZvciBhbnkgY2x1ZSAoZS5nLiwgYGR1bW15YCwgYGh3c2ltYCkuIE5vdGhpbmcuIEkgZmlndXJlZCBpdCB3b3VsZCBiZSB3b3J0aCBjaGVja2luZyB0aGUgY29kZSBmb3IgYW55IGB0ZXN0YCBtb2R1bGUgdGhhdCBwcm9iZXMgdGhlIGRyaXZlciBpbiBhIGNvbnRyb2xsZWQgZW52aXJvbm1lbnQuIEkgZ290IG5vdGhpbmcuXG5cblNvLCBpbiBjb25jbHVzaW9uLCBpdCBzZWVtcyB0aGUgY29kZSBwYXRoIEknbSBpbnRlcmVzdGVkIGluIGlzIHVucmVhY2hhYmxlIGluIGFsbCBvZiBteSB0eXBpY2FsIHRlc3RpbmcgZW52aXJvbm1lbnRzLiBMb29rcyBsaWtlIHRoaXMgc3BlY2lmaWMgYXJlYSByZXF1aXJlcyByZWFsIGhhcmR3YXJlIGZvciBleGVjdXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NTcwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUxOjIxLjYxMzc4ODM3OVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY2ODg2MTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9wY2lfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC0zMi0gKiBUaGlzIGNvbXBvbmVudCBpbXBsZW1lbnRzIHRoZSBzeXN0ZW0gZmxvd3Mgc3VjaCBhcyBidXMgZW51bWVyYXRpb24sIGJ1c1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oOjMzOiAqIHJlbW92YWwuIEJ1cyBkZXBlbmRlbnQgcGFydHMgb2Ygc3lzdGVtIGZsb3dzIChzdWNoIGFzIGl3bF9wY2lfcHJvYmUpIGFyZSBpblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTM0LSAqIGJ1cyBzcGVjaWZpYyBmaWxlcyAodHJhbnNwb3J0IGZpbGVzKS4gVGhpcyBpcyB0aGUgY29kZSB0aGF0IGlzIGNvbW1vbiBhbW9uZ1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jPTExNDc9RVhQT1JUX1NZTUJPTF9JRl9JV0xXSUZJX0tVTklUKGl3bF9wY2lfZmluZF9kZXZfaW5mbyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTExNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jOjExNDk6c3RhdGljIGludCBpd2xfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMTUwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYz0xMzM4PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpd2xfcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMzQwLVxcdC5pZF90YWJsZSA9IGl3bF9od19jYXJkX2lkcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM6MTM0MTpcXHQucHJvYmUgPSBpd2xfcGNpX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMzQyLVxcdC5yZW1vdmUgPSBpd2xfcGNpX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTE6MjIuMDgwNjgzMzU2WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5NzU2ODc1NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW5pdGlhbCBQcm9iZSBcdTAwMjYgQnVzIEV4cGxvcmF0aW9uKipcblxuT2theSwgc28gYGl3bF9wY2lfcHJvYmVgIGlzIGRlZmluaXRlbHkgdGhlIHByb2JlIGZ1bmN0aW9uIHdlJ3JlIHRhbGtpbmcgYWJvdXQgaGVyZS4gVGhhdCBjb25maXJtcyB0aGUgUENJIGNvbnRleHQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBhcmUgd2UgKnNvbGVseSogZGVhbGluZyB3aXRoIFBDSSBoZXJlPyBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggaWYgdGhlcmUgYXJlIGFueSBvdGhlciBidXMgdmFyaWFudHMgZm9yIHRoaXMgaXdsd2lmaSBkcml2ZXIuIExldCBtZSBqdXN0IGRvdWJsZS1jaGVjayBpZiB0aGVyZSdzIGFuIFNESU8gb3IgYSBVU0IgaW1wbGVtZW50YXRpb24ga25vY2tpbmcgYXJvdW5kIHNvbWV3aGVyZS4gSXQncyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgdGhlIGJ1cyBjb250ZXh0LCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHByb2JlIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjExMzgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MToyNy4wNTYzNzI5NTFaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0NTMyODc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInByb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMzM2IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaD0yMDA9aW50IF9fbXVzdF9jaGVjayBpd2xfc2Nhbl9pbml0aWF0ZShzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaC0yMDYtICogUExDUF9RVUlFVF9USFJFU0ggcGFja2V0cyBhcmUgaGVhcmQgb24gdGhpcyBjaGFubmVsIHdpdGhpblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oOjIwNzogKiBBQ1RJVkVfUVVJRVRfVElNRSBhZnRlciBzZW5kaW5nIHByb2JlIHJlcXVlc3QuICBUaGlzIHNob3J0ZW5zIHRoZSBkd2VsbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oOjIwODogKiB0aW1lIGlmIGl0J3MgYSBxdWlldCBjaGFubmVsIChub3RoaW5nIHJlc3BvbmRlZCB0byBvdXIgcHJvYmUsIGFuZCB0aGVyZSdzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmgtMjA5LSAqIG5vIG90aGVyIHRyYWZmaWMpLlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaD0xMDY0PXN0cnVjdCBpd2xfcnhfbXBkdV9yZXNfc3RhcnQge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaC0xMTM4LSAqIDA6IE5vIFRTRiByZXF1aXJlZCBpbiBvdXRnb2luZyBmcmFtZS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjExMzk6ICogU2V0IHRoaXMgZm9yIHRyYW5zbWl0dGluZyBiZWFjb25zIGFuZCBwcm9iZSByZXNwb25zZXMuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaC0xMTQwLSNkZWZpbmUgVFhfQ01EX0ZMR19UU0ZfTVNLIGNwdV90b19sZTMyKDEgXFx1MDAzY1xcdTAwM2MgMTYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oPTIxOTk9c3RydWN0IGl3bF9zY2FuX2NoYW5uZWwge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaC0yMjAzLVxcdCAqIDE6MjAgU1NJRCBkaXJlY3QgYml0IG1hcDsgaWYgYSBiaXQgaXMgc2V0LCB0aGVuIGNvcnJlc3BvbmRpbmdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjIyMDQ6XFx0ICogICAgIFNTSUQgSUUgaXMgdHJhbnNtaXR0ZWQgaW4gcHJvYmUgcmVxdWVzdC5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oLTIyMDUtXFx0ICogMjE6MzEgcmVzZXJ2ZWRcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmgtMjIxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjIyMTU6Lyogc2V0IG51bWJlciBvZiBkaXJlY3QgcHJvYmVzIF9fbGUzMiB0eXBlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaC0yMjE2LSNkZWZpbmUgSVdMX1NDQU5fUFJPQkVfTUFTSyhuKSBcXHRjcHVfdG9fbGUzMigoQklUKG4pIHwgKEJJVChuKSAtIEJJVCgxKSkpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaD0yMjI2PXN0cnVjdCBpd2xfc3NpZF9pZSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oLTIyNzUtICogYSBjaGFubmVsIGZvciBqdXN0IGEgc2hvcnQgdGltZSwgaWYgZG9pbmcgYWN0aXZlIHNjYW5uaW5nIGFuZCBnZXR0aW5nIG5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaDoyMjc2OiAqIHJlc3BvbnNlcyB0byB0aGUgdHJhbnNtaXR0ZWQgcHJvYmUgcmVxdWVzdC4gIFRoaXMgdGltZSBpcyBjb250cm9sbGVkIGJ5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaC0yMjc3LSAqIHF1aWV0X3RpbWUsIGFuZCB0aGUgbnVtYmVyIG9mIHJlY2VpdmVkIHBhY2tldHMgYmVsb3cgd2hpY2ggYSBjaGFubmVsIGlzXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oLTIyODMtICogcGFja2V0cyBhcmUgY2xlYW5seSByZWNlaXZlZCBvbiB0aGUgY2hhbm5lbCAoY29udHJvbGxlZCBieSBnb29kX0NSQ190aCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjIyODQ6ICogdHlwaWNhbCB2YWx1ZSAxKSwgdGhlIHNjYW4gZW5naW5lIHN0YXJ0cyB0cmFuc21pdHRpbmcgcHJvYmUgcmVxdWVzdHMuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaC0yMjg1LSAqXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oPTIyOTg9c3RydWN0IGl3bF9zY2FuX2NtZCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oLTIzMjQtXFx0ICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjIzMjU6XFx0ICogU2l6ZSBvZiBwcm9iZSByZXF1ZXN0IGZyYW1lIGlzIHNwZWNpZmllZCBieSBieXRlIGNvdW50IGluIHR4X2NtZC5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjIzMjY6XFx0ICogQ2hhbm5lbCBsaXN0IGZvbGxvd3MgaW1tZWRpYXRlbHkgYWZ0ZXIgcHJvYmUgcmVxdWVzdCBmcmFtZS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oLTIzMjctXFx0ICogTnVtYmVyIG9mIGNoYW5uZWxzIGluIGxpc3QgaXMgc3BlY2lmaWVkIGJ5IGNoYW5uZWxfY291bnQuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oPTIzNzg9c3RydWN0IGl3bF9zY2FucmVzdWx0c19ub3RpZmljYXRpb24ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaC0yMzgwLVxcdHU4IGJhbmQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaDoyMzgxOlxcdHU4IHByb2JlX3N0YXR1cztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjIzODI6XFx0dTggbnVtX3Byb2JlX25vdF9zZW50OyAvKiBub3QgZW5vdWdoIHRpbWUgdG8gc2VuZCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmgtMjM4My1cXHRfX2xlMzIgdHNmX2xvdztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmg9MjYxNj1zdHJ1Y3Qgc3RhdGlzdGljc19kaXYge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaC0yNjE5LVxcdF9fbGUzMiBleGVjX3RpbWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaDoyNjIwOlxcdF9fbGUzMiBwcm9iZV90aW1lO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmgtMjYyMS1cXHRfX2xlMzIgcmVzZXJ2ZWQxO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaD0zOTAyPXN0cnVjdCBpd2xfd2lwYW5fcDJwX2NoYW5uZWxfc3dpdGNoX2NtZCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oLTM5MTEtICogTm9BIHNjaGVkdWxlIGl0IGRldGVybWluZWQgc28gd2UgY2FuIGZvcndhcmQgaXRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjM5MTI6ICogdG8gdXNlcnNwYWNlIGZvciBpbmNsdXNpb24gaW4gcHJvYmUgcmVzcG9uc2VzLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmgtMzkxMy0gKlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGVidWdmcy5jPTEyOTY9c3RhdGljIHNzaXplX3QgaXdsX2RiZ2ZzX3Vjb2RlX2dlbmVyYWxfc3RhdHNfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RlYnVnZnMuYy0xMzkyLVxcdHBvcyArPSBzY25wcmludGYoYnVmICsgcG9zLCBidWZzeiAtIHBvcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZWJ1Z2ZzLmM6MTM5MzpcXHRcXHRcXHQgZm10X3RhYmxlLCBcXFwicHJvYmVfdGltZTpcXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RlYnVnZnMuYzoxMzk0OlxcdFxcdFxcdCBsZTMyX3RvX2NwdShkaXYtXFx1MDAzZXByb2JlX3RpbWUpLCBhY2N1bV9kaXYtXFx1MDAzZXByb2JlX3RpbWUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGVidWdmcy5jOjEzOTU6XFx0XFx0XFx0IGRlbHRhX2Rpdi1cXHUwMDNlcHJvYmVfdGltZSwgbWF4X2Rpdi1cXHUwMDNlcHJvYmVfdGltZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGVidWdmcy5jLTEzOTYtXFx0cG9zICs9IHNjbnByaW50ZihidWYgKyBwb3MsIGJ1ZnN6IC0gcG9zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2aWNlcy5jPTI1MD1zdGF0aWMgY29uc3Qgc3RydWN0IGl3bF9kdm1fYnRfcGFyYW1zIGl3bDIwMzBfYnRfcGFyYW1zID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RldmljZXMuYzoyNTE6XFx0LyogRHVlIHRvIGJsdWV0b290aCwgd2UgdHJhbnNtaXQgMi40IEdIeiBwcm9iZXMgb25seSBvbiBhbnRlbm5hIEEgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZXZpY2VzLmMtMjUyLVxcdC5hZHZhbmNlZF9idF9jb2V4aXN0ID0gdHJ1ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RldmljZXMuYz02NTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBpd2xfZHZtX2J0X3BhcmFtcyBpd2w2MDAwX2J0X3BhcmFtcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZXZpY2VzLmM6NjU1OlxcdC8qIER1ZSB0byBibHVldG9vdGgsIHdlIHRyYW5zbWl0IDIuNCBHSHogcHJvYmVzIG9ubHkgb24gYW50ZW5uYSBBICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2aWNlcy5jLTY1Ni1cXHQuYWR2YW5jZWRfYnRfY29leGlzdCA9IHRydWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jPTc4PWludCBpd2xhZ25fbWFjX3NldHVwX3JlZ2lzdGVyKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21hYzgwMjExLmMtMTczLVxcdC8qIHdlIGNyZWF0ZSB0aGUgODAyLjExIGhlYWRlciBhbmQgYSBtYXgtbGVuZ3RoIFNTSUQgZWxlbWVudCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21hYzgwMjExLmM6MTc0OlxcdGh3LVxcdTAwM2V3aXBoeS1cXHUwMDNlbWF4X3NjYW5faWVfbGVuID0gY2FwYS1cXHUwMDNlbWF4X3Byb2JlX2xlbmd0aCAtIDI0IC0gMzQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFjODAyMTEuYy0xNzUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM9MTIzMz1zdGF0aWMgc3RydWN0IGl3bF9vcF9tb2RlICppd2xfb3BfbW9kZV9kdm1fc3RhcnQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTQ5NC1cXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM6MTQ5NTpcXHQgKiBUaGlzIGlzIHN0aWxsIHBhcnQgb2YgcHJvYmUoKSBpbiBhIHNlbnNlLi4uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jLTE0OTYtXFx0ICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy0xNS0vKiBGb3IgYWN0aXZlIHNjYW4sIGxpc3RlbiBBQ1RJVkVfRFdFTExfVElNRSAobXNlYykgb24gZWFjaCBjaGFubmVsIGFmdGVyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjE2OiAqIHNlbmRpbmcgcHJvYmUgcmVxLiAgVGhpcyBzaG91bGQgYmUgc2V0IGxvbmcgZW5vdWdoIHRvIGhlYXIgcHJvYmUgcmVzcG9uc2VzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTE3LSAqIGZyb20gbW9yZSB0aGFuIG9uZSBBUC4gICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM9MjYyPXN0YXRpYyB2b2lkIGl3bF9yeF9zY2FuX3Jlc3VsdHNfbm90aWYoc3RydWN0IGl3bF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTI3MC1cXHRcXHQgICAgICAgXFxcIiVkIFs4MDIuMTElc10gXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzoyNzE6XFx0XFx0ICAgICAgIFxcXCJwcm9iZSBzdGF0dXM6ICV1OiV1IFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtMjcyLVxcdFxcdCAgICAgICBcXFwiKFRTRjogMHglMDhYOiUwOFgpIC0gJWQgXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTI3NS1cXHRcXHQgICAgICAgbm90aWYtXFx1MDAzZWJhbmQgPyBcXFwiYmdcXFwiIDogXFxcImFcXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzoyNzY6XFx0XFx0ICAgICAgIG5vdGlmLVxcdTAwM2Vwcm9iZV9zdGF0dXMsIG5vdGlmLVxcdTAwM2VudW1fcHJvYmVfbm90X3NlbnQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTI3Ny1cXHRcXHQgICAgICAgbGUzMl90b19jcHUobm90aWYtXFx1MDAzZXRzZl9oaWdoKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYz0zNDY9c3RhdGljIHUxNiBpd2xfZ2V0X2FjdGl2ZV9kd2VsbF90aW1lKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6MzQ3OlxcdFxcdFxcdFxcdCAgICAgZW51bSBubDgwMjExX2JhbmQgYmFuZCwgdTggbl9wcm9iZXMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTM0OC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtMzUwLVxcdFxcdHJldHVybiBJV0xfQUNUSVZFX0RXRUxMX1RJTUVfNTIgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzozNTE6XFx0XFx0XFx0SVdMX0FDVElWRV9EV0VMTF9GQUNUT1JfNTJHSFogKiAobl9wcm9iZXMgKyAxKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtMzUyLVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtMzUzLVxcdFxcdHJldHVybiBJV0xfQUNUSVZFX0RXRUxMX1RJTUVfMjQgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzozNTQ6XFx0XFx0XFx0SVdMX0FDVElWRV9EV0VMTF9GQUNUT1JfMjRHSFogKiAobl9wcm9iZXMgKyAxKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtMzU1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYz00ODg9c3RhdGljIGludCBpd2xfZ2V0X2NoYW5uZWxzX2Zvcl9zY2FuKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy00OTAtXFx0XFx0XFx0XFx0ICAgICBlbnVtIG5sODAyMTFfYmFuZCBiYW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzo0OTE6XFx0XFx0XFx0XFx0ICAgICB1OCBpc19hY3RpdmUsIHU4IG5fcHJvYmVzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy00OTItXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgaXdsX3NjYW5fY2hhbm5lbCAqc2Nhbl9jaClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy01MDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjUwNTpcXHRhY3RpdmVfZHdlbGwgPSBpd2xfZ2V0X2FjdGl2ZV9kd2VsbF90aW1lKHByaXYsIGJhbmQsIG5fcHJvYmVzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNTA2LVxcdHBhc3NpdmVfZHdlbGwgPSBpd2xfZ2V0X3Bhc3NpdmVfZHdlbGxfdGltZShwcml2LCBiYW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy01MjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjUyNTpcXHRcXHRpZiAobl9wcm9iZXMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjUyNjpcXHRcXHRcXHRzY2FuX2NoLVxcdTAwM2V0eXBlIHw9IElXTF9TQ0FOX1BST0JFX01BU0sobl9wcm9iZXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy01MjctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNTU4LS8qXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjU1OTogKiBpd2xfZmlsbF9wcm9iZV9yZXEgLSBmaWxsIGluIGFsbCByZXF1aXJlZCBmaWVsZHMgYW5kIElFIGZvciBwcm9iZSByZXF1ZXN0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTU2MC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6NTYxOnN0YXRpYyB1MTYgaXdsX2ZpbGxfcHJvYmVfcmVxKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqZnJhbWUsIGNvbnN0IHU4ICp0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNTYyLVxcdFxcdFxcdCAgICAgIGNvbnN0IHU4ICppZXMsIGludCBpZV9sZW4sIGNvbnN0IHU4ICpzc2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTU2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6NTY4OlxcdC8qIE1ha2Ugc3VyZSB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSBwcm9iZSByZXF1ZXN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy01NjktXFx0ICogdHdvIG1hbmRhdG9yeSBJRXMgYW5kIHRoZSBkYXRhICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNTgyLVxcdC8qIC4uLm5leHQgSUUuLi4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6NTgzOlxcdHBvcyA9IFxcdTAwMjZmcmFtZS1cXHUwMDNldS5wcm9iZV9yZXEudmFyaWFibGVbMF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTU4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYz02MDk9c3RhdGljIGludCBpd2xhZ25fcmVxdWVzdF9zY2FuKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy02MjAtXFx0ZW51bSBubDgwMjExX2JhbmQgYmFuZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6NjIxOlxcdHU4IG5fcHJvYmVzID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNjIyLVxcdHU4IHJ4X2FudCA9IHByaXYtXFx1MDAzZW52bV9kYXRhLVxcdTAwM2V2YWxpZF9yeF9hbnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNjMwLVxcdFxcdFxcdCAgICBNQVhfU0NBTl9DSEFOTkVMICogc2l6ZW9mKHN0cnVjdCBpd2xfc2Nhbl9jaGFubmVsKSArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjYzMTpcXHRcXHRcXHQgICAgcHJpdi1cXHUwMDNlZnctXFx1MDAzZXVjb2RlX2NhcGEubWF4X3Byb2JlX2xlbmd0aDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNjMyLVxcdGNvbnN0IHU4ICpzc2lkID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy03MDktXFx0XFx0XFx0ICogVGhlIGhpZ2hlc3QgcHJpb3JpdHkgU1NJRCBpcyBpbnNlcnRlZCB0byB0aGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6NzEwOlxcdFxcdFxcdCAqIHByb2JlIHJlcXVlc3QgdGVtcGxhdGUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTcxMS1cXHRcXHRcXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy03MjUtXFx0XFx0XFx0XFx0ICAgICAgIHByaXYtXFx1MDAzZXNjYW5fcmVxdWVzdC1cXHUwMDNlc3NpZHNbaV0uc3NpZF9sZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzo3MjY6XFx0XFx0XFx0XFx0bl9wcm9iZXMrKztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNzI3LVxcdFxcdFxcdFxcdHArKztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy03NzYtXFx0ICogb24gYSByYWRhciBjaGFubmVsIGV2ZW4gdGhvdWdoIHRoaXMgbWVhbnMgdGhhdCB3ZSBzaG91bGQgTk9UXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjc3NzpcXHQgKiBzZW5kIHByb2Jlcy5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNzc4LVxcdCAqXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNzgwLVxcdCAqIG5lZWQgdG8gcmVjZWl2ZSBkdXJpbmcgb3VyIGR3ZWxsIHRpbWUgb24gYSBjaGFubmVsIGJlZm9yZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzo3ODE6XFx0ICogc2VuZGluZyBvdXQgcHJvYmVzIC0tIHNldHRpbmcgdGhpcyB0byBhIGh1Z2UgdmFsdWUgd2lsbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy03ODItXFx0ICogbWVhbiB3ZSBuZXZlciByZWFjaCBpdCwgYnV0IGF0IHRoZSBzYW1lIHRpbWUgd29yayBhcm91bmRcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy04MDEtXFx0ICAgIHByaXYtXFx1MDAzZWxpYi1cXHUwMDNlYnRfcGFyYW1zLVxcdTAwM2VhZHZhbmNlZF9idF9jb2V4aXN0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjgwMjpcXHRcXHQvKiB0cmFuc21pdCAyLjQgR0h6IHByb2JlcyBvbmx5IG9uIGZpcnN0IGFudGVubmEgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtODAzLVxcdFxcdHNjYW5fdHhfYW50ZW5uYXMgPSBmaXJzdF9hbnRlbm5hKHNjYW5fdHhfYW50ZW5uYXMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTg0NC1cXHRjYXNlIElXTF9TQ0FOX05PUk1BTDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6ODQ1OlxcdFxcdGNtZF9sZW4gPSBpd2xfZmlsbF9wcm9iZV9yZXEoXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTg0Ni1cXHRcXHRcXHRcXHRcXHQoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2Nhbi1cXHUwMDNlZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy04NTQtXFx0XFx0LyogdXNlIGJjYXN0IGFkZHIsIHdpbGwgbm90IGJlIHRyYW5zbWl0dGVkIGJ1dCBtdXN0IGJlIHZhbGlkICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjg1NTpcXHRcXHRjbWRfbGVuID0gaXdsX2ZpbGxfcHJvYmVfcmVxKFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy04NTYtXFx0XFx0XFx0XFx0XFx0KHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNjYW4tXFx1MDAzZWRhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtODc3LVxcdFxcdFxcdGl3bF9nZXRfY2hhbm5lbHNfZm9yX3NjYW4ocHJpdiwgdmlmLCBiYW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzo4Nzg6XFx0XFx0XFx0XFx0aXNfYWN0aXZlLCBuX3Byb2JlcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtODc5LVxcdFxcdFxcdFxcdCh2b2lkICopXFx1MDAyNnNjYW4tXFx1MDAzZWRhdGFbY21kX2xlbl0pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYz00Mz1zdGF0aWMgdm9pZCBpd2xhZ25fdHhfY21kX2J1aWxkX2Jhc2ljKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYzo1OTpcXHRpZiAoaWVlZTgwMjExX2lzX3Byb2JlX3Jlc3AoZmMpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtNjAtXFx0XFx0dHhfZmxhZ3MgfD0gVFhfQ01EX0ZMR19UU0ZfTVNLO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYz0xMDU9c3RhdGljIHZvaWQgaXdsYWduX3R4X2NtZF9idWlsZF9yYXRlKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtMTI0LVxcdFxcdC8qIFNldCByZXRyeSBsaW1pdCBvbiBEQVRBIHBhY2tldHMgYW5kIFByb2JlIFJlc3BvbnNlcyovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYzoxMjU6XFx0XFx0aWYgKGllZWU4MDIxMV9pc19wcm9iZV9yZXNwKGZjKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtMTI2LVxcdFxcdFxcdGRhdGFfcmV0cnlfbGltaXQgPSBJV0xBR05fTUdNVF9ERkFVTFRfUkVUUllfTElNSVQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jPTI2MD1pbnQgaXdsYWduX3R4X3NrYihzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jLTI5NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jOjI5NjpcXHRpZiAodW5saWtlbHkoaWVlZTgwMjExX2lzX3Byb2JlX3Jlc3AoZmMpKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtMjk3LVxcdFxcdHN0cnVjdCBpd2xfd2lwYW5fbm9hX2RhdGEgKm5vYV9kYXRhID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaD0xNj1lbnVtIGl3bF9tYWNfY29uZl9zdWJjbWRfaWRzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC0xMTctXFx0LyoqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oOjExODpcXHQgKiBAUFJPQkVfUkVTUE9OU0VfREFUQV9OT1RJRjogXFx1MDAyNnN0cnVjdCBpd2xfcHJvYmVfcmVzcF9kYXRhX25vdGlmXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oLTExOS1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC0xMzUtLyoqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oOjEzNjogKiBzdHJ1Y3QgaXdsX3AycF9ub2FfYXR0ciAtIE5PQSBhdHRyIGNvbnRhaW5lZCBpbiBwcm9iZSByZXNwIEZXIG5vdGlmaWNhdGlvblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC0xMzctICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaD0xNDY9c3RydWN0IGl3bF9wMnBfbm9hX2F0dHIge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oLTE1OC0vKipcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9tYWMtY2ZnLmg6MTU5OiAqIHN0cnVjdCBpd2xfcHJvYmVfcmVzcF9kYXRhX25vdGlmIC0gbm90aWZpY2F0aW9uIHdpdGggTk9BIGFuZCBDU0EgY291bnRlclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC0xNjAtICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9tYWMtY2ZnLmg6MTYxOiAqIEBtYWNfaWQ6IHRoZSBtYWMgd2hpY2ggc2hvdWxkIHNlbmQgdGhlIHByb2JlIHJlc3BvbnNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oLTE2Mi0gKiBAbm9hX2FjdGl2ZTogbm90aWZpZXMgaWYgdGhlIG5vYSBhdHRyaWJ1dGUgc2hvdWxkIGJlIGhhbmRsZWRcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC0xNjYtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oOjE2NzpzdHJ1Y3QgaXdsX3Byb2JlX3Jlc3BfZGF0YV9ub3RpZiB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oLTE2OC1cXHRfX2xlMzIgbWFjX2lkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oPTMyMT1zdHJ1Y3QgaXdsX21hY19wMnBfZGV2X2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oLTMzMi0gKiBATUFDX0NGR19GSUxURVJfQUNDRVBUX0JFQUNPTjogYWNjZXB0IGJlYWNvbiBmcmFtZXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9tYWMtY2ZnLmg6MzMzOiAqIEBNQUNfQ0ZHX0ZJTFRFUl9BQ0NFUFRfQkNBU1RfUFJPQkVfUkVTUDogYWNjZXB0IGJyb2FkY2FzdCBwcm9iZSByZXNwb25zZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaDozMzQ6ICogQE1BQ19DRkdfRklMVEVSX0FDQ0VQVF9QUk9CRV9SRVE6IGFjY2VwdCBwcm9iZSByZXF1ZXN0c1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC0zMzUtICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9tYWMtY2ZnLmg9NjgyPXN0cnVjdCBpd2xfbGlua19jb25maWdfY21kIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC03NDQtICogQFNUQVRJT05fVFlQRV9CQ0FTVF9NR01UOiBUaGUgc3RhdGlvbiB1c2VkIHRvIHNlbmQgYmVhY29ucyBhbmRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9tYWMtY2ZnLmg6NzQ1OiAqXFx0cHJvYmUgcmVzcG9uc2VzLiBBbHNvIHVzZWQgZm9yIHRyYWZmaWMgaW5qZWN0aW9uIGluIHNuaWZmZXIgbW9kZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC03NDYtICogQFNUQVRJT05fVFlQRV9NQ0FTVDogdGhlIHN0YXRpb24gdXNlZCBmb3IgQkNBU1QgLyBNQ0FTVCBpbiBHTy4gV2lsbCBiZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLmg9MjE5PXN0cnVjdCBpd2xfbWFjX2RhdGFfcDJwX2RldiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9tYWMuaC0yMzQtICogQE1BQ19GSUxURVJfSU5fQ1JDMzI6IGV4dHJhY3QgRkNTIGFuZCBhcHBlbmQgaXQgdG8gZnJhbWVzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLmg6MjM1OiAqIEBNQUNfRklMVEVSX0lOX1BST0JFX1JFUVVFU1Q6IHBhc3MgcHJvYmUgcmVxdWVzdHMgdG8gaG9zdFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy5oLTIzNi0gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD0yMjM9c3RydWN0IGl3bF9zY2FuX2NoYW5uZWxfY2ZnX2xtYWMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTIzMC0vKipcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MjMxOiAqIHN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9zZWdtZW50IC0gUFJPQkVfU0VHTUVOVF9BUElfU19WRVJfMVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0yMzItICogQG9mZnNldDogb2Zmc2V0IGluIHRoZSBkYXRhIGJsb2NrXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMjM0LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoyMzU6c3RydWN0IGl3bF9zY2FuX3Byb2JlX3NlZ21lbnQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0yMzYtXFx0X19sZTE2IG9mZnNldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0yNDAtLyoqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjI0MTogKiBzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfcmVxX3YxIC0gUFJPQkVfUkVRVUVTVF9GUkFNRV9BUElfU19WRVJfMlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoyNDI6ICogQG1hY19oZWFkZXI6IGZpcnN0IChhbmQgY29tbW9uKSBwYXJ0IG9mIHRoZSBwcm9iZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0yNDMtICogQGJhbmRfZGF0YTogYmFuZCBzcGVjaWZpYyBkYXRhXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjI0NDogKiBAY29tbW9uX2RhdGE6IGxhc3QgKGFuZCBjb21tb24pIHBhcnQgb2YgdGhlIHByb2JlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTI0NS0gKiBAYnVmOiByYXcgZGF0YSBibG9ja1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0yNDYtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjI0NzpzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfcmVxX3YxIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MjQ4OlxcdHN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9zZWdtZW50IG1hY19oZWFkZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjI0OTpcXHRzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfc2VnbWVudCBiYW5kX2RhdGFbU0NBTl9OVU1fQkFORF9QUk9CRV9EQVRBX1ZfMV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjI1MDpcXHRzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfc2VnbWVudCBjb21tb25fZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMjUxLVxcdHU4IGJ1ZltTQ0FOX09GRkxPQURfUFJPQkVfUkVRX1NJWkVdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTI1NC0vKipcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MjU1OiAqIHN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9yZXEgLSBQUk9CRV9SRVFVRVNUX0ZSQU1FX0FQSV9TX1ZFUl92MlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoyNTY6ICogQG1hY19oZWFkZXI6IGZpcnN0IChhbmQgY29tbW9uKSBwYXJ0IG9mIHRoZSBwcm9iZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0yNTctICogQGJhbmRfZGF0YTogYmFuZCBzcGVjaWZpYyBkYXRhXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjI1ODogKiBAY29tbW9uX2RhdGE6IGxhc3QgKGFuZCBjb21tb24pIHBhcnQgb2YgdGhlIHByb2JlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTI1OS0gKiBAYnVmOiByYXcgZGF0YSBibG9ja1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0yNjAtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjI2MTpzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfcmVxIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MjYyOlxcdHN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9zZWdtZW50IG1hY19oZWFkZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjI2MzpcXHRzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfc2VnbWVudCBiYW5kX2RhdGFbU0NBTl9OVU1fQkFORF9QUk9CRV9EQVRBX1ZfMl07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjI2NDpcXHRzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfc2VnbWVudCBjb21tb25fZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMjY1LVxcdHU4IGJ1ZltTQ0FOX09GRkxPQURfUFJPQkVfUkVRX1NJWkVdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oPTI4Nj1zdHJ1Y3QgaXdsX3NjYW5fY2hhbm5lbF9vcHQge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTI5Mi0gKiBlbnVtIGl3bF9tdm1fbG1hY19zY2FuX2ZsYWdzIC0gTE1BQyBzY2FuIGZsYWdzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjI5MzogKiBASVdMX01WTV9MTUFDX1NDQU5fRkxBR19QQVNTX0FMTDogcGFzcyBhbGwgYmVhY29ucyBhbmQgcHJvYmUgcmVzcG9uc2VzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTI5NC0gKlxcdHdpdGhvdXQgZmlsdGVyaW5nLlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTMwMC0gKiBASVdMX01WTV9MTUFDX1NDQU5fRkxBR1NfUlJNX0VOQUJMRUQ6IGluc2VydCBXRkEgdmVuZG9yLXNwZWNpZmljIFRQQyByZXBvcnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MzAxOiAqXFx0YW5kIERTIHBhcmFtZXRlciBzZXQgSUVzIGludG8gcHJvYmUgcmVxdWVzdHMuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTMwMi0gKiBASVdMX01WTV9MTUFDX1NDQU5fRkxBR19FWFRFTkRFRF9EV0VMTDogdXNlIGV4dGVuZGVkIGR3ZWxsIHRpbWUgb24gY2hhbm5lbHNcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD0zMjQ9ZW51bSBpd2xfc2Nhbl9wcmlvcml0eV9leHQge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTM1Ny0gKiBAY2hhbm5lbF9vcHQ6IGNoYW5uZWwgb3B0aW1pemF0aW9uIG9wdGlvbnMsIGZvciBmdWxsIGFuZCBwYXJ0aWFsIHNjYW5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MzU4OiAqIEBkYXRhOiBjaGFubmVsIGNvbmZpZ3VyYXRpb24gYW5kIHByb2JlIHJlcXVlc3QgcGFja2V0LlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0zNTktICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oPTM2MD1zdHJ1Y3QgaXdsX3NjYW5fcmVxX2xtYWMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTM5MS0gKiBAYmFuZDogMCBmb3IgNS4yIEdIeiwgMSBmb3IgMi40IEdIelxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDozOTI6ICogQHByb2JlX3N0YXR1czogU0NBTl9QUk9CRV9TVEFUVVNfKiwgaW5kaWNhdGVzIHN1Y2Nlc3Mgb2YgcHJvYmUgcmVxdWVzdFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDozOTM6ICogQG51bV9wcm9iZV9ub3Rfc2VudDogIyBvZiByZXF1ZXN0IHRoYXQgd2VyZW4ndCBzZW50IGR1ZSB0byBub3QgZW5vdWdoIHRpbWVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMzk0LSAqIEBkdXJhdGlvbjogZHVyYXRpb24gc3BlbnQgaW4gY2hhbm5lbCwgaW4gdXNlY3NcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD0zOTY9c3RydWN0IGl3bF9zY2FuX3Jlc3VsdHNfbm90aWYge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTM5OC1cXHR1OCBiYW5kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDozOTk6XFx0dTggcHJvYmVfc3RhdHVzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo0MDA6XFx0dTggbnVtX3Byb2JlX25vdF9zZW50O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC00MDEtXFx0X19sZTMyIGR1cmF0aW9uO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oPTUxNj1zdHJ1Y3QgaXdsX3NjYW5fZHdlbGwge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTUzMS0gKiBAZHdlbGw6XFx0XFx0XFx0ZHdlbGxzIGZvciB0aGUgc2NhblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo1MzI6ICogQG1hY19hZGRyOlxcdFxcdFxcdGRlZmF1bHQgbWFjIGFkZHJlc3MgdG8gYmUgdXNlZCBpbiBwcm9iZXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtNTMzLSAqIEBiY2FzdF9zdGFfaWQ6XFx0XFx0dGhlIGluZGV4IG9mIHRoZSBzdGF0aW9uIGluIHRoZSBmd1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oPTUzOD1zdHJ1Y3QgaXdsX3NjYW5fY29uZmlnX3YxIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC01NjQtICogQGR3ZWxsOlxcdFxcdFxcdGR3ZWxscyBmb3IgdGhlIHNjYW5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6NTY1OiAqIEBtYWNfYWRkcjpcXHRcXHRcXHRkZWZhdWx0IG1hYyBhZGRyZXNzIHRvIGJlIHVzZWQgaW4gcHJvYmVzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTU2Ni0gKiBAYmNhc3Rfc3RhX2lkOlxcdFxcdHRoZSBpbmRleCBvZiB0aGUgc3RhdGlvbiBpbiB0aGUgZndcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD02MjM9ZW51bSBpd2xfdW1hY19zY2FuX2dlbmVyYWxfZmxhZ3Mge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTYzNS1cXHQvKiBFeHRlbmRlZCBkd2VsbCBpcyBvYnNlbGV0ZSB3aGVuIGFkYXB0aXZlIGR3ZWxsIGlzIHVzZWQsIG1ha2luZyB0aGlzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjYzNjpcXHQgKiBiaXQgcmV1c2FibGUuIEhlbmNlLCBwcm9iZSByZXF1ZXN0IGRlZmVyIGlzIHVzZWQgb25seSB3aGVuIGFkYXB0aXZlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTYzNy1cXHQgKiBkd2VsbCBpcyBzdXBwb3J0ZWQuICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg9NjU0PWVudW0gaXdsX3VtYWNfc2Nhbl9nZW5lcmFsX2ZsYWdzMiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtNjY1LSAqIEBJV0xfVU1BQ19TQ0FOX0dFTl9GTEFHU19WMl9QRVJJT0RJQzogcGVyaW9kaWMgb3Igc2NoZWR1bGVkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjY2NjogKiBASVdMX1VNQUNfU0NBTl9HRU5fRkxBR1NfVjJfUEFTU19BTEw6IHBhc3MgYWxsIHByb2JlIHJlc3BvbnNlcyBhbmQgYmVhY29uc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC02NjctICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJpbmcgc2NhbiBpdGVyYXRpb25zXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtNjg4LSAqICAgICAgXFx1MDAyNklXTF9VTUFDX1NDQU5fR0VOX0ZMQUdTX1YyXzZHSFpfUEFTU0lWRV9TQ0FOIGlzIGVuYWJsZWQgYW5kIHNjYW4gaXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6Njg5OiAqICAgICAgYWN0aXZhdGVkIG92ZXIgNkdIeiBQU0MgY2hhbm5lbHMsIGZpbHRlciBpbiBiZWFjb25zIGFuZCBwcm9iZSByZXNwb25zZXMuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjY5MDogKiBASVdMX1VNQUNfU0NBTl9HRU5fRkxBR1NfVjJfT0NFOiBpZiBzZXQsIHNlbmQgcHJvYmUgcmVxdWVzdHMgaW4gYSBtaW5pbXVtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjY5MTogKiAgICAgIHJhdGUgb2YgNS41TXBicywgZmlsdGVyIGluIGJyb2FkY2FzdCBwcm9iZSByZXNwb25zZXMgYW5kIHNldCB0aGUgbWF4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTY5Mi0gKiAgICAgIGNoYW5uZWwgdGltZSBpbmRpY2F0aW9uIGZpZWxkIGluIHRoZSBGSUxTIHJlcXVlc3QgcGFyYW1ldGVycyBlbGVtZW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjY5MzogKiAgICAgIChpZiBpbmNsdWRlZCBieSB0aGUgZHJpdmVyIGluIHRoZSBwcm9iZSByZXF1ZXN0IElFcykuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTY5NC0gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD03ODg9c3RydWN0IGl3bF9zY2FuX3JlcV91bWFjX3RhaWxfdjEge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTc5My1cXHQvKiBTQ0FOX1BST0JFX1BBUkFNU19BUElfU19WRVJfMSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo3OTQ6XFx0c3RydWN0IGl3bF9zY2FuX3Byb2JlX3JlcV92MSBwcmVxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC03OTUtXFx0c3RydWN0IGl3bF9zc2lkX2llIGRpcmVjdF9zY2FuW1BST0JFX09QVElPTl9NQVhdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTgwMy0gKiBAcmVzZXJ2ZWQ6IGZvciBmdXR1cmUgdXNlIGFuZCBhbGlnbm1lbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6ODA0OiAqIEBwcmVxOiBwcm9iZSByZXF1ZXN0IHdpdGggSUVzIGJsb2Nrc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC04MDUtICogQGRpcmVjdF9zY2FuOiBsaXN0IG9mIFNTSURzIGZvciBkaXJlY3RlZCBhY3RpdmUgc2Nhblxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oPTgwNz1zdHJ1Y3QgaXdsX3NjYW5fcmVxX3VtYWNfdGFpbF92MiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtODEyLVxcdC8qIFNDQU5fUFJPQkVfUEFSQU1TX0FQSV9TX1ZFUl8yICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjgxMzpcXHRzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfcmVxIHByZXE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTgxNC1cXHRzdHJ1Y3QgaXdsX3NzaWRfaWUgZGlyZWN0X3NjYW5bUFJPQkVfT1BUSU9OX01BWF07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg9ODYzPXN0cnVjdCBpd2xfc2Nhbl9yZXFfdW1hYyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtOTQ1LS8qKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo5NDY6ICogc3RydWN0IGl3bF9zY2FuX3Byb2JlX3BhcmFtc192MyAtIHNjYW4gcHJvYmUgcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo5NDc6ICogQHByZXE6IHNjYW4gcHJvYmUgcmVxdWVzdCBwYXJhbXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtOTQ4LSAqIEBzc2lkX251bTogbnVtYmVyIG9mIHZhbGlkIFNTSURzIGluIGRpcmVjdCBzY2FuIGFycmF5XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtOTU1LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo5NTY6c3RydWN0IGl3bF9zY2FuX3Byb2JlX3BhcmFtc192MyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjk1NzpcXHRzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfcmVxIHByZXE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTk1OC1cXHR1OCBzc2lkX251bTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC05NjctLyoqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjk2ODogKiBzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfcGFyYW1zX3Y0IC0gc2NhbiBwcm9iZSBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjk2OTogKiBAcHJlcTogc2NhbiBwcm9iZSByZXF1ZXN0IHBhcmFtc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC05NzAtICogQHNob3J0X3NzaWRfbnVtOiBudW1iZXIgb2YgdmFsaWQgc2hvcnQgU1NJRHMgaW4gc2hvcnQgc3NpZCBhcnJheVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTk3Ni0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6OTc3OnN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9wYXJhbXNfdjQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo5Nzg6XFx0c3RydWN0IGl3bF9zY2FuX3Byb2JlX3JlcSBwcmVxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC05NzktXFx0dTggc2hvcnRfc3NpZF9udW07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg9MTA5Nz1zdHJ1Y3QgaXdsX3NjYW5fcGVyaW9kaWNfcGFybXNfdjEge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTExMDctICogQHBlcmlvZGljX3BhcmFtczogXFx1MDAyNnN0cnVjdCBpd2xfc2Nhbl9wZXJpb2RpY19wYXJtc192MVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoxMTA4OiAqIEBwcm9iZV9wYXJhbXM6IFxcdTAwMjZzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfcGFyYW1zX3YzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTExMDktICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oPTExMTA9c3RydWN0IGl3bF9zY2FuX3JlcV9wYXJhbXNfdjEyIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0xMTEzLVxcdHN0cnVjdCBpd2xfc2Nhbl9wZXJpb2RpY19wYXJtc192MSBwZXJpb2RpY19wYXJhbXM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjExMTQ6XFx0c3RydWN0IGl3bF9zY2FuX3Byb2JlX3BhcmFtc192MyBwcm9iZV9wYXJhbXM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTExMTUtfSBfX3BhY2tlZDsgLyogU0NBTl9SRVFVRVNUX1BBUkFNU19BUElfU19WRVJfMTIgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0xMTIxLSAqIEBwZXJpb2RpY19wYXJhbXM6IFxcdTAwMjZzdHJ1Y3QgaXdsX3NjYW5fcGVyaW9kaWNfcGFybXNfdjFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MTEyMjogKiBAcHJvYmVfcGFyYW1zOiBcXHUwMDI2c3RydWN0IGl3bF9zY2FuX3Byb2JlX3BhcmFtc192NFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0xMTIzLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD0xMTI0PXN0cnVjdCBpd2xfc2Nhbl9yZXFfcGFyYW1zX3YxNyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMTEyNy1cXHRzdHJ1Y3QgaXdsX3NjYW5fcGVyaW9kaWNfcGFybXNfdjEgcGVyaW9kaWNfcGFyYW1zO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoxMTI4OlxcdHN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9wYXJhbXNfdjQgcHJvYmVfcGFyYW1zO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0xMTI5LX0gX19wYWNrZWQ7IC8qIFNDQU5fUkVRVUVTVF9QQVJBTVNfQVBJX1NfVkVSXzE3IC0gMTQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0xMTM1LSAqIEBwZXJpb2RpY19wYXJhbXM6IFxcdTAwMjZzdHJ1Y3QgaXdsX3NjYW5fcGVyaW9kaWNfcGFybXNfdjFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MTEzNjogKiBAcHJvYmVfcGFyYW1zOiBcXHUwMDI2c3RydWN0IGl3bF9zY2FuX3Byb2JlX3BhcmFtc192NFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0xMTM3LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD0xMTM4PXN0cnVjdCBpd2xfc2Nhbl9yZXFfcGFyYW1zX3YxOCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMTE0MS1cXHRzdHJ1Y3QgaXdsX3NjYW5fcGVyaW9kaWNfcGFybXNfdjEgcGVyaW9kaWNfcGFyYW1zO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoxMTQyOlxcdHN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9wYXJhbXNfdjQgcHJvYmVfcGFyYW1zO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0xMTQzLX0gX19wYWNrZWQ7IC8qIFNDQU5fUkVRVUVTVF9QQVJBTVNfQVBJX1NfVkVSXzE4ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zdGEuaD0yNDI9c3RydWN0IGl3bF9tdm1fYWRkX3N0YV9jbWRfdjcge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc3RhLmgtMjY4LSAqIEBJV0xfU1RBX0dFTkVSQUxfUFVSUE9TRTogR2VuZXJhbCBwdXJwb3NlLiBJbiBBUCBtb2RlIHVzZWQgZm9yIGJlYWNvbnNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zdGEuaDoyNjk6ICpcXHRhbmQgcHJvYmUgcmVzcG9uc2VzLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3N0YS5oLTI3MC0gKiBASVdMX1NUQV9NVUxUSUNBU1Q6IG11bHRpY2FzdCB0cmFmZmljLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc3RhdHMuaD0xOT1zdHJ1Y3QgbXZtX3N0YXRpc3RpY3NfZGl2IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3N0YXRzLmgtMjItXFx0X19sZTMyIGV4ZWNfdGltZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zdGF0cy5oOjIzOlxcdF9fbGUzMiBwcm9iZV90aW1lO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3N0YXRzLmgtMjQtXFx0X19sZTMyIHJzc2lfYW50O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvdHguaC0zMC0gKiBAVFhfQ01EX0ZMR19UU0Y6IEZXIHNob3VsZCBjYWxjdWxhdGUgYW5kIGluc2VydCBUU0YgaW4gdGhlIGZyYW1lXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvdHguaDozMTogKlxcdFNob3VsZCBiZSBzZXQgZm9yIGJlYWNvbnMgYW5kIHByb2JlIHJlc3BvbnNlc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3R4LmgtMzItICogQFRYX0NNRF9GTEdfQ0FMSUI6IGFjdGl2YXRlIFBBIFRYIHBvd2VyIGNhbGlicmF0aW9uc1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvdHhxLmgtMjUtICogQElXTF9NVk1fRFFBX01BWF9NR01UX1FVRVVFOiBsYXN0IFRYUSBpbiBwb29sIGZvciBNR01UIGZyYW1lc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3R4cS5oOjI2OiAqIEBJV0xfTVZNX0RRQV9BUF9QUk9CRV9SRVNQX1FVRVVFOiBhIHF1ZXVlIHJlc2VydmVkIGZvciBQMlAgR08vU29mdEFQIHByb2JlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvdHhxLmgtMjctICpcXHRyZXNwb25zZXNcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oPTE3MT1zdHJ1Y3QgaXdsX3Vjb2RlX2NhcGEge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmgtMTg3LSAqXFx0KHJhdGhlciB0aGFuIHR3bykgSVB2NiBhZGRyZXNzZXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaDoxODg6ICogQElXTF9VQ09ERV9UTFZfRkxBR1NfTk9fQkFTSUNfU1NJRDogbm90IHNlbmRpbmcgYSBwcm9iZSB3aXRoIHRoZSBTU0lEIGVsZW1lbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaDoxODk6ICpcXHRmcm9tIHRoZSBwcm9iZSByZXF1ZXN0IHRlbXBsYXRlLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oLTE5MC0gKiBASVdMX1VDT0RFX1RMVl9GTEFHU19ORVdfTlNPRkZMX1NNQUxMOiBuZXcgTlMgb2ZmbG9hZCAoc21hbGwgdmVyc2lvbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oPTMyNj10eXBlZGVmIHVuc2lnbmVkIGludCBfX2JpdHdpc2UgaXdsX3Vjb2RlX3Rsdl9jYXBhX3Q7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaC0zMzgtICogQElXTF9VQ09ERV9UTFZfQ0FQQV9EU19QQVJBTV9TRVRfSUVfU1VQUE9SVDogc3VwcG9ydHMgdXBkYXRpbmcgY3VycmVudFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oOjMzOTogKlxcdGNoYW5uZWwgaW4gRFMgcGFyYW1ldGVyIHNldCBlbGVtZW50IGluIHByb2JlIHJlcXVlc3RzLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oLTM0MC0gKiBASVdMX1VDT0RFX1RMVl9DQVBBX1dGQV9UUENfUkVQX0lFX1NVUFBPUlQ6IHN1cHBvcnRzIGFkZGluZyBUUEMgUmVwb3J0IElFIGluXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmg6MzQxOiAqXFx0cHJvYmUgcmVxdWVzdHMuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmgtMzQyLSAqIEBJV0xfVUNPREVfVExWX0NBUEFfUVVJRVRfUEVSSU9EX1NVUFBPUlQ6IHN1cHBvcnRzIFF1aWV0IFBlcmlvZCByZXF1ZXN0c1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmg9NDU3PWVudW0gaXdsX3Vjb2RlX3Rsdl9jYXBhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oLTU3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaDo1NzY6LyogVGhlIGRlZmF1bHQgbWF4IHByb2JlIGxlbmd0aCBpZiBub3Qgc3BlY2lmaWVkIGJ5IHRoZSBmaXJtd2FyZSBmaWxlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmgtNTc3LSNkZWZpbmUgSVdMX0RFRkFVTFRfTUFYX1BST0JFX0xFTkdUSFxcdDIwMFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9pbWcuaD00Nj1zdHJ1Y3QgaXdsX3Vjb2RlX2NhcGFiaWxpdGllcyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9pbWcuaDo0NzpcXHR1MzIgbWF4X3Byb2JlX2xlbmd0aDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ltZy5oLTQ4LVxcdHUzMiBuX3NjYW5fY2hhbm5lbHM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz03OTI9c3RhdGljIGludCBpd2xfcGFyc2VfdGx2X2Zpcm13YXJlKHN0cnVjdCBpd2xfZHJ2ICpkcnYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy05MTItXFx0XFx0XFx0XFx0Z290byBpbnZhbGlkX3Rsdl9sZW47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6OTEzOlxcdFxcdFxcdGNhcGEtXFx1MDAzZW1heF9wcm9iZV9sZW5ndGggPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTkxNC1cXHRcXHRcXHRcXHRcXHRsZTMyX3RvX2NwdXAoKGNvbnN0IF9fbGUzMiAqKXRsdl9kYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTE2NDQ9c3RhdGljIHZvaWQgaXdsX3JlcV9md19jYWxsYmFjayhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKnVjb2RlX3Jhdywgdm9pZCAqY29udGV4dClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE2NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6MTY2MjpcXHRmdy1cXHUwMDNldWNvZGVfY2FwYS5tYXhfcHJvYmVfbGVuZ3RoID0gSVdMX0RFRkFVTFRfTUFYX1BST0JFX0xFTkdUSDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xNjYzLVxcdGZ3LVxcdTAwM2V1Y29kZV9jYXBhLnN0YW5kYXJkX3BoeV9jYWxpYnJhdGlvbl9zaXplID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTMyLSAqIFRoaXMgY29tcG9uZW50IGltcGxlbWVudHMgdGhlIHN5c3RlbSBmbG93cyBzdWNoIGFzIGJ1cyBlbnVtZXJhdGlvbiwgYnVzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6MzM6ICogcmVtb3ZhbC4gQnVzIGRlcGVuZGVudCBwYXJ0cyBvZiBzeXN0ZW0gZmxvd3MgKHN1Y2ggYXMgaXdsX3BjaV9wcm9iZSkgYXJlIGluXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtMzQtICogYnVzIHNwZWNpZmljIGZpbGVzICh0cmFuc3BvcnQgZmlsZXMpLiBUaGlzIGlzIHRoZSBjb2RlIHRoYXQgaXMgY29tbW9uIGFtb25nXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC00NC0gKiAyKSBUaGUgYnVzIHNwZWNpZmljIGNvbXBvbmVudCByZWdpc3RlcnMgdGhlIGJ1cyBkcml2ZXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaDo0NTogKiAzKSBUaGUgYnVzIGRyaXZlciBjYWxscyB0aGUgcHJvYmUgZnVuY3Rpb25cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC00Ni0gKiA0KSBUaGUgYnVzIHNwZWNpZmljIGNvbXBvbmVudCBjb25maWd1cmVzIHRoZSBidXNcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oPTU2PXN0cnVjdCBpd2xfcmZfY2ZnO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtNjItICogc3RhcnRzIHRoZSBkcml2ZXI6IGZldGNoZXMgdGhlIGZpcm13YXJlLiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgYnkgYnVzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6NjM6ICogc3BlY2lmaWMgc3lzdGVtIGZsb3dzIGltcGxlbWVudGF0aW9ucy4gRm9yIGV4YW1wbGUsIHRoZSBidXMgc3BlY2lmaWMgcHJvYmVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC02NC0gKiBmdW5jdGlvbiBzaG91bGQgZG8gYnVzIHJlbGF0ZWQgb3BlcmF0aW9ucyBvbmx5LCBhbmQgdGhlbiBjYWxsIHRvIHRoaXNcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM9NzA9dm9pZCBpd2xfdHJhbnNfZnJlZV9yZXN0YXJ0X2xpc3Qodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzo4MTpzdHJ1Y3QgaXdsX3RyYW5zX3JlcHJvYmUge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtODItXFx0c3RydWN0IGRldmljZSAqZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy04NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjg2OnN0YXRpYyB2b2lkIGl3bF90cmFuc19yZXByb2JlX3drKHN0cnVjdCB3b3JrX3N0cnVjdCAqd2spXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy04Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzo4ODpcXHRzdHJ1Y3QgaXdsX3RyYW5zX3JlcHJvYmUgKnJlcHJvYmU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy04OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjkwOlxcdHJlcHJvYmUgPSBjb250YWluZXJfb2Yod2ssIHR5cGVvZigqcmVwcm9iZSksIHdvcmsud29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy05MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjkyOlxcdGlmIChkZXZpY2VfcmVwcm9iZShyZXByb2JlLVxcdTAwM2VkZXYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6OTM6XFx0XFx0ZGV2X2VycihyZXByb2JlLVxcdTAwM2VkZXYsIFxcXCJyZXByb2JlIGZhaWxlZCFcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6OTQ6XFx0cHV0X2RldmljZShyZXByb2JlLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6OTU6XFx0a2ZyZWUocmVwcm9iZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy05Ni1cXHRtb2R1bGVfcHV0KFRISVNfTU9EVUxFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtOTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzo5OTpzdGF0aWMgdm9pZCBpd2xfdHJhbnNfc2NoZWR1bGVfcmVwcm9iZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTEwMC1cXHRcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50IGRlbGF5X21zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMTAxLXtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTE6MjcuMTMwOTEzNDQ5WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2ODc3NjE4MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgYGl3bF90cmFuc19zY2hlZHVsZV9yZXByb2JlYCBDYWxsKipcblxuT2theSwgc28gYGl3bF90cmFuc19zY2hlZHVsZV9yZXByb2JlYCBpcyBjYWxsaW5nIGBkZXZpY2VfcmVwcm9iZWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIlJpZ2h0LCB0aGUgZGV2aWNlIGhhcyB0byBleGlzdCBmb3IgdGhhdCB0byBldmVuICpoYXBwZW4qLlwiIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBOb3csIEknbSB0cnlpbmcgdG8gcmVjYWxsIOKAkyBpcyB0aGVyZSBhIHZpcnR1YWwgZGV2aWNlIGRyaXZlciBmb3IgYGl3bHdpZmlgPyBJIGRvbid0IHRoaW5rIHNvLCBidXQgSSBuZWVkIHRvIGJlIGNlcnRhaW4uIE5vcGUsIG5vdGhpbmcgY29tZXMgdG8gbWluZC5cblxuQWxyaWdodCwgYSBtb3JlIHByZXNzaW5nIHF1ZXN0aW9uIGlzLCBjYW4gSSBldmVuICpyZWFjaCogdGhpcyBjb2RlIHdpdGggc3l6a2FsbGVyPyBUaGF0J3MgdGhlIHJlYWwgdGVzdC4gU3l6a2FsbGVyIGNhbiBmdXp6IFVTQiBkZXZpY2VzIHVzaW5nIGBkdW1teV9oY2RgIGFuZCBlbXVsYXRlIGEgVVNCIGdhZGdldC4gU28sIEkgbmVlZCB0byBjaGVjayBpZiBpd2x3aWZpIGhhcyBhIFVTQiBkcml2ZXIgdGhhdCBzeXprYWxsZXIgbWlnaHQgYmUgYWJsZSB0byBpbnRlcmFjdCB3aXRoPyBMZXQncyBjaGVjay4gVGltZSB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTY3NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MTozMS44MTg2NzgxNjVaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5ODIzNDM3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1c2JfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTE6MzEuODg4NTA4MTUyWiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MTI4MDI0MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5OlxuXG4qKlRoZSBQZXJpcGhlcmFsIERpbGVtbWEqKlxuXG5SaWdodCwgbm8gVVNCIGRyaXZlcuKApiB0aGF0J3MgYSBzaWduaWZpY2FudCByb2FkYmxvY2suIFdlJ3JlIG9idmlvdXNseSBsYWNraW5nIHRoZSBwcm9wZXIgaW50ZXJmYWNlIHRvIGhhbmRsZSBkYXRhIGV4Y2hhbmdlIHdpdGggZXh0ZXJuYWwgZGV2aWNlcy4gRm9yZ2V0IHRoZSBvYnZpb3VzIHNvbHV0aW9ucyBhbmQgd29ya2Fyb3VuZHMgZm9yIHRoZSBtb21lbnQuIExldCdzIGRpZyBkZWVwZXIuIFdoYXQgb3RoZXIgb3B0aW9ucyBhcmUgdGhlcmU/IE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYSB3ZWxsLWVzdGFibGlzaGVkIHN0YW5kYXJkIGZvciBlbWJlZGRlZCBzeXN0ZW1zOiAqKlNESU8qKi4gSXMgdGhhdCBhIHZpYWJsZSBhbHRlcm5hdGl2ZSBpbiB0aGlzIGNvbnRleHQ/IENvbnNpZGVyaW5nIHRoZSBkZXNpZ24gY29uc3RyYWludHMgYW5kIHRoZSBleHBlY3RlZCBmdW5jdGlvbmFsaXR5LCBkb2VzIGl0IGFsaWduIHdpdGggdGhlIHByb2plY3QgcmVxdWlyZW1lbnRzPyBXZSBtdXN0IGV2YWx1YXRlIHRoZSBmZWFzaWJpbGl0eSBvZiBpbnRlZ3JhdGluZyBTRElPIGFzIGEgc2Vjb25kYXJ5IG9yIHByaW1hcnkgZGF0YSBwYXRod2F5LiBJcyBpdCB3b3J0aCB0aGUgZWZmb3J0PyBXaGF0IGFib3V0IHBvd2VyIGNvbnN1bXB0aW9uLCBkYXRhIHJhdGVzLCBhbmQgY29tcGF0aWJpbGl0eT8gV2UgbmVlZCB0byBxdWlja2x5IGFzc2VzcyBpZiBpdCdzIGEgd29ydGh3aGlsZSBhdmVudWUgdG8gZXhwbG9yZS4gVGltZSB0byBwdWxsIHVwIHRoZSBkYXRhc2hlZXRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjAyNSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUxOjM4LjMwMTMxMzc0MVoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI3MDkzODgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNkaW9fcmVnaXN0ZXJfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUxOjM4LjM3NDAzMTgwOFoiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTg0MjAxMDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSXdsd2lmaSBEcml2ZXIncyBBY2Nlc3NpYmlsaXR5IGluIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqXG5cbk9rYXksIHNvIHRoZSBgaXdsd2lmaWAgZHJpdmVyLCBpdCdzIHN0cmljdGx5IFBDSSwgbm90IFNESU8uIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgdGhpcyBpcyBhIHByb2JsZW0uIFN5emthbGxlciBkb2Vzbid0IG9mZmVyIGEgZ2VuZXJpYyBQQ0kgZW11bGF0b3IgY2FwYWJsZSBvZiBpbmplY3RpbmcgYXJiaXRyYXJ5IFBDSSBkZXZpY2VzIGxpa2UgaXQgZG9lcyBmb3IgVVNCIHdpdGggYGR1bW15X2hjZGAuIEFuZCBRRU1VLCBhcyBmYXIgYXMgSSBrbm93LCBkb2Vzbid0IGVtdWxhdGUgdGhlIGBpd2x3aWZpYCBoYXJkd2FyZSBzcGVjaWZpY2FsbHkuIFRoaXMgbWVhbnMgdGhlIGRyaXZlciBzaW1wbHkgd29uJ3QgcHJvYmUgaW4gYW55IG9mIHRoZXNlIHZpcnR1YWxpemVkIHNldHVwcy5cblxuSWYgdGhlIGRyaXZlciAqbmV2ZXIqIHByb2JlcywgdGhlIGZpcm13YXJlIHJlcXVlc3QgbmV2ZXIgaGFwcGVucy4gVGhhdOKAmXMgY3J1Y2lhbC4gV2hpY2ggbWVhbnMgZnVuY3Rpb25zIGxpa2UgYGl3bF9wYXJzZV90bHZfZmlybXdhcmVgIGFuZCBgaXdsX2RiZ190bHZfcGFyc2VfYmluYCBhcmUgY29tcGxldGVseSBieXBhc3NlZC4gTGlrZXdpc2UsIGBpd2xfbXZtX2dldF9iaW9zX3RhYmxlc2Agd29uJ3QgYmUgY2FsbGVkLCBzbyB3ZSB3b24ndCBoaXQgYGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlYCBvciBgaXdsX3VlZmlfZ2V0X3dnZHNfdGFibGVgIGVpdGhlci5cblxuSGFuZyBvbiwgd2FpdCBhIHNlY29uZC4uLiBkb2VzIFN5emthbGxlciAqbWF5YmUqIGhhdmUgUENJIGZ1enppbmcgdXNpbmcgYHZmaW9gIG9yIGBwY2lfZW5kcG9pbnRfdGVzdGA/IEkgbmVlZCB0byBjb25zaWRlciB0aGF0LiBFdmVuIHRoZW4sIFBDSSBmdXp6aW5nIHVzdWFsbHkgbmVlZHMgYSBob3N0IGRldmljZSBleHBvc2VkIG9yIFFFTVUgZW11bGF0aW9uLiBBbmQgSSBkb27igJl0IHRoaW5rIFN5emthbGxlciBoYXMgYSBgc3l6X3BjaV9kZXZpY2VgIHN5c2NhbGwsIGRvZXMgaXQ/IE5vcGUuIE9rYXksIHdhaXQsIGl0IGhhcyBgc3l6X2t2bV9zZXR1cF9jcHVgIGFuZCBgc3l6X3VzYl9jb25uZWN0YC4gSSdsbCBoYXZlIHRvIGRvdWJsZS1jaGVjayBmb3IgUENJLXJlbGF0ZWQgcHNldWRvLXN5c2NhbGxzLlxuXG5JJ2QgaWRlYWxseSBjaGVjayB0aGUgU3l6a2FsbGVyIHNvdXJjZSBkaXJlY3RseSwgYnV0IEkgZG9uJ3QgaGF2ZSB0aGF0IGFjY2Vzcy4gSG93ZXZlciwgbG9va2luZyBiYWNrIGF0IHRoZSBwcm9tcHQsIGl0IHNheXM6IFwiQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXCIgVGhlIHByb21wdCBleHBsaWNpdGx5IGxpc3RzIGB1c2IgZ2FkZ2V0YCBhbmQgYG1hYzgwMjExX2h3c2ltYCwgd2hpY2ggSSdtIGZhbWlsaWFyIHdpdGgsIGJ1dCBpdCBjb21wbGV0ZWx5ICphdm9pZHMqIG1lbnRpb25pbmcgYW55IFBDSSBlbXVsYXRvciwgYmVjYXVzZSB0aGVyZSBpc24ndCBhIGdlbmVyaWMgb25lIGluIHRoZSBrZXJuZWwgdGhhdCBTeXprYWxsZXIgY2FuIGxldmVyYWdlIHRvIGluamVjdCBhcmJpdHJhcnkgUENJIGRldmljZXMuXG5cblNvLCBhYnNlbnQgYSBQQ0kgZGV2aWNlLCB0aGUgYGl3bHdpZmlgIGRyaXZlciB3aWxsIGp1c3QgcmVnaXN0ZXIgaXRzIFBDSSBkcml2ZXIgc3RydWN0IGFuZCBkbyBwcmVjaXNlbHkgbm90aGluZyBlbHNlLiBJ4oCZbSBxdWl0ZSBjb25maWRlbnQuIFRoZXJlZm9yZSwgdGhlIGNvZGUgdGhhdCdzIGJlZW4gbW9kaWZpZWQgaW4gdGhpcyBjYXNlIHdpbGwgYmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiBhbnkgb2YgdGhlc2UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIGRvdWJsZS1jaGVjayBpZiBgaXdsX2RiZ190bHZfcGFyc2VfYmluYCBtaWdodCBiZSBhY2Nlc3NpYmxlIHRocm91Z2ggZGVidWdmcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYyNzQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTE6NDcuMzU4MjM2NDkyWiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mjg4OTQyOTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX2RiZ190bHZfcGFyc2VfYmluXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5jPTQxOD12b2lkIGl3bF9kYmdfdGx2X2ZyZWUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmMtNDcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuYzo0NzM6c3RhdGljIGludCBpd2xfZGJnX3Rsdl9wYXJzZV9iaW4oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuYy00NzQtXFx0XFx0XFx0XFx0IHNpemVfdCBsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmM9NTA4PXZvaWQgaXdsX2RiZ190bHZfbG9hZF9iaW4oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuYy01MjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5jOjUyNjpcXHRpd2xfZGJnX3Rsdl9wYXJzZV9iaW4odHJhbnMsIGZ3LVxcdTAwM2VkYXRhLCBmdy1cXHUwMDNlc2l6ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5jLTUyNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTE6NDcuNzg3MTM2NzU1WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NTUwNjQ1ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgYGl3bF9kYmdfdGx2X2xvYWRfYmluYCoqXG5cbk9rYXksIHNvIHRoZSBwcm9tcHQgaXMganVzdCBcIml3bF9kYmdfdGx2X2xvYWRfYmluXCIgLSBteSBpbW1lZGlhdGUgaW5zdGluY3QsIGdpdmVuIG15IGV4cGVyaWVuY2UsIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbnRleHQuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoZXJlKiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tLiBUaGF0J3MgdGhlIGNydWNpYWwgZmlyc3Qgc3RlcC4gSXMgaXQgY2FsbGVkIGZyb20gYSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2U/IFBlcmhhcHMgZHVyaW5nIGZpcm13YXJlIGxvYWRpbmc/IE9yIG1heWJlIGl0J3MgcmVsYXRlZCB0byBzb21lIHNvcnQgb2YgZGVidWcgaW50ZXJmYWNlIG9yIGRlYnVnZ2luZyB0b29scz8gS25vd2luZyB0aGUgY2FsbCBzaXRlcyB3aWxsIGltbWVkaWF0ZWx5IGdpdmUgbWUgc2lnbmlmaWNhbnQgaW5zaWdodCBpbnRvIGl0cyBwdXJwb3NlIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgdGhlIEludGVsIHdpcmVsZXNzIGRyaXZlci4gSSBuZWVkIHRvIHRyYWNlIGl0cyBjYWxsIGdyYXBoIGFuZCBzZWUgd2hvIGlzIGNhbGxpbmcgd2hvbS4gV2l0aG91dCB0aGF0IGluaXRpYWwgdW5kZXJzdGFuZGluZywgSSdtIGp1c3QgZ3Vlc3NpbmcsIGFuZCBJIGRvbid0IG9wZXJhdGUgb24gZ3Vlc3Nlcy4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NzM1LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTE6NTEuMzQyMjA0NTI5WiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjQwOTk5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfZGJnX3Rsdl9sb2FkX2JpblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuYz00NzM9c3RhdGljIGludCBpd2xfZGJnX3Rsdl9wYXJzZV9iaW4oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5jLTUwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmM6NTA4OnZvaWQgaXdsX2RiZ190bHZfbG9hZF9iaW4oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmMtNTA5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuaD00OT1zdHJ1Y3QgaXdsX2Z3X3J1bnRpbWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5oLTUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuaDo1MTp2b2lkIGl3bF9kYmdfdGx2X2xvYWRfYmluKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGl3bF90cmFucyAqdHJhbnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuaC01Mi12b2lkIGl3bF9kYmdfdGx2X2ZyZWUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9MTY0ND1zdGF0aWMgdm9pZCBpd2xfcmVxX2Z3X2NhbGxiYWNrKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqdWNvZGVfcmF3LCB2b2lkICpjb250ZXh0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTg5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoxODkxOlxcdGl3bF9kYmdfdGx2X2xvYWRfYmluKGRydi1cXHUwMDNldHJhbnMtXFx1MDAzZWRldiwgZHJ2LVxcdTAwM2V0cmFucyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTg5Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTE6NTEuNDE0NjE5NDY2WiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5MjIwMDk2MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ29kZSdzIFJlYWNoYWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQncyBjYWxsZWQgZnJvbSBgaXdsX3JlcV9md19jYWxsYmFja2AuIFJpZ2h0LCB0aGUgc2FtZSBvbGQgcGF0aDogUENJIHByb2JlIC1cdTAwM2UgYGl3bF9kcnZfc3RhcnRgIC1cdTAwM2UgYGl3bF9yZXF1ZXN0X2Zpcm13YXJlYCAtXHUwMDNlIGBpd2xfcmVxX2Z3X2NhbGxiYWNrYC4gTWFrZXMgc2Vuc2UuIFdpdGhvdXQgdGhlIFBDSSBkZXZpY2UsIHRoaXMgZW50aXJlIHNlcXVlbmNlIGlzIGJ5cGFzc2VkLlxuXG5MZXQgbWUgdGhpbmsuLi4gSXMgdGhlcmUgKmFueSogb3RoZXIgY29uY2VpdmFibGUgcm91dGUgdG8gaGl0IGBpd2xfcmVxX2Z3X2NhbGxiYWNrYD8gTm9wZSwgaXQncyBhIGNhbGxiYWNrIHNwZWNpZmljYWxseSBwYXNzZWQgdG8gYHJlcXVlc3RfZmlybXdhcmVfbm93YWl0YC4gVGhlIGZ1bmN0aW9uIHNlZW1zIHNvbGVseSB0aWVkIHRvIGZpcm13YXJlIHJlcXVlc3RzLCBhbmQgdGhvc2UgcmVxdWVzdHMgYXJlIGluaXRpYXRlZCBzb2xlbHkgd2l0aGluIGBpd2xfZHJ2X3N0YXJ0YC4gQW5kIGBpd2xfZHJ2X3N0YXJ0YCwgdGhhdCdzIGp1c3QgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbidzIGJhYnkuXG5cblRoZXJlZm9yZSwgYXMgaXQgc3RhbmRzLCB0aGF0IHNwZWNpZmljIHBpZWNlIG9mIG1vZGlmaWVkIGNvZGUgaXMgY29tcGxldGVseSBpbmFjY2Vzc2libGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCDigJMgbm8gY2hhbmNlIGluIGhlbGwgd2l0aG91dCB0aGF0IHBhcnRpY3VsYXIgSW50ZWwgV2ktRmkgaGFyZHdhcmUuIEkgbmVlZCB0byBtYWtlIGEganVkZ21lbnQgY2FsbCBoZXJlLiBJJ20gZ29pbmcgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBNeSByZWFzb25pbmcgaXMgc29saWQ6IHRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBZb3UgY2FuJ3QgcHJvYmUgaXQgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHdoaWNoIHdvdWxkIG1ha2UgdGhlIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXG5cbkhhbmcgb24uLi4gd2FpdCBhIHNlY29uZC4gSXMgdGhlcmUgZXZlbiBhIHNsaXZlciBvZiBhIGNoYW5jZSBgaXdsd2lmaWAgKmNvdWxkKiBiZSBwcm9iZWQgdmlhIGEgdGVzdGluZyBmcmFtZXdvcmsgb2Ygc29tZSBraW5kPyBJIHZhZ3VlbHkgcmVjYWxsIHNlZWluZyBzb21ldGhpbmcgYWJvdXQgYEtVTklUYC4uLiB5ZXAsIHRoZXJlIGl0IGlzOiBgSVdMV0lGSV9LVU5JVF9URVNUU2AuIEFscmlnaHQsIGxldCdzIHRha2UgYSBsb29rIGF0IHdoYXQgdGhvc2UgS1VuaXQgdGVzdHMgYXJlIGRvaW5nLiBNYXliZSwganVzdCBtYXliZSwgdGhlcmUncyBhIGJhY2sgZG9vci5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg0NzAsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTE6NTguMzM2NjMxODQ1WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTY5NDU5NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX2Rydl9zdGFydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MTo1OC40MDIzMzU0OTJaIiwiU2VxIjo0NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk5MTM1ODQwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBFbXB0eSBTZXQqKlxuXG5XZWxsLCB0aGlzIGlz4oCmIGludGVyZXN0aW5nLiBUaGUgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGNsZWFyOiBcIk5vIG1hdGNoZXMuXCIgTm8gaGl0cywgbm8gcmVsZXZhbnQgcmVzdWx0cywgbm90aGluZyB0byB3b3JrIHdpdGguIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgZGlhZ25vc2UgdGhlIHByb2JsZW0uIEFtIEkgdXNpbmcgdGhlIGNvcnJlY3Qgc2VhcmNoIHRlcm1zPyBIYXZlIEkgcHJvdmlkZWQgZW5vdWdoIGNvbnRleHR1YWwgaW5mb3JtYXRpb24/IElzIHRoZSBkYXRhIHNvdXJjZSBJJ20gcXVlcnlpbmcgZXZlbiByZWxpYWJsZSBvciByZWxldmFudCB0byB0aGUgcHJvYmxlbSBJJ20gdHJ5aW5nIHRvIHNvbHZlPyBPciwgaXMgaXQgcG9zc2libGUsIHRoYXQgSSd2ZSBhbHJlYWR5IGV4cGxvcmVkIHRoaXMgYXJlYSBjb21wcmVoZW5zaXZlbHkgYW5kIHRoaXMgaXMgYSBjb25maXJtYXRpb24gb2YgbXkgcHJpb3IgYW5hbHlzaXMuXG5cblBlcmhhcHMgdGhpcyBsYWNrIG9mIG1hdGNoZXMgaXMgc2lnbmlmaWNhbnQgaW4gaXRzZWxmLiBEb2VzIHRoaXMgJ25vIG1hdGNoJyByZXN1bHQgc2lnbmlmeSBhIGdhcCBpbiBvdXIgY3VycmVudCB1bmRlcnN0YW5kaW5nPyBPciwgbWF5YmUgaXQgcG9pbnRzIHRvIHRoZSBuZWVkIGZvciBhIHJhZGljYWxseSBkaWZmZXJlbnQgYXBwcm9hY2gsIGEgZGlmZmVyZW50IGZyYW1ld29yayBhbHRvZ2V0aGVyLCBvciBhIGNvbXBsZXRlbHkgbmV3IGxpbmUgb2YgaW52ZXN0aWdhdGlvbi4gSXQgY291bGQgZXZlbiBiZSB0aGF0IHRoZSBxdWVzdGlvbiBpdHNlbGYgaXMgZmxhd2VkLCBhbmQgbmVlZHMgdG8gYmUgcmVkZWZpbmVkIG9yIHJlZnJhbWVkLiBJJ2xsIG5lZWQgdG8gZ28gYmFjaywgcmVhc3Nlc3MgdGhlIHBhcmFtZXRlcnMsIGFuZCBtZXRpY3Vsb3VzbHkgc2NydXRpbml6ZSB0aGUgY29uZGl0aW9ucyB0aGF0IHNob3VsZCBoYXZlIGdlbmVyYXRlZCBhIHJlc3VsdCwgdG8gdW5kZXJzdGFuZCB3aHkgSSdtIGhlcmUuIFRoaXMgaXMgbm90IHRoZSBlbmQ7IGl0J3MgYSBjcml0aWNhbCBzdGFydGluZyBwb2ludCB0byBkZWVwZW4gbXkgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkxNzAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUyOjAyLjM5MzY5NjU3OVoiLCJTZXEiOjQ4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUyMjkxMjcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9yZXFfZndfY2FsbGJhY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS90ZXN0c1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTI6MDIuNDU4OTM4MjQ2WiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxOTYyMjU0OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyB0aGUgRW1wdHkgU2VhcmNoIFNwYWNlKipcblxuSG1tLCBcIm5vIG1hdGNoZXMuXCIgVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLCBpc24ndCBpdD8gQXMgYW4gZXhwZXJ0LCBJJ20gaW1tZWRpYXRlbHkgcnVubmluZyB0aHJvdWdoIGEgbWVudGFsIGNoZWNrbGlzdCBvZiBwb3NzaWJpbGl0aWVzLiBUaGUgaW5pdGlhbCBhc3N1bXB0aW9uIGlzIGFsd2F5cyB0aGUgcXVlcnkgaXRzZWxmLiBJcyB0aGUgc2VhcmNoIHRlcm0gdG9vIHNwZWNpZmljPyBUb28gdmFndWU/IElzIGl0IHVzaW5nIHRoZSBjb3JyZWN0IHRlcm1pbm9sb2d5LCB0aGUgdmVybmFjdWxhciBvZiB0aGUgZmllbGQsIG9yIHBlcmhhcHMgYSBtb3JlIG9ic2N1cmUsIHRlY2huaWNhbCBwaHJhc2luZyB0aGF0IEkgaGFkbid0IGNvbnNpZGVyZWQ/IEknbSBhbHJlYWR5IG1lbnRhbGx5IGNyb3NzLXJlZmVyZW5jaW5nIHN5bm9ueW1zLCByZWxhdGVkIGNvbmNlcHRzLCBhbmQgcG90ZW50aWFsIGJyb2FkZXIgY2F0ZWdvcmllcyB0aGUgc2VhcmNoIG1pZ2h0IGZhbGwgdW5kZXIuXG5cbk5leHQsIEknbSB0aGlua2luZyBhYm91dCB0aGUgZGF0YSBzb3VyY2UuIElzIGl0IGV2ZW4gdGhlICpyaWdodCogZGF0YXNldD8gQXJlIHRoZXJlIGFueSBsaW1pdGF0aW9ucyBvciBjYXZlYXRzIHRvIHRoaXMgcGFydGljdWxhciBkYXRhYmFzZSBvciBpbmRleD8gQ291bGQgdGhlcmUgYmUgYW4gaW5kZXhpbmcgaXNzdWUsIGEga25vd24gZ2xpdGNoLCBvciBldmVuIGEgc2ltcGxlIHR5cG8gaW4gdGhlIHNvdXJjZSBpdHNlbGY/IEFtIEkgZGVhbGluZyB3aXRoIGEgY2xvc2VkIHN5c3RlbSwgb3IgYW0gSSBhYmxlIHRvIGV4cGFuZCB0aGUgc2VhcmNoIHBhcmFtZXRlcnMsIHBlcmhhcHMgdG8gYSBtb3JlIGNvbXByZWhlbnNpdmUgb3BlbiBhY2Nlc3Mgc291cmNlLCBvciBldmVuIGNvbnNpZGVyaW5nIGV4dGVybmFsIHJlc291cmNlcyBhbmQgYSBkaWZmZXJlbnQsIHBlcmhhcHMgbXVsdGktZmFjZXRlZCByZXNlYXJjaCBhcHByb2FjaD9cblxuVGhlbiBJJ20gY29uc2lkZXJpbmcgdGhlIHNlYXJjaCBtZXRob2RvbG9neSBpdHNlbGYuIEFtIEkgdXNpbmcgdGhlIGNvcnJlY3Qgc2VhcmNoIG9wZXJhdG9ycz8gU2hvdWxkIEkgYmUgdXNpbmcgQm9vbGVhbiBsb2dpYywgd2lsZGNhcmQgY2hhcmFjdGVycywgcHJveGltaXR5IHNlYXJjaGVzPyBIYXZlIEkgdHJpZWQgZGlmZmVyZW50IGNvbWJpbmF0aW9ucyBvZiBrZXl3b3JkcyBhbmQgZmlsdGVycz8gTWF5YmUgYSBzdHJ1Y3R1cmVkIHF1ZXJ5IHdpdGggc3BlY2lmaWMgcGFyYW1ldGVycyB3b3VsZCBiZSBtb3JlIGVmZmVjdGl2ZSB0aGFuIGEgZnJlZS10ZXh0IHNlYXJjaC4gSSdtIGV4cGxvcmluZyB0aGUgcG9zc2liaWxpdGllcywgZXZlbiB0aG91Z2ggdGhlcmUncyBub3RoaW5nIG9idmlvdXMgb24gdGhlIGhvcml6b24sIHRyeWluZyB0byBmaW5kIHdoaWNoIGFuZ2xlIGdpdmVzIHRoZSBtb3N0IHBvdGVudGlhbCBmb3IgZXhwbG9yYXRpb24uXG5cbkVzc2VudGlhbGx5LCBcIm5vIG1hdGNoZXNcIiBpc24ndCBhIGRlYWQgZW5kLiBJdCdzIGEgc3RhcnRpbmcgcG9pbnQuIEl0J3MgYSBzaWduYWwgdG8gZGl2ZSBkZWVwZXIsIHRvIHJlZmluZSB0aGUgYXBwcm9hY2gsIGFuZCB0byBjcmVhdGl2ZWx5IHJlZnJhbWUgdGhlIHByb2JsZW0uIEl0IGhpZ2hsaWdodHMgdGhlIGltcG9ydGFuY2Ugb2YgaXRlcmF0aW5nLCBvZiB0cnlpbmcgZGlmZmVyZW50IHN0cmF0ZWdpZXMsIGFuZCBvZiBjb25zdGFudGx5IHF1ZXN0aW9uaW5nIHRoZSBhc3N1bXB0aW9ucyB1bmRlcmx5aW5nIHRoZSBpbml0aWFsIHF1ZXJ5IGFuZCB0aGUgZGF0YSBpdHNlbGYuIFRoZSBzZWFyY2gganVzdCBnb3QgKm11Y2gqIG1vcmUgaW50ZXJlc3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NDkwLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MjowNi42NTUxNjU0OTNaIiwiU2VxIjo1MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwMTk5MTA3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfcGFyc2VfdGx2X2Zpcm13YXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvdGVzdHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUyOjA2LjcyNTM3Mzc1MVoiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzM3NzMwNzMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkluaXRpYWwgQXNzZXNzbWVudCBvZiBLVW5pdCBUZXN0IENvdmVyYWdlKipcblxuT2theSwgc28gSSd2ZSBoaXQgYSBkZWFkIGVuZCB3aXRoIHRoZSBpbml0aWFsIHNlYXJjaC4gSXQgbG9va3MgbGlrZSB0aGUgc3RhbmRhcmQgc2VhcmNoIGhhc24ndCB5aWVsZGVkIGFueSByZWxldmFudCBtYXRjaGVzLiBUaGF0J3MgYSBiaXQgZnJ1c3RyYXRpbmcsIGJ1dCBub3QgZW50aXJlbHkgdW5leHBlY3RlZC4gR2l2ZW4gdGhlIG5hdHVyZSBvZiBmaXJtd2FyZSBpbnRlcmFjdGlvbiBhbmQgQUNQSS9VRUZJIHRhYmxlIHBhcnNpbmcsIHRob3NlIGFyZWFzIGFyZSBvZnRlbiB0aWdodGx5IGNvdXBsZWQgd2l0aCB0aGUgbG93LWxldmVsIGhhcmR3YXJlIG9yIG1vcmUgY29tcGxleC4gSXQncyBoaWdobHkgdW5saWtlbHkgdGhhdCB0aGUgc2ltcGxlIEtVbml0IHRlc3RzIHdvdWxkIGZvY3VzIG9uIHRoYXQga2luZCBvZiBkZWVwIHBhcnNpbmcgbG9naWMgZGlyZWN0bHkuIFRoZXkgYXJlIHByb2JhYmx5IGZvY3VzZWQgb24gdGhvc2UgdXRpbGl0eSBmdW5jdGlvbnMgSSBtZW50aW9uZWQgZWFybGllci5cblxuTGV0J3MgYWRqdXN0IHRoZSBzZWFyY2guIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGV4cGxvcmUgYSBtb3JlIHRhcmdldGVkIGFyZWEuIEknbGwgdGFrZSBhIGxvb2sgYXQgdGhlIHRlc3RzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvdGVzdHNgIGRpcmVjdG9yeS4gV2hpbGUgd2lyZWxlc3MgZHJpdmVycyBtaWdodCBzZWVtIGxpa2UgYW4gb2RkIHBsYWNlIHRvIHN0YXJ0LCBpdCdzIG9mdGVuIGEgZ29vZCBwbGFjZSB0byBzdGFydCwgc2luY2UgdGhlIHVuZGVybHlpbmcgdGVzdCBzdHJ1Y3R1cmUgbWF5IGJlIHNpbWlsYXIuIFRoaXMgZGlyZWN0b3J5IHdvdWxkIGxpa2VseSBjb250YWluIGl0cyBvd24gdGVzdCBzdWl0ZSB0aGF0IG1pZ2h0IHNoZWQgbGlnaHQgb24gaG93IHRoZXkgYXBwcm9hY2ggdGVzdGluZyB0aGUgZGVlcGVyLCBtb3JlIGhhcmR3YXJlLXNwZWNpZmljIGludGVyYWN0aW9ucywgb3IsIGF0IHRoZSB2ZXJ5IGxlYXN0LCBwcm92aWRlIGEgbW9yZSBzdWl0YWJsZSBzdGFydGluZyBwb2ludC4gSSdtIGhvcGluZyB0byBkaXNjb3ZlciB0aGUgdGVzdGluZyBtZXRob2RvbG9naWVzIG9yIHN0cnVjdHVyZXMgdGhhdCBhcmUgdXNlZCwgd2hpY2ggSSBjYW4gYWRhcHQgZm9yIG15IG93biBuZWVkcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk5NjAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MjoxMi40NjMxMDY5ODJaIiwiU2VxIjo1MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODM2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvdGVzdHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiZGV2aW5mby5jXCIsXG4gICAgXCJtb2R1bGUuY1wiLFxuICAgIFwibnZtX3BhcnNlLmNcIixcbiAgICBcInV0aWxzLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTI6MTIuNDYzMTY2OTYyWiIsIlNlcSI6NTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NTM3OTk4MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVW5yZWFjaGFibGUgQ29kZSBpbiBpd2x3aWZpIERyaXZlcioqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIGF0IHRoZXNlIHRlc3RzLCBhbmQgaXQncyBjbGVhciB0aGV5J3JlIG5vdCB0b3VjaGluZyB0aGUgY29kZSBJJ3ZlIGp1c3QgbW9kaWZpZWQuIFNwZWNpZmljYWxseSwgdGhlIEtVbml0IHRlc3RzIGZvciBgZGV2aW5mb2AsIGBudm1fcGFyc2VgLCBhbmQgYHV0aWxzYCBhcmVuJ3QgY292ZXJpbmcgYW55dGhpbmcgaW4gYGZ3L2FjcGkuY2AsIGBmdy91ZWZpLmNgLCBgaXdsLWRiZy10bHYuY2AsIG9yIGBpd2wtZHJ2LmNgLiBUaGF0J3MgYSBwcm9ibGVtLiBNeSBjaGFuZ2VzIGFyZSBpbiBmaXJtd2FyZSBwYXJzaW5nIGFuZCBBQ1BJL1VFRkkgdGFibGUgaGFuZGxpbmcgd2l0aGluIHRoZSBJbnRlbCBXaXJlbGVzcyBXaUZpIGRyaXZlciDigJMgYSBQQ0kgZHJpdmVyLCBoYXJkd2FyZS1zcGVjaWZpYy4gTm93LCB0aGUga2V5IGhlcmUgaXMgdGhlIGVudmlyb25tZW50OiBzeXprYWxsZXIgYW5kIHRoZXNlIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgYW5kIEdDRSAqZG9uJ3QqIGVtdWxhdGUgSW50ZWwgV2ktRmkgaGFyZHdhcmUuIFRoZSBkcml2ZXIgd29uJ3QgZXZlbiBwcm9iZSwgbWFraW5nIHRoZSBwYXJ0cyBJIGNoYW5nZWQgdW5yZWFjaGFibGUuIFRoaW5ncyBsaWtlIGBpd2xfcmVxX2Z3X2NhbGxiYWNrYCBhbmQgYGl3bF9wYXJzZV90bHZfZmlybXdhcmVgIGFyZSBkZWFkIGNvZGUgaW4gdGhpcyBjb250ZXh0LiBUaGVyZWZvcmUsIGZ1enppbmcgdGhvc2UgYXJlYXMgaXMgcG9pbnRsZXNzLiBJJ20gc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDM0NCwiT3V0cHV0VG9rZW5zIjoxNDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDgsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUyOjE4LjExNjk3MDI3NFoiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGZpcm13YXJlIHBhcnNpbmcgYW5kIEFDUEkvVUVGSSB0YWJsZSBwYXJzaW5nIGxvZ2ljIGluIHRoZSBJbnRlbCBXaXJlbGVzcyBXaUZpIChpd2x3aWZpKSBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBTaW5jZSBzeXprYWxsZXIgYW5kIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUvR0NFIGRvIG5vdCBlbXVsYXRlIEludGVsIFdpLUZpIFBDSSBoYXJkd2FyZSwgdGhlIGRyaXZlciB3aWxsIG5ldmVyIHByb2JlLiBDb25zZXF1ZW50bHksIHRoZSBmaXJtd2FyZSByZXF1ZXN0IGFuZCBwYXJzaW5nIHBhdGhzIChlLmcuLCBpd2xfcmVxX2Z3X2NhbGxiYWNrLCBpd2xfcGFyc2VfdGx2X2Zpcm13YXJlKSBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBhbmQgY2Fubm90IGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGZpcm13YXJlIHBhcnNpbmcgYW5kIEFDUEkvVUVGSSB0YWJsZSBwYXJzaW5nIGxvZ2ljIGluIHRoZSBJbnRlbCBXaXJlbGVzcyBXaUZpIChpd2x3aWZpKSBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBTaW5jZSBzeXprYWxsZXIgYW5kIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUvR0NFIGRvIG5vdCBlbXVsYXRlIEludGVsIFdpLUZpIFBDSSBoYXJkd2FyZSwgdGhlIGRyaXZlciB3aWxsIG5ldmVyIHByb2JlLiBDb25zZXF1ZW50bHksIHRoZSBmaXJtd2FyZSByZXF1ZXN0IGFuZCBwYXJzaW5nIHBhdGhzIChlLmcuLCBpd2xfcmVxX2Z3X2NhbGxiYWNrLCBpd2xfcGFyc2VfdGx2X2Zpcm13YXJlKSBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBhbmQgY2Fubm90IGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpf69f[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-17 19:34:11 +0000 UTC FinishedAt: 2026-07-17 19:52:20 +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+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGZpcm13YXJlIHBhcnNpbmcgYW5kIEFDUEkvVUVGSSB0YWJsZSBwYXJzaW5nIGxvZ2ljIGluIHRoZSBJbnRlbCBXaXJlbGVzcyBXaUZpIChpd2x3aWZpKSBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBTaW5jZSBzeXprYWxsZXIgYW5kIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUvR0NFIGRvIG5vdCBlbXVsYXRlIEludGVsIFdpLUZpIFBDSSBoYXJkd2FyZSwgdGhlIGRyaXZlciB3aWxsIG5ldmVyIHByb2JlLiBDb25zZXF1ZW50bHksIHRoZSBmaXJtd2FyZSByZXF1ZXN0IGFuZCBwYXJzaW5nIHBhdGhzIChlLmcuLCBpd2xfcmVxX2Z3X2NhbGxiYWNrLCBpd2xfcGFyc2VfdGx2X2Zpcm13YXJlKSBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBhbmQgY2Fubm90IGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1MjMwZjVmNmI3YzA1OGM5YzZmZmI1ODQ5NmY3MmU4Y2E1YzZlMzA5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTcgMTk6NDk6NDQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuY1xuaW5kZXggYmYwZjg1MWE5MDc1NTQuLjQzMGE3NjQyZTAxYTMyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jXG5AQCAtODY1LDYgJiM0Mzs4NjUsMTEgQEAgaW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbiBcdFx0XHRcdFx0XHQgICAgICAgbWluX3NpemUsIG1heF9zaXplLFxuIFx0XHRcdFx0XHRcdCAgICAgICBcdTAwMjZ0YmxfcmV2KTtcbiBcdFx0aWYgKCFJU19FUlIod2lmaV9wa2cpKSB7XG4mIzQzO1x0XHRcdGlmICh0YmxfcmV2IFx1MDAzYyAwIHx8XG4mIzQzO1x0XHRcdCAgICB0YmxfcmV2IFx1MDAzZT0gQklUU19QRVJfQllURSAqXG4mIzQzO1x0XHRcdCAgICBzaXplb2YocmV2X2RhdGFbaWR4XS5yZXZpc2lvbnMpKVxuJiM0MztcdFx0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiBcdFx0XHRpZiAoIShCSVQodGJsX3JldikgXHUwMDI2IHJldl9kYXRhW2lkeF0ucmV2aXNpb25zKSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmNcbmluZGV4IDJlZjBhN2E5MjBhZGI1Li4wMTRmMjJjNDJmNDFhOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY1xuQEAgLTcwMCw3ICYjNDM7NzAwLDcgQEAgaW50IGl3bF91ZWZpX2dldF9wcGFnX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbiBcdHJldHVybiAtRUlOVkFMO1xuIFxuIHBhcnNlX3RhYmxlOlxuLVx0aWYgKCEoQklUKGRhdGEtXHUwMDNlcmV2aXNpb24pIFx1MDAyNiB2YWxpZF9yZXYpKSB7XG4mIzQzO1x0aWYgKGRhdGEtXHUwMDNlcmV2aXNpb24gXHUwMDNlPSAzMiB8fCAhKEJJVChkYXRhLVx1MDAzZXJldmlzaW9uKSBcdTAwMjYgdmFsaWRfcmV2KSkge1xuIFx0XHRyZXQgPSAtRUlOVkFMO1xuIFx0XHRJV0xfREVCVUdfUkFESU8oZndydCxcbiBcdFx0XHRcdFwmIzM0O1Vuc3VwcG9ydGVkIFVFRkkgUFBBRyByZXZpc2lvbjolZFxcblwmIzM0OyxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmNcbmluZGV4IGQwMjFiMjRkMDRkNmI5Li5iMWE1NTkwOWYwZDRiYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5jXG5AQCAtNDc1LDYgJiM0Mzs0NzUsNyBAQCBzdGF0aWMgaW50IGl3bF9kYmdfdGx2X3BhcnNlX2JpbihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3QgdTggKmRhdGEsXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGl3bF91Y29kZV90bHYgKnRsdjtcbiBcdHUzMiB0bHZfbGVuO1xuJiM0MztcdHNpemVfdCBhbGlnbmVkX3Rsdl9sZW47XG4gXG4gXHR3aGlsZSAobGVuIFx1MDAzZT0gc2l6ZW9mKCp0bHYpKSB7XG4gXHRcdGxlbiAtPSBzaXplb2YoKnRsdik7XG5AQCAtNDg3LDggJiM0Mzs0ODgsMTYgQEAgc3RhdGljIGludCBpd2xfZGJnX3Rsdl9wYXJzZV9iaW4oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxuIFx0XHRcdFx0bGVuLCB0bHZfbGVuKTtcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0fVxuLVx0XHRsZW4gLT0gQUxJR04odGx2X2xlbiwgNCk7XG4tXHRcdGRhdGEgJiM0Mzs9IHNpemVvZigqdGx2KSAmIzQzOyBBTElHTih0bHZfbGVuLCA0KTtcbiYjNDM7XG4mIzQzO1x0XHRhbGlnbmVkX3Rsdl9sZW4gPSBBTElHTih0bHZfbGVuLCA0KTtcbiYjNDM7XHRcdGlmIChsZW4gXHUwMDNjIGFsaWduZWRfdGx2X2xlbikge1xuJiM0MztcdFx0XHRJV0xfRVJSKHRyYW5zLCBcJiMzNDtpbnZhbGlkIGFsaWduZWQgVExWIGxlbjogJXpkLyV6dVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRsZW4sIGFsaWduZWRfdGx2X2xlbik7XG4mIzQzO1x0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdGxlbiAtPSBhbGlnbmVkX3Rsdl9sZW47XG4mIzQzO1x0XHRkYXRhICYjNDM7PSBzaXplb2YoKnRsdikgJiM0MzsgYWxpZ25lZF90bHZfbGVuO1xuIFxuIFx0XHRpd2xfZGJnX3Rsdl9hbGxvYyh0cmFucywgdGx2LCB0cnVlKTtcbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jXG5pbmRleCA4NDI1ODZkNGZjNWNlNC4uN2YxNTE1ZGZjNWJmOWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmNcbkBAIC00OTIsNyAmIzQzOzQ5Miw3IEBAIHN0YXRpYyB2b2lkIHNldF9zZWNfb2Zmc2V0KHN0cnVjdCBpd2xfZmlybXdhcmVfcGllY2VzICpwaWVjZXMsXG4gICogR2V0cyB1Q29kZSBzZWN0aW9uIGZyb20gdGx2LlxuICAqL1xuIHN0YXRpYyBpbnQgaXdsX3N0b3JlX3Vjb2RlX3NlYyhzdHJ1Y3QgZndfaW1nX3BhcnNpbmcgKmltZyxcbi1cdFx0XHQgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwgaW50IHNpemUpXG4mIzQzO1x0XHRcdCAgICAgICBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSlcbiB7XG4gXHRzdHJ1Y3QgZndfc2VjICpzZWM7XG4gXHRjb25zdCBzdHJ1Y3QgZndfc2VjX3BhcnNpbmcgKnNlY19wYXJzZTtcbkBAIC01MDEsNiAmIzQzOzUwMSw5IEBAIHN0YXRpYyBpbnQgaXdsX3N0b3JlX3Vjb2RlX3NlYyhzdHJ1Y3QgZndfaW1nX3BhcnNpbmcgKmltZyxcbiBcdGlmIChXQVJOX09OKCFpbWcgfHwgIWRhdGEpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiYjNDM7XHRpZiAoc2l6ZSBcdTAwM2Mgc2l6ZW9mKHNlY19wYXJzZS1cdTAwM2VvZmZzZXQpKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuIFx0c2VjX3BhcnNlID0gKGNvbnN0IHN0cnVjdCBmd19zZWNfcGFyc2luZyAqKWRhdGE7XG4gXG4gXHRhbGxvY19zaXplID0gc2l6ZW9mKCppbWctXHUwMDNlc2VjKSAqIChpbWctXHUwMDNlc2VjX2NvdW50ZXIgJiM0MzsgMSk7XG5AQCAtODA0LDYgJiM0Mzs4MDcsNyBAQCBzdGF0aWMgaW50IGl3bF9wYXJzZV90bHZfZmlybXdhcmUoc3RydWN0IGl3bF9kcnYgKmRydixcbiBcdHUzMiBidWlsZCwgcGFnaW5nX21lbV9zaXplO1xuIFx0aW50IG51bV9vZl9jcHVzO1xuIFx0Ym9vbCB1c25pZmZlcl9yZXEgPSBmYWxzZTtcbiYjNDM7XHRzaXplX3QgYWxpZ25lZF90bHZfbGVuO1xuIFxuIFx0aWYgKGxlbiBcdTAwM2Mgc2l6ZW9mKCp1Y29kZSkpIHtcbiBcdFx0SVdMX0VSUihkcnYsIFwmIzM0O3VDb2RlIGhhcyBpbnZhbGlkIGxlbmd0aDogJXpkXFxuXCYjMzQ7LCBsZW4pO1xuQEAgLTg1Miw4ICYjNDM7ODU2LDE2IEBAIHN0YXRpYyBpbnQgaXdsX3BhcnNlX3Rsdl9maXJtd2FyZShzdHJ1Y3QgaXdsX2RydiAqZHJ2LFxuIFx0XHRcdFx0bGVuLCB0bHZfbGVuKTtcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0fVxuLVx0XHRsZW4gLT0gQUxJR04odGx2X2xlbiwgNCk7XG4tXHRcdGRhdGEgJiM0Mzs9IHNpemVvZigqdGx2KSAmIzQzOyBBTElHTih0bHZfbGVuLCA0KTtcbiYjNDM7XG4mIzQzO1x0XHRhbGlnbmVkX3Rsdl9sZW4gPSBBTElHTih0bHZfbGVuLCA0KTtcbiYjNDM7XHRcdGlmIChsZW4gXHUwMDNjIGFsaWduZWRfdGx2X2xlbikge1xuJiM0MztcdFx0XHRJV0xfRVJSKGRydiwgXCYjMzQ7aW52YWxpZCBhbGlnbmVkIFRMViBsZW46ICV6ZC8lenVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0bGVuLCBhbGlnbmVkX3Rsdl9sZW4pO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRsZW4gLT0gYWxpZ25lZF90bHZfbGVuO1xuJiM0MztcdFx0ZGF0YSAmIzQzOz0gc2l6ZW9mKCp0bHYpICYjNDM7IGFsaWduZWRfdGx2X2xlbjtcbiBcbiBcdFx0c3dpdGNoICh0bHZfdHlwZSkge1xuIFx0XHRjYXNlIElXTF9VQ09ERV9UTFZfSU5TVDpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxOTo0OTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBmaXJtd2FyZSBwYXJzaW5nIGFuZCBBQ1BJL1VFRkkgdGFibGUgcGFyc2luZyBsb2dpYyBpbiB0aGUgSW50ZWwgV2lyZWxlc3MgV2lGaSAoaXdsd2lmaSkgZHJpdmVyLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gU2luY2Ugc3l6a2FsbGVyIGFuZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSBkbyBub3QgZW11bGF0ZSBJbnRlbCBXaS1GaSBQQ0kgaGFyZHdhcmUsIHRoZSBkcml2ZXIgd2lsbCBuZXZlciBwcm9iZS4gQ29uc2VxdWVudGx5LCB0aGUgZmlybXdhcmUgcmVxdWVzdCBhbmQgcGFyc2luZyBwYXRocyAoZS5nLiwgaXdsX3JlcV9md19jYWxsYmFjaywgaXdsX3BhcnNlX3Rsdl9maXJtd2FyZSkgYXJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1MjMwZjVmNmI3YzA1OGM5YzZmZmI1ODQ5NmY3MmU4Y2E1YzZlMzA5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMTcgMTk6NDk6NDQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jCmluZGV4IGJmMGY4NTFhOTA3NTU0Li40MzBhNzY0MmUwMWEzMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmMKQEAgLTg2NSw2ICYjNDM7ODY1LDExIEBAIGludCBpd2xfYWNwaV9nZXRfd2dkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpCiAJCQkJCQkgICAgICAgbWluX3NpemUsIG1heF9zaXplLAogCQkJCQkJICAgICAgICZhbXA7dGJsX3Jldik7CiAJCWlmICghSVNfRVJSKHdpZmlfcGtnKSkgewomIzQzOwkJCWlmICh0YmxfcmV2ICZsdDsgMCB8fAomIzQzOwkJCSAgICB0YmxfcmV2ICZndDs9IEJJVFNfUEVSX0JZVEUgKgomIzQzOwkJCSAgICBzaXplb2YocmV2X2RhdGFbaWR4XS5yZXZpc2lvbnMpKQomIzQzOwkJCQljb250aW51ZTsKJiM0MzsKIAkJCWlmICghKEJJVCh0YmxfcmV2KSAmYW1wOyByZXZfZGF0YVtpZHhdLnJldmlzaW9ucykpCiAJCQkJY29udGludWU7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMKaW5kZXggMmVmMGE3YTkyMGFkYjUuLjAxNGYyMmM0MmY0MWE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYwpAQCAtNzAwLDcgJiM0Mzs3MDAsNyBAQCBpbnQgaXdsX3VlZmlfZ2V0X3BwYWdfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KQogCXJldHVybiAtRUlOVkFMOwogCiBwYXJzZV90YWJsZToKLQlpZiAoIShCSVQoZGF0YS0mZ3Q7cmV2aXNpb24pICZhbXA7IHZhbGlkX3JldikpIHsKJiM0MzsJaWYgKGRhdGEtJmd0O3JldmlzaW9uICZndDs9IDMyIHx8ICEoQklUKGRhdGEtJmd0O3JldmlzaW9uKSAmYW1wOyB2YWxpZF9yZXYpKSB7CiAJCXJldCA9IC1FSU5WQUw7CiAJCUlXTF9ERUJVR19SQURJTyhmd3J0LAogCQkJCSYjMzQ7VW5zdXBwb3J0ZWQgVUVGSSBQUEFHIHJldmlzaW9uOiVkXG4mIzM0OywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuYwppbmRleCBkMDIxYjI0ZDA0ZDZiOS4uYjFhNTU5MDlmMGQ0YmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmMKQEAgLTQ3NSw2ICYjNDM7NDc1LDcgQEAgc3RhdGljIGludCBpd2xfZGJnX3Rsdl9wYXJzZV9iaW4oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLAogewogCWNvbnN0IHN0cnVjdCBpd2xfdWNvZGVfdGx2ICp0bHY7CiAJdTMyIHRsdl9sZW47CiYjNDM7CXNpemVfdCBhbGlnbmVkX3Rsdl9sZW47CiAKIAl3aGlsZSAobGVuICZndDs9IHNpemVvZigqdGx2KSkgewogCQlsZW4gLT0gc2l6ZW9mKCp0bHYpOwpAQCAtNDg3LDggJiM0Mzs0ODgsMTYgQEAgc3RhdGljIGludCBpd2xfZGJnX3Rsdl9wYXJzZV9iaW4oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLAogCQkJCWxlbiwgdGx2X2xlbik7CiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJfQotCQlsZW4gLT0gQUxJR04odGx2X2xlbiwgNCk7Ci0JCWRhdGEgJiM0Mzs9IHNpemVvZigqdGx2KSAmIzQzOyBBTElHTih0bHZfbGVuLCA0KTsKJiM0MzsKJiM0MzsJCWFsaWduZWRfdGx2X2xlbiA9IEFMSUdOKHRsdl9sZW4sIDQpOwomIzQzOwkJaWYgKGxlbiAmbHQ7IGFsaWduZWRfdGx2X2xlbikgewomIzQzOwkJCUlXTF9FUlIodHJhbnMsICYjMzQ7aW52YWxpZCBhbGlnbmVkIFRMViBsZW46ICV6ZC8lenVcbiYjMzQ7LAomIzQzOwkJCQlsZW4sIGFsaWduZWRfdGx2X2xlbik7CiYjNDM7CQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlsZW4gLT0gYWxpZ25lZF90bHZfbGVuOwomIzQzOwkJZGF0YSAmIzQzOz0gc2l6ZW9mKCp0bHYpICYjNDM7IGFsaWduZWRfdGx2X2xlbjsKIAogCQlpd2xfZGJnX3Rsdl9hbGxvYyh0cmFucywgdGx2LCB0cnVlKTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jCmluZGV4IDg0MjU4NmQ0ZmM1Y2U0Li43ZjE1MTVkZmM1YmY5ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMKQEAgLTQ5Miw3ICYjNDM7NDkyLDcgQEAgc3RhdGljIHZvaWQgc2V0X3NlY19vZmZzZXQoc3RydWN0IGl3bF9maXJtd2FyZV9waWVjZXMgKnBpZWNlcywKICAqIEdldHMgdUNvZGUgc2VjdGlvbiBmcm9tIHRsdi4KICAqLwogc3RhdGljIGludCBpd2xfc3RvcmVfdWNvZGVfc2VjKHN0cnVjdCBmd19pbWdfcGFyc2luZyAqaW1nLAotCQkJICAgICAgIGNvbnN0IHZvaWQgKmRhdGEsIGludCBzaXplKQomIzQzOwkJCSAgICAgICBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKIAlzdHJ1Y3QgZndfc2VjICpzZWM7CiAJY29uc3Qgc3RydWN0IGZ3X3NlY19wYXJzaW5nICpzZWNfcGFyc2U7CkBAIC01MDEsNiAmIzQzOzUwMSw5IEBAIHN0YXRpYyBpbnQgaXdsX3N0b3JlX3Vjb2RlX3NlYyhzdHJ1Y3QgZndfaW1nX3BhcnNpbmcgKmltZywKIAlpZiAoV0FSTl9PTighaW1nIHx8ICFkYXRhKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKJiM0MzsJaWYgKHNpemUgJmx0OyBzaXplb2Yoc2VjX3BhcnNlLSZndDtvZmZzZXQpKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJc2VjX3BhcnNlID0gKGNvbnN0IHN0cnVjdCBmd19zZWNfcGFyc2luZyAqKWRhdGE7CiAKIAlhbGxvY19zaXplID0gc2l6ZW9mKCppbWctJmd0O3NlYykgKiAoaW1nLSZndDtzZWNfY291bnRlciAmIzQzOyAxKTsKQEAgLTgwNCw2ICYjNDM7ODA3LDcgQEAgc3RhdGljIGludCBpd2xfcGFyc2VfdGx2X2Zpcm13YXJlKHN0cnVjdCBpd2xfZHJ2ICpkcnYsCiAJdTMyIGJ1aWxkLCBwYWdpbmdfbWVtX3NpemU7CiAJaW50IG51bV9vZl9jcHVzOwogCWJvb2wgdXNuaWZmZXJfcmVxID0gZmFsc2U7CiYjNDM7CXNpemVfdCBhbGlnbmVkX3Rsdl9sZW47CiAKIAlpZiAobGVuICZsdDsgc2l6ZW9mKCp1Y29kZSkpIHsKIAkJSVdMX0VSUihkcnYsICYjMzQ7dUNvZGUgaGFzIGludmFsaWQgbGVuZ3RoOiAlemRcbiYjMzQ7LCBsZW4pOwpAQCAtODUyLDggJiM0Mzs4NTYsMTYgQEAgc3RhdGljIGludCBpd2xfcGFyc2VfdGx2X2Zpcm13YXJlKHN0cnVjdCBpd2xfZHJ2ICpkcnYsCiAJCQkJbGVuLCB0bHZfbGVuKTsKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9Ci0JCWxlbiAtPSBBTElHTih0bHZfbGVuLCA0KTsKLQkJZGF0YSAmIzQzOz0gc2l6ZW9mKCp0bHYpICYjNDM7IEFMSUdOKHRsdl9sZW4sIDQpOwomIzQzOwomIzQzOwkJYWxpZ25lZF90bHZfbGVuID0gQUxJR04odGx2X2xlbiwgNCk7CiYjNDM7CQlpZiAobGVuICZsdDsgYWxpZ25lZF90bHZfbGVuKSB7CiYjNDM7CQkJSVdMX0VSUihkcnYsICYjMzQ7aW52YWxpZCBhbGlnbmVkIFRMViBsZW46ICV6ZC8lenVcbiYjMzQ7LAomIzQzOwkJCQlsZW4sIGFsaWduZWRfdGx2X2xlbik7CiYjNDM7CQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlsZW4gLT0gYWxpZ25lZF90bHZfbGVuOwomIzQzOwkJZGF0YSAmIzQzOz0gc2l6ZW9mKCp0bHYpICYjNDM7IGFsaWduZWRfdGx2X2xlbjsKIAogCQlzd2l0Y2ggKHRsdl90eXBlKSB7CiAJCWNhc2UgSVdMX1VDT0RFX1RMVl9JTlNUOgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxOTo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDAwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNzExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGl3bHdpZmkgRHJpdmVyIFBhdGNoZXMgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYGl3bHdpZmlgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBuZXcgYm91bmRzIGFuZCBhbGlnbm1lbnQgY2hlY2tzIHRoZXkmIzM5O3ZlIGFkZGVkLiBJdCYjMzk7cyBhY3Jvc3Mgc2V2ZXJhbCBmaWxlczogYGFjcGkuY2AsIGB1ZWZpLmNgLCBgaXdsLWRiZy10bHYuY2AsIGFuZCBgaXdsLWRydi5jYC4gVGhpcyBpcyBhbGwgYWJvdXQgZW5zdXJpbmcgZGF0YSBpbnRlZ3JpdHkgd2l0aGluIHRoZSBkcml2ZXIsIGdvb2Qgc3R1ZmYuIE15IG1haW4gY29uY2VybiwgdGhvdWdoLCBpcyB3aGV0aGVyIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGFjdHVhbGx5ICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgd2hpY2ggaXMgY3JpdGljYWwgZm9yIGZ1enppbmcgYW5kIHRlc3RpbmcuCgpGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlLiBgaXdsd2lmaWAgaXMgZm9yIEludGVsIFdpcmVsZXNzIFdpRmkgTmV4dCBHZW4gQUdOIGhhcmR3YXJlLiBUaGF0JiMzOTtzIHRoZSBjb3JlIHF1ZXN0aW9uIOKAkyBjYW4gd2UgdHJpZ2dlciB0aGVzZSBuZXcgY2hlY2tzIHdpdGhpbiBzb21ldGhpbmcgbGlrZSBHQ0Ugb3IgUUVNVT8gSSBrbm93IHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIG5hdGl2ZSBJbnRlbCBXaS1GaSBlbXVsYXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBnb2VzIHRvIGBtYWM4MDIxMV9od3NpbWAgYXMgYSBzb2Z0d2FyZSBzaW11bGF0b3IuLi4gYnV0IHRoYXQgd29uJiMzOTt0IHdvcmssIHJpZ2h0PyBJdCYjMzk7cyBzb2Z0d2FyZSwgbm90IHVzaW5nIGBpd2x3aWZpYC4KCkFscmlnaHQsIGhvdyBhYm91dCBVU0I/IFNvbWV0aW1lcyB0aG9zZSBkcml2ZXJzIHN1cHBvcnQgVVNCLiBJIG5lZWQgdG8gY2xhcmlmeSB0aGF0LiBCdXQgdGhlbiBJIHJlbWVtYmVyOiBtb3N0bHkgUENJZS4gU28gbGlrZWx5IG5vdCBVU0IuIEdvdHRhIGNoZWNrIHRvIGJlIHN1cmUsIHRob3VnaC4gVGhlbiB0aGVyZSYjMzk7cyBmaXJtd2FyZSBwYXJzaW5nLiBUaGlzIGlzIHBvdGVudGlhbGx5IGludGVyZXN0aW5nLiBJZiB0aGUgZHJpdmVyIHJlcXVlc3RzIGZpcm13YXJlLCBhbmQgc3l6a2FsbGVyIGNhbiBmZWVkIGl0IGZha2Ugb3IgZnV6emVkIGZpcm13YXJlIHRocm91Z2ggdGhlIGZpcm13YXJlIGxvYWRlciwgd2UgY291bGQgYmUgaW4gYnVzaW5lc3MuIFN5emthbGxlciAqY2FuKiBwcm92aWRlIGZha2UgZmlybXdhcmUhIE9rYXksIHRoYXQmIzM5O3MgYSBrZXkgcG9pbnQuCgpIb3dldmVyLCB0aGUgZHJpdmVyIG5lZWRzIHRvIGxvYWQgZmlyc3QsIHJpZ2h0PyBQQ0kgZHJpdmVycyB1c3VhbGx5IHByb2JlIGJhc2VkIG9uIFBDSSBJRHMuIFNvLCB3aXRob3V0IHRoZSByaWdodCBQQ0kgZGV2aWNlLCBpdCBtaWdodCBub3QgZXZlbiBsb2FkLiBCdXQgc3l6a2FsbGVyIGhhcyBgc3l6LXVzYmdlbmAgZm9yIFVTQiBhbmQgbWF5YmUsIGBzeXotcGNpZ2VuYD8gQ2FuIHN5emthbGxlciBlbXVsYXRlIFBDSSBkZXZpY2VzPyBOb3cgdGhhdCYjMzk7cyB0aGUgcmVhbCBxdWVzdGlvbi4gV2FpdCwgZG8gd2UgaGF2ZSBhbnkgUENJIGZ1enppbmcgc3VwcG9ydD8gTm90IGEgZ2VuZXJpYyBlbXVsYXRvciwgYnV0IG1heWJlIHRoZXJlJiMzOTtzIHNvbWUuLi4gYWgsIEkgdGhpbmsgdGhlcmUgaXMgbm93IQoKT2theSwgY2lyY2xpbmcgYmFjayB0byB0aGUgb3JpZ2luYWwgcHJvbXB0LCBpdCBzdHJlc3NlcyB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBJZiBgaXdsd2lmaWAgaXMgc3RyaWN0bHkgUENJLCBhbmQgd2UgKmRvbiYjMzk7dCogaGF2ZSBQQ0kgZW11bGF0aW9uLCB0aGVuIHdlIG1pZ2h0IGJlIHN0dWNrLiBTbywgdWx0aW1hdGVseSwgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzOiBjYW4gdGhlIGRyaXZlciBldmVuIGJlIHByb2JlZCBpbiB0aGVzZSBlbnZpcm9ubWVudHM/IEdvdHRhIGZpbmQgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaV9yZWdpc3Rlcl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTIxMDk9c3RhdGljIGludCBfX2luaXQgaXdsX2Rydl9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMjEyMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjIxMjE6XHRlcnIgPSBpd2xfcGNpX3JlZ2lzdGVyX2RyaXZlcigpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMjEyMi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaD0xMTQxPXN0YXRpYyBpbmxpbmUgdm9pZCBpd2xfdHJhbnNfbm90aWZ5X2Z3X2Vycm9yKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtMTE0OC0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oOjExNDk6aW50IF9fbXVzdF9jaGVjayBpd2xfcGNpX3JlZ2lzdGVyX2RyaXZlcih2b2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtMTE1MC12b2lkIGl3bF9wY2lfdW5yZWdpc3Rlcl9kcml2ZXIodm9pZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jPTEzMzg9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGl3bF9wY2lfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMzQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jOjEzNDc6aW50IF9fbXVzdF9jaGVjayBpd2xfcGNpX3JlZ2lzdGVyX2RyaXZlcih2b2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTEzNDgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTEzNDktXHRpbnQgcmV0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jOjEzNTA6XHRyZXQgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNml3bF9wY2lfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMzUxLVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxOTo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjIxCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUENJIERyaXZlciBGdXp6aW5nIExhbmRzY2FwZSoqCgpPa2F5LCBzbyB0aGlzIGlzIGEgUENJIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gc3l6a2FsbGVyIGV2ZW4gZnV6eiB0aGVzZSB0aGluZ3MgZWZmZWN0aXZlbHk/IEkga25vdyBzeXprYWxsZXIgaGFzIHNvbWUgS1ZNIHNldHVwIGNhbGxzIGxpa2UgYHN5el9rdm1fc2V0dXBfY3B1YCwgYnV0IGRvZXMgaXQgaGF2ZSBhIHdheSB0byBpbmplY3QgYXJiaXRyYXJ5IFBDSSBjb25maWd1cmF0aW9ucz8gSSBxdWlja2x5IHNjYW4gbXkgbWVudGFsIGRhdGFiYXNlLiBObywgd2FpdCwgdGhlcmUmIzM5O3Mgbm90IGEgYHN5el9wY2lfZGV2aWNlYCBjYWxsLCBvciBhbnl0aGluZyBzaW1pbGFyIGZvciBnZW5lcmFsIFBDSSBkZXZpY2UgaW5zdGFudGlhdGlvbi4gSSByZW1lbWJlciB0aGluZ3MgbGlrZSBgc3l6X21vdW50X2ltYWdlYCwgYnV0IHRoYXQmIzM5O3MgYSBkaWZmZXJlbnQgYXJlYS4KCkhvbGQgb24sIEkgcmVjYWxsIHRoYXQgc3l6a2FsbGVyICpkb2VzbiYjMzk7dCogaGF2ZSBhIGNvbXByZWhlbnNpdmUgUENJIGVtdWxhdG9yIHRvIHRyaWdnZXIgZ2VuZXJpYyBQQ0kgcHJvYmVzLiBVbmxlc3MsIG9mIGNvdXJzZSwgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyBQQ0kgZnV6emluZyBtb2R1bGUgdGhhdCBJJiMzOTttIGZvcmdldHRpbmcsIG9yIGl0JiMzOTtzIGxldmVyYWdpbmcgUUVNVSYjMzk7cyBQQ0kgZW11bGF0aW9uLiBCdXQgZXZlbiB0aGF0JiMzOTtzIGxpbWl0ZWQ7IFFFTVUgdHlwaWNhbGx5IGVtdWxhdGVzIHNwZWNpZmljIGRldmljZXMgbGlrZSBlMTAwMCBvciB2aXJ0aW8sIG5vdCBzb21ldGhpbmcgbGlrZSBpd2x3aWZpLiBEYW1uLCBJIHRob3VnaHQgSSBoYWQgYSBzb2x1dGlvbiBoZXJlLgoKV2FpdCwgaXMgdGhlcmUgdGhhdCBgQ09ORklHX1BDSV9FTkRQT0lOVF9URVNUYCBvcHRpb24gb3Igc29tZXRoaW5nIHNpbWlsYXI/IEkgc2hvdWxkIGNoZWNrIGludG8gdGhhdC4KCk5vdywgaWYgSSB0aGluayBhYm91dCBpdCwgd2hhdCBpZiB0aGUgZHJpdmVyICppcyogbG9hZGVkLCBidXQgdGhlIGBwcm9iZWAgZnVuY3Rpb24gaXMgbmV2ZXIgY2FsbGVkIGJlY2F1c2UgdGhlcmUmIzM5O3Mgbm8gYWN0dWFsIGhhcmR3YXJlIHRvIHRyaWdnZXIgaXQ/IFRoYXQgd291bGQgYmUgYSBtYWpvciBwcm9ibGVtLgoKSWYgYHByb2JlYCBuZXZlciBydW5zLCB0aGVuIG15IHRhcmdldCwgYGl3bF9wYXJzZV90bHZfZmlybXdhcmVgLCB3aWxsIGFsc28gbmV2ZXIgYmUgY2FsbGVkLiBTbywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgYGl3bF9wYXJzZV90bHZfZmlybXdhcmVgIGlzIGNhbGxlZCBmcm9tIGFueXdoZXJlIGVsc2UgaW4gdGhlIGNvZGUuIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBzZWUgaWYgaXQgY2FuIGJlIHJlYWNoZWQgaW4gYW5vdGhlciB3YXksIGFuZCB0aHVzIGZ1enplZCBpbiBhIGRpZmZlcmVudCBtYW5uZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3BhcnNlX3Rsdl9maXJtd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9NzMyPXN0YXRpYyB2b2lkIGl3bF9wYXJzZV9kYmdfdGx2X2Fzc2VydF90YWJsZXMoc3RydWN0IGl3bF9kcnYgKmRydixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy03OTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzo3OTI6c3RhdGljIGludCBpd2xfcGFyc2VfdGx2X2Zpcm13YXJlKHN0cnVjdCBpd2xfZHJ2ICpkcnYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy03OTMtXHRcdFx0XHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKnVjb2RlX3Jhdyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz0xNjQ0PXN0YXRpYyB2b2lkIGl3bF9yZXFfZndfY2FsbGJhY2soY29uc3Qgc3RydWN0IGZpcm13YXJlICp1Y29kZV9yYXcsIHZvaWQgKmNvbnRleHQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTY5My1cdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjE2OTQ6XHRcdGVyciA9IGl3bF9wYXJzZV90bHZfZmlybXdhcmUoZHJ2LCB1Y29kZV9yYXcsIHBpZWNlcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE2OTUtXHRcdFx0XHRcdCAgICAgXHUwMDI2ZnctXHUwMDNldWNvZGVfY2FwYSwgXHUwMDI2dXNuaWZmZXJfaW1hZ2VzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxOTo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjMwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGaXJtd2FyZSBMb2FkaW5nIFByb2Nlc3MqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgaXdsX3JlcV9md19jYWxsYmFja2AgZnVuY3Rpb24uIEZyb20gd2hhdCBJIHVuZGVyc3RhbmQsIHRoaXMgaXMgdGhlIGNhbGxiYWNrIHRoYXQgZ2V0cyB0cmlnZ2VyZWQgd2hlbiBmaXJtd2FyZSBpcyBzdWNjZXNzZnVsbHkgbG9hZGVkIGZvciBhbiBJbnRlbCB3aXJlbGVzcyBkZXZpY2UsIHJpZ2h0PyBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIEZpcm13YXJlIGxvYWRpbmcgaXMgYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBib290IHByb2Nlc3MgYW5kIGRyaXZlciBpbml0aWFsaXphdGlvbi4KCkJ1dCB3YWl0LCB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgKmNhbGxlZCogd2hlbiBmaXJtd2FyZSBpcyAqcmVxdWVzdGVkKi4gQW5kIGZpcm13YXJlIGlzIG9ubHkgcmVxdWVzdGVkIGR1cmluZyB0aGUgKnByb2JpbmcqIHN0YWdlIG9mIHRoZSBkZXZpY2UuIFNvLCB0aGUgcmVnaXN0cmF0aW9uIG9mIHRoaXMgYGl3bF9yZXFfZndfY2FsbGJhY2tgIGZ1bmN0aW9uIGlzIGNsZWFybHkgaW1wb3J0YW50IHRvIHRoZSBwcm9wZXIgb3BlcmF0aW9uIG9mIHRoZSBkcml2ZXIuCgpUaGVyZWZvcmUsIEkgbmVlZCB0byBmaWd1cmUgb3V0ICp3aGVyZSogdGhpcyBgaXdsX3JlcV9md19jYWxsYmFja2AgaXMgYmVpbmcgcmVnaXN0ZXJlZCBpbiB0aGUga2VybmVsIGNvZGUuIFVuZGVyc3RhbmRpbmcgaXRzIHJlZ2lzdHJhdGlvbiBsb2NhdGlvbiB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBmaXJtd2FyZSBsb2FkaW5nIGFyY2hpdGVjdHVyZSBhbmQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQgd2l0aGluIHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIExldCYjMzk7cyBzZWUgaWYgSSBjYW4gdHJhY2UgdGhhdCBkb3duLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3JlcV9md19jYWxsYmFjayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9MjkzPUlXTF9FWFBPUlRfU1lNQk9MKGl3bF9kcnZfZ2V0X2Z3bmFtZV9wcmUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMjk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6Mjk1OnN0YXRpYyB2b2lkIGl3bF9yZXFfZndfY2FsbGJhY2soY29uc3Qgc3RydWN0IGZpcm13YXJlICp1Y29kZV9yYXcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0yOTYtXHRcdFx0XHR2b2lkICpjb250ZXh0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz0zMjU9c3RhdGljIGludCBpd2xfcmVxdWVzdF9maXJtd2FyZShzdHJ1Y3QgaXdsX2RydiAqZHJ2LCBib29sIGZpcnN0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTM4NS1cdFx0XHRcdCAgICAgICBkcnYtXHUwMDNldHJhbnMtXHUwMDNlZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6Mzg2Olx0XHRcdFx0ICAgICAgIEdGUF9LRVJORUwsIGRydiwgaXdsX3JlcV9md19jYWxsYmFjayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0zODctfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTE2MjE9c3RhdGljIHZvaWQgX2l3bF9vcF9tb2RlX3N0b3Aoc3RydWN0IGl3bF9kcnYgKmRydilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xNjM4LS8qXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoxNjM5OiAqIGl3bF9yZXFfZndfY2FsbGJhY2sgLSBjYWxsYmFjayB3aGVuIGZpcm13YXJlIHdhcyBsb2FkZWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE2NDAtICpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xNjQzLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6MTY0NDpzdGF0aWMgdm9pZCBpd2xfcmVxX2Z3X2NhbGxiYWNrKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqdWNvZGVfcmF3LCB2b2lkICpjb250ZXh0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTY0NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtNDgtICogICAgKGl3bF9kcnZfc3RhcnQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaDo0OTogKiA2KSBpd2xfZHJ2X3N0YXJ0IGZldGNoZXMgdGhlIGZ3IEFTWU5DLCBpd2xfcmVxX2Z3X2NhbGxiYWNrXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaDo1MDogKiA3KSBpd2xfcmVxX2Z3X2NhbGxiYWNrIHBhcnNlcyB0aGUgZncgZmlsZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6NTE6ICogOCkgaXdsX3JlcV9md19jYWxsYmFjayBzdGFydHMgdGhlIHdpZmkgaW1wbGVtZW50YXRpb24gdG8gbWF0Y2hlcyB0aGUgZndcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTUyLSAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyNjIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRob3NlIHRob3VnaHRzIGZyb20gYSBmaXJzdC1wZXJzb24sIGV4cGVydCBwZXJzcGVjdGl2ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgSW50ZWwgV2lyZWxlc3MgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IG1pbmQgaXMgaW1tZWRpYXRlbHkgZHJhd24gdG8gdGhlIEludGVsIFdpcmVsZXNzIGRyaXZlciBzdGFydHVwIHNlcXVlbmNlLCBzcGVjaWZpY2FsbHkgYGl3bF9kcnZfc3RhcnRgLiAqVGhhdCogZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGZldGNoaW5nIHRoZSBmaXJtd2FyZSwgd2hpY2ggaXMgYSBjcnVjaWFsIGZpcnN0IHN0ZXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgaW5pdGlhdGlvbiBvY2N1cnMuIFNvLCB3aGVyZSBpbiB0aGUgY29kZSBpcyBgaXdsX2Rydl9zdGFydGAgYWN0dWFsbHkgKmNhbGxlZCo/IEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBncmFwaCB0byBzZWUgd2hhdCBldmVudHMgb3IgZnVuY3Rpb25zIHRyaWdnZXIgdGhpcyBjcml0aWNhbCBzdGVwLiBUaGF0IHdpbGwgaGVscCBtZSBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gZmxvdyBhbmQgaWRlbnRpZnkgcG90ZW50aWFsIGFyZWFzIGZvciBvcHRpbWl6YXRpb24sIG9yIHBlcmhhcHMgZXZlbiBkZWJ1Z2dpbmcgaWYgSSYjMzk7bSBsb29raW5nIGF0IGFuIGlzc3VlLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHN0YWNrIGFyb3VuZCBgaXdsX2Rydl9zdGFydGAgaXMgdml0YWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9kcnZfc3RhcnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTE2NDQ9c3RhdGljIHZvaWQgaXdsX3JlcV9md19jYWxsYmFjayhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKnVjb2RlX3Jhdywgdm9pZCAqY29udGV4dClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xOTU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6MTk2MDpzdHJ1Y3QgaXdsX2RydiAqaXdsX2Rydl9zdGFydChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE5NjEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTQ3LSAqIDUpIFRoZSBidXMgc3BlY2lmaWMgY29tcG9uZW50IGNhbGxzIHRvIHRoZSBkcnYgYnVzIGFnbm9zdGljIHBhcnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oOjQ4OiAqICAgIChpd2xfZHJ2X3N0YXJ0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6NDk6ICogNikgaXdsX2Rydl9zdGFydCBmZXRjaGVzIHRoZSBmdyBBU1lOQywgaXdsX3JlcV9md19jYWxsYmFja1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtNTAtICogNykgaXdsX3JlcV9md19jYWxsYmFjayBwYXJzZXMgdGhlIGZ3IGZpbGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaD01Nj1zdHJ1Y3QgaXdsX3JmX2NmZztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTU3LS8qKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6NTg6ICogaXdsX2Rydl9zdGFydCAtIHN0YXJ0IHRoZSBkcnZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTU5LSAqXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtNjctICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaDo2ODpzdHJ1Y3QgaXdsX2RydiAqaXdsX2Rydl9zdGFydChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC02OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM9NDIzMj1pbnQgaXdsX3BjaV9nZW4xXzJfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTQzNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM6NDM2ODpcdGl3bF90cmFucy1cdTAwM2VkcnYgPSBpd2xfZHJ2X3N0YXJ0KGl3bF90cmFucyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtNDM2OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODE5OAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDM5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBQQ0kgRnV6emluZyBEaWxlbW1hKioKCk9rYXksIHNvIGBpd2xfcGNpX2dlbjFfMl9wcm9iZWAgY2FsbHMgYGl3bF9kcnZfc3RhcnRgLiBSaWdodCwgdGhpcyBpcyBhIFBDSSBkcml2ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gSSBmdXp6IHRoaXMgd2l0aCBzeXprYWxsZXI/IFN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgKmdlbmVyaWMqIFBDSSBmdXp6ZXIgdGhhdCBjYW4gcHJvYmUgYW55IFBDSSBkZXZpY2UsIEkga25vdyB0aGF0IG11Y2guIEJ1dCB3YWl0Li4uIGRpZG4mIzM5O3QgdGhleSBhZGQgc29tZXRoaW5nIGZvciBQQ0kgYSB3aGlsZSBiYWNrPyBJIHNob3VsZCBjaGVjayBpZiB0aGVyZSYjMzk7cyAqYW55KiBQQ0kgZnV6emluZyBjYXBhYmlsaXR5LiBBaCwgYnV0IHRoZSBwcm9tcHQgZG9lcyBzYXkgc29tZXRoaW5nIGFib3V0IGNvZGUgcGF0aHMgYmVpbmcgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6YXRpb24sIGVzcGVjaWFsbHkgd2hlbiB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4KCk9rYXksIHNvIGRvZXMgc3l6a2FsbGVyICplbXVsYXRlKiBQQ0kgZGV2aWNlcz8gTm8sIHRoYXQmIzM5O3MgcmlnaHQuIEl0IHVzZXMgYGR1bW15X2hjZGAgKHVzYiBnYWRnZXQpIGZvciBVU0IuIEJ1dCBmb3IgUENJLCB0aGVyZSYjMzk7cyBubyBgZHVtbXlfcGNpYCBlcXVpdmFsZW50IGluIHRoZSBrZXJuZWwgdG8gYWxsb3cgaW5qZWN0aW5nIGFyYml0cmFyeSBQQ0kgZGV2aWNlcy4gCgpIYW5nIG9uLi4uIHdoYXQgYWJvdXQgYHZmaW9gIG9yIGBwY2lfZW5kcG9pbnRfdGVzdGA/IENvdWxkIHRob3NlIGJlIHVzZWZ1bCBoZXJlPyBMZXQmIzM5O3MgZ28gYmFjayBhbmQgZXhwbGljaXRseSBzZWFyY2ggZm9yIFBDSSBmdXp6aW5nIGluIHN5emthbGxlci4gRGlkIEkgY29uZnVzZSBpdCB3aXRoIGBzeXpfcGNpX2RldmljZWAgb3Igc29tZXRoaW5nPyBObywgdGhhdCYjMzk7cyBub3QgaXQsIHN5emthbGxlciAqZG9lcyogaGF2ZSB0aGluZ3MgbGlrZSBgc3l6X3VzYl9jb25uZWN0YCwgYHN5el91c2JfZGlzY29ubmVjdGAsIGBzeXpfdXNiX2NvbnRyb2xfaW9gLi4uIGJ1dCBub3RoaW5nIGRpcmVjdGx5IGVxdWl2YWxlbnQgZm9yIFBDSS4gCgpXYWl0LCB3YWl0Li4uIHdoYXQgYWJvdXQgYG1hYzgwMjExX2h3c2ltYD8gVGhhdCYjMzk7cyBhIHNvZnR3YXJlIHNpbXVsYXRvciBmb3IgV2ktRmksIGJ1dCBpdCYjMzk7cyBub3QgYWN0dWFsbHkgdGhlIGBpd2x3aWZpYCBkcml2ZXIsIGlzIGl0PyBDb3VsZCBJIHJlYWNoIHRoaXMgc3BlY2lmaWMgY29kZSwgYGl3bHdpZmlgPyBJIG5lZWQgdG8gY2hlY2sgaWYgYGl3bHdpZmlgIGl0c2VsZiBoYXMgYW55IHZpcnR1YWwgb3Igc2ltdWxhdGVkIG1vZGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxOTo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hYzgwMjExX2h3c2ltJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwNDAKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBNaXNzaW5nIExpbmsqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIHRocm91Z2ggdGhlIGBpd2x3aWZpYCBrZXJuZWwgbW9kdWxlIGFuZCBJJiMzOTttIG5vdCBzZWVpbmcgYW55IHJlZmVyZW5jZXMsIG5vdCBhIHNpbmdsZSBtZW50aW9uLCBvZiBgbWFjODAyMTFfaHdzaW1gLiBUaGF0JiMzOTtzLi4uIHVudXN1YWwuIEdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggd2lyZWxlc3MgZHJpdmVycywgZXNwZWNpYWxseSB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCwgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCBzb21lIGluZGljYXRpb24gb2YgaW50ZXJhY3Rpb24sIHBlcmhhcHMgYSBicmlkZ2luZyBwb2ludCwgaWYgdGhlcmUgd2FzIGEgdGVzdGluZyBvciBzaW11bGF0aW9uIGRyaXZlciB0aWVkIGluLgoKTXkgaW1tZWRpYXRlIGh5cG90aGVzaXMgaXMgdGhhdCB0aGVyZSBtaWdodCBiZSBhIGRlZGljYXRlZCB0ZXN0IG9yICYjMzQ7ZHVtbXkmIzM0OyBkcml2ZXIsIHBlcmhhcHMgb25lIHVzZWQgaW50ZXJuYWxseSB3aXRoaW4gYGl3bHdpZmlgLCBvciBwZXJoYXBzIGEgc2VwYXJhdGUgbW9kdWxlIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBzaW11bGF0ZSB0aGUgaGFyZHdhcmUgaW50ZXJhY3Rpb24gZm9yIHRlc3RpbmcgcHVycG9zZXMuIEl0JiMzOTtzIHRpbWUgdG8gYnJvYWRlbiB0aGUgc2VhcmNoLiBJIG5lZWQgdG8gcGl2b3QgYW5kIGV4cGxvcmUgdGhlIHN1cnJvdW5kaW5nIGNvZGUsIHRoZSBidWlsZCBpbmZyYXN0cnVjdHVyZSwgYW5kIGFueSBleGlzdGluZyBkb2N1bWVudGF0aW9uIGZvciBgaXdsd2lmaWAgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFuIGFsdGVybmF0aXZlIGFwcHJvYWNoIHRvIHRlc3Rpbmcgb3Igc2ltdWxhdGluZyBpdHMgaGFyZHdhcmUuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYWJvdXQgZmluZGluZyBgbWFjODAyMTFfaHdzaW1gIGRpcmVjdGx5OyBpdCYjMzk7cyBhYm91dCB1bmRlcnN0YW5kaW5nIGhvdyB0aGV5ICp3b3VsZCogdGVzdCB0aGlzIHRoaW5nIGlmIHRoZXkgKmRpZG4mIzM5O3QqIHVzZSBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHVtbXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWZoLmgtMzAtICogRHJpdmVyIG11c3QgYWxsb2NhdGUgYSA0S0J5dGUgYnVmZmVyIHRoYXQgaXMgZm9yIGtlZXBpbmcgdGhlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1maC5oOjMxOiAqIGhvc3QgRFJBTSBwb3dlcmVkIG9uICh2aWEgZHVtbXkgYWNjZXNzZXMgdG8gRFJBTSkgdG8gbWFpbnRhaW4gbG93LWxhdGVuY3lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWZoLmg6MzI6ICogRFJBTSBhY2Nlc3Mgd2hlbiBkb2luZyBUeGluZyBvciBSeGluZy4gIFRoZSBkdW1teSBhY2Nlc3NlcyBwcmV2ZW50IGhvc3RcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWZoLmgtMzMtICogZnJvbSBnb2luZyBpbnRvIGEgcG93ZXItc2F2aW5ncyBtb2RlIHRoYXQgd291bGQgY2F1c2UgaGlnaGVyIERSQU0gbGF0ZW5jeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1udm0tcGFyc2UuYz0xNzEyPWl3bF9wYXJzZV9udm1fbWNjX2luZm8oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtbnZtLXBhcnNlLmMtMTc1OS1cdCAqIHNpbmNlIGNmZzgwMjExIGRvZXNuJiMzOTt0IGFjY2VwdCBhbiBlbXB0eSByZWdkb21haW4sIHdlIG5lZWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLW52bS1wYXJzZS5jOjE3NjA6XHQgKiB0byBhbGxvY2F0ZSBzcGFjZSBmb3IgYXQgbGVhc3Qgb25lIHJ1bGUgdG8gYWRkIGEgZHVtbXlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLW52bS1wYXJzZS5jLTE3NjEtXHQgKiAodW51c2FibGUpIHJ1bGUgaW4gdGhpcyBjYXNlIHNvIHdlIGNhbiBpbml0LlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLW52bS1wYXJzZS5jLTE4MzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1udm0tcGFyc2UuYzoxODM3Olx0LyogSWYgbm8gdmFsaWQgcnVsZXMgd2VyZSBmb3VuZCwgYWRkIGEgZHVtbXkgcnVsZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtbnZtLXBhcnNlLmMtMTgzOC1cdGlmICghdmFsaWRfcnVsZXMpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jPTI0MDg9aXdsX21sZF9jaGFubmVsX3N3aXRjaChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jLTI0MTktXHRJV0xfREVCVUdfTUFDODAyMTEobWxkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYzoyNDIwOlx0XHRcdCAgIFwmIzM0O2R1bW15IGNoYW5uZWwgc3dpdGNoIG9wXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmMtMjQyMS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vY29leC5jPTE2PXN0YXRpYyBjb25zdCBfX2xlNjQgaXdsX2NpX21hc2tbXVszXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2NvZXguYzoxNzpcdC8qIGR1bW15IGVudHJ5IGZvciBjaGFubmVsIDAgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2NvZXguYy0xOC1cdHtjcHVfdG9fbGU2NCgwKSwgY3B1X3RvX2xlNjQoMCksIGNwdV90b19sZTY0KDApfSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jPTUzNzA9dm9pZCBpd2xfbXZtX2NoYW5uZWxfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmMtNTM3OS1cdElXTF9ERUJVR19NQUM4MDIxMShJV0xfTUFDODAyMTFfR0VUX01WTShodyksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jOjUzODA6XHRcdFx0ICAgXCYjMzQ7ZHVtbXkgY2hhbm5lbCBzd2l0Y2ggb3BcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYy01MzgxLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvY3R4dC1pbmZvLXYyLmM9MTAwPWludCBpd2xfcGNpZV9jdHh0X2luZm9fdjJfYWxsb2Moc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2N0eHQtaW5mby12Mi5jLTIwMS1cdCAqIFdlIGFsc28gdXNlIHRoZSBzZWNvbmQgaGFsZiBvZiB0aGlzIHBhZ2UgdG8gZ2l2ZSB0aGUgZGV2aWNlIHNvbWVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9jdHh0LWluZm8tdjIuYzoyMDI6XHQgKiBkdW1teSBUUi9DUiB0YWlsIHBvaW50ZXJzIC0gd2hpY2ggc2hvdWxkbiYjMzk7dCBiZSBuZWNlc3NhcnkgYXMgd2UgZG9uJiMzOTt0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvY3R4dC1pbmZvLXYyLmMtMjAzLVx0ICogdXNlIHRoaXMsIGJ1dCB0aGUgaGFyZHdhcmUgc3RpbGwgcmVhZHMvd3JpdGVzIHRoZXJlIGFuZCB3ZSBjYW4mIzM5O3QgbGV0XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jPTM4MDA9aXdsX3RyYW5zX3BjaWVfYWxsb2Moc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTM4NzgtXHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYzozODc5Olx0dHJhbnNfcGNpZS1cdTAwM2VuYXBpX2RldiA9IGFsbG9jX25ldGRldl9kdW1teShzaXplb2Yoc3RydWN0IGl3bF90cmFuc19wY2llICopKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0zODgwLVx0aWYgKCF0cmFuc19wY2llLVx1MDAzZW5hcGlfZGV2KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNzAzCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgaXdsd2lmaSBEcml2ZXIgYW5kIEZpcm13YXJlIFBhcnNpbmcqKgoKT2theSwgc28gdGhlcmUmIzM5O3Mgbm8gd2F5IHRvIHRyaWNrIHRoZSBzeXN0ZW0gaW50byB0aGlua2luZyB0aGVyZSYjMzk7cyBhbiBpd2x3aWZpIGNhcmQgcHJlc2VudCB3aGVuIHRoZXJlIGlzbiYjMzk7dCwgcmlnaHQ/IFdhaXQuLi4gaXMgdGhlcmUgYSB3YXkgdG8gZm9yY2UgdGhlIGRyaXZlciB0byBsb2FkIGFuZCwgY3J1Y2lhbGx5LCB0cmlnZ2VyIHRoYXQgZmlybXdhcmUgcGFyc2luZyBldmVuIHdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlPyBUaGF0JiMzOTtzIHRoZSByZWFsIHF1ZXN0aW9uLgoKSSByZW1lbWJlciB0aGUgZHJpdmVyIHJlZ2lzdGVycyBhcyBhIFBDSSBkcml2ZXIuIFRoZSBwcm9iZSBmdW5jdGlvbiBpcyBzb21ldGhpbmcgbGlrZSBgaXdsX3BjaV9nZW4xXzJfcHJvYmVgLiBOYXR1cmFsbHksIHdpdGhvdXQgdGhlIGhhcmR3YXJlLCB0aGF0IHByb2JlIGZ1bmN0aW9uICpuZXZlciogZ2V0cyBjYWxsZWQuIEFuZCBpZiB0aGF0JiMzOTtzIG5ldmVyIGNhbGxlZCwgYGl3bF9kcnZfc3RhcnRgIGlzIG5ldmVyIGNhbGxlZC4gV2hpY2ggbWVhbnMgZmlybXdhcmUgaXNuJiMzOTt0IHJlcXVlc3RlZC4gVGhlcmVmb3JlIGBpd2xfcmVxX2Z3X2NhbGxiYWNrYCBuZXZlciBoYXBwZW5zLiBDb25zZXF1ZW50bHkgYGl3bF9wYXJzZV90bHZfZmlybXdhcmVgIGlzIG5ldmVyIHJlYWNoZWQuCgpTbywgaW4gYSBwdXJlbHkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIHdpdGhvdXQgc3BlY2lmaWMgSW50ZWwgV2ktRmkgaGFyZHdhcmUsIG15IG1vZGlmaWVkIGNvZGUgaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZS4gVGhhdCYjMzk7cyBhIHNvbGlkIGNvbmNsdXNpb24uCgpIb3dldmVyLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4uLiBpcyB0aGVyZSAqYW55KiBvdGhlciBwb3NzaWJsZSBwYXRoIHRvIGBpd2xfcGFyc2VfdGx2X2Zpcm13YXJlYD8gSXQmIzM5O3MgdGltZSB0byBjaGVjayBpZiB0aGF0IGZ1bmN0aW9uIGlzIGV4cG9ydGVkLCBvciBpZiBpdCBpcyBjYWxsZWQgZnJvbSBhbnl3aGVyZSBlbHNlIGluIHRoZSBjb2RlIGJhc2UuIExldCYjMzk7cyBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IG90aGVyIGhvb2sgdGhhdCBjb3VsZCB0cmlnZ2VyIHRoaXMgcGFydCBvZiB0aGUgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3BhcnNlX3Rsdl9maXJtd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9NzMyPXN0YXRpYyB2b2lkIGl3bF9wYXJzZV9kYmdfdGx2X2Fzc2VydF90YWJsZXMoc3RydWN0IGl3bF9kcnYgKmRydixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy03OTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzo3OTI6c3RhdGljIGludCBpd2xfcGFyc2VfdGx2X2Zpcm13YXJlKHN0cnVjdCBpd2xfZHJ2ICpkcnYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy03OTMtXHRcdFx0XHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKnVjb2RlX3Jhdyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz0xNjQ0PXN0YXRpYyB2b2lkIGl3bF9yZXFfZndfY2FsbGJhY2soY29uc3Qgc3RydWN0IGZpcm13YXJlICp1Y29kZV9yYXcsIHZvaWQgKmNvbnRleHQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTY5My1cdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjE2OTQ6XHRcdGVyciA9IGl3bF9wYXJzZV90bHZfZmlybXdhcmUoZHJ2LCB1Y29kZV9yYXcsIHBpZWNlcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE2OTUtXHRcdFx0XHRcdCAgICAgXHUwMDI2ZnctXHUwMDNldWNvZGVfY2FwYSwgXHUwMDI2dXNuaWZmZXJfaW1hZ2VzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE2MTIKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyB0aGUgY29udGV4dCBpcyBteSBhcmVhIG9mIGV4cGVydGlzZToKCioqRmlybXdhcmUgTG9hZGluZyBJbnF1aXJ5KioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzLiBJIHNlZSB0aGF0IHRoaXMgYGl3bF9yZXFfZndfY2FsbGJhY2tgIGZ1bmN0aW9uIGlzIHRoZSBvbmx5IGNhbGxlciwgd2hpY2ggbWFrZXMgdGhlIGNvbnRyb2wgZmxvdyBhIGxvdCBzaW1wbGVyLCBidXQgSSBjYW4mIzM5O3Qgc2hha2UgdGhlIG5hZ2dpbmcgZmVlbGluZyB0aGF0IHRoZXJlJiMzOTtzIGFub3RoZXIgcG9pbnQgb2YgZW50cnkuIFNvbWV0aGluZyBsaWtlIGBpd2xfYWNwaV9nZXRfd2dkc190YWJsZWAga2VlcHMgcG9wcGluZyBpbnRvIG1pbmQsIGNvdWxkIHRoaXMgaW1wYWN0IHRoZSB3aG9sZSBmaXJtd2FyZSBsb2FkaW5nIGFzIHdlbGw/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9hY3BpX2dldF93Z2RzX3RhYmxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYz02Mzk9aW50IGl3bF9hY3BpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYy04MDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYzo4MDQ6aW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jLTgwNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg9MTgzPWludCBpd2xfYWNwaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmgtMTg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg6MTg1OmludCBpd2xfYWNwaV9nZXRfd2dkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmgtMTg2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oPTIzND1zdGF0aWMgaW5saW5lIGludCBpd2xfYWNwaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmgtMjM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg6MjM5OnN0YXRpYyBpbmxpbmUgaW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTI0MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMjc3CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipUcmFjaW5nIHRoZSBgaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGVgIENhbGwgU2l0ZSoqCgpBbHJpZ2h0LCBzbyB0aGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGJ1enppbmcgaW4gbXkgaGVhZCBpczogd2hlcmUgZXhhY3RseSBpcyB0aGlzIGBpd2xfYWNwaV9nZXRfd2dkc190YWJsZWAgZnVuY3Rpb24gYmVpbmcgaW52b2tlZD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuIEtub3dpbmcgdGhlIGNhbGwgc2l0ZXMgaXMgY3J1Y2lhbC4gSXMgaXQgcGFydCBvZiB0aGUgaW5pdGlhbCBkcml2ZXIgcHJvYmUsIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24/IE9yIG1heWJlIGl0JiMzOTtzIHRyaWdnZXJlZCBieSBzb21lIGxhdGVyIGV2ZW50LCBsaWtlIGEgcG93ZXIgbWFuYWdlbWVudCB0cmFuc2l0aW9uIG9yIGFuIEFDUEkgbm90aWZpY2F0aW9uPwoKSSYjMzk7bSB0aGlua2luZyBJJiMzOTtsbCBzdGFydCBieSBkb2luZyBhIHF1aWNrIGNvZGUgc2VhcmNoLCBsaWtlbHkgd2l0aCBgZ3JlcGAgb3Igc2ltaWxhciwgdG8gaWRlbnRpZnkgdGhlIHNvdXJjZSBmaWxlcyB0aGF0IHJlZmVyZW5jZSB0aGlzIGZ1bmN0aW9uLiBPbmNlIEkgaGF2ZSB0aGUgZmlsZSBsaXN0LCBJIGNhbiB0aGVuIGRvIGEgbW9yZSBpbi1kZXB0aCBhbmFseXNpcyBvZiB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBncmFzcCBpdHMgcHVycG9zZS4gTXkgcHJpbWFyeSBnb2FsIGhlcmUgaXMgdG8gZXN0YWJsaXNoIHRoZSBjb250cm9sIGZsb3cgYW5kIGRldGVybWluZSB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGlzIGZ1bmN0aW9uIGV4ZWN1dGVzLiBLbm93aW5nIHRoZSBjYWxsIGNoYWluIGlzIGtleSB0byBkZWJ1Z2dpbmcgb3IgbW9kaWZ5aW5nIGl0cyBiZWhhdmlvci4gSSBleHBlY3QgdG8gYmUgYWJsZSB0byBxdWlja2x5IGRldGVybWluZSBob3cgdG8gdHJhY2UgdGhlIGNhbGxzLCBieSB1c2luZyBhIGRlYnVnZ2VyIG9yIHNpbWlsYXIgdG9vbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9hY3BpX2dldF93Z2RzX3RhYmxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYz02Mzk9aW50IGl3bF9hY3BpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYy04MDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYzo4MDQ6aW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jLTgwNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg9MTgzPWludCBpd2xfYWNwaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmgtMTg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg6MTg1OmludCBpd2xfYWNwaV9nZXRfd2dkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmgtMTg2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oPTIzND1zdGF0aWMgaW5saW5lIGludCBpd2xfYWNwaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmgtMjM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg6MjM5OnN0YXRpYyBpbmxpbmUgaW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTI0MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMDQ2CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqQ2hlY2tpbmcgZm9yIFVuZXhwZWN0ZWQgQ2FsbHMqKgoKSG9sZCBvbiBhIHNlY29uZCwgYW0gSSByZWFkaW5nIHRoaXMgcmlnaHQ/IFRoaXMgc3BlY2lmaWMgdGhpbmcgaXNuJiMzOTt0IHJlZmVyZW5jZWQgKmFueXdoZXJlKiBlbHNlIGluIHRoZSBjb2RlYmFzZT8gVGhhdCBzZWVtcy4uLnVudXN1YWwuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYSBjcm9zcy1yZWZlcmVuY2Ugc29tZXdoZXJlLiBJdCYjMzk7cyBlYXN5IHRvIG92ZXJsb29rIHRoaW5ncyBpbiB0aGVzZSBsYXJnZSBkcml2ZXIgbW9kdWxlcy4KClJpZ2h0LCBsZXQgbWUgZG91YmxlLWNoZWNrLiBJJiMzOTttIGdvaW5nIHRvIHNjYW4gdGhlIGVudGlyZSBwcm9qZWN0IHRvIGNvbmZpcm0gd2hldGhlciB0aGlzIGNvZGUgcGF0aCBpcyBpbnZva2VkIG9yIHBlcmhhcHMgaGFzIGFuIGluZGlyZWN0IGRlcGVuZGVuY3kgdGhhdCBJJiMzOTttIG5vdCBpbW1lZGlhdGVseSBjb25zaWRlcmluZywgb3IgZXZlbiBpZiBpdCBpcyBjYWxsZWQgZnJvbSBvdXRzaWRlIHRoZSBgaXdsd2lmaWAgbW9kdWxlLiBOZWVkIHRvIGVuc3VyZSBubyBleHRlcm5hbCBjb21wb25lbnRzIGFyZSBpbnRlcmFjdGluZyB3aXRoIGl0IHVuZXhwZWN0ZWRseS4gSXQgd291bGQgYmUgYSBzaWduaWZpY2FudCBvdmVyc2lnaHQgaWYgc28uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9hY3BpX2dldF93Z2RzX3RhYmxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jPTYzOT1pbnQgaXdsX2FjcGlfZ2V0X2V3cmRfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jLTgwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jOjgwNDppbnQgaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmMtODA1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaD0xODM9aW50IGl3bF9hY3BpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaC0xODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaDoxODU6aW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaC0xODYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg9MjM0PXN0YXRpYyBpbmxpbmUgaW50IGl3bF9hY3BpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaC0yMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaDoyMzk6c3RhdGljIGlubGluZSBpbnQgaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmgtMjQwLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM3MjkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVidWdnaW5nIGEgU3VzcGVjdCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGZ1bmN0aW9uLCB3aGF0ZXZlciBpdCBpcywgaXMgYWN0dWFsbHkgKnVzZWQqLiBNeSBpbml0aWFsIGdyZXAgc2VhcmNoIGRpZG4mIzM5O3QgdHVybiB1cCBhbnkgZGlyZWN0IGNhbGxzIHRvIGl0IOKAkyB0aGF0JiMzOTtzIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBlZCBvdXQgYXQgbWUuIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7V2FpdCwgaXMgaXQgbm90IGJlaW5nIGNhbGxlZCAqYW55d2hlcmUqPyBUaGF0IGNhbiYjMzk7dCBiZSByaWdodCEmIzM0OwoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gYnJvYWRlbiBteSBzZWFyY2guIEl0IGNvdWxkIGJlIGNhbGxlZCBieSBhbm90aGVyIGZ1bmN0aW9uIG9yIG1hY3JvLCBzbyBhIHNpbXBsZSBncmVwIG1pZ2h0IG1pc3MgaXQuIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBJJiMzOTttIGdvaW5nIHRvIGNoZWNrIHRoZSBtb3JlIG9idmlvdXMgcGxhY2VzIHdoZXJlIHRoaXMga2luZCBvZiBmdW5jdGlvbiBtaWdodCBiZSB1c2VkLiBJIHNob3VsZCBzdGFydCB3aXRoIGBpd2xfYWNwaV9nZXRfd2dkc190YWJsZWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmNgIG9yIG90aGVyIHNpbWlsYXIgZmlsZXMgdG8gYmUgc3VyZS4KCkJ1dCBpZiB0aGVyZSBpcyBubyBjYWxscyB0byB0aGF0IGZ1bmN0aW9uLCB0aGVuIGl0IG5lZWRzIHRvIGJlIGtub3duIGhvdyBpdCBpcyB1c2VkLiBJJiMzOTttIHN0YXJ0aW5nIHRvIGNvbnNpZGVyIG90aGVyIHBvc3NpYmlsaXRpZXM7IGlzIGl0IGJlaW5nIGFjY2Vzc2VkIHZpYSBhIGZ1bmN0aW9uIHBvaW50ZXI/IElmIHRoYXQmIzM5O3MgdGhlIGNhc2UsIGEgZGlyZWN0IGdyZXAgb24gdGhlIGZ1bmN0aW9uIG5hbWUgd29uJiMzOTt0IHdvcmsuIFRoZSBmdW5jdGlvbiB3b3VsZCBiZSBjYWxsZWQgaW5kaXJlY3RseS4KCkFscmlnaHQsIHRpbWUgdG8gc2hpZnQgZ2VhcnMgYW5kIGNoZWNrIGZvciB0aGUgaW5kaXJlY3QgdXNlLiBJIHNob3VsZCBsb29rIGludG8gdGhlIHNvdXJjZSBmaWxlcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuY2AgYW5kIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jYCwgd2hlcmUgZnVuY3Rpb24gcG9pbnRlcnMgbWlnaHQgYmUgdXNlZC4gSG9wZWZ1bGx5LCB0aGlzIGFwcHJvYWNoIHdpbGwgcmV2ZWFsIGhvdyB0aGUgZnVuY3Rpb24gaXMgaW52b2tlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7d2dkcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmM9NjM5PWludCBpd2xfYWNwaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmMtODAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmM6ODA0OmludCBpd2xfYWNwaV9nZXRfd2dkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYy04MDUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oPTE4Mz1pbnQgaXdsX2FjcGlfZ2V0X2V3cmRfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTE4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oOjE4NTppbnQgaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTE4Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaD0yMzQ9c3RhdGljIGlubGluZSBpbnQgaXdsX2FjcGlfZ2V0X2V3cmRfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTIzOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oOjIzOTpzdGF0aWMgaW5saW5lIGludCBpd2xfYWNwaV9nZXRfd2dkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaC0yNDAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jPTM0PUlXTF9CSU9TX1RBQkxFX0xPQURFUihld3JkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jOjM1OklXTF9CSU9TX1RBQkxFX0xPQURFUih3Z2RzX3RhYmxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jLTM2LUlXTF9CSU9TX1RBQkxFX0xPQURFUihwcGFnX3RhYmxlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuaD0yMDc9aW50IGl3bF9iaW9zX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuaC0yMDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuaDoyMDk6aW50IGl3bF9iaW9zX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuaC0yMTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9NTM5PWludCBpd2xfdWVmaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NTkzOmludCBpd2xfdWVmaV9nZXRfd2dkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01OTQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NTk1Olx0c3RydWN0IHVlZmlfY252X3Zhcl93Z2RzICpkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTk2LVx0dW5zaWduZWQgbG9uZyBleHBlY3RlZF9zaXplO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oPTEzMD1zdHJ1Y3QgdWVmaV9jbnZfdmFyX2V3cmQge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE0NS0vKipcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjE0NjogKiBzdHJ1Y3QgdWVmaV9jbnZfdmFyX3dnZHMgLSBXR0RTIHRhYmxlIGFzIGRlZmluZWQgaW4gVUVGSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTQ3LSAqIEByZXZpc2lvbjogdGhlIHJldmlzaW9uIG9mIHRoZSB0YWJsZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE1NS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjE1NjpzdHJ1Y3QgdWVmaV9jbnZfdmFyX3dnZHMge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTU3LVx0dTggcmV2aXNpb247XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTY5LSNkZWZpbmUgVUVGSV9XR0RTX1RBQkxFX1NJWkVfUkVWM1x0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjE3MDpcdChvZmZzZXRvZihzdHJ1Y3QgdWVmaV9jbnZfdmFyX3dnZHMsIHZhbHMpICYjNDM7XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xNzEtXHQgVUVGSV9XR0RTX1BST0ZJTEVfU0laRV9SRVYzICogQklPU19HRU9fTUFYX1BST0ZJTEVfTlVNKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE3My0jZGVmaW5lIFVFRklfV0dEU19UQUJMRV9TSVpFX1JFVjRcdFx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxNzQ6XHQob2Zmc2V0b2Yoc3RydWN0IHVlZmlfY252X3Zhcl93Z2RzLCB2YWxzKSAmIzQzO1x0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTc1LVx0IFVFRklfV0dEU19QUk9GSUxFX1NJWkVfUkVWNCAqIEJJT1NfR0VPX01BWF9QUk9GSUxFX05VTSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaD0zMzQ9aW50IGl3bF91ZWZpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDozMzU6aW50IGl3bF91ZWZpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0zMzYtaW50IGl3bF91ZWZpX2dldF9wcGFnX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg9MzkxPXN0YXRpYyBpbmxpbmUgaW50IGl3bF91ZWZpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0zOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDozOTY6c3RhdGljIGlubGluZSBpbnQgaXdsX3VlZmlfZ2V0X3dnZHNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMzk3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9yZWd1bGF0b3J5LmM9MTY9dm9pZCBpd2xfbWxkX2dldF9iaW9zX3RhYmxlcyhzdHJ1Y3QgaXdsX21sZCAqbWxkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3JlZ3VsYXRvcnkuYy0zOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3JlZ3VsYXRvcnkuYzozOTpcdFx0aWYgKCFpd2xfYmlvc19nZXRfd2dkc190YWJsZShcdTAwMjZtbGQtXHUwMDNlZndydCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3JlZ3VsYXRvcnkuYy00MC1cdFx0XHQvKiBJZiBiYXNpYyBTQVIgaXMgbm90IGF2YWlsYWJsZSwgd2UgY2hlY2sgZm9yIFdHRFMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvcmVndWxhdG9yeS5jLTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvcmVndWxhdG9yeS5jOjU4Olx0XHRyZXQgPSBpd2xfYmlvc19nZXRfd2dkc190YWJsZShcdTAwMjZtbGQtXHUwMDNlZndydCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9yZWd1bGF0b3J5LmMtNTktXHRcdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvcmVndWxhdG9yeS5jPTcyPXN0YXRpYyBpbnQgaXdsX21sZF9nZW9fc2FyX2luaXQoc3RydWN0IGl3bF9tbGQgKm1sZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9yZWd1bGF0b3J5LmMtMTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvcmVndWxhdG9yeS5jOjEwNzpcdC8qIEl0IGlzIGEgdmFsaWQgc2NlbmFyaW8gdG8gbm90IHN1cHBvcnQgU0FSLCBvciBtaXNzIHdnZHMgdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9yZWd1bGF0b3J5LmMtMTA4LVx0ICogYnV0IGluIHRoYXQgY2FzZSB0aGVyZSBpcyBubyBuZWVkIHRvIHNlbmQgdGhlIGNvbW1hbmQuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYz05Nzc9c3RhdGljIGludCBpd2xfbXZtX3Nhcl9nZW9faW5pdChzdHJ1Y3QgaXdsX212bSAqbXZtKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmMtMTA0NC1cdC8qXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jOjEwNDU6XHQgKiBJdCBpcyBhIHZhbGlkIHNjZW5hcmlvIHRvIG5vdCBzdXBwb3J0IFNBUiwgb3IgbWlzcyB3Z2RzIHRhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYy0xMDQ2LVx0ICogYnV0IGluIHRoYXQgY2FzZSB0aGVyZSBpcyBubyBuZWVkIHRvIHNlbmQgdGhlIGNvbW1hbmQuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYz0xNTI5PXZvaWQgaXdsX212bV9nZXRfYmlvc190YWJsZXMoc3RydWN0IGl3bF9tdm0gKm12bSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jLTE1NTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jOjE1NTM6XHRcdGlmICghaXdsX2Jpb3NfZ2V0X3dnZHNfdGFibGUoXHUwMDI2bXZtLVx1MDAzZWZ3cnQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jLTE1NTQtXHRcdFx0Lypcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jLTE1NzMtXHRcdGlmIChpd2xfc2FyX2dlb19zdXBwb3J0KFx1MDAyNm12bS1cdTAwM2Vmd3J0KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYzoxNTc0Olx0XHRcdHJldCA9IGl3bF9iaW9zX2dldF93Z2RzX3RhYmxlKFx1MDAyNm12bS1cdTAwM2Vmd3J0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmMtMTU3NS1cdFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL252bS5jPTU5MT12b2lkIGl3bF9tdm1fcnhfY2h1Yl91cGRhdGVfbWNjKHN0cnVjdCBpd2xfbXZtICptdm0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbnZtLmMtNTk4LVx0c3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gKnJlZ2Q7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9udm0uYzo1OTk6XHRpbnQgd2dkc190YmxfaWR4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbnZtLmMtNjAwLVx0Ym9vbCBjaGFuZ2VkID0gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbnZtLmMtNjI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbnZtLmM6NjI5Olx0d2dkc190YmxfaWR4ID0gaXdsX212bV9nZXRfc2FyX2dlb19wcm9maWxlKG12bSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9udm0uYzo2MzA6XHRpZiAod2dkc190YmxfaWR4IFx1MDAzYyAxKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbnZtLmMtNjMxLVx0XHRJV0xfREVCVUdfSU5GTyhtdm0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9udm0uYy02MzItXHRcdFx0ICAgICAgIFwmIzM0O1NBUiBXR0RTIGlzIGRpc2FibGVkIG9yIGVycm9yIHJlY2VpdmVkICglZClcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9udm0uYzo2MzM6XHRcdFx0ICAgICAgIHdnZHNfdGJsX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9udm0uYy02MzQtXHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9udm0uYy02MzUtXHRcdElXTF9ERUJVR19JTkZPKG12bSwgXCYjMzQ7U0FSIFdHRFM6IGdlbyBwcm9maWxlICVkIGlzIGNvbmZpZ3VyZWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9udm0uYzo2MzY6XHRcdFx0ICAgICAgIHdnZHNfdGJsX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9udm0uYy02MzctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3Mzk0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQXR0YWNrIFN1cmZhY2Ugb2YgdGhlIGl3bHdpZmkgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBpd2xfYmlvc19nZXRfd2dkc190YWJsZWAgZnVuY3Rpb24sIGFuZCBpdCBzZWVtcyB0byBjYWxsIGVpdGhlciBgaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGVgIG9yIGBpd2xfdWVmaV9nZXRfd2dkc190YWJsZWAuIFJpZ2h0LCBhbmQgYGl3bF9tdm1fZ2V0X2Jpb3NfdGFibGVzYCBpcyBhbHNvIGluIHRoZSBtaXgsIGNhbGxlZCBmcm9tIGBpd2xfbXZtX21hY19zZXR1cF9yZWdpc3RlcmAgYW5kIHNpbWlsYXIgcGxhY2VzLiBUaGUgY29yZSBvZiB0aGlzIGlzIGFsbCBwYXJ0IG9mIHRoZSBpd2x3aWZpIGRyaXZlciwgd2hpY2ggaXMsIG9idmlvdXNseSwgYSBQQ0kgZHJpdmVyLiBUaGUgY3JpdGljYWwgcG9pbnQgaXM6IGlmIHRoZXJlIGlzbiYjMzk7dCByZWFsIGhhcmR3YXJlLCB0aGUgZHJpdmVyIGlzbiYjMzk7dCBnb2luZyB0byBwcm9iZSwgYW5kIG5vbmUgb2YgdGhpcyBjb2RlIHdpbGwgZXZlbiBiZSB0b3VjaGVkLgoKVGhlIG1pbGxpb24tZG9sbGFyIHF1ZXN0aW9uOiBDYW4gSSB0cmlnZ2VyIHRoaXMgc3R1ZmYgd2l0aCBzeXprYWxsZXI/IFN5emthbGxlciBkb2VzbiYjMzk7dCB0eXBpY2FsbHkgaGF2ZSBhIGdlbmVyYWwgUENJIGVtdWxhdG9yLCBidXQgSSBzZWVtIHRvIHJlY2FsbCBzb21ldGhpbmcgYWJvdXQgdGhhdCBjaGFuZ2luZyByZWNlbnRseS4gTGV0JiMzOTtzIGRvdWJsZS1jaGVjay4gRG9lcyBzeXprYWxsZXIgaGF2ZSBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXM/IE5vLCB3YWl0LCBpcyB0aGVyZSBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV9kZXZpY2VgPyBOb3BlLCBub3RoaW5nIGxpa2UgdGhhdC4KCkFscmlnaHQsIGxldCYjMzk7cyB0cnkgYSBkaWZmZXJlbnQgYXBwcm9hY2guIExldCYjMzk7cyBkZWx2ZSBpbnRvIHRoZSBrZXJuZWwgc291cmNlIGFuZCBzZWUgaWYgSSBjYW4gZmluZCBhIGhvb2ssIHNvbWUgYHBjaV9lbmRwb2ludF90ZXN0YCwgb3IgYHZmaW9gIGludGVyZmFjZSwgYW55dGhpbmcgdGhhdCB3b3VsZCBhbGxvdyBtZSB0byBpbmplY3QgYSBQQ0kgZGV2aWNlLiBIb2xkIG9uIGEgc2Vjb25kLCB3YXNuJiMzOTt0IHRoZXJlIHNvbWV0aGluZyBhYm91dCBgc3l6X2t2bV9zZXR1cF9jcHVgIGFuZCBgc3l6X3VzYl9jb25uZWN0YD8gQWgsIEkgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nLiBTeXprYWxsZXIgY2FuIGZ1enogUENJIGRldmljZXMgaWYgdGhleSBhcmUgc29tZWhvdyBleHBvc2VkLiBUaGUgcHJvYmxlbSBpcyB0aGF0IHRoZXkgdXN1YWxseSBhcmUgbm90IGV4cG9zZWQuCgpPa2F5LCBsZXQmIzM5O3MgZXhwbG9yZSBpZiBJIGNhbiB1c2UgdGhlIGBtYWM4MDIxMV9od3NpbWAgZHJpdmVyLCB0byBpbmRpcmVjdGx5IGZ1enogdGhlIGBpd2x3aWZpYCBkcml2ZXIuIE5vcGUsIHRoYXQmIzM5O3MgYSBkZWFkIGVuZC4gYG1hYzgwMjExX2h3c2ltYCBpcyBjb21wbGV0ZWx5IHNlcGFyYXRlLgoKRmluYWxseSwgSSYjMzk7bGwgY2hlY2sgaWYgdGhlIGBpd2x3aWZpYCBkcml2ZXIgaGFzIGFueSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBtaWdodCBlbmFibGUgc29tZSBraW5kIG9mIHRlc3QgbW9kZS4gTWF5YmUgdGhlcmUmIzM5O3MgYSBoaWRkZW4gZmxhZyBJIGNhbiBsZXZlcmFnZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElXTFdJRkkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjI6Y29uZmlnIElXTFdJRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBOZXh0IEdlbiBBR04gLSBXaXJlbGVzcy1OL0FkdmFuY2VkLU4vVWx0aW1hdGUtTiAoaXdsd2lmaSkgXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTQ3PWlmIElXTFdJRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy00OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo0OTpjb25maWcgSVdMV0lGSV9LVU5JVF9URVNUU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTUwLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NTg6Y29uZmlnIElXTFdJRklfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU5LVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz04ND1jb25maWcgSVdMTUxEXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk0LSMgZG9uJiMzOTt0IGNhbGwgaXQgX01PRFVMRSAtLSB3aWxsIGNvbmZ1c2UgS2NvbmZpZy9maXhkZXAvLi4uXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6OTU6Y29uZmlnIElXTFdJRklfT1BNT0RFX01PRFVMQVJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05Ni1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTA1PW1lbnUgXCYjMzQ7RGVidWdnaW5nIE9wdGlvbnNcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTA3OmNvbmZpZyBJV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA4LVx0Ym9vbCBcJiMzNDtFbmFibGUgZnVsbCBkZWJ1Z2dpbmcgb3V0cHV0IGluIHRoZSBpd2x3aWZpIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMxOmNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzItXHRib29sIFwmIzM0O2l3bHdpZmkgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzk6Y29uZmlnIElXTFdJRklfREVWSUNFX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNDAtXHRib29sIFwmIzM0O2l3bHdpZmkgZGV2aWNlIGFjY2VzcyB0cmFjaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4OTEzCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKktVbml0IFRlc3QgQ292ZXJhZ2UgQ2hlY2sqKgoKT2theSwgc28gSSBzZWUgYElXTFdJRklfS1VOSVRfVEVTVFNgIGxpc3RlZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7RG8gdGhlIEtVbml0IHRlc3RzIGFjdHVhbGx5ICpjb3ZlciogdGhlIGNoYW5nZXMgSSYjMzk7dmUgbWFkZT8mIzM0OyBJdCYjMzk7cyBub3QgZW5vdWdoIHRvICpoYXZlKiB0ZXN0czsgdGhleSBuZWVkIHRvIGJlIHJlbGV2YW50IHRvIHRoZSBtb2RpZmljYXRpb25zLiBUaGlzIGlzIGEgY3JpdGljYWwgc3RlcCBpbiBlbnN1cmluZyB0aGUgc3RhYmlsaXR5IGFuZCBjb3JyZWN0bmVzcyBvZiB0aGUgZHJpdmVyLCBzbyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhvc2UgdGVzdHMgYXJlIHByZXNlbnQgYW5kIGNvbXByZWhlbnNpdmUgZm9yIHRoZSBjb2RlIEkmIzM5O3ZlIHRvdWNoZWQuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCYjMzk7cyBiZWluZyB0ZXN0ZWQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX2FjcGlfZ2V0X3dnZHNfdGFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkxMzUKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgQXNzZXNzbWVudDogTm8gT2J2aW91cyBIaXRzKioKCkRhbW4sIG5vdGhpbmcmIzM5O3MgY29taW5nIHVwIGluIHRoZSB0ZXN0IHJlc3VsdHMuIFRoYXQmIzM5O3MgZnJ1c3RyYXRpbmcuIEkgd2FzIGhvcGluZyBmb3Igc29tZXRoaW5nIG1vcmUgZGlyZWN0LCBidXQgaXQgc2VlbXMgd2hhdGV2ZXIgSSYjMzk7bSBsb29raW5nIGZvciBpc24mIzM5O3QgaW1tZWRpYXRlbHkgYXBwYXJlbnQuIFRpbWUgdG8gZGlnIGRlZXBlciwgdGhlIHRyYWlsJiMzOTtzIGdvbmUgY29sZCBmb3Igbm93LgoKV2FpdCwgaG9sZCBvbiBhIG1pbnV0ZS4uLiBXaGF0IGFib3V0IGBpd2xfcGFyc2VfdGx2X2Zpcm13YXJlYD8gVGhhdCBmdW5jdGlvbiBuYW1lIGp1c3QgcG9wcGVkIGludG8gbXkgaGVhZCwgYW5kIGl0JiMzOTtzIG5hZ2dpbmcgYXQgbWUuIEl0IGRlYWxzIHdpdGggcGFyc2luZyBmaXJtd2FyZSBzdHJ1Y3R1cmVzLCB3aGljaCBpcyBjZXJ0YWlubHkgcmVsYXRlZCB0byB3aGF0IEkmIzM5O20gaW52ZXN0aWdhdGluZy4gSXQgbWlnaHQgYmUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGNoZWNrLCBldmVuIGlmIGl0IHNlZW1zIHRhbmdlbnRpYWwuIExldCYjMzk7cyBzZWUgaWYgdGhhdCBzcGFya3Mgc29tZXRoaW5nLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3BhcnNlX3Rsdl9maXJtd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvdGVzdHMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxOTo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTM4NQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgd2VudDoKCioqRXhhbWluaW5nIHRoZSBDb2RlYmFzZSoqCgpPa2F5LCBJJiMzOTttIGZhY2luZyBhIHNlYXJjaCB3aXRoIG5vIHJlc3VsdHMuIFRoYXQmIzM5O3MgYWx3YXlzIHRoZSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2h5LiBXaGF0IGNvdWxkIGJlIGEgdXNlZnVsIHN0YXJ0aW5nIHBvaW50PyBIbW0uLi4gTGV0JiMzOTtzIHRoaW5rIGFsb25nIHRoZSBsaW5lcyBvZiBhIGRlYnVnLWZvY3VzZWQgZnVuY3Rpb24gcmVsYXRlZCB0byBUTFYgcGFyc2luZyB3aXRoaW4gYW4gSW50ZWwgV2lyZWxlc3MgbW9kdWxlLiBJJiMzOTtsbCBzZWFyY2ggZm9yIGBpd2xfZGJnX3Rsdl9wYXJzZV9iaW5gLiBUaGF0IG1pZ2h0IGp1c3QgZ2V0IG1lIGNsb3Nlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfZGJnX3Rsdl9wYXJzZV9iaW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk1NzAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA1MDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5yZWFjaGFibGUgQ29kZSBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIG1vZGlmaWVkIGNvZGUgaW4gdGhlIGBpd2x3aWZpYCBkcml2ZXIsIHdoaWNoIGlzIGEgUENJIGRyaXZlci4gVGhlIHByb2JsZW0gaXMsIHdpdGhvdXQgYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlLCBpdCB3b24mIzM5O3QgcHJvYmUsIGFuZCB0aGUgY29kZSBJJiMzOTttIGludGVyZXN0ZWQgaW4gd2lsbCBuZXZlciBleGVjdXRlLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzLCAmIzM0O0lzIHRoZXJlICphbnkqIHdheSB0byBmb3JjZSBhIHByb2JlPyYjMzQ7IEkgaW1tZWRpYXRlbHkgY29uc2lkZXJlZCBgc3l6X3BjaV9kZXZpY2VgIGZyb20gc3l6a2FsbGVyLCBidXQgdGhhdCYjMzk7cyBhIGRlYWQgZW5kLiBTeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSB0aGF0IHByaW1pdGl2ZS4KClRoZW4sIEkgcmVtZW1iZXJlZCB0aGUgcmVjZW50IFBDSSBmdXp6aW5nIHdvcmsgaW4gc3l6a2FsbGVyIHVzaW5nIGB2ZmlvYCBvciBzaW1pbGFyIHRlY2hub2xvZ2llcy4gQnV0LCBubywgc3l6a2FsbGVyIHByaW1hcmlseSBsZXZlcmFnZXMgUUVNVSYjMzk7cyBQQ0kgZW11bGF0aW9uIGZvciBmdXp6aW5nLCBhbmQgUUVNVSwgaW4gaXRzIHdpc2RvbSwgZG9lc24mIzM5O3QgZW11bGF0ZSBJbnRlbCBXaS1GaSBjYXJkcyAodGhlIGBpd2x3aWZpYCBvbmVzKS4KClNvLCBJIGNoZWNrZWQgUUVNVSYjMzk7cyBzdXBwb3J0ZWQgZGV2aWNlcy4gSSByYXR0bGVkIG9mZiB0aGUgdXN1YWwgc3VzcGVjdHM6IGBlMTAwMGAsIGBydGw4MTM5YCwgYHBjbmV0YCwgeW91IGtub3cgdGhlIGRyaWxsLiBRRU1VIGhhbmRsZXMgYWxsIG9mIHRob3NlLiBIb3dldmVyLCBgaXdsd2lmaWAgd2FzbiYjMzk7dCBhbW9uZyB0aGVtLiBUaGlzIG1lYW5zIHRoZSBkcml2ZXIgd29uJiMzOTt0IHByb2JlIGluIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLiBQcmV0dHkgbXVjaCBhIG5vLWdvIGluIGFueSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4KCk5vdywgSSBuZWVkIHRvIGJlICphYnNvbHV0ZWx5KiBzdXJlLiBJcyB0aGVyZSAqYW55KiBvdGhlciBwYXRoIHRvIGBpd2xfYWNwaV9nZXRfd2dkc190YWJsZWA/IEkgdHJhY2VkIHRoZSBjYWxsIGdyYXBoLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgaXdsX2Jpb3NfZ2V0X3dnZHNfdGFibGVgLCB3aGljaCBpdHNlbGYgaXMgY2FsbGVkIGZyb20gYGl3bF9tdm1fZ2V0X2Jpb3NfdGFibGVzYCBhbmQgYGl3bF9tbGRfZ2V0X2Jpb3NfdGFibGVzYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBkdXJpbmcgdGhlIHNldHVwIG9mIHRoZSBNVk0gb3IgTUxEIG9wZXJhdGlvbiBtb2Rlcywgd2hpY2ggaGFwcGVucyAqYWZ0ZXIqIHRoZSBQQ0kgZGV2aWNlIGlzIHByb2JlZCBhbmQgdGhlIGZpcm13YXJlIGxvYWRzLiBTaW5jZSwgYWdhaW4sIHRoZXJlJiMzOTtzIG5vIFBDSSBkZXZpY2UsIG5vIHByb2JlLCBubyBkaWNlLgoKV2FpdCwgaXMgdGhlcmUgKmFueSogc29mdHdhcmUgZnJhbWV3b3JrIHRoYXQgbWlnaHQgbWFnaWNhbGx5IHByb2JlIHRoZSBkcml2ZXI/IEkgdGhvdWdodCBhYm91dCBgbWFjODAyMTFfaHdzaW1gLCB0aGUgc29mdHdhcmUgc2ltdWxhdG9yLCBidXQgdGhhdOKAmXMgbm90IHVzaW5nIGBpd2x3aWZpYC4gSXMgdGhlcmUgYSBzcGVjaWFsIGBpd2x3aWZpYCBzaW11bGF0b3I/IEkgdGhlbiBzdGFydGVkIHNlYXJjaGluZyB0aGUgZGlyZWN0b3J5IGluIHF1ZXN0aW9uIChgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaWApIGZvciBhbnkgY2x1ZSAoZS5nLiwgYGR1bW15YCwgYGh3c2ltYCkuIE5vdGhpbmcuIEkgZmlndXJlZCBpdCB3b3VsZCBiZSB3b3J0aCBjaGVja2luZyB0aGUgY29kZSBmb3IgYW55IGB0ZXN0YCBtb2R1bGUgdGhhdCBwcm9iZXMgdGhlIGRyaXZlciBpbiBhIGNvbnRyb2xsZWQgZW52aXJvbm1lbnQuIEkgZ290IG5vdGhpbmcuCgpTbywgaW4gY29uY2x1c2lvbiwgaXQgc2VlbXMgdGhlIGNvZGUgcGF0aCBJJiMzOTttIGludGVyZXN0ZWQgaW4gaXMgdW5yZWFjaGFibGUgaW4gYWxsIG9mIG15IHR5cGljYWwgdGVzdGluZyBlbnZpcm9ubWVudHMuIExvb2tzIGxpa2UgdGhpcyBzcGVjaWZpYyBhcmVhIHJlcXVpcmVzIHJlYWwgaGFyZHdhcmUgZm9yIGV4ZWN1dGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3BjaV9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtMzItICogVGhpcyBjb21wb25lbnQgaW1wbGVtZW50cyB0aGUgc3lzdGVtIGZsb3dzIHN1Y2ggYXMgYnVzIGVudW1lcmF0aW9uLCBidXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oOjMzOiAqIHJlbW92YWwuIEJ1cyBkZXBlbmRlbnQgcGFydHMgb2Ygc3lzdGVtIGZsb3dzIChzdWNoIGFzIGl3bF9wY2lfcHJvYmUpIGFyZSBpblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtMzQtICogYnVzIHNwZWNpZmljIGZpbGVzICh0cmFuc3BvcnQgZmlsZXMpLiBUaGlzIGlzIHRoZSBjb2RlIHRoYXQgaXMgY29tbW9uIGFtb25nXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jPTExNDc9RVhQT1JUX1NZTUJPTF9JRl9JV0xXSUZJX0tVTklUKGl3bF9wY2lfZmluZF9kZXZfaW5mbyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTE0OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYzoxMTQ5OnN0YXRpYyBpbnQgaXdsX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMTUwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM9MTMzOD1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaXdsX3BjaV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTEzNDAtXHQuaWRfdGFibGUgPSBpd2xfaHdfY2FyZF9pZHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM6MTM0MTpcdC5wcm9iZSA9IGl3bF9wY2lfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTM0Mi1cdC5yZW1vdmUgPSBpd2xfcGNpX3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExMzgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbml0aWFsIFByb2JlICZhbXA7IEJ1cyBFeHBsb3JhdGlvbioqCgpPa2F5LCBzbyBgaXdsX3BjaV9wcm9iZWAgaXMgZGVmaW5pdGVseSB0aGUgcHJvYmUgZnVuY3Rpb24gd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgaGVyZS4gVGhhdCBjb25maXJtcyB0aGUgUENJIGNvbnRleHQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBhcmUgd2UgKnNvbGVseSogZGVhbGluZyB3aXRoIFBDSSBoZXJlPyBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggaWYgdGhlcmUgYXJlIGFueSBvdGhlciBidXMgdmFyaWFudHMgZm9yIHRoaXMgaXdsd2lmaSBkcml2ZXIuIExldCBtZSBqdXN0IGRvdWJsZS1jaGVjayBpZiB0aGVyZSYjMzk7cyBhbiBTRElPIG9yIGEgVVNCIGltcGxlbWVudGF0aW9uIGtub2NraW5nIGFyb3VuZCBzb21ld2hlcmUuIEl0JiMzOTtzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCB0aGUgYnVzIGNvbnRleHQsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggcHJvYmUgZnVuY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxOTo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEzMzYgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oPTIwMD1pbnQgX19tdXN0X2NoZWNrIGl3bF9zY2FuX2luaXRpYXRlKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaC0yMDYtICogUExDUF9RVUlFVF9USFJFU0ggcGFja2V0cyBhcmUgaGVhcmQgb24gdGhpcyBjaGFubmVsIHdpdGhpblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmg6MjA3OiAqIEFDVElWRV9RVUlFVF9USU1FIGFmdGVyIHNlbmRpbmcgcHJvYmUgcmVxdWVzdC4gIFRoaXMgc2hvcnRlbnMgdGhlIGR3ZWxsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaDoyMDg6ICogdGltZSBpZiBpdCYjMzk7cyBhIHF1aWV0IGNoYW5uZWwgKG5vdGhpbmcgcmVzcG9uZGVkIHRvIG91ciBwcm9iZSwgYW5kIHRoZXJlJiMzOTtzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaC0yMDktICogbm8gb3RoZXIgdHJhZmZpYykuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaD0xMDY0PXN0cnVjdCBpd2xfcnhfbXBkdV9yZXNfc3RhcnQge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmgtMTEzOC0gKiAwOiBObyBUU0YgcmVxdWlyZWQgaW4gb3V0Z29pbmcgZnJhbWUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjExMzk6ICogU2V0IHRoaXMgZm9yIHRyYW5zbWl0dGluZyBiZWFjb25zIGFuZCBwcm9iZSByZXNwb25zZXMuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oLTExNDAtI2RlZmluZSBUWF9DTURfRkxHX1RTRl9NU0sgY3B1X3RvX2xlMzIoMSBcdTAwM2NcdTAwM2MgMTYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaD0yMTk5PXN0cnVjdCBpd2xfc2Nhbl9jaGFubmVsIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oLTIyMDMtXHQgKiAxOjIwIFNTSUQgZGlyZWN0IGJpdCBtYXA7IGlmIGEgYml0IGlzIHNldCwgdGhlbiBjb3JyZXNwb25kaW5nXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjIyMDQ6XHQgKiAgICAgU1NJRCBJRSBpcyB0cmFuc21pdHRlZCBpbiBwcm9iZSByZXF1ZXN0LlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaC0yMjA1LVx0ICogMjE6MzEgcmVzZXJ2ZWRcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oLTIyMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjIyMTU6Lyogc2V0IG51bWJlciBvZiBkaXJlY3QgcHJvYmVzIF9fbGUzMiB0eXBlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oLTIyMTYtI2RlZmluZSBJV0xfU0NBTl9QUk9CRV9NQVNLKG4pIFx0Y3B1X3RvX2xlMzIoKEJJVChuKSB8IChCSVQobikgLSBCSVQoMSkpKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oPTIyMjY9c3RydWN0IGl3bF9zc2lkX2llIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oLTIyNzUtICogYSBjaGFubmVsIGZvciBqdXN0IGEgc2hvcnQgdGltZSwgaWYgZG9pbmcgYWN0aXZlIHNjYW5uaW5nIGFuZCBnZXR0aW5nIG5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjIyNzY6ICogcmVzcG9uc2VzIHRvIHRoZSB0cmFuc21pdHRlZCBwcm9iZSByZXF1ZXN0LiAgVGhpcyB0aW1lIGlzIGNvbnRyb2xsZWQgYnlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmgtMjI3Ny0gKiBxdWlldF90aW1lLCBhbmQgdGhlIG51bWJlciBvZiByZWNlaXZlZCBwYWNrZXRzIGJlbG93IHdoaWNoIGEgY2hhbm5lbCBpc1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmgtMjI4My0gKiBwYWNrZXRzIGFyZSBjbGVhbmx5IHJlY2VpdmVkIG9uIHRoZSBjaGFubmVsIChjb250cm9sbGVkIGJ5IGdvb2RfQ1JDX3RoLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaDoyMjg0OiAqIHR5cGljYWwgdmFsdWUgMSksIHRoZSBzY2FuIGVuZ2luZSBzdGFydHMgdHJhbnNtaXR0aW5nIHByb2JlIHJlcXVlc3RzLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaC0yMjg1LSAqXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaD0yMjk4PXN0cnVjdCBpd2xfc2Nhbl9jbWQge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmgtMjMyNC1cdCAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjIzMjU6XHQgKiBTaXplIG9mIHByb2JlIHJlcXVlc3QgZnJhbWUgaXMgc3BlY2lmaWVkIGJ5IGJ5dGUgY291bnQgaW4gdHhfY21kLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaDoyMzI2Olx0ICogQ2hhbm5lbCBsaXN0IGZvbGxvd3MgaW1tZWRpYXRlbHkgYWZ0ZXIgcHJvYmUgcmVxdWVzdCBmcmFtZS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmgtMjMyNy1cdCAqIE51bWJlciBvZiBjaGFubmVscyBpbiBsaXN0IGlzIHNwZWNpZmllZCBieSBjaGFubmVsX2NvdW50LlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmg9MjM3OD1zdHJ1Y3QgaXdsX3NjYW5yZXN1bHRzX25vdGlmaWNhdGlvbiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaC0yMzgwLVx0dTggYmFuZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmg6MjM4MTpcdHU4IHByb2JlX3N0YXR1cztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmg6MjM4MjpcdHU4IG51bV9wcm9iZV9ub3Rfc2VudDsgLyogbm90IGVub3VnaCB0aW1lIHRvIHNlbmQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmgtMjM4My1cdF9fbGUzMiB0c2ZfbG93O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmg9MjYxNj1zdHJ1Y3Qgc3RhdGlzdGljc19kaXYge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmgtMjYxOS1cdF9fbGUzMiBleGVjX3RpbWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjI2MjA6XHRfX2xlMzIgcHJvYmVfdGltZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmgtMjYyMS1cdF9fbGUzMiByZXNlcnZlZDE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaD0zOTAyPXN0cnVjdCBpd2xfd2lwYW5fcDJwX2NoYW5uZWxfc3dpdGNoX2NtZCB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaC0zOTExLSAqIE5vQSBzY2hlZHVsZSBpdCBkZXRlcm1pbmVkIHNvIHdlIGNhbiBmb3J3YXJkIGl0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjM5MTI6ICogdG8gdXNlcnNwYWNlIGZvciBpbmNsdXNpb24gaW4gcHJvYmUgcmVzcG9uc2VzLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaC0zOTEzLSAqXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGVidWdmcy5jPTEyOTY9c3RhdGljIHNzaXplX3QgaXdsX2RiZ2ZzX3Vjb2RlX2dlbmVyYWxfc3RhdHNfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZWJ1Z2ZzLmMtMTM5Mi1cdHBvcyAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBwb3MsIGJ1ZnN6IC0gcG9zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGVidWdmcy5jOjEzOTM6XHRcdFx0IGZtdF90YWJsZSwgXCYjMzQ7cHJvYmVfdGltZTpcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZWJ1Z2ZzLmM6MTM5NDpcdFx0XHQgbGUzMl90b19jcHUoZGl2LVx1MDAzZXByb2JlX3RpbWUpLCBhY2N1bV9kaXYtXHUwMDNlcHJvYmVfdGltZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RlYnVnZnMuYzoxMzk1Olx0XHRcdCBkZWx0YV9kaXYtXHUwMDNlcHJvYmVfdGltZSwgbWF4X2Rpdi1cdTAwM2Vwcm9iZV90aW1lKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RlYnVnZnMuYy0xMzk2LVx0cG9zICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IHBvcywgYnVmc3ogLSBwb3MsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2aWNlcy5jPTI1MD1zdGF0aWMgY29uc3Qgc3RydWN0IGl3bF9kdm1fYnRfcGFyYW1zIGl3bDIwMzBfYnRfcGFyYW1zID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2aWNlcy5jOjI1MTpcdC8qIER1ZSB0byBibHVldG9vdGgsIHdlIHRyYW5zbWl0IDIuNCBHSHogcHJvYmVzIG9ubHkgb24gYW50ZW5uYSBBICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZXZpY2VzLmMtMjUyLVx0LmFkdmFuY2VkX2J0X2NvZXhpc3QgPSB0cnVlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RldmljZXMuYz02NTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBpd2xfZHZtX2J0X3BhcmFtcyBpd2w2MDAwX2J0X3BhcmFtcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RldmljZXMuYzo2NTU6XHQvKiBEdWUgdG8gYmx1ZXRvb3RoLCB3ZSB0cmFuc21pdCAyLjQgR0h6IHByb2JlcyBvbmx5IG9uIGFudGVubmEgQSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2aWNlcy5jLTY1Ni1cdC5hZHZhbmNlZF9idF9jb2V4aXN0ID0gdHJ1ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jPTc4PWludCBpd2xhZ25fbWFjX3NldHVwX3JlZ2lzdGVyKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jLTE3My1cdC8qIHdlIGNyZWF0ZSB0aGUgODAyLjExIGhlYWRlciBhbmQgYSBtYXgtbGVuZ3RoIFNTSUQgZWxlbWVudCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFjODAyMTEuYzoxNzQ6XHRody1cdTAwM2V3aXBoeS1cdTAwM2VtYXhfc2Nhbl9pZV9sZW4gPSBjYXBhLVx1MDAzZW1heF9wcm9iZV9sZW5ndGggLSAyNCAtIDM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFjODAyMTEuYy0xNzUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jPTEyMzM9c3RhdGljIHN0cnVjdCBpd2xfb3BfbW9kZSAqaXdsX29wX21vZGVfZHZtX3N0YXJ0KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYy0xNDk0LVx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM6MTQ5NTpcdCAqIFRoaXMgaXMgc3RpbGwgcGFydCBvZiBwcm9iZSgpIGluIGEgc2Vuc2UuLi5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYy0xNDk2LVx0ICpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtMTUtLyogRm9yIGFjdGl2ZSBzY2FuLCBsaXN0ZW4gQUNUSVZFX0RXRUxMX1RJTUUgKG1zZWMpIG9uIGVhY2ggY2hhbm5lbCBhZnRlclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjE2OiAqIHNlbmRpbmcgcHJvYmUgcmVxLiAgVGhpcyBzaG91bGQgYmUgc2V0IGxvbmcgZW5vdWdoIHRvIGhlYXIgcHJvYmUgcmVzcG9uc2VzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtMTctICogZnJvbSBtb3JlIHRoYW4gb25lIEFQLiAgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM9MjYyPXN0YXRpYyB2b2lkIGl3bF9yeF9zY2FuX3Jlc3VsdHNfbm90aWYoc3RydWN0IGl3bF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy0yNzAtXHRcdCAgICAgICBcJiMzNDslZCBbODAyLjExJXNdIFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjI3MTpcdFx0ICAgICAgIFwmIzM0O3Byb2JlIHN0YXR1czogJXU6JXUgXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtMjcyLVx0XHQgICAgICAgXCYjMzQ7KFRTRjogMHglMDhYOiUwOFgpIC0gJWQgXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTI3NS1cdFx0ICAgICAgIG5vdGlmLVx1MDAzZWJhbmQgPyBcJiMzNDtiZ1wmIzM0OyA6IFwmIzM0O2FcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6Mjc2Olx0XHQgICAgICAgbm90aWYtXHUwMDNlcHJvYmVfc3RhdHVzLCBub3RpZi1cdTAwM2VudW1fcHJvYmVfbm90X3NlbnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtMjc3LVx0XHQgICAgICAgbGUzMl90b19jcHUobm90aWYtXHUwMDNldHNmX2hpZ2gpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYz0zNDY9c3RhdGljIHUxNiBpd2xfZ2V0X2FjdGl2ZV9kd2VsbF90aW1lKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzozNDc6XHRcdFx0XHQgICAgIGVudW0gbmw4MDIxMV9iYW5kIGJhbmQsIHU4IG5fcHJvYmVzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTM0OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTM1MC1cdFx0cmV0dXJuIElXTF9BQ1RJVkVfRFdFTExfVElNRV81MiAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjM1MTpcdFx0XHRJV0xfQUNUSVZFX0RXRUxMX0ZBQ1RPUl81MkdIWiAqIChuX3Byb2JlcyAmIzQzOyAxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy0zNTItXHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtMzUzLVx0XHRyZXR1cm4gSVdMX0FDVElWRV9EV0VMTF9USU1FXzI0ICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6MzU0Olx0XHRcdElXTF9BQ1RJVkVfRFdFTExfRkFDVE9SXzI0R0haICogKG5fcHJvYmVzICYjNDM7IDEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTM1NS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jPTQ4OD1zdGF0aWMgaW50IGl3bF9nZXRfY2hhbm5lbHNfZm9yX3NjYW4oc3RydWN0IGl3bF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy00OTAtXHRcdFx0XHQgICAgIGVudW0gbmw4MDIxMV9iYW5kIGJhbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6NDkxOlx0XHRcdFx0ICAgICB1OCBpc19hY3RpdmUsIHU4IG5fcHJvYmVzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTQ5Mi1cdFx0XHRcdCAgICAgc3RydWN0IGl3bF9zY2FuX2NoYW5uZWwgKnNjYW5fY2gpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTUwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzo1MDU6XHRhY3RpdmVfZHdlbGwgPSBpd2xfZ2V0X2FjdGl2ZV9kd2VsbF90aW1lKHByaXYsIGJhbmQsIG5fcHJvYmVzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy01MDYtXHRwYXNzaXZlX2R3ZWxsID0gaXdsX2dldF9wYXNzaXZlX2R3ZWxsX3RpbWUocHJpdiwgYmFuZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTUyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzo1MjU6XHRcdGlmIChuX3Byb2JlcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzo1MjY6XHRcdFx0c2Nhbl9jaC1cdTAwM2V0eXBlIHw9IElXTF9TQ0FOX1BST0JFX01BU0sobl9wcm9iZXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTUyNy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNTU4LS8qXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6NTU5OiAqIGl3bF9maWxsX3Byb2JlX3JlcSAtIGZpbGwgaW4gYWxsIHJlcXVpcmVkIGZpZWxkcyBhbmQgSUUgZm9yIHByb2JlIHJlcXVlc3RcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy01NjAtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6NTYxOnN0YXRpYyB1MTYgaXdsX2ZpbGxfcHJvYmVfcmVxKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqZnJhbWUsIGNvbnN0IHU4ICp0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy01NjItXHRcdFx0ICAgICAgY29uc3QgdTggKmllcywgaW50IGllX2xlbiwgY29uc3QgdTggKnNzaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTU2Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzo1Njg6XHQvKiBNYWtlIHN1cmUgdGhlcmUgaXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgcHJvYmUgcmVxdWVzdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy01NjktXHQgKiB0d28gbWFuZGF0b3J5IElFcyBhbmQgdGhlIGRhdGEgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNTgyLVx0LyogLi4ubmV4dCBJRS4uLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjU4MzpcdHBvcyA9IFx1MDAyNmZyYW1lLVx1MDAzZXUucHJvYmVfcmVxLnZhcmlhYmxlWzBdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTU4NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM9NjA5PXN0YXRpYyBpbnQgaXdsYWduX3JlcXVlc3Rfc2NhbihzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTYyMC1cdGVudW0gbmw4MDIxMV9iYW5kIGJhbmQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6NjIxOlx0dTggbl9wcm9iZXMgPSAwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTYyMi1cdHU4IHJ4X2FudCA9IHByaXYtXHUwMDNlbnZtX2RhdGEtXHUwMDNldmFsaWRfcnhfYW50O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy02MzAtXHRcdFx0ICAgIE1BWF9TQ0FOX0NIQU5ORUwgKiBzaXplb2Yoc3RydWN0IGl3bF9zY2FuX2NoYW5uZWwpICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6NjMxOlx0XHRcdCAgICBwcml2LVx1MDAzZWZ3LVx1MDAzZXVjb2RlX2NhcGEubWF4X3Byb2JlX2xlbmd0aDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy02MzItXHRjb25zdCB1OCAqc3NpZCA9IE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTcwOS1cdFx0XHQgKiBUaGUgaGlnaGVzdCBwcmlvcml0eSBTU0lEIGlzIGluc2VydGVkIHRvIHRoZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjcxMDpcdFx0XHQgKiBwcm9iZSByZXF1ZXN0IHRlbXBsYXRlLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTcxMS1cdFx0XHQgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNzI1LVx0XHRcdFx0ICAgICAgIHByaXYtXHUwMDNlc2Nhbl9yZXF1ZXN0LVx1MDAzZXNzaWRzW2ldLnNzaWRfbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzo3MjY6XHRcdFx0XHRuX3Byb2JlcyYjNDM7JiM0Mzs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNzI3LVx0XHRcdFx0cCYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTc3Ni1cdCAqIG9uIGEgcmFkYXIgY2hhbm5lbCBldmVuIHRob3VnaCB0aGlzIG1lYW5zIHRoYXQgd2Ugc2hvdWxkIE5PVFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjc3NzpcdCAqIHNlbmQgcHJvYmVzLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTc3OC1cdCAqXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTc4MC1cdCAqIG5lZWQgdG8gcmVjZWl2ZSBkdXJpbmcgb3VyIGR3ZWxsIHRpbWUgb24gYSBjaGFubmVsIGJlZm9yZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjc4MTpcdCAqIHNlbmRpbmcgb3V0IHByb2JlcyAtLSBzZXR0aW5nIHRoaXMgdG8gYSBodWdlIHZhbHVlIHdpbGxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy03ODItXHQgKiBtZWFuIHdlIG5ldmVyIHJlYWNoIGl0LCBidXQgYXQgdGhlIHNhbWUgdGltZSB3b3JrIGFyb3VuZFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy04MDEtXHQgICAgcHJpdi1cdTAwM2VsaWItXHUwMDNlYnRfcGFyYW1zLVx1MDAzZWFkdmFuY2VkX2J0X2NvZXhpc3QpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzo4MDI6XHRcdC8qIHRyYW5zbWl0IDIuNCBHSHogcHJvYmVzIG9ubHkgb24gZmlyc3QgYW50ZW5uYSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTgwMy1cdFx0c2Nhbl90eF9hbnRlbm5hcyA9IGZpcnN0X2FudGVubmEoc2Nhbl90eF9hbnRlbm5hcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTg0NC1cdGNhc2UgSVdMX1NDQU5fTk9STUFMOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjg0NTpcdFx0Y21kX2xlbiA9IGl3bF9maWxsX3Byb2JlX3JlcShcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy04NDYtXHRcdFx0XHRcdChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilzY2FuLVx1MDAzZWRhdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTg1NC1cdFx0LyogdXNlIGJjYXN0IGFkZHIsIHdpbGwgbm90IGJlIHRyYW5zbWl0dGVkIGJ1dCBtdXN0IGJlIHZhbGlkICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6ODU1Olx0XHRjbWRfbGVuID0gaXdsX2ZpbGxfcHJvYmVfcmVxKFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTg1Ni1cdFx0XHRcdFx0KHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNjYW4tXHUwMDNlZGF0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtODc3LVx0XHRcdGl3bF9nZXRfY2hhbm5lbHNfZm9yX3NjYW4ocHJpdiwgdmlmLCBiYW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjg3ODpcdFx0XHRcdGlzX2FjdGl2ZSwgbl9wcm9iZXMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtODc5LVx0XHRcdFx0KHZvaWQgKilcdTAwMjZzY2FuLVx1MDAzZWRhdGFbY21kX2xlbl0pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmM9NDM9c3RhdGljIHZvaWQgaXdsYWduX3R4X2NtZF9idWlsZF9iYXNpYyhzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy01OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmM6NTk6XHRpZiAoaWVlZTgwMjExX2lzX3Byb2JlX3Jlc3AoZmMpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy02MC1cdFx0dHhfZmxhZ3MgfD0gVFhfQ01EX0ZMR19UU0ZfTVNLO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmM9MTA1PXN0YXRpYyB2b2lkIGl3bGFnbl90eF9jbWRfYnVpbGRfcmF0ZShzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy0xMjQtXHRcdC8qIFNldCByZXRyeSBsaW1pdCBvbiBEQVRBIHBhY2tldHMgYW5kIFByb2JlIFJlc3BvbnNlcyovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jOjEyNTpcdFx0aWYgKGllZWU4MDIxMV9pc19wcm9iZV9yZXNwKGZjKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy0xMjYtXHRcdFx0ZGF0YV9yZXRyeV9saW1pdCA9IElXTEFHTl9NR01UX0RGQVVMVF9SRVRSWV9MSU1JVDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jPTI2MD1pbnQgaXdsYWduX3R4X3NrYihzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy0yOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jOjI5NjpcdGlmICh1bmxpa2VseShpZWVlODAyMTFfaXNfcHJvYmVfcmVzcChmYykpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jLTI5Ny1cdFx0c3RydWN0IGl3bF93aXBhbl9ub2FfZGF0YSAqbm9hX2RhdGEgPVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaD0xNj1lbnVtIGl3bF9tYWNfY29uZl9zdWJjbWRfaWRzIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9tYWMtY2ZnLmgtMTE3LVx0LyoqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9tYWMtY2ZnLmg6MTE4Olx0ICogQFBST0JFX1JFU1BPTlNFX0RBVEFfTk9USUY6IFx1MDAyNnN0cnVjdCBpd2xfcHJvYmVfcmVzcF9kYXRhX25vdGlmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9tYWMtY2ZnLmgtMTE5LVx0ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oLTEzNS0vKipcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaDoxMzY6ICogc3RydWN0IGl3bF9wMnBfbm9hX2F0dHIgLSBOT0EgYXR0ciBjb250YWluZWQgaW4gcHJvYmUgcmVzcCBGVyBub3RpZmljYXRpb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC0xMzctICpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9tYWMtY2ZnLmg9MTQ2PXN0cnVjdCBpd2xfcDJwX25vYV9hdHRyIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9tYWMtY2ZnLmgtMTU4LS8qKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oOjE1OTogKiBzdHJ1Y3QgaXdsX3Byb2JlX3Jlc3BfZGF0YV9ub3RpZiAtIG5vdGlmaWNhdGlvbiB3aXRoIE5PQSBhbmQgQ1NBIGNvdW50ZXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC0xNjAtICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaDoxNjE6ICogQG1hY19pZDogdGhlIG1hYyB3aGljaCBzaG91bGQgc2VuZCB0aGUgcHJvYmUgcmVzcG9uc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC0xNjItICogQG5vYV9hY3RpdmU6IG5vdGlmaWVzIGlmIHRoZSBub2EgYXR0cmlidXRlIHNob3VsZCBiZSBoYW5kbGVkXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oLTE2Ni0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaDoxNjc6c3RydWN0IGl3bF9wcm9iZV9yZXNwX2RhdGFfbm90aWYge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oLTE2OC1cdF9fbGUzMiBtYWNfaWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oPTMyMT1zdHJ1Y3QgaXdsX21hY19wMnBfZGV2X2RhdGEge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC0zMzItICogQE1BQ19DRkdfRklMVEVSX0FDQ0VQVF9CRUFDT046IGFjY2VwdCBiZWFjb24gZnJhbWVzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9tYWMtY2ZnLmg6MzMzOiAqIEBNQUNfQ0ZHX0ZJTFRFUl9BQ0NFUFRfQkNBU1RfUFJPQkVfUkVTUDogYWNjZXB0IGJyb2FkY2FzdCBwcm9iZSByZXNwb25zZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oOjMzNDogKiBATUFDX0NGR19GSUxURVJfQUNDRVBUX1BST0JFX1JFUTogYWNjZXB0IHByb2JlIHJlcXVlc3RzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9tYWMtY2ZnLmgtMzM1LSAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaD02ODI9c3RydWN0IGl3bF9saW5rX2NvbmZpZ19jbWQge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC03NDQtICogQFNUQVRJT05fVFlQRV9CQ0FTVF9NR01UOiBUaGUgc3RhdGlvbiB1c2VkIHRvIHNlbmQgYmVhY29ucyBhbmRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaDo3NDU6ICpcdHByb2JlIHJlc3BvbnNlcy4gQWxzbyB1c2VkIGZvciB0cmFmZmljIGluamVjdGlvbiBpbiBzbmlmZmVyIG1vZGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC03NDYtICogQFNUQVRJT05fVFlQRV9NQ0FTVDogdGhlIHN0YXRpb24gdXNlZCBmb3IgQkNBU1QgLyBNQ0FTVCBpbiBHTy4gV2lsbCBiZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy5oPTIxOT1zdHJ1Y3QgaXdsX21hY19kYXRhX3AycF9kZXYge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy5oLTIzNC0gKiBATUFDX0ZJTFRFUl9JTl9DUkMzMjogZXh0cmFjdCBGQ1MgYW5kIGFwcGVuZCBpdCB0byBmcmFtZXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy5oOjIzNTogKiBATUFDX0ZJTFRFUl9JTl9QUk9CRV9SRVFVRVNUOiBwYXNzIHByb2JlIHJlcXVlc3RzIHRvIGhvc3RcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy5oLTIzNi0gKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg9MjIzPXN0cnVjdCBpd2xfc2Nhbl9jaGFubmVsX2NmZ19sbWFjIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMjMwLS8qKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjIzMTogKiBzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfc2VnbWVudCAtIFBST0JFX1NFR01FTlRfQVBJX1NfVkVSXzFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0yMzItICogQG9mZnNldDogb2Zmc2V0IGluIHRoZSBkYXRhIGJsb2NrXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTIzNC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoyMzU6c3RydWN0IGl3bF9zY2FuX3Byb2JlX3NlZ21lbnQge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTIzNi1cdF9fbGUxNiBvZmZzZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTI0MC0vKipcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoyNDE6ICogc3RydWN0IGl3bF9zY2FuX3Byb2JlX3JlcV92MSAtIFBST0JFX1JFUVVFU1RfRlJBTUVfQVBJX1NfVkVSXzJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoyNDI6ICogQG1hY19oZWFkZXI6IGZpcnN0IChhbmQgY29tbW9uKSBwYXJ0IG9mIHRoZSBwcm9iZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTI0My0gKiBAYmFuZF9kYXRhOiBiYW5kIHNwZWNpZmljIGRhdGFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoyNDQ6ICogQGNvbW1vbl9kYXRhOiBsYXN0IChhbmQgY29tbW9uKSBwYXJ0IG9mIHRoZSBwcm9iZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTI0NS0gKiBAYnVmOiByYXcgZGF0YSBibG9ja1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTI0Ni0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoyNDc6c3RydWN0IGl3bF9zY2FuX3Byb2JlX3JlcV92MSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MjQ4Olx0c3RydWN0IGl3bF9zY2FuX3Byb2JlX3NlZ21lbnQgbWFjX2hlYWRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoyNDk6XHRzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfc2VnbWVudCBiYW5kX2RhdGFbU0NBTl9OVU1fQkFORF9QUk9CRV9EQVRBX1ZfMV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MjUwOlx0c3RydWN0IGl3bF9zY2FuX3Byb2JlX3NlZ21lbnQgY29tbW9uX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMjUxLVx0dTggYnVmW1NDQU5fT0ZGTE9BRF9QUk9CRV9SRVFfU0laRV07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTI1NC0vKipcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoyNTU6ICogc3RydWN0IGl3bF9zY2FuX3Byb2JlX3JlcSAtIFBST0JFX1JFUVVFU1RfRlJBTUVfQVBJX1NfVkVSX3YyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MjU2OiAqIEBtYWNfaGVhZGVyOiBmaXJzdCAoYW5kIGNvbW1vbikgcGFydCBvZiB0aGUgcHJvYmVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0yNTctICogQGJhbmRfZGF0YTogYmFuZCBzcGVjaWZpYyBkYXRhXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MjU4OiAqIEBjb21tb25fZGF0YTogbGFzdCAoYW5kIGNvbW1vbikgcGFydCBvZiB0aGUgcHJvYmVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0yNTktICogQGJ1ZjogcmF3IGRhdGEgYmxvY2tcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0yNjAtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MjYxOnN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9yZXEge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjI2MjpcdHN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9zZWdtZW50IG1hY19oZWFkZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MjYzOlx0c3RydWN0IGl3bF9zY2FuX3Byb2JlX3NlZ21lbnQgYmFuZF9kYXRhW1NDQU5fTlVNX0JBTkRfUFJPQkVfREFUQV9WXzJdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjI2NDpcdHN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9zZWdtZW50IGNvbW1vbl9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTI2NS1cdHU4IGJ1ZltTQ0FOX09GRkxPQURfUFJPQkVfUkVRX1NJWkVdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD0yODY9c3RydWN0IGl3bF9zY2FuX2NoYW5uZWxfb3B0IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMjkyLSAqIGVudW0gaXdsX212bV9sbWFjX3NjYW5fZmxhZ3MgLSBMTUFDIHNjYW4gZmxhZ3NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoyOTM6ICogQElXTF9NVk1fTE1BQ19TQ0FOX0ZMQUdfUEFTU19BTEw6IHBhc3MgYWxsIGJlYWNvbnMgYW5kIHByb2JlIHJlc3BvbnNlc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTI5NC0gKlx0d2l0aG91dCBmaWx0ZXJpbmcuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTMwMC0gKiBASVdMX01WTV9MTUFDX1NDQU5fRkxBR1NfUlJNX0VOQUJMRUQ6IGluc2VydCBXRkEgdmVuZG9yLXNwZWNpZmljIFRQQyByZXBvcnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDozMDE6ICpcdGFuZCBEUyBwYXJhbWV0ZXIgc2V0IElFcyBpbnRvIHByb2JlIHJlcXVlc3RzLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTMwMi0gKiBASVdMX01WTV9MTUFDX1NDQU5fRkxBR19FWFRFTkRFRF9EV0VMTDogdXNlIGV4dGVuZGVkIGR3ZWxsIHRpbWUgb24gY2hhbm5lbHNcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg9MzI0PWVudW0gaXdsX3NjYW5fcHJpb3JpdHlfZXh0IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMzU3LSAqIEBjaGFubmVsX29wdDogY2hhbm5lbCBvcHRpbWl6YXRpb24gb3B0aW9ucywgZm9yIGZ1bGwgYW5kIHBhcnRpYWwgc2NhblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjM1ODogKiBAZGF0YTogY2hhbm5lbCBjb25maWd1cmF0aW9uIGFuZCBwcm9iZSByZXF1ZXN0IHBhY2tldC5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0zNTktICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg9MzYwPXN0cnVjdCBpd2xfc2Nhbl9yZXFfbG1hYyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTM5MS0gKiBAYmFuZDogMCBmb3IgNS4yIEdIeiwgMSBmb3IgMi40IEdIelxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjM5MjogKiBAcHJvYmVfc3RhdHVzOiBTQ0FOX1BST0JFX1NUQVRVU18qLCBpbmRpY2F0ZXMgc3VjY2VzcyBvZiBwcm9iZSByZXF1ZXN0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MzkzOiAqIEBudW1fcHJvYmVfbm90X3NlbnQ6ICMgb2YgcmVxdWVzdCB0aGF0IHdlcmVuJiMzOTt0IHNlbnQgZHVlIHRvIG5vdCBlbm91Z2ggdGltZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTM5NC0gKiBAZHVyYXRpb246IGR1cmF0aW9uIHNwZW50IGluIGNoYW5uZWwsIGluIHVzZWNzXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oPTM5Nj1zdHJ1Y3QgaXdsX3NjYW5fcmVzdWx0c19ub3RpZiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTM5OC1cdHU4IGJhbmQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6Mzk5Olx0dTggcHJvYmVfc3RhdHVzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjQwMDpcdHU4IG51bV9wcm9iZV9ub3Rfc2VudDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC00MDEtXHRfX2xlMzIgZHVyYXRpb247XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oPTUxNj1zdHJ1Y3QgaXdsX3NjYW5fZHdlbGwge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC01MzEtICogQGR3ZWxsOlx0XHRcdGR3ZWxscyBmb3IgdGhlIHNjYW5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo1MzI6ICogQG1hY19hZGRyOlx0XHRcdGRlZmF1bHQgbWFjIGFkZHJlc3MgdG8gYmUgdXNlZCBpbiBwcm9iZXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC01MzMtICogQGJjYXN0X3N0YV9pZDpcdFx0dGhlIGluZGV4IG9mIHRoZSBzdGF0aW9uIGluIHRoZSBmd1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD01Mzg9c3RydWN0IGl3bF9zY2FuX2NvbmZpZ192MSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTU2NC0gKiBAZHdlbGw6XHRcdFx0ZHdlbGxzIGZvciB0aGUgc2NhblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjU2NTogKiBAbWFjX2FkZHI6XHRcdFx0ZGVmYXVsdCBtYWMgYWRkcmVzcyB0byBiZSB1c2VkIGluIHByb2Jlc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTU2Ni0gKiBAYmNhc3Rfc3RhX2lkOlx0XHR0aGUgaW5kZXggb2YgdGhlIHN0YXRpb24gaW4gdGhlIGZ3XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oPTYyMz1lbnVtIGl3bF91bWFjX3NjYW5fZ2VuZXJhbF9mbGFncyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTYzNS1cdC8qIEV4dGVuZGVkIGR3ZWxsIGlzIG9ic2VsZXRlIHdoZW4gYWRhcHRpdmUgZHdlbGwgaXMgdXNlZCwgbWFraW5nIHRoaXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo2MzY6XHQgKiBiaXQgcmV1c2FibGUuIEhlbmNlLCBwcm9iZSByZXF1ZXN0IGRlZmVyIGlzIHVzZWQgb25seSB3aGVuIGFkYXB0aXZlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtNjM3LVx0ICogZHdlbGwgaXMgc3VwcG9ydGVkLiAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD02NTQ9ZW51bSBpd2xfdW1hY19zY2FuX2dlbmVyYWxfZmxhZ3MyIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtNjY1LSAqIEBJV0xfVU1BQ19TQ0FOX0dFTl9GTEFHU19WMl9QRVJJT0RJQzogcGVyaW9kaWMgb3Igc2NoZWR1bGVkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6NjY2OiAqIEBJV0xfVU1BQ19TQ0FOX0dFTl9GTEFHU19WMl9QQVNTX0FMTDogcGFzcyBhbGwgcHJvYmUgcmVzcG9uc2VzIGFuZCBiZWFjb25zXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtNjY3LSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHNjYW4gaXRlcmF0aW9uc1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC02ODgtICogICAgICBcdTAwMjZJV0xfVU1BQ19TQ0FOX0dFTl9GTEFHU19WMl82R0haX1BBU1NJVkVfU0NBTiBpcyBlbmFibGVkIGFuZCBzY2FuIGlzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6Njg5OiAqICAgICAgYWN0aXZhdGVkIG92ZXIgNkdIeiBQU0MgY2hhbm5lbHMsIGZpbHRlciBpbiBiZWFjb25zIGFuZCBwcm9iZSByZXNwb25zZXMuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6NjkwOiAqIEBJV0xfVU1BQ19TQ0FOX0dFTl9GTEFHU19WMl9PQ0U6IGlmIHNldCwgc2VuZCBwcm9iZSByZXF1ZXN0cyBpbiBhIG1pbmltdW1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo2OTE6ICogICAgICByYXRlIG9mIDUuNU1wYnMsIGZpbHRlciBpbiBicm9hZGNhc3QgcHJvYmUgcmVzcG9uc2VzIGFuZCBzZXQgdGhlIG1heFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTY5Mi0gKiAgICAgIGNoYW5uZWwgdGltZSBpbmRpY2F0aW9uIGZpZWxkIGluIHRoZSBGSUxTIHJlcXVlc3QgcGFyYW1ldGVycyBlbGVtZW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6NjkzOiAqICAgICAgKGlmIGluY2x1ZGVkIGJ5IHRoZSBkcml2ZXIgaW4gdGhlIHByb2JlIHJlcXVlc3QgSUVzKS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC02OTQtICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oPTc4OD1zdHJ1Y3QgaXdsX3NjYW5fcmVxX3VtYWNfdGFpbF92MSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTc5My1cdC8qIFNDQU5fUFJPQkVfUEFSQU1TX0FQSV9TX1ZFUl8xICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6Nzk0Olx0c3RydWN0IGl3bF9zY2FuX3Byb2JlX3JlcV92MSBwcmVxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTc5NS1cdHN0cnVjdCBpd2xfc3NpZF9pZSBkaXJlY3Rfc2NhbltQUk9CRV9PUFRJT05fTUFYXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtODAzLSAqIEByZXNlcnZlZDogZm9yIGZ1dHVyZSB1c2UgYW5kIGFsaWdubWVudFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjgwNDogKiBAcHJlcTogcHJvYmUgcmVxdWVzdCB3aXRoIElFcyBibG9ja3NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC04MDUtICogQGRpcmVjdF9zY2FuOiBsaXN0IG9mIFNTSURzIGZvciBkaXJlY3RlZCBhY3RpdmUgc2NhblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD04MDc9c3RydWN0IGl3bF9zY2FuX3JlcV91bWFjX3RhaWxfdjIge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC04MTItXHQvKiBTQ0FOX1BST0JFX1BBUkFNU19BUElfU19WRVJfMiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjgxMzpcdHN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9yZXEgcHJlcTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC04MTQtXHRzdHJ1Y3QgaXdsX3NzaWRfaWUgZGlyZWN0X3NjYW5bUFJPQkVfT1BUSU9OX01BWF07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oPTg2Mz1zdHJ1Y3QgaXdsX3NjYW5fcmVxX3VtYWMge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC05NDUtLyoqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6OTQ2OiAqIHN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9wYXJhbXNfdjMgLSBzY2FuIHByb2JlIHBhcmFtZXRlcnNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo5NDc6ICogQHByZXE6IHNjYW4gcHJvYmUgcmVxdWVzdCBwYXJhbXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC05NDgtICogQHNzaWRfbnVtOiBudW1iZXIgb2YgdmFsaWQgU1NJRHMgaW4gZGlyZWN0IHNjYW4gYXJyYXlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtOTU1LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjk1NjpzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfcGFyYW1zX3YzIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo5NTc6XHRzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfcmVxIHByZXE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtOTU4LVx0dTggc3NpZF9udW07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTk2Ny0vKipcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo5Njg6ICogc3RydWN0IGl3bF9zY2FuX3Byb2JlX3BhcmFtc192NCAtIHNjYW4gcHJvYmUgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjk2OTogKiBAcHJlcTogc2NhbiBwcm9iZSByZXF1ZXN0IHBhcmFtc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTk3MC0gKiBAc2hvcnRfc3NpZF9udW06IG51bWJlciBvZiB2YWxpZCBzaG9ydCBTU0lEcyBpbiBzaG9ydCBzc2lkIGFycmF5XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTk3Ni0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo5Nzc6c3RydWN0IGl3bF9zY2FuX3Byb2JlX3BhcmFtc192NCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6OTc4Olx0c3RydWN0IGl3bF9zY2FuX3Byb2JlX3JlcSBwcmVxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTk3OS1cdHU4IHNob3J0X3NzaWRfbnVtO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD0xMDk3PXN0cnVjdCBpd2xfc2Nhbl9wZXJpb2RpY19wYXJtc192MSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTExMDctICogQHBlcmlvZGljX3BhcmFtczogXHUwMDI2c3RydWN0IGl3bF9zY2FuX3BlcmlvZGljX3Bhcm1zX3YxXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MTEwODogKiBAcHJvYmVfcGFyYW1zOiBcdTAwMjZzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfcGFyYW1zX3YzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMTEwOS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD0xMTEwPXN0cnVjdCBpd2xfc2Nhbl9yZXFfcGFyYW1zX3YxMiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTExMTMtXHRzdHJ1Y3QgaXdsX3NjYW5fcGVyaW9kaWNfcGFybXNfdjEgcGVyaW9kaWNfcGFyYW1zO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjExMTQ6XHRzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfcGFyYW1zX3YzIHByb2JlX3BhcmFtcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0xMTE1LX0gX19wYWNrZWQ7IC8qIFNDQU5fUkVRVUVTVF9QQVJBTVNfQVBJX1NfVkVSXzEyICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTExMjEtICogQHBlcmlvZGljX3BhcmFtczogXHUwMDI2c3RydWN0IGl3bF9zY2FuX3BlcmlvZGljX3Bhcm1zX3YxXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MTEyMjogKiBAcHJvYmVfcGFyYW1zOiBcdTAwMjZzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfcGFyYW1zX3Y0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMTEyMy0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD0xMTI0PXN0cnVjdCBpd2xfc2Nhbl9yZXFfcGFyYW1zX3YxNyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTExMjctXHRzdHJ1Y3QgaXdsX3NjYW5fcGVyaW9kaWNfcGFybXNfdjEgcGVyaW9kaWNfcGFyYW1zO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjExMjg6XHRzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfcGFyYW1zX3Y0IHByb2JlX3BhcmFtcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0xMTI5LX0gX19wYWNrZWQ7IC8qIFNDQU5fUkVRVUVTVF9QQVJBTVNfQVBJX1NfVkVSXzE3IC0gMTQgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMTEzNS0gKiBAcGVyaW9kaWNfcGFyYW1zOiBcdTAwMjZzdHJ1Y3QgaXdsX3NjYW5fcGVyaW9kaWNfcGFybXNfdjFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoxMTM2OiAqIEBwcm9iZV9wYXJhbXM6IFx1MDAyNnN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9wYXJhbXNfdjRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0xMTM3LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oPTExMzg9c3RydWN0IGl3bF9zY2FuX3JlcV9wYXJhbXNfdjE4IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMTE0MS1cdHN0cnVjdCBpd2xfc2Nhbl9wZXJpb2RpY19wYXJtc192MSBwZXJpb2RpY19wYXJhbXM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MTE0MjpcdHN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9wYXJhbXNfdjQgcHJvYmVfcGFyYW1zO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTExNDMtfSBfX3BhY2tlZDsgLyogU0NBTl9SRVFVRVNUX1BBUkFNU19BUElfU19WRVJfMTggKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zdGEuaD0yNDI9c3RydWN0IGl3bF9tdm1fYWRkX3N0YV9jbWRfdjcge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3N0YS5oLTI2OC0gKiBASVdMX1NUQV9HRU5FUkFMX1BVUlBPU0U6IEdlbmVyYWwgcHVycG9zZS4gSW4gQVAgbW9kZSB1c2VkIGZvciBiZWFjb25zXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zdGEuaDoyNjk6ICpcdGFuZCBwcm9iZSByZXNwb25zZXMuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zdGEuaC0yNzAtICogQElXTF9TVEFfTVVMVElDQVNUOiBtdWx0aWNhc3QgdHJhZmZpYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zdGF0cy5oPTE5PXN0cnVjdCBtdm1fc3RhdGlzdGljc19kaXYge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3N0YXRzLmgtMjItXHRfX2xlMzIgZXhlY190aW1lO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc3RhdHMuaDoyMzpcdF9fbGUzMiBwcm9iZV90aW1lO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc3RhdHMuaC0yNC1cdF9fbGUzMiByc3NpX2FudDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS90eC5oLTMwLSAqIEBUWF9DTURfRkxHX1RTRjogRlcgc2hvdWxkIGNhbGN1bGF0ZSBhbmQgaW5zZXJ0IFRTRiBpbiB0aGUgZnJhbWVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3R4Lmg6MzE6ICpcdFNob3VsZCBiZSBzZXQgZm9yIGJlYWNvbnMgYW5kIHByb2JlIHJlc3BvbnNlc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvdHguaC0zMi0gKiBAVFhfQ01EX0ZMR19DQUxJQjogYWN0aXZhdGUgUEEgVFggcG93ZXIgY2FsaWJyYXRpb25zXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvdHhxLmgtMjUtICogQElXTF9NVk1fRFFBX01BWF9NR01UX1FVRVVFOiBsYXN0IFRYUSBpbiBwb29sIGZvciBNR01UIGZyYW1lc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvdHhxLmg6MjY6ICogQElXTF9NVk1fRFFBX0FQX1BST0JFX1JFU1BfUVVFVUU6IGEgcXVldWUgcmVzZXJ2ZWQgZm9yIFAyUCBHTy9Tb2Z0QVAgcHJvYmVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3R4cS5oLTI3LSAqXHRyZXNwb25zZXNcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaD0xNzE9c3RydWN0IGl3bF91Y29kZV9jYXBhIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaC0xODctICpcdChyYXRoZXIgdGhhbiB0d28pIElQdjYgYWRkcmVzc2VzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaDoxODg6ICogQElXTF9VQ09ERV9UTFZfRkxBR1NfTk9fQkFTSUNfU1NJRDogbm90IHNlbmRpbmcgYSBwcm9iZSB3aXRoIHRoZSBTU0lEIGVsZW1lbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oOjE4OTogKlx0ZnJvbSB0aGUgcHJvYmUgcmVxdWVzdCB0ZW1wbGF0ZS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oLTE5MC0gKiBASVdMX1VDT0RFX1RMVl9GTEFHU19ORVdfTlNPRkZMX1NNQUxMOiBuZXcgTlMgb2ZmbG9hZCAoc21hbGwgdmVyc2lvbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaD0zMjY9dHlwZWRlZiB1bnNpZ25lZCBpbnQgX19iaXR3aXNlIGl3bF91Y29kZV90bHZfY2FwYV90O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oLTMzOC0gKiBASVdMX1VDT0RFX1RMVl9DQVBBX0RTX1BBUkFNX1NFVF9JRV9TVVBQT1JUOiBzdXBwb3J0cyB1cGRhdGluZyBjdXJyZW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaDozMzk6ICpcdGNoYW5uZWwgaW4gRFMgcGFyYW1ldGVyIHNldCBlbGVtZW50IGluIHByb2JlIHJlcXVlc3RzLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmgtMzQwLSAqIEBJV0xfVUNPREVfVExWX0NBUEFfV0ZBX1RQQ19SRVBfSUVfU1VQUE9SVDogc3VwcG9ydHMgYWRkaW5nIFRQQyBSZXBvcnQgSUUgaW5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oOjM0MTogKlx0cHJvYmUgcmVxdWVzdHMuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaC0zNDItICogQElXTF9VQ09ERV9UTFZfQ0FQQV9RVUlFVF9QRVJJT0RfU1VQUE9SVDogc3VwcG9ydHMgUXVpZXQgUGVyaW9kIHJlcXVlc3RzXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmg9NDU3PWVudW0gaXdsX3Vjb2RlX3Rsdl9jYXBhIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaC01NzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaDo1NzY6LyogVGhlIGRlZmF1bHQgbWF4IHByb2JlIGxlbmd0aCBpZiBub3Qgc3BlY2lmaWVkIGJ5IHRoZSBmaXJtd2FyZSBmaWxlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaC01NzctI2RlZmluZSBJV0xfREVGQVVMVF9NQVhfUFJPQkVfTEVOR1RIXHQyMDBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ltZy5oPTQ2PXN0cnVjdCBpd2xfdWNvZGVfY2FwYWJpbGl0aWVzIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvaW1nLmg6NDc6XHR1MzIgbWF4X3Byb2JlX2xlbmd0aDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvaW1nLmgtNDgtXHR1MzIgbl9zY2FuX2NoYW5uZWxzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTc5Mj1zdGF0aWMgaW50IGl3bF9wYXJzZV90bHZfZmlybXdhcmUoc3RydWN0IGl3bF9kcnYgKmRydixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy05MTItXHRcdFx0XHRnb3RvIGludmFsaWRfdGx2X2xlbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjkxMzpcdFx0XHRjYXBhLVx1MDAzZW1heF9wcm9iZV9sZW5ndGggPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtOTE0LVx0XHRcdFx0XHRsZTMyX3RvX2NwdXAoKGNvbnN0IF9fbGUzMiAqKXRsdl9kYXRhKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz0xNjQ0PXN0YXRpYyB2b2lkIGl3bF9yZXFfZndfY2FsbGJhY2soY29uc3Qgc3RydWN0IGZpcm13YXJlICp1Y29kZV9yYXcsIHZvaWQgKmNvbnRleHQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTY2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjE2NjI6XHRmdy1cdTAwM2V1Y29kZV9jYXBhLm1heF9wcm9iZV9sZW5ndGggPSBJV0xfREVGQVVMVF9NQVhfUFJPQkVfTEVOR1RIO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTY2My1cdGZ3LVx1MDAzZXVjb2RlX2NhcGEuc3RhbmRhcmRfcGh5X2NhbGlicmF0aW9uX3NpemUgPVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTMyLSAqIFRoaXMgY29tcG9uZW50IGltcGxlbWVudHMgdGhlIHN5c3RlbSBmbG93cyBzdWNoIGFzIGJ1cyBlbnVtZXJhdGlvbiwgYnVzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaDozMzogKiByZW1vdmFsLiBCdXMgZGVwZW5kZW50IHBhcnRzIG9mIHN5c3RlbSBmbG93cyAoc3VjaCBhcyBpd2xfcGNpX3Byb2JlKSBhcmUgaW5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTM0LSAqIGJ1cyBzcGVjaWZpYyBmaWxlcyAodHJhbnNwb3J0IGZpbGVzKS4gVGhpcyBpcyB0aGUgY29kZSB0aGF0IGlzIGNvbW1vbiBhbW9uZ1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTQ0LSAqIDIpIFRoZSBidXMgc3BlY2lmaWMgY29tcG9uZW50IHJlZ2lzdGVycyB0aGUgYnVzIGRyaXZlclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6NDU6ICogMykgVGhlIGJ1cyBkcml2ZXIgY2FsbHMgdGhlIHByb2JlIGZ1bmN0aW9uXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC00Ni0gKiA0KSBUaGUgYnVzIHNwZWNpZmljIGNvbXBvbmVudCBjb25maWd1cmVzIHRoZSBidXNcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaD01Nj1zdHJ1Y3QgaXdsX3JmX2NmZztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC02Mi0gKiBzdGFydHMgdGhlIGRyaXZlcjogZmV0Y2hlcyB0aGUgZmlybXdhcmUuIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBieSBidXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oOjYzOiAqIHNwZWNpZmljIHN5c3RlbSBmbG93cyBpbXBsZW1lbnRhdGlvbnMuIEZvciBleGFtcGxlLCB0aGUgYnVzIHNwZWNpZmljIHByb2JlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC02NC0gKiBmdW5jdGlvbiBzaG91bGQgZG8gYnVzIHJlbGF0ZWQgb3BlcmF0aW9ucyBvbmx5LCBhbmQgdGhlbiBjYWxsIHRvIHRoaXNcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jPTcwPXZvaWQgaXdsX3RyYW5zX2ZyZWVfcmVzdGFydF9saXN0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy04MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6ODE6c3RydWN0IGl3bF90cmFuc19yZXByb2JlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtODItXHRzdHJ1Y3QgZGV2aWNlICpkZXY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy04NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6ODY6c3RhdGljIHZvaWQgaXdsX3RyYW5zX3JlcHJvYmVfd2soc3RydWN0IHdvcmtfc3RydWN0ICp3aylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtODcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzo4ODpcdHN0cnVjdCBpd2xfdHJhbnNfcmVwcm9iZSAqcmVwcm9iZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjkwOlx0cmVwcm9iZSA9IGNvbnRhaW5lcl9vZih3aywgdHlwZW9mKCpyZXByb2JlKSwgd29yay53b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjkyOlx0aWYgKGRldmljZV9yZXByb2JlKHJlcHJvYmUtXHUwMDNlZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6OTM6XHRcdGRldl9lcnIocmVwcm9iZS1cdTAwM2VkZXYsIFwmIzM0O3JlcHJvYmUgZmFpbGVkIVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjk0Olx0cHV0X2RldmljZShyZXByb2JlLVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjk1Olx0a2ZyZWUocmVwcm9iZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTk2LVx0bW9kdWxlX3B1dChUSElTX01PRFVMRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy05OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6OTk6c3RhdGljIHZvaWQgaXdsX3RyYW5zX3NjaGVkdWxlX3JlcHJvYmUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTEwMC1cdFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgZGVsYXlfbXMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTEwMS17XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU2NzQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgYGl3bF90cmFuc19zY2hlZHVsZV9yZXByb2JlYCBDYWxsKioKCk9rYXksIHNvIGBpd2xfdHJhbnNfc2NoZWR1bGVfcmVwcm9iZWAgaXMgY2FsbGluZyBgZGV2aWNlX3JlcHJvYmVgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtSaWdodCwgdGhlIGRldmljZSBoYXMgdG8gZXhpc3QgZm9yIHRoYXQgdG8gZXZlbiAqaGFwcGVuKi4mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gTm93LCBJJiMzOTttIHRyeWluZyB0byByZWNhbGwg4oCTIGlzIHRoZXJlIGEgdmlydHVhbCBkZXZpY2UgZHJpdmVyIGZvciBgaXdsd2lmaWA/IEkgZG9uJiMzOTt0IHRoaW5rIHNvLCBidXQgSSBuZWVkIHRvIGJlIGNlcnRhaW4uIE5vcGUsIG5vdGhpbmcgY29tZXMgdG8gbWluZC4KCkFscmlnaHQsIGEgbW9yZSBwcmVzc2luZyBxdWVzdGlvbiBpcywgY2FuIEkgZXZlbiAqcmVhY2gqIHRoaXMgY29kZSB3aXRoIHN5emthbGxlcj8gVGhhdCYjMzk7cyB0aGUgcmVhbCB0ZXN0LiBTeXprYWxsZXIgY2FuIGZ1enogVVNCIGRldmljZXMgdXNpbmcgYGR1bW15X2hjZGAgYW5kIGVtdWxhdGUgYSBVU0IgZ2FkZ2V0LiBTbywgSSBuZWVkIHRvIGNoZWNrIGlmIGl3bHdpZmkgaGFzIGEgVVNCIGRyaXZlciB0aGF0IHN5emthbGxlciBtaWdodCBiZSBhYmxlIHRvIGludGVyYWN0IHdpdGg/IExldCYjMzk7cyBjaGVjay4gVGltZSB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxOTo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VzYl9yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxOTo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjAyNQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6CgoqKlRoZSBQZXJpcGhlcmFsIERpbGVtbWEqKgoKUmlnaHQsIG5vIFVTQiBkcml2ZXLigKYgdGhhdCYjMzk7cyBhIHNpZ25pZmljYW50IHJvYWRibG9jay4gV2UmIzM5O3JlIG9idmlvdXNseSBsYWNraW5nIHRoZSBwcm9wZXIgaW50ZXJmYWNlIHRvIGhhbmRsZSBkYXRhIGV4Y2hhbmdlIHdpdGggZXh0ZXJuYWwgZGV2aWNlcy4gRm9yZ2V0IHRoZSBvYnZpb3VzIHNvbHV0aW9ucyBhbmQgd29ya2Fyb3VuZHMgZm9yIHRoZSBtb21lbnQuIExldCYjMzk7cyBkaWcgZGVlcGVyLiBXaGF0IG90aGVyIG9wdGlvbnMgYXJlIHRoZXJlPyBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGEgd2VsbC1lc3RhYmxpc2hlZCBzdGFuZGFyZCBmb3IgZW1iZWRkZWQgc3lzdGVtczogKipTRElPKiouIElzIHRoYXQgYSB2aWFibGUgYWx0ZXJuYXRpdmUgaW4gdGhpcyBjb250ZXh0PyBDb25zaWRlcmluZyB0aGUgZGVzaWduIGNvbnN0cmFpbnRzIGFuZCB0aGUgZXhwZWN0ZWQgZnVuY3Rpb25hbGl0eSwgZG9lcyBpdCBhbGlnbiB3aXRoIHRoZSBwcm9qZWN0IHJlcXVpcmVtZW50cz8gV2UgbXVzdCBldmFsdWF0ZSB0aGUgZmVhc2liaWxpdHkgb2YgaW50ZWdyYXRpbmcgU0RJTyBhcyBhIHNlY29uZGFyeSBvciBwcmltYXJ5IGRhdGEgcGF0aHdheS4gSXMgaXQgd29ydGggdGhlIGVmZm9ydD8gV2hhdCBhYm91dCBwb3dlciBjb25zdW1wdGlvbiwgZGF0YSByYXRlcywgYW5kIGNvbXBhdGliaWxpdHk/IFdlIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgaWYgaXQmIzM5O3MgYSB3b3J0aHdoaWxlIGF2ZW51ZSB0byBleHBsb3JlLiBUaW1lIHRvIHB1bGwgdXAgdGhlIGRhdGFzaGVldHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2Rpb19yZWdpc3Rlcl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYyNzQKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0OTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJd2x3aWZpIERyaXZlciYjMzk7cyBBY2Nlc3NpYmlsaXR5IGluIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqCgpPa2F5LCBzbyB0aGUgYGl3bHdpZmlgIGRyaXZlciwgaXQmIzM5O3Mgc3RyaWN0bHkgUENJLCBub3QgU0RJTy4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkga25vdyB0aGlzIGlzIGEgcHJvYmxlbS4gU3l6a2FsbGVyIGRvZXNuJiMzOTt0IG9mZmVyIGEgZ2VuZXJpYyBQQ0kgZW11bGF0b3IgY2FwYWJsZSBvZiBpbmplY3RpbmcgYXJiaXRyYXJ5IFBDSSBkZXZpY2VzIGxpa2UgaXQgZG9lcyBmb3IgVVNCIHdpdGggYGR1bW15X2hjZGAuIEFuZCBRRU1VLCBhcyBmYXIgYXMgSSBrbm93LCBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoZSBgaXdsd2lmaWAgaGFyZHdhcmUgc3BlY2lmaWNhbGx5LiBUaGlzIG1lYW5zIHRoZSBkcml2ZXIgc2ltcGx5IHdvbiYjMzk7dCBwcm9iZSBpbiBhbnkgb2YgdGhlc2UgdmlydHVhbGl6ZWQgc2V0dXBzLgoKSWYgdGhlIGRyaXZlciAqbmV2ZXIqIHByb2JlcywgdGhlIGZpcm13YXJlIHJlcXVlc3QgbmV2ZXIgaGFwcGVucy4gVGhhdOKAmXMgY3J1Y2lhbC4gV2hpY2ggbWVhbnMgZnVuY3Rpb25zIGxpa2UgYGl3bF9wYXJzZV90bHZfZmlybXdhcmVgIGFuZCBgaXdsX2RiZ190bHZfcGFyc2VfYmluYCBhcmUgY29tcGxldGVseSBieXBhc3NlZC4gTGlrZXdpc2UsIGBpd2xfbXZtX2dldF9iaW9zX3RhYmxlc2Agd29uJiMzOTt0IGJlIGNhbGxlZCwgc28gd2Ugd29uJiMzOTt0IGhpdCBgaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGVgIG9yIGBpd2xfdWVmaV9nZXRfd2dkc190YWJsZWAgZWl0aGVyLgoKSGFuZyBvbiwgd2FpdCBhIHNlY29uZC4uLiBkb2VzIFN5emthbGxlciAqbWF5YmUqIGhhdmUgUENJIGZ1enppbmcgdXNpbmcgYHZmaW9gIG9yIGBwY2lfZW5kcG9pbnRfdGVzdGA/IEkgbmVlZCB0byBjb25zaWRlciB0aGF0LiBFdmVuIHRoZW4sIFBDSSBmdXp6aW5nIHVzdWFsbHkgbmVlZHMgYSBob3N0IGRldmljZSBleHBvc2VkIG9yIFFFTVUgZW11bGF0aW9uLiBBbmQgSSBkb27igJl0IHRoaW5rIFN5emthbGxlciBoYXMgYSBgc3l6X3BjaV9kZXZpY2VgIHN5c2NhbGwsIGRvZXMgaXQ/IE5vcGUuIE9rYXksIHdhaXQsIGl0IGhhcyBgc3l6X2t2bV9zZXR1cF9jcHVgIGFuZCBgc3l6X3VzYl9jb25uZWN0YC4gSSYjMzk7bGwgaGF2ZSB0byBkb3VibGUtY2hlY2sgZm9yIFBDSS1yZWxhdGVkIHBzZXVkby1zeXNjYWxscy4KCkkmIzM5O2QgaWRlYWxseSBjaGVjayB0aGUgU3l6a2FsbGVyIHNvdXJjZSBkaXJlY3RseSwgYnV0IEkgZG9uJiMzOTt0IGhhdmUgdGhhdCBhY2Nlc3MuIEhvd2V2ZXIsIGxvb2tpbmcgYmFjayBhdCB0aGUgcHJvbXB0LCBpdCBzYXlzOiAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLiYjMzQ7IFRoZSBwcm9tcHQgZXhwbGljaXRseSBsaXN0cyBgdXNiIGdhZGdldGAgYW5kIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIEkmIzM5O20gZmFtaWxpYXIgd2l0aCwgYnV0IGl0IGNvbXBsZXRlbHkgKmF2b2lkcyogbWVudGlvbmluZyBhbnkgUENJIGVtdWxhdG9yLCBiZWNhdXNlIHRoZXJlIGlzbiYjMzk7dCBhIGdlbmVyaWMgb25lIGluIHRoZSBrZXJuZWwgdGhhdCBTeXprYWxsZXIgY2FuIGxldmVyYWdlIHRvIGluamVjdCBhcmJpdHJhcnkgUENJIGRldmljZXMuCgpTbywgYWJzZW50IGEgUENJIGRldmljZSwgdGhlIGBpd2x3aWZpYCBkcml2ZXIgd2lsbCBqdXN0IHJlZ2lzdGVyIGl0cyBQQ0kgZHJpdmVyIHN0cnVjdCBhbmQgZG8gcHJlY2lzZWx5IG5vdGhpbmcgZWxzZS4gSeKAmW0gcXVpdGUgY29uZmlkZW50LiBUaGVyZWZvcmUsIHRoZSBjb2RlIHRoYXQmIzM5O3MgYmVlbiBtb2RpZmllZCBpbiB0aGlzIGNhc2Ugd2lsbCBiZSBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIGFueSBvZiB0aGVzZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIGRvdWJsZS1jaGVjayBpZiBgaXdsX2RiZ190bHZfcGFyc2VfYmluYCBtaWdodCBiZSBhY2Nlc3NpYmxlIHRocm91Z2ggZGVidWdmcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX2RiZ190bHZfcGFyc2VfYmluJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmM9NDE4PXZvaWQgaXdsX2RiZ190bHZfZnJlZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmMtNDcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5jOjQ3MzpzdGF0aWMgaW50IGl3bF9kYmdfdGx2X3BhcnNlX2JpbihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3QgdTggKmRhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmMtNDc0LVx0XHRcdFx0IHNpemVfdCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5jPTUwOD12b2lkIGl3bF9kYmdfdGx2X2xvYWRfYmluKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5jLTUyNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuYzo1MjY6XHRpd2xfZGJnX3Rsdl9wYXJzZV9iaW4odHJhbnMsIGZ3LVx1MDAzZWRhdGEsIGZ3LVx1MDAzZXNpemUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5jLTUyNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc3MzUKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIGBpd2xfZGJnX3Rsdl9sb2FkX2JpbmAqKgoKT2theSwgc28gdGhlIHByb21wdCBpcyBqdXN0ICYjMzQ7aXdsX2RiZ190bHZfbG9hZF9iaW4mIzM0OyAtIG15IGltbWVkaWF0ZSBpbnN0aW5jdCwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSwgaXMgdG8gZmlndXJlIG91dCB0aGUgY29udGV4dC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2hlcmUqIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20uIFRoYXQmIzM5O3MgdGhlIGNydWNpYWwgZmlyc3Qgc3RlcC4gSXMgaXQgY2FsbGVkIGZyb20gYSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2U/IFBlcmhhcHMgZHVyaW5nIGZpcm13YXJlIGxvYWRpbmc/IE9yIG1heWJlIGl0JiMzOTtzIHJlbGF0ZWQgdG8gc29tZSBzb3J0IG9mIGRlYnVnIGludGVyZmFjZSBvciBkZWJ1Z2dpbmcgdG9vbHM/IEtub3dpbmcgdGhlIGNhbGwgc2l0ZXMgd2lsbCBpbW1lZGlhdGVseSBnaXZlIG1lIHNpZ25pZmljYW50IGluc2lnaHQgaW50byBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlIG9mIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIuIEkgbmVlZCB0byB0cmFjZSBpdHMgY2FsbCBncmFwaCBhbmQgc2VlIHdobyBpcyBjYWxsaW5nIHdob20uIFdpdGhvdXQgdGhhdCBpbml0aWFsIHVuZGVyc3RhbmRpbmcsIEkmIzM5O20ganVzdCBndWVzc2luZywgYW5kIEkgZG9uJiMzOTt0IG9wZXJhdGUgb24gZ3Vlc3Nlcy4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxOTo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfZGJnX3Rsdl9sb2FkX2JpbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5jPTQ3Mz1zdGF0aWMgaW50IGl3bF9kYmdfdGx2X3BhcnNlX2JpbihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3QgdTggKmRhdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5jLTUwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuYzo1MDg6dm9pZCBpd2xfZGJnX3Rsdl9sb2FkX2JpbihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5jLTUwOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5oPTQ5PXN0cnVjdCBpd2xfZndfcnVudGltZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuaC01MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuaDo1MTp2b2lkIGl3bF9kYmdfdGx2X2xvYWRfYmluKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGl3bF90cmFucyAqdHJhbnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5oLTUyLXZvaWQgaXdsX2RiZ190bHZfZnJlZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9MTY0ND1zdGF0aWMgdm9pZCBpd2xfcmVxX2Z3X2NhbGxiYWNrKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqdWNvZGVfcmF3LCB2b2lkICpjb250ZXh0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE4OTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoxODkxOlx0aXdsX2RiZ190bHZfbG9hZF9iaW4oZHJ2LVx1MDAzZXRyYW5zLVx1MDAzZWRldiwgZHJ2LVx1MDAzZXRyYW5zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE4OTItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NDcwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIENvZGUmIzM5O3MgUmVhY2hhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBpd2xfcmVxX2Z3X2NhbGxiYWNrYC4gUmlnaHQsIHRoZSBzYW1lIG9sZCBwYXRoOiBQQ0kgcHJvYmUgLSZndDsgYGl3bF9kcnZfc3RhcnRgIC0mZ3Q7IGBpd2xfcmVxdWVzdF9maXJtd2FyZWAgLSZndDsgYGl3bF9yZXFfZndfY2FsbGJhY2tgLiBNYWtlcyBzZW5zZS4gV2l0aG91dCB0aGUgUENJIGRldmljZSwgdGhpcyBlbnRpcmUgc2VxdWVuY2UgaXMgYnlwYXNzZWQuCgpMZXQgbWUgdGhpbmsuLi4gSXMgdGhlcmUgKmFueSogb3RoZXIgY29uY2VpdmFibGUgcm91dGUgdG8gaGl0IGBpd2xfcmVxX2Z3X2NhbGxiYWNrYD8gTm9wZSwgaXQmIzM5O3MgYSBjYWxsYmFjayBzcGVjaWZpY2FsbHkgcGFzc2VkIHRvIGByZXF1ZXN0X2Zpcm13YXJlX25vd2FpdGAuIFRoZSBmdW5jdGlvbiBzZWVtcyBzb2xlbHkgdGllZCB0byBmaXJtd2FyZSByZXF1ZXN0cywgYW5kIHRob3NlIHJlcXVlc3RzIGFyZSBpbml0aWF0ZWQgc29sZWx5IHdpdGhpbiBgaXdsX2Rydl9zdGFydGAuIEFuZCBgaXdsX2Rydl9zdGFydGAsIHRoYXQmIzM5O3MganVzdCB0aGUgUENJIHByb2JlIGZ1bmN0aW9uJiMzOTtzIGJhYnkuCgpUaGVyZWZvcmUsIGFzIGl0IHN0YW5kcywgdGhhdCBzcGVjaWZpYyBwaWVjZSBvZiBtb2RpZmllZCBjb2RlIGlzIGNvbXBsZXRlbHkgaW5hY2Nlc3NpYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQg4oCTIG5vIGNoYW5jZSBpbiBoZWxsIHdpdGhvdXQgdGhhdCBwYXJ0aWN1bGFyIEludGVsIFdpLUZpIGhhcmR3YXJlLiBJIG5lZWQgdG8gbWFrZSBhIGp1ZGdtZW50IGNhbGwgaGVyZS4gSSYjMzk7bSBnb2luZyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIE15IHJlYXNvbmluZyBpcyBzb2xpZDogdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIuIFlvdSBjYW4mIzM5O3QgcHJvYmUgaXQgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHdoaWNoIHdvdWxkIG1ha2UgdGhlIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuCgpIYW5nIG9uLi4uIHdhaXQgYSBzZWNvbmQuIElzIHRoZXJlIGV2ZW4gYSBzbGl2ZXIgb2YgYSBjaGFuY2UgYGl3bHdpZmlgICpjb3VsZCogYmUgcHJvYmVkIHZpYSBhIHRlc3RpbmcgZnJhbWV3b3JrIG9mIHNvbWUga2luZD8gSSB2YWd1ZWx5IHJlY2FsbCBzZWVpbmcgc29tZXRoaW5nIGFib3V0IGBLVU5JVGAuLi4geWVwLCB0aGVyZSBpdCBpczogYElXTFdJRklfS1VOSVRfVEVTVFNgLiBBbHJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgd2hhdCB0aG9zZSBLVW5pdCB0ZXN0cyBhcmUgZG9pbmcuIE1heWJlLCBqdXN0IG1heWJlLCB0aGVyZSYjMzk7cyBhIGJhY2sgZG9vci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfZHJ2X3N0YXJ0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS90ZXN0cyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MTcwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIEVtcHR5IFNldCoqCgpXZWxsLCB0aGlzIGlz4oCmIGludGVyZXN0aW5nLiBUaGUgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGNsZWFyOiAmIzM0O05vIG1hdGNoZXMuJiMzNDsgTm8gaGl0cywgbm8gcmVsZXZhbnQgcmVzdWx0cywgbm90aGluZyB0byB3b3JrIHdpdGguIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgZGlhZ25vc2UgdGhlIHByb2JsZW0uIEFtIEkgdXNpbmcgdGhlIGNvcnJlY3Qgc2VhcmNoIHRlcm1zPyBIYXZlIEkgcHJvdmlkZWQgZW5vdWdoIGNvbnRleHR1YWwgaW5mb3JtYXRpb24/IElzIHRoZSBkYXRhIHNvdXJjZSBJJiMzOTttIHF1ZXJ5aW5nIGV2ZW4gcmVsaWFibGUgb3IgcmVsZXZhbnQgdG8gdGhlIHByb2JsZW0gSSYjMzk7bSB0cnlpbmcgdG8gc29sdmU/IE9yLCBpcyBpdCBwb3NzaWJsZSwgdGhhdCBJJiMzOTt2ZSBhbHJlYWR5IGV4cGxvcmVkIHRoaXMgYXJlYSBjb21wcmVoZW5zaXZlbHkgYW5kIHRoaXMgaXMgYSBjb25maXJtYXRpb24gb2YgbXkgcHJpb3IgYW5hbHlzaXMuCgpQZXJoYXBzIHRoaXMgbGFjayBvZiBtYXRjaGVzIGlzIHNpZ25pZmljYW50IGluIGl0c2VsZi4gRG9lcyB0aGlzICYjMzk7bm8gbWF0Y2gmIzM5OyByZXN1bHQgc2lnbmlmeSBhIGdhcCBpbiBvdXIgY3VycmVudCB1bmRlcnN0YW5kaW5nPyBPciwgbWF5YmUgaXQgcG9pbnRzIHRvIHRoZSBuZWVkIGZvciBhIHJhZGljYWxseSBkaWZmZXJlbnQgYXBwcm9hY2gsIGEgZGlmZmVyZW50IGZyYW1ld29yayBhbHRvZ2V0aGVyLCBvciBhIGNvbXBsZXRlbHkgbmV3IGxpbmUgb2YgaW52ZXN0aWdhdGlvbi4gSXQgY291bGQgZXZlbiBiZSB0aGF0IHRoZSBxdWVzdGlvbiBpdHNlbGYgaXMgZmxhd2VkLCBhbmQgbmVlZHMgdG8gYmUgcmVkZWZpbmVkIG9yIHJlZnJhbWVkLiBJJiMzOTtsbCBuZWVkIHRvIGdvIGJhY2ssIHJlYXNzZXNzIHRoZSBwYXJhbWV0ZXJzLCBhbmQgbWV0aWN1bG91c2x5IHNjcnV0aW5pemUgdGhlIGNvbmRpdGlvbnMgdGhhdCBzaG91bGQgaGF2ZSBnZW5lcmF0ZWQgYSByZXN1bHQsIHRvIHVuZGVyc3RhbmQgd2h5IEkmIzM5O20gaGVyZS4gVGhpcyBpcyBub3QgdGhlIGVuZDsgaXQmIzM5O3MgYSBjcml0aWNhbCBzdGFydGluZyBwb2ludCB0byBkZWVwZW4gbXkgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfcmVxX2Z3X2NhbGxiYWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS90ZXN0cyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE5OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NDkwCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIEVtcHR5IFNlYXJjaCBTcGFjZSoqCgpIbW0sICYjMzQ7bm8gbWF0Y2hlcy4mIzM0OyBUaGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcsIGlzbiYjMzk7dCBpdD8gQXMgYW4gZXhwZXJ0LCBJJiMzOTttIGltbWVkaWF0ZWx5IHJ1bm5pbmcgdGhyb3VnaCBhIG1lbnRhbCBjaGVja2xpc3Qgb2YgcG9zc2liaWxpdGllcy4gVGhlIGluaXRpYWwgYXNzdW1wdGlvbiBpcyBhbHdheXMgdGhlIHF1ZXJ5IGl0c2VsZi4gSXMgdGhlIHNlYXJjaCB0ZXJtIHRvbyBzcGVjaWZpYz8gVG9vIHZhZ3VlPyBJcyBpdCB1c2luZyB0aGUgY29ycmVjdCB0ZXJtaW5vbG9neSwgdGhlIHZlcm5hY3VsYXIgb2YgdGhlIGZpZWxkLCBvciBwZXJoYXBzIGEgbW9yZSBvYnNjdXJlLCB0ZWNobmljYWwgcGhyYXNpbmcgdGhhdCBJIGhhZG4mIzM5O3QgY29uc2lkZXJlZD8gSSYjMzk7bSBhbHJlYWR5IG1lbnRhbGx5IGNyb3NzLXJlZmVyZW5jaW5nIHN5bm9ueW1zLCByZWxhdGVkIGNvbmNlcHRzLCBhbmQgcG90ZW50aWFsIGJyb2FkZXIgY2F0ZWdvcmllcyB0aGUgc2VhcmNoIG1pZ2h0IGZhbGwgdW5kZXIuCgpOZXh0LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBkYXRhIHNvdXJjZS4gSXMgaXQgZXZlbiB0aGUgKnJpZ2h0KiBkYXRhc2V0PyBBcmUgdGhlcmUgYW55IGxpbWl0YXRpb25zIG9yIGNhdmVhdHMgdG8gdGhpcyBwYXJ0aWN1bGFyIGRhdGFiYXNlIG9yIGluZGV4PyBDb3VsZCB0aGVyZSBiZSBhbiBpbmRleGluZyBpc3N1ZSwgYSBrbm93biBnbGl0Y2gsIG9yIGV2ZW4gYSBzaW1wbGUgdHlwbyBpbiB0aGUgc291cmNlIGl0c2VsZj8gQW0gSSBkZWFsaW5nIHdpdGggYSBjbG9zZWQgc3lzdGVtLCBvciBhbSBJIGFibGUgdG8gZXhwYW5kIHRoZSBzZWFyY2ggcGFyYW1ldGVycywgcGVyaGFwcyB0byBhIG1vcmUgY29tcHJlaGVuc2l2ZSBvcGVuIGFjY2VzcyBzb3VyY2UsIG9yIGV2ZW4gY29uc2lkZXJpbmcgZXh0ZXJuYWwgcmVzb3VyY2VzIGFuZCBhIGRpZmZlcmVudCwgcGVyaGFwcyBtdWx0aS1mYWNldGVkIHJlc2VhcmNoIGFwcHJvYWNoPwoKVGhlbiBJJiMzOTttIGNvbnNpZGVyaW5nIHRoZSBzZWFyY2ggbWV0aG9kb2xvZ3kgaXRzZWxmLiBBbSBJIHVzaW5nIHRoZSBjb3JyZWN0IHNlYXJjaCBvcGVyYXRvcnM/IFNob3VsZCBJIGJlIHVzaW5nIEJvb2xlYW4gbG9naWMsIHdpbGRjYXJkIGNoYXJhY3RlcnMsIHByb3hpbWl0eSBzZWFyY2hlcz8gSGF2ZSBJIHRyaWVkIGRpZmZlcmVudCBjb21iaW5hdGlvbnMgb2Yga2V5d29yZHMgYW5kIGZpbHRlcnM/IE1heWJlIGEgc3RydWN0dXJlZCBxdWVyeSB3aXRoIHNwZWNpZmljIHBhcmFtZXRlcnMgd291bGQgYmUgbW9yZSBlZmZlY3RpdmUgdGhhbiBhIGZyZWUtdGV4dCBzZWFyY2guIEkmIzM5O20gZXhwbG9yaW5nIHRoZSBwb3NzaWJpbGl0aWVzLCBldmVuIHRob3VnaCB0aGVyZSYjMzk7cyBub3RoaW5nIG9idmlvdXMgb24gdGhlIGhvcml6b24sIHRyeWluZyB0byBmaW5kIHdoaWNoIGFuZ2xlIGdpdmVzIHRoZSBtb3N0IHBvdGVudGlhbCBmb3IgZXhwbG9yYXRpb24uCgpFc3NlbnRpYWxseSwgJiMzNDtubyBtYXRjaGVzJiMzNDsgaXNuJiMzOTt0IGEgZGVhZCBlbmQuIEl0JiMzOTtzIGEgc3RhcnRpbmcgcG9pbnQuIEl0JiMzOTtzIGEgc2lnbmFsIHRvIGRpdmUgZGVlcGVyLCB0byByZWZpbmUgdGhlIGFwcHJvYWNoLCBhbmQgdG8gY3JlYXRpdmVseSByZWZyYW1lIHRoZSBwcm9ibGVtLiBJdCBoaWdobGlnaHRzIHRoZSBpbXBvcnRhbmNlIG9mIGl0ZXJhdGluZywgb2YgdHJ5aW5nIGRpZmZlcmVudCBzdHJhdGVnaWVzLCBhbmQgb2YgY29uc3RhbnRseSBxdWVzdGlvbmluZyB0aGUgYXNzdW1wdGlvbnMgdW5kZXJseWluZyB0aGUgaW5pdGlhbCBxdWVyeSBhbmQgdGhlIGRhdGEgaXRzZWxmLiBUaGUgc2VhcmNoIGp1c3QgZ290ICptdWNoKiBtb3JlIGludGVyZXN0aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxOTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9wYXJzZV90bHZfZmlybXdhcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk5NjAKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbml0aWFsIEFzc2Vzc21lbnQgb2YgS1VuaXQgVGVzdCBDb3ZlcmFnZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBoaXQgYSBkZWFkIGVuZCB3aXRoIHRoZSBpbml0aWFsIHNlYXJjaC4gSXQgbG9va3MgbGlrZSB0aGUgc3RhbmRhcmQgc2VhcmNoIGhhc24mIzM5O3QgeWllbGRlZCBhbnkgcmVsZXZhbnQgbWF0Y2hlcy4gVGhhdCYjMzk7cyBhIGJpdCBmcnVzdHJhdGluZywgYnV0IG5vdCBlbnRpcmVseSB1bmV4cGVjdGVkLiBHaXZlbiB0aGUgbmF0dXJlIG9mIGZpcm13YXJlIGludGVyYWN0aW9uIGFuZCBBQ1BJL1VFRkkgdGFibGUgcGFyc2luZywgdGhvc2UgYXJlYXMgYXJlIG9mdGVuIHRpZ2h0bHkgY291cGxlZCB3aXRoIHRoZSBsb3ctbGV2ZWwgaGFyZHdhcmUgb3IgbW9yZSBjb21wbGV4LiBJdCYjMzk7cyBoaWdobHkgdW5saWtlbHkgdGhhdCB0aGUgc2ltcGxlIEtVbml0IHRlc3RzIHdvdWxkIGZvY3VzIG9uIHRoYXQga2luZCBvZiBkZWVwIHBhcnNpbmcgbG9naWMgZGlyZWN0bHkuIFRoZXkgYXJlIHByb2JhYmx5IGZvY3VzZWQgb24gdGhvc2UgdXRpbGl0eSBmdW5jdGlvbnMgSSBtZW50aW9uZWQgZWFybGllci4KCkxldCYjMzk7cyBhZGp1c3QgdGhlIHNlYXJjaC4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gZXhwbG9yZSBhIG1vcmUgdGFyZ2V0ZWQgYXJlYS4gSSYjMzk7bGwgdGFrZSBhIGxvb2sgYXQgdGhlIHRlc3RzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvdGVzdHNgIGRpcmVjdG9yeS4gV2hpbGUgd2lyZWxlc3MgZHJpdmVycyBtaWdodCBzZWVtIGxpa2UgYW4gb2RkIHBsYWNlIHRvIHN0YXJ0LCBpdCYjMzk7cyBvZnRlbiBhIGdvb2QgcGxhY2UgdG8gc3RhcnQsIHNpbmNlIHRoZSB1bmRlcmx5aW5nIHRlc3Qgc3RydWN0dXJlIG1heSBiZSBzaW1pbGFyLiBUaGlzIGRpcmVjdG9yeSB3b3VsZCBsaWtlbHkgY29udGFpbiBpdHMgb3duIHRlc3Qgc3VpdGUgdGhhdCBtaWdodCBzaGVkIGxpZ2h0IG9uIGhvdyB0aGV5IGFwcHJvYWNoIHRlc3RpbmcgdGhlIGRlZXBlciwgbW9yZSBoYXJkd2FyZS1zcGVjaWZpYyBpbnRlcmFjdGlvbnMsIG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgcHJvdmlkZSBhIG1vcmUgc3VpdGFibGUgc3RhcnRpbmcgcG9pbnQuIEkmIzM5O20gaG9waW5nIHRvIGRpc2NvdmVyIHRoZSB0ZXN0aW5nIG1ldGhvZG9sb2dpZXMgb3Igc3RydWN0dXJlcyB0aGF0IGFyZSB1c2VkLCB3aGljaCBJIGNhbiBhZGFwdCBmb3IgbXkgb3duIG5lZWRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxOTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7ZGV2aW5mby5jJiMzNDssCiAgICAmIzM0O21vZHVsZS5jJiMzNDssCiAgICAmIzM0O252bV9wYXJzZS5jJiMzNDssCiAgICAmIzM0O3V0aWxzLmMmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IG51bGwKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxOTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDM0NAoJCQkJCQkJb3V0cHV0OiAxNDAKCQkJCQkJCXRob3VnaHRzOiAyMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5yZWFjaGFibGUgQ29kZSBpbiBpd2x3aWZpIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgYXQgdGhlc2UgdGVzdHMsIGFuZCBpdCYjMzk7cyBjbGVhciB0aGV5JiMzOTtyZSBub3QgdG91Y2hpbmcgdGhlIGNvZGUgSSYjMzk7dmUganVzdCBtb2RpZmllZC4gU3BlY2lmaWNhbGx5LCB0aGUgS1VuaXQgdGVzdHMgZm9yIGBkZXZpbmZvYCwgYG52bV9wYXJzZWAsIGFuZCBgdXRpbHNgIGFyZW4mIzM5O3QgY292ZXJpbmcgYW55dGhpbmcgaW4gYGZ3L2FjcGkuY2AsIGBmdy91ZWZpLmNgLCBgaXdsLWRiZy10bHYuY2AsIG9yIGBpd2wtZHJ2LmNgLiBUaGF0JiMzOTtzIGEgcHJvYmxlbS4gTXkgY2hhbmdlcyBhcmUgaW4gZmlybXdhcmUgcGFyc2luZyBhbmQgQUNQSS9VRUZJIHRhYmxlIGhhbmRsaW5nIHdpdGhpbiB0aGUgSW50ZWwgV2lyZWxlc3MgV2lGaSBkcml2ZXIg4oCTIGEgUENJIGRyaXZlciwgaGFyZHdhcmUtc3BlY2lmaWMuIE5vdywgdGhlIGtleSBoZXJlIGlzIHRoZSBlbnZpcm9ubWVudDogc3l6a2FsbGVyIGFuZCB0aGVzZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIGFuZCBHQ0UgKmRvbiYjMzk7dCogZW11bGF0ZSBJbnRlbCBXaS1GaSBoYXJkd2FyZS4gVGhlIGRyaXZlciB3b24mIzM5O3QgZXZlbiBwcm9iZSwgbWFraW5nIHRoZSBwYXJ0cyBJIGNoYW5nZWQgdW5yZWFjaGFibGUuIFRoaW5ncyBsaWtlIGBpd2xfcmVxX2Z3X2NhbGxiYWNrYCBhbmQgYGl3bF9wYXJzZV90bHZfZmlybXdhcmVgIGFyZSBkZWFkIGNvZGUgaW4gdGhpcyBjb250ZXh0LiBUaGVyZWZvcmUsIGZ1enppbmcgdGhvc2UgYXJlYXMgaXMgcG9pbnRsZXNzLiBJJiMzOTttIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTk6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBmaXJtd2FyZSBwYXJzaW5nIGFuZCBBQ1BJL1VFRkkgdGFibGUgcGFyc2luZyBsb2dpYyBpbiB0aGUgSW50ZWwgV2lyZWxlc3MgV2lGaSAoaXdsd2lmaSkgZHJpdmVyLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gU2luY2Ugc3l6a2FsbGVyIGFuZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSBkbyBub3QgZW11bGF0ZSBJbnRlbCBXaS1GaSBQQ0kgaGFyZHdhcmUsIHRoZSBkcml2ZXIgd2lsbCBuZXZlciBwcm9iZS4gQ29uc2VxdWVudGx5LCB0aGUgZmlybXdhcmUgcmVxdWVzdCBhbmQgcGFyc2luZyBwYXRocyAoZS5nLiwgaXdsX3JlcV9md19jYWxsYmFjaywgaXdsX3BhcnNlX3Rsdl9maXJtd2FyZSkgYXJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBmaXJtd2FyZSBwYXJzaW5nIGFuZCBBQ1BJL1VFRkkgdGFibGUgcGFyc2luZyBsb2dpYyBpbiB0aGUgSW50ZWwgV2lyZWxlc3MgV2lGaSAoaXdsd2lmaSkgZHJpdmVyLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gU2luY2Ugc3l6a2FsbGVyIGFuZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSBkbyBub3QgZW11bGF0ZSBJbnRlbCBXaS1GaSBQQ0kgaGFyZHdhcmUsIHRoZSBkcml2ZXIgd2lsbCBuZXZlciBwcm9iZS4gQ29uc2VxdWVudGx5LCB0aGUgZmlybXdhcmUgcmVxdWVzdCBhbmQgcGFyc2luZyBwYXRocyAoZS5nLiwgaXdsX3JlcV9md19jYWxsYmFjaywgaXdsX3BhcnNlX3Rsdl9maXJtd2FyZSkgYXJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NDk6NDUuNDMzNjc5MjU5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyNjgzMzIwODM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBmaXJtd2FyZSBwYXJzaW5nIGFuZCBBQ1BJL1VFRkkgdGFibGUgcGFyc2luZyBsb2dpYyBpbiB0aGUgSW50ZWwgV2lyZWxlc3MgV2lGaSAoaXdsd2lmaSkgZHJpdmVyLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gU2luY2Ugc3l6a2FsbGVyIGFuZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSBkbyBub3QgZW11bGF0ZSBJbnRlbCBXaS1GaSBQQ0kgaGFyZHdhcmUsIHRoZSBkcml2ZXIgd2lsbCBuZXZlciBwcm9iZS4gQ29uc2VxdWVudGx5LCB0aGUgZmlybXdhcmUgcmVxdWVzdCBhbmQgcGFyc2luZyBwYXRocyAoZS5nLiwgaXdsX3JlcV9md19jYWxsYmFjaywgaXdsX3BhcnNlX3Rsdl9maXJtd2FyZSkgYXJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo0OTo0NS40MzM2ODQyNDlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMTI5NTk5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDUyMzBmNWY2YjdjMDU4YzljNmZmYjU4NDk2ZjcyZThjYTVjNmUzMDlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMTcgMTk6NDk6NDQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuY1xcbmluZGV4IGJmMGY4NTFhOTA3NTU0Li40MzBhNzY0MmUwMWEzMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jXFxuQEAgLTg2NSw2ICs4NjUsMTEgQEAgaW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIG1pbl9zaXplLCBtYXhfc2l6ZSxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZ0YmxfcmV2KTtcXG4gXFx0XFx0aWYgKCFJU19FUlIod2lmaV9wa2cpKSB7XFxuK1xcdFxcdFxcdGlmICh0YmxfcmV2IFxcdTAwM2MgMCB8fFxcbitcXHRcXHRcXHQgICAgdGJsX3JldiBcXHUwMDNlPSBCSVRTX1BFUl9CWVRFICpcXG4rXFx0XFx0XFx0ICAgIHNpemVvZihyZXZfZGF0YVtpZHhdLnJldmlzaW9ucykpXFxuK1xcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4gXFx0XFx0XFx0aWYgKCEoQklUKHRibF9yZXYpIFxcdTAwMjYgcmV2X2RhdGFbaWR4XS5yZXZpc2lvbnMpKVxcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmNcXG5pbmRleCAyZWYwYTdhOTIwYWRiNS4uMDE0ZjIyYzQyZjQxYTkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY1xcbkBAIC03MDAsNyArNzAwLDcgQEAgaW50IGl3bF91ZWZpX2dldF9wcGFnX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4gXFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbiBwYXJzZV90YWJsZTpcXG4tXFx0aWYgKCEoQklUKGRhdGEtXFx1MDAzZXJldmlzaW9uKSBcXHUwMDI2IHZhbGlkX3JldikpIHtcXG4rXFx0aWYgKGRhdGEtXFx1MDAzZXJldmlzaW9uIFxcdTAwM2U9IDMyIHx8ICEoQklUKGRhdGEtXFx1MDAzZXJldmlzaW9uKSBcXHUwMDI2IHZhbGlkX3JldikpIHtcXG4gXFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4gXFx0XFx0SVdMX0RFQlVHX1JBRElPKGZ3cnQsXFxuIFxcdFxcdFxcdFxcdFxcXCJVbnN1cHBvcnRlZCBVRUZJIFBQQUcgcmV2aXNpb246JWRcXFxcblxcXCIsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuY1xcbmluZGV4IGQwMjFiMjRkMDRkNmI5Li5iMWE1NTkwOWYwZDRiYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmNcXG5AQCAtNDc1LDYgKzQ3NSw3IEBAIHN0YXRpYyBpbnQgaXdsX2RiZ190bHZfcGFyc2VfYmluKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCB1OCAqZGF0YSxcXG4ge1xcbiBcXHRjb25zdCBzdHJ1Y3QgaXdsX3Vjb2RlX3RsdiAqdGx2O1xcbiBcXHR1MzIgdGx2X2xlbjtcXG4rXFx0c2l6ZV90IGFsaWduZWRfdGx2X2xlbjtcXG4gXFxuIFxcdHdoaWxlIChsZW4gXFx1MDAzZT0gc2l6ZW9mKCp0bHYpKSB7XFxuIFxcdFxcdGxlbiAtPSBzaXplb2YoKnRsdik7XFxuQEAgLTQ4Nyw4ICs0ODgsMTYgQEAgc3RhdGljIGludCBpd2xfZGJnX3Rsdl9wYXJzZV9iaW4oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxcbiBcXHRcXHRcXHRcXHRsZW4sIHRsdl9sZW4pO1xcbiBcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0XFx0fVxcbi1cXHRcXHRsZW4gLT0gQUxJR04odGx2X2xlbiwgNCk7XFxuLVxcdFxcdGRhdGEgKz0gc2l6ZW9mKCp0bHYpICsgQUxJR04odGx2X2xlbiwgNCk7XFxuK1xcbitcXHRcXHRhbGlnbmVkX3Rsdl9sZW4gPSBBTElHTih0bHZfbGVuLCA0KTtcXG4rXFx0XFx0aWYgKGxlbiBcXHUwMDNjIGFsaWduZWRfdGx2X2xlbikge1xcbitcXHRcXHRcXHRJV0xfRVJSKHRyYW5zLCBcXFwiaW52YWxpZCBhbGlnbmVkIFRMViBsZW46ICV6ZC8lenVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdGxlbiwgYWxpZ25lZF90bHZfbGVuKTtcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdGxlbiAtPSBhbGlnbmVkX3Rsdl9sZW47XFxuK1xcdFxcdGRhdGEgKz0gc2l6ZW9mKCp0bHYpICsgYWxpZ25lZF90bHZfbGVuO1xcbiBcXG4gXFx0XFx0aXdsX2RiZ190bHZfYWxsb2ModHJhbnMsIHRsdiwgdHJ1ZSk7XFxuIFxcdH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuY1xcbmluZGV4IDg0MjU4NmQ0ZmM1Y2U0Li43ZjE1MTVkZmM1YmY5ZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jXFxuQEAgLTQ5Miw3ICs0OTIsNyBAQCBzdGF0aWMgdm9pZCBzZXRfc2VjX29mZnNldChzdHJ1Y3QgaXdsX2Zpcm13YXJlX3BpZWNlcyAqcGllY2VzLFxcbiAgKiBHZXRzIHVDb2RlIHNlY3Rpb24gZnJvbSB0bHYuXFxuICAqL1xcbiBzdGF0aWMgaW50IGl3bF9zdG9yZV91Y29kZV9zZWMoc3RydWN0IGZ3X2ltZ19wYXJzaW5nICppbWcsXFxuLVxcdFxcdFxcdCAgICAgICBjb25zdCB2b2lkICpkYXRhLCBpbnQgc2l6ZSlcXG4rXFx0XFx0XFx0ICAgICAgIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKVxcbiB7XFxuIFxcdHN0cnVjdCBmd19zZWMgKnNlYztcXG4gXFx0Y29uc3Qgc3RydWN0IGZ3X3NlY19wYXJzaW5nICpzZWNfcGFyc2U7XFxuQEAgLTUwMSw2ICs1MDEsOSBAQCBzdGF0aWMgaW50IGl3bF9zdG9yZV91Y29kZV9zZWMoc3RydWN0IGZ3X2ltZ19wYXJzaW5nICppbWcsXFxuIFxcdGlmIChXQVJOX09OKCFpbWcgfHwgIWRhdGEpKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuK1xcdGlmIChzaXplIFxcdTAwM2Mgc2l6ZW9mKHNlY19wYXJzZS1cXHUwMDNlb2Zmc2V0KSlcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbiBcXHRzZWNfcGFyc2UgPSAoY29uc3Qgc3RydWN0IGZ3X3NlY19wYXJzaW5nICopZGF0YTtcXG4gXFxuIFxcdGFsbG9jX3NpemUgPSBzaXplb2YoKmltZy1cXHUwMDNlc2VjKSAqIChpbWctXFx1MDAzZXNlY19jb3VudGVyICsgMSk7XFxuQEAgLTgwNCw2ICs4MDcsNyBAQCBzdGF0aWMgaW50IGl3bF9wYXJzZV90bHZfZmlybXdhcmUoc3RydWN0IGl3bF9kcnYgKmRydixcXG4gXFx0dTMyIGJ1aWxkLCBwYWdpbmdfbWVtX3NpemU7XFxuIFxcdGludCBudW1fb2ZfY3B1cztcXG4gXFx0Ym9vbCB1c25pZmZlcl9yZXEgPSBmYWxzZTtcXG4rXFx0c2l6ZV90IGFsaWduZWRfdGx2X2xlbjtcXG4gXFxuIFxcdGlmIChsZW4gXFx1MDAzYyBzaXplb2YoKnVjb2RlKSkge1xcbiBcXHRcXHRJV0xfRVJSKGRydiwgXFxcInVDb2RlIGhhcyBpbnZhbGlkIGxlbmd0aDogJXpkXFxcXG5cXFwiLCBsZW4pO1xcbkBAIC04NTIsOCArODU2LDE2IEBAIHN0YXRpYyBpbnQgaXdsX3BhcnNlX3Rsdl9maXJtd2FyZShzdHJ1Y3QgaXdsX2RydiAqZHJ2LFxcbiBcXHRcXHRcXHRcXHRsZW4sIHRsdl9sZW4pO1xcbiBcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0XFx0fVxcbi1cXHRcXHRsZW4gLT0gQUxJR04odGx2X2xlbiwgNCk7XFxuLVxcdFxcdGRhdGEgKz0gc2l6ZW9mKCp0bHYpICsgQUxJR04odGx2X2xlbiwgNCk7XFxuK1xcbitcXHRcXHRhbGlnbmVkX3Rsdl9sZW4gPSBBTElHTih0bHZfbGVuLCA0KTtcXG4rXFx0XFx0aWYgKGxlbiBcXHUwMDNjIGFsaWduZWRfdGx2X2xlbikge1xcbitcXHRcXHRcXHRJV0xfRVJSKGRydiwgXFxcImludmFsaWQgYWxpZ25lZCBUTFYgbGVuOiAlemQvJXp1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHRsZW4sIGFsaWduZWRfdGx2X2xlbik7XFxuK1xcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRsZW4gLT0gYWxpZ25lZF90bHZfbGVuO1xcbitcXHRcXHRkYXRhICs9IHNpemVvZigqdGx2KSArIGFsaWduZWRfdGx2X2xlbjtcXG4gXFxuIFxcdFxcdHN3aXRjaCAodGx2X3R5cGUpIHtcXG4gXFx0XFx0Y2FzZSBJV0xfVUNPREVfVExWX0lOU1Q6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjQ5OjQ1Ljk1NTc0OTkzMVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTUyMTYxMjQ0NTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBmaXJtd2FyZSBwYXJzaW5nIGFuZCBBQ1BJL1VFRkkgdGFibGUgcGFyc2luZyBsb2dpYyBpbiB0aGUgSW50ZWwgV2lyZWxlc3MgV2lGaSAoaXdsd2lmaSkgZHJpdmVyLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gU2luY2Ugc3l6a2FsbGVyIGFuZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSBkbyBub3QgZW11bGF0ZSBJbnRlbCBXaS1GaSBQQ0kgaGFyZHdhcmUsIHRoZSBkcml2ZXIgd2lsbCBuZXZlciBwcm9iZS4gQ29uc2VxdWVudGx5LCB0aGUgZmlybXdhcmUgcmVxdWVzdCBhbmQgcGFyc2luZyBwYXRocyAoZS5nLiwgaXdsX3JlcV9md19jYWxsYmFjaywgaXdsX3BhcnNlX3Rsdl9maXJtd2FyZSkgYXJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDUyMzBmNWY2YjdjMDU4YzljNmZmYjU4NDk2ZjcyZThjYTVjNmUzMDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxNyAxOTo0OTo0NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmNcbmluZGV4IGJmMGY4NTFhOTA3NTU0Li40MzBhNzY0MmUwMWEzMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuY1xuQEAgLTg2NSw2ICs4NjUsMTEgQEAgaW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbiBcdFx0XHRcdFx0XHQgICAgICAgbWluX3NpemUsIG1heF9zaXplLFxuIFx0XHRcdFx0XHRcdCAgICAgICBcdTAwMjZ0YmxfcmV2KTtcbiBcdFx0aWYgKCFJU19FUlIod2lmaV9wa2cpKSB7XG4rXHRcdFx0aWYgKHRibF9yZXYgXHUwMDNjIDAgfHxcbitcdFx0XHQgICAgdGJsX3JldiBcdTAwM2U9IEJJVFNfUEVSX0JZVEUgKlxuK1x0XHRcdCAgICBzaXplb2YocmV2X2RhdGFbaWR4XS5yZXZpc2lvbnMpKVxuK1x0XHRcdFx0Y29udGludWU7XG4rXG4gXHRcdFx0aWYgKCEoQklUKHRibF9yZXYpIFx1MDAyNiByZXZfZGF0YVtpZHhdLnJldmlzaW9ucykpXG4gXHRcdFx0XHRjb250aW51ZTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jXG5pbmRleCAyZWYwYTdhOTIwYWRiNS4uMDE0ZjIyYzQyZjQxYTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmNcbkBAIC03MDAsNyArNzAwLDcgQEAgaW50IGl3bF91ZWZpX2dldF9wcGFnX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbiBcdHJldHVybiAtRUlOVkFMO1xuIFxuIHBhcnNlX3RhYmxlOlxuLVx0aWYgKCEoQklUKGRhdGEtXHUwMDNlcmV2aXNpb24pIFx1MDAyNiB2YWxpZF9yZXYpKSB7XG4rXHRpZiAoZGF0YS1cdTAwM2VyZXZpc2lvbiBcdTAwM2U9IDMyIHx8ICEoQklUKGRhdGEtXHUwMDNlcmV2aXNpb24pIFx1MDAyNiB2YWxpZF9yZXYpKSB7XG4gXHRcdHJldCA9IC1FSU5WQUw7XG4gXHRcdElXTF9ERUJVR19SQURJTyhmd3J0LFxuIFx0XHRcdFx0XCJVbnN1cHBvcnRlZCBVRUZJIFBQQUcgcmV2aXNpb246JWRcXG5cIixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmNcbmluZGV4IGQwMjFiMjRkMDRkNmI5Li5iMWE1NTkwOWYwZDRiYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5jXG5AQCAtNDc1LDYgKzQ3NSw3IEBAIHN0YXRpYyBpbnQgaXdsX2RiZ190bHZfcGFyc2VfYmluKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCB1OCAqZGF0YSxcbiB7XG4gXHRjb25zdCBzdHJ1Y3QgaXdsX3Vjb2RlX3RsdiAqdGx2O1xuIFx0dTMyIHRsdl9sZW47XG4rXHRzaXplX3QgYWxpZ25lZF90bHZfbGVuO1xuIFxuIFx0d2hpbGUgKGxlbiBcdTAwM2U9IHNpemVvZigqdGx2KSkge1xuIFx0XHRsZW4gLT0gc2l6ZW9mKCp0bHYpO1xuQEAgLTQ4Nyw4ICs0ODgsMTYgQEAgc3RhdGljIGludCBpd2xfZGJnX3Rsdl9wYXJzZV9iaW4oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxuIFx0XHRcdFx0bGVuLCB0bHZfbGVuKTtcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0fVxuLVx0XHRsZW4gLT0gQUxJR04odGx2X2xlbiwgNCk7XG4tXHRcdGRhdGEgKz0gc2l6ZW9mKCp0bHYpICsgQUxJR04odGx2X2xlbiwgNCk7XG4rXG4rXHRcdGFsaWduZWRfdGx2X2xlbiA9IEFMSUdOKHRsdl9sZW4sIDQpO1xuK1x0XHRpZiAobGVuIFx1MDAzYyBhbGlnbmVkX3Rsdl9sZW4pIHtcbitcdFx0XHRJV0xfRVJSKHRyYW5zLCBcImludmFsaWQgYWxpZ25lZCBUTFYgbGVuOiAlemQvJXp1XFxuXCIsXG4rXHRcdFx0XHRsZW4sIGFsaWduZWRfdGx2X2xlbik7XG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdH1cbitcbitcdFx0bGVuIC09IGFsaWduZWRfdGx2X2xlbjtcbitcdFx0ZGF0YSArPSBzaXplb2YoKnRsdikgKyBhbGlnbmVkX3Rsdl9sZW47XG4gXG4gXHRcdGl3bF9kYmdfdGx2X2FsbG9jKHRyYW5zLCB0bHYsIHRydWUpO1xuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmNcbmluZGV4IDg0MjU4NmQ0ZmM1Y2U0Li43ZjE1MTVkZmM1YmY5ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuY1xuQEAgLTQ5Miw3ICs0OTIsNyBAQCBzdGF0aWMgdm9pZCBzZXRfc2VjX29mZnNldChzdHJ1Y3QgaXdsX2Zpcm13YXJlX3BpZWNlcyAqcGllY2VzLFxuICAqIEdldHMgdUNvZGUgc2VjdGlvbiBmcm9tIHRsdi5cbiAgKi9cbiBzdGF0aWMgaW50IGl3bF9zdG9yZV91Y29kZV9zZWMoc3RydWN0IGZ3X2ltZ19wYXJzaW5nICppbWcsXG4tXHRcdFx0ICAgICAgIGNvbnN0IHZvaWQgKmRhdGEsIGludCBzaXplKVxuK1x0XHRcdCAgICAgICBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSlcbiB7XG4gXHRzdHJ1Y3QgZndfc2VjICpzZWM7XG4gXHRjb25zdCBzdHJ1Y3QgZndfc2VjX3BhcnNpbmcgKnNlY19wYXJzZTtcbkBAIC01MDEsNiArNTAxLDkgQEAgc3RhdGljIGludCBpd2xfc3RvcmVfdWNvZGVfc2VjKHN0cnVjdCBmd19pbWdfcGFyc2luZyAqaW1nLFxuIFx0aWYgKFdBUk5fT04oIWltZyB8fCAhZGF0YSkpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuK1x0aWYgKHNpemUgXHUwMDNjIHNpemVvZihzZWNfcGFyc2UtXHUwMDNlb2Zmc2V0KSlcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4gXHRzZWNfcGFyc2UgPSAoY29uc3Qgc3RydWN0IGZ3X3NlY19wYXJzaW5nICopZGF0YTtcbiBcbiBcdGFsbG9jX3NpemUgPSBzaXplb2YoKmltZy1cdTAwM2VzZWMpICogKGltZy1cdTAwM2VzZWNfY291bnRlciArIDEpO1xuQEAgLTgwNCw2ICs4MDcsNyBAQCBzdGF0aWMgaW50IGl3bF9wYXJzZV90bHZfZmlybXdhcmUoc3RydWN0IGl3bF9kcnYgKmRydixcbiBcdHUzMiBidWlsZCwgcGFnaW5nX21lbV9zaXplO1xuIFx0aW50IG51bV9vZl9jcHVzO1xuIFx0Ym9vbCB1c25pZmZlcl9yZXEgPSBmYWxzZTtcbitcdHNpemVfdCBhbGlnbmVkX3Rsdl9sZW47XG4gXG4gXHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKnVjb2RlKSkge1xuIFx0XHRJV0xfRVJSKGRydiwgXCJ1Q29kZSBoYXMgaW52YWxpZCBsZW5ndGg6ICV6ZFxcblwiLCBsZW4pO1xuQEAgLTg1Miw4ICs4NTYsMTYgQEAgc3RhdGljIGludCBpd2xfcGFyc2VfdGx2X2Zpcm13YXJlKHN0cnVjdCBpd2xfZHJ2ICpkcnYsXG4gXHRcdFx0XHRsZW4sIHRsdl9sZW4pO1xuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHR9XG4tXHRcdGxlbiAtPSBBTElHTih0bHZfbGVuLCA0KTtcbi1cdFx0ZGF0YSArPSBzaXplb2YoKnRsdikgKyBBTElHTih0bHZfbGVuLCA0KTtcbitcbitcdFx0YWxpZ25lZF90bHZfbGVuID0gQUxJR04odGx2X2xlbiwgNCk7XG4rXHRcdGlmIChsZW4gXHUwMDNjIGFsaWduZWRfdGx2X2xlbikge1xuK1x0XHRcdElXTF9FUlIoZHJ2LCBcImludmFsaWQgYWxpZ25lZCBUTFYgbGVuOiAlemQvJXp1XFxuXCIsXG4rXHRcdFx0XHRsZW4sIGFsaWduZWRfdGx2X2xlbik7XG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdH1cbitcbitcdFx0bGVuIC09IGFsaWduZWRfdGx2X2xlbjtcbitcdFx0ZGF0YSArPSBzaXplb2YoKnRsdikgKyBhbGlnbmVkX3Rsdl9sZW47XG4gXG4gXHRcdHN3aXRjaCAodGx2X3R5cGUpIHtcbiBcdFx0Y2FzZSBJV0xfVUNPREVfVExWX0lOU1Q6XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo0OTo0NS45NTU3NTE2MDFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTkxMDgxNDY3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBpd2x3aWZpIERyaXZlciBQYXRjaGVzIGluIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgaXdsd2lmaWAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIG5ldyBib3VuZHMgYW5kIGFsaWdubWVudCBjaGVja3MgdGhleSd2ZSBhZGRlZC4gSXQncyBhY3Jvc3Mgc2V2ZXJhbCBmaWxlczogYGFjcGkuY2AsIGB1ZWZpLmNgLCBgaXdsLWRiZy10bHYuY2AsIGFuZCBgaXdsLWRydi5jYC4gVGhpcyBpcyBhbGwgYWJvdXQgZW5zdXJpbmcgZGF0YSBpbnRlZ3JpdHkgd2l0aGluIHRoZSBkcml2ZXIsIGdvb2Qgc3R1ZmYuIE15IG1haW4gY29uY2VybiwgdGhvdWdoLCBpcyB3aGV0aGVyIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGFjdHVhbGx5ICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgd2hpY2ggaXMgY3JpdGljYWwgZm9yIGZ1enppbmcgYW5kIHRlc3RpbmcuXG5cbkZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUuIGBpd2x3aWZpYCBpcyBmb3IgSW50ZWwgV2lyZWxlc3MgV2lGaSBOZXh0IEdlbiBBR04gaGFyZHdhcmUuIFRoYXQncyB0aGUgY29yZSBxdWVzdGlvbiDigJMgY2FuIHdlIHRyaWdnZXIgdGhlc2UgbmV3IGNoZWNrcyB3aXRoaW4gc29tZXRoaW5nIGxpa2UgR0NFIG9yIFFFTVU/IEkga25vdyBzeXprYWxsZXIgZG9lc24ndCBoYXZlIG5hdGl2ZSBJbnRlbCBXaS1GaSBlbXVsYXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBnb2VzIHRvIGBtYWM4MDIxMV9od3NpbWAgYXMgYSBzb2Z0d2FyZSBzaW11bGF0b3IuLi4gYnV0IHRoYXQgd29uJ3Qgd29yaywgcmlnaHQ/IEl0J3Mgc29mdHdhcmUsIG5vdCB1c2luZyBgaXdsd2lmaWAuXG5cbkFscmlnaHQsIGhvdyBhYm91dCBVU0I/IFNvbWV0aW1lcyB0aG9zZSBkcml2ZXJzIHN1cHBvcnQgVVNCLiBJIG5lZWQgdG8gY2xhcmlmeSB0aGF0LiBCdXQgdGhlbiBJIHJlbWVtYmVyOiBtb3N0bHkgUENJZS4gU28gbGlrZWx5IG5vdCBVU0IuIEdvdHRhIGNoZWNrIHRvIGJlIHN1cmUsIHRob3VnaC4gVGhlbiB0aGVyZSdzIGZpcm13YXJlIHBhcnNpbmcuIFRoaXMgaXMgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcuIElmIHRoZSBkcml2ZXIgcmVxdWVzdHMgZmlybXdhcmUsIGFuZCBzeXprYWxsZXIgY2FuIGZlZWQgaXQgZmFrZSBvciBmdXp6ZWQgZmlybXdhcmUgdGhyb3VnaCB0aGUgZmlybXdhcmUgbG9hZGVyLCB3ZSBjb3VsZCBiZSBpbiBidXNpbmVzcy4gU3l6a2FsbGVyICpjYW4qIHByb3ZpZGUgZmFrZSBmaXJtd2FyZSEgT2theSwgdGhhdCdzIGEga2V5IHBvaW50LlxuXG5Ib3dldmVyLCB0aGUgZHJpdmVyIG5lZWRzIHRvIGxvYWQgZmlyc3QsIHJpZ2h0PyBQQ0kgZHJpdmVycyB1c3VhbGx5IHByb2JlIGJhc2VkIG9uIFBDSSBJRHMuIFNvLCB3aXRob3V0IHRoZSByaWdodCBQQ0kgZGV2aWNlLCBpdCBtaWdodCBub3QgZXZlbiBsb2FkLiBCdXQgc3l6a2FsbGVyIGhhcyBgc3l6LXVzYmdlbmAgZm9yIFVTQiBhbmQgbWF5YmUsIGBzeXotcGNpZ2VuYD8gQ2FuIHN5emthbGxlciBlbXVsYXRlIFBDSSBkZXZpY2VzPyBOb3cgdGhhdCdzIHRoZSByZWFsIHF1ZXN0aW9uLiBXYWl0LCBkbyB3ZSBoYXZlIGFueSBQQ0kgZnV6emluZyBzdXBwb3J0PyBOb3QgYSBnZW5lcmljIGVtdWxhdG9yLCBidXQgbWF5YmUgdGhlcmUncyBzb21lLi4uIGFoLCBJIHRoaW5rIHRoZXJlIGlzIG5vdyFcblxuT2theSwgY2lyY2xpbmcgYmFjayB0byB0aGUgb3JpZ2luYWwgcHJvbXB0LCBpdCBzdHJlc3NlcyB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBJZiBgaXdsd2lmaWAgaXMgc3RyaWN0bHkgUENJLCBhbmQgd2UgKmRvbid0KiBoYXZlIFBDSSBlbXVsYXRpb24sIHRoZW4gd2UgbWlnaHQgYmUgc3R1Y2suIFNvLCB1bHRpbWF0ZWx5LCB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaXM6IGNhbiB0aGUgZHJpdmVyIGV2ZW4gYmUgcHJvYmVkIGluIHRoZXNlIGVudmlyb25tZW50cz8gR290dGEgZmluZCBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MDAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo0OTo1Ny44NjY1NjkzNjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYwMDM2OTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV9yZWdpc3Rlcl9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz0yMTA5PXN0YXRpYyBpbnQgX19pbml0IGl3bF9kcnZfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMjEyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoyMTIxOlxcdGVyciA9IGl3bF9wY2lfcmVnaXN0ZXJfZHJpdmVyKCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMjEyMi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaD0xMTQxPXN0YXRpYyBpbmxpbmUgdm9pZCBpd2xfdHJhbnNfbm90aWZ5X2Z3X2Vycm9yKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0xMTQ4LSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oOjExNDk6aW50IF9fbXVzdF9jaGVjayBpd2xfcGNpX3JlZ2lzdGVyX2RyaXZlcih2b2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTExNTAtdm9pZCBpd2xfcGNpX3VucmVnaXN0ZXJfZHJpdmVyKHZvaWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jPTEzMzg9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGl3bF9wY2lfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTEzNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jOjEzNDc6aW50IF9fbXVzdF9jaGVjayBpd2xfcGNpX3JlZ2lzdGVyX2RyaXZlcih2b2lkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMzQ4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTM0OS1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYzoxMzUwOlxcdHJldCA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNml3bF9wY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTM1MS1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo0OTo1OC4wMjY2MTQxODNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzAyMDc5MDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUENJIERyaXZlciBGdXp6aW5nIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIHRoaXMgaXMgYSBQQ0kgZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiBzeXprYWxsZXIgZXZlbiBmdXp6IHRoZXNlIHRoaW5ncyBlZmZlY3RpdmVseT8gSSBrbm93IHN5emthbGxlciBoYXMgc29tZSBLVk0gc2V0dXAgY2FsbHMgbGlrZSBgc3l6X2t2bV9zZXR1cF9jcHVgLCBidXQgZG9lcyBpdCBoYXZlIGEgd2F5IHRvIGluamVjdCBhcmJpdHJhcnkgUENJIGNvbmZpZ3VyYXRpb25zPyBJIHF1aWNrbHkgc2NhbiBteSBtZW50YWwgZGF0YWJhc2UuIE5vLCB3YWl0LCB0aGVyZSdzIG5vdCBhIGBzeXpfcGNpX2RldmljZWAgY2FsbCwgb3IgYW55dGhpbmcgc2ltaWxhciBmb3IgZ2VuZXJhbCBQQ0kgZGV2aWNlIGluc3RhbnRpYXRpb24uIEkgcmVtZW1iZXIgdGhpbmdzIGxpa2UgYHN5el9tb3VudF9pbWFnZWAsIGJ1dCB0aGF0J3MgYSBkaWZmZXJlbnQgYXJlYS5cblxuSG9sZCBvbiwgSSByZWNhbGwgdGhhdCBzeXprYWxsZXIgKmRvZXNuJ3QqIGhhdmUgYSBjb21wcmVoZW5zaXZlIFBDSSBlbXVsYXRvciB0byB0cmlnZ2VyIGdlbmVyaWMgUENJIHByb2Jlcy4gVW5sZXNzLCBvZiBjb3Vyc2UsIHRoZXJlJ3MgYSBzcGVjaWZpYyBQQ0kgZnV6emluZyBtb2R1bGUgdGhhdCBJJ20gZm9yZ2V0dGluZywgb3IgaXQncyBsZXZlcmFnaW5nIFFFTVUncyBQQ0kgZW11bGF0aW9uLiBCdXQgZXZlbiB0aGF0J3MgbGltaXRlZDsgUUVNVSB0eXBpY2FsbHkgZW11bGF0ZXMgc3BlY2lmaWMgZGV2aWNlcyBsaWtlIGUxMDAwIG9yIHZpcnRpbywgbm90IHNvbWV0aGluZyBsaWtlIGl3bHdpZmkuIERhbW4sIEkgdGhvdWdodCBJIGhhZCBhIHNvbHV0aW9uIGhlcmUuXG5cbldhaXQsIGlzIHRoZXJlIHRoYXQgYENPTkZJR19QQ0lfRU5EUE9JTlRfVEVTVGAgb3B0aW9uIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBJIHNob3VsZCBjaGVjayBpbnRvIHRoYXQuXG5cbk5vdywgaWYgSSB0aGluayBhYm91dCBpdCwgd2hhdCBpZiB0aGUgZHJpdmVyICppcyogbG9hZGVkLCBidXQgdGhlIGBwcm9iZWAgZnVuY3Rpb24gaXMgbmV2ZXIgY2FsbGVkIGJlY2F1c2UgdGhlcmUncyBubyBhY3R1YWwgaGFyZHdhcmUgdG8gdHJpZ2dlciBpdD8gVGhhdCB3b3VsZCBiZSBhIG1ham9yIHByb2JsZW0uXG5cbklmIGBwcm9iZWAgbmV2ZXIgcnVucywgdGhlbiBteSB0YXJnZXQsIGBpd2xfcGFyc2VfdGx2X2Zpcm13YXJlYCwgd2lsbCBhbHNvIG5ldmVyIGJlIGNhbGxlZC4gU28sIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGBpd2xfcGFyc2VfdGx2X2Zpcm13YXJlYCBpcyBjYWxsZWQgZnJvbSBhbnl3aGVyZSBlbHNlIGluIHRoZSBjb2RlLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gc2VlIGlmIGl0IGNhbiBiZSByZWFjaGVkIGluIGFub3RoZXIgd2F5LCBhbmQgdGh1cyBmdXp6ZWQgaW4gYSBkaWZmZXJlbnQgbWFubmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjIxLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUwOjA0LjMyODY5NjEyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNzAxOTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9wYXJzZV90bHZfZmlybXdhcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz03MzI9c3RhdGljIHZvaWQgaXdsX3BhcnNlX2RiZ190bHZfYXNzZXJ0X3RhYmxlcyhzdHJ1Y3QgaXdsX2RydiAqZHJ2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtNzkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjc5MjpzdGF0aWMgaW50IGl3bF9wYXJzZV90bHZfZmlybXdhcmUoc3RydWN0IGl3bF9kcnYgKmRydixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy03OTMtXFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IGZpcm13YXJlICp1Y29kZV9yYXcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz0xNjQ0PXN0YXRpYyB2b2lkIGl3bF9yZXFfZndfY2FsbGJhY2soY29uc3Qgc3RydWN0IGZpcm13YXJlICp1Y29kZV9yYXcsIHZvaWQgKmNvbnRleHQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xNjkzLVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoxNjk0OlxcdFxcdGVyciA9IGl3bF9wYXJzZV90bHZfZmlybXdhcmUoZHJ2LCB1Y29kZV9yYXcsIHBpZWNlcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xNjk1LVxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNmZ3LVxcdTAwM2V1Y29kZV9jYXBhLCBcXHUwMDI2dXNuaWZmZXJfaW1hZ2VzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTA6MDQuMzkxNDAyOTg2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc0MjY2MjMyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZpcm13YXJlIExvYWRpbmcgUHJvY2VzcyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgaXdsX3JlcV9md19jYWxsYmFja2AgZnVuY3Rpb24uIEZyb20gd2hhdCBJIHVuZGVyc3RhbmQsIHRoaXMgaXMgdGhlIGNhbGxiYWNrIHRoYXQgZ2V0cyB0cmlnZ2VyZWQgd2hlbiBmaXJtd2FyZSBpcyBzdWNjZXNzZnVsbHkgbG9hZGVkIGZvciBhbiBJbnRlbCB3aXJlbGVzcyBkZXZpY2UsIHJpZ2h0PyBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIEZpcm13YXJlIGxvYWRpbmcgaXMgYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBib290IHByb2Nlc3MgYW5kIGRyaXZlciBpbml0aWFsaXphdGlvbi5cblxuQnV0IHdhaXQsIHRoaXMgZnVuY3Rpb24gaXMgb25seSAqY2FsbGVkKiB3aGVuIGZpcm13YXJlIGlzICpyZXF1ZXN0ZWQqLiBBbmQgZmlybXdhcmUgaXMgb25seSByZXF1ZXN0ZWQgZHVyaW5nIHRoZSAqcHJvYmluZyogc3RhZ2Ugb2YgdGhlIGRldmljZS4gU28sIHRoZSByZWdpc3RyYXRpb24gb2YgdGhpcyBgaXdsX3JlcV9md19jYWxsYmFja2AgZnVuY3Rpb24gaXMgY2xlYXJseSBpbXBvcnRhbnQgdG8gdGhlIHByb3BlciBvcGVyYXRpb24gb2YgdGhlIGRyaXZlci5cblxuVGhlcmVmb3JlLCBJIG5lZWQgdG8gZmlndXJlIG91dCAqd2hlcmUqIHRoaXMgYGl3bF9yZXFfZndfY2FsbGJhY2tgIGlzIGJlaW5nIHJlZ2lzdGVyZWQgaW4gdGhlIGtlcm5lbCBjb2RlLiBVbmRlcnN0YW5kaW5nIGl0cyByZWdpc3RyYXRpb24gbG9jYXRpb24gd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgZmlybXdhcmUgbG9hZGluZyBhcmNoaXRlY3R1cmUgYW5kIGhvdyBpdCdzIGludGVncmF0ZWQgd2l0aGluIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gTGV0J3Mgc2VlIGlmIEkgY2FuIHRyYWNlIHRoYXQgZG93bi4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjMwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTA6MDguMTM0MDY3ODY5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDc3NDQxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfcmVxX2Z3X2NhbGxiYWNrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9MjkzPUlXTF9FWFBPUlRfU1lNQk9MKGl3bF9kcnZfZ2V0X2Z3bmFtZV9wcmUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTI5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoyOTU6c3RhdGljIHZvaWQgaXdsX3JlcV9md19jYWxsYmFjayhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKnVjb2RlX3JhdyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0yOTYtXFx0XFx0XFx0XFx0dm9pZCAqY29udGV4dCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz0zMjU9c3RhdGljIGludCBpd2xfcmVxdWVzdF9maXJtd2FyZShzdHJ1Y3QgaXdsX2RydiAqZHJ2LCBib29sIGZpcnN0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMzg1LVxcdFxcdFxcdFxcdCAgICAgICBkcnYtXFx1MDAzZXRyYW5zLVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6Mzg2OlxcdFxcdFxcdFxcdCAgICAgICBHRlBfS0VSTkVMLCBkcnYsIGl3bF9yZXFfZndfY2FsbGJhY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTM4Ny19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz0xNjIxPXN0YXRpYyB2b2lkIF9pd2xfb3BfbW9kZV9zdG9wKHN0cnVjdCBpd2xfZHJ2ICpkcnYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xNjM4LS8qXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6MTYzOTogKiBpd2xfcmVxX2Z3X2NhbGxiYWNrIC0gY2FsbGJhY2sgd2hlbiBmaXJtd2FyZSB3YXMgbG9hZGVkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTY0MC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTY0My0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoxNjQ0OnN0YXRpYyB2b2lkIGl3bF9yZXFfZndfY2FsbGJhY2soY29uc3Qgc3RydWN0IGZpcm13YXJlICp1Y29kZV9yYXcsIHZvaWQgKmNvbnRleHQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTY0NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC00OC0gKiAgICAoaXdsX2Rydl9zdGFydClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaDo0OTogKiA2KSBpd2xfZHJ2X3N0YXJ0IGZldGNoZXMgdGhlIGZ3IEFTWU5DLCBpd2xfcmVxX2Z3X2NhbGxiYWNrXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6NTA6ICogNykgaXdsX3JlcV9md19jYWxsYmFjayBwYXJzZXMgdGhlIGZ3IGZpbGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaDo1MTogKiA4KSBpd2xfcmVxX2Z3X2NhbGxiYWNrIHN0YXJ0cyB0aGUgd2lmaSBpbXBsZW1lbnRhdGlvbiB0byBtYXRjaGVzIHRoZSBmd1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTUyLSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MDowOC4yNDg4NDc3N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MDA1MDQ1MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRob3NlIHRob3VnaHRzIGZyb20gYSBmaXJzdC1wZXJzb24sIGV4cGVydCBwZXJzcGVjdGl2ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBJbnRlbCBXaXJlbGVzcyBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IG1pbmQgaXMgaW1tZWRpYXRlbHkgZHJhd24gdG8gdGhlIEludGVsIFdpcmVsZXNzIGRyaXZlciBzdGFydHVwIHNlcXVlbmNlLCBzcGVjaWZpY2FsbHkgYGl3bF9kcnZfc3RhcnRgLiAqVGhhdCogZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGZldGNoaW5nIHRoZSBmaXJtd2FyZSwgd2hpY2ggaXMgYSBjcnVjaWFsIGZpcnN0IHN0ZXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgaW5pdGlhdGlvbiBvY2N1cnMuIFNvLCB3aGVyZSBpbiB0aGUgY29kZSBpcyBgaXdsX2Rydl9zdGFydGAgYWN0dWFsbHkgKmNhbGxlZCo/IEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBncmFwaCB0byBzZWUgd2hhdCBldmVudHMgb3IgZnVuY3Rpb25zIHRyaWdnZXIgdGhpcyBjcml0aWNhbCBzdGVwLiBUaGF0IHdpbGwgaGVscCBtZSBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBmbG93IGFuZCBpZGVudGlmeSBwb3RlbnRpYWwgYXJlYXMgZm9yIG9wdGltaXphdGlvbiwgb3IgcGVyaGFwcyBldmVuIGRlYnVnZ2luZyBpZiBJJ20gbG9va2luZyBhdCBhbiBpc3N1ZS4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzdGFjayBhcm91bmQgYGl3bF9kcnZfc3RhcnRgIGlzIHZpdGFsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjYyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTA6MTIuNjQ5MzUzOTc4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjM2MzM4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfZHJ2X3N0YXJ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9MTY0ND1zdGF0aWMgdm9pZCBpd2xfcmVxX2Z3X2NhbGxiYWNrKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqdWNvZGVfcmF3LCB2b2lkICpjb250ZXh0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTk1OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoxOTYwOnN0cnVjdCBpd2xfZHJ2ICppd2xfZHJ2X3N0YXJ0KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE5NjEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtNDctICogNSkgVGhlIGJ1cyBzcGVjaWZpYyBjb21wb25lbnQgY2FsbHMgdG8gdGhlIGRydiBidXMgYWdub3N0aWMgcGFydFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oOjQ4OiAqICAgIChpd2xfZHJ2X3N0YXJ0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oOjQ5OiAqIDYpIGl3bF9kcnZfc3RhcnQgZmV0Y2hlcyB0aGUgZncgQVNZTkMsIGl3bF9yZXFfZndfY2FsbGJhY2tcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC01MC0gKiA3KSBpd2xfcmVxX2Z3X2NhbGxiYWNrIHBhcnNlcyB0aGUgZncgZmlsZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg9NTY9c3RydWN0IGl3bF9yZl9jZmc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtNTctLyoqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6NTg6ICogaXdsX2Rydl9zdGFydCAtIHN0YXJ0IHRoZSBkcnZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC01OS0gKlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtNjctICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6Njg6c3RydWN0IGl3bF9kcnYgKml3bF9kcnZfc3RhcnQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTY5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jPTQyMzI9aW50IGl3bF9wY2lfZ2VuMV8yX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTQzNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jOjQzNjg6XFx0aXdsX3RyYW5zLVxcdTAwM2VkcnYgPSBpd2xfZHJ2X3N0YXJ0KGl3bF90cmFucyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTQzNjktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUwOjEyLjcxNTcyMjQwNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NjU3MzI2MDMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFBDSSBGdXp6aW5nIERpbGVtbWEqKlxuXG5Pa2F5LCBzbyBgaXdsX3BjaV9nZW4xXzJfcHJvYmVgIGNhbGxzIGBpd2xfZHJ2X3N0YXJ0YC4gUmlnaHQsIHRoaXMgaXMgYSBQQ0kgZHJpdmVyLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIEkgZnV6eiB0aGlzIHdpdGggc3l6a2FsbGVyPyBTeXprYWxsZXIgZG9lc24ndCBoYXZlIGEgKmdlbmVyaWMqIFBDSSBmdXp6ZXIgdGhhdCBjYW4gcHJvYmUgYW55IFBDSSBkZXZpY2UsIEkga25vdyB0aGF0IG11Y2guIEJ1dCB3YWl0Li4uIGRpZG4ndCB0aGV5IGFkZCBzb21ldGhpbmcgZm9yIFBDSSBhIHdoaWxlIGJhY2s/IEkgc2hvdWxkIGNoZWNrIGlmIHRoZXJlJ3MgKmFueSogUENJIGZ1enppbmcgY2FwYWJpbGl0eS4gQWgsIGJ1dCB0aGUgcHJvbXB0IGRvZXMgc2F5IHNvbWV0aGluZyBhYm91dCBjb2RlIHBhdGhzIGJlaW5nIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemF0aW9uLCBlc3BlY2lhbGx5IHdoZW4gdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuXG5cbk9rYXksIHNvIGRvZXMgc3l6a2FsbGVyICplbXVsYXRlKiBQQ0kgZGV2aWNlcz8gTm8sIHRoYXQncyByaWdodC4gSXQgdXNlcyBgZHVtbXlfaGNkYCAodXNiIGdhZGdldCkgZm9yIFVTQi4gQnV0IGZvciBQQ0ksIHRoZXJlJ3Mgbm8gYGR1bW15X3BjaWAgZXF1aXZhbGVudCBpbiB0aGUga2VybmVsIHRvIGFsbG93IGluamVjdGluZyBhcmJpdHJhcnkgUENJIGRldmljZXMuIFxuXG5IYW5nIG9uLi4uIHdoYXQgYWJvdXQgYHZmaW9gIG9yIGBwY2lfZW5kcG9pbnRfdGVzdGA/IENvdWxkIHRob3NlIGJlIHVzZWZ1bCBoZXJlPyBMZXQncyBnbyBiYWNrIGFuZCBleHBsaWNpdGx5IHNlYXJjaCBmb3IgUENJIGZ1enppbmcgaW4gc3l6a2FsbGVyLiBEaWQgSSBjb25mdXNlIGl0IHdpdGggYHN5el9wY2lfZGV2aWNlYCBvciBzb21ldGhpbmc/IE5vLCB0aGF0J3Mgbm90IGl0LCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgdGhpbmdzIGxpa2UgYHN5el91c2JfY29ubmVjdGAsIGBzeXpfdXNiX2Rpc2Nvbm5lY3RgLCBgc3l6X3VzYl9jb250cm9sX2lvYC4uLiBidXQgbm90aGluZyBkaXJlY3RseSBlcXVpdmFsZW50IGZvciBQQ0kuIFxuXG5XYWl0LCB3YWl0Li4uIHdoYXQgYWJvdXQgYG1hYzgwMjExX2h3c2ltYD8gVGhhdCdzIGEgc29mdHdhcmUgc2ltdWxhdG9yIGZvciBXaS1GaSwgYnV0IGl0J3Mgbm90IGFjdHVhbGx5IHRoZSBgaXdsd2lmaWAgZHJpdmVyLCBpcyBpdD8gQ291bGQgSSByZWFjaCB0aGlzIHNwZWNpZmljIGNvZGUsIGBpd2x3aWZpYD8gSSBuZWVkIHRvIGNoZWNrIGlmIGBpd2x3aWZpYCBpdHNlbGYgaGFzIGFueSB2aXJ0dWFsIG9yIHNpbXVsYXRlZCBtb2Rlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODE5OCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MDoyMC4zNzMwNTE5MzdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1NjMyMDE3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYWM4MDIxMV9od3NpbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MDoyMC40Mzg2OTUwMTRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY4MzY4NDExNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBNaXNzaW5nIExpbmsqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyB0aHJvdWdoIHRoZSBgaXdsd2lmaWAga2VybmVsIG1vZHVsZSBhbmQgSSdtIG5vdCBzZWVpbmcgYW55IHJlZmVyZW5jZXMsIG5vdCBhIHNpbmdsZSBtZW50aW9uLCBvZiBgbWFjODAyMTFfaHdzaW1gLiBUaGF0J3MuLi4gdW51c3VhbC4gR2l2ZW4gbXkgZmFtaWxpYXJpdHkgd2l0aCB3aXJlbGVzcyBkcml2ZXJzLCBlc3BlY2lhbGx5IHdpdGhpbiB0aGUgTGludXgga2VybmVsLCBJJ2QgZXhwZWN0IHRvIGZpbmQgc29tZSBpbmRpY2F0aW9uIG9mIGludGVyYWN0aW9uLCBwZXJoYXBzIGEgYnJpZGdpbmcgcG9pbnQsIGlmIHRoZXJlIHdhcyBhIHRlc3Rpbmcgb3Igc2ltdWxhdGlvbiBkcml2ZXIgdGllZCBpbi5cblxuTXkgaW1tZWRpYXRlIGh5cG90aGVzaXMgaXMgdGhhdCB0aGVyZSBtaWdodCBiZSBhIGRlZGljYXRlZCB0ZXN0IG9yIFwiZHVtbXlcIiBkcml2ZXIsIHBlcmhhcHMgb25lIHVzZWQgaW50ZXJuYWxseSB3aXRoaW4gYGl3bHdpZmlgLCBvciBwZXJoYXBzIGEgc2VwYXJhdGUgbW9kdWxlIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBzaW11bGF0ZSB0aGUgaGFyZHdhcmUgaW50ZXJhY3Rpb24gZm9yIHRlc3RpbmcgcHVycG9zZXMuIEl0J3MgdGltZSB0byBicm9hZGVuIHRoZSBzZWFyY2guIEkgbmVlZCB0byBwaXZvdCBhbmQgZXhwbG9yZSB0aGUgc3Vycm91bmRpbmcgY29kZSwgdGhlIGJ1aWxkIGluZnJhc3RydWN0dXJlLCBhbmQgYW55IGV4aXN0aW5nIGRvY3VtZW50YXRpb24gZm9yIGBpd2x3aWZpYCB0byBzZWUgaWYgdGhlcmUncyBhbiBhbHRlcm5hdGl2ZSBhcHByb2FjaCB0byB0ZXN0aW5nIG9yIHNpbXVsYXRpbmcgaXRzIGhhcmR3YXJlLiBUaGlzIGlzbid0IGp1c3QgYWJvdXQgZmluZGluZyBgbWFjODAyMTFfaHdzaW1gIGRpcmVjdGx5OyBpdCdzIGFib3V0IHVuZGVyc3RhbmRpbmcgaG93IHRoZXkgKndvdWxkKiB0ZXN0IHRoaXMgdGhpbmcgaWYgdGhleSAqZGlkbid0KiB1c2UgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwNDAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MDoyNC4xMjIzODE4MDlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3NDI4MjY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImR1bW15XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZmguaC0zMC0gKiBEcml2ZXIgbXVzdCBhbGxvY2F0ZSBhIDRLQnl0ZSBidWZmZXIgdGhhdCBpcyBmb3Iga2VlcGluZyB0aGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1maC5oOjMxOiAqIGhvc3QgRFJBTSBwb3dlcmVkIG9uICh2aWEgZHVtbXkgYWNjZXNzZXMgdG8gRFJBTSkgdG8gbWFpbnRhaW4gbG93LWxhdGVuY3lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1maC5oOjMyOiAqIERSQU0gYWNjZXNzIHdoZW4gZG9pbmcgVHhpbmcgb3IgUnhpbmcuICBUaGUgZHVtbXkgYWNjZXNzZXMgcHJldmVudCBob3N0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZmguaC0zMy0gKiBmcm9tIGdvaW5nIGludG8gYSBwb3dlci1zYXZpbmdzIG1vZGUgdGhhdCB3b3VsZCBjYXVzZSBoaWdoZXIgRFJBTSBsYXRlbmN5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtbnZtLXBhcnNlLmM9MTcxMj1pd2xfcGFyc2VfbnZtX21jY19pbmZvKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtbnZtLXBhcnNlLmMtMTc1OS1cXHQgKiBzaW5jZSBjZmc4MDIxMSBkb2Vzbid0IGFjY2VwdCBhbiBlbXB0eSByZWdkb21haW4sIHdlIG5lZWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1udm0tcGFyc2UuYzoxNzYwOlxcdCAqIHRvIGFsbG9jYXRlIHNwYWNlIGZvciBhdCBsZWFzdCBvbmUgcnVsZSB0byBhZGQgYSBkdW1teVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLW52bS1wYXJzZS5jLTE3NjEtXFx0ICogKHVudXNhYmxlKSBydWxlIGluIHRoaXMgY2FzZSBzbyB3ZSBjYW4gaW5pdC5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLW52bS1wYXJzZS5jLTE4MzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtbnZtLXBhcnNlLmM6MTgzNzpcXHQvKiBJZiBubyB2YWxpZCBydWxlcyB3ZXJlIGZvdW5kLCBhZGQgYSBkdW1teSBydWxlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtbnZtLXBhcnNlLmMtMTgzOC1cXHRpZiAoIXZhbGlkX3J1bGVzKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jPTI0MDg9aXdsX21sZF9jaGFubmVsX3N3aXRjaChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmMtMjQxOS1cXHRJV0xfREVCVUdfTUFDODAyMTEobWxkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmM6MjQyMDpcXHRcXHRcXHQgICBcXFwiZHVtbXkgY2hhbm5lbCBzd2l0Y2ggb3BcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmMtMjQyMS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9jb2V4LmM9MTY9c3RhdGljIGNvbnN0IF9fbGU2NCBpd2xfY2lfbWFza1tdWzNdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2NvZXguYzoxNzpcXHQvKiBkdW1teSBlbnRyeSBmb3IgY2hhbm5lbCAwICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vY29leC5jLTE4LVxcdHtjcHVfdG9fbGU2NCgwKSwgY3B1X3RvX2xlNjQoMCksIGNwdV90b19sZTY0KDApfSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmM9NTM3MD12b2lkIGl3bF9tdm1fY2hhbm5lbF9zd2l0Y2goc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jLTUzNzktXFx0SVdMX0RFQlVHX01BQzgwMjExKElXTF9NQUM4MDIxMV9HRVRfTVZNKGh3KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jOjUzODA6XFx0XFx0XFx0ICAgXFxcImR1bW15IGNoYW5uZWwgc3dpdGNoIG9wXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jLTUzODEtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2N0eHQtaW5mby12Mi5jPTEwMD1pbnQgaXdsX3BjaWVfY3R4dF9pbmZvX3YyX2FsbG9jKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2N0eHQtaW5mby12Mi5jLTIwMS1cXHQgKiBXZSBhbHNvIHVzZSB0aGUgc2Vjb25kIGhhbGYgb2YgdGhpcyBwYWdlIHRvIGdpdmUgdGhlIGRldmljZSBzb21lXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2N0eHQtaW5mby12Mi5jOjIwMjpcXHQgKiBkdW1teSBUUi9DUiB0YWlsIHBvaW50ZXJzIC0gd2hpY2ggc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSBhcyB3ZSBkb24ndFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9jdHh0LWluZm8tdjIuYy0yMDMtXFx0ICogdXNlIHRoaXMsIGJ1dCB0aGUgaGFyZHdhcmUgc3RpbGwgcmVhZHMvd3JpdGVzIHRoZXJlIGFuZCB3ZSBjYW4ndCBsZXRcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYz0zODAwPWl3bF90cmFuc19wY2llX2FsbG9jKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTM4NzgtXFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jOjM4Nzk6XFx0dHJhbnNfcGNpZS1cXHUwMDNlbmFwaV9kZXYgPSBhbGxvY19uZXRkZXZfZHVtbXkoc2l6ZW9mKHN0cnVjdCBpd2xfdHJhbnNfcGNpZSAqKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTM4ODAtXFx0aWYgKCF0cmFuc19wY2llLVxcdTAwM2VuYXBpX2Rldikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MDoyNC4xODk4MjYyOTZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY5MDc4NTIwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGl3bHdpZmkgRHJpdmVyIGFuZCBGaXJtd2FyZSBQYXJzaW5nKipcblxuT2theSwgc28gdGhlcmUncyBubyB3YXkgdG8gdHJpY2sgdGhlIHN5c3RlbSBpbnRvIHRoaW5raW5nIHRoZXJlJ3MgYW4gaXdsd2lmaSBjYXJkIHByZXNlbnQgd2hlbiB0aGVyZSBpc24ndCwgcmlnaHQ/IFdhaXQuLi4gaXMgdGhlcmUgYSB3YXkgdG8gZm9yY2UgdGhlIGRyaXZlciB0byBsb2FkIGFuZCwgY3J1Y2lhbGx5LCB0cmlnZ2VyIHRoYXQgZmlybXdhcmUgcGFyc2luZyBldmVuIHdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlPyBUaGF0J3MgdGhlIHJlYWwgcXVlc3Rpb24uXG5cbkkgcmVtZW1iZXIgdGhlIGRyaXZlciByZWdpc3RlcnMgYXMgYSBQQ0kgZHJpdmVyLiBUaGUgcHJvYmUgZnVuY3Rpb24gaXMgc29tZXRoaW5nIGxpa2UgYGl3bF9wY2lfZ2VuMV8yX3Byb2JlYC4gTmF0dXJhbGx5LCB3aXRob3V0IHRoZSBoYXJkd2FyZSwgdGhhdCBwcm9iZSBmdW5jdGlvbiAqbmV2ZXIqIGdldHMgY2FsbGVkLiBBbmQgaWYgdGhhdCdzIG5ldmVyIGNhbGxlZCwgYGl3bF9kcnZfc3RhcnRgIGlzIG5ldmVyIGNhbGxlZC4gV2hpY2ggbWVhbnMgZmlybXdhcmUgaXNuJ3QgcmVxdWVzdGVkLiBUaGVyZWZvcmUgYGl3bF9yZXFfZndfY2FsbGJhY2tgIG5ldmVyIGhhcHBlbnMuIENvbnNlcXVlbnRseSBgaXdsX3BhcnNlX3Rsdl9maXJtd2FyZWAgaXMgbmV2ZXIgcmVhY2hlZC5cblxuU28sIGluIGEgcHVyZWx5IHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB3aXRob3V0IHNwZWNpZmljIEludGVsIFdpLUZpIGhhcmR3YXJlLCBteSBtb2RpZmllZCBjb2RlIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUuIFRoYXQncyBhIHNvbGlkIGNvbmNsdXNpb24uXG5cbkhvd2V2ZXIsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLi4uIGlzIHRoZXJlICphbnkqIG90aGVyIHBvc3NpYmxlIHBhdGggdG8gYGl3bF9wYXJzZV90bHZfZmlybXdhcmVgPyBJdCdzIHRpbWUgdG8gY2hlY2sgaWYgdGhhdCBmdW5jdGlvbiBpcyBleHBvcnRlZCwgb3IgaWYgaXQgaXMgY2FsbGVkIGZyb20gYW55d2hlcmUgZWxzZSBpbiB0aGUgY29kZSBiYXNlLiBMZXQncyBzZWUgaWYgdGhlcmUncyBhbnkgb3RoZXIgaG9vayB0aGF0IGNvdWxkIHRyaWdnZXIgdGhpcyBwYXJ0IG9mIHRoZSBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDcwMywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MDoyOS44ODA2MTM3MzFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2Njk0NzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9wYXJzZV90bHZfZmlybXdhcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz03MzI9c3RhdGljIHZvaWQgaXdsX3BhcnNlX2RiZ190bHZfYXNzZXJ0X3RhYmxlcyhzdHJ1Y3QgaXdsX2RydiAqZHJ2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtNzkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjc5MjpzdGF0aWMgaW50IGl3bF9wYXJzZV90bHZfZmlybXdhcmUoc3RydWN0IGl3bF9kcnYgKmRydixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy03OTMtXFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IGZpcm13YXJlICp1Y29kZV9yYXcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz0xNjQ0PXN0YXRpYyB2b2lkIGl3bF9yZXFfZndfY2FsbGJhY2soY29uc3Qgc3RydWN0IGZpcm13YXJlICp1Y29kZV9yYXcsIHZvaWQgKmNvbnRleHQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xNjkzLVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoxNjk0OlxcdFxcdGVyciA9IGl3bF9wYXJzZV90bHZfZmlybXdhcmUoZHJ2LCB1Y29kZV9yYXcsIHBpZWNlcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xNjk1LVxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNmZ3LVxcdTAwM2V1Y29kZV9jYXBhLCBcXHUwMDI2dXNuaWZmZXJfaW1hZ2VzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTA6MjkuOTQ3MzE1NzQ4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NzAxMzI4NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyB0aGUgY29udGV4dCBpcyBteSBhcmVhIG9mIGV4cGVydGlzZTpcblxuKipGaXJtd2FyZSBMb2FkaW5nIElucXVpcnkqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzLiBJIHNlZSB0aGF0IHRoaXMgYGl3bF9yZXFfZndfY2FsbGJhY2tgIGZ1bmN0aW9uIGlzIHRoZSBvbmx5IGNhbGxlciwgd2hpY2ggbWFrZXMgdGhlIGNvbnRyb2wgZmxvdyBhIGxvdCBzaW1wbGVyLCBidXQgSSBjYW4ndCBzaGFrZSB0aGUgbmFnZ2luZyBmZWVsaW5nIHRoYXQgdGhlcmUncyBhbm90aGVyIHBvaW50IG9mIGVudHJ5LiBTb21ldGhpbmcgbGlrZSBgaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGVgIGtlZXBzIHBvcHBpbmcgaW50byBtaW5kLCBjb3VsZCB0aGlzIGltcGFjdCB0aGUgd2hvbGUgZmlybXdhcmUgbG9hZGluZyBhcyB3ZWxsP1xuXG5cbiIsIklucHV0VG9rZW5zIjoxMTYxMiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUwOjMzLjYxNzQ1Mjg0M1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjczOTkzOTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYz02Mzk9aW50IGl3bF9hY3BpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jLTgwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYzo4MDQ6aW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYy04MDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg9MTgzPWludCBpd2xfYWNwaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTE4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaDoxODU6aW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmgtMTg2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg9MjM0PXN0YXRpYyBpbmxpbmUgaW50IGl3bF9hY3BpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTIzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaDoyMzk6c3RhdGljIGlubGluZSBpbnQgaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTI0MC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUwOjMzLjY4NDg2MTUxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzNDY0MTQyMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipUcmFjaW5nIHRoZSBgaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGVgIENhbGwgU2l0ZSoqXG5cbkFscmlnaHQsIHNvIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gYnV6emluZyBpbiBteSBoZWFkIGlzOiB3aGVyZSBleGFjdGx5IGlzIHRoaXMgYGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlYCBmdW5jdGlvbiBiZWluZyBpbnZva2VkPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gS25vd2luZyB0aGUgY2FsbCBzaXRlcyBpcyBjcnVjaWFsLiBJcyBpdCBwYXJ0IG9mIHRoZSBpbml0aWFsIGRyaXZlciBwcm9iZSwgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbj8gT3IgbWF5YmUgaXQncyB0cmlnZ2VyZWQgYnkgc29tZSBsYXRlciBldmVudCwgbGlrZSBhIHBvd2VyIG1hbmFnZW1lbnQgdHJhbnNpdGlvbiBvciBhbiBBQ1BJIG5vdGlmaWNhdGlvbj9cblxuSSdtIHRoaW5raW5nIEknbGwgc3RhcnQgYnkgZG9pbmcgYSBxdWljayBjb2RlIHNlYXJjaCwgbGlrZWx5IHdpdGggYGdyZXBgIG9yIHNpbWlsYXIsIHRvIGlkZW50aWZ5IHRoZSBzb3VyY2UgZmlsZXMgdGhhdCByZWZlcmVuY2UgdGhpcyBmdW5jdGlvbi4gT25jZSBJIGhhdmUgdGhlIGZpbGUgbGlzdCwgSSBjYW4gdGhlbiBkbyBhIG1vcmUgaW4tZGVwdGggYW5hbHlzaXMgb2YgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZ3Jhc3AgaXRzIHB1cnBvc2UuIE15IHByaW1hcnkgZ29hbCBoZXJlIGlzIHRvIGVzdGFibGlzaCB0aGUgY29udHJvbCBmbG93IGFuZCBkZXRlcm1pbmUgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhpcyBmdW5jdGlvbiBleGVjdXRlcy4gS25vd2luZyB0aGUgY2FsbCBjaGFpbiBpcyBrZXkgdG8gZGVidWdnaW5nIG9yIG1vZGlmeWluZyBpdHMgYmVoYXZpb3IuIEkgZXhwZWN0IHRvIGJlIGFibGUgdG8gcXVpY2tseSBkZXRlcm1pbmUgaG93IHRvIHRyYWNlIHRoZSBjYWxscywgYnkgdXNpbmcgYSBkZWJ1Z2dlciBvciBzaW1pbGFyIHRvb2xzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjI3NywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUwOjM5LjAzMTI3ODU0MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA1Mzk1MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYz02Mzk9aW50IGl3bF9hY3BpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jLTgwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYzo4MDQ6aW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYy04MDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg9MTgzPWludCBpd2xfYWNwaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTE4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaDoxODU6aW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmgtMTg2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg9MjM0PXN0YXRpYyBpbmxpbmUgaW50IGl3bF9hY3BpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTIzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaDoyMzk6c3RhdGljIGlubGluZSBpbnQgaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTI0MC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUwOjM5LjEwMTgyNTQ4OVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDAwODM4MDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuLi5cblxuKipDaGVja2luZyBmb3IgVW5leHBlY3RlZCBDYWxscyoqXG5cbkhvbGQgb24gYSBzZWNvbmQsIGFtIEkgcmVhZGluZyB0aGlzIHJpZ2h0PyBUaGlzIHNwZWNpZmljIHRoaW5nIGlzbid0IHJlZmVyZW5jZWQgKmFueXdoZXJlKiBlbHNlIGluIHRoZSBjb2RlYmFzZT8gVGhhdCBzZWVtcy4uLnVudXN1YWwuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhIGNyb3NzLXJlZmVyZW5jZSBzb21ld2hlcmUuIEl0J3MgZWFzeSB0byBvdmVybG9vayB0aGluZ3MgaW4gdGhlc2UgbGFyZ2UgZHJpdmVyIG1vZHVsZXMuXG5cblJpZ2h0LCBsZXQgbWUgZG91YmxlLWNoZWNrLiBJJ20gZ29pbmcgdG8gc2NhbiB0aGUgZW50aXJlIHByb2plY3QgdG8gY29uZmlybSB3aGV0aGVyIHRoaXMgY29kZSBwYXRoIGlzIGludm9rZWQgb3IgcGVyaGFwcyBoYXMgYW4gaW5kaXJlY3QgZGVwZW5kZW5jeSB0aGF0IEknbSBub3QgaW1tZWRpYXRlbHkgY29uc2lkZXJpbmcsIG9yIGV2ZW4gaWYgaXQgaXMgY2FsbGVkIGZyb20gb3V0c2lkZSB0aGUgYGl3bHdpZmlgIG1vZHVsZS4gTmVlZCB0byBlbnN1cmUgbm8gZXh0ZXJuYWwgY29tcG9uZW50cyBhcmUgaW50ZXJhY3Rpbmcgd2l0aCBpdCB1bmV4cGVjdGVkbHkuIEl0IHdvdWxkIGJlIGEgc2lnbmlmaWNhbnQgb3ZlcnNpZ2h0IGlmIHNvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzA0NiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUwOjQyLjUwMjY2NTc4OFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM1NTMxOTkxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfYWNwaV9nZXRfd2dkc190YWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmM9NjM5PWludCBpd2xfYWNwaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYy04MDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmM6ODA0OmludCBpd2xfYWNwaV9nZXRfd2dkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmMtODA1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oPTE4Mz1pbnQgaXdsX2FjcGlfZ2V0X2V3cmRfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaC0xODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg6MTg1OmludCBpd2xfYWNwaV9nZXRfd2dkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTE4Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oPTIzND1zdGF0aWMgaW5saW5lIGludCBpd2xfYWNwaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaC0yMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg6MjM5OnN0YXRpYyBpbmxpbmUgaW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaC0yNDAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MDo0NC44NTc5OTI5ODJaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTgyOTYxNjUwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZWJ1Z2dpbmcgYSBTdXNwZWN0IEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGZ1bmN0aW9uLCB3aGF0ZXZlciBpdCBpcywgaXMgYWN0dWFsbHkgKnVzZWQqLiBNeSBpbml0aWFsIGdyZXAgc2VhcmNoIGRpZG4ndCB0dXJuIHVwIGFueSBkaXJlY3QgY2FsbHMgdG8gaXQg4oCTIHRoYXQncyB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wZWQgb3V0IGF0IG1lLiBJJ20gdGhpbmtpbmcsIFwiV2FpdCwgaXMgaXQgbm90IGJlaW5nIGNhbGxlZCAqYW55d2hlcmUqPyBUaGF0IGNhbid0IGJlIHJpZ2h0IVwiXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGJyb2FkZW4gbXkgc2VhcmNoLiBJdCBjb3VsZCBiZSBjYWxsZWQgYnkgYW5vdGhlciBmdW5jdGlvbiBvciBtYWNybywgc28gYSBzaW1wbGUgZ3JlcCBtaWdodCBtaXNzIGl0LiBJIG5lZWQgdG8gZGlnIGRlZXBlci4gSSdtIGdvaW5nIHRvIGNoZWNrIHRoZSBtb3JlIG9idmlvdXMgcGxhY2VzIHdoZXJlIHRoaXMga2luZCBvZiBmdW5jdGlvbiBtaWdodCBiZSB1c2VkLiBJIHNob3VsZCBzdGFydCB3aXRoIGBpd2xfYWNwaV9nZXRfd2dkc190YWJsZWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmNgIG9yIG90aGVyIHNpbWlsYXIgZmlsZXMgdG8gYmUgc3VyZS5cblxuQnV0IGlmIHRoZXJlIGlzIG5vIGNhbGxzIHRvIHRoYXQgZnVuY3Rpb24sIHRoZW4gaXQgbmVlZHMgdG8gYmUga25vd24gaG93IGl0IGlzIHVzZWQuIEknbSBzdGFydGluZyB0byBjb25zaWRlciBvdGhlciBwb3NzaWJpbGl0aWVzOyBpcyBpdCBiZWluZyBhY2Nlc3NlZCB2aWEgYSBmdW5jdGlvbiBwb2ludGVyPyBJZiB0aGF0J3MgdGhlIGNhc2UsIGEgZGlyZWN0IGdyZXAgb24gdGhlIGZ1bmN0aW9uIG5hbWUgd29uJ3Qgd29yay4gVGhlIGZ1bmN0aW9uIHdvdWxkIGJlIGNhbGxlZCBpbmRpcmVjdGx5LlxuXG5BbHJpZ2h0LCB0aW1lIHRvIHNoaWZ0IGdlYXJzIGFuZCBjaGVjayBmb3IgdGhlIGluZGlyZWN0IHVzZS4gSSBzaG91bGQgbG9vayBpbnRvIHRoZSBzb3VyY2UgZmlsZXMgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmNgIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuY2AsIHdoZXJlIGZ1bmN0aW9uIHBvaW50ZXJzIG1pZ2h0IGJlIHVzZWQuIEhvcGVmdWxseSwgdGhpcyBhcHByb2FjaCB3aWxsIHJldmVhbCBob3cgdGhlIGZ1bmN0aW9uIGlzIGludm9rZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNzI5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUwOjUwLjY4NzYxMjIxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjYwMzk1NzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndnZHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYz02Mzk9aW50IGl3bF9hY3BpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jLTgwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYzo4MDQ6aW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYy04MDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg9MTgzPWludCBpd2xfYWNwaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTE4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaDoxODU6aW50IGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmgtMTg2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmg9MjM0PXN0YXRpYyBpbmxpbmUgaW50IGl3bF9hY3BpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTIzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuaDoyMzk6c3RhdGljIGlubGluZSBpbnQgaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5oLTI0MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuYz0zND1JV0xfQklPU19UQUJMRV9MT0FERVIoZXdyZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9yZWd1bGF0b3J5LmM6MzU6SVdMX0JJT1NfVEFCTEVfTE9BREVSKHdnZHNfdGFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jLTM2LUlXTF9CSU9TX1RBQkxFX0xPQURFUihwcGFnX3RhYmxlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5oPTIwNz1pbnQgaXdsX2Jpb3NfZ2V0X2V3cmRfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuaC0yMDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9yZWd1bGF0b3J5Lmg6MjA5OmludCBpd2xfYmlvc19nZXRfd2dkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5oLTIxMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTUzOT1pbnQgaXdsX3VlZmlfZ2V0X2V3cmRfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjU5MzppbnQgaXdsX3VlZmlfZ2V0X3dnZHNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTU5NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NTk1OlxcdHN0cnVjdCB1ZWZpX2Nudl92YXJfd2dkcyAqZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01OTYtXFx0dW5zaWduZWQgbG9uZyBleHBlY3RlZF9zaXplO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg9MTMwPXN0cnVjdCB1ZWZpX2Nudl92YXJfZXdyZCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xNDUtLyoqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MTQ2OiAqIHN0cnVjdCB1ZWZpX2Nudl92YXJfd2dkcyAtIFdHRFMgdGFibGUgYXMgZGVmaW5lZCBpbiBVRUZJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTQ3LSAqIEByZXZpc2lvbjogdGhlIHJldmlzaW9uIG9mIHRoZSB0YWJsZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTU1LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjE1NjpzdHJ1Y3QgdWVmaV9jbnZfdmFyX3dnZHMge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE1Ny1cXHR1OCByZXZpc2lvbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE2OS0jZGVmaW5lIFVFRklfV0dEU19UQUJMRV9TSVpFX1JFVjNcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MTcwOlxcdChvZmZzZXRvZihzdHJ1Y3QgdWVmaV9jbnZfdmFyX3dnZHMsIHZhbHMpICtcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTcxLVxcdCBVRUZJX1dHRFNfUFJPRklMRV9TSVpFX1JFVjMgKiBCSU9TX0dFT19NQVhfUFJPRklMRV9OVU0pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xNzMtI2RlZmluZSBVRUZJX1dHRFNfVEFCTEVfU0laRV9SRVY0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjE3NDpcXHQob2Zmc2V0b2Yoc3RydWN0IHVlZmlfY252X3Zhcl93Z2RzLCB2YWxzKSArXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE3NS1cXHQgVUVGSV9XR0RTX1BST0ZJTEVfU0laRV9SRVY0ICogQklPU19HRU9fTUFYX1BST0ZJTEVfTlVNKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg9MzM0PWludCBpd2xfdWVmaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjMzNTppbnQgaXdsX3VlZmlfZ2V0X3dnZHNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0zMzYtaW50IGl3bF91ZWZpX2dldF9wcGFnX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaD0zOTE9c3RhdGljIGlubGluZSBpbnQgaXdsX3VlZmlfZ2V0X2V3cmRfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMzk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjM5NjpzdGF0aWMgaW5saW5lIGludCBpd2xfdWVmaV9nZXRfd2dkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMzk3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3JlZ3VsYXRvcnkuYz0xNj12b2lkIGl3bF9tbGRfZ2V0X2Jpb3NfdGFibGVzKHN0cnVjdCBpd2xfbWxkICptbGQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9yZWd1bGF0b3J5LmMtMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvcmVndWxhdG9yeS5jOjM5OlxcdFxcdGlmICghaXdsX2Jpb3NfZ2V0X3dnZHNfdGFibGUoXFx1MDAyNm1sZC1cXHUwMDNlZndydCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9yZWd1bGF0b3J5LmMtNDAtXFx0XFx0XFx0LyogSWYgYmFzaWMgU0FSIGlzIG5vdCBhdmFpbGFibGUsIHdlIGNoZWNrIGZvciBXR0RTLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvcmVndWxhdG9yeS5jLTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3JlZ3VsYXRvcnkuYzo1ODpcXHRcXHRyZXQgPSBpd2xfYmlvc19nZXRfd2dkc190YWJsZShcXHUwMDI2bWxkLVxcdTAwM2Vmd3J0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9yZWd1bGF0b3J5LmMtNTktXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9yZWd1bGF0b3J5LmM9NzI9c3RhdGljIGludCBpd2xfbWxkX2dlb19zYXJfaW5pdChzdHJ1Y3QgaXdsX21sZCAqbWxkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvcmVndWxhdG9yeS5jLTEwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9yZWd1bGF0b3J5LmM6MTA3OlxcdC8qIEl0IGlzIGEgdmFsaWQgc2NlbmFyaW8gdG8gbm90IHN1cHBvcnQgU0FSLCBvciBtaXNzIHdnZHMgdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvcmVndWxhdG9yeS5jLTEwOC1cXHQgKiBidXQgaW4gdGhhdCBjYXNlIHRoZXJlIGlzIG5vIG5lZWQgdG8gc2VuZCB0aGUgY29tbWFuZC5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmM9OTc3PXN0YXRpYyBpbnQgaXdsX212bV9zYXJfZ2VvX2luaXQoc3RydWN0IGl3bF9tdm0gKm12bSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmMtMTA0NC1cXHQvKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmM6MTA0NTpcXHQgKiBJdCBpcyBhIHZhbGlkIHNjZW5hcmlvIHRvIG5vdCBzdXBwb3J0IFNBUiwgb3IgbWlzcyB3Z2RzIHRhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmMtMTA0Ni1cXHQgKiBidXQgaW4gdGhhdCBjYXNlIHRoZXJlIGlzIG5vIG5lZWQgdG8gc2VuZCB0aGUgY29tbWFuZC5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmM9MTUyOT12b2lkIGl3bF9tdm1fZ2V0X2Jpb3NfdGFibGVzKHN0cnVjdCBpd2xfbXZtICptdm0pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jLTE1NTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYzoxNTUzOlxcdFxcdGlmICghaXdsX2Jpb3NfZ2V0X3dnZHNfdGFibGUoXFx1MDAyNm12bS1cXHUwMDNlZndydCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jLTE1NTQtXFx0XFx0XFx0LypcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmMtMTU3My1cXHRcXHRpZiAoaXdsX3Nhcl9nZW9fc3VwcG9ydChcXHUwMDI2bXZtLVxcdTAwM2Vmd3J0KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmM6MTU3NDpcXHRcXHRcXHRyZXQgPSBpd2xfYmlvc19nZXRfd2dkc190YWJsZShcXHUwMDI2bXZtLVxcdTAwM2Vmd3J0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jLTE1NzUtXFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9udm0uYz01OTE9dm9pZCBpd2xfbXZtX3J4X2NodWJfdXBkYXRlX21jYyhzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbnZtLmMtNTk4LVxcdHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluICpyZWdkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL252bS5jOjU5OTpcXHRpbnQgd2dkc190YmxfaWR4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL252bS5jLTYwMC1cXHRib29sIGNoYW5nZWQgPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL252bS5jLTYyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9udm0uYzo2Mjk6XFx0d2dkc190YmxfaWR4ID0gaXdsX212bV9nZXRfc2FyX2dlb19wcm9maWxlKG12bSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbnZtLmM6NjMwOlxcdGlmICh3Z2RzX3RibF9pZHggXFx1MDAzYyAxKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL252bS5jLTYzMS1cXHRcXHRJV0xfREVCVUdfSU5GTyhtdm0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbnZtLmMtNjMyLVxcdFxcdFxcdCAgICAgICBcXFwiU0FSIFdHRFMgaXMgZGlzYWJsZWQgb3IgZXJyb3IgcmVjZWl2ZWQgKCVkKVxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9udm0uYzo2MzM6XFx0XFx0XFx0ICAgICAgIHdnZHNfdGJsX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbnZtLmMtNjM0LVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9udm0uYy02MzUtXFx0XFx0SVdMX0RFQlVHX0lORk8obXZtLCBcXFwiU0FSIFdHRFM6IGdlbyBwcm9maWxlICVkIGlzIGNvbmZpZ3VyZWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbnZtLmM6NjM2OlxcdFxcdFxcdCAgICAgICB3Z2RzX3RibF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL252bS5jLTYzNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTA6NTIuMzQ4MDEyNjg2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxOTI4NDQ4MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBBdHRhY2sgU3VyZmFjZSBvZiB0aGUgaXdsd2lmaSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBpd2xfYmlvc19nZXRfd2dkc190YWJsZWAgZnVuY3Rpb24sIGFuZCBpdCBzZWVtcyB0byBjYWxsIGVpdGhlciBgaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGVgIG9yIGBpd2xfdWVmaV9nZXRfd2dkc190YWJsZWAuIFJpZ2h0LCBhbmQgYGl3bF9tdm1fZ2V0X2Jpb3NfdGFibGVzYCBpcyBhbHNvIGluIHRoZSBtaXgsIGNhbGxlZCBmcm9tIGBpd2xfbXZtX21hY19zZXR1cF9yZWdpc3RlcmAgYW5kIHNpbWlsYXIgcGxhY2VzLiBUaGUgY29yZSBvZiB0aGlzIGlzIGFsbCBwYXJ0IG9mIHRoZSBpd2x3aWZpIGRyaXZlciwgd2hpY2ggaXMsIG9idmlvdXNseSwgYSBQQ0kgZHJpdmVyLiBUaGUgY3JpdGljYWwgcG9pbnQgaXM6IGlmIHRoZXJlIGlzbid0IHJlYWwgaGFyZHdhcmUsIHRoZSBkcml2ZXIgaXNuJ3QgZ29pbmcgdG8gcHJvYmUsIGFuZCBub25lIG9mIHRoaXMgY29kZSB3aWxsIGV2ZW4gYmUgdG91Y2hlZC5cblxuVGhlIG1pbGxpb24tZG9sbGFyIHF1ZXN0aW9uOiBDYW4gSSB0cmlnZ2VyIHRoaXMgc3R1ZmYgd2l0aCBzeXprYWxsZXI/IFN5emthbGxlciBkb2Vzbid0IHR5cGljYWxseSBoYXZlIGEgZ2VuZXJhbCBQQ0kgZW11bGF0b3IsIGJ1dCBJIHNlZW0gdG8gcmVjYWxsIHNvbWV0aGluZyBhYm91dCB0aGF0IGNoYW5naW5nIHJlY2VudGx5LiBMZXQncyBkb3VibGUtY2hlY2suIERvZXMgc3l6a2FsbGVyIGhhdmUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzPyBObywgd2FpdCwgaXMgdGhlcmUgc29tZXRoaW5nIGxpa2UgYHN5el9wY2lfZGV2aWNlYD8gTm9wZSwgbm90aGluZyBsaWtlIHRoYXQuXG5cbkFscmlnaHQsIGxldCdzIHRyeSBhIGRpZmZlcmVudCBhcHByb2FjaC4gTGV0J3MgZGVsdmUgaW50byB0aGUga2VybmVsIHNvdXJjZSBhbmQgc2VlIGlmIEkgY2FuIGZpbmQgYSBob29rLCBzb21lIGBwY2lfZW5kcG9pbnRfdGVzdGAsIG9yIGB2ZmlvYCBpbnRlcmZhY2UsIGFueXRoaW5nIHRoYXQgd291bGQgYWxsb3cgbWUgdG8gaW5qZWN0IGEgUENJIGRldmljZS4gSG9sZCBvbiBhIHNlY29uZCwgd2Fzbid0IHRoZXJlIHNvbWV0aGluZyBhYm91dCBgc3l6X2t2bV9zZXR1cF9jcHVgIGFuZCBgc3l6X3VzYl9jb25uZWN0YD8gQWgsIEkgc2VlIHdoYXQncyBoYXBwZW5pbmcuIFN5emthbGxlciBjYW4gZnV6eiBQQ0kgZGV2aWNlcyBpZiB0aGV5IGFyZSBzb21laG93IGV4cG9zZWQuIFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhleSB1c3VhbGx5IGFyZSBub3QgZXhwb3NlZC5cblxuT2theSwgbGV0J3MgZXhwbG9yZSBpZiBJIGNhbiB1c2UgdGhlIGBtYWM4MDIxMV9od3NpbWAgZHJpdmVyLCB0byBpbmRpcmVjdGx5IGZ1enogdGhlIGBpd2x3aWZpYCBkcml2ZXIuIE5vcGUsIHRoYXQncyBhIGRlYWQgZW5kLiBgbWFjODAyMTFfaHdzaW1gIGlzIGNvbXBsZXRlbHkgc2VwYXJhdGUuXG5cbkZpbmFsbHksIEknbGwgY2hlY2sgaWYgdGhlIGBpd2x3aWZpYCBkcml2ZXIgaGFzIGFueSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBtaWdodCBlbmFibGUgc29tZSBraW5kIG9mIHRlc3QgbW9kZS4gTWF5YmUgdGhlcmUncyBhIGhpZGRlbiBmbGFnIEkgY2FuIGxldmVyYWdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzM5NCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MDo1OS41NDA4NjAzOTFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3ODM0ODQxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVdMV0lGSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoyOmNvbmZpZyBJV0xXSUZJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkludGVsIFdpcmVsZXNzIFdpRmkgTmV4dCBHZW4gQUdOIC0gV2lyZWxlc3MtTi9BZHZhbmNlZC1OL1VsdGltYXRlLU4gKGl3bHdpZmkpIFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz00Nz1pZiBJV0xXSUZJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo0OTpjb25maWcgSVdMV0lGSV9LVU5JVF9URVNUU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01MC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo1ODpjb25maWcgSVdMV0lGSV9MRURTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU5LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz04ND1jb25maWcgSVdMTUxEXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTQtIyBkb24ndCBjYWxsIGl0IF9NT0RVTEUgLS0gd2lsbCBjb25mdXNlIEtjb25maWcvZml4ZGVwLy4uLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo5NTpjb25maWcgSVdMV0lGSV9PUE1PREVfTU9EVUxBUlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05Ni1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTA1PW1lbnUgXFxcIkRlYnVnZ2luZyBPcHRpb25zXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEwNzpjb25maWcgSVdMV0lGSV9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDgtXFx0Ym9vbCBcXFwiRW5hYmxlIGZ1bGwgZGVidWdnaW5nIG91dHB1dCBpbiB0aGUgaXdsd2lmaSBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzE6Y29uZmlnIElXTFdJRklfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzItXFx0Ym9vbCBcXFwiaXdsd2lmaSBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzk6Y29uZmlnIElXTFdJRklfREVWSUNFX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTQwLVxcdGJvb2wgXFxcIml3bHdpZmkgZGV2aWNlIGFjY2VzcyB0cmFjaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MTowMC4wMTkyMTUwMTlaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE4MjI2NTU0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqS1VuaXQgVGVzdCBDb3ZlcmFnZSBDaGVjayoqXG5cbk9rYXksIHNvIEkgc2VlIGBJV0xXSUZJX0tVTklUX1RFU1RTYCBsaXN0ZWQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkRvIHRoZSBLVW5pdCB0ZXN0cyBhY3R1YWxseSAqY292ZXIqIHRoZSBjaGFuZ2VzIEkndmUgbWFkZT9cIiBJdCdzIG5vdCBlbm91Z2ggdG8gKmhhdmUqIHRlc3RzOyB0aGV5IG5lZWQgdG8gYmUgcmVsZXZhbnQgdG8gdGhlIG1vZGlmaWNhdGlvbnMuIFRoaXMgaXMgYSBjcml0aWNhbCBzdGVwIGluIGVuc3VyaW5nIHRoZSBzdGFiaWxpdHkgYW5kIGNvcnJlY3RuZXNzIG9mIHRoZSBkcml2ZXIsIHNvIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aG9zZSB0ZXN0cyBhcmUgcHJlc2VudCBhbmQgY29tcHJlaGVuc2l2ZSBmb3IgdGhlIGNvZGUgSSd2ZSB0b3VjaGVkLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQncyBiZWluZyB0ZXN0ZWQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4OTEzLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTE6MDUuMjAxNDg0MTY1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTQzMDE1NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX2FjcGlfZ2V0X3dnZHNfdGFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS90ZXN0c1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTE6MDUuMjY2OTIyNjUyWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MjUyOTAwNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBObyBPYnZpb3VzIEhpdHMqKlxuXG5EYW1uLCBub3RoaW5nJ3MgY29taW5nIHVwIGluIHRoZSB0ZXN0IHJlc3VsdHMuIFRoYXQncyBmcnVzdHJhdGluZy4gSSB3YXMgaG9waW5nIGZvciBzb21ldGhpbmcgbW9yZSBkaXJlY3QsIGJ1dCBpdCBzZWVtcyB3aGF0ZXZlciBJJ20gbG9va2luZyBmb3IgaXNuJ3QgaW1tZWRpYXRlbHkgYXBwYXJlbnQuIFRpbWUgdG8gZGlnIGRlZXBlciwgdGhlIHRyYWlsJ3MgZ29uZSBjb2xkIGZvciBub3cuXG5cbldhaXQsIGhvbGQgb24gYSBtaW51dGUuLi4gV2hhdCBhYm91dCBgaXdsX3BhcnNlX3Rsdl9maXJtd2FyZWA/IFRoYXQgZnVuY3Rpb24gbmFtZSBqdXN0IHBvcHBlZCBpbnRvIG15IGhlYWQsIGFuZCBpdCdzIG5hZ2dpbmcgYXQgbWUuIEl0IGRlYWxzIHdpdGggcGFyc2luZyBmaXJtd2FyZSBzdHJ1Y3R1cmVzLCB3aGljaCBpcyBjZXJ0YWlubHkgcmVsYXRlZCB0byB3aGF0IEknbSBpbnZlc3RpZ2F0aW5nLiBJdCBtaWdodCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gY2hlY2ssIGV2ZW4gaWYgaXQgc2VlbXMgdGFuZ2VudGlhbC4gTGV0J3Mgc2VlIGlmIHRoYXQgc3BhcmtzIHNvbWV0aGluZy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTEzNSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUxOjA4Ljc5MjIxNDk5M1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUxNzQxNTU1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfcGFyc2VfdGx2X2Zpcm13YXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvdGVzdHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUxOjA5LjI0Mzk2NzIyOFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDI2MDQ2MTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCB3ZW50OlxuXG4qKkV4YW1pbmluZyB0aGUgQ29kZWJhc2UqKlxuXG5Pa2F5LCBJJ20gZmFjaW5nIGEgc2VhcmNoIHdpdGggbm8gcmVzdWx0cy4gVGhhdCdzIGFsd2F5cyB0aGUgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoeS4gV2hhdCBjb3VsZCBiZSBhIHVzZWZ1bCBzdGFydGluZyBwb2ludD8gSG1tLi4uIExldCdzIHRoaW5rIGFsb25nIHRoZSBsaW5lcyBvZiBhIGRlYnVnLWZvY3VzZWQgZnVuY3Rpb24gcmVsYXRlZCB0byBUTFYgcGFyc2luZyB3aXRoaW4gYW4gSW50ZWwgV2lyZWxlc3MgbW9kdWxlLiBJJ2xsIHNlYXJjaCBmb3IgYGl3bF9kYmdfdGx2X3BhcnNlX2JpbmAuIFRoYXQgbWlnaHQganVzdCBnZXQgbWUgY2xvc2VyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTM4NSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUxOjEyLjI3MDAxNTQ3OVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjcwMzE4NzcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9kYmdfdGx2X3BhcnNlX2JpblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MToxMi4zMzcwNTg5NDVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTI3NjcyNzEzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIG1vZGlmaWVkIGNvZGUgaW4gdGhlIGBpd2x3aWZpYCBkcml2ZXIsIHdoaWNoIGlzIGEgUENJIGRyaXZlci4gVGhlIHByb2JsZW0gaXMsIHdpdGhvdXQgYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlLCBpdCB3b24ndCBwcm9iZSwgYW5kIHRoZSBjb2RlIEknbSBpbnRlcmVzdGVkIGluIHdpbGwgbmV2ZXIgZXhlY3V0ZS4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcywgXCJJcyB0aGVyZSAqYW55KiB3YXkgdG8gZm9yY2UgYSBwcm9iZT9cIiBJIGltbWVkaWF0ZWx5IGNvbnNpZGVyZWQgYHN5el9wY2lfZGV2aWNlYCBmcm9tIHN5emthbGxlciwgYnV0IHRoYXQncyBhIGRlYWQgZW5kLiBTeXprYWxsZXIgZG9lc24ndCBoYXZlIHRoYXQgcHJpbWl0aXZlLlxuXG5UaGVuLCBJIHJlbWVtYmVyZWQgdGhlIHJlY2VudCBQQ0kgZnV6emluZyB3b3JrIGluIHN5emthbGxlciB1c2luZyBgdmZpb2Agb3Igc2ltaWxhciB0ZWNobm9sb2dpZXMuIEJ1dCwgbm8sIHN5emthbGxlciBwcmltYXJpbHkgbGV2ZXJhZ2VzIFFFTVUncyBQQ0kgZW11bGF0aW9uIGZvciBmdXp6aW5nLCBhbmQgUUVNVSwgaW4gaXRzIHdpc2RvbSwgZG9lc24ndCBlbXVsYXRlIEludGVsIFdpLUZpIGNhcmRzICh0aGUgYGl3bHdpZmlgIG9uZXMpLlxuXG5TbywgSSBjaGVja2VkIFFFTVUncyBzdXBwb3J0ZWQgZGV2aWNlcy4gSSByYXR0bGVkIG9mZiB0aGUgdXN1YWwgc3VzcGVjdHM6IGBlMTAwMGAsIGBydGw4MTM5YCwgYHBjbmV0YCwgeW91IGtub3cgdGhlIGRyaWxsLiBRRU1VIGhhbmRsZXMgYWxsIG9mIHRob3NlLiBIb3dldmVyLCBgaXdsd2lmaWAgd2Fzbid0IGFtb25nIHRoZW0uIFRoaXMgbWVhbnMgdGhlIGRyaXZlciB3b24ndCBwcm9iZSBpbiBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZS4gUHJldHR5IG11Y2ggYSBuby1nbyBpbiBhbnkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cbk5vdywgSSBuZWVkIHRvIGJlICphYnNvbHV0ZWx5KiBzdXJlLiBJcyB0aGVyZSAqYW55KiBvdGhlciBwYXRoIHRvIGBpd2xfYWNwaV9nZXRfd2dkc190YWJsZWA/IEkgdHJhY2VkIHRoZSBjYWxsIGdyYXBoLiBJdCdzIGNhbGxlZCBmcm9tIGBpd2xfYmlvc19nZXRfd2dkc190YWJsZWAsIHdoaWNoIGl0c2VsZiBpcyBjYWxsZWQgZnJvbSBgaXdsX212bV9nZXRfYmlvc190YWJsZXNgIGFuZCBgaXdsX21sZF9nZXRfYmlvc190YWJsZXNgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgY2FsbGVkIGR1cmluZyB0aGUgc2V0dXAgb2YgdGhlIE1WTSBvciBNTEQgb3BlcmF0aW9uIG1vZGVzLCB3aGljaCBoYXBwZW5zICphZnRlciogdGhlIFBDSSBkZXZpY2UgaXMgcHJvYmVkIGFuZCB0aGUgZmlybXdhcmUgbG9hZHMuIFNpbmNlLCBhZ2FpbiwgdGhlcmUncyBubyBQQ0kgZGV2aWNlLCBubyBwcm9iZSwgbm8gZGljZS5cblxuV2FpdCwgaXMgdGhlcmUgKmFueSogc29mdHdhcmUgZnJhbWV3b3JrIHRoYXQgbWlnaHQgbWFnaWNhbGx5IHByb2JlIHRoZSBkcml2ZXI/IEkgdGhvdWdodCBhYm91dCBgbWFjODAyMTFfaHdzaW1gLCB0aGUgc29mdHdhcmUgc2ltdWxhdG9yLCBidXQgdGhhdOKAmXMgbm90IHVzaW5nIGBpd2x3aWZpYC4gSXMgdGhlcmUgYSBzcGVjaWFsIGBpd2x3aWZpYCBzaW11bGF0b3I/IEkgdGhlbiBzdGFydGVkIHNlYXJjaGluZyB0aGUgZGlyZWN0b3J5IGluIHF1ZXN0aW9uIChgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaWApIGZvciBhbnkgY2x1ZSAoZS5nLiwgYGR1bW15YCwgYGh3c2ltYCkuIE5vdGhpbmcuIEkgZmlndXJlZCBpdCB3b3VsZCBiZSB3b3J0aCBjaGVja2luZyB0aGUgY29kZSBmb3IgYW55IGB0ZXN0YCBtb2R1bGUgdGhhdCBwcm9iZXMgdGhlIGRyaXZlciBpbiBhIGNvbnRyb2xsZWQgZW52aXJvbm1lbnQuIEkgZ290IG5vdGhpbmcuXG5cblNvLCBpbiBjb25jbHVzaW9uLCBpdCBzZWVtcyB0aGUgY29kZSBwYXRoIEknbSBpbnRlcmVzdGVkIGluIGlzIHVucmVhY2hhYmxlIGluIGFsbCBvZiBteSB0eXBpY2FsIHRlc3RpbmcgZW52aXJvbm1lbnRzLiBMb29rcyBsaWtlIHRoaXMgc3BlY2lmaWMgYXJlYSByZXF1aXJlcyByZWFsIGhhcmR3YXJlIGZvciBleGVjdXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NTcwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUxOjIxLjYxMzc4ODM3OVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY2ODg2MTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9wY2lfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC0zMi0gKiBUaGlzIGNvbXBvbmVudCBpbXBsZW1lbnRzIHRoZSBzeXN0ZW0gZmxvd3Mgc3VjaCBhcyBidXMgZW51bWVyYXRpb24sIGJ1c1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oOjMzOiAqIHJlbW92YWwuIEJ1cyBkZXBlbmRlbnQgcGFydHMgb2Ygc3lzdGVtIGZsb3dzIChzdWNoIGFzIGl3bF9wY2lfcHJvYmUpIGFyZSBpblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTM0LSAqIGJ1cyBzcGVjaWZpYyBmaWxlcyAodHJhbnNwb3J0IGZpbGVzKS4gVGhpcyBpcyB0aGUgY29kZSB0aGF0IGlzIGNvbW1vbiBhbW9uZ1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jPTExNDc9RVhQT1JUX1NZTUJPTF9JRl9JV0xXSUZJX0tVTklUKGl3bF9wY2lfZmluZF9kZXZfaW5mbyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTExNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jOjExNDk6c3RhdGljIGludCBpd2xfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMTUwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYz0xMzM4PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpd2xfcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMzQwLVxcdC5pZF90YWJsZSA9IGl3bF9od19jYXJkX2lkcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM6MTM0MTpcXHQucHJvYmUgPSBpd2xfcGNpX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMzQyLVxcdC5yZW1vdmUgPSBpd2xfcGNpX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTE6MjIuMDgwNjgzMzU2WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5NzU2ODc1NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW5pdGlhbCBQcm9iZSBcdTAwMjYgQnVzIEV4cGxvcmF0aW9uKipcblxuT2theSwgc28gYGl3bF9wY2lfcHJvYmVgIGlzIGRlZmluaXRlbHkgdGhlIHByb2JlIGZ1bmN0aW9uIHdlJ3JlIHRhbGtpbmcgYWJvdXQgaGVyZS4gVGhhdCBjb25maXJtcyB0aGUgUENJIGNvbnRleHQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBhcmUgd2UgKnNvbGVseSogZGVhbGluZyB3aXRoIFBDSSBoZXJlPyBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggaWYgdGhlcmUgYXJlIGFueSBvdGhlciBidXMgdmFyaWFudHMgZm9yIHRoaXMgaXdsd2lmaSBkcml2ZXIuIExldCBtZSBqdXN0IGRvdWJsZS1jaGVjayBpZiB0aGVyZSdzIGFuIFNESU8gb3IgYSBVU0IgaW1wbGVtZW50YXRpb24ga25vY2tpbmcgYXJvdW5kIHNvbWV3aGVyZS4gSXQncyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgdGhlIGJ1cyBjb250ZXh0LCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHByb2JlIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjExMzgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MToyNy4wNTYzNzI5NTFaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0NTMyODc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInByb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMzM2IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaD0yMDA9aW50IF9fbXVzdF9jaGVjayBpd2xfc2Nhbl9pbml0aWF0ZShzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaC0yMDYtICogUExDUF9RVUlFVF9USFJFU0ggcGFja2V0cyBhcmUgaGVhcmQgb24gdGhpcyBjaGFubmVsIHdpdGhpblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oOjIwNzogKiBBQ1RJVkVfUVVJRVRfVElNRSBhZnRlciBzZW5kaW5nIHByb2JlIHJlcXVlc3QuICBUaGlzIHNob3J0ZW5zIHRoZSBkd2VsbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oOjIwODogKiB0aW1lIGlmIGl0J3MgYSBxdWlldCBjaGFubmVsIChub3RoaW5nIHJlc3BvbmRlZCB0byBvdXIgcHJvYmUsIGFuZCB0aGVyZSdzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmgtMjA5LSAqIG5vIG90aGVyIHRyYWZmaWMpLlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaD0xMDY0PXN0cnVjdCBpd2xfcnhfbXBkdV9yZXNfc3RhcnQge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaC0xMTM4LSAqIDA6IE5vIFRTRiByZXF1aXJlZCBpbiBvdXRnb2luZyBmcmFtZS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjExMzk6ICogU2V0IHRoaXMgZm9yIHRyYW5zbWl0dGluZyBiZWFjb25zIGFuZCBwcm9iZSByZXNwb25zZXMuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaC0xMTQwLSNkZWZpbmUgVFhfQ01EX0ZMR19UU0ZfTVNLIGNwdV90b19sZTMyKDEgXFx1MDAzY1xcdTAwM2MgMTYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oPTIxOTk9c3RydWN0IGl3bF9zY2FuX2NoYW5uZWwge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaC0yMjAzLVxcdCAqIDE6MjAgU1NJRCBkaXJlY3QgYml0IG1hcDsgaWYgYSBiaXQgaXMgc2V0LCB0aGVuIGNvcnJlc3BvbmRpbmdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjIyMDQ6XFx0ICogICAgIFNTSUQgSUUgaXMgdHJhbnNtaXR0ZWQgaW4gcHJvYmUgcmVxdWVzdC5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oLTIyMDUtXFx0ICogMjE6MzEgcmVzZXJ2ZWRcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmgtMjIxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjIyMTU6Lyogc2V0IG51bWJlciBvZiBkaXJlY3QgcHJvYmVzIF9fbGUzMiB0eXBlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaC0yMjE2LSNkZWZpbmUgSVdMX1NDQU5fUFJPQkVfTUFTSyhuKSBcXHRjcHVfdG9fbGUzMigoQklUKG4pIHwgKEJJVChuKSAtIEJJVCgxKSkpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaD0yMjI2PXN0cnVjdCBpd2xfc3NpZF9pZSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oLTIyNzUtICogYSBjaGFubmVsIGZvciBqdXN0IGEgc2hvcnQgdGltZSwgaWYgZG9pbmcgYWN0aXZlIHNjYW5uaW5nIGFuZCBnZXR0aW5nIG5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaDoyMjc2OiAqIHJlc3BvbnNlcyB0byB0aGUgdHJhbnNtaXR0ZWQgcHJvYmUgcmVxdWVzdC4gIFRoaXMgdGltZSBpcyBjb250cm9sbGVkIGJ5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaC0yMjc3LSAqIHF1aWV0X3RpbWUsIGFuZCB0aGUgbnVtYmVyIG9mIHJlY2VpdmVkIHBhY2tldHMgYmVsb3cgd2hpY2ggYSBjaGFubmVsIGlzXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oLTIyODMtICogcGFja2V0cyBhcmUgY2xlYW5seSByZWNlaXZlZCBvbiB0aGUgY2hhbm5lbCAoY29udHJvbGxlZCBieSBnb29kX0NSQ190aCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjIyODQ6ICogdHlwaWNhbCB2YWx1ZSAxKSwgdGhlIHNjYW4gZW5naW5lIHN0YXJ0cyB0cmFuc21pdHRpbmcgcHJvYmUgcmVxdWVzdHMuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaC0yMjg1LSAqXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oPTIyOTg9c3RydWN0IGl3bF9zY2FuX2NtZCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oLTIzMjQtXFx0ICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjIzMjU6XFx0ICogU2l6ZSBvZiBwcm9iZSByZXF1ZXN0IGZyYW1lIGlzIHNwZWNpZmllZCBieSBieXRlIGNvdW50IGluIHR4X2NtZC5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjIzMjY6XFx0ICogQ2hhbm5lbCBsaXN0IGZvbGxvd3MgaW1tZWRpYXRlbHkgYWZ0ZXIgcHJvYmUgcmVxdWVzdCBmcmFtZS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oLTIzMjctXFx0ICogTnVtYmVyIG9mIGNoYW5uZWxzIGluIGxpc3QgaXMgc3BlY2lmaWVkIGJ5IGNoYW5uZWxfY291bnQuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oPTIzNzg9c3RydWN0IGl3bF9zY2FucmVzdWx0c19ub3RpZmljYXRpb24ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaC0yMzgwLVxcdHU4IGJhbmQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaDoyMzgxOlxcdHU4IHByb2JlX3N0YXR1cztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjIzODI6XFx0dTggbnVtX3Byb2JlX25vdF9zZW50OyAvKiBub3QgZW5vdWdoIHRpbWUgdG8gc2VuZCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmgtMjM4My1cXHRfX2xlMzIgdHNmX2xvdztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmg9MjYxNj1zdHJ1Y3Qgc3RhdGlzdGljc19kaXYge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaC0yNjE5LVxcdF9fbGUzMiBleGVjX3RpbWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaDoyNjIwOlxcdF9fbGUzMiBwcm9iZV90aW1lO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmgtMjYyMS1cXHRfX2xlMzIgcmVzZXJ2ZWQxO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vY29tbWFuZHMuaD0zOTAyPXN0cnVjdCBpd2xfd2lwYW5fcDJwX2NoYW5uZWxfc3dpdGNoX2NtZCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oLTM5MTEtICogTm9BIHNjaGVkdWxlIGl0IGRldGVybWluZWQgc28gd2UgY2FuIGZvcndhcmQgaXRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9jb21tYW5kcy5oOjM5MTI6ICogdG8gdXNlcnNwYWNlIGZvciBpbmNsdXNpb24gaW4gcHJvYmUgcmVzcG9uc2VzLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2NvbW1hbmRzLmgtMzkxMy0gKlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGVidWdmcy5jPTEyOTY9c3RhdGljIHNzaXplX3QgaXdsX2RiZ2ZzX3Vjb2RlX2dlbmVyYWxfc3RhdHNfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RlYnVnZnMuYy0xMzkyLVxcdHBvcyArPSBzY25wcmludGYoYnVmICsgcG9zLCBidWZzeiAtIHBvcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZWJ1Z2ZzLmM6MTM5MzpcXHRcXHRcXHQgZm10X3RhYmxlLCBcXFwicHJvYmVfdGltZTpcXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RlYnVnZnMuYzoxMzk0OlxcdFxcdFxcdCBsZTMyX3RvX2NwdShkaXYtXFx1MDAzZXByb2JlX3RpbWUpLCBhY2N1bV9kaXYtXFx1MDAzZXByb2JlX3RpbWUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGVidWdmcy5jOjEzOTU6XFx0XFx0XFx0IGRlbHRhX2Rpdi1cXHUwMDNlcHJvYmVfdGltZSwgbWF4X2Rpdi1cXHUwMDNlcHJvYmVfdGltZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGVidWdmcy5jLTEzOTYtXFx0cG9zICs9IHNjbnByaW50ZihidWYgKyBwb3MsIGJ1ZnN6IC0gcG9zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2aWNlcy5jPTI1MD1zdGF0aWMgY29uc3Qgc3RydWN0IGl3bF9kdm1fYnRfcGFyYW1zIGl3bDIwMzBfYnRfcGFyYW1zID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RldmljZXMuYzoyNTE6XFx0LyogRHVlIHRvIGJsdWV0b290aCwgd2UgdHJhbnNtaXQgMi40IEdIeiBwcm9iZXMgb25seSBvbiBhbnRlbm5hIEEgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZXZpY2VzLmMtMjUyLVxcdC5hZHZhbmNlZF9idF9jb2V4aXN0ID0gdHJ1ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RldmljZXMuYz02NTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBpd2xfZHZtX2J0X3BhcmFtcyBpd2w2MDAwX2J0X3BhcmFtcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZXZpY2VzLmM6NjU1OlxcdC8qIER1ZSB0byBibHVldG9vdGgsIHdlIHRyYW5zbWl0IDIuNCBHSHogcHJvYmVzIG9ubHkgb24gYW50ZW5uYSBBICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2aWNlcy5jLTY1Ni1cXHQuYWR2YW5jZWRfYnRfY29leGlzdCA9IHRydWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jPTc4PWludCBpd2xhZ25fbWFjX3NldHVwX3JlZ2lzdGVyKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21hYzgwMjExLmMtMTczLVxcdC8qIHdlIGNyZWF0ZSB0aGUgODAyLjExIGhlYWRlciBhbmQgYSBtYXgtbGVuZ3RoIFNTSUQgZWxlbWVudCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21hYzgwMjExLmM6MTc0OlxcdGh3LVxcdTAwM2V3aXBoeS1cXHUwMDNlbWF4X3NjYW5faWVfbGVuID0gY2FwYS1cXHUwMDNlbWF4X3Byb2JlX2xlbmd0aCAtIDI0IC0gMzQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFjODAyMTEuYy0xNzUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM9MTIzMz1zdGF0aWMgc3RydWN0IGl3bF9vcF9tb2RlICppd2xfb3BfbW9kZV9kdm1fc3RhcnQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTQ5NC1cXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM6MTQ5NTpcXHQgKiBUaGlzIGlzIHN0aWxsIHBhcnQgb2YgcHJvYmUoKSBpbiBhIHNlbnNlLi4uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jLTE0OTYtXFx0ICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy0xNS0vKiBGb3IgYWN0aXZlIHNjYW4sIGxpc3RlbiBBQ1RJVkVfRFdFTExfVElNRSAobXNlYykgb24gZWFjaCBjaGFubmVsIGFmdGVyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjE2OiAqIHNlbmRpbmcgcHJvYmUgcmVxLiAgVGhpcyBzaG91bGQgYmUgc2V0IGxvbmcgZW5vdWdoIHRvIGhlYXIgcHJvYmUgcmVzcG9uc2VzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTE3LSAqIGZyb20gbW9yZSB0aGFuIG9uZSBBUC4gICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM9MjYyPXN0YXRpYyB2b2lkIGl3bF9yeF9zY2FuX3Jlc3VsdHNfbm90aWYoc3RydWN0IGl3bF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTI3MC1cXHRcXHQgICAgICAgXFxcIiVkIFs4MDIuMTElc10gXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzoyNzE6XFx0XFx0ICAgICAgIFxcXCJwcm9iZSBzdGF0dXM6ICV1OiV1IFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtMjcyLVxcdFxcdCAgICAgICBcXFwiKFRTRjogMHglMDhYOiUwOFgpIC0gJWQgXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTI3NS1cXHRcXHQgICAgICAgbm90aWYtXFx1MDAzZWJhbmQgPyBcXFwiYmdcXFwiIDogXFxcImFcXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzoyNzY6XFx0XFx0ICAgICAgIG5vdGlmLVxcdTAwM2Vwcm9iZV9zdGF0dXMsIG5vdGlmLVxcdTAwM2VudW1fcHJvYmVfbm90X3NlbnQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTI3Ny1cXHRcXHQgICAgICAgbGUzMl90b19jcHUobm90aWYtXFx1MDAzZXRzZl9oaWdoKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYz0zNDY9c3RhdGljIHUxNiBpd2xfZ2V0X2FjdGl2ZV9kd2VsbF90aW1lKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6MzQ3OlxcdFxcdFxcdFxcdCAgICAgZW51bSBubDgwMjExX2JhbmQgYmFuZCwgdTggbl9wcm9iZXMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTM0OC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtMzUwLVxcdFxcdHJldHVybiBJV0xfQUNUSVZFX0RXRUxMX1RJTUVfNTIgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzozNTE6XFx0XFx0XFx0SVdMX0FDVElWRV9EV0VMTF9GQUNUT1JfNTJHSFogKiAobl9wcm9iZXMgKyAxKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtMzUyLVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtMzUzLVxcdFxcdHJldHVybiBJV0xfQUNUSVZFX0RXRUxMX1RJTUVfMjQgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzozNTQ6XFx0XFx0XFx0SVdMX0FDVElWRV9EV0VMTF9GQUNUT1JfMjRHSFogKiAobl9wcm9iZXMgKyAxKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtMzU1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYz00ODg9c3RhdGljIGludCBpd2xfZ2V0X2NoYW5uZWxzX2Zvcl9zY2FuKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy00OTAtXFx0XFx0XFx0XFx0ICAgICBlbnVtIG5sODAyMTFfYmFuZCBiYW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzo0OTE6XFx0XFx0XFx0XFx0ICAgICB1OCBpc19hY3RpdmUsIHU4IG5fcHJvYmVzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy00OTItXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgaXdsX3NjYW5fY2hhbm5lbCAqc2Nhbl9jaClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy01MDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjUwNTpcXHRhY3RpdmVfZHdlbGwgPSBpd2xfZ2V0X2FjdGl2ZV9kd2VsbF90aW1lKHByaXYsIGJhbmQsIG5fcHJvYmVzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNTA2LVxcdHBhc3NpdmVfZHdlbGwgPSBpd2xfZ2V0X3Bhc3NpdmVfZHdlbGxfdGltZShwcml2LCBiYW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy01MjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjUyNTpcXHRcXHRpZiAobl9wcm9iZXMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjUyNjpcXHRcXHRcXHRzY2FuX2NoLVxcdTAwM2V0eXBlIHw9IElXTF9TQ0FOX1BST0JFX01BU0sobl9wcm9iZXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy01MjctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNTU4LS8qXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjU1OTogKiBpd2xfZmlsbF9wcm9iZV9yZXEgLSBmaWxsIGluIGFsbCByZXF1aXJlZCBmaWVsZHMgYW5kIElFIGZvciBwcm9iZSByZXF1ZXN0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTU2MC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6NTYxOnN0YXRpYyB1MTYgaXdsX2ZpbGxfcHJvYmVfcmVxKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqZnJhbWUsIGNvbnN0IHU4ICp0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNTYyLVxcdFxcdFxcdCAgICAgIGNvbnN0IHU4ICppZXMsIGludCBpZV9sZW4sIGNvbnN0IHU4ICpzc2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTU2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6NTY4OlxcdC8qIE1ha2Ugc3VyZSB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSBwcm9iZSByZXF1ZXN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy01NjktXFx0ICogdHdvIG1hbmRhdG9yeSBJRXMgYW5kIHRoZSBkYXRhICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNTgyLVxcdC8qIC4uLm5leHQgSUUuLi4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6NTgzOlxcdHBvcyA9IFxcdTAwMjZmcmFtZS1cXHUwMDNldS5wcm9iZV9yZXEudmFyaWFibGVbMF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTU4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYz02MDk9c3RhdGljIGludCBpd2xhZ25fcmVxdWVzdF9zY2FuKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy02MjAtXFx0ZW51bSBubDgwMjExX2JhbmQgYmFuZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6NjIxOlxcdHU4IG5fcHJvYmVzID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNjIyLVxcdHU4IHJ4X2FudCA9IHByaXYtXFx1MDAzZW52bV9kYXRhLVxcdTAwM2V2YWxpZF9yeF9hbnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNjMwLVxcdFxcdFxcdCAgICBNQVhfU0NBTl9DSEFOTkVMICogc2l6ZW9mKHN0cnVjdCBpd2xfc2Nhbl9jaGFubmVsKSArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjYzMTpcXHRcXHRcXHQgICAgcHJpdi1cXHUwMDNlZnctXFx1MDAzZXVjb2RlX2NhcGEubWF4X3Byb2JlX2xlbmd0aDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNjMyLVxcdGNvbnN0IHU4ICpzc2lkID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy03MDktXFx0XFx0XFx0ICogVGhlIGhpZ2hlc3QgcHJpb3JpdHkgU1NJRCBpcyBpbnNlcnRlZCB0byB0aGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6NzEwOlxcdFxcdFxcdCAqIHByb2JlIHJlcXVlc3QgdGVtcGxhdGUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTcxMS1cXHRcXHRcXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy03MjUtXFx0XFx0XFx0XFx0ICAgICAgIHByaXYtXFx1MDAzZXNjYW5fcmVxdWVzdC1cXHUwMDNlc3NpZHNbaV0uc3NpZF9sZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzo3MjY6XFx0XFx0XFx0XFx0bl9wcm9iZXMrKztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNzI3LVxcdFxcdFxcdFxcdHArKztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy03NzYtXFx0ICogb24gYSByYWRhciBjaGFubmVsIGV2ZW4gdGhvdWdoIHRoaXMgbWVhbnMgdGhhdCB3ZSBzaG91bGQgTk9UXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjc3NzpcXHQgKiBzZW5kIHByb2Jlcy5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNzc4LVxcdCAqXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNzgwLVxcdCAqIG5lZWQgdG8gcmVjZWl2ZSBkdXJpbmcgb3VyIGR3ZWxsIHRpbWUgb24gYSBjaGFubmVsIGJlZm9yZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzo3ODE6XFx0ICogc2VuZGluZyBvdXQgcHJvYmVzIC0tIHNldHRpbmcgdGhpcyB0byBhIGh1Z2UgdmFsdWUgd2lsbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy03ODItXFx0ICogbWVhbiB3ZSBuZXZlciByZWFjaCBpdCwgYnV0IGF0IHRoZSBzYW1lIHRpbWUgd29yayBhcm91bmRcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy04MDEtXFx0ICAgIHByaXYtXFx1MDAzZWxpYi1cXHUwMDNlYnRfcGFyYW1zLVxcdTAwM2VhZHZhbmNlZF9idF9jb2V4aXN0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjgwMjpcXHRcXHQvKiB0cmFuc21pdCAyLjQgR0h6IHByb2JlcyBvbmx5IG9uIGZpcnN0IGFudGVubmEgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtODAzLVxcdFxcdHNjYW5fdHhfYW50ZW5uYXMgPSBmaXJzdF9hbnRlbm5hKHNjYW5fdHhfYW50ZW5uYXMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTg0NC1cXHRjYXNlIElXTF9TQ0FOX05PUk1BTDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6ODQ1OlxcdFxcdGNtZF9sZW4gPSBpd2xfZmlsbF9wcm9iZV9yZXEoXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTg0Ni1cXHRcXHRcXHRcXHRcXHQoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2Nhbi1cXHUwMDNlZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy04NTQtXFx0XFx0LyogdXNlIGJjYXN0IGFkZHIsIHdpbGwgbm90IGJlIHRyYW5zbWl0dGVkIGJ1dCBtdXN0IGJlIHZhbGlkICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjg1NTpcXHRcXHRjbWRfbGVuID0gaXdsX2ZpbGxfcHJvYmVfcmVxKFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy04NTYtXFx0XFx0XFx0XFx0XFx0KHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNjYW4tXFx1MDAzZWRhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtODc3LVxcdFxcdFxcdGl3bF9nZXRfY2hhbm5lbHNfZm9yX3NjYW4ocHJpdiwgdmlmLCBiYW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzo4Nzg6XFx0XFx0XFx0XFx0aXNfYWN0aXZlLCBuX3Byb2JlcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtODc5LVxcdFxcdFxcdFxcdCh2b2lkICopXFx1MDAyNnNjYW4tXFx1MDAzZWRhdGFbY21kX2xlbl0pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYz00Mz1zdGF0aWMgdm9pZCBpd2xhZ25fdHhfY21kX2J1aWxkX2Jhc2ljKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYzo1OTpcXHRpZiAoaWVlZTgwMjExX2lzX3Byb2JlX3Jlc3AoZmMpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtNjAtXFx0XFx0dHhfZmxhZ3MgfD0gVFhfQ01EX0ZMR19UU0ZfTVNLO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYz0xMDU9c3RhdGljIHZvaWQgaXdsYWduX3R4X2NtZF9idWlsZF9yYXRlKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtMTI0LVxcdFxcdC8qIFNldCByZXRyeSBsaW1pdCBvbiBEQVRBIHBhY2tldHMgYW5kIFByb2JlIFJlc3BvbnNlcyovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYzoxMjU6XFx0XFx0aWYgKGllZWU4MDIxMV9pc19wcm9iZV9yZXNwKGZjKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtMTI2LVxcdFxcdFxcdGRhdGFfcmV0cnlfbGltaXQgPSBJV0xBR05fTUdNVF9ERkFVTFRfUkVUUllfTElNSVQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jPTI2MD1pbnQgaXdsYWduX3R4X3NrYihzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jLTI5NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jOjI5NjpcXHRpZiAodW5saWtlbHkoaWVlZTgwMjExX2lzX3Byb2JlX3Jlc3AoZmMpKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtMjk3LVxcdFxcdHN0cnVjdCBpd2xfd2lwYW5fbm9hX2RhdGEgKm5vYV9kYXRhID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaD0xNj1lbnVtIGl3bF9tYWNfY29uZl9zdWJjbWRfaWRzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC0xMTctXFx0LyoqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oOjExODpcXHQgKiBAUFJPQkVfUkVTUE9OU0VfREFUQV9OT1RJRjogXFx1MDAyNnN0cnVjdCBpd2xfcHJvYmVfcmVzcF9kYXRhX25vdGlmXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oLTExOS1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC0xMzUtLyoqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oOjEzNjogKiBzdHJ1Y3QgaXdsX3AycF9ub2FfYXR0ciAtIE5PQSBhdHRyIGNvbnRhaW5lZCBpbiBwcm9iZSByZXNwIEZXIG5vdGlmaWNhdGlvblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC0xMzctICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaD0xNDY9c3RydWN0IGl3bF9wMnBfbm9hX2F0dHIge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oLTE1OC0vKipcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9tYWMtY2ZnLmg6MTU5OiAqIHN0cnVjdCBpd2xfcHJvYmVfcmVzcF9kYXRhX25vdGlmIC0gbm90aWZpY2F0aW9uIHdpdGggTk9BIGFuZCBDU0EgY291bnRlclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC0xNjAtICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9tYWMtY2ZnLmg6MTYxOiAqIEBtYWNfaWQ6IHRoZSBtYWMgd2hpY2ggc2hvdWxkIHNlbmQgdGhlIHByb2JlIHJlc3BvbnNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oLTE2Mi0gKiBAbm9hX2FjdGl2ZTogbm90aWZpZXMgaWYgdGhlIG5vYSBhdHRyaWJ1dGUgc2hvdWxkIGJlIGhhbmRsZWRcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC0xNjYtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oOjE2NzpzdHJ1Y3QgaXdsX3Byb2JlX3Jlc3BfZGF0YV9ub3RpZiB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oLTE2OC1cXHRfX2xlMzIgbWFjX2lkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oPTMyMT1zdHJ1Y3QgaXdsX21hY19wMnBfZGV2X2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLWNmZy5oLTMzMi0gKiBATUFDX0NGR19GSUxURVJfQUNDRVBUX0JFQUNPTjogYWNjZXB0IGJlYWNvbiBmcmFtZXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9tYWMtY2ZnLmg6MzMzOiAqIEBNQUNfQ0ZHX0ZJTFRFUl9BQ0NFUFRfQkNBU1RfUFJPQkVfUkVTUDogYWNjZXB0IGJyb2FkY2FzdCBwcm9iZSByZXNwb25zZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaDozMzQ6ICogQE1BQ19DRkdfRklMVEVSX0FDQ0VQVF9QUk9CRV9SRVE6IGFjY2VwdCBwcm9iZSByZXF1ZXN0c1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC0zMzUtICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9tYWMtY2ZnLmg9NjgyPXN0cnVjdCBpd2xfbGlua19jb25maWdfY21kIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC03NDQtICogQFNUQVRJT05fVFlQRV9CQ0FTVF9NR01UOiBUaGUgc3RhdGlvbiB1c2VkIHRvIHNlbmQgYmVhY29ucyBhbmRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9tYWMtY2ZnLmg6NzQ1OiAqXFx0cHJvYmUgcmVzcG9uc2VzLiBBbHNvIHVzZWQgZm9yIHRyYWZmaWMgaW5qZWN0aW9uIGluIHNuaWZmZXIgbW9kZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy1jZmcuaC03NDYtICogQFNUQVRJT05fVFlQRV9NQ0FTVDogdGhlIHN0YXRpb24gdXNlZCBmb3IgQkNBU1QgLyBNQ0FTVCBpbiBHTy4gV2lsbCBiZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLmg9MjE5PXN0cnVjdCBpd2xfbWFjX2RhdGFfcDJwX2RldiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9tYWMuaC0yMzQtICogQE1BQ19GSUxURVJfSU5fQ1JDMzI6IGV4dHJhY3QgRkNTIGFuZCBhcHBlbmQgaXQgdG8gZnJhbWVzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbWFjLmg6MjM1OiAqIEBNQUNfRklMVEVSX0lOX1BST0JFX1JFUVVFU1Q6IHBhc3MgcHJvYmUgcmVxdWVzdHMgdG8gaG9zdFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL21hYy5oLTIzNi0gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD0yMjM9c3RydWN0IGl3bF9zY2FuX2NoYW5uZWxfY2ZnX2xtYWMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTIzMC0vKipcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MjMxOiAqIHN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9zZWdtZW50IC0gUFJPQkVfU0VHTUVOVF9BUElfU19WRVJfMVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0yMzItICogQG9mZnNldDogb2Zmc2V0IGluIHRoZSBkYXRhIGJsb2NrXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMjM0LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoyMzU6c3RydWN0IGl3bF9zY2FuX3Byb2JlX3NlZ21lbnQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0yMzYtXFx0X19sZTE2IG9mZnNldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0yNDAtLyoqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjI0MTogKiBzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfcmVxX3YxIC0gUFJPQkVfUkVRVUVTVF9GUkFNRV9BUElfU19WRVJfMlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoyNDI6ICogQG1hY19oZWFkZXI6IGZpcnN0IChhbmQgY29tbW9uKSBwYXJ0IG9mIHRoZSBwcm9iZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0yNDMtICogQGJhbmRfZGF0YTogYmFuZCBzcGVjaWZpYyBkYXRhXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjI0NDogKiBAY29tbW9uX2RhdGE6IGxhc3QgKGFuZCBjb21tb24pIHBhcnQgb2YgdGhlIHByb2JlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTI0NS0gKiBAYnVmOiByYXcgZGF0YSBibG9ja1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0yNDYtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjI0NzpzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfcmVxX3YxIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MjQ4OlxcdHN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9zZWdtZW50IG1hY19oZWFkZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjI0OTpcXHRzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfc2VnbWVudCBiYW5kX2RhdGFbU0NBTl9OVU1fQkFORF9QUk9CRV9EQVRBX1ZfMV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjI1MDpcXHRzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfc2VnbWVudCBjb21tb25fZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMjUxLVxcdHU4IGJ1ZltTQ0FOX09GRkxPQURfUFJPQkVfUkVRX1NJWkVdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTI1NC0vKipcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MjU1OiAqIHN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9yZXEgLSBQUk9CRV9SRVFVRVNUX0ZSQU1FX0FQSV9TX1ZFUl92MlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoyNTY6ICogQG1hY19oZWFkZXI6IGZpcnN0IChhbmQgY29tbW9uKSBwYXJ0IG9mIHRoZSBwcm9iZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0yNTctICogQGJhbmRfZGF0YTogYmFuZCBzcGVjaWZpYyBkYXRhXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjI1ODogKiBAY29tbW9uX2RhdGE6IGxhc3QgKGFuZCBjb21tb24pIHBhcnQgb2YgdGhlIHByb2JlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTI1OS0gKiBAYnVmOiByYXcgZGF0YSBibG9ja1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0yNjAtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjI2MTpzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfcmVxIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MjYyOlxcdHN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9zZWdtZW50IG1hY19oZWFkZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjI2MzpcXHRzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfc2VnbWVudCBiYW5kX2RhdGFbU0NBTl9OVU1fQkFORF9QUk9CRV9EQVRBX1ZfMl07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjI2NDpcXHRzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfc2VnbWVudCBjb21tb25fZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMjY1LVxcdHU4IGJ1ZltTQ0FOX09GRkxPQURfUFJPQkVfUkVRX1NJWkVdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oPTI4Nj1zdHJ1Y3QgaXdsX3NjYW5fY2hhbm5lbF9vcHQge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTI5Mi0gKiBlbnVtIGl3bF9tdm1fbG1hY19zY2FuX2ZsYWdzIC0gTE1BQyBzY2FuIGZsYWdzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjI5MzogKiBASVdMX01WTV9MTUFDX1NDQU5fRkxBR19QQVNTX0FMTDogcGFzcyBhbGwgYmVhY29ucyBhbmQgcHJvYmUgcmVzcG9uc2VzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTI5NC0gKlxcdHdpdGhvdXQgZmlsdGVyaW5nLlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTMwMC0gKiBASVdMX01WTV9MTUFDX1NDQU5fRkxBR1NfUlJNX0VOQUJMRUQ6IGluc2VydCBXRkEgdmVuZG9yLXNwZWNpZmljIFRQQyByZXBvcnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MzAxOiAqXFx0YW5kIERTIHBhcmFtZXRlciBzZXQgSUVzIGludG8gcHJvYmUgcmVxdWVzdHMuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTMwMi0gKiBASVdMX01WTV9MTUFDX1NDQU5fRkxBR19FWFRFTkRFRF9EV0VMTDogdXNlIGV4dGVuZGVkIGR3ZWxsIHRpbWUgb24gY2hhbm5lbHNcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD0zMjQ9ZW51bSBpd2xfc2Nhbl9wcmlvcml0eV9leHQge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTM1Ny0gKiBAY2hhbm5lbF9vcHQ6IGNoYW5uZWwgb3B0aW1pemF0aW9uIG9wdGlvbnMsIGZvciBmdWxsIGFuZCBwYXJ0aWFsIHNjYW5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MzU4OiAqIEBkYXRhOiBjaGFubmVsIGNvbmZpZ3VyYXRpb24gYW5kIHByb2JlIHJlcXVlc3QgcGFja2V0LlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0zNTktICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oPTM2MD1zdHJ1Y3QgaXdsX3NjYW5fcmVxX2xtYWMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTM5MS0gKiBAYmFuZDogMCBmb3IgNS4yIEdIeiwgMSBmb3IgMi40IEdIelxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDozOTI6ICogQHByb2JlX3N0YXR1czogU0NBTl9QUk9CRV9TVEFUVVNfKiwgaW5kaWNhdGVzIHN1Y2Nlc3Mgb2YgcHJvYmUgcmVxdWVzdFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDozOTM6ICogQG51bV9wcm9iZV9ub3Rfc2VudDogIyBvZiByZXF1ZXN0IHRoYXQgd2VyZW4ndCBzZW50IGR1ZSB0byBub3QgZW5vdWdoIHRpbWVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMzk0LSAqIEBkdXJhdGlvbjogZHVyYXRpb24gc3BlbnQgaW4gY2hhbm5lbCwgaW4gdXNlY3NcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD0zOTY9c3RydWN0IGl3bF9zY2FuX3Jlc3VsdHNfbm90aWYge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTM5OC1cXHR1OCBiYW5kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDozOTk6XFx0dTggcHJvYmVfc3RhdHVzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo0MDA6XFx0dTggbnVtX3Byb2JlX25vdF9zZW50O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC00MDEtXFx0X19sZTMyIGR1cmF0aW9uO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oPTUxNj1zdHJ1Y3QgaXdsX3NjYW5fZHdlbGwge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTUzMS0gKiBAZHdlbGw6XFx0XFx0XFx0ZHdlbGxzIGZvciB0aGUgc2NhblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo1MzI6ICogQG1hY19hZGRyOlxcdFxcdFxcdGRlZmF1bHQgbWFjIGFkZHJlc3MgdG8gYmUgdXNlZCBpbiBwcm9iZXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtNTMzLSAqIEBiY2FzdF9zdGFfaWQ6XFx0XFx0dGhlIGluZGV4IG9mIHRoZSBzdGF0aW9uIGluIHRoZSBmd1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oPTUzOD1zdHJ1Y3QgaXdsX3NjYW5fY29uZmlnX3YxIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC01NjQtICogQGR3ZWxsOlxcdFxcdFxcdGR3ZWxscyBmb3IgdGhlIHNjYW5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6NTY1OiAqIEBtYWNfYWRkcjpcXHRcXHRcXHRkZWZhdWx0IG1hYyBhZGRyZXNzIHRvIGJlIHVzZWQgaW4gcHJvYmVzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTU2Ni0gKiBAYmNhc3Rfc3RhX2lkOlxcdFxcdHRoZSBpbmRleCBvZiB0aGUgc3RhdGlvbiBpbiB0aGUgZndcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD02MjM9ZW51bSBpd2xfdW1hY19zY2FuX2dlbmVyYWxfZmxhZ3Mge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTYzNS1cXHQvKiBFeHRlbmRlZCBkd2VsbCBpcyBvYnNlbGV0ZSB3aGVuIGFkYXB0aXZlIGR3ZWxsIGlzIHVzZWQsIG1ha2luZyB0aGlzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjYzNjpcXHQgKiBiaXQgcmV1c2FibGUuIEhlbmNlLCBwcm9iZSByZXF1ZXN0IGRlZmVyIGlzIHVzZWQgb25seSB3aGVuIGFkYXB0aXZlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTYzNy1cXHQgKiBkd2VsbCBpcyBzdXBwb3J0ZWQuICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg9NjU0PWVudW0gaXdsX3VtYWNfc2Nhbl9nZW5lcmFsX2ZsYWdzMiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtNjY1LSAqIEBJV0xfVU1BQ19TQ0FOX0dFTl9GTEFHU19WMl9QRVJJT0RJQzogcGVyaW9kaWMgb3Igc2NoZWR1bGVkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjY2NjogKiBASVdMX1VNQUNfU0NBTl9HRU5fRkxBR1NfVjJfUEFTU19BTEw6IHBhc3MgYWxsIHByb2JlIHJlc3BvbnNlcyBhbmQgYmVhY29uc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC02NjctICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJpbmcgc2NhbiBpdGVyYXRpb25zXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtNjg4LSAqICAgICAgXFx1MDAyNklXTF9VTUFDX1NDQU5fR0VOX0ZMQUdTX1YyXzZHSFpfUEFTU0lWRV9TQ0FOIGlzIGVuYWJsZWQgYW5kIHNjYW4gaXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6Njg5OiAqICAgICAgYWN0aXZhdGVkIG92ZXIgNkdIeiBQU0MgY2hhbm5lbHMsIGZpbHRlciBpbiBiZWFjb25zIGFuZCBwcm9iZSByZXNwb25zZXMuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjY5MDogKiBASVdMX1VNQUNfU0NBTl9HRU5fRkxBR1NfVjJfT0NFOiBpZiBzZXQsIHNlbmQgcHJvYmUgcmVxdWVzdHMgaW4gYSBtaW5pbXVtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjY5MTogKiAgICAgIHJhdGUgb2YgNS41TXBicywgZmlsdGVyIGluIGJyb2FkY2FzdCBwcm9iZSByZXNwb25zZXMgYW5kIHNldCB0aGUgbWF4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTY5Mi0gKiAgICAgIGNoYW5uZWwgdGltZSBpbmRpY2F0aW9uIGZpZWxkIGluIHRoZSBGSUxTIHJlcXVlc3QgcGFyYW1ldGVycyBlbGVtZW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjY5MzogKiAgICAgIChpZiBpbmNsdWRlZCBieSB0aGUgZHJpdmVyIGluIHRoZSBwcm9iZSByZXF1ZXN0IElFcykuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTY5NC0gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD03ODg9c3RydWN0IGl3bF9zY2FuX3JlcV91bWFjX3RhaWxfdjEge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTc5My1cXHQvKiBTQ0FOX1BST0JFX1BBUkFNU19BUElfU19WRVJfMSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo3OTQ6XFx0c3RydWN0IGl3bF9zY2FuX3Byb2JlX3JlcV92MSBwcmVxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC03OTUtXFx0c3RydWN0IGl3bF9zc2lkX2llIGRpcmVjdF9zY2FuW1BST0JFX09QVElPTl9NQVhdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTgwMy0gKiBAcmVzZXJ2ZWQ6IGZvciBmdXR1cmUgdXNlIGFuZCBhbGlnbm1lbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6ODA0OiAqIEBwcmVxOiBwcm9iZSByZXF1ZXN0IHdpdGggSUVzIGJsb2Nrc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC04MDUtICogQGRpcmVjdF9zY2FuOiBsaXN0IG9mIFNTSURzIGZvciBkaXJlY3RlZCBhY3RpdmUgc2Nhblxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oPTgwNz1zdHJ1Y3QgaXdsX3NjYW5fcmVxX3VtYWNfdGFpbF92MiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtODEyLVxcdC8qIFNDQU5fUFJPQkVfUEFSQU1TX0FQSV9TX1ZFUl8yICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjgxMzpcXHRzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfcmVxIHByZXE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTgxNC1cXHRzdHJ1Y3QgaXdsX3NzaWRfaWUgZGlyZWN0X3NjYW5bUFJPQkVfT1BUSU9OX01BWF07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg9ODYzPXN0cnVjdCBpd2xfc2Nhbl9yZXFfdW1hYyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtOTQ1LS8qKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo5NDY6ICogc3RydWN0IGl3bF9zY2FuX3Byb2JlX3BhcmFtc192MyAtIHNjYW4gcHJvYmUgcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo5NDc6ICogQHByZXE6IHNjYW4gcHJvYmUgcmVxdWVzdCBwYXJhbXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtOTQ4LSAqIEBzc2lkX251bTogbnVtYmVyIG9mIHZhbGlkIFNTSURzIGluIGRpcmVjdCBzY2FuIGFycmF5XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtOTU1LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo5NTY6c3RydWN0IGl3bF9zY2FuX3Byb2JlX3BhcmFtc192MyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjk1NzpcXHRzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfcmVxIHByZXE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTk1OC1cXHR1OCBzc2lkX251bTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC05NjctLyoqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjk2ODogKiBzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfcGFyYW1zX3Y0IC0gc2NhbiBwcm9iZSBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjk2OTogKiBAcHJlcTogc2NhbiBwcm9iZSByZXF1ZXN0IHBhcmFtc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC05NzAtICogQHNob3J0X3NzaWRfbnVtOiBudW1iZXIgb2YgdmFsaWQgc2hvcnQgU1NJRHMgaW4gc2hvcnQgc3NpZCBhcnJheVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTk3Ni0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6OTc3OnN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9wYXJhbXNfdjQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDo5Nzg6XFx0c3RydWN0IGl3bF9zY2FuX3Byb2JlX3JlcSBwcmVxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC05NzktXFx0dTggc2hvcnRfc3NpZF9udW07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg9MTA5Nz1zdHJ1Y3QgaXdsX3NjYW5fcGVyaW9kaWNfcGFybXNfdjEge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTExMDctICogQHBlcmlvZGljX3BhcmFtczogXFx1MDAyNnN0cnVjdCBpd2xfc2Nhbl9wZXJpb2RpY19wYXJtc192MVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoxMTA4OiAqIEBwcm9iZV9wYXJhbXM6IFxcdTAwMjZzdHJ1Y3QgaXdsX3NjYW5fcHJvYmVfcGFyYW1zX3YzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTExMDktICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oPTExMTA9c3RydWN0IGl3bF9zY2FuX3JlcV9wYXJhbXNfdjEyIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0xMTEzLVxcdHN0cnVjdCBpd2xfc2Nhbl9wZXJpb2RpY19wYXJtc192MSBwZXJpb2RpY19wYXJhbXM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oOjExMTQ6XFx0c3RydWN0IGl3bF9zY2FuX3Byb2JlX3BhcmFtc192MyBwcm9iZV9wYXJhbXM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oLTExMTUtfSBfX3BhY2tlZDsgLyogU0NBTl9SRVFVRVNUX1BBUkFNU19BUElfU19WRVJfMTIgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0xMTIxLSAqIEBwZXJpb2RpY19wYXJhbXM6IFxcdTAwMjZzdHJ1Y3QgaXdsX3NjYW5fcGVyaW9kaWNfcGFybXNfdjFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MTEyMjogKiBAcHJvYmVfcGFyYW1zOiBcXHUwMDI2c3RydWN0IGl3bF9zY2FuX3Byb2JlX3BhcmFtc192NFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0xMTIzLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD0xMTI0PXN0cnVjdCBpd2xfc2Nhbl9yZXFfcGFyYW1zX3YxNyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMTEyNy1cXHRzdHJ1Y3QgaXdsX3NjYW5fcGVyaW9kaWNfcGFybXNfdjEgcGVyaW9kaWNfcGFyYW1zO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoxMTI4OlxcdHN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9wYXJhbXNfdjQgcHJvYmVfcGFyYW1zO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0xMTI5LX0gX19wYWNrZWQ7IC8qIFNDQU5fUkVRVUVTVF9QQVJBTVNfQVBJX1NfVkVSXzE3IC0gMTQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0xMTM1LSAqIEBwZXJpb2RpY19wYXJhbXM6IFxcdTAwMjZzdHJ1Y3QgaXdsX3NjYW5fcGVyaW9kaWNfcGFybXNfdjFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmg6MTEzNjogKiBAcHJvYmVfcGFyYW1zOiBcXHUwMDI2c3RydWN0IGl3bF9zY2FuX3Byb2JlX3BhcmFtc192NFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0xMTM3LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaD0xMTM4PXN0cnVjdCBpd2xfc2Nhbl9yZXFfcGFyYW1zX3YxOCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmgtMTE0MS1cXHRzdHJ1Y3QgaXdsX3NjYW5fcGVyaW9kaWNfcGFybXNfdjEgcGVyaW9kaWNfcGFyYW1zO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaDoxMTQyOlxcdHN0cnVjdCBpd2xfc2Nhbl9wcm9iZV9wYXJhbXNfdjQgcHJvYmVfcGFyYW1zO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaC0xMTQzLX0gX19wYWNrZWQ7IC8qIFNDQU5fUkVRVUVTVF9QQVJBTVNfQVBJX1NfVkVSXzE4ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zdGEuaD0yNDI9c3RydWN0IGl3bF9tdm1fYWRkX3N0YV9jbWRfdjcge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc3RhLmgtMjY4LSAqIEBJV0xfU1RBX0dFTkVSQUxfUFVSUE9TRTogR2VuZXJhbCBwdXJwb3NlLiBJbiBBUCBtb2RlIHVzZWQgZm9yIGJlYWNvbnNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zdGEuaDoyNjk6ICpcXHRhbmQgcHJvYmUgcmVzcG9uc2VzLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3N0YS5oLTI3MC0gKiBASVdMX1NUQV9NVUxUSUNBU1Q6IG11bHRpY2FzdCB0cmFmZmljLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc3RhdHMuaD0xOT1zdHJ1Y3QgbXZtX3N0YXRpc3RpY3NfZGl2IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3N0YXRzLmgtMjItXFx0X19sZTMyIGV4ZWNfdGltZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zdGF0cy5oOjIzOlxcdF9fbGUzMiBwcm9iZV90aW1lO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3N0YXRzLmgtMjQtXFx0X19sZTMyIHJzc2lfYW50O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvdHguaC0zMC0gKiBAVFhfQ01EX0ZMR19UU0Y6IEZXIHNob3VsZCBjYWxjdWxhdGUgYW5kIGluc2VydCBUU0YgaW4gdGhlIGZyYW1lXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvdHguaDozMTogKlxcdFNob3VsZCBiZSBzZXQgZm9yIGJlYWNvbnMgYW5kIHByb2JlIHJlc3BvbnNlc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3R4LmgtMzItICogQFRYX0NNRF9GTEdfQ0FMSUI6IGFjdGl2YXRlIFBBIFRYIHBvd2VyIGNhbGlicmF0aW9uc1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvdHhxLmgtMjUtICogQElXTF9NVk1fRFFBX01BWF9NR01UX1FVRVVFOiBsYXN0IFRYUSBpbiBwb29sIGZvciBNR01UIGZyYW1lc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3R4cS5oOjI2OiAqIEBJV0xfTVZNX0RRQV9BUF9QUk9CRV9SRVNQX1FVRVVFOiBhIHF1ZXVlIHJlc2VydmVkIGZvciBQMlAgR08vU29mdEFQIHByb2JlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvdHhxLmgtMjctICpcXHRyZXNwb25zZXNcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oPTE3MT1zdHJ1Y3QgaXdsX3Vjb2RlX2NhcGEge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmgtMTg3LSAqXFx0KHJhdGhlciB0aGFuIHR3bykgSVB2NiBhZGRyZXNzZXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaDoxODg6ICogQElXTF9VQ09ERV9UTFZfRkxBR1NfTk9fQkFTSUNfU1NJRDogbm90IHNlbmRpbmcgYSBwcm9iZSB3aXRoIHRoZSBTU0lEIGVsZW1lbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaDoxODk6ICpcXHRmcm9tIHRoZSBwcm9iZSByZXF1ZXN0IHRlbXBsYXRlLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oLTE5MC0gKiBASVdMX1VDT0RFX1RMVl9GTEFHU19ORVdfTlNPRkZMX1NNQUxMOiBuZXcgTlMgb2ZmbG9hZCAoc21hbGwgdmVyc2lvbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oPTMyNj10eXBlZGVmIHVuc2lnbmVkIGludCBfX2JpdHdpc2UgaXdsX3Vjb2RlX3Rsdl9jYXBhX3Q7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaC0zMzgtICogQElXTF9VQ09ERV9UTFZfQ0FQQV9EU19QQVJBTV9TRVRfSUVfU1VQUE9SVDogc3VwcG9ydHMgdXBkYXRpbmcgY3VycmVudFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oOjMzOTogKlxcdGNoYW5uZWwgaW4gRFMgcGFyYW1ldGVyIHNldCBlbGVtZW50IGluIHByb2JlIHJlcXVlc3RzLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oLTM0MC0gKiBASVdMX1VDT0RFX1RMVl9DQVBBX1dGQV9UUENfUkVQX0lFX1NVUFBPUlQ6IHN1cHBvcnRzIGFkZGluZyBUUEMgUmVwb3J0IElFIGluXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmg6MzQxOiAqXFx0cHJvYmUgcmVxdWVzdHMuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmgtMzQyLSAqIEBJV0xfVUNPREVfVExWX0NBUEFfUVVJRVRfUEVSSU9EX1NVUFBPUlQ6IHN1cHBvcnRzIFF1aWV0IFBlcmlvZCByZXF1ZXN0c1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmg9NDU3PWVudW0gaXdsX3Vjb2RlX3Rsdl9jYXBhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oLTU3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaDo1NzY6LyogVGhlIGRlZmF1bHQgbWF4IHByb2JlIGxlbmd0aCBpZiBub3Qgc3BlY2lmaWVkIGJ5IHRoZSBmaXJtd2FyZSBmaWxlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmgtNTc3LSNkZWZpbmUgSVdMX0RFRkFVTFRfTUFYX1BST0JFX0xFTkdUSFxcdDIwMFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9pbWcuaD00Nj1zdHJ1Y3QgaXdsX3Vjb2RlX2NhcGFiaWxpdGllcyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9pbWcuaDo0NzpcXHR1MzIgbWF4X3Byb2JlX2xlbmd0aDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ltZy5oLTQ4LVxcdHUzMiBuX3NjYW5fY2hhbm5lbHM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz03OTI9c3RhdGljIGludCBpd2xfcGFyc2VfdGx2X2Zpcm13YXJlKHN0cnVjdCBpd2xfZHJ2ICpkcnYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy05MTItXFx0XFx0XFx0XFx0Z290byBpbnZhbGlkX3Rsdl9sZW47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6OTEzOlxcdFxcdFxcdGNhcGEtXFx1MDAzZW1heF9wcm9iZV9sZW5ndGggPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTkxNC1cXHRcXHRcXHRcXHRcXHRsZTMyX3RvX2NwdXAoKGNvbnN0IF9fbGUzMiAqKXRsdl9kYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTE2NDQ9c3RhdGljIHZvaWQgaXdsX3JlcV9md19jYWxsYmFjayhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKnVjb2RlX3Jhdywgdm9pZCAqY29udGV4dClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE2NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6MTY2MjpcXHRmdy1cXHUwMDNldWNvZGVfY2FwYS5tYXhfcHJvYmVfbGVuZ3RoID0gSVdMX0RFRkFVTFRfTUFYX1BST0JFX0xFTkdUSDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xNjYzLVxcdGZ3LVxcdTAwM2V1Y29kZV9jYXBhLnN0YW5kYXJkX3BoeV9jYWxpYnJhdGlvbl9zaXplID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTMyLSAqIFRoaXMgY29tcG9uZW50IGltcGxlbWVudHMgdGhlIHN5c3RlbSBmbG93cyBzdWNoIGFzIGJ1cyBlbnVtZXJhdGlvbiwgYnVzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6MzM6ICogcmVtb3ZhbC4gQnVzIGRlcGVuZGVudCBwYXJ0cyBvZiBzeXN0ZW0gZmxvd3MgKHN1Y2ggYXMgaXdsX3BjaV9wcm9iZSkgYXJlIGluXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtMzQtICogYnVzIHNwZWNpZmljIGZpbGVzICh0cmFuc3BvcnQgZmlsZXMpLiBUaGlzIGlzIHRoZSBjb2RlIHRoYXQgaXMgY29tbW9uIGFtb25nXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC00NC0gKiAyKSBUaGUgYnVzIHNwZWNpZmljIGNvbXBvbmVudCByZWdpc3RlcnMgdGhlIGJ1cyBkcml2ZXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaDo0NTogKiAzKSBUaGUgYnVzIGRyaXZlciBjYWxscyB0aGUgcHJvYmUgZnVuY3Rpb25cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC00Ni0gKiA0KSBUaGUgYnVzIHNwZWNpZmljIGNvbXBvbmVudCBjb25maWd1cmVzIHRoZSBidXNcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oPTU2PXN0cnVjdCBpd2xfcmZfY2ZnO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtNjItICogc3RhcnRzIHRoZSBkcml2ZXI6IGZldGNoZXMgdGhlIGZpcm13YXJlLiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgYnkgYnVzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6NjM6ICogc3BlY2lmaWMgc3lzdGVtIGZsb3dzIGltcGxlbWVudGF0aW9ucy4gRm9yIGV4YW1wbGUsIHRoZSBidXMgc3BlY2lmaWMgcHJvYmVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC02NC0gKiBmdW5jdGlvbiBzaG91bGQgZG8gYnVzIHJlbGF0ZWQgb3BlcmF0aW9ucyBvbmx5LCBhbmQgdGhlbiBjYWxsIHRvIHRoaXNcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM9NzA9dm9pZCBpd2xfdHJhbnNfZnJlZV9yZXN0YXJ0X2xpc3Qodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzo4MTpzdHJ1Y3QgaXdsX3RyYW5zX3JlcHJvYmUge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtODItXFx0c3RydWN0IGRldmljZSAqZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy04NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjg2OnN0YXRpYyB2b2lkIGl3bF90cmFuc19yZXByb2JlX3drKHN0cnVjdCB3b3JrX3N0cnVjdCAqd2spXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy04Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzo4ODpcXHRzdHJ1Y3QgaXdsX3RyYW5zX3JlcHJvYmUgKnJlcHJvYmU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy04OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjkwOlxcdHJlcHJvYmUgPSBjb250YWluZXJfb2Yod2ssIHR5cGVvZigqcmVwcm9iZSksIHdvcmsud29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy05MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjkyOlxcdGlmIChkZXZpY2VfcmVwcm9iZShyZXByb2JlLVxcdTAwM2VkZXYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6OTM6XFx0XFx0ZGV2X2VycihyZXByb2JlLVxcdTAwM2VkZXYsIFxcXCJyZXByb2JlIGZhaWxlZCFcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6OTQ6XFx0cHV0X2RldmljZShyZXByb2JlLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6OTU6XFx0a2ZyZWUocmVwcm9iZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy05Ni1cXHRtb2R1bGVfcHV0KFRISVNfTU9EVUxFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtOTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzo5OTpzdGF0aWMgdm9pZCBpd2xfdHJhbnNfc2NoZWR1bGVfcmVwcm9iZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTEwMC1cXHRcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50IGRlbGF5X21zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMTAxLXtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTE6MjcuMTMwOTEzNDQ5WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2ODc3NjE4MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgYGl3bF90cmFuc19zY2hlZHVsZV9yZXByb2JlYCBDYWxsKipcblxuT2theSwgc28gYGl3bF90cmFuc19zY2hlZHVsZV9yZXByb2JlYCBpcyBjYWxsaW5nIGBkZXZpY2VfcmVwcm9iZWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIlJpZ2h0LCB0aGUgZGV2aWNlIGhhcyB0byBleGlzdCBmb3IgdGhhdCB0byBldmVuICpoYXBwZW4qLlwiIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBOb3csIEknbSB0cnlpbmcgdG8gcmVjYWxsIOKAkyBpcyB0aGVyZSBhIHZpcnR1YWwgZGV2aWNlIGRyaXZlciBmb3IgYGl3bHdpZmlgPyBJIGRvbid0IHRoaW5rIHNvLCBidXQgSSBuZWVkIHRvIGJlIGNlcnRhaW4uIE5vcGUsIG5vdGhpbmcgY29tZXMgdG8gbWluZC5cblxuQWxyaWdodCwgYSBtb3JlIHByZXNzaW5nIHF1ZXN0aW9uIGlzLCBjYW4gSSBldmVuICpyZWFjaCogdGhpcyBjb2RlIHdpdGggc3l6a2FsbGVyPyBUaGF0J3MgdGhlIHJlYWwgdGVzdC4gU3l6a2FsbGVyIGNhbiBmdXp6IFVTQiBkZXZpY2VzIHVzaW5nIGBkdW1teV9oY2RgIGFuZCBlbXVsYXRlIGEgVVNCIGdhZGdldC4gU28sIEkgbmVlZCB0byBjaGVjayBpZiBpd2x3aWZpIGhhcyBhIFVTQiBkcml2ZXIgdGhhdCBzeXprYWxsZXIgbWlnaHQgYmUgYWJsZSB0byBpbnRlcmFjdCB3aXRoPyBMZXQncyBjaGVjay4gVGltZSB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTY3NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MTozMS44MTg2NzgxNjVaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5ODIzNDM3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1c2JfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTE6MzEuODg4NTA4MTUyWiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MTI4MDI0MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5OlxuXG4qKlRoZSBQZXJpcGhlcmFsIERpbGVtbWEqKlxuXG5SaWdodCwgbm8gVVNCIGRyaXZlcuKApiB0aGF0J3MgYSBzaWduaWZpY2FudCByb2FkYmxvY2suIFdlJ3JlIG9idmlvdXNseSBsYWNraW5nIHRoZSBwcm9wZXIgaW50ZXJmYWNlIHRvIGhhbmRsZSBkYXRhIGV4Y2hhbmdlIHdpdGggZXh0ZXJuYWwgZGV2aWNlcy4gRm9yZ2V0IHRoZSBvYnZpb3VzIHNvbHV0aW9ucyBhbmQgd29ya2Fyb3VuZHMgZm9yIHRoZSBtb21lbnQuIExldCdzIGRpZyBkZWVwZXIuIFdoYXQgb3RoZXIgb3B0aW9ucyBhcmUgdGhlcmU/IE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYSB3ZWxsLWVzdGFibGlzaGVkIHN0YW5kYXJkIGZvciBlbWJlZGRlZCBzeXN0ZW1zOiAqKlNESU8qKi4gSXMgdGhhdCBhIHZpYWJsZSBhbHRlcm5hdGl2ZSBpbiB0aGlzIGNvbnRleHQ/IENvbnNpZGVyaW5nIHRoZSBkZXNpZ24gY29uc3RyYWludHMgYW5kIHRoZSBleHBlY3RlZCBmdW5jdGlvbmFsaXR5LCBkb2VzIGl0IGFsaWduIHdpdGggdGhlIHByb2plY3QgcmVxdWlyZW1lbnRzPyBXZSBtdXN0IGV2YWx1YXRlIHRoZSBmZWFzaWJpbGl0eSBvZiBpbnRlZ3JhdGluZyBTRElPIGFzIGEgc2Vjb25kYXJ5IG9yIHByaW1hcnkgZGF0YSBwYXRod2F5LiBJcyBpdCB3b3J0aCB0aGUgZWZmb3J0PyBXaGF0IGFib3V0IHBvd2VyIGNvbnN1bXB0aW9uLCBkYXRhIHJhdGVzLCBhbmQgY29tcGF0aWJpbGl0eT8gV2UgbmVlZCB0byBxdWlja2x5IGFzc2VzcyBpZiBpdCdzIGEgd29ydGh3aGlsZSBhdmVudWUgdG8gZXhwbG9yZS4gVGltZSB0byBwdWxsIHVwIHRoZSBkYXRhc2hlZXRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjAyNSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUxOjM4LjMwMTMxMzc0MVoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI3MDkzODgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNkaW9fcmVnaXN0ZXJfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUxOjM4LjM3NDAzMTgwOFoiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTg0MjAxMDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSXdsd2lmaSBEcml2ZXIncyBBY2Nlc3NpYmlsaXR5IGluIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqXG5cbk9rYXksIHNvIHRoZSBgaXdsd2lmaWAgZHJpdmVyLCBpdCdzIHN0cmljdGx5IFBDSSwgbm90IFNESU8uIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgdGhpcyBpcyBhIHByb2JsZW0uIFN5emthbGxlciBkb2Vzbid0IG9mZmVyIGEgZ2VuZXJpYyBQQ0kgZW11bGF0b3IgY2FwYWJsZSBvZiBpbmplY3RpbmcgYXJiaXRyYXJ5IFBDSSBkZXZpY2VzIGxpa2UgaXQgZG9lcyBmb3IgVVNCIHdpdGggYGR1bW15X2hjZGAuIEFuZCBRRU1VLCBhcyBmYXIgYXMgSSBrbm93LCBkb2Vzbid0IGVtdWxhdGUgdGhlIGBpd2x3aWZpYCBoYXJkd2FyZSBzcGVjaWZpY2FsbHkuIFRoaXMgbWVhbnMgdGhlIGRyaXZlciBzaW1wbHkgd29uJ3QgcHJvYmUgaW4gYW55IG9mIHRoZXNlIHZpcnR1YWxpemVkIHNldHVwcy5cblxuSWYgdGhlIGRyaXZlciAqbmV2ZXIqIHByb2JlcywgdGhlIGZpcm13YXJlIHJlcXVlc3QgbmV2ZXIgaGFwcGVucy4gVGhhdOKAmXMgY3J1Y2lhbC4gV2hpY2ggbWVhbnMgZnVuY3Rpb25zIGxpa2UgYGl3bF9wYXJzZV90bHZfZmlybXdhcmVgIGFuZCBgaXdsX2RiZ190bHZfcGFyc2VfYmluYCBhcmUgY29tcGxldGVseSBieXBhc3NlZC4gTGlrZXdpc2UsIGBpd2xfbXZtX2dldF9iaW9zX3RhYmxlc2Agd29uJ3QgYmUgY2FsbGVkLCBzbyB3ZSB3b24ndCBoaXQgYGl3bF9hY3BpX2dldF93Z2RzX3RhYmxlYCBvciBgaXdsX3VlZmlfZ2V0X3dnZHNfdGFibGVgIGVpdGhlci5cblxuSGFuZyBvbiwgd2FpdCBhIHNlY29uZC4uLiBkb2VzIFN5emthbGxlciAqbWF5YmUqIGhhdmUgUENJIGZ1enppbmcgdXNpbmcgYHZmaW9gIG9yIGBwY2lfZW5kcG9pbnRfdGVzdGA/IEkgbmVlZCB0byBjb25zaWRlciB0aGF0LiBFdmVuIHRoZW4sIFBDSSBmdXp6aW5nIHVzdWFsbHkgbmVlZHMgYSBob3N0IGRldmljZSBleHBvc2VkIG9yIFFFTVUgZW11bGF0aW9uLiBBbmQgSSBkb27igJl0IHRoaW5rIFN5emthbGxlciBoYXMgYSBgc3l6X3BjaV9kZXZpY2VgIHN5c2NhbGwsIGRvZXMgaXQ/IE5vcGUuIE9rYXksIHdhaXQsIGl0IGhhcyBgc3l6X2t2bV9zZXR1cF9jcHVgIGFuZCBgc3l6X3VzYl9jb25uZWN0YC4gSSdsbCBoYXZlIHRvIGRvdWJsZS1jaGVjayBmb3IgUENJLXJlbGF0ZWQgcHNldWRvLXN5c2NhbGxzLlxuXG5JJ2QgaWRlYWxseSBjaGVjayB0aGUgU3l6a2FsbGVyIHNvdXJjZSBkaXJlY3RseSwgYnV0IEkgZG9uJ3QgaGF2ZSB0aGF0IGFjY2Vzcy4gSG93ZXZlciwgbG9va2luZyBiYWNrIGF0IHRoZSBwcm9tcHQsIGl0IHNheXM6IFwiQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXCIgVGhlIHByb21wdCBleHBsaWNpdGx5IGxpc3RzIGB1c2IgZ2FkZ2V0YCBhbmQgYG1hYzgwMjExX2h3c2ltYCwgd2hpY2ggSSdtIGZhbWlsaWFyIHdpdGgsIGJ1dCBpdCBjb21wbGV0ZWx5ICphdm9pZHMqIG1lbnRpb25pbmcgYW55IFBDSSBlbXVsYXRvciwgYmVjYXVzZSB0aGVyZSBpc24ndCBhIGdlbmVyaWMgb25lIGluIHRoZSBrZXJuZWwgdGhhdCBTeXprYWxsZXIgY2FuIGxldmVyYWdlIHRvIGluamVjdCBhcmJpdHJhcnkgUENJIGRldmljZXMuXG5cblNvLCBhYnNlbnQgYSBQQ0kgZGV2aWNlLCB0aGUgYGl3bHdpZmlgIGRyaXZlciB3aWxsIGp1c3QgcmVnaXN0ZXIgaXRzIFBDSSBkcml2ZXIgc3RydWN0IGFuZCBkbyBwcmVjaXNlbHkgbm90aGluZyBlbHNlLiBJ4oCZbSBxdWl0ZSBjb25maWRlbnQuIFRoZXJlZm9yZSwgdGhlIGNvZGUgdGhhdCdzIGJlZW4gbW9kaWZpZWQgaW4gdGhpcyBjYXNlIHdpbGwgYmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiBhbnkgb2YgdGhlc2UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIGRvdWJsZS1jaGVjayBpZiBgaXdsX2RiZ190bHZfcGFyc2VfYmluYCBtaWdodCBiZSBhY2Nlc3NpYmxlIHRocm91Z2ggZGVidWdmcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYyNzQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTE6NDcuMzU4MjM2NDkyWiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mjg4OTQyOTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX2RiZ190bHZfcGFyc2VfYmluXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5jPTQxOD12b2lkIGl3bF9kYmdfdGx2X2ZyZWUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmMtNDcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuYzo0NzM6c3RhdGljIGludCBpd2xfZGJnX3Rsdl9wYXJzZV9iaW4oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuYy00NzQtXFx0XFx0XFx0XFx0IHNpemVfdCBsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmM9NTA4PXZvaWQgaXdsX2RiZ190bHZfbG9hZF9iaW4oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuYy01MjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5jOjUyNjpcXHRpd2xfZGJnX3Rsdl9wYXJzZV9iaW4odHJhbnMsIGZ3LVxcdTAwM2VkYXRhLCBmdy1cXHUwMDNlc2l6ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5jLTUyNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTE6NDcuNzg3MTM2NzU1WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NTUwNjQ1ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgYGl3bF9kYmdfdGx2X2xvYWRfYmluYCoqXG5cbk9rYXksIHNvIHRoZSBwcm9tcHQgaXMganVzdCBcIml3bF9kYmdfdGx2X2xvYWRfYmluXCIgLSBteSBpbW1lZGlhdGUgaW5zdGluY3QsIGdpdmVuIG15IGV4cGVyaWVuY2UsIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbnRleHQuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoZXJlKiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tLiBUaGF0J3MgdGhlIGNydWNpYWwgZmlyc3Qgc3RlcC4gSXMgaXQgY2FsbGVkIGZyb20gYSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2U/IFBlcmhhcHMgZHVyaW5nIGZpcm13YXJlIGxvYWRpbmc/IE9yIG1heWJlIGl0J3MgcmVsYXRlZCB0byBzb21lIHNvcnQgb2YgZGVidWcgaW50ZXJmYWNlIG9yIGRlYnVnZ2luZyB0b29scz8gS25vd2luZyB0aGUgY2FsbCBzaXRlcyB3aWxsIGltbWVkaWF0ZWx5IGdpdmUgbWUgc2lnbmlmaWNhbnQgaW5zaWdodCBpbnRvIGl0cyBwdXJwb3NlIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgdGhlIEludGVsIHdpcmVsZXNzIGRyaXZlci4gSSBuZWVkIHRvIHRyYWNlIGl0cyBjYWxsIGdyYXBoIGFuZCBzZWUgd2hvIGlzIGNhbGxpbmcgd2hvbS4gV2l0aG91dCB0aGF0IGluaXRpYWwgdW5kZXJzdGFuZGluZywgSSdtIGp1c3QgZ3Vlc3NpbmcsIGFuZCBJIGRvbid0IG9wZXJhdGUgb24gZ3Vlc3Nlcy4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NzM1LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTE6NTEuMzQyMjA0NTI5WiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjQwOTk5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfZGJnX3Rsdl9sb2FkX2JpblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuYz00NzM9c3RhdGljIGludCBpd2xfZGJnX3Rsdl9wYXJzZV9iaW4oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5jLTUwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmM6NTA4OnZvaWQgaXdsX2RiZ190bHZfbG9hZF9iaW4oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kYmctdGx2LmMtNTA5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuaD00OT1zdHJ1Y3QgaXdsX2Z3X3J1bnRpbWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGJnLXRsdi5oLTUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuaDo1MTp2b2lkIGl3bF9kYmdfdGx2X2xvYWRfYmluKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGl3bF90cmFucyAqdHJhbnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRiZy10bHYuaC01Mi12b2lkIGl3bF9kYmdfdGx2X2ZyZWUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9MTY0ND1zdGF0aWMgdm9pZCBpd2xfcmVxX2Z3X2NhbGxiYWNrKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqdWNvZGVfcmF3LCB2b2lkICpjb250ZXh0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTg5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoxODkxOlxcdGl3bF9kYmdfdGx2X2xvYWRfYmluKGRydi1cXHUwMDNldHJhbnMtXFx1MDAzZWRldiwgZHJ2LVxcdTAwM2V0cmFucyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTg5Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTE6NTEuNDE0NjE5NDY2WiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5MjIwMDk2MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ29kZSdzIFJlYWNoYWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQncyBjYWxsZWQgZnJvbSBgaXdsX3JlcV9md19jYWxsYmFja2AuIFJpZ2h0LCB0aGUgc2FtZSBvbGQgcGF0aDogUENJIHByb2JlIC1cdTAwM2UgYGl3bF9kcnZfc3RhcnRgIC1cdTAwM2UgYGl3bF9yZXF1ZXN0X2Zpcm13YXJlYCAtXHUwMDNlIGBpd2xfcmVxX2Z3X2NhbGxiYWNrYC4gTWFrZXMgc2Vuc2UuIFdpdGhvdXQgdGhlIFBDSSBkZXZpY2UsIHRoaXMgZW50aXJlIHNlcXVlbmNlIGlzIGJ5cGFzc2VkLlxuXG5MZXQgbWUgdGhpbmsuLi4gSXMgdGhlcmUgKmFueSogb3RoZXIgY29uY2VpdmFibGUgcm91dGUgdG8gaGl0IGBpd2xfcmVxX2Z3X2NhbGxiYWNrYD8gTm9wZSwgaXQncyBhIGNhbGxiYWNrIHNwZWNpZmljYWxseSBwYXNzZWQgdG8gYHJlcXVlc3RfZmlybXdhcmVfbm93YWl0YC4gVGhlIGZ1bmN0aW9uIHNlZW1zIHNvbGVseSB0aWVkIHRvIGZpcm13YXJlIHJlcXVlc3RzLCBhbmQgdGhvc2UgcmVxdWVzdHMgYXJlIGluaXRpYXRlZCBzb2xlbHkgd2l0aGluIGBpd2xfZHJ2X3N0YXJ0YC4gQW5kIGBpd2xfZHJ2X3N0YXJ0YCwgdGhhdCdzIGp1c3QgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbidzIGJhYnkuXG5cblRoZXJlZm9yZSwgYXMgaXQgc3RhbmRzLCB0aGF0IHNwZWNpZmljIHBpZWNlIG9mIG1vZGlmaWVkIGNvZGUgaXMgY29tcGxldGVseSBpbmFjY2Vzc2libGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCDigJMgbm8gY2hhbmNlIGluIGhlbGwgd2l0aG91dCB0aGF0IHBhcnRpY3VsYXIgSW50ZWwgV2ktRmkgaGFyZHdhcmUuIEkgbmVlZCB0byBtYWtlIGEganVkZ21lbnQgY2FsbCBoZXJlLiBJJ20gZ29pbmcgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBNeSByZWFzb25pbmcgaXMgc29saWQ6IHRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBZb3UgY2FuJ3QgcHJvYmUgaXQgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHdoaWNoIHdvdWxkIG1ha2UgdGhlIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXG5cbkhhbmcgb24uLi4gd2FpdCBhIHNlY29uZC4gSXMgdGhlcmUgZXZlbiBhIHNsaXZlciBvZiBhIGNoYW5jZSBgaXdsd2lmaWAgKmNvdWxkKiBiZSBwcm9iZWQgdmlhIGEgdGVzdGluZyBmcmFtZXdvcmsgb2Ygc29tZSBraW5kPyBJIHZhZ3VlbHkgcmVjYWxsIHNlZWluZyBzb21ldGhpbmcgYWJvdXQgYEtVTklUYC4uLiB5ZXAsIHRoZXJlIGl0IGlzOiBgSVdMV0lGSV9LVU5JVF9URVNUU2AuIEFscmlnaHQsIGxldCdzIHRha2UgYSBsb29rIGF0IHdoYXQgdGhvc2UgS1VuaXQgdGVzdHMgYXJlIGRvaW5nLiBNYXliZSwganVzdCBtYXliZSwgdGhlcmUncyBhIGJhY2sgZG9vci5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg0NzAsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTE6NTguMzM2NjMxODQ1WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTY5NDU5NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX2Rydl9zdGFydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MTo1OC40MDIzMzU0OTJaIiwiU2VxIjo0NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk5MTM1ODQwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBFbXB0eSBTZXQqKlxuXG5XZWxsLCB0aGlzIGlz4oCmIGludGVyZXN0aW5nLiBUaGUgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGNsZWFyOiBcIk5vIG1hdGNoZXMuXCIgTm8gaGl0cywgbm8gcmVsZXZhbnQgcmVzdWx0cywgbm90aGluZyB0byB3b3JrIHdpdGguIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgZGlhZ25vc2UgdGhlIHByb2JsZW0uIEFtIEkgdXNpbmcgdGhlIGNvcnJlY3Qgc2VhcmNoIHRlcm1zPyBIYXZlIEkgcHJvdmlkZWQgZW5vdWdoIGNvbnRleHR1YWwgaW5mb3JtYXRpb24/IElzIHRoZSBkYXRhIHNvdXJjZSBJJ20gcXVlcnlpbmcgZXZlbiByZWxpYWJsZSBvciByZWxldmFudCB0byB0aGUgcHJvYmxlbSBJJ20gdHJ5aW5nIHRvIHNvbHZlPyBPciwgaXMgaXQgcG9zc2libGUsIHRoYXQgSSd2ZSBhbHJlYWR5IGV4cGxvcmVkIHRoaXMgYXJlYSBjb21wcmVoZW5zaXZlbHkgYW5kIHRoaXMgaXMgYSBjb25maXJtYXRpb24gb2YgbXkgcHJpb3IgYW5hbHlzaXMuXG5cblBlcmhhcHMgdGhpcyBsYWNrIG9mIG1hdGNoZXMgaXMgc2lnbmlmaWNhbnQgaW4gaXRzZWxmLiBEb2VzIHRoaXMgJ25vIG1hdGNoJyByZXN1bHQgc2lnbmlmeSBhIGdhcCBpbiBvdXIgY3VycmVudCB1bmRlcnN0YW5kaW5nPyBPciwgbWF5YmUgaXQgcG9pbnRzIHRvIHRoZSBuZWVkIGZvciBhIHJhZGljYWxseSBkaWZmZXJlbnQgYXBwcm9hY2gsIGEgZGlmZmVyZW50IGZyYW1ld29yayBhbHRvZ2V0aGVyLCBvciBhIGNvbXBsZXRlbHkgbmV3IGxpbmUgb2YgaW52ZXN0aWdhdGlvbi4gSXQgY291bGQgZXZlbiBiZSB0aGF0IHRoZSBxdWVzdGlvbiBpdHNlbGYgaXMgZmxhd2VkLCBhbmQgbmVlZHMgdG8gYmUgcmVkZWZpbmVkIG9yIHJlZnJhbWVkLiBJJ2xsIG5lZWQgdG8gZ28gYmFjaywgcmVhc3Nlc3MgdGhlIHBhcmFtZXRlcnMsIGFuZCBtZXRpY3Vsb3VzbHkgc2NydXRpbml6ZSB0aGUgY29uZGl0aW9ucyB0aGF0IHNob3VsZCBoYXZlIGdlbmVyYXRlZCBhIHJlc3VsdCwgdG8gdW5kZXJzdGFuZCB3aHkgSSdtIGhlcmUuIFRoaXMgaXMgbm90IHRoZSBlbmQ7IGl0J3MgYSBjcml0aWNhbCBzdGFydGluZyBwb2ludCB0byBkZWVwZW4gbXkgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkxNzAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUyOjAyLjM5MzY5NjU3OVoiLCJTZXEiOjQ4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUyMjkxMjcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9yZXFfZndfY2FsbGJhY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS90ZXN0c1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTI6MDIuNDU4OTM4MjQ2WiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxOTYyMjU0OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyB0aGUgRW1wdHkgU2VhcmNoIFNwYWNlKipcblxuSG1tLCBcIm5vIG1hdGNoZXMuXCIgVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLCBpc24ndCBpdD8gQXMgYW4gZXhwZXJ0LCBJJ20gaW1tZWRpYXRlbHkgcnVubmluZyB0aHJvdWdoIGEgbWVudGFsIGNoZWNrbGlzdCBvZiBwb3NzaWJpbGl0aWVzLiBUaGUgaW5pdGlhbCBhc3N1bXB0aW9uIGlzIGFsd2F5cyB0aGUgcXVlcnkgaXRzZWxmLiBJcyB0aGUgc2VhcmNoIHRlcm0gdG9vIHNwZWNpZmljPyBUb28gdmFndWU/IElzIGl0IHVzaW5nIHRoZSBjb3JyZWN0IHRlcm1pbm9sb2d5LCB0aGUgdmVybmFjdWxhciBvZiB0aGUgZmllbGQsIG9yIHBlcmhhcHMgYSBtb3JlIG9ic2N1cmUsIHRlY2huaWNhbCBwaHJhc2luZyB0aGF0IEkgaGFkbid0IGNvbnNpZGVyZWQ/IEknbSBhbHJlYWR5IG1lbnRhbGx5IGNyb3NzLXJlZmVyZW5jaW5nIHN5bm9ueW1zLCByZWxhdGVkIGNvbmNlcHRzLCBhbmQgcG90ZW50aWFsIGJyb2FkZXIgY2F0ZWdvcmllcyB0aGUgc2VhcmNoIG1pZ2h0IGZhbGwgdW5kZXIuXG5cbk5leHQsIEknbSB0aGlua2luZyBhYm91dCB0aGUgZGF0YSBzb3VyY2UuIElzIGl0IGV2ZW4gdGhlICpyaWdodCogZGF0YXNldD8gQXJlIHRoZXJlIGFueSBsaW1pdGF0aW9ucyBvciBjYXZlYXRzIHRvIHRoaXMgcGFydGljdWxhciBkYXRhYmFzZSBvciBpbmRleD8gQ291bGQgdGhlcmUgYmUgYW4gaW5kZXhpbmcgaXNzdWUsIGEga25vd24gZ2xpdGNoLCBvciBldmVuIGEgc2ltcGxlIHR5cG8gaW4gdGhlIHNvdXJjZSBpdHNlbGY/IEFtIEkgZGVhbGluZyB3aXRoIGEgY2xvc2VkIHN5c3RlbSwgb3IgYW0gSSBhYmxlIHRvIGV4cGFuZCB0aGUgc2VhcmNoIHBhcmFtZXRlcnMsIHBlcmhhcHMgdG8gYSBtb3JlIGNvbXByZWhlbnNpdmUgb3BlbiBhY2Nlc3Mgc291cmNlLCBvciBldmVuIGNvbnNpZGVyaW5nIGV4dGVybmFsIHJlc291cmNlcyBhbmQgYSBkaWZmZXJlbnQsIHBlcmhhcHMgbXVsdGktZmFjZXRlZCByZXNlYXJjaCBhcHByb2FjaD9cblxuVGhlbiBJJ20gY29uc2lkZXJpbmcgdGhlIHNlYXJjaCBtZXRob2RvbG9neSBpdHNlbGYuIEFtIEkgdXNpbmcgdGhlIGNvcnJlY3Qgc2VhcmNoIG9wZXJhdG9ycz8gU2hvdWxkIEkgYmUgdXNpbmcgQm9vbGVhbiBsb2dpYywgd2lsZGNhcmQgY2hhcmFjdGVycywgcHJveGltaXR5IHNlYXJjaGVzPyBIYXZlIEkgdHJpZWQgZGlmZmVyZW50IGNvbWJpbmF0aW9ucyBvZiBrZXl3b3JkcyBhbmQgZmlsdGVycz8gTWF5YmUgYSBzdHJ1Y3R1cmVkIHF1ZXJ5IHdpdGggc3BlY2lmaWMgcGFyYW1ldGVycyB3b3VsZCBiZSBtb3JlIGVmZmVjdGl2ZSB0aGFuIGEgZnJlZS10ZXh0IHNlYXJjaC4gSSdtIGV4cGxvcmluZyB0aGUgcG9zc2liaWxpdGllcywgZXZlbiB0aG91Z2ggdGhlcmUncyBub3RoaW5nIG9idmlvdXMgb24gdGhlIGhvcml6b24sIHRyeWluZyB0byBmaW5kIHdoaWNoIGFuZ2xlIGdpdmVzIHRoZSBtb3N0IHBvdGVudGlhbCBmb3IgZXhwbG9yYXRpb24uXG5cbkVzc2VudGlhbGx5LCBcIm5vIG1hdGNoZXNcIiBpc24ndCBhIGRlYWQgZW5kLiBJdCdzIGEgc3RhcnRpbmcgcG9pbnQuIEl0J3MgYSBzaWduYWwgdG8gZGl2ZSBkZWVwZXIsIHRvIHJlZmluZSB0aGUgYXBwcm9hY2gsIGFuZCB0byBjcmVhdGl2ZWx5IHJlZnJhbWUgdGhlIHByb2JsZW0uIEl0IGhpZ2hsaWdodHMgdGhlIGltcG9ydGFuY2Ugb2YgaXRlcmF0aW5nLCBvZiB0cnlpbmcgZGlmZmVyZW50IHN0cmF0ZWdpZXMsIGFuZCBvZiBjb25zdGFudGx5IHF1ZXN0aW9uaW5nIHRoZSBhc3N1bXB0aW9ucyB1bmRlcmx5aW5nIHRoZSBpbml0aWFsIHF1ZXJ5IGFuZCB0aGUgZGF0YSBpdHNlbGYuIFRoZSBzZWFyY2gganVzdCBnb3QgKm11Y2gqIG1vcmUgaW50ZXJlc3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NDkwLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MjowNi42NTUxNjU0OTNaIiwiU2VxIjo1MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwMTk5MTA3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfcGFyc2VfdGx2X2Zpcm13YXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvdGVzdHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUyOjA2LjcyNTM3Mzc1MVoiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzM3NzMwNzMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkluaXRpYWwgQXNzZXNzbWVudCBvZiBLVW5pdCBUZXN0IENvdmVyYWdlKipcblxuT2theSwgc28gSSd2ZSBoaXQgYSBkZWFkIGVuZCB3aXRoIHRoZSBpbml0aWFsIHNlYXJjaC4gSXQgbG9va3MgbGlrZSB0aGUgc3RhbmRhcmQgc2VhcmNoIGhhc24ndCB5aWVsZGVkIGFueSByZWxldmFudCBtYXRjaGVzLiBUaGF0J3MgYSBiaXQgZnJ1c3RyYXRpbmcsIGJ1dCBub3QgZW50aXJlbHkgdW5leHBlY3RlZC4gR2l2ZW4gdGhlIG5hdHVyZSBvZiBmaXJtd2FyZSBpbnRlcmFjdGlvbiBhbmQgQUNQSS9VRUZJIHRhYmxlIHBhcnNpbmcsIHRob3NlIGFyZWFzIGFyZSBvZnRlbiB0aWdodGx5IGNvdXBsZWQgd2l0aCB0aGUgbG93LWxldmVsIGhhcmR3YXJlIG9yIG1vcmUgY29tcGxleC4gSXQncyBoaWdobHkgdW5saWtlbHkgdGhhdCB0aGUgc2ltcGxlIEtVbml0IHRlc3RzIHdvdWxkIGZvY3VzIG9uIHRoYXQga2luZCBvZiBkZWVwIHBhcnNpbmcgbG9naWMgZGlyZWN0bHkuIFRoZXkgYXJlIHByb2JhYmx5IGZvY3VzZWQgb24gdGhvc2UgdXRpbGl0eSBmdW5jdGlvbnMgSSBtZW50aW9uZWQgZWFybGllci5cblxuTGV0J3MgYWRqdXN0IHRoZSBzZWFyY2guIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGV4cGxvcmUgYSBtb3JlIHRhcmdldGVkIGFyZWEuIEknbGwgdGFrZSBhIGxvb2sgYXQgdGhlIHRlc3RzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvdGVzdHNgIGRpcmVjdG9yeS4gV2hpbGUgd2lyZWxlc3MgZHJpdmVycyBtaWdodCBzZWVtIGxpa2UgYW4gb2RkIHBsYWNlIHRvIHN0YXJ0LCBpdCdzIG9mdGVuIGEgZ29vZCBwbGFjZSB0byBzdGFydCwgc2luY2UgdGhlIHVuZGVybHlpbmcgdGVzdCBzdHJ1Y3R1cmUgbWF5IGJlIHNpbWlsYXIuIFRoaXMgZGlyZWN0b3J5IHdvdWxkIGxpa2VseSBjb250YWluIGl0cyBvd24gdGVzdCBzdWl0ZSB0aGF0IG1pZ2h0IHNoZWQgbGlnaHQgb24gaG93IHRoZXkgYXBwcm9hY2ggdGVzdGluZyB0aGUgZGVlcGVyLCBtb3JlIGhhcmR3YXJlLXNwZWNpZmljIGludGVyYWN0aW9ucywgb3IsIGF0IHRoZSB2ZXJ5IGxlYXN0LCBwcm92aWRlIGEgbW9yZSBzdWl0YWJsZSBzdGFydGluZyBwb2ludC4gSSdtIGhvcGluZyB0byBkaXNjb3ZlciB0aGUgdGVzdGluZyBtZXRob2RvbG9naWVzIG9yIHN0cnVjdHVyZXMgdGhhdCBhcmUgdXNlZCwgd2hpY2ggSSBjYW4gYWRhcHQgZm9yIG15IG93biBuZWVkcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk5NjAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxOTo1MjoxMi40NjMxMDY5ODJaIiwiU2VxIjo1MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODM2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvdGVzdHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiZGV2aW5mby5jXCIsXG4gICAgXCJtb2R1bGUuY1wiLFxuICAgIFwibnZtX3BhcnNlLmNcIixcbiAgICBcInV0aWxzLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTk6NTI6MTIuNDYzMTY2OTYyWiIsIlNlcSI6NTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NTM3OTk4MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVW5yZWFjaGFibGUgQ29kZSBpbiBpd2x3aWZpIERyaXZlcioqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIGF0IHRoZXNlIHRlc3RzLCBhbmQgaXQncyBjbGVhciB0aGV5J3JlIG5vdCB0b3VjaGluZyB0aGUgY29kZSBJJ3ZlIGp1c3QgbW9kaWZpZWQuIFNwZWNpZmljYWxseSwgdGhlIEtVbml0IHRlc3RzIGZvciBgZGV2aW5mb2AsIGBudm1fcGFyc2VgLCBhbmQgYHV0aWxzYCBhcmVuJ3QgY292ZXJpbmcgYW55dGhpbmcgaW4gYGZ3L2FjcGkuY2AsIGBmdy91ZWZpLmNgLCBgaXdsLWRiZy10bHYuY2AsIG9yIGBpd2wtZHJ2LmNgLiBUaGF0J3MgYSBwcm9ibGVtLiBNeSBjaGFuZ2VzIGFyZSBpbiBmaXJtd2FyZSBwYXJzaW5nIGFuZCBBQ1BJL1VFRkkgdGFibGUgaGFuZGxpbmcgd2l0aGluIHRoZSBJbnRlbCBXaXJlbGVzcyBXaUZpIGRyaXZlciDigJMgYSBQQ0kgZHJpdmVyLCBoYXJkd2FyZS1zcGVjaWZpYy4gTm93LCB0aGUga2V5IGhlcmUgaXMgdGhlIGVudmlyb25tZW50OiBzeXprYWxsZXIgYW5kIHRoZXNlIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgYW5kIEdDRSAqZG9uJ3QqIGVtdWxhdGUgSW50ZWwgV2ktRmkgaGFyZHdhcmUuIFRoZSBkcml2ZXIgd29uJ3QgZXZlbiBwcm9iZSwgbWFraW5nIHRoZSBwYXJ0cyBJIGNoYW5nZWQgdW5yZWFjaGFibGUuIFRoaW5ncyBsaWtlIGBpd2xfcmVxX2Z3X2NhbGxiYWNrYCBhbmQgYGl3bF9wYXJzZV90bHZfZmlybXdhcmVgIGFyZSBkZWFkIGNvZGUgaW4gdGhpcyBjb250ZXh0LiBUaGVyZWZvcmUsIGZ1enppbmcgdGhvc2UgYXJlYXMgaXMgcG9pbnRsZXNzLiBJJ20gc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDM0NCwiT3V0cHV0VG9rZW5zIjoxNDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDgsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE5OjUyOjE4LjExNjk3MDI3NFoiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGZpcm13YXJlIHBhcnNpbmcgYW5kIEFDUEkvVUVGSSB0YWJsZSBwYXJzaW5nIGxvZ2ljIGluIHRoZSBJbnRlbCBXaXJlbGVzcyBXaUZpIChpd2x3aWZpKSBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBTaW5jZSBzeXprYWxsZXIgYW5kIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUvR0NFIGRvIG5vdCBlbXVsYXRlIEludGVsIFdpLUZpIFBDSSBoYXJkd2FyZSwgdGhlIGRyaXZlciB3aWxsIG5ldmVyIHByb2JlLiBDb25zZXF1ZW50bHksIHRoZSBmaXJtd2FyZSByZXF1ZXN0IGFuZCBwYXJzaW5nIHBhdGhzIChlLmcuLCBpd2xfcmVxX2Z3X2NhbGxiYWNrLCBpd2xfcGFyc2VfdGx2X2Zpcm13YXJlKSBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBhbmQgY2Fubm90IGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGZpcm13YXJlIHBhcnNpbmcgYW5kIEFDUEkvVUVGSSB0YWJsZSBwYXJzaW5nIGxvZ2ljIGluIHRoZSBJbnRlbCBXaXJlbGVzcyBXaUZpIChpd2x3aWZpKSBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBTaW5jZSBzeXprYWxsZXIgYW5kIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUvR0NFIGRvIG5vdCBlbXVsYXRlIEludGVsIFdpLUZpIFBDSSBoYXJkd2FyZSwgdGhlIGRyaXZlciB3aWxsIG5ldmVyIHByb2JlLiBDb25zZXF1ZW50bHksIHRoZSBmaXJtd2FyZSByZXF1ZXN0IGFuZCBwYXJzaW5nIHBhdGhzIChlLmcuLCBpd2xfcmVxX2Z3X2NhbGxiYWNrLCBpd2xfcGFyc2VfdGx2X2Zpcm13YXJlKSBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBhbmQgY2Fubm90IGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpf69f[1] Phase: Running StartedAt: 2026-07-17 19:52:30 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpf69f[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-17 19:52:30 +0000 UTC FinishedAt: 2026-07-17 19:52:36 +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,}