Name: series-workflowlthn4 Phase: Failed StartedAt: 2026-07-07 17:49:57 +0000 UTC FinishedAt: 2026-07-07 18:27:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlthn4[0] Phase: Succeeded StartedAt: 2026-07-07 17:49:57 +0000 UTC FinishedAt: 2026-07-07 18:26:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlthn4[0].run-triage Phase: Succeeded StartedAt: 2026-07-07 17:49:57 +0000 UTC FinishedAt: 2026-07-07 18:26:24 +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+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIHdvcmtxdWV1ZSB1c2VkIGluIGBpd2xfdHJhbnNfcmVzdGFydF93a2AgZnJvbSBgc3lzdGVtX3VuYm91bmRfd3FgIHRvIGBzeXN0ZW1fZGZsX3dxYC4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGVhcmx5IGlmIGB0cmFucy1cdTAwM2VvcF9tb2RlYCBpcyBub3Qgc2V0LiBgdHJhbnMtXHUwMDNlb3BfbW9kZWAgaXMgb25seSBpbml0aWFsaXplZCBhZnRlciB0aGUgcHJvcHJpZXRhcnkgSW50ZWwgV2ktRmkgZmlybXdhcmUgaXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIGFuZCBwYXJzZWQgYnkgdGhlIGRyaXZlci4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRob3V0IHRoZSBzcGVjaWZpYyBmaXJtd2FyZSBmaWxlcyBhbmQgd2l0aG91dCBhIHJlYWwgaGFyZHdhcmUgZGV2aWNlIChvciBhIGhpZ2hseSBzcGVjaWFsaXplZCBlbXVsYXRvciksIHRoZSBmaXJtd2FyZSBsb2FkaW5nIHdpbGwgZmFpbCwgdGhlIGRyaXZlciB3aWxsIHVuYmluZCwgYW5kIHRoaXMgY29kZSBwYXRoIHdpbGwgcmVtYWluIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjIyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYWZmOGU0Mjk3YjE0OGU4OGExYjljZDg5ZGY0ZTE4M2E1YWJhOWVjMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDcgMTg6MjI6MjMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmNcbmluZGV4IDczYWFlMTEyNTA0MjFmLi45MzQzYjYyMzBlMWE0MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmNcbkBAIC0yMzYsNyAmIzQzOzIzNiw3IEBAIHN0YXRpYyB2b2lkIGl3bF90cmFuc19yZXN0YXJ0X3drKHN0cnVjdCB3b3JrX3N0cnVjdCAqd2spXG4gXHRtb2RlID0gaXdsX3RyYW5zX2RldGVybWluZV9yZXN0YXJ0X21vZGUodHJhbnMpO1xuIFx0aWYgKG1vZGUgPT0gSVdMX1JFU0VUX01PREVfQkFDS09GRikge1xuIFx0XHRJV0xfRVJSKHRyYW5zLCBcJiMzNDtUb28gbWFueSBkZXZpY2UgZXJyb3JzIC0gZGVsYXkgbmV4dCByZXNldFxcblwmIzM0Oyk7XG4tXHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fdW5ib3VuZF93cSwgXHUwMDI2dHJhbnMtXHUwMDNlcmVzdGFydC53ayxcbiYjNDM7XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX3dxLCBcdTAwMjZ0cmFucy1cdTAwM2VyZXN0YXJ0LndrLFxuIFx0XHRcdFx0ICAgSVdMX1RSQU5TX1JFU0VUX0RFTEFZKTtcbiBcdFx0cmV0dXJuO1xuIFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjIyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIHdvcmtxdWV1ZSB1c2VkIGluIGBpd2xfdHJhbnNfcmVzdGFydF93a2AgZnJvbSBgc3lzdGVtX3VuYm91bmRfd3FgIHRvIGBzeXN0ZW1fZGZsX3dxYC4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGVhcmx5IGlmIGB0cmFucy1cdTAwM2VvcF9tb2RlYCBpcyBub3Qgc2V0LiBgdHJhbnMtXHUwMDNlb3BfbW9kZWAgaXMgb25seSBpbml0aWFsaXplZCBhZnRlciB0aGUgcHJvcHJpZXRhcnkgSW50ZWwgV2ktRmkgZmlybXdhcmUgaXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIGFuZCBwYXJzZWQgYnkgdGhlIGRyaXZlci4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRob3V0IHRoZSBzcGVjaWZpYyBmaXJtd2FyZSBmaWxlcyBhbmQgd2l0aG91dCBhIHJlYWwgaGFyZHdhcmUgZGV2aWNlIChvciBhIGhpZ2hseSBzcGVjaWFsaXplZCBlbXVsYXRvciksIHRoZSBmaXJtd2FyZSBsb2FkaW5nIHdpbGwgZmFpbCwgdGhlIGRyaXZlciB3aWxsIHVuYmluZCwgYW5kIHRoaXMgY29kZSBwYXRoIHdpbGwgcmVtYWluIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhZmY4ZTQyOTdiMTQ4ZTg4YTFiOWNkODlkZjRlMTgzYTVhYmE5ZWMwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgNyAxODoyMjoyMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jCmluZGV4IDczYWFlMTEyNTA0MjFmLi45MzQzYjYyMzBlMWE0MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jCkBAIC0yMzYsNyAmIzQzOzIzNiw3IEBAIHN0YXRpYyB2b2lkIGl3bF90cmFuc19yZXN0YXJ0X3drKHN0cnVjdCB3b3JrX3N0cnVjdCAqd2spCiAJbW9kZSA9IGl3bF90cmFuc19kZXRlcm1pbmVfcmVzdGFydF9tb2RlKHRyYW5zKTsKIAlpZiAobW9kZSA9PSBJV0xfUkVTRVRfTU9ERV9CQUNLT0ZGKSB7CiAJCUlXTF9FUlIodHJhbnMsICYjMzQ7VG9vIG1hbnkgZGV2aWNlIGVycm9ycyAtIGRlbGF5IG5leHQgcmVzZXRcbiYjMzQ7KTsKLQkJcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV91bmJvdW5kX3dxLCAmYW1wO3RyYW5zLSZndDtyZXN0YXJ0LndrLAomIzQzOwkJcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfd3EsICZhbXA7dHJhbnMtJmd0O3Jlc3RhcnQud2ssCiAJCQkJICAgSVdMX1RSQU5TX1JFU0VUX0RFTEFZKTsKIAkJcmV0dXJuOwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkwNAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0d2Vha2luZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuY2AuIEl0JiMzOTtzIGEgc2ltcGxlIG9uZSwgcmVhbGx5OiBqdXN0IHN3YXBwaW5nIG91dCB0aGUgd29ya3F1ZXVlIGluIGBpd2xfdHJhbnNfcmVzdGFydF93a2AuIEl0JiMzOTtzIGdvaW5nIGZyb20gYHN5c3RlbV91bmJvdW5kX3dxYCB0byBgc3lzdGVtX2RmbF93cWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtJcyB0aGlzIGV2ZW4gd29ydGggYm90aGVyaW5nIHdpdGggZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmU/JiMzNDsKCmBpd2x3aWZpYCDigJMgdGhhdCYjMzk7cyB0aGUgSW50ZWwgd2lyZWxlc3MgZHJpdmVyLCByaWdodD8gU28sIGZpcnN0IHF1ZXN0aW9uIGlzLCBjYW4gSSBldmVuICpyZWFjaCogdGhpcyB0aGluZyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJbnRlbCB3aXJlbGVzcyB1c3VhbGx5IGRlbWFuZHMgc3BlY2lmaWMgUENJIGhhcmR3YXJlLiBGdXp6aW5nIFBDSSBkcml2ZXJzIGlzIGEgd2hvbGUgb3RoZXIgYmFsbGdhbWUsIG5vcm1hbGx5IHJlcXVpcmluZyBlbXVsYXRpb24gdG8gZ2V0IGFueXdoZXJlLiBXaXRob3V0IGVtdWxhdGlvbiwgdGhleSYjMzk7cmUgdHlwaWNhbGx5IGEgZnV6emluZyBkZWFkLWVuZC4KCkhhbmcgb27igKZgaXdsd2lmaWAgKmlzKiBhIFBDSSBkcml2ZXIsIGlzbiYjMzk7dCBpdD8gT2theSwgZG9lcyBzeXprYWxsZXIgZXZlbiBkZWFsIHdpdGggdGhpcz8gTGFzdCBJIGNoZWNrZWQsIHN5emthbGxlciBjb3VsZCBmdXp6IFBDSSBkcml2ZXJzIHVzaW5nIHZQQ0kgb3Igc29tZSBvdGhlciBzaW1pbGFyIHRyaWNrZXJ5LCBidXQgaXQmIzM5O3MgdXN1YWxseSBwcmV0dHkgbGltaXRlZCBpbiBpdHMgY292ZXJhZ2UuCgpCdXQsIHdhaXTigKYgdGhlIHBhdGNoICppdHNlbGYqIGlzIGp1c3QgY2hhbmdpbmcgdGhlIHdvcmtxdWV1ZS4gVGhhdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGRpZmZlcmVuY2UgaW4gaG93IGFuZCB3aGVyZSB0aGlzIHJlc3RhcnQgd29yayBnZXRzIHNjaGVkdWxlZC4gU28sIG5vdyB0aGUgcXVlc3Rpb24gYm9pbHMgZG93biB0bzogaXMgdGhpcyBuZXcgd29ya3F1ZXVlIGFzc2lnbm1lbnQgbGlrZWx5IHRvIGV4cG9zZSBhbnkgaW50ZXJlc3RpbmcgbmV3IGZ1enppbmcgcGF0aHMgb3IsIGhlYXZlbiBmb3JiaWQsIGludHJvZHVjZSBhbnkgbmV3IGJ1Z3M/CgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIGBpd2xfdHJhbnNfcmVzdGFydF93a2AgYW5kIHNlZSB3aGF0IGl0IGRvZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3RyYW5zX3Jlc3RhcnRfd2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jPTEyNz1pd2xfdHJhbnNfZGV0ZXJtaW5lX3Jlc3RhcnRfbW9kZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTIwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6MjAyOnN0YXRpYyB2b2lkIGl3bF90cmFuc19yZXN0YXJ0X3drKHN0cnVjdCB3b3JrX3N0cnVjdCAqd2spXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTIwMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYz0yNjc9c3RydWN0IGl3bF90cmFucyAqaXdsX3RyYW5zX2FsbG9jKHVuc2lnbmVkIGludCBwcml2X3NpemUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0yODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjI4OTpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNnRyYW5zLVx1MDAzZXJlc3RhcnQud2ssIGl3bF90cmFuc19yZXN0YXJ0X3drKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMjkwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM9NjE0PXZvaWQgaXdsX3RyYW5zX3N0b3BfZGV2aWNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtNjE4LVx0LypcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6NjE5Olx0ICogU2VlIGFsc28gdGhlIGNvbW1lbnQgaW4gaXdsX3RyYW5zX3Jlc3RhcnRfd2soKS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtNjIwLVx0ICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtNjIxLVx0ICogV2hlbiB0aGUgb3Btb2RlIHN0b3BzIHRoZSBkZXZpY2Ugd2hpbGUgYSByZXNldCBpcyBwZW5kaW5nLCB0aGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6NjIyOlx0ICogd29ya2VyIChpd2xfdHJhbnNfcmVzdGFydF93aykgbWlnaHQgbm90IGhhdmUgcnVuIHlldCBvciwgbW9yZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy02MjMtXHQgKiBsaWtlbHksIHdpbGwgYmUgYmxvY2tlZCBvbiB0aGUgb3Btb2RlIGxvY2suIER1ZSB0byB0aGUgbG9ja2luZyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTM5CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2lGaSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBwb3RlbnRpYWwgaW1wbGljYXRpb25zIGZvciBmdXp6aW5nLCBzcGVjaWZpY2FsbHkgd2l0aCBzeXprYWxsZXIuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZSBgaXdsd2lmaWAgZHJpdmVyIGl0c2VsZiBpcyBldmVuIGEgdGFyZ2V0IGZvciBzeXprYWxsZXIuIEkga25vdyBzeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBjdXN0b20gaGFyZHdhcmUgZW11bGF0aW9uIGZvciBgaXdsd2lmaWAgc3BlY2lmaWNhbGx5LCBidXQgaXQmIzM5O3MgcG9zc2libGUgdGhhdCB0aGUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzIGNvdWxkIHN0aWxsIHRyaWdnZXIgc29tZSBpbml0aWFsaXphdGlvbiBvciBiYXNpYyBjb2RlIHBhdGhzIGluIHRoZSBkcml2ZXIuIEhvd2V2ZXIsIHRoaXMgcGF0Y2ggaXMgYSByZWxhdGl2ZWx5IHRhcmdldGVkIGNoYW5nZSwganVzdCBhbHRlcmluZyB0aGUgd29ya3F1ZXVlIGl0IHVzZXMuIEkgbmVlZCB0byBkaWcgZGVlcGVyIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIGJ1aWxkIGZsYWdzIHRoYXQgYXJlIGltcG9ydGFudCBpbiB0aGlzIGNvbnRleHQuIEkgc3VzcGVjdCB0aGUga2V5IGlzIGluIHRob3NlIGNvbmZpZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElXTFdJRkkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoyOmNvbmZpZyBJV0xXSUZJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIFdpcmVsZXNzIFdpRmkgTmV4dCBHZW4gQUdOIC0gV2lyZWxlc3MtTi9BZHZhbmNlZC1OL1VsdGltYXRlLU4gKGl3bHdpZmkpIFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz00Nz1pZiBJV0xXSUZJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NDk6Y29uZmlnIElXTFdJRklfS1VOSVRfVEVTVFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01MC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjU4OmNvbmZpZyBJV0xXSUZJX0xFRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01OS1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9ODQ9Y29uZmlnIElXTE1MRFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05NC0jIGRvbiYjMzk7dCBjYWxsIGl0IF9NT0RVTEUgLS0gd2lsbCBjb25mdXNlIEtjb25maWcvZml4ZGVwLy4uLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjk1OmNvbmZpZyBJV0xXSUZJX09QTU9ERV9NT0RVTEFSXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTYtXHRib29sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTEwNT1tZW51IFwmIzM0O0RlYnVnZ2luZyBPcHRpb25zXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEwNzpjb25maWcgSVdMV0lGSV9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGZ1bGwgZGVidWdnaW5nIG91dHB1dCBpbiB0aGUgaXdsd2lmaSBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEzMTpjb25maWcgSVdMV0lGSV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMyLVx0Ym9vbCBcJiMzNDtpd2x3aWZpIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTM5OmNvbmZpZyBJV0xXSUZJX0RFVklDRV9UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTQwLVx0Ym9vbCBcJiMzNDtpd2x3aWZpIGRldmljZSBhY2Nlc3MgdHJhY2luZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwODcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgdGhlIEZ1enphYmlsaXR5IG9mIGEgQ29uZmlndXJhdGlvbiBDaGFuZ2UqKgoKT2theSwgc28gdGhlIGNvbmZpZyBpbiBxdWVzdGlvbiBpcyBgSVdMV0lGSWAuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gcXVlc3Rpb24gaWYgZnV6emluZyBpdCBpcyBldmVuIHdvcnRod2hpbGUuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgd29ya3F1ZXVlIG1vZGlmaWNhdGlvbiwgd2hpY2ggaXMgZ29vZC4gQnV0IGl0JiMzOTtzIGJ1cmllZCBpbiBhIGhhcmR3YXJlIGRyaXZlci4gQW5kIGhhcmR3YXJlIGRyaXZlcnMgYXJlIG5vdG9yaW91c2x5IGRpZmZpY3VsdCB0byBlZmZlY3RpdmVseSBmdXp6IHdpdGhvdXQgYWNjZXNzIHRvIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGEgcm9idXN0IGVtdWxhdGlvbiBlbnZpcm9ubWVudCwgYW5kIHRoZXNlIGFyZSBoYXJkIHRvIHNldCB1cC4KCkhvbGQgb24uLi4gSSYjMzk7bSBwcmV0dHkgc3VyZSBzeXprYWxsZXIgY2FuIGZ1enogUENJIGRldmljZXMsIGNhbiYjMzk7dCBpdD8gVGhhdCYjMzk7cyBhIGdhbWUgY2hhbmdlciEgVGhpcyBtZWFucyB0aGF0IGhhcmR3YXJlIGFjY2VzcyBpc24mIzM5O3QgbmVjZXNzYXJpbHkgYSBoYXJkIGJsb2NrZXIuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgem9vbSBvdXQgYSBiaXQuIEJlZm9yZSBnZXR0aW5nIHRvbyBkZWVwIGludG8gdGhpcyBzcGVjaWZpYyBjb25maWcsIGxldCBtZSBqdXN0IHF1aWNrbHkgc2NhbiBmb3IgYW55IHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBwcm92aWRlIGFkZGl0aW9uYWwgY29udGV4dC4gTm8gcG9pbnQgaW4gbWFraW5nIGEgZGVjaXNpb24gYmFzZWQgb24gb25lIGRhdGEgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SVdMV0lGSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMjY1IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoyOmNvbmZpZyBJV0xXSUZJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIFdpcmVsZXNzIFdpRmkgTmV4dCBHZW4gQUdOIC0gV2lyZWxlc3MtTi9BZHZhbmNlZC1OL1VsdGltYXRlLU4gKGl3bHdpZmkpIFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy00Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo0NzppZiBJV0xXSUZJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NDk6Y29uZmlnIElXTFdJRklfS1VOSVRfVEVTVFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01MC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjU4OmNvbmZpZyBJV0xXSUZJX0xFRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01OS1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9ODQ9Y29uZmlnIElXTE1MRFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05NC0jIGRvbiYjMzk7dCBjYWxsIGl0IF9NT0RVTEUgLS0gd2lsbCBjb25mdXNlIEtjb25maWcvZml4ZGVwLy4uLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjk1OmNvbmZpZyBJV0xXSUZJX09QTU9ERV9NT0RVTEFSXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTYtXHRib29sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk5LVx0ZGVmYXVsdCB5IGlmIElXTE1MRD1tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTAwOlx0ZGVmYXVsdCB5IGlmIElXTFdJRklfS1VOSVRfVEVTVFM9bVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTA1PW1lbnUgXCYjMzQ7RGVidWdnaW5nIE9wdGlvbnNcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTA3OmNvbmZpZyBJV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA4LVx0Ym9vbCBcJiMzNDtFbmFibGUgZnVsbCBkZWJ1Z2dpbmcgb3V0cHV0IGluIHRoZSBpd2x3aWZpIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMxOmNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzItXHRib29sIFwmIzM0O2l3bHdpZmkgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzk6Y29uZmlnIElXTFdJRklfREVWSUNFX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNDAtXHRib29sIFwmIzM0O2l3bHdpZmkgZGV2aWNlIGFjY2VzcyB0cmFjaW5nXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS0yLSMgY29tbW9uXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX0lXTFdJRkkpXHQmIzQzOz0gaXdsd2lmaS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTQtaXdsd2lmaS1vYmpzXHRcdCYjNDM7PSBpd2wtaW8ub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU9NDA9aXdsd2lmaS0kKENPTkZJR19FRkkpXHQmIzQzOz0gZncvdWVmaS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjQxOml3bHdpZmktJChDT05GSUdfSVdMV0lGSV9ERUJVR0ZTKSAmIzQzOz0gZncvZGVidWdmcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZT00Mz1pd2x3aWZpLW9ianMgJiM0Mzs9ICQoaXdsd2lmaS1tKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS00NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6NDU6aXdsd2lmaS0kKENPTkZJR19JV0xXSUZJX0RFVklDRV9UUkFDSU5HKSAmIzQzOz0gaXdsLWRldnRyYWNlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUtNDYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZT01Mj1vYmotJChDT05GSUdfSVdMTUxEKVx0JiM0Mzs9IG1sZC9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUtNTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjU0Om9iai0kKENPTkZJR19JV0xXSUZJX0tVTklUX1RFU1RTKSAmIzQzOz0gdGVzdHMvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTU1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvY2ZnL2J6LmM9NzI9Y29uc3Qgc3RydWN0IGl3bF9tYWNfY2ZnIGl3bF9iel9tYWNfY2ZnID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvY2ZnL2J6LmMtODItfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvY2ZnL2J6LmM6ODM6RVhQT1JUX1NZTUJPTF9JRl9JV0xXSUZJX0tVTklUKGl3bF9iel9tYWNfY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvY2ZnL2J6LmMtODQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vTWFrZWZpbGU9OT1pd2xkdm0tb2Jqc1x0XHQmIzQzOz0gcnhvbi5vIGRldmljZXMub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vTWFrZWZpbGUtMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9NYWtlZmlsZToxMTppd2xkdm0tJChDT05GSUdfSVdMV0lGSV9MRURTKSAmIzQzOz0gbGVkLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL01ha2VmaWxlOjEyOml3bGR2bS0kKENPTkZJR19JV0xXSUZJX0RFQlVHRlMpICYjNDM7PSBkZWJ1Z2ZzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL01ha2VmaWxlLTEzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oPTIyNT1zdGF0aWMgaW5saW5lIGJvb2wgaXdsX2FkdmFuY2VkX2J0X2NvZXhpc3Qoc3RydWN0IGl3bF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oLTIzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oOjIzMTojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oLTIzMi1jb25zdCBjaGFyICppd2xfZ2V0X3R4X2ZhaWxfcmVhc29uKHUzMiBzdGF0dXMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oPTMzNT1pbnQgaXdsX2FsaXZlX3N0YXJ0KHN0cnVjdCBpd2xfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaC0zMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaDozMzc6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaC0zMzgtdm9pZCBpd2xfcHJpbnRfcnhfY29uZmlnX2NtZChzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmg9NDA3PWludCBpd2xfcmVhZF9lZXByb20oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHU4ICoqZWVwcm9tLCBzaXplX3QgKmVlcHJvbV9zaXplKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oLTQwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oOjQwOTojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmgtNDEwLXZvaWQgaXdsX2RiZ2ZzX3JlZ2lzdGVyKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwgc3RydWN0IGRlbnRyeSAqZGJnZnNfZGlyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaD00MTI9c3RhdGljIGlubGluZSB2b2lkIGl3bF9kYmdmc19yZWdpc3RlcihzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaC00MTMtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZGVudHJ5ICpkYmdmc19kaXIpIHsgfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmg6NDE0OiNlbmRpZiAvKiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaC00MTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaDo0MTY6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaC00MTctI2RlZmluZSBJV0xfREVCVUdfUVVJRVRfUkZLSUxMKG0sIGZtdCwgYXJncy4uLilcdFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmg9NDMwPWRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oLTQzNi19IHdoaWxlICgwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmg6NDM3OiNlbmRpZlx0XHRcdFx0LyogQ09ORklHX0lXTFdJRklfREVCVUcgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oLTQzOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZWJ1Z2ZzLmM9MjE1ND1zdGF0aWMgc3NpemVfdCBpd2xfZGJnZnNfZWNob190ZXN0X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RlYnVnZnMuYy0yMTcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGVidWdmcy5jOjIxNzE6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZWJ1Z2ZzLmMtMjE3Mi1zdGF0aWMgc3NpemVfdCBpd2xfZGJnZnNfbG9nX2V2ZW50X3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGVidWdmcy5jPTIzMDM9REVCVUdGU19XUklURV9GSUxFX09QUyhmd19yZXN0YXJ0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RlYnVnZnMuYzoyMzA0OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGVidWdmcy5jLTIzMDUtREVCVUdGU19SRUFEX1dSSVRFX0ZJTEVfT1BTKGxvZ19ldmVudCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGVidWdmcy5jPTIzMTM9dm9pZCBpd2xfZGJnZnNfcmVnaXN0ZXIoc3RydWN0IGl3bF9wcml2ICpwcml2LCBzdHJ1Y3QgZGVudHJ5ICpkYmdmc19kaXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGVidWdmcy5jLTIzNTUtXHRERUJVR0ZTX0FERF9GSUxFKGZ3X3Jlc3RhcnQsIGRpcl9kZWJ1ZywgMDIwMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZWJ1Z2ZzLmM6MjM1NjojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RlYnVnZnMuYy0yMzU3LVx0REVCVUdGU19BRERfRklMRShsb2dfZXZlbnQsIGRpcl9kZWJ1ZywgMDYwMCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2Lmg9NjI3PXN0cnVjdCBpd2xfcHJpdiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2LmgtNzY1LVx0XHRzdHJ1Y3Qgc3RhdGlzdGljc190eCB0eDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Rldi5oOjc2NjojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2LmgtNzY3LVx0XHRzdHJ1Y3Qgc3RhdGlzdGljc19idF9hY3Rpdml0eSBidF9hY3Rpdml0eTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZXYuaC03NzEtXHR9IHN0YXRpc3RpY3M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZXYuaDo3NzI6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Rldi5oLTc3My1cdHN0cnVjdCB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2LmgtODQ3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2Lmg6ODQ4OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZXYuaC04NDktXHQvKiBkZWJ1Z2ZzICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2LmgtODUzLVx0dm9pZCAqd293bGFuX3NyYW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZXYuaDo4NTQ6I2VuZGlmIC8qIENPTkZJR19JV0xXSUZJX0RFQlVHRlMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Rldi5oLTg1NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZXYuaC04NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZXYuaDo4Njk6I2lmZGVmIENPTkZJR19JV0xXSUZJX0xFRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Rldi5oLTg3MC1cdHN0cnVjdCBsZWRfY2xhc3NkZXYgbGVkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2xlZC5oPTExPXN0cnVjdCBpd2xfcHJpdjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9sZWQuaC0xOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2xlZC5oOjE5OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9MRURTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9sZWQuaC0yMC12b2lkIGl3bGFnbl9sZWRfZW5hYmxlKHN0cnVjdCBpd2xfcHJpdiAqcHJpdik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFjODAyMTEuYz00MTg9c3RhdGljIGludCBpd2xhZ25fbWFjX3Jlc3VtZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jLTQ0Mi1cdH07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jOjQ0MzojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFjODAyMTEuYy00NDQtXHRjb25zdCBzdHJ1Y3QgZndfaW1nICppbWc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFjODAyMTEuYy00ODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jOjQ4MTojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFjODAyMTEuYy00ODItXHRpbWcgPSBcdTAwMjZwcml2LVx1MDAzZWZ3LVx1MDAzZWltZ1tJV0xfVUNPREVfV09XTEFOXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM9NTA9TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYzo1MTpNT0RVTEVfSU1QT1JUX05TKFwmIzM0O0lXTFdJRklcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jLTUyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYz0xMTMyPXN0YXRpYyB2b2lkIGl3bF91bmluaXRfZHJ2KHN0cnVjdCBpd2xfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTEzNy1cdGl3bF9jYWxpYl9mcmVlX3Jlc3VsdHMocHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM6MTEzODojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jLTExMzktXHRrZnJlZShwcml2LVx1MDAzZXdvd2xhbl9zcmFtKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM9MTE1Nz1zdGF0aWMgdm9pZCBpd2xfb3B0aW9uX2NvbmZpZyhzdHJ1Y3QgaXdsX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTE1OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM6MTE1OTojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYzoxMTYwOlx0SVdMX0lORk8ocHJpdiwgXCYjMzQ7Q09ORklHX0lXTFdJRklfREVCVUcgZW5hYmxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTE2MS0jZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jOjExNjI6XHRJV0xfSU5GTyhwcml2LCBcJiMzNDtDT05GSUdfSVdMV0lGSV9ERUJVRyBkaXNhYmxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTE2My0jZW5kaWZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYy0xMTY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jOjExNjU6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYzoxMTY2Olx0SVdMX0lORk8ocHJpdiwgXCYjMzQ7Q09ORklHX0lXTFdJRklfREVCVUdGUyBlbmFibGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYy0xMTY3LSNlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM6MTE2ODpcdElXTF9JTkZPKHByaXYsIFwmIzM0O0NPTkZJR19JV0xXSUZJX0RFQlVHRlMgZGlzYWJsZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jLTExNjktI2VuZGlmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTE3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYzoxMTcxOiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERVZJQ0VfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jOjExNzI6XHRJV0xfSU5GTyhwcml2LCBcJiMzNDtDT05GSUdfSVdMV0lGSV9ERVZJQ0VfVFJBQ0lORyBlbmFibGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYy0xMTczLSNlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM6MTE3NDpcdElXTF9JTkZPKHByaXYsIFwmIzM0O0NPTkZJR19JV0xXSUZJX0RFVklDRV9UUkFDSU5HIGRpc2FibGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYy0xMTc1LSNlbmRpZlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYz0xODExPWludCBpd2xfZHVtcF9uaWNfZXZlbnRfbG9nKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwgYm9vbCBmdWxsX2xvZyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTg3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYzoxODc3OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jLTE4NzgtXHRpZiAoYnVmKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnguYz04OD1zdGF0aWMgdm9pZCBpd2xhZ25fcnhfcG1fc2xlZXBfbm90aWYoc3RydWN0IGl3bF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmMtOTAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnguYzo5MTojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmMtOTItXHRzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0ID0gcnhiX2FkZHIocnhiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jPTEwOT1zdGF0aWMgdm9pZCBpd2xhZ25fcnhfYmVhY29uX25vdGlmKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jLTExMy1cdHN0cnVjdCBpd2xhZ25fYmVhY29uX25vdGlmICpiZWFjb24gPSAodm9pZCAqKXBrdC1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnguYzoxMTQ6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jLTExNS1cdHUxNiBzdGF0dXMgPSBsZTE2X3RvX2NwdShiZWFjb24tXHUwMDNlYmVhY29uX25vdGlmeV9oZHIuc3RhdHVzLnN0YXR1cyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnguYz0yMzU9c3RhdGljIHZvaWQgaXdsYWduX3J4X2NhbGNfbm9pc2Uoc3RydWN0IGl3bF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmMtMjc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnguYzoyNzY6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmMtMjc3LS8qXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnguYz0zNDI9c3RhdGljIHZvaWQgaXdsYWduX3J4X3N0YXRpc3RpY3Moc3RydWN0IGl3bF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmMtMzc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnguYzozNzY6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmMtMzc3LVx0XHQvKiBoYW5kbGUgdGhpcyBleGNlcHRpb24gZGlyZWN0bHkgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jLTQxNi1cdG1lbWNweShcdTAwMjZwcml2LVx1MDAzZXN0YXRpc3RpY3MudHgsIHR4LCBzaXplb2YoKnR4KSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jOjQxNzojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnguYy00MTgtXHRpZiAoYnRfYWN0aXZpdHkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnguYz00NDU9c3RhdGljIHZvaWQgaXdsYWduX3J4X3JlcGx5X3N0YXRpc3RpY3Moc3RydWN0IGl3bF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmMtNDUxLVx0aWYgKGxlMzJfdG9fY3B1KHN0YXRzLVx1MDAzZWZsYWcpIFx1MDAyNiBVQ09ERV9TVEFUSVNUSUNTX0NMRUFSX01TSykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnguYzo0NTI6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmMtNDUzLVx0XHRtZW1zZXQoXHUwMDI2cHJpdi1cdTAwM2VhY2N1bV9zdGF0cywgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeG9uLmM9ODMyPXN0YXRpYyBpbnQgaXdsX2Z1bGxfcnhvbl9yZXF1aXJlZChzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnhvbi5jLTg4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4b24uYzo4ODc6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeG9uLmMtODg4LXZvaWQgaXdsX3ByaW50X3J4X2NvbmZpZ19jbWQoc3RydWN0IGl3bF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYz0yMzI9c3RhdGljIHZvaWQgaXdsX3J4X3JlcGx5X3NjYW4oc3RydWN0IGl3bF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy0yMzQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjIzNTojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy0yMzYtXHRzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0ID0gcnhiX2FkZHIocnhiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM9MjYyPXN0YXRpYyB2b2lkIGl3bF9yeF9zY2FuX3Jlc3VsdHNfbm90aWYoc3RydWN0IGl3bF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy0yNjQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjI2NTojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy0yNjYtXHRzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0ID0gcnhiX2FkZHIocnhiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zdGEuYz0xMjY9Ym9vbCBpd2xfaXNfaHQ0MF90eF9hbGxvd2VkKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zdGEuYy0xMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zdGEuYzoxMzM6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3N0YS5jLTEzNC1cdGlmIChwcml2LVx1MDAzZWRpc2FibGVfaHQ0MClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zdGEuYz03MzE9dm9pZCBpd2xfZGVhbGxvY19iY2FzdF9zdGF0aW9ucyhzdHJ1Y3QgaXdsX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc3RhLmMtNzQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc3RhLmM6NzUwOiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc3RhLmMtNzUxLXN0YXRpYyB2b2lkIGl3bF9kdW1wX2xxX2NtZChzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHQuYz0yMzA9c3RhdGljIHZvaWQgaXdsX2xlZ2FjeV90dF9oYW5kbGVyKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwgczMyIHRlbXAsIGJvb2wgZm9yY2UpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHQuYy0yMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90dC5jOjIzNTojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R0LmMtMjM2LVx0aWYgKCh0dC1cdTAwM2V0dF9wcmV2aW91c190ZW1wKSBcdTAwMjZcdTAwMjZcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90dC5jLTI1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R0LmM6MjU2OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHQuYy0yNTctXHR0dC1cdTAwM2V0dF9wcmV2aW91c190ZW1wID0gdGVtcDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90dC5jPTMzNT1zdGF0aWMgdm9pZCBpd2xfYWR2YW5jZV90dF9oYW5kbGVyKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwgczMyIHRlbXAsIGJvb2wgZm9yY2UpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHQuYy0zNTgtXHRcdCAgICB0ZW1wIFx1MDAzYz0gdHJhbnNhY3Rpb24tXHUwMDNldHRfaGlnaCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHQuYzozNTk6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90dC5jLTM2MC1cdFx0XHRpZiAoKHR0LVx1MDAzZXR0X3ByZXZpb3VzX3RlbXApIFx1MDAyNlx1MDAyNlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R0Lmg9ODU9c3RydWN0IGl3bF90dF9tZ210IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90dC5oLTg5LVx0Ym9vbCBjdF9raWxsX3RvZ2dsZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R0Lmg6OTA6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90dC5oLTkxLVx0czMyIHR0X3ByZXZpb3VzX3RlbXA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYz0yNjA9aW50IGl3bGFnbl90eF9za2Ioc3RydWN0IGl3bF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtMjg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYzoyODc6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jLTI4OC1cdGlmIChpZWVlODAyMTFfaXNfYXV0aChmYykpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYz04MDc9c3RhdGljIHZvaWQgaXdsYWduX2h3cmF0ZV90b190eF9jb250cm9sKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwgdTMyIHJhdGVfbl9mbGFncyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jLTgyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmM6ODI3OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy04MjgtY29uc3QgY2hhciAqaXdsX2dldF90eF9mYWlsX3JlYXNvbih1MzIgc3RhdHVzKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtODY0LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmM6ODY1OiNlbmRpZiAvKiBDT05GSUdfSVdMV0lGSV9ERUJVRyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy04NjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYz05MjA9c3RhdGljIHZvaWQgaXdsX3J4X3JlcGx5X3R4X2FnZyhzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy05ODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jOjk4MTojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtOTgyLSNkZWZpbmUgQUdHX1RYX1NUQVRFX0ZBSUwoeCkgY2FzZSBBR0dfVFhfU1RBVEVfICMjIHg6IHJldHVybiAjeFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmM9OTg0PWNvbnN0IGNoYXIgKml3bF9nZXRfYWdnX3R4X2ZhaWxfcmVhc29uKHUxNiBzdGF0dXMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy0xMDA1LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmM6MTAwNjojZW5kaWYgLyogQ09ORklHX0lXTFdJRklfREVCVUcgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtMTAwNy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RiZy5jPTI0Mjk9dm9pZCBpd2xfZndfZGJnX3N0b3BfcmVzdGFydF9yZWNvcmRpbmcoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZGJnLmMtMjQ0Ny1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZGJnLmM6MjQ0ODojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kYmcuYy0yNDQ5LVx0aWYgKCFyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RiZy5oPTE3OT12b2lkIGl3bF9md19kYmdfc3RvcF9yZXN0YXJ0X3JlY29yZGluZyhzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kYmcuaC0xODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RiZy5oOjE4MzojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kYmcuaC0xODQtc3RhdGljIGlubGluZSB2b2lkIGl3bF9md19zZXRfZGJnX3JlY19vbihzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kYmcuaD0yMzU9aW50IGl3bF9md19zZW5kX3RpbWVzdGFtcF9tYXJrZXJfY21kKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RiZy5oLTIzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZGJnLmg6MjM3OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RiZy5oLTIzOC1zdGF0aWMgaW5saW5lIHZvaWQgaXdsX2Z3X2NhbmNlbF90aW1lc3RhbXAoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZGJnLmg9MjY5PXN0YXRpYyBpbmxpbmUgdm9pZCBpd2xfZndfcmVzdW1lX3RpbWVzdGFtcChzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpIHt9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RiZy5oLTI3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZGJnLmg6MjcxOiNlbmRpZiAvKiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RiZy5oLTI3Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RlYnVnZnMuaC04LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kZWJ1Z2ZzLmg6OTojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kZWJ1Z2ZzLmgtMTAtdm9pZCBpd2xfZndydF9kYmdmc19yZWdpc3RlcihzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kZWJ1Z2ZzLmg9MTQ9c3RhdGljIGlubGluZSB2b2lkIGl3bF9md3J0X2RiZ2ZzX3JlZ2lzdGVyKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RlYnVnZnMuaC0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZGVidWdmcy5oOjE3OiNlbmRpZiAvKiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmg9MTQ4PXN0cnVjdCBpd2xfZndfcnVudGltZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmgtMTkzLVx0c3RydWN0IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcnVudGltZS5oOjE5NDojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmgtMTk1LVx0XHRzdHJ1Y3QgZGVsYXllZF93b3JrIHdrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcnVudGltZS5oLTE5OS1cdH0gdGltZXN0YW1wO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmg6MjAwOiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3J1bnRpbWUuaC0yMDEtXHRib29sIHRwY19lbmFibGVkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmg6MjAyOiNlbmRpZiAvKiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3J1bnRpbWUuaC0yMDMtXHRzdHJ1Y3QgaXdsX3Nhcl9wcm9maWxlIHNhcl9wcm9maWxlc1tCSU9TX1NBUl9NQVhfUFJPRklMRV9OVU1dO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWNvbmZpZy5oPTUxMz1zdHJ1Y3QgaXdsX2Rldl9pbmZvIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaC01MzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaDo1MzI6I2lmIElTX0VOQUJMRUQoQ09ORklHX0lXTFdJRklfS1VOSVRfVEVTVFMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaC01MzMtZXh0ZXJuIGNvbnN0IHN0cnVjdCBpd2xfZGV2X2luZm8gaXdsX2Rldl9pbmZvX3RhYmxlW107XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuYz02ND1JV0xfRVhQT1JUX1NZTUJPTChfX2l3bF9lcnIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuYy02NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmM6NjY6I2lmIGRlZmluZWQoQ09ORklHX0lXTFdJRklfREVCVUcpIHx8IGRlZmluZWQoQ09ORklHX0lXTFdJRklfREVWSUNFX1RSQUNJTkcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5jLTY3LXZvaWQgX19pd2xfZGJnKHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5jLTc3LVx0dmFmLnZhID0gXHUwMDI2YXJncztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmM6Nzg6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5jLTc5LVx0aWYgKGl3bF9oYXZlX2RlYnVnX2xldmVsKGxldmVsKSBcdTAwMjZcdTAwMjZcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oPTE2PXN0YXRpYyBpbmxpbmUgYm9vbCBpd2xfaGF2ZV9kZWJ1Z19sZXZlbCh1MzIgbGV2ZWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oLTE3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmg6MTg6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oLTE5LVx0cmV0dXJuIGl3bHdpZmlfbW9kX3BhcmFtcy5kZWJ1Z19sZXZlbCBcdTAwMjYgbGV2ZWw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaD0zNz12b2lkIF9faXdsX2NyaXQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpmbXQsIC4uLikgX19wcmludGYoMiwgMyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaC02OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmg6NzA6I2lmIGRlZmluZWQoQ09ORklHX0lXTFdJRklfREVCVUcpIHx8IGRlZmluZWQoQ09ORklHX0lXTFdJRklfREVWSUNFX1RSQUNJTkcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oLTcxLXZvaWQgX19pd2xfZGJnKHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oPTgzPWRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmgtOTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oOjEwMDojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmgtMTAxLSNkZWZpbmUgaXdsX3ByaW50X2hleF9kdW1wKG0sIGxldmVsLCBwLCBsZW4pXHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaD0xMDI9ZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHRcdFx0XFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oLTEwOC0jZGVmaW5lIGl3bF9wcmludF9oZXhfZHVtcChtLCBsZXZlbCwgcCwgbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaDoxMDk6I2VuZGlmXHRcdFx0XHQvKiBDT05GSUdfSVdMV0lGSV9ERUJVRyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaC0xMTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaC0xMjctICpcdC9zeXMvbW9kdWxlL2l3bHdpZmkvcGFyYW1ldGVycy9kZWJ1Z1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaDoxMjg6ICogd2hlbiBDT05GSUdfSVdMV0lGSV9ERUJVRz15LlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaC0xMjktICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmgtMTMwLSAqXHQvc3lzL2tlcm5lbC9kZWJ1Zy9waHkwL2l3bHdpZmkvZGVidWcvZGVidWdfbGV2ZWxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmg6MTMxOiAqIHdoZW4gQ09ORklHX0lXTFdJRklfREVCVUdGUz15LlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaC0xMzItICpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1kYXRhLmgtOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWRhdGEuaDo5OiNpZiAhZGVmaW5lZChfX0lXTFdJRklfREVWSUNFX1RSQUNFX0RBVEEpIHx8IGRlZmluZWQoVFJBQ0VfSEVBREVSX01VTFRJX1JFQUQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1kYXRhLmg6MTA6I2RlZmluZSBfX0lXTFdJRklfREVWSUNFX1RSQUNFX0RBVEFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWRhdGEuaC0xMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1kYXRhLmg9Mzc9VFJBQ0VfRVZFTlQoaXdsd2lmaV9kZXZfcnhfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1kYXRhLmgtNTItKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWRhdGEuaDo1MzojZW5kaWYgLyogX19JV0xXSUZJX0RFVklDRV9UUkFDRV9EQVRBICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1kYXRhLmgtNTQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtaW8uaC03LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtaW8uaDo4OiNpZiAhZGVmaW5lZChfX0lXTFdJRklfREVWSUNFX1RSQUNFX0lPKSB8fCBkZWZpbmVkKFRSQUNFX0hFQURFUl9NVUxUSV9SRUFEKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtaW8uaDo5OiNkZWZpbmUgX19JV0xXSUZJX0RFVklDRV9UUkFDRV9JT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtaW8uaC0xMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1pby5oPTE3Mj1UUkFDRV9FVkVOVChpd2x3aWZpX2Rldl9pY3RfcmVhZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1pby5oLTE4Ny0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtaW8uaDoxODg6I2VuZGlmIC8qIF9fSVdMV0lGSV9ERVZJQ0VfVFJBQ0VfSU8gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWlvLmgtMTg5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWl3bHdpZmkuaC05LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtaXdsd2lmaS5oOjEwOiNpZiAhZGVmaW5lZChfX0lXTFdJRklfREVWSUNFX1RSQUNFX0lXTFdJRkkpIHx8IGRlZmluZWQoVFJBQ0VfSEVBREVSX01VTFRJX1JFQUQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1pd2x3aWZpLmg6MTE6I2RlZmluZSBfX0lXTFdJRklfREVWSUNFX1RSQUNFX0lXTFdJRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWl3bHdpZmkuaC0xMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1pd2x3aWZpLmg9MTEyPVRSQUNFX0VWRU5UKGl3bHdpZmlfZGV2X3Vjb2RlX2V2ZW50LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWl3bHdpZmkuaC0xMzAtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWl3bHdpZmkuaDoxMzE6I2VuZGlmIC8qIF9fSVdMV0lGSV9ERVZJQ0VfVFJBQ0VfSVdMV0lGSSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtaXdsd2lmaS5oLTEzMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1tc2cuaC02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtbXNnLmg6NzojaWYgIWRlZmluZWQoX19JV0xXSUZJX0RFVklDRV9UUkFDRV9NU0cpIHx8IGRlZmluZWQoVFJBQ0VfSEVBREVSX01VTFRJX1JFQUQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1tc2cuaDo4OiNkZWZpbmUgX19JV0xXSUZJX0RFVklDRV9UUkFDRV9NU0dcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLW1zZy5oLTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtbXNnLmg9NDk9VFJBQ0VfRVZFTlQoaXdsd2lmaV9kYmcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtbXNnLmgtNjQtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLW1zZy5oOjY1OiNlbmRpZiAvKiBfX0lXTFdJRklfREVWSUNFX1RSQUNFX01TRyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtbXNnLmgtNjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtdWNvZGUuaC02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtdWNvZGUuaDo3OiNpZiAhZGVmaW5lZChfX0lXTFdJRklfREVWSUNFX1RSQUNFX1VDT0RFKSB8fCBkZWZpbmVkKFRSQUNFX0hFQURFUl9NVUxUSV9SRUFEKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtdWNvZGUuaDo4OiNkZWZpbmUgX19JV0xXSUZJX0RFVklDRV9UUkFDRV9VQ09ERVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtdWNvZGUuaC05LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLXVjb2RlLmg9MzU9VFJBQ0VfRVZFTlQoaXdsd2lmaV9kZXZfdWNvZGVfd3JhcF9ldmVudCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS11Y29kZS5oLTU0LSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS11Y29kZS5oOjU1OiNlbmRpZiAvKiBfX0lXTFdJRklfREVWSUNFX1RSQUNFX1VDT0RFICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS11Y29kZS5oLTU2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmgtOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmg6OTojaWZuZGVmIF9fSVdMV0lGSV9ERVZJQ0VfVFJBQ0VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmg6MTA6I2RlZmluZSBfX0lXTFdJRklfREVWSUNFX1RSQUNFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS5oLTExLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3NrYnVmZi5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UuaD00OT1zdGF0aWMgaW5saW5lIHNpemVfdCBpd2xfcnhfdHJhY2VfbGVuKGNvbnN0IHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmgtNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS5oOjc5OiNpZiAhZGVmaW5lZChDT05GSUdfSVdMV0lGSV9ERVZJQ0VfVFJBQ0lORykgfHwgZGVmaW5lZChfX0NIRUNLRVJfXylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmgtODAtI3VuZGVmIFRSQUNFX0VWRU5UXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UuaD04Nz1zdGF0aWMgaW5saW5lIHZvaWQgdHJhY2VfICMjIG5hbWUocHJvdG8pIHt9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UuaC05OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmg6OTk6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFVklDRV9UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS5oLTEwMC1ERUNMQVJFX1RSQUNFUE9JTlQoaXdsd2lmaV9kZXZfcngpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmg9MTA2PXN0YXRpYyBpbmxpbmUgdm9pZCBtYXliZV90cmFjZV9pd2x3aWZpX2Rldl9yeChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS5oLTEwOC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS5oOjEwOTojaWZkZWYgQ09ORklHX0lXTFdJRklfREVWSUNFX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmgtMTEwLVx0aWYgKHRyYWNlcG9pbnRfZW5hYmxlZChpd2x3aWZpX2Rldl9yeCkgfHxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS5oLTExNC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS5oOjExNTojZW5kaWYgLyogX19JV0xXSUZJX0RFVklDRV9UUkFDRSAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTM1PU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjM3OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0zOC1zdGF0aWMgc3RydWN0IGRlbnRyeSAqaXdsX2RiZ2ZzX3Jvb3Q7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9NTU9c3RydWN0IGl3bF9kcnYge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6Njg6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTY5LVx0c3RydWN0IGRlbnRyeSAqZGJnZnNfZHJ2O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTE1Njg9X2l3bF9vcF9tb2RlX3N0YXJ0KHN0cnVjdCBpd2xfZHJ2ICpkcnYsIHN0cnVjdCBpd2x3aWZpX29wbW9kZV90YWJsZSAqb3ApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTU3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjE1ODA6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE1ODEtXHRcdGRydi1cdTAwM2VkYmdmc19vcF9tb2RlID0gZGVidWdmc19jcmVhdGVfZGlyKG9wLVx1MDAzZW5hbWUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTU5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjE1OTU6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE1OTYtXHRcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShkcnYtXHUwMDNlZGJnZnNfb3BfbW9kZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9MTYwOT1zdGF0aWMgdm9pZCBfaXdsX29wX21vZGVfc3RvcChzdHJ1Y3QgaXdsX2RydiAqZHJ2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE2MTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoxNjE5OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xNjIwLVx0XHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoZHJ2LVx1MDAzZWRiZ2ZzX29wX21vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTE5NDg9c3RydWN0IGl3bF9kcnYgKml3bF9kcnZfc3RhcnQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTk2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjE5NjU6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE5NjYtXHQvKiBDcmVhdGUgdGhlIGRldmljZSBkZWJ1Z2ZzIGVudHJpZXMuICovXG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcwMDgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbnRlbCBXaXJlbGVzcyBEcml2ZXIgUmVzdGFydCBNZWNoYW5pc20qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2UgdGhlIGtleSBmdW5jdGlvbiB3ZSYjMzk7cmUgY29uY2VybmVkIHdpdGggaGVyZSBpcyBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgLiBSaWdodCwgYmVjYXVzZSBzeXprYWxsZXImIzM5O3MgZnV6emluZyBQQ0kgZGV2aWNlcywgaXQmIzM5O3MgcHJvYmFibHkgbWVzc2luZyB3aXRoIFBDSSBjb25maWcgc3BhY2UgYW5kIG1lbW9yeS1tYXBwZWQgSS9PLCB3aGljaCBpcyB3aGVyZSBhIGxvdCBvZiB0aGVzZSBkcml2ZXIgYnVncyB0ZW5kIHRvIHBvcCB1cC4gVGhlIHJlYWwgcXVlc3Rpb24gaXM6IGNhbiB3ZSBhY3R1YWxseSAqaGl0KiBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgIHRocm91Z2ggdGhpcyBmdXp6aW5nIHByb2Nlc3M/CgpMZXQgbWUganVzdCBjaGVjayB3aGVyZSBpdCYjMzk7cyBiZWluZyBjYWxsZWQgZnJvbS4gQWgsIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYSBkZWxheWVkIHdvcmssIHNwZWNpZmljYWxseSBgdHJhbnMtJmd0O3Jlc3RhcnQud2tgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCBwcm9iYWJseSBoYW5kbGVzIHNvbWUgc29ydCBvZiByZWNvdmVyeSBvciByZXN0YXJ0IGxvZ2ljLiBTbywgaXQgKmlzKiBjYWxsZWQgZnJvbSBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgIGl0c2VsZiwgbGlrZWx5IGZvciBiYWNrb2ZmIHNjZW5hcmlvcy4gSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyIGFuZCBzZWUgaWYgdGhlcmUgYXJlIG90aGVyIHBsYWNlcyB3aGVyZSBgdHJhbnMtJmd0O3Jlc3RhcnQud2tgIGlzIGJlaW5nIHF1ZXVlZC4gVGhpcyB3aWxsIGhlbHAgbWUgdG8gZGV0ZXJtaW5lIGFsbCB0aGUgdHJpZ2dlciBwb2ludHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RyYW5zLVx1MDAzZXJlc3RhcnQud2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jPTIwMj1zdGF0aWMgdm9pZCBpd2xfdHJhbnNfcmVzdGFydF93ayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMjM4LVx0XHRJV0xfRVJSKHRyYW5zLCBcJiMzNDtUb28gbWFueSBkZXZpY2UgZXJyb3JzIC0gZGVsYXkgbmV4dCByZXNldFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjIzOTpcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfd3EsIFx1MDAyNnRyYW5zLVx1MDAzZXJlc3RhcnQud2ssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTI0MC1cdFx0XHRcdCAgIElXTF9UUkFOU19SRVNFVF9ERUxBWSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYz0yNjc9c3RydWN0IGl3bF90cmFucyAqaXdsX3RyYW5zX2FsbG9jKHVuc2lnbmVkIGludCBwcml2X3NpemUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0yODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjI4OTpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNnRyYW5zLVx1MDAzZXJlc3RhcnQud2ssIGl3bF90cmFuc19yZXN0YXJ0X3drKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMjkwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM9Mjk0PXZvaWQgaXdsX3RyYW5zX2ZyZWUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTI5NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjI5NjpcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZ0cmFucy1cdTAwM2VyZXN0YXJ0LndrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMjk3LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jPTQxMj12b2lkIGl3bF90cmFuc19vcF9tb2RlX2xlYXZlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtNDIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzo0MjE6XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2dHJhbnMtXHUwMDNlcmVzdGFydC53ayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTQyMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oPTEwMDI9c3RhdGljIGlubGluZSB2b2lkIGl3bF90cmFuc19zY2hlZHVsZV9yZXNldChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTEwMjEtXHRcdFx0XHRcdCAgICAgICBcdTAwMjZ0cmFucy1cdTAwM2VzdGF0dXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaDoxMDIyOlx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfd3EsIFx1MDAyNnRyYW5zLVx1MDAzZXJlc3RhcnQud2ssIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0xMDIzLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgxMjMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgaXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0YCBDaGFuZ2UqKgoKT2theSwgc28gdGhpcyBgaXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0YCBmdW5jdGlvbiBpcyBiZWluZyBxdWV1ZWQsIHRoYXQgbXVjaCBpcyBjbGVhci4gQnV0IGlzIHRoaXMgYSByZWFsLCBmdW5jdGlvbmFsIGNoYW5nZT8gWWVzLCBpdCYjMzk7cyBtb2RpZnlpbmcgdGhlIHdvcmtxdWV1ZSwgdGhhdOKAmXMgc2lnbmlmaWNhbnQuIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciBpdCYjMzk7cyB3b3J0aCB0aGUgZWZmb3J0IG9mIGZ1enppbmcuIEhvbmVzdGx5LCB0aGUgY2hhbmdlIGl0c2VsZiBzZWVtcyBxdWl0ZSBzbWFsbCBhbmQgdmVyeSBzcGVjaWZpYyB0byB0aGUgc2NoZWR1bGluZyBvZiBhIGhhcmR3YXJlIHJlc2V0IHdpdGhpbiB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyLgoKQ2FuIEkgZXZlbiByZWFjaCB0aGlzIGxvZ2ljIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudD8gTm93LCBzeXprYWxsZXIgKmRvZXMqIGZ1enogUENJIGRldmljZXMsIHdoaWNoIGlzIHByb21pc2luZy4gSSBrbm93IHRoZXJlJiMzOTtzIHRoYXQgYHN5el9wY2lfZGV2aWNlYCBjYWxsIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBidXQgaXQmIzM5O3Mgb2Z0ZW4gbm90IHZlcnkgZWZmZWN0aXZlIG9uIGNvbXBsZXggZHJpdmVycyBsaWtlIGBpd2x3aWZpYCB1bmxlc3MgYSB2ZXJ5IHNwZWNpZmljIGVtdWxhdG9yIGlzIHVzZWQsIHdoaWNoIEkgZG9uJiMzOTt0IHJlY2FsbCBzZWVpbmcuIFN0aWxsLCBzaW5jZSBpdCAqaXMqIGEgUENJIGRyaXZlciwgSSBoYXZlIHRvIGFzc3VtZSBpdCYjMzk7cyB0aGVvcmV0aWNhbGx5IHJlYWNoYWJsZS4KCldhaXQgYSBzZWNvbmQsIHRoZXJlJiMzOTtzIGEgaHVnZSBjYXZlYXQgaGVyZS4gYGl3bHdpZmlgIGlzIGEgZmlybXdhcmUtZGVwZW5kZW50IGRyaXZlciwgaXNu4oCZdCBpdD8gV2l0aG91dCB0aGUgZmlybXdhcmUgbG9hZGVkIHByb3Blcmx5LCB0aGUgZGV2aWNlIG1pZ2h0IGp1c3QgZmFpbCBlYXJseSBpbiB0aGUgcHJvYmUgc2VxdWVuY2UgYW5kIG5ldmVyIGV2ZW4gZ2V0IHRvIHRoaXMgcmVzZXQgbG9naWMuIFNvLCB0aGUgbW9yZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXMsIGNhbiBJIHJlYWNoIGBpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXRgICp3aXRob3V0KiB0aGUgZmlybXdhcmU/IEkgbmVlZCB0byBjaGVjayB0aGF0IGJlZm9yZSBJIHNwZW5kIG11Y2ggdGltZSBvbiB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oPTEwMDA9aXdsX3RyYW5zX3JlbGVhc2VfbmljX2FjY2VzcyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTEwMDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oOjEwMDI6c3RhdGljIGlubGluZSB2b2lkIGl3bF90cmFuc19zY2hlZHVsZV9yZXNldChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtMTAwMy1cdFx0XHRcdFx0ICAgIGVudW0gaXdsX2Z3X2Vycm9yX3R5cGUgdHlwZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oPTEwMjU9c3RhdGljIGlubGluZSB2b2lkIGl3bF90cmFuc19md19lcnJvcihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTEwMzQtXHRcdGl3bF9vcF9tb2RlX25pY19lcnJvcih0cmFucy1cdTAwM2VvcF9tb2RlLCB0eXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg6MTAzNTpcdFx0aXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0KHRyYW5zLCB0eXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtMTAzNi1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3J4LmM9MTgzNz1zdGF0aWMgdm9pZCBpd2xfdHJhbnNfcGNpZV9oYW5kbGVfcmVzZXRfaW50ZXJydXB0KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvcnguYy0xODgyLVx0XHRcdHRyYW5zLVx1MDAzZXN0YXRlID0gSVdMX1RSQU5TX05PX0ZXO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9yeC5jOjE4ODM6XHRcdFx0aXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0KHRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9yeC5jLTE4ODQtXHRcdFx0XHRcdFx0IElXTF9FUlJfVFlQRV9UT1BfUkVTRVRfQllfQlQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvcnguYz0yMjYzPWlycXJldHVybl90IGl3bF9wY2llX2lycV9tc2l4X2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvcnguYy0yMzcyLVx0XHRcdFx0XHQgICAgICBJV0xfRVJSX1RZUEVfVE9QX0ZBVEFMX0VSUk9SKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvcnguYzoyMzczOlx0XHRcdGl3bF90cmFuc19zY2hlZHVsZV9yZXNldCh0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvcnguYy0yMzc0LVx0XHRcdFx0XHRcdCBJV0xfRVJSX1RZUEVfVE9QX0ZBVEFMX0VSUk9SKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLWdlbjIuYz01MDQ9aW50IGl3bF90cmFuc19wY2llX2dlbjJfc3RhcnRfZncoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy1nZW4yLmMtNjIzLVx0XHRcdFx0XHQgICAgICBJV0xfRVJSX1RZUEVfVE9QX1JFU0VUX0ZBSUxFRCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLWdlbjIuYzo2MjQ6XHRcdFx0aXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0KHRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy1nZW4yLmMtNjI1LVx0XHRcdFx0XHRcdCBJV0xfRVJSX1RZUEVfVE9QX1JFU0VUX0ZBSUxFRCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90eC1nZW4yLmM9MTE5Nz1pbnQgaXdsX3BjaWVfZ2VuMl9lbnF1ZXVlX2hjbWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90eC1nZW4yLmMtMTI5Ni1cdFx0XHRcdCAgICAgIElXTF9FUlJfVFlQRV9DTURfUVVFVUVfRlVMTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3R4LWdlbjIuYzoxMjk3Olx0XHRpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXQodHJhbnMsIElXTF9FUlJfVFlQRV9DTURfUVVFVUVfRlVMTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3R4LWdlbjIuYy0xMjk4LVx0XHRpZHggPSAtRU5PU1BDO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHguYz0xMzQzPWludCBpd2xfcGNpZV9lbnF1ZXVlX2hjbWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90eC5jLTE0NTEtXHRcdFx0XHQgICAgICBJV0xfRVJSX1RZUEVfQ01EX1FVRVVFX0ZVTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90eC5jOjE0NTI6XHRcdGl3bF90cmFuc19zY2hlZHVsZV9yZXNldCh0cmFucywgSVdMX0VSUl9UWVBFX0NNRF9RVUVVRV9GVUxMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHguYy0xNDUzLVx0XHRpZHggPSAtRU5PU1BDO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTk2MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDQyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXRgIFBhdGNoKioKCk9rYXksIHNvIGBpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXRgIGlzIGJlaW5nIGNhbGxlZCBkdWUgdG8gZXJyb3JzIHBvdGVudGlhbGx5IHRyaWdnZXJlZCBieSBQQ0kgZnV6emluZyBvciBpbnRlcnJ1cHQgZnV6emluZyDigJMgdGhhdCYjMzk7cyB0aGUgY29udGV4dC4gVGhlIHBhdGNoIGl0c2VsZiBpcyBpbmNyZWRpYmx5IHNpbXBsZTogaXQmIzM5O3MgYSBvbmUtbGluZSBjaGFuZ2UsIHN3YXBwaW5nIGBzeXN0ZW1fdW5ib3VuZF93cWAgZm9yIGBzeXN0ZW1fZGZsX3dxYC4gIElzIHRoaXMgZXZlbiB3b3J0aCBib3RoZXJpbmcgd2l0aCBpbiB0ZXJtcyBvZiBmdXp6aW5nPyBJdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55ICpuZXcqIGxvZ2ljLCBqdXN0IGNoYW5nZXMgd2hlcmUgYSBkZWxheWVkIHdvcmsgaXRlbSBnZXRzIHNjaGVkdWxlZC4gIFN5emthbGxlciBwcm9iYWJseSB3b24mIzM5O3QgZmluZCBidWdzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gKnRoaXMqIGNoYW5nZSB1bmxlc3MgaXQgZXhwb3NlcyBvciBmaXhlcyBhIHJhY2UgY29uZGl0aW9uLCBhbmQgdGhhdCYjMzk7cyBub3Qgb2J2aW91cyBmcm9tIGEgZ2xhbmNlLgoKQnV0IGxldCYjMzk7cyBsb29rIGF0IHRoZSBpbnN0cnVjdGlvbnMsIHdoaWNoIHNheSBub3QgdG8gZnV6eiB0aGlzIGlmIGl0JiMzOTtzIGRvY3VtZW50YXRpb24sIGNvbW1lbnRzLCBkZWNvcmF0aW9uLCBudW1lcmljIGNoYW5nZXMgd2l0aG91dCBmbG93IGFsdGVyYXRpb24sIG9yIHVucmVhY2hhYmxlIGNvZGUuICBJcyB0aGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2U/IFllcywgY2hhbmdpbmcgdGhlIHdvcmtxdWV1ZSAqaXMqIGZ1bmN0aW9uYWw7IGRpZmZlcmVudCB3b3JrcXVldWVzIGhhdmUgZGlmZmVyZW50IHByb3BlcnRpZXMuICBJcyBpdCBpbXBvc3NpYmxlIHRvIHJlYWNoPyBgaXdsd2lmaWAgaXMgYSBQQ0kgZHJpdmVyLCBzbyBQQ0kgZnV6emluZyBtYWtlcyBpdCByZWFjaGFibGUuIEFuZCBpdCYjMzk7cyByZWFsIGhhcmR3YXJlLCBub3QgZW11bGF0ZWQuCgpOb3csIGNhbiBpdCBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VPyBTeXprYWxsZXIgaGFzIGBzeXpfcGNpX2RldmljZWAsIHdoaWNoIGlzIHByb21pc2luZy4gVGhlIHByb2JsZW0gaXMgYGl3bHdpZmlgICpyZXF1aXJlcyogZmlybXdhcmUuIElmIHRoZSBmaXJtd2FyZSBpc24mIzM5O3QgcHJlc2VudCwgdGhlIGRyaXZlciBiYWlscyBvdXQgZWFybHkgaW4gYGl3bF9wY2lfcHJvYmVgLiBTbyBJIG5lZWQgdG8gZGlnIGludG8gYGl3bF9wY2lfcHJvYmVgIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9wY2lfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC0zMi0gKiBUaGlzIGNvbXBvbmVudCBpbXBsZW1lbnRzIHRoZSBzeXN0ZW0gZmxvd3Mgc3VjaCBhcyBidXMgZW51bWVyYXRpb24sIGJ1c1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6MzM6ICogcmVtb3ZhbC4gQnVzIGRlcGVuZGVudCBwYXJ0cyBvZiBzeXN0ZW0gZmxvd3MgKHN1Y2ggYXMgaXdsX3BjaV9wcm9iZSkgYXJlIGluXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC0zNC0gKiBidXMgc3BlY2lmaWMgZmlsZXMgKHRyYW5zcG9ydCBmaWxlcykuIFRoaXMgaXMgdGhlIGNvZGUgdGhhdCBpcyBjb21tb24gYW1vbmdcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM9MTE0Nz1FWFBPUlRfU1lNQk9MX0lGX0lXTFdJRklfS1VOSVQoaXdsX3BjaV9maW5kX2Rldl9pbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jOjExNDk6c3RhdGljIGludCBpd2xfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTExNTAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYz0xMzM4PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpd2xfcGNpX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTM0MC1cdC5pZF90YWJsZSA9IGl3bF9od19jYXJkX2lkcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYzoxMzQxOlx0LnByb2JlID0gaXdsX3BjaV9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMzQyLVx0LnJlbW92ZSA9IGl3bF9wY2lfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTIyMwoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIEZpcm13YXJlIExvYWRpbmcgTWVjaGFuaXNtKioKCk9rYXksIHNvIEkgd2FudCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIEludGVsIHdpcmVsZXNzIGRyaXZlciBoYW5kbGVzIGZpcm13YXJlIGxvYWRpbmcuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgYGl3bF9wY2lfcHJvYmVgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LCByaWdodD8gSXQmIzM5O3Mgd2hlcmUgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbiBoYXBwZW5zLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGlzIGhhbmRsZWQgd2l0aGluIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHksIG9yIGlmIGl0JiMzOTtzIGRlbGVnYXRlZCB0byBhIGhlbHBlciBmdW5jdGlvbiBjYWxsZWQgZHVyaW5nIHRoZSBwcm9iZS4gSSYjMzk7bSBob3BpbmcgSSBjYW4gbG9jYXRlIHRoZSBmaXJtd2FyZSBsb2FkaW5nIHNlcXVlbmNlIHF1aWNrbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTE0OSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTE0OTpcdHN0YXRpYyBpbnQgaXdsX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbjExNTA6XHR7XG4xMTUxOlx0XHRjb25zdCBzdHJ1Y3QgaXdsX21hY19jZmcgKm1hY19jZmcgPSAodm9pZCAqKWVudC1cdTAwM2Vkcml2ZXJfZGF0YTtcbjExNTI6XHRcdHU4IF9faW9tZW0gKmh3X2Jhc2U7XG4xMTUzOlx0XHR1MzIgYmFyMCwgaHdfcmV2O1xuMTE1NDpcdFx0aW50IHJldDtcbjExNTU6XHRcbjExNTY6XHRcdC8qIHJlYXNzaWduIG91ciBCQVIgMCBpZiBpbnZhbGlkIGR1ZSB0byBwb3NzaWJsZSBydW50aW1lIFBNIHJhY2VzICovXG4xMTU3Olx0XHRwY2lfcmVhZF9jb25maWdfZHdvcmQocGRldiwgUENJX0JBU0VfQUREUkVTU18wLCBcdTAwMjZiYXIwKTtcbjExNTg6XHRcdGlmIChiYXIwID09IFBDSV9CQVNFX0FERFJFU1NfTUVNX1RZUEVfNjQpIHtcbjExNTk6XHRcdFx0cmV0ID0gcGNpX2Fzc2lnbl9yZXNvdXJjZShwZGV2LCAwKTtcbjExNjA6XHRcdFx0aWYgKHJldClcbjExNjE6XHRcdFx0XHRyZXR1cm4gcmV0O1xuMTE2MjpcdFx0fVxuMTE2MzpcdFxuMTE2NDpcdFx0cmV0ID0gcGNpbV9lbmFibGVfZGV2aWNlKHBkZXYpO1xuMTE2NTpcdFx0aWYgKHJldClcbjExNjY6XHRcdFx0cmV0dXJuIHJldDtcbjExNjc6XHRcbjExNjg6XHRcdHBjaV9zZXRfbWFzdGVyKHBkZXYpO1xuMTE2OTpcdFxuMTE3MDpcdFx0cmV0ID0gcGNpbV9yZXF1ZXN0X2FsbF9yZWdpb25zKHBkZXYsIERSVl9OQU1FKTtcbjExNzE6XHRcdGlmIChyZXQpIHtcbjExNzI6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7UmVxdWVzdGluZyBhbGwgUENJIEJBUnMgZmFpbGVkLlxcblwmIzM0Oyk7XG4xMTczOlx0XHRcdHJldHVybiByZXQ7XG4xMTc0Olx0XHR9XG4xMTc1Olx0XG4xMTc2Olx0XHRod19iYXNlID0gcGNpbV9pb21hcChwZGV2LCAwLCAwKTtcbjExNzc6XHRcdGlmICghaHdfYmFzZSkge1xuMTE3ODpcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gbWFwIEJBUiAwLlxcblwmIzM0Oyk7XG4xMTc5Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuMTE4MDpcdFx0fVxuMTE4MTpcdFxuMTE4MjpcdFx0LyogV2UgY2FuJiMzOTt0IHVzZSBpd2xfcmVhZDMyIGJlY2F1c2UgdHJhbnMgd2FzbiYjMzk7dCBhbGxvY2F0ZWQgKi9cbjExODM6XHRcdGh3X3JldiA9IHJlYWRsKGh3X2Jhc2UgJiM0MzsgQ1NSX0hXX1JFVik7XG4xMTg0Olx0XHRpZiAoaHdfcmV2ID09IDB4ZmZmZmZmZmYpIHtcbjExODU6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7SFdfUkVWPTB4RkZGRkZGRkYsIFBDSSBpc3N1ZXM/XFxuXCYjMzQ7KTtcbjExODY6XHRcdFx0cmV0dXJuIC1FSU87XG4xMTg3Olx0XHR9XG4xMTg4Olx0XG4xMTg5Olx0XHRyZXR1cm4gaXdsX3BjaV9nZW4xXzJfcHJvYmUocGRldiwgZW50LCBtYWNfY2ZnLCBod19iYXNlLCBod19yZXYpO1xuMTE5MDpcdH1cbjExOTE6XHRcbjExOTI6XHRzdGF0aWMgdm9pZCBpd2xfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbjExOTM6XHR7XG4xMTk0Olx0XHRzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcbjExOTU6XHRcbjExOTY6XHRcdGlmICghdHJhbnMpXG4xMTk3Olx0XHRcdHJldHVybjtcbjExOTg6XHRcbjExOTk6XHRcdGl3bF9wY2llX2dlbjFfMl9yZW1vdmUodHJhbnMpO1xuMTIwMDpcdH1cbjEyMDE6XHRcbjEyMDI6XHQjaWZkZWYgQ09ORklHX1BNX1NMRUVQXG4xMjAzOlx0XG4xMjA0Olx0c3RhdGljIGludCBpd2xfcGNpX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2aWNlKVxuMTIwNTpcdHtcbjEyMDY6XHRcdC8qIEJlZm9yZSB5b3UgcHV0IGNvZGUgaGVyZSwgdGhpbmsgYWJvdXQgV29XTEFOLiBZb3UgY2Fubm90IGNoZWNrIGhlcmVcbjEyMDc6XHRcdCAqIHdoZXRoZXIgV29XTEFOIGlzIGVuYWJsZWQgb3Igbm90LCBhbmQgeW91ciBjb2RlIHdpbGwgcnVuIGV2ZW4gaWZcbjEyMDg6XHRcdCAqIFdvV0xBTiBpcyBlbmFibGVkIC0gZG9uJiMzOTt0IGtpbGwgdGhlIE5JQywgc29tZW9uZSBtYXkgbmVlZCBpdCBpbiBTeC5cbjEyMDk6XHRcdCAqL1xuMTIxMDpcdFxuMTIxMTpcdFx0cmV0dXJuIDA7XG4xMjEyOlx0fVxuMTIxMzpcdFxuMTIxNDpcdHN0YXRpYyBpbnQgX2l3bF9wY2lfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldmljZSwgYm9vbCByZXN0b3JlKVxuMTIxNTpcdHtcbjEyMTY6XHRcdHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gdG9fcGNpX2RldihkZXZpY2UpO1xuMTIxNzpcdFx0c3RydWN0IGl3bF90cmFucyAqdHJhbnMgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XG4xMjE4Olx0XHRzdHJ1Y3QgaXdsX3RyYW5zX3BjaWUgKnRyYW5zX3BjaWUgPSBJV0xfVFJBTlNfR0VUX1BDSUVfVFJBTlModHJhbnMpO1xuMTIxOTpcdFx0Ym9vbCBkZXZpY2Vfd2FzX3Bvd2VyZWRfb2ZmID0gZmFsc2U7XG4xMjIwOlx0XG4xMjIxOlx0XHQvKiBCZWZvcmUgeW91IHB1dCBjb2RlIGhlcmUsIHRoaW5rIGFib3V0IFdvV0xBTi4gWW91IGNhbm5vdCBjaGVjayBoZXJlXG4xMjIyOlx0XHQgKiB3aGV0aGVyIFdvV0xBTiBpcyBlbmFibGVkIG9yIG5vdCwgYW5kIHlvdXIgY29kZSB3aWxsIHJ1biBldmVuIGlmXG4xMjIzOlx0XHQgKiBXb1dMQU4gaXMgZW5hYmxlZCAtIHRoZSBOSUMgbWF5IGJlIGFsaXZlLlxuMTIyNDpcdFx0ICovXG4xMjI1Olx0XG4xMjI2Olx0XHQvKlxuMTIyNzpcdFx0ICogV2UgZGlzYWJsZSB0aGUgUkVUUllfVElNRU9VVCByZWdpc3RlciAoMHg0MSkgdG8ga2VlcFxuMTIyODpcdFx0ICogUENJIFR4IHJldHJpZXMgZnJvbSBpbnRlcmZlcmluZyB3aXRoIEMzIENQVSBzdGF0ZS5cbjEyMjk6XHRcdCAqL1xuMTIzMDpcdFx0cGNpX3dyaXRlX2NvbmZpZ19ieXRlKHBkZXYsIFBDSV9DRkdfUkVUUllfVElNRU9VVCwgMHgwMCk7XG4xMjMxOlx0XG4xMjMyOlx0XHRpZiAoIXRyYW5zLVx1MDAzZW9wX21vZGUpXG4xMjMzOlx0XHRcdHJldHVybiAwO1xuMTIzNDpcdFxuMTIzNTpcdFx0aWYgKHRlc3RfYml0KFNUQVRVU19ERVZJQ0VfRU5BQkxFRCwgXHUwMDI2dHJhbnMtXHUwMDNlc3RhdHVzKSkge1xuMTIzNjpcdFx0XHQvKlxuMTIzNzpcdFx0XHQgKiBTY3JhdGNoIHZhbHVlIHdhcyBhbHRlcmVkLCB0aGlzIG1lYW5zIHRoZSBkZXZpY2Ugd2FzIHBvd2VyZWRcbjEyMzg6XHRcdFx0ICogb2ZmLCB3ZSBuZWVkIHRvIHJlc2V0IGl0IGNvbXBsZXRlbHkuXG4xMjM5Olx0XHRcdCAqIE5vdGU6IE1BQyAoYml0cyAwOjcpIHdpbGwgYmUgY2xlYXJlZCB1cG9uIHN1c3BlbmQgZXZlbiB3aXRoXG4xMjQwOlx0XHRcdCAqIHdvd2xhbiwgYnV0IG5vdCBiaXRzIFsxNTo4XS4gU28gaWYgd2UgaGF2ZSBiaXRzIHNldCBpbiBsb3dlclxuMTI0MTpcdFx0XHQgKiB3b3JkLCBhc3N1bWUgdGhlIGRldmljZSBpcyBhbGl2ZS5cbjEyNDI6XHRcdFx0ICogQWx0ZXJuYXRpdmVseSwgaWYgdGhlIHNjcmF0Y2ggdmFsdWUgaXMgMHhGRkZGRkZGRiwgdGhlbiB3ZVxuMTI0MzpcdFx0XHQgKiBubyBsb25nZXIgaGF2ZSBhY2Nlc3MgdG8gdGhlIGRldmljZSBhbmQgY29uc2lkZXIgaXQgcG93ZXJlZFxuMTI0NDpcdFx0XHQgKiBvZmYuXG4xMjQ1Olx0XHRcdCAqIEZvciBvbGRlciBkZXZpY2VzLCBqdXN0IHRyeSBzaWxlbnRseSB0byBncmFiIHRoZSBOSUMuXG4xMjQ2Olx0XHRcdCAqL1xuMTI0NzpcdFx0XHRpZiAodHJhbnMtXHUwMDNlbWFjX2NmZy1cdTAwM2VkZXZpY2VfZmFtaWx5IFx1MDAzZT0gSVdMX0RFVklDRV9GQU1JTFlfQlopIHtcbjEyNDg6XHRcdFx0XHR1MzIgc2NyYXRjaCA9IGl3bF9yZWFkMzIodHJhbnMsIENTUl9GVU5DX1NDUkFUQ0gpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzA2MgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEaXZpbmcgaW50byB0aGUgYGl3bF9wY2lfZ2VuMV8yX3Byb2JlYCBGdW5jdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMgYGl3bF9wY2lfZ2VuMV8yX3Byb2JlYCBmdW5jdGlvbi4gTGV0JiMzOTtzIHNlZS4uLiBhcyBhIHNlYXNvbmVkIGtlcm5lbCBkZXZlbG9wZXIsIG15IGZpcnN0IHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhlIGJyb2FkZXIgSW50ZWwgd2lyZWxlc3MgZHJpdmVyIGFyY2hpdGVjdHVyZS4gSSBrbm93IHRoaXMgbmFtaW5nIGNvbnZlbnRpb24sIHNvIEkgZXhwZWN0IGl0JiMzOTtzIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggUENJLWJhc2VkIGRldmljZXMgYW5kIHByb2JhYmx5IGEgZ2VuZXJhdGlvbiBvciB0d28gb2YgdGhlIGVhcmx5IGl3bCBoYXJkd2FyZS4gVGhpcyBwcm9iZSBmdW5jdGlvbiBpcyBjcml0aWNhbC4gSXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50LCB0aGUgZ2F0ZWtlZXBlciBmb3IgYnJpbmdpbmcgYSBzdXBwb3J0ZWQgZGV2aWNlIG9ubGluZS4gSXQmIzM5O3Mgd2hlcmUgdGhlIGluaXRpYWwgaGFyZHdhcmUgaWRlbnRpZmljYXRpb24sIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBiYXNpYyBzZXR1cCBvY2N1ci4KCkkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgc3BlY2lmaWMgY2hpcHMgaXQmIzM5O3MgcmVzcG9uc2libGUgZm9yLiBXaGF0IHNwZWNpZmljIGhhcmR3YXJlIHJldmlzaW9ucz8gQXJlIHRoZXJlIGFueSBrbm93biBlcnJhdGEgb3IgcXVpcmt5IGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBwYXJ0aWN1bGFyIGdlbmVyYXRpb24gb2YgaGFyZHdhcmUgdGhhdCBJIHNob3VsZCBrZWVwIGluIG1pbmQ/IEFyZSB0aGVyZSBwbGF0Zm9ybS1zcGVjaWZpYyBkZXBlbmRlbmNpZXMgSSYjMzk7bGwgbmVlZCB0byB3YXRjaCBvdXQgZm9yPyBJdCBsaWtlbHkgbmVlZHMgdG8gbWF0Y2ggdGhlIFBDSSBJRCwgd2hpY2ggSSYjMzk7bGwgd2FudCB0byB2ZXJpZnkuIFRoYXQmIzM5O3MgYWx3YXlzIG15IGZpcnN0IGNoZWNrLiBJIGFsc28gd2FudCB0byBzZWUgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIG90aGVyIGxheWVycyBvZiB0aGUgZHJpdmVyIOKAkyB0aGUgY29yZSBpd2wgY29kZSwgdGhlIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyLCBhbmQgdGhlIG5ldCBkZXZpY2UgcmVnaXN0cmF0aW9uLiBEb2VzIGl0IGFsbG9jYXRlIGEgZGV2aWNlIGNvbnRleHQ/IFdoZXJlIGRvZXMgaXQgaGFuZGxlIGludGVycnVwdCBzZXR1cD8gV2hhdCBpcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UgdG8gcHJvYmUgdGhlIGRldmljZSwgZnJvbSBzdGFydCB0byBmaW5pc2g/IFdoZXJlIGRvZXMgdGhlIGZ1bmN0aW9uIGxlYXZlIG9mZj8KCkkgYWxzbyBuZWVkIHRvIHNlZSBpZiBpdCYjMzk7cyBnb3QgcHJvcGVyIGVycm9yIGhhbmRsaW5nLiBXaGF0IGFib3V0IHBvd2VyIG1hbmFnZW1lbnQgY29uc2lkZXJhdGlvbnM/IEkgZXhwZWN0IHNvbWUga2luZCBvZiBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZSByZWFkL3dyaXRlLCBwb3RlbnRpYWxseSBETUEgc2V0dXAsIGFuZCBpbnRlcnJ1cHQgcm91dGluZy4gSSYjMzk7bGwgd2FudCB0byBjaGVjayBob3cgaXQgaGFuZGxlcyB0aGVzZSBkZXRhaWxzIGFuZCBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4gSXQgbmVlZHMgdG8gYmUgcm9idXN0LCBncmFjZWZ1bGx5IGhhbmRsaW5nIGFueSBmYWlsdXJlcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYW5kIGVuc3VyaW5nIGEgY2xlYW4gcm9sbGJhY2sgaWYgdGhlIGRldmljZSBjYW4mIzM5O3QgYmUgYnJvdWdodCB1cC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLiBJJiMzOTttIHJlYWR5IHRvIGRpdmUgaW4gYW5kIGdldCBhIGdyaXAgb2YgdGhlIG5pdHR5IGdyaXR0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3BjaV9nZW4xXzJfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM9MTE0OT1zdGF0aWMgaW50IGl3bF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTExODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM6MTE4OTpcdHJldHVybiBpd2xfcGNpX2dlbjFfMl9wcm9iZShwZGV2LCBlbnQsIG1hY19jZmcsIGh3X2Jhc2UsIGh3X3Jldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTE5MC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9pbnRlcm5hbC5oPTEyMDk9dm9pZCBpd2xfcGNpZV9hbGxvY19md19tb25pdG9yKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCB1OCBtYXhfcG93ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9pbnRlcm5hbC5oOjEyMTA6aW50IGl3bF9wY2lfZ2VuMV8yX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9pbnRlcm5hbC5oLTEyMTEtXHRcdFx0IGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jPTQyMDA9c3RhdGljIHZvaWQgaXdsX3BjaWVfY2hlY2tfbWVfc3RhdHVzKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy00MjMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jOjQyMzI6aW50IGl3bF9wY2lfZ2VuMV8yX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTQyMzMtXHRcdFx0IGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MDY2CgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkRpZ2dpbmcgaW50byBpd2xcX3BjaVxfZ2VuMVxfMlxfcHJvYmUqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgdGFraW5nIGEgY2xvc2UgbG9vayBhdCB0aGUgYGl3bF9wY2lfZ2VuMV8yX3Byb2JlYCBmdW5jdGlvbi4gVGhlIGZpcnN0IHRoaW5nIEkgd2FudCB0byB1bmRlcnN0YW5kIGlzIGhvdyBpdCBoYW5kbGVzIGZpcm13YXJlIGxvYWRpbmcuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSB3aXJlbGVzcyBkcml2ZXIgYnJpbmctdXAgcHJvY2VzcywgYW5kIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgdGhpcyBwcm9iZSBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgaW5pdGlhdGluZyBpdCwgYW5kIGlmIHNvLCBob3cuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgdGhyb3VnaCB0aGUgY29kZSwgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgY2FsbHMgcmVsYXRlZCB0byBmaXJtd2FyZSBsb2FkaW5nIEFQSXMgb3Igc3RydWN0dXJlcy4gVGhpcyBpbml0aWFsIGludmVzdGlnYXRpb24gc2hvdWxkIHByb3ZpZGUgYSBzb2xpZCBiYXNlbGluZSB1bmRlcnN0YW5kaW5nIG9mIGl0cyBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MjMyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs0MjMyOlx0aW50IGl3bF9wY2lfZ2VuMV8yX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuNDIzMzpcdFx0XHRcdCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50LFxuNDIzNDpcdFx0XHRcdCBjb25zdCBzdHJ1Y3QgaXdsX21hY19jZmcgKm1hY19jZmcsXG40MjM1Olx0XHRcdFx0IHU4IF9faW9tZW0gKmh3X2Jhc2UsIHUzMiBod19yZXYpXG40MjM2Olx0e1xuNDIzNzpcdFx0Y29uc3Qgc3RydWN0IGl3bF9kZXZfaW5mbyAqZGV2X2luZm87XG40MjM4Olx0XHRzdHJ1Y3QgaXdsX3RyYW5zX2luZm8gaW5mbyA9IHtcbjQyMzk6XHRcdFx0Lmh3X2lkID0gKHBkZXYtXHUwMDNlZGV2aWNlIFx1MDAzY1x1MDAzYyAxNikgJiM0MzsgcGRldi1cdTAwM2VzdWJzeXN0ZW1fZGV2aWNlLFxuNDI0MDpcdFx0XHQuaHdfcmV2ID0gaHdfcmV2LFxuNDI0MTpcdFx0fTtcbjQyNDI6XHRcdHN0cnVjdCBpd2xfdHJhbnMgKml3bF90cmFucztcbjQyNDM6XHRcdHN0cnVjdCBpd2xfdHJhbnNfcGNpZSAqdHJhbnNfcGNpZTtcbjQyNDQ6XHRcdGludCByZXQ7XG40MjQ1Olx0XG40MjQ2Olx0XHRpd2xfdHJhbnMgPSBpd2xfdHJhbnNfcGNpZV9hbGxvYyhwZGV2LCBtYWNfY2ZnLCBcdTAwMjZpbmZvLCBod19iYXNlKTtcbjQyNDc6XHRcdGlmIChJU19FUlIoaXdsX3RyYW5zKSlcbjQyNDg6XHRcdFx0cmV0dXJuIFBUUl9FUlIoaXdsX3RyYW5zKTtcbjQyNDk6XHRcbjQyNTA6XHRcdHRyYW5zX3BjaWUgPSBJV0xfVFJBTlNfR0VUX1BDSUVfVFJBTlMoaXdsX3RyYW5zKTtcbjQyNTE6XHRcbjQyNTI6XHRcdGl3bF90cmFuc19wY2llX2NoZWNrX3Byb2R1Y3RfcmVzZXRfc3RhdHVzKHBkZXYpO1xuNDI1MzpcdFx0aXdsX3RyYW5zX3BjaWVfY2hlY2tfcHJvZHVjdF9yZXNldF9tb2RlKHBkZXYpO1xuNDI1NDpcdFxuNDI1NTpcdFx0Lyogc2V0IHRoZSB0aGluZ3Mgd2Uga25vdyBzbyBmYXIgZm9yIHRoZSBncmFiIE5JQyBhY2Nlc3MgKi9cbjQyNTY6XHRcdGl3bF90cmFuc19zZXRfaW5mbyhpd2xfdHJhbnMsIFx1MDAyNmluZm8pO1xuNDI1NzpcdFxuNDI1ODpcdFx0LypcbjQyNTk6XHRcdCAqIExldCYjMzk7cyB0cnkgdG8gZ3JhYiBOSUMgYWNjZXNzIGVhcmx5IGhlcmUuIFNvbWV0aW1lcywgTklDcyBtYXlcbjQyNjA6XHRcdCAqIGZhaWwgdG8gaW5pdGlhbGl6ZSwgYW5kIGlmIHRoYXQgaGFwcGVucyBpdCYjMzk7cyBiZXR0ZXIgaWYgd2Ugc2VlXG40MjYxOlx0XHQgKiBpc3N1ZXMgZWFybHkgb24gKGFuZCBjYW4gcmVwcm9iZSwgcGVyIHRoZSBsb2dpYyBpbnNpZGUpLCB0aGFuXG40MjYyOlx0XHQgKiBmaXJzdCB0cnlpbmcgdG8gbG9hZCB0aGUgZmlybXdhcmUgZXRjLiBhbmQgcG90ZW50aWFsbHkgb25seVxuNDI2MzpcdFx0ICogZGV0ZWN0aW5nIGFueSBwcm9ibGVtcyB3aGVuIHRoZSBmaXJzdCBpbnRlcmZhY2UgaXMgYnJvdWdodCB1cC5cbjQyNjQ6XHRcdCAqL1xuNDI2NTpcdFx0cmV0ID0gaXdsX3BjaWVfcHJlcGFyZV9jYXJkX2h3KGl3bF90cmFucyk7XG40MjY2Olx0XHRpZiAoIXJldCkge1xuNDI2NzpcdFx0XHRyZXQgPSBpd2xfdHJhbnNfYWN0aXZhdGVfbmljKGl3bF90cmFucyk7XG40MjY4Olx0XHRcdGlmIChyZXQpXG40MjY5Olx0XHRcdFx0Z290byBvdXRfZnJlZV90cmFucztcbjQyNzA6XHRcdFx0aWYgKGl3bF90cmFuc19ncmFiX25pY19hY2Nlc3MoaXdsX3RyYW5zKSkge1xuNDI3MTpcdFx0XHRcdGdldF9jcmZfaWQoaXdsX3RyYW5zLCBcdTAwMjZpbmZvKTtcbjQyNzI6XHRcdFx0XHQvKiBhbGwgZ29vZCAqL1xuNDI3MzpcdFx0XHRcdGl3bF90cmFuc19yZWxlYXNlX25pY19hY2Nlc3MoaXdsX3RyYW5zKTtcbjQyNzQ6XHRcdFx0fSBlbHNlIHtcbjQyNzU6XHRcdFx0XHRyZXQgPSAtRUlPO1xuNDI3NjpcdFx0XHRcdGdvdG8gb3V0X2ZyZWVfdHJhbnM7XG40Mjc3Olx0XHRcdH1cbjQyNzg6XHRcdH1cbjQyNzk6XHRcbjQyODA6XHRcdGluZm8uaHdfcmZfaWQgPSBpd2xfcmVhZDMyKGl3bF90cmFucywgQ1NSX0hXX1JGX0lEKTtcbjQyODE6XHRcbjQyODI6XHRcdC8qXG40MjgzOlx0XHQgKiBUaGUgUkZfSUQgaXMgc2V0IHRvIHplcm8gaW4gYmxhbmsgT1RQIHNvIHJlYWQgdmVyc2lvbiB0b1xuNDI4NDpcdFx0ICogZXh0cmFjdCB0aGUgUkZfSUQuXG40Mjg1Olx0XHQgKiBUaGlzIGlzIHJlbGV2YW50IG9ubHkgZm9yIGZhbWlseSA5MDAwIGFuZCB1cC5cbjQyODY6XHRcdCAqL1xuNDI4NzpcdFx0aWYgKGl3bF90cmFucy1cdTAwM2VtYWNfY2ZnLVx1MDAzZWRldmljZV9mYW1pbHkgXHUwMDNlPSBJV0xfREVWSUNFX0ZBTUlMWV85MDAwIFx1MDAyNlx1MDAyNlxuNDI4ODpcdFx0ICAgICFDU1JfSFdfUkZJRF9UWVBFKGluZm8uaHdfcmZfaWQpIFx1MDAyNlx1MDAyNiBtYXBfY3JmX2lkKGl3bF90cmFucywgXHUwMDI2aW5mbykpIHtcbjQyODk6XHRcdFx0cmV0ID0gLUVJTlZBTDtcbjQyOTA6XHRcdFx0Z290byBvdXRfZnJlZV90cmFucztcbjQyOTE6XHRcdH1cbjQyOTI6XHRcbjQyOTM6XHRcdElXTF9JTkZPKGl3bF90cmFucywgXCYjMzQ7UENJIGRldiAlMDR4LyUwNHgsIHJldj0weCV4LCByZmlkPTB4JXhcXG5cJiMzNDssXG40Mjk0Olx0XHRcdCBwZGV2LVx1MDAzZWRldmljZSwgcGRldi1cdTAwM2VzdWJzeXN0ZW1fZGV2aWNlLFxuNDI5NTpcdFx0XHQgaW5mby5od19yZXYsIGluZm8uaHdfcmZfaWQpO1xuNDI5NjpcdFxuNDI5NzpcdCNpZiAhSVNfRU5BQkxFRChDT05GSUdfSVdMTUxEKVxuNDI5ODpcdFx0aWYgKGl3bF9kcnZfaXNfd2lmaTdfc3VwcG9ydGVkKGl3bF90cmFucykpIHtcbjQyOTk6XHRcdFx0SVdMX0VSUihpd2xfdHJhbnMsXG40MzAwOlx0XHRcdFx0XCYjMzQ7SVdMTUxEIG5lZWRzIHRvIGJlIGNvbXBpbGVkIHRvIHN1cHBvcnQgdGhpcyBkZXZpY2VcXG5cJiMzNDspO1xuNDMwMTpcdFx0XHRyZXQgPSAtRU9QTk9UU1VQUDtcbjQzMDI6XHRcdFx0Z290byBvdXRfZnJlZV90cmFucztcbjQzMDM6XHRcdH1cbjQzMDQ6XHQjZW5kaWZcbjQzMDU6XHRcbjQzMDY6XHRcdGRldl9pbmZvID0gaXdsX3BjaV9maW5kX2Rldl9pbmZvKHBkZXYtXHUwMDNlZGV2aWNlLCBwZGV2LVx1MDAzZXN1YnN5c3RlbV9kZXZpY2UsXG40MzA3Olx0XHRcdFx0XHRcdCBDU1JfSFdfUkZJRF9UWVBFKGluZm8uaHdfcmZfaWQpLFxuNDMwODpcdFx0XHRcdFx0XHQgQ1NSX0hXX1JGSURfSVNfQ0RCKGluZm8uaHdfcmZfaWQpLFxuNDMwOTpcdFx0XHRcdFx0XHQgSVdMX1NVQkRFVklDRV9SRl9JRChwZGV2LVx1MDAzZXN1YnN5c3RlbV9kZXZpY2UpLFxuNDMxMDpcdFx0XHRcdFx0XHQgSVdMX1NVQkRFVklDRV9CV19MSU0ocGRldi1cdTAwM2VzdWJzeXN0ZW1fZGV2aWNlKSxcbjQzMTE6XHRcdFx0XHRcdFx0ICFpd2xfdHJhbnMtXHUwMDNlbWFjX2NmZy1cdTAwM2VpbnRlZ3JhdGVkKTtcbjQzMTI6XHRcdGlmIChkZXZfaW5mbykge1xuNDMxMzpcdFx0XHRpd2xfdHJhbnMtXHUwMDNlY2ZnID0gZGV2X2luZm8tXHUwMDNlY2ZnO1xuNDMxNDpcdFx0XHRpbmZvLm5hbWUgPSBkZXZfaW5mby1cdTAwM2VuYW1lO1xuNDMxNTpcdFx0fVxuNDMxNjpcdFxuNDMxNzpcdCNpZiBJU19FTkFCTEVEKENPTkZJR19JV0xNVk0pXG40MzE4Olx0XG40MzE5Olx0XHQvKlxuNDMyMDpcdFx0ICogc3BlY2lhbC1jYXNlIDcyNjVELCBpdCBoYXMgdGhlIHNhbWUgUENJIElEcy5cbjQzMjE6XHRcdCAqXG40MzIyOlx0XHQgKiBOb3RlIHRoYXQgYmVjYXVzZSB3ZSBhbHJlYWR5IHBhc3MgdGhlIGNmZyB0byB0aGUgdHJhbnNwb3J0IGFib3ZlLFxuNDMyMzpcdFx0ICogYWxsIHRoZSBwYXJhbWV0ZXJzIHRoYXQgdGhlIHRyYW5zcG9ydCB1c2VzIG11c3QsIHVudGlsIHRoYXQgaXNcbjQzMjQ6XHRcdCAqIGNoYW5nZWQsIGJlIGlkZW50aWNhbCB0byB0aGUgb25lcyBpbiB0aGUgNzI2NUQgY29uZmlndXJhdGlvbi5cbjQzMjU6XHRcdCAqL1xuNDMyNjpcdFx0aWYgKGl3bF90cmFucy1cdTAwM2VjZmcgPT0gXHUwMDI2aXdsNzI2NV9jZmcgXHUwMDI2XHUwMDI2XG40MzI3Olx0XHQgICAgKGluZm8uaHdfcmV2IFx1MDAyNiBDU1JfSFdfUkVWX1RZUEVfTVNLKSA9PSBDU1JfSFdfUkVWX1RZUEVfNzI2NUQpXG40MzI4Olx0XHRcdGl3bF90cmFucy1cdTAwM2VjZmcgPSBcdTAwMjZpd2w3MjY1ZF9jZmc7XG40MzI5Olx0I2VuZGlmXG40MzMwOlx0XHRpZiAoIWl3bF90cmFucy1cdTAwM2VjZmcpIHtcbjQzMzE6XHRcdFx0cHJfZXJyKFwmIzM0O05vIGNvbmZpZyBmb3VuZCBmb3IgUENJIGRldiAlMDR4LyUwNHgsIHJldj0weCV4LCByZmlkPTB4JXhcXG5cJiMzNDssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MTMzCgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5JiMzOTtyZSBteSBvd246CgoqKkFuYWx5emluZyB0aGUgUmVtYWluZGVyIG9mIGBpd2xfcGNpX2dlbjFfMl9wcm9iZWAqKgoKQWxyaWdodCwgc28gd2UmIzM5O3JlIGNvbnRpbnVpbmcgb3VyIGRpc3NlY3Rpb24gb2YgYGl3bF9wY2lfZ2VuMV8yX3Byb2JlYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBoYXBwZW5pbmcuIEkgZXhwZWN0IHRvIGJlIGxvb2tpbmcgZm9yIGtleSBzdGVwcywgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzLCBhbmQgZXJyb3IgaGFuZGxpbmcuIEkmIzM5O2xsIGJlIHNlYXJjaGluZyBmb3IgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBQQ0kgYnVzLCBob3cgaXQgaW5pdGlhbGl6ZXMgdGhlIGRldmljZSwgbGlrZWx5IHByb2JpbmcgZm9yIHNwZWNpZmljIGhhcmR3YXJlLCBhbmQgc2V0dGluZyB1cCBhbnkgbmVjZXNzYXJ5IGludGVycnVwdCBoYW5kbGVycy4gSSYjMzk7bGwgYmUgcGFydGljdWxhcmx5IGZvY3VzZWQgb24gaG93IGl0IHZlcmlmaWVzIHRoYXQgdGhlIGRldmljZSBpcywgaW4gZmFjdCwgYSBjb21wYXRpYmxlIEludGVsIFdpcmVsZXNzIGNhcmQsIHZlcnNpb24gMSBvciAyLiBBbHNvLCBJJiMzOTttIHdhdGNoaW5nIGZvciBhbnkgcG93ZXItbWFuYWdlbWVudCByZWxhdGVkIGNvZGUg4oCTIHRoYXQmIzM5O3MgY3J1Y2lhbCBmb3IgYSBtb2Rlcm4gd2lyZWxlc3MgZHJpdmVyLiBBbmQgZmluYWxseSwgb2YgY291cnNlLCBJJiMzOTttIGFudGljaXBhdGluZyB0aGUgcG90ZW50aWFsIHBpdGZhbGxzIOKAkyBhbnkgb2J2aW91cyBlcnJvciBjb25kaXRpb25zIG9yIHJlc291cmNlIGFsbG9jYXRpb24gaXNzdWVzIHRoYXQgbWlnaHQgYXJpc2UuIFRoaXMgaXMgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZDsgZ2V0dGluZyBhIHdpcmVsZXNzIGNhcmQgdG8gd29yayBjb3JyZWN0bHkgY2FuIGJlIGNvbXBsZXguIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQzMzIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzQzMzI6XHRcdFx0ICAgICAgIHBkZXYtXHUwMDNlZGV2aWNlLCBwZGV2LVx1MDAzZXN1YnN5c3RlbV9kZXZpY2UsXG40MzMzOlx0XHRcdCAgICAgICBpbmZvLmh3X3JldiwgaW5mby5od19yZl9pZCk7XG40MzM0Olx0XHRcdHJldCA9IC1FSU5WQUw7XG40MzM1Olx0XHRcdGdvdG8gb3V0X2ZyZWVfdHJhbnM7XG40MzM2Olx0XHR9XG40MzM3Olx0XG40MzM4Olx0XHRJV0xfSU5GTyhpd2xfdHJhbnMsIFwmIzM0O0RldGVjdGVkICVzXFxuXCYjMzQ7LCBpbmZvLm5hbWUpO1xuNDMzOTpcdFxuNDM0MDpcdFx0aWYgKGl3bF90cmFucy1cdTAwM2VtYWNfY2ZnLVx1MDAzZW1xX3J4X3N1cHBvcnRlZCkge1xuNDM0MTpcdFx0XHRpZiAoV0FSTl9PTighaXdsX3RyYW5zLVx1MDAzZWNmZy1cdTAwM2VudW1fcmJkcykpIHtcbjQzNDI6XHRcdFx0XHRyZXQgPSAtRUlOVkFMO1xuNDM0MzpcdFx0XHRcdGdvdG8gb3V0X2ZyZWVfdHJhbnM7XG40MzQ0Olx0XHRcdH1cbjQzNDU6XHRcdFx0dHJhbnNfcGNpZS1cdTAwM2VudW1fcnhfYnVmcyA9IGl3bF90cmFuc19nZXRfbnVtX3JiZHMoaXdsX3RyYW5zKTtcbjQzNDY6XHRcdH0gZWxzZSB7XG40MzQ3Olx0XHRcdHRyYW5zX3BjaWUtXHUwMDNlbnVtX3J4X2J1ZnMgPSBSWF9RVUVVRV9TSVpFO1xuNDM0ODpcdFx0fVxuNDM0OTpcdFxuNDM1MDpcdFx0aWYgKCFpd2xfdHJhbnMtXHUwMDNlbWFjX2NmZy1cdTAwM2VpbnRlZ3JhdGVkKSB7XG40MzUxOlx0XHRcdHUxNiBsaW5rX3N0YXR1cztcbjQzNTI6XHRcbjQzNTM6XHRcdFx0cGNpZV9jYXBhYmlsaXR5X3JlYWRfd29yZChwZGV2LCBQQ0lfRVhQX0xOS1NUQSwgXHUwMDI2bGlua19zdGF0dXMpO1xuNDM1NDpcdFxuNDM1NTpcdFx0XHRpbmZvLnBjaWVfbGlua19zcGVlZCA9XG40MzU2Olx0XHRcdFx0dTE2X2dldF9iaXRzKGxpbmtfc3RhdHVzLCBQQ0lfRVhQX0xOS1NUQV9DTFMpO1xuNDM1NzpcdFx0fVxuNDM1ODpcdFxuNDM1OTpcdFx0aXdsX3RyYW5zX3NldF9pbmZvKGl3bF90cmFucywgXHUwMDI2aW5mbyk7XG40MzYwOlx0XG40MzYxOlx0XHRwY2lfc2V0X2RydmRhdGEocGRldiwgaXdsX3RyYW5zKTtcbjQzNjI6XHRcbjQzNjM6XHRcdGl3bF9wY2llX2NoZWNrX21lX3N0YXR1cyhpd2xfdHJhbnMpO1xuNDM2NDpcdFxuNDM2NTpcdFx0LyogdHJ5IHRvIGdldCBvd25lcnNoaXAgc28gdGhhdCB3ZSYjMzk7bGwga25vdyBpZiB3ZSBkb24mIzM5O3Qgb3duIGl0ICovXG40MzY2Olx0XHRpd2xfcGNpZV9wcmVwYXJlX2NhcmRfaHcoaXdsX3RyYW5zKTtcbjQzNjc6XHRcbjQzNjg6XHRcdGl3bF90cmFucy1cdTAwM2VkcnYgPSBpd2xfZHJ2X3N0YXJ0KGl3bF90cmFucyk7XG40MzY5Olx0XG40MzcwOlx0XHRpZiAoSVNfRVJSKGl3bF90cmFucy1cdTAwM2VkcnYpKSB7XG40MzcxOlx0XHRcdHJldCA9IFBUUl9FUlIoaXdsX3RyYW5zLVx1MDAzZWRydik7XG40MzcyOlx0XHRcdGdvdG8gb3V0X2ZyZWVfdHJhbnM7XG40MzczOlx0XHR9XG40Mzc0Olx0XG40Mzc1Olx0XHQvKiByZWdpc3RlciB0cmFuc3BvcnQgbGF5ZXIgZGVidWdmcyBoZXJlICovXG40Mzc2Olx0XHRpd2xfdHJhbnNfcGNpZV9kYmdmc19yZWdpc3Rlcihpd2xfdHJhbnMpO1xuNDM3NzpcdFxuNDM3ODpcdFx0cmV0dXJuIDA7XG40Mzc5Olx0XG40MzgwOlx0b3V0X2ZyZWVfdHJhbnM6XG40MzgxOlx0XHRpd2xfdHJhbnNfcGNpZV9mcmVlKGl3bF90cmFucyk7XG40MzgyOlx0XHRyZXR1cm4gcmV0O1xuNDM4MzpcdH1cbjQzODQ6XHRcbjQzODU6XHR2b2lkIGl3bF9wY2llX2dlbjFfMl9yZW1vdmUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXG40Mzg2Olx0e1xuNDM4NzpcdFx0c3RydWN0IGl3bF90cmFuc19wY2llICp0cmFuc19wY2llID0gSVdMX1RSQU5TX0dFVF9QQ0lFX1RSQU5TKHRyYW5zKTtcbjQzODg6XHRcbjQzODk6XHRcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZ0cmFuc19wY2llLVx1MDAzZW1lX3JlY2hlY2tfd2spO1xuNDM5MDpcdFxuNDM5MTpcdFx0aXdsX2Rydl9zdG9wKHRyYW5zLVx1MDAzZWRydik7XG40MzkyOlx0XG40MzkzOlx0XHRpd2xfdHJhbnNfcGNpZV9mcmVlKHRyYW5zKTtcbjQzOTQ6XHR9XG40Mzk1Olx0XG40Mzk2Olx0aW50IGl3bF9wY2llX2dlbjFfMl9hY3RpdmF0ZV9uaWMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXG40Mzk3Olx0e1xuNDM5ODpcdFx0Y29uc3Qgc3RydWN0IGl3bF9tYWNfY2ZnICptYWNfY2ZnID0gdHJhbnMtXHUwMDNlbWFjX2NmZztcbjQzOTk6XHRcdHUzMiBwb2xsX3JlYWR5O1xuNDQwMDpcdFx0aW50IGVycjtcbjQ0MDE6XHRcbjQ0MDI6XHRcdGlmIChtYWNfY2ZnLVx1MDAzZWJpc3Jfd29ya2Fyb3VuZCkge1xuNDQwMzpcdFx0XHQvKiBlbnN1cmUgdGhlIFRPUCBGU00gaXNuJiMzOTt0IHN0aWxsIGluIHByZXZpb3VzIHJlc2V0ICovXG40NDA0Olx0XHRcdG1kZWxheSgyKTtcbjQ0MDU6XHRcdH1cbjQ0MDY6XHRcbjQ0MDc6XHRcdC8qXG40NDA4Olx0XHQgKiBTZXQgXCYjMzQ7aW5pdGlhbGl6YXRpb24gY29tcGxldGVcJiMzNDsgYml0IHRvIG1vdmUgYWRhcHRlciBmcm9tXG40NDA5Olx0XHQgKiBEMFUqIC0tXHUwMDNlIEQwQSogKHBvd2VyZWQtdXAgYWN0aXZlKSBzdGF0ZS5cbjQ0MTA6XHRcdCAqL1xuNDQxMTpcdFx0aWYgKG1hY19jZmctXHUwMDNlZGV2aWNlX2ZhbWlseSBcdTAwM2U9IElXTF9ERVZJQ0VfRkFNSUxZX0JaKSB7XG40NDEyOlx0XHRcdGl3bF9zZXRfYml0KHRyYW5zLCBDU1JfR1BfQ05UUkwsXG40NDEzOlx0XHRcdFx0ICAgIENTUl9HUF9DTlRSTF9SRUdfRkxBR19CWl9NQUNfQUNDRVNTX1JFUSB8XG40NDE0Olx0XHRcdFx0ICAgIENTUl9HUF9DTlRSTF9SRUdfRkxBR19NQUNfSU5JVCk7XG40NDE1Olx0XHRcdHBvbGxfcmVhZHkgPSBDU1JfR1BfQ05UUkxfUkVHX0ZMQUdfTUFDX1NUQVRVUztcbjQ0MTY6XHRcdH0gZWxzZSB7XG40NDE3Olx0XHRcdGl3bF9zZXRfYml0KHRyYW5zLCBDU1JfR1BfQ05UUkwsXG40NDE4Olx0XHRcdFx0ICAgIENTUl9HUF9DTlRSTF9SRUdfRkxBR19JTklUX0RPTkUpO1xuNDQxOTpcdFx0XHRwb2xsX3JlYWR5ID0gQ1NSX0dQX0NOVFJMX1JFR19GTEFHX01BQ19DTE9DS19SRUFEWTtcbjQ0MjA6XHRcdH1cbjQ0MjE6XHRcbjQ0MjI6XHRcdGlmIChtYWNfY2ZnLVx1MDAzZWRldmljZV9mYW1pbHkgPT0gSVdMX0RFVklDRV9GQU1JTFlfODAwMClcbjQ0MjM6XHRcdFx0dWRlbGF5KDIpO1xuNDQyNDpcdFxuNDQyNTpcdFx0LypcbjQ0MjY6XHRcdCAqIFdhaXQgZm9yIGNsb2NrIHN0YWJpbGl6YXRpb247IG9uY2Ugc3RhYmlsaXplZCwgYWNjZXNzIHRvXG40NDI3Olx0XHQgKiBkZXZpY2UtaW50ZXJuYWwgcmVzb3VyY2VzIGlzIHN1cHBvcnRlZCwgZS5nLiBpd2xfd3JpdGVfcHJwaCgpXG40NDI4Olx0XHQgKiBhbmQgYWNjZXNzZXMgdG8gdUNvZGUgU1JBTS5cbjQ0Mjk6XHRcdCAqL1xuNDQzMDpcdFx0ZXJyID0gaXdsX3BvbGxfYml0cyh0cmFucywgQ1NSX0dQX0NOVFJMLCBwb2xsX3JlYWR5LCAyNTAwMCk7XG40NDMxOlx0XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MDgxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpdmluZyBpbnRvIHRoZSBpd2xfZHJ2X3N0YXJ0IEZ1bmN0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBpd2xfZHJ2X3N0YXJ0YC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgaW5pdGlhbCBkcml2ZXIgc3RhcnR1cCBzZXF1ZW5jZSBiZWdpbnMsIHdoaWNoLCBpbiB0aGUgY29udGV4dCBvZiB0aGUgSW50ZWwgV2lyZWxlc3MgZHJpdmVyLCBpcyBnb2luZyB0byBiZSBjcml0aWNhbC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoIGZyb20gaGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNlcXVlbmNpbmcgYW5kIHRoZSBpbml0aWFsaXphdGlvbiByb3V0aW5lcy4gSXMgaXQgZ29pbmcgdG8gdHJpZ2dlciBmaXJtd2FyZSBsb2FkaW5nLCBoYXJkd2FyZSBwcm9iaW5nLCBhbmQgcmVzb3VyY2UgYWxsb2NhdGlvbj8gSSYjMzk7bGwgcHJvYmFibHkgYmUgZGl2aW5nIGludG8gdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBzdHJ1Y3QgaXdsX3ByaXYgYW5kIGl0cyBmaWVsZHM6IHdoYXQgZ2V0cyBzZXQgaW5pdGlhbGx5LCBhbmQgd2hhdCBnZXRzIGRlZmVycmVkPyBJIHdhbnQgdG8gc2VlIGlmIHRoaXMgaXMgd2hlcmUgdGhlIG1haW4gZGV2aWNlIGVudHJ5IHBvaW50IGlzIHJlZ2lzdGVyZWQuIEEgZGVlcGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBmdW5jdGlvbiB3aWxsIGxlYWQgdG8gdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLiBJIGtub3cgdGhhdCBpc3N1ZXMgYXJpc2luZyBkdXJpbmcgdGhpcyBwaGFzZSBhcmUgbGlrZWx5IHRvIGJlIHJlbGF0ZWQgdG8gaGFyZHdhcmUgZGV0ZWN0aW9uLCBmaXJtd2FyZSBsb2FkaW5nIGVycm9ycywgb3IgaW5pdGlhbCByZWdpc3RlciBzZXR1cCBzbyBpdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgcHJvY2Vzcy4gVGhlIGZvY3VzIG9mIHVuZGVyc3RhbmRpbmcgd2lsbCBiZSB0aGUgZXhlY3V0aW9uIGZsb3cgYW5kIHRoZSBtYWluIGRhdGEgc3RydWN0dXJlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX2Rydl9zdGFydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTE2MzI9c3RhdGljIHZvaWQgaXdsX3JlcV9md19jYWxsYmFjayhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKnVjb2RlX3Jhdywgdm9pZCAqY29udGV4dClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xOTQ3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6MTk0ODpzdHJ1Y3QgaXdsX2RydiAqaXdsX2Rydl9zdGFydChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE5NDkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTQ3LSAqIDUpIFRoZSBidXMgc3BlY2lmaWMgY29tcG9uZW50IGNhbGxzIHRvIHRoZSBkcnYgYnVzIGFnbm9zdGljIHBhcnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oOjQ4OiAqICAgIChpd2xfZHJ2X3N0YXJ0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6NDk6ICogNikgaXdsX2Rydl9zdGFydCBmZXRjaGVzIHRoZSBmdyBBU1lOQywgaXdsX3JlcV9md19jYWxsYmFja1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtNTAtICogNykgaXdsX3JlcV9md19jYWxsYmFjayBwYXJzZXMgdGhlIGZ3IGZpbGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaD01Nj1zdHJ1Y3QgaXdsX3JmX2NmZztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTU3LS8qKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6NTg6ICogaXdsX2Rydl9zdGFydCAtIHN0YXJ0IHRoZSBkcnZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTU5LSAqXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtNjctICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaDo2ODpzdHJ1Y3QgaXdsX2RydiAqaXdsX2Rydl9zdGFydChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC02OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM9NDIzMj1pbnQgaXdsX3BjaV9nZW4xXzJfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTQzNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM6NDM2ODpcdGl3bF90cmFucy1cdTAwM2VkcnYgPSBpd2xfZHJ2X3N0YXJ0KGl3bF90cmFucyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtNDM2OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkwNjcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQXNzZXNzaW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBhbiBJbnRlbCBXaS1GaSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gYGl3bF9kcnZfc3RhcnRgIGlzIGZldGNoaW5nIGZpcm13YXJlIGFzeW5jaHJvbm91c2x5LiBSaWdodCwgYW5kIGlmIHRoZSBmaXJtd2FyZSYjMzk7cyBtaXNzaW5nLCBpdCBqdXN0IGZhaWxzLiBTeXprYWxsZXIgdXN1YWxseSBoYXMgYSBwcmV0dHkgbWluaW1hbCBzZXR1cCwgbm8gSW50ZWwgV2ktRmkgZmlybXdhcmUgZmlsZXMgdW5sZXNzIHdlIGV4cGxpY2l0bHkgaW5jbHVkZSB0aGVtIGluIHRoZSByb290ZnMuIEJ1dCBpdCBkb2VzIHRlc3QgUENJIGRldmljZXMsIGFuZCB0aGF0IGNhbiB0cmlwIHNvbWUgY29kZSBwYXRocy4gU28gdGhlIHF1ZXN0aW9uIGlzOiBpcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz8KClRoZSBwYXRjaCBpdHNlbGYgaXMgdHJpdmlhbCwgYSBzaW5nbGUgbGluZSBjaGFuZ2UgaW4gdGhlIHdvcmtxdWV1ZSBhc3NpZ25tZW50OgoKYGBgYwotCXF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fdW5ib3VuZF93cSwgJmFtcDt0cmFucy0mZ3Q7cmVzdGFydC53aywKJiM0MzsJcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfd3EsICZhbXA7dHJhbnMtJmd0O3Jlc3RhcnQud2ssCmBgYAoKSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc2hpZnRpbmcgZnJvbSBgc3lzdGVtX3VuYm91bmRfd3FgIHRvIGBzeXN0ZW1fZGZsX3dxYC4gQnV0IHRoYXQmIzM5O3MgaXQuIFdhaXQgYSBtaW51dGUsIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgRG9jdW1lbnRhdGlvbi9LY29uZmlnIGZpbGVzLCBjb2RlIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGNoYW5nZXMgbGlrZSBsb2dnaW5nLCBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvbiYjMzk7dCBjaGFuZ2UgdGhlIGV4ZWN1dGlvbiBmbG93LCBvciBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLgoKSXMgdGhpcyBwYXRoIHVucmVhY2hhYmxlPyBJZiBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgIG5lZWRzIHRoZSBmaXJtd2FyZSB0byBldmVuIGJlIHJlYWNoZWQsIGFuZCB0aGUgZmlybXdhcmUmIzM5O3MgYWJzZW50LCB0aGVuIGl0JiMzOTtzIGVmZmVjdGl2ZWx5IGFuIHVucmVhY2hhYmxlIGNvZGUgcGF0aCBpbiBvdXIgdHlwaWNhbCBTeXprYWxsZXIgc2V0dXAuIEhtbSwgYnV0IGBpd2xfdHJhbnNfcmVzdGFydF93a2AgaXMgc2NoZWR1bGVkIGJ5IGBpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXRgLiBDYW4gYGl3bF90cmFuc19zY2hlZHVsZV9yZXNldGAgYmUgY2FsbGVkIGJlZm9yZSBmaXJtd2FyZSBpcyBsb2FkZWQ/IFdlIG5lZWQgdG8gdmVyaWZ5IHRoZSBjYWxsIGNoYWluIHRvIGJlIHN1cmUuIFRpbWUgdG8gcmUtY2hlY2sgdGhlIGNhbGxlcnMgb2YgYGl3bF90cmFuc19zY2hlZHVsZV9yZXNldGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF90cmFuc19zY2hlZHVsZV9yZXNldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg9MTAwMD1pd2xfdHJhbnNfcmVsZWFzZV9uaWNfYWNjZXNzKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtMTAwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg6MTAwMjpzdGF0aWMgaW5saW5lIHZvaWQgaXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0xMDAzLVx0XHRcdFx0XHQgICAgZW51bSBpd2xfZndfZXJyb3JfdHlwZSB0eXBlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg9MTAyNT1zdGF0aWMgaW5saW5lIHZvaWQgaXdsX3RyYW5zX2Z3X2Vycm9yKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtMTAzNC1cdFx0aXdsX29wX21vZGVfbmljX2Vycm9yKHRyYW5zLVx1MDAzZW9wX21vZGUsIHR5cGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaDoxMDM1Olx0XHRpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXQodHJhbnMsIHR5cGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0xMDM2LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvcnguYz0xODM3PXN0YXRpYyB2b2lkIGl3bF90cmFuc19wY2llX2hhbmRsZV9yZXNldF9pbnRlcnJ1cHQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9yeC5jLTE4ODItXHRcdFx0dHJhbnMtXHUwMDNlc3RhdGUgPSBJV0xfVFJBTlNfTk9fRlc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3J4LmM6MTg4MzpcdFx0XHRpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXQodHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3J4LmMtMTg4NC1cdFx0XHRcdFx0XHQgSVdMX0VSUl9UWVBFX1RPUF9SRVNFVF9CWV9CVCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9yeC5jPTIyNjM9aXJxcmV0dXJuX3QgaXdsX3BjaWVfaXJxX21zaXhfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkZXZfaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9yeC5jLTIzNzItXHRcdFx0XHRcdCAgICAgIElXTF9FUlJfVFlQRV9UT1BfRkFUQUxfRVJST1IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9yeC5jOjIzNzM6XHRcdFx0aXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0KHRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9yeC5jLTIzNzQtXHRcdFx0XHRcdFx0IElXTF9FUlJfVFlQRV9UT1BfRkFUQUxfRVJST1IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMtZ2VuMi5jPTUwND1pbnQgaXdsX3RyYW5zX3BjaWVfZ2VuMl9zdGFydF9mdyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLWdlbjIuYy02MjMtXHRcdFx0XHRcdCAgICAgIElXTF9FUlJfVFlQRV9UT1BfUkVTRVRfRkFJTEVEKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMtZ2VuMi5jOjYyNDpcdFx0XHRpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXQodHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLWdlbjIuYy02MjUtXHRcdFx0XHRcdFx0IElXTF9FUlJfVFlQRV9UT1BfUkVTRVRfRkFJTEVEKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3R4LWdlbjIuYz0xMTk3PWludCBpd2xfcGNpZV9nZW4yX2VucXVldWVfaGNtZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3R4LWdlbjIuYy0xMjk2LVx0XHRcdFx0ICAgICAgSVdMX0VSUl9UWVBFX0NNRF9RVUVVRV9GVUxMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHgtZ2VuMi5jOjEyOTc6XHRcdGl3bF90cmFuc19zY2hlZHVsZV9yZXNldCh0cmFucywgSVdMX0VSUl9UWVBFX0NNRF9RVUVVRV9GVUxMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHgtZ2VuMi5jLTEyOTgtXHRcdGlkeCA9IC1FTk9TUEM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90eC5jPTEzNDM9aW50IGl3bF9wY2llX2VucXVldWVfaGNtZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3R4LmMtMTQ1MS1cdFx0XHRcdCAgICAgIElXTF9FUlJfVFlQRV9DTURfUVVFVUVfRlVMTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3R4LmM6MTQ1MjpcdFx0aXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0KHRyYW5zLCBJV0xfRVJSX1RZUEVfQ01EX1FVRVVFX0ZVTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90eC5jLTE0NTMtXHRcdGlkeCA9IC1FTk9TUEM7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMjA0CgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBWdWxuZXJhYmlsaXRpZXMgaW4gYGl3bF9wY2llX2lycV9tc2l4X2hhbmRsZXJgKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYGl3bF9wY2llX2lycV9tc2l4X2hhbmRsZXJgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgaXQgbWlnaHQgYmUgc3VzY2VwdGlibGUgdG8gaW50ZXJydXB0IGluamVjdGlvbiwgc3BlY2lmaWNhbGx5IHRocm91Z2ggTVNJLVggaW50ZXJydXB0cy4gVGhlIHJlYXNvbmluZyBpczogaWYgd2UgY2FuIG1hbmlwdWxhdGUgc3l6a2FsbGVyIHRvIGluamVjdCB0aGVzZSBpbnRlcnJ1cHRzIHN1Y2Nlc3NmdWxseSwgd2UgY291bGQgcG90ZW50aWFsbHkgdHJpZ2dlciBhIGNhbGwgdG8gYGl3bF90cmFuc19zY2hlZHVsZV9yZXNldGAuIFRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgSSB3YW50IHRvIGludmVzdGlnYXRlIGZ1cnRoZXIuIFRoZXJlZm9yZSwgbXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBgaXdsX3BjaWVfaXJxX21zaXhfaGFuZGxlcmAgZnVuY3Rpb24gY29kZSBpdHNlbGYgd2l0aCBhIGNyaXRpY2FsIGV5ZSwgbG9va2luZyBmb3IgYW55IHdlYWtuZXNzZXMgb3IgYXNzdW1wdGlvbnMgdGhhdCBjb3VsZCBiZSBleHBsb2l0ZWQgaW4gdGhpcyBpbmplY3Rpb24gc2NlbmFyaW8uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9yeC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjM2NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMzY1Olx0XG4yMzY2Olx0XHRpZiAoaW50YV9odyBcdTAwMjYgTVNJWF9IV19JTlRfQ0FVU0VTX1JFR19UT1BfRkFUQUxfRVJSKSB7XG4yMzY3Olx0XHRcdElXTF9FUlIodHJhbnMsIFwmIzM0O1RPUCBGYXRhbCBlcnJvciBkZXRlY3RlZCwgaW50YV9odz0weCV4LlxcblwmIzM0OyxcbjIzNjg6XHRcdFx0XHRpbnRhX2h3KTtcbjIzNjk6XHRcdFx0aWYgKHRyYW5zLVx1MDAzZW1hY19jZmctXHUwMDNlZGV2aWNlX2ZhbWlseSBcdTAwM2U9IElXTF9ERVZJQ0VfRkFNSUxZX0JaKSB7XG4yMzcwOlx0XHRcdFx0dHJhbnMtXHUwMDNlcmVxdWVzdF90b3BfcmVzZXQgPSAxO1xuMjM3MTpcdFx0XHRcdGl3bF9vcF9tb2RlX25pY19lcnJvcih0cmFucy1cdTAwM2VvcF9tb2RlLFxuMjM3MjpcdFx0XHRcdFx0XHQgICAgICBJV0xfRVJSX1RZUEVfVE9QX0ZBVEFMX0VSUk9SKTtcbjIzNzM6XHRcdFx0XHRpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXQodHJhbnMsXG4yMzc0Olx0XHRcdFx0XHRcdFx0IElXTF9FUlJfVFlQRV9UT1BfRkFUQUxfRVJST1IpO1xuMjM3NTpcdFx0XHR9XG4yMzc2Olx0XHR9XG4yMzc3Olx0XG4yMzc4Olx0XHQvKiBFcnJvciBkZXRlY3RlZCBieSB1Q29kZSAqL1xuMjM3OTpcdFx0aWYgKChpbnRhX2ZoIFx1MDAyNiBNU0lYX0ZIX0lOVF9DQVVTRVNfRkhfRVJSKSB8fCBzd19lcnIpIHtcbjIzODA6XHRcdFx0SVdMX0VSUih0cmFucyxcbjIzODE6XHRcdFx0XHRcJiMzNDtNaWNyb2NvZGUgU1cgZXJyb3IgZGV0ZWN0ZWQuIFJlc3RhcnRpbmcgMHglWC5cXG5cJiMzNDssXG4yMzgyOlx0XHRcdFx0aW50YV9maCk7XG4yMzgzOlx0XHRcdGlzcl9zdGF0cy1cdTAwM2VzdyYjNDM7JiM0Mzs7XG4yMzg0Olx0XHRcdC8qIGR1cmluZyBGVyByZXNldCBmbG93IHJlcG9ydCBlcnJvcnMgZnJvbSB0aGVyZSAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTg2MwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDEwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgS2VybmVsIENyYXNoIFJvdXRlKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMga2VybmVsIGlzc3VlIGFuZCB0aGlua2luZyBhYm91dCBhIHBvdGVudGlhbCBhdHRhY2sgdmVjdG9yLiBJdCBsb29rcyBsaWtlIGlmIHN5emthbGxlciBjYW4gaW5qZWN0IGFuIE1TSS1YIGludGVycnVwdCwgc3BlY2lmaWNhbGx5IG9uZSB3aGVyZSB0aGUgYGludGFfaHdgIGZsYWcgaGFzIHRoZSBgTVNJWF9IV19JTlRfQ0FVU0VTX1JFR19UT1BfRkFUQUxfRVJSYCBiaXQgc2V0LCBpdCAqbWlnaHQqIGxlYWQgZG93biB0aGUgcmFiYml0IGhvbGUgdG8gYGl3bF90cmFuc19zY2hlZHVsZV9yZXNldGAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFuZCBwb3RlbnRpYWxseSBleHBsb2l0YWJsZS4gQnV0IGhvbGQgb24sIHRoZSBgaXdsX3BjaWVfaXJxX21zaXhfaGFuZGxlcmAgaXMgcmVnaXN0ZXJlZCB3aGVuIE1TSS1YIGlzICplbmFibGVkKi4KClRoZSBxdWVzdGlvbiBub3cgYmVjb21lczogY2FuIHdlIGVuYWJsZSBNU0ktWCBzb21laG93ICp3aXRob3V0KiBmaXJtd2FyZSBpbnRlcnZlbnRpb24/IFRoYXQgd291bGQgYnlwYXNzIHNvbWUgb2YgdGhlIGV4cGVjdGVkIHNhZmV0eSBjaGVja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYmV0dGVyLiBNeSBuZXh0IHN0ZXAgaXMgdG8gdHJhY2UgdGhlIHJlZ2lzdHJhdGlvbiBvZiBpbnRlcnJ1cHQgcmVxdWVzdHMuIFRpbWUgdG8gZGlnIGludG8gd2hlcmUgYHJlcXVlc3RfaXJxYCBpcyBiZWluZyBjYWxsZWQgYW5kIHNlZSBob3cgTVNJLVggZml0cyBpbnRvIHRoZSBwaWN0dXJlLiBMZXQmIzM5O3Mgc2VlIGlmIHdlIGNhbiBmaW5kIHNvbWUgY2x1ZXMgdGhlcmUuIFRoaXMgY291bGQgYmUgYSBibGluZCBhbGxleSwgYnV0IGl0JiMzOTtzIHdvcnRoIGEgbG9vay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZXF1ZXN0X2lycSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIyNTMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqRGVidWdnaW5nIElSUSBBbGxvY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gaGl0dGluZyBhIHNuYWcgc29tZXdoZXJlIHdpdGggaW50ZXJydXB0IHJlcXVlc3QgKElSUSkgaGFuZGxpbmcuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbi4gTGV0JiMzOTtzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gdGhlIGNydWNpYWwgSVJRIGFsbG9jYXRpb24gcm91dGluZXMuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBsb29rIGNsb3NlbHkgYXQgZWl0aGVyIGByZXF1ZXN0X3RocmVhZGVkX2lycWAgb3IgYHBjaV9hbGxvY19pcnFfdmVjdG9yc2AuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHJlc3BvbnNpYmxlIGZvciBnZXR0aW5nIG1lIHRob3NlIHByZWNpb3VzIGludGVycnVwdHMsIHNvIGFueSBpc3N1ZXMgYXJlIGxpa2VseSBzdXJmYWNpbmcgdGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGlzIGFsbG9jYXRpbmcgdGhlbSBhbmQgaWYgc29tZXRoaW5nIGlzbiYjMzk7dCBxdWl0ZSByaWdodCBpbiB0aGUgbG9naWMuIEdvdHRhIGNoZWNrIHRoZSBhcmd1bWVudHMgYmVpbmcgcGFzc2VkLCB0aGUgcmV0dXJuIHZhbHVlcywgYW5kIGFueSBwb3RlbnRpYWwgZXJyb3IgY29uZGl0aW9ucyBiZWluZyBoYW5kbGVkLiBQZXJoYXBzIHRoZSBpbnRlcnJ1cHQgdmVjdG9yIHRhYmxlIGlzIGZ1bGwsIG9yIG1heWJlIHRoZXJlJiMzOTtzIGEgcmVzb3VyY2UgY29uZmxpY3Qgc29tZXdoZXJlLiBUaGlzIGlzIHdoZXJlIHRoZSBkZXRlY3RpdmUgd29yayBiZWdpbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlcXVlc3RfdGhyZWFkZWRfaXJxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jPTE2OTc9c3RhdGljIGludCBpd2xfcGNpZV9pbml0X21zaXhfaGFuZGxlcihzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtMTcxMS1cdFx0bXNpeF9lbnRyeSA9IFx1MDAyNnRyYW5zX3BjaWUtXHUwMDNlbXNpeF9lbnRyaWVzW2ldO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jOjE3MTI6XHRcdHJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtMTcxMy1cdFx0XHRcdFx0XHRtc2l4X2VudHJ5LVx1MDAzZXZlY3Rvcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM9MzgwMD1pd2xfdHJhbnNfcGNpZV9hbGxvYyhzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtMzk2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYzozOTY3Olx0XHRyZXQgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwZGV2LVx1MDAzZWlycSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0zOTY4LVx0XHRcdFx0XHRcdGl3bF9wY2llX2lzcixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI4NzkKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB3aGF0JiMzOTtzIGdvaW5nIG9uLCBmcmFtZWQgYXMgYSBmaXJzdC1wZXJzb24gdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOgoKKipEaXZpbmcgaW50byBgaXdsX3BjaWVfaW5pdF9tc2l4X2hhbmRsZXJgKioKCkFscmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGZ1bmN0aW9uLCBgaXdsX3BjaWVfaW5pdF9tc2l4X2hhbmRsZXJgLiBJbW1lZGlhdGVseSwgdGhlIG5hbWUgdGVsbHMgbWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBNU0ktWCBpbnRlcnJ1cHQgaGFuZGxpbmcgd2l0aGluIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIgZm9yIFBDSWUgZGV2aWNlcy4gVGhhdCBtZWFucyB3ZSYjMzk7cmUgbGlrZWx5IGNvbmZpZ3VyaW5nIGFuZCByZWdpc3RlcmluZyBhbiBNU0ktWCBpbnRlcnJ1cHQgaGFuZGxlciBmb3IgdGhlIEludGVsIHdpcmVsZXNzIGFkYXB0ZXIsIHNwZWNpZmljYWxseSBmb3IgYSBQQ0llIGJ1cy4gVGhpcyBpcyBrZXkgdG8gbW9kZXJuLCBlZmZpY2llbnQgaW50ZXJydXB0IG1hbmFnZW1lbnQuIFdpdGggTVNJLVgsIHdlIGNhbiBhbGxvY2F0ZSBhIGRlZGljYXRlZCBpbnRlcnJ1cHQgdmVjdG9yIGZvciBlYWNoIGRldmljZSBmdW5jdGlvbiwgbWluaW1pemluZyBpbnRlcnJ1cHQgbGF0ZW5jeSBhbmQgaW1wcm92aW5nIHBlcmZvcm1hbmNlLCBlc3BlY2lhbGx5IHVuZGVyIGhlYXZ5IG5ldHdvcmsgbG9hZC4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBmdW5jdGlvbiB0byBiZSB0aGUgY29yZSBvZiBlbmFibGluZyB0aG9zZSBjYXBhYmlsaXRpZXMgZm9yIHRoZSBjYXJkLiBJIGJldCBpdCYjMzk7bGwgaW5pdGlhbGl6ZSB0aGUgTVNJLVggdGFibGUsIHNldCB1cCB0aGUgaW50ZXJydXB0IHZlY3RvcnMsIGFuZCBwcm9iYWJseSByZWdpc3RlciB0aGUgaGFuZGxlciBmdW5jdGlvbiB3aXRoIHRoZSBrZXJuZWwuIEkgd29uZGVyIHdoYXQgdGhlIHNwZWNpZmljIGRldGFpbHMgYXJlIGZvciB0aGlzIGRyaXZlciYjMzk7cyBjb25maWd1cmF0aW9uLiBJIGhvcGUgdGhleSBhcmUgdGFraW5nIHByb3BlciBwcmVjYXV0aW9ucyBhbmQgY29uc2lkZXJhdGlvbnMgZm9yIGVycm9yIGhhbmRsaW5nLiBMZXQmIzM5O3Mgc2VlIGhvdyBpdCYjMzk7cyBpbXBsZW1lbnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3BjaWVfaW5pdF9tc2l4X2hhbmRsZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM9MTY3MD1zdGF0aWMgdm9pZCBpd2xfcGNpZV9pcnFfc2V0X2FmZmluaXR5KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0xNjk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jOjE2OTc6c3RhdGljIGludCBpd2xfcGNpZV9pbml0X21zaXhfaGFuZGxlcihzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0xNjk4LVx0XHRcdFx0ICAgICAgc3RydWN0IGl3bF90cmFuc19wY2llICp0cmFuc19wY2llLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYz0zODAwPWl3bF90cmFuc19wY2llX2FsbG9jKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0zOTU4LVx0aWYgKHRyYW5zX3BjaWUtXHUwMDNlbXNpeF9lbmFibGVkKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM6Mzk1OTpcdFx0cmV0ID0gaXdsX3BjaWVfaW5pdF9tc2l4X2hhbmRsZXIocGRldiwgdHJhbnNfcGNpZSwgaW5mbyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtMzk2MC1cdFx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM1NzcKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA0MTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0OiBXb3JrcXVldWUgQ2hhbmdlIGluIGl3bCBXaUZpIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJhY2luZyB0aGUgZXhlY3V0aW9uIHBhdGguIGBpd2xfcGNpZV9pbml0X21zaXhfaGFuZGxlcmAgZ2V0cyBjYWxsZWQgd2l0aGluIGBpd2xfdHJhbnNfcGNpZV9hbGxvY2AsIHdoaWNoIGl0c2VsZiBpcyBjYWxsZWQgaW4gYGl3bF9wY2lfZ2VuMV8yX3Byb2JlYC4gQWxyaWdodCwgc28gdGhlIElSUSBoYW5kbGVyIGlzIHJlZ2lzdGVyZWQgKmR1cmluZyogdGhlIHByb2JlIHNlcXVlbmNlLCBldmVuIGJlZm9yZSB0aGUgZmlybXdhcmUgaXMgbG9hZGVkLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLi4uIHRoYXQgbWVhbnMgc3l6a2FsbGVyIGNvdWxkIHBvdGVudGlhbGx5IGluamVjdCBhbiBpbnRlcnJ1cHQgcHJldHR5IGVhcmx5IG9uLiBUaGlzIGludGVycnVwdCB3b3VsZCB0cmlnZ2VyIGBpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXRgLCBxdWV1aW5nIGB0cmFucy0mZ3Q7cmVzdGFydC53a2AuIFRoZSB3b3JrIGZ1bmN0aW9uIGl0c2VsZiBpcyBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgLgoKSGFuZyBvbiBhIHNlYy4uLiB0aGUgd29yayBpcyBxdWV1ZWQgb24gYHN5c3RlbV9kZmxfd3FgLCBub3QgYHN5c3RlbV91bmJvdW5kX3dxYC4gTm93IHRoYXQgaXMgYSBzdWJ0bGUsIGJ1dCBmdW5jdGlvbmFsbHkgcmVsZXZhbnQgY2hhbmdlLiBUaGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgZXZlbiB3b3J0aCBmdXp6aW5nPyBJdCYjMzk7cyBub3QgaW50cm9kdWNpbmcgbmV3IGNvZGUsIGp1c3QgbW9kaWZ5aW5nIHdoZXJlIHRoZSB3b3JrIGdldHMgc2NoZWR1bGVkLiBCdXQsIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRoYXQgY2hhbmdlcyB0byBleGVjdXRpb24gZmxvdyAqYXJlKiB3b3J0aCBmdXp6aW5nLiAKCkxldCYjMzk7cyBicmVhayBpdCBkb3duOiAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6IGRvY3VtZW50YXRpb24sIEtjb25maWcsIGNvbW1lbnRzLCBsb2dnaW5nLCBjb25zdGFudHMgdGhhdCBkb24mIzM5O3QgYWx0ZXIgZXhlY3V0aW9uIG9yIHVucmVhY2hhYmxlIGNvZGUmIzM0Oy4gQ2hhbmdpbmcgdGhlIHdvcmtxdWV1ZSBkZWZpbml0ZWx5IGFsdGVycyB0aGUgZXhlY3V0aW9uIGZsb3c7IGl0IHJ1bnMgb24gYSBkaWZmZXJlbnQgd29ya3F1ZXVlIHdoaWNoIGNvdWxkIGhhdmUgZGlmZmVyZW50IGNvbmN1cnJlbmN5LiBBbmQgaXMgaXQgdW5yZWFjaGFibGU/IE5vcGUsIHdlIGp1c3QgZXN0YWJsaXNoZWQgd2UgY2FuIGhpdCBgaXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0YCB0aHJvdWdoIGFuIGludGVycnVwdCBpbmplY3RlZCBkdXJpbmcgcHJvYmUsIGV2ZW4gYmVmb3JlIGZpcm13YXJlLgoKV2FpdCwgbG9va2luZyBhdCBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgLCBpdCBjaGVja3MgYHRyYW5zLSZndDtvcF9tb2RlYC4gT2theSwgbGV0JiMzOTtzIGRpZyBpbnRvIHdoYXQgYGl3bF90cmFuc19yZXN0YXJ0X3drYCBhY3R1YWxseSBkb2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMDIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIwMjpcdHN0YXRpYyB2b2lkIGl3bF90cmFuc19yZXN0YXJ0X3drKHN0cnVjdCB3b3JrX3N0cnVjdCAqd2spXG4gMjAzOlx0e1xuIDIwNDpcdFx0c3RydWN0IGl3bF90cmFucyAqdHJhbnMgPSBjb250YWluZXJfb2Yod2ssIHR5cGVvZigqdHJhbnMpLFxuIDIwNTpcdFx0XHRcdFx0XHQgICAgICAgcmVzdGFydC53ay53b3JrKTtcbiAyMDY6XHRcdGVudW0gaXdsX3Jlc2V0X21vZGUgbW9kZTtcbiAyMDc6XHRcbiAyMDg6XHRcdGlmICh0cmFucy1cdTAwM2VyZXN0YXJ0Lm1vZGUudHlwZSA9PSBJV0xfRVJSX1RZUEVfVE9QX1JFU0VUX0JZX0JUKSB7XG4gMjA5Olx0XHRcdGl3bF90cmFuc19zY2hlZHVsZV9yZXByb2JlKHRyYW5zLCBJV0xfVFJBTlNfVE9QX0ZPTExPV0VSX1dBSVQpO1xuIDIxMDpcdFx0XHRyZXR1cm47XG4gMjExOlx0XHR9XG4gMjEyOlx0XG4gMjEzOlx0XHRpZiAoIXRyYW5zLVx1MDAzZW9wX21vZGUpXG4gMjE0Olx0XHRcdHJldHVybjtcbiAyMTU6XHRcbiAyMTY6XHRcdC8qIG1pZ2h0IGhhdmUgYmVlbiBzY2hlZHVsZWQgYmVmb3JlIG1hcmtlZCBhcyBkZWFkLCByZS1jaGVjayAqL1xuIDIxNzpcdFx0aWYgKHRlc3RfYml0KFNUQVRVU19UUkFOU19ERUFELCBcdTAwMjZ0cmFucy1cdTAwM2VzdGF0dXMpKVxuIDIxODpcdFx0XHRyZXR1cm47XG4gMjE5Olx0XG4gMjIwOlx0XHRpd2xfb3BfbW9kZV9kdW1wX2Vycm9yKHRyYW5zLVx1MDAzZW9wX21vZGUsIFx1MDAyNnRyYW5zLVx1MDAzZXJlc3RhcnQubW9kZSk7XG4gMjIxOlx0XG4gMjIyOlx0XHQvKlxuIDIyMzpcdFx0ICogSWYgdGhlIG9wbW9kZSBzdG9wcGVkIHRoZSBkZXZpY2Ugd2hpbGUgd2Ugd2VyZSB0cnlpbmcgdG8gZHVtcCBhbmRcbiAyMjQ6XHRcdCAqIHJlc2V0LCB0aGVuIHdlJiMzOTtsbCBoYXZlIGRvbmUgdGhlIGR1bXAgYWxyZWFkeSAoc3luY2hyb25pemVkIGJ5IHRoZVxuIDIyNTpcdFx0ICogb3Btb2RlIGxvY2sgdGhhdCBpdCB3aWxsIGFjcXVpcmUgaW4gaXdsX29wX21vZGVfZHVtcF9lcnJvcigpKSBhbmRcbiAyMjY6XHRcdCAqIG1hbmFnZWQgdGhhdCB2aWEgdHJhbnMtXHUwMDNlcmVzdGFydC5tb2RlLlxuIDIyNzpcdFx0ICogQWRkaXRpb25hbGx5LCBtYWtlIHN1cmUgdGhhdCBpbiBzdWNoIGEgY2FzZSB3ZSB3b24mIzM5O3QgYXR0ZW1wdCB0byBkb1xuIDIyODpcdFx0ICogYW55IHJlc2V0cyBub3csIHNpbmNlIGl0JiMzOTtzIG5vIGxvbmdlciByZXF1ZXN0ZWQuXG4gMjI5Olx0XHQgKi9cbiAyMzA6XHRcdGlmICghdGVzdF9hbmRfY2xlYXJfYml0KFNUQVRVU19SRVNFVF9QRU5ESU5HLCBcdTAwMjZ0cmFucy1cdTAwM2VzdGF0dXMpKVxuIDIzMTpcdFx0XHRyZXR1cm47XG4gMjMyOlx0XG4gMjMzOlx0XHRpZiAoIWl3bHdpZmlfbW9kX3BhcmFtcy5md19yZXN0YXJ0KVxuIDIzNDpcdFx0XHRyZXR1cm47XG4gMjM1Olx0XG4gMjM2Olx0XHRtb2RlID0gaXdsX3RyYW5zX2RldGVybWluZV9yZXN0YXJ0X21vZGUodHJhbnMpO1xuIDIzNzpcdFx0aWYgKG1vZGUgPT0gSVdMX1JFU0VUX01PREVfQkFDS09GRikge1xuIDIzODpcdFx0XHRJV0xfRVJSKHRyYW5zLCBcJiMzNDtUb28gbWFueSBkZXZpY2UgZXJyb3JzIC0gZGVsYXkgbmV4dCByZXNldFxcblwmIzM0Oyk7XG4gMjM5Olx0XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX3dxLCBcdTAwMjZ0cmFucy1cdTAwM2VyZXN0YXJ0LndrLFxuIDI0MDpcdFx0XHRcdFx0ICAgSVdMX1RSQU5TX1JFU0VUX0RFTEFZKTtcbiAyNDE6XHRcdFx0cmV0dXJuO1xuIDI0MjpcdFx0fVxuIDI0MzpcdFxuIDI0NDpcdFx0aXdsX3RyYW5zX2luY19yZXN0YXJ0X2NvdW50KHRyYW5zLVx1MDAzZWRldik7XG4gMjQ1Olx0XG4gMjQ2Olx0XHRzd2l0Y2ggKG1vZGUpIHtcbiAyNDc6XHRcdGNhc2UgSVdMX1JFU0VUX01PREVfVE9QX1JFU0VUOlxuIDI0ODpcdFx0XHR0cmFucy1cdTAwM2Vkb190b3BfcmVzZXQgPSAxO1xuIDI0OTpcdFx0XHRJV0xfRVJSKHRyYW5zLCBcJiMzNDtEZXZpY2UgZXJyb3IgLSBUT1AgcmVzZXRcXG5cJiMzNDspO1xuIDI1MDpcdFx0XHRmYWxsdGhyb3VnaDtcbiAyNTE6XHRcdGNhc2UgSVdMX1JFU0VUX01PREVfU1dfUkVTRVQ6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MjU4CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhlc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgdGhlIGF1ZGllbmNlIGlzIGFub3RoZXIgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIGEgQ29uZGl0aW9uYWwgUmV0dXJuKioKCkFscmlnaHQsIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBpZWNlIG9mIGNvZGUgYW5kIGltbWVkaWF0ZWx5IHNlZSBhIGNvbmRpdGlvbmFsIHJldHVybjogYGlmICghdHJhbnMtJmd0O29wX21vZGUpYC4gTXkgZmlyc3QgdGhvdWdodCBpcywgJiMzNDtPa2F5LCB0aGF0JiMzOTtzIGEgcXVpY2sgZXhpdC4mIzM0OyBCdXQgdGhlIGZvbGxvdy11cCBxdWVzdGlvbiBpcyBhbHdheXMgKndoeSo/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZW4gYHRyYW5zLSZndDtvcF9tb2RlYCBpcyBhY3R1YWxseSBzZXQuIEl0JiMzOTtzIGNydWNpYWwgdG8ga25vdyB1bmRlciB3aGF0IGNpcmN1bXN0YW5jZXMgd2UmIzM5O3JlIGJ5cGFzc2luZyB0aGUgcmVzdCBvZiB0aGUgZnVuY3Rpb24uCgpTbywgd2hlcmUgaXMgdGhpcyBgb3BfbW9kZWAgZmxhZyBpbml0aWFsaXplZCBvciBtb2RpZmllZD8gTXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCBpdCYjMzk7cyBnb2luZyB0byBiZSBpbiBhbiBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBsaWtlIGBpd2xfb3BfbW9kZV9zdGFydGAsIG9yIHNvbWV0aGluZyBzaW1pbGFybHkgbmFtZWQgdGhhdCBkZWFscyB3aXRoIHNldHRpbmcgdXAgdGhlIG9wZXJhdGlvbmFsIG1vZGUgb2YgdGhlIGRldmljZS4gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIHJlbGV2YW50IGNvZGUgYW5kIHNlZSB0aGUgbG9naWMgYXJvdW5kIHRoYXQgdmFyaWFibGUuIFRoYXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoaXMgY29uZGl0aW9uYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RyYW5zLVx1MDAzZW9wX21vZGUgPSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM9Mzg3PXZvaWQgaXdsX3RyYW5zX29wX21vZGVfZW50ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0zODkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzozOTA6XHR0cmFucy1cdTAwM2VvcF9tb2RlID0gb3BfbW9kZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMzkxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM9NDEyPXZvaWQgaXdsX3RyYW5zX29wX21vZGVfbGVhdmUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy00MjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjQyMzpcdHRyYW5zLVx1MDAzZW9wX21vZGUgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy00MjQtXHRtZW1zZXQoXHUwMDI2dHJhbnMtXHUwMDNlY29uZiwgMCwgc2l6ZW9mKHRyYW5zLVx1MDAzZWNvbmYpKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU4MzMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlRyYWNpbmcgdGhlIENhbGxlcnMgb2YgYGl3bF90cmFuc19vcF9tb2RlX2VudGVyYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IHN1cnJvdW5kaW5nIGBpd2xfdHJhbnNfb3BfbW9kZV9lbnRlcmAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGZpbmQgb3V0IHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKnVzZWQqLiBJJiMzOTtsbCBuZWVkIHRvIGxvY2F0ZSBhbGwgb2YgaXRzIGNhbGwgc2l0ZXMuIEtub3dpbmcgdGhlIGNhbGwgZ3JhcGggd2lsbCBnaXZlIG1lIGEgY3JpdGljYWwgdW5kZXJzdGFuZGluZyBvZiB0aGUgZW50cnkgcG9pbnRzIGludG8gdGhpcyBvcGVyYXRpb25hbCBtb2RlIG1hbmFnZW1lbnQuIFRoaXMgd2lsbCBsaWtlbHkgcHJvdmlkZSBpbnNpZ2h0IGludG8gaG93IHRoZSB2YXJpb3VzIG9wZXJhdGlvbmFsIG1vZGVzIChhY3RpdmUsIHNsZWVwLCBldGMuKSBhcmUgZW50ZXJlZCBhbmQgZXhpdGVkLiBJJiMzOTttIGFzc3VtaW5nIHRoaXMgZnVuY3Rpb24gaXMgY2VudHJhbCB0byB0aGUgZHJpdmVyJiMzOTtzIHBvd2VyIG1hbmFnZW1lbnQgYW5kL29yIG9wZXJhdGlvbmFsIHN0YXRlIHRyYW5zaXRpb25zLiBMZXQmIzM5O3Mgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBjcm9zcy1yZWZlcmVuY2VzLiBJIGV4cGVjdCB0aGUgY2FsbCBzaXRlcyB0byBpbGx1bWluYXRlIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIgdHJhbnNpdGlvbnMgYmV0d2VlbiBkaWZmZXJlbnQgb3BlcmF0aW9uYWwgc3RhdGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfdHJhbnNfb3BfbW9kZV9lbnRlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYz0xMjMzPXN0YXRpYyBzdHJ1Y3QgaXdsX29wX21vZGUgKml3bF9vcF9tb2RlX2R2bV9zdGFydChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTM2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYzoxMzYzOlx0aXdsX3RyYW5zX29wX21vZGVfZW50ZXIocHJpdi1cdTAwM2V0cmFucywgb3BfbW9kZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTM2NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jPTM4NT1JV0xfRVhQT1JUX1NZTUJPTChpd2xfZ2V0X2NtZF9zdHJpbmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0zODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjM4Nzp2b2lkIGl3bF90cmFuc19vcF9tb2RlX2VudGVyKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0zODgtXHRcdFx0ICAgICBzdHJ1Y3QgaXdsX29wX21vZGUgKm9wX21vZGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0zOTktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzo0MDA6SVdMX0VYUE9SVF9TWU1CT0woaXdsX3RyYW5zX29wX21vZGVfZW50ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy00MDEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaD0zNzI9c3RydWN0IGl3bF9kdW1wX3Nhbml0aXplX29wcyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0zODAtICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg6MzgxOiAqIFRoZXNlIHZhbHVlcyBzaG91bGQgYmUgc2V0IGJlZm9yZSBpd2xfdHJhbnNfb3BfbW9kZV9lbnRlcigpLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0zODItICpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oPTgxNz1jb25zdCBjaGFyICppd2xfZ2V0X2NtZF9zdHJpbmcoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHUzMiBpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTgxOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg6ODE5OnZvaWQgaXdsX3RyYW5zX29wX21vZGVfZW50ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTgyMC1cdFx0XHQgICAgIHN0cnVjdCBpd2xfb3BfbW9kZSAqb3BfbW9kZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWxkLmM9MzQ5PWl3bF9tbGRfY29uZmlndXJlX3RyYW5zKHN0cnVjdCBpd2xfb3BfbW9kZSAqb3BfbW9kZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tbGQuYy0zODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tbGQuYzozODQ6XHRpd2xfdHJhbnNfb3BfbW9kZV9lbnRlcih0cmFucywgb3BfbW9kZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tbGQuYy0zODUtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jPTExOTc9aXdsX29wX21vZGVfbXZtX3N0YXJ0KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCBzdHJ1Y3QgaXdsX3JmX2NmZyAqY2ZnLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jLTE0MzUtXHQvKiBDb25maWd1cmUgdHJhbnNwb3J0IGxheWVyICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuYzoxNDM2Olx0aXdsX3RyYW5zX29wX21vZGVfZW50ZXIobXZtLVx1MDAzZXRyYW5zLCBvcF9tb2RlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jLTE0MzctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MDc3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNTEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBBbmFseXNpczogaXdsd2lmaSBXb3JrcXVldWUgQ2hhbmdlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBpd2xfb3BfbW9kZV9kdm1fc3RhcnRgIGFuZCBgaXdsX29wX21vZGVfbXZtX3N0YXJ0YCBnZXR0aW5nIGNhbGxlZCBzaWduaWZ5IHRoZSBzdGFydCBvZiB0aGUgb3BfbW9kZSBhZnRlciBmaXJtd2FyZSBpcyBsb2FkZWQuIFNvLCB0aGUgYHRyYW5zLSZndDtvcF9tb2RlYCBpcyAqb25seSogc2V0IGFmdGVyIHRoYXQgZmlybXdhcmUgaXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBhbmQgcGFyc2VkLiBJZiB0aGUgZmlybXdhcmUgaXMgbWlzc2luZywgYHRyYW5zLSZndDtvcF9tb2RlYCB3aWxsIGJlIE5VTEwsIGFuZCB0aGUgYGl3bF90cmFuc19yZXN0YXJ0X3drYCBmdW5jdGlvbiB3b3VsZCBiYWlsIG91dCBlYXJseS4gSW4gZmFjdCwgYGl3bF90cmFuc19yZXN0YXJ0X3drYCBkaXJlY3RseSBjaGVja3MgZm9yIGAhdHJhbnMtJmd0O29wX21vZGVgIGFuZCByZXR1cm5zIGlmIGl0JiMzOTtzIHRydWUuIFRodXMsIHRoaXMgcGF0Y2gsIHRoZSBgcXVldWVfZGVsYXllZF93b3JrYCBjYWxsLCBpcyBvbmx5IGV2ZXIgcmVhY2hlZCBpZiBgdHJhbnMtJmd0O29wX21vZGVgICppcyogc2V0LCB3aGljaCBjb25maXJtcyBmaXJtd2FyZSBpcyBsb2FkZWQuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gZm9yIGZ1enppbmc6IERvZXMgc3l6a2FsbGVyIGV2ZW4gaGF2ZSB0aGUgYGl3bHdpZmlgIGZpcm13YXJlPyBCYXNlZCBvbiBteSBleHBlcmllbmNlIHdpdGggc3l6a2FsbGVyIGluc3RhbmNlcywgZXNwZWNpYWxseSBvbiBHQ0UsIGl0JiMzOTtzIHZlcnkgdW5saWtlbHkuIFVubGVzcyB0aGUgZmlybXdhcmUgaXMgZXhwbGljaXRseSBpbmNsdWRlZCBpbiB0aGUgaW1hZ2UsIHN5emthbGxlciBkZXBsb3ltZW50cyBnZW5lcmFsbHkgZG8gbm90IHNoaXAgd2l0aCBpdCwgZGVzcGl0ZSBmdXp6aW5nIFBDSSBkZXZpY2VzIGFzIHBhcnQgb2YgaXRzIGNvcmUgZnVuY3Rpb25hbGl0eS4KClNvLCBpcyB0aGlzIHBhdGNoIHdvcnRoIGZ1enppbmc/IEhvbmVzdGx5LCBpdCYjMzk7cyBqdXN0IGNoYW5naW5nIGBzeXN0ZW1fdW5ib3VuZF93cWAgdG8gYHN5c3RlbV9kZmxfd3FgLiBFdmVuIGlmIHJlYWNoYWJsZSwgaXQmIzM5O3MgYSBvbmUtbGluZSB3b3JrcXVldWUgY2hhbmdlLiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzIHdoZXRoZXIgdGhlIGNvZGUgcGF0aCBpcyAqcmVhY2hhYmxlKi4KClRvIGFuc3dlciB0aGUgJiMzOTtXb3J0aEZ1enppbmc9ZmFsc2UmIzM5OyBjcml0ZXJpYSwgSSBuZWVkIHRvIGp1c3RpZnkgbXkgcmVhc29uaW5nLiBJIGhhdmUgdG8gYXNrIG15c2VsZiwgaXMgdGhpcyBjb2RlIHBhdGggaW1wb3NzaWJsZSB0byByZWFjaD8gQWJzb2x1dGVseS4gU2luY2UgYGl3bHdpZmlgIHJlbGllcyBvbiBwcm9wcmlldGFyeSBJbnRlbCBmaXJtd2FyZSB0byBpbml0aWFsaXplIHRoZSBgb3BfbW9kZWAsIGFuZCB0aGF0IGZpcm13YXJlIGlzIHVubGlrZWx5IHRvIGJlIHByZXNlbnQsIGBpd2xfcGNpX3Byb2JlYCBvciBgaXdsX2Rydl9zdGFydGAgd2lsbCBmYWlsIHRvIGxvYWQgdGhlIGZpcm13YXJlIGFuZCwgdGhlcmVmb3JlLCB0aGUgYHRyYW5zLSZndDtvcF9tb2RlYCB3aWxsIG5ldmVyIGJlIHNldC4gSXQgd2lsbCBzdG9wIG11Y2ggZWFybGllciB3aXRoIGEgZmlybXdhcmUgbG9hZCBmYWlsdXJlLiBgaXdsX3JlcV9md19jYWxsYmFja2AgZ2V0cyBjYWxsZWQgd2hlbiBmaXJtd2FyZSBpcyBsb2FkZWQ7IGlmIG5vdCwgaXQgZmFpbHMuCgpUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggaXMgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCBzeXprYWxsZXIgc2V0dXAuCgoqKldvcnRoRnV6emluZz1mYWxzZSoqCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9yZXFfZndfY2FsbGJhY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz0yOTM9SVdMX0VYUE9SVF9TWU1CT0woaXdsX2Rydl9nZXRfZnduYW1lX3ByZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0yOTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoyOTU6c3RhdGljIHZvaWQgaXdsX3JlcV9md19jYWxsYmFjayhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKnVjb2RlX3JhdyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTI5Ni1cdFx0XHRcdHZvaWQgKmNvbnRleHQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTMyNT1zdGF0aWMgaW50IGl3bF9yZXF1ZXN0X2Zpcm13YXJlKHN0cnVjdCBpd2xfZHJ2ICpkcnYsIGJvb2wgZmlyc3QpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMzg1LVx0XHRcdFx0ICAgICAgIGRydi1cdTAwM2V0cmFucy1cdTAwM2VkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzozODY6XHRcdFx0XHQgICAgICAgR0ZQX0tFUk5FTCwgZHJ2LCBpd2xfcmVxX2Z3X2NhbGxiYWNrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTM4Ny19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9MTYwOT1zdGF0aWMgdm9pZCBfaXdsX29wX21vZGVfc3RvcChzdHJ1Y3QgaXdsX2RydiAqZHJ2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE2MjYtLypcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjE2Mjc6ICogaXdsX3JlcV9md19jYWxsYmFjayAtIGNhbGxiYWNrIHdoZW4gZmlybXdhcmUgd2FzIGxvYWRlZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTYyOC0gKlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE2MzEtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoxNjMyOnN0YXRpYyB2b2lkIGl3bF9yZXFfZndfY2FsbGJhY2soY29uc3Qgc3RydWN0IGZpcm13YXJlICp1Y29kZV9yYXcsIHZvaWQgKmNvbnRleHQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xNjMzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC00OC0gKiAgICAoaXdsX2Rydl9zdGFydClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oOjQ5OiAqIDYpIGl3bF9kcnZfc3RhcnQgZmV0Y2hlcyB0aGUgZncgQVNZTkMsIGl3bF9yZXFfZndfY2FsbGJhY2tcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oOjUwOiAqIDcpIGl3bF9yZXFfZndfY2FsbGJhY2sgcGFyc2VzIHRoZSBmdyBmaWxlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaDo1MTogKiA4KSBpd2xfcmVxX2Z3X2NhbGxiYWNrIHN0YXJ0cyB0aGUgd2lmaSBpbXBsZW1lbnRhdGlvbiB0byBtYXRjaGVzIHRoZSBmd1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtNTItICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4ODY1CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBGaXJtd2FyZSBSZXF1ZXN0IENhbGxiYWNrKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgaXdsX3JlcV9md19jYWxsYmFja2AgZnVuY3Rpb24uIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIHRoZSAmIzM0O2Zpcm13YXJlIG5vdCBmb3VuZCYjMzQ7IHNjZW5hcmlvLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZ3JhY2VmdWwgZGVncmFkYXRpb24sIGFueSBlcnJvciByZXBvcnRpbmcsIHJldHJpZXMsIGZhbGxiYWNrIG1lY2hhbmlzbXMsIG9yIGV2ZW4gcG90ZW50aWFsIGtlcm5lbCBwYW5pY3MgdGhhdCBtaWdodCBiZSB0cmlnZ2VyZWQgaWYgdGhlIGZpcm13YXJlIGlzbiYjMzk7dCBwcmVzZW50IGR1cmluZyB0aGUgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uIG9yIGNyaXRpY2FsIG9wZXJhdGlvbmFsIHBoYXNlcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgY2x1ZXMgb24gaG93IHRoZSBkcml2ZXIgcmVjb3ZlcnMsIGxvZ3MgdGhlIGVycm9yLCBhbmQgd2hldGhlciBpdCBhdHRlbXB0cyBhbHRlcm5hdGl2ZSBhcHByb2FjaGVzLiBJJiMzOTttIGtlZW4gdG8gZGV0ZXJtaW5lIGlmIHRoaXMgY2FsbGJhY2sgaXMgdGhlIGRlZmluaXRpdmUgcG9pbnQgb2YgZmFpbHVyZSwgb3IgaWYgdGhlcmUmIzM5O3MgYW55IGNsZXZlcm5lc3MgYnVpbHQtaW4gdGhhdCBtaWdodCBzdXJwcmlzZSBtZS4gRXNzZW50aWFsbHksIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgdG8gYmUgYW4gaW1wb3J0YW50IHBpZWNlIG9mIGVycm9yIGhhbmRsaW5nIGFuZCBJIGludGVuZCB0byB1bmRlcnN0YW5kIGl0IGZ1bGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTYzMiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNjMyOlx0c3RhdGljIHZvaWQgaXdsX3JlcV9md19jYWxsYmFjayhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKnVjb2RlX3Jhdywgdm9pZCAqY29udGV4dClcbjE2MzM6XHR7XG4xNjM0Olx0XHRpbnQgbWluX2NvcmUsIG1heF9jb3JlLCBsb2FkZWRfY29yZTtcbjE2MzU6XHRcdHN0cnVjdCBpd2xfZHJ2ICpkcnYgPSBjb250ZXh0O1xuMTYzNjpcdFx0c3RydWN0IGl3bF9mdyAqZncgPSBcdTAwMjZkcnYtXHUwMDNlZnc7XG4xNjM3Olx0XHRjb25zdCBzdHJ1Y3QgaXdsX3Vjb2RlX2hlYWRlciAqdWNvZGU7XG4xNjM4Olx0XHRzdHJ1Y3QgaXdsd2lmaV9vcG1vZGVfdGFibGUgKm9wO1xuMTYzOTpcdFx0aW50IGVycjtcbjE2NDA6XHRcdHN0cnVjdCBpd2xfZmlybXdhcmVfcGllY2VzICpwaWVjZXM7XG4xNjQxOlx0XHR1bnNpZ25lZCBpbnQgYXBpX21pbiwgYXBpX21heDtcbjE2NDI6XHRcdHNpemVfdCB0cmlnZ2VyX3Rsdl9zeltGV19EQkdfVFJJR0dFUl9NQVhdO1xuMTY0MzpcdFx0dTMyIGFwaV92ZXI7XG4xNjQ0Olx0XHRpbnQgaTtcbjE2NDU6XHRcdGJvb2wgdXNuaWZmZXJfaW1hZ2VzID0gZmFsc2U7XG4xNjQ2Olx0XHRib29sIGZhaWx1cmUgPSB0cnVlO1xuMTY0NzpcdFxuMTY0ODpcdFx0aXdsX2dldF91Y29kZV9hcGlfdmVyc2lvbnMoZHJ2LVx1MDAzZXRyYW5zLCBcdTAwMjZhcGlfbWluLCBcdTAwMjZhcGlfbWF4KTtcbjE2NDk6XHRcbjE2NTA6XHRcdGZ3LVx1MDAzZXVjb2RlX2NhcGEubWF4X3Byb2JlX2xlbmd0aCA9IElXTF9ERUZBVUxUX01BWF9QUk9CRV9MRU5HVEg7XG4xNjUxOlx0XHRmdy1cdTAwM2V1Y29kZV9jYXBhLnN0YW5kYXJkX3BoeV9jYWxpYnJhdGlvbl9zaXplID1cbjE2NTI6XHRcdFx0XHRJV0xfREVGQVVMVF9TVEFOREFSRF9QSFlfQ0FMSUJSQVRFX1RCTF9TSVpFO1xuMTY1MzpcdFx0ZnctXHUwMDNldWNvZGVfY2FwYS5uX3NjYW5fY2hhbm5lbHMgPSBJV0xfREVGQVVMVF9TQ0FOX0NIQU5ORUxTO1xuMTY1NDpcdFx0ZnctXHUwMDNldWNvZGVfY2FwYS5udW1fc3RhdGlvbnMgPSBJV0xfU1RBVElPTl9DT1VOVF9NQVg7XG4xNjU1Olx0XHRmdy1cdTAwM2V1Y29kZV9jYXBhLm51bV9iZWFjb25zID0gMTtcbjE2NTY6XHRcdGZ3LVx1MDAzZXVjb2RlX2NhcGEubnVtX21jYXN0X2tleV9lbnRyaWVzID0gMjtcbjE2NTc6XHRcdC8qIGR1bXAgYWxsIGZ3IG1lbW9yeSBhcmVhcyBieSBkZWZhdWx0ICovXG4xNjU4Olx0XHRmdy1cdTAwM2VkYmcuZHVtcF9tYXNrID0gMHhmZmZmZmZmZjtcbjE2NTk6XHRcbjE2NjA6XHRcdHBpZWNlcyA9IGt6YWxsb2Nfb2JqKCpwaWVjZXMpO1xuMTY2MTpcdFx0aWYgKCFwaWVjZXMpXG4xNjYyOlx0XHRcdGdvdG8gb3V0X2ZyZWVfZnc7XG4xNjYzOlx0XG4xNjY0Olx0XHRpZiAoIXVjb2RlX3JhdylcbjE2NjU6XHRcdFx0Z290byB0cnlfYWdhaW47XG4xNjY2Olx0XG4xNjY3Olx0XHRJV0xfREVCVUdfRldfSU5GTyhkcnYsIFwmIzM0O0xvYWRlZCBmaXJtd2FyZSBmaWxlICYjMzk7JXMmIzM5OyAoJXpkIGJ5dGVzKS5cXG5cJiMzNDssXG4xNjY4Olx0XHRcdFx0ICBkcnYtXHUwMDNlZmlybXdhcmVfbmFtZSwgdWNvZGVfcmF3LVx1MDAzZXNpemUpO1xuMTY2OTpcdFxuMTY3MDpcdFx0LyogTWFrZSBzdXJlIHRoYXQgd2UgZ290IGF0IGxlYXN0IHRoZSBBUEkgdmVyc2lvbiBudW1iZXIgKi9cbjE2NzE6XHRcdGlmICh1Y29kZV9yYXctXHUwMDNlc2l6ZSBcdTAwM2MgNCkge1xuMTY3MjpcdFx0XHRJV0xfRVJSKGRydiwgXCYjMzQ7RmlsZSBzaXplIHdheSB0b28gc21hbGwhXFxuXCYjMzQ7KTtcbjE2NzM6XHRcdFx0Z290byB0cnlfYWdhaW47XG4xNjc0Olx0XHR9XG4xNjc1Olx0XG4xNjc2Olx0XHQvKiBEYXRhIGZyb20gdWNvZGUgZmlsZTogIGhlYWRlciBmb2xsb3dlZCBieSB1Q29kZSBpbWFnZXMgKi9cbjE2Nzc6XHRcdHVjb2RlID0gKGNvbnN0IHN0cnVjdCBpd2xfdWNvZGVfaGVhZGVyICopdWNvZGVfcmF3LVx1MDAzZWRhdGE7XG4xNjc4Olx0XG4xNjc5Olx0XHRpZiAodWNvZGUtXHUwMDNldmVyKVxuMTY4MDpcdFx0XHRlcnIgPSBpd2xfcGFyc2VfdjFfdjJfZmlybXdhcmUoZHJ2LCB1Y29kZV9yYXcsIHBpZWNlcyk7XG4xNjgxOlx0XHRlbHNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMDE5CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCByZW5kZXJlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgdGhlIENvbmRpdGlvbmFsIExvZ2ljKioKClJpZ2h0LCBzbyBJJiMzOTttIHNlZWluZyBhIGNvbmRpdGlvbmFsIHN0YXRlbWVudCBoZXJlLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBzYXlpbmcsICYjMzQ7SWYgdGhlIHZhcmlhYmxlIGB1Y29kZV9yYXdgIGlzIE5PVCB0cnVlIChvciBtb3JlIHByZWNpc2VseSwgZmFsc3kpLCB0aGVuIGp1bXAgb3ZlciB0byBhIGxhYmVsIGNhbGxlZCBgdHJ5X2FnYWluYCYjMzQ7LiAgVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGF0IGB1Y29kZV9yYXdgIGxpa2VseSByZXByZXNlbnRzIHNvbWUgc29ydCBvZiByYXcgaW5wdXQgb3IgdmFsaWRhdGlvbiBjaGVjay4gVGhlIHN5c3RlbSBpcyBkZXNpZ25lZCB0byBoYW5kbGUgYSBzcGVjaWZpYyB0eXBlIG9mIGlucHV0IGFuZCBpZiB0aGF0IGV4cGVjdGVkIGlucHV0IGlzbiYjMzk7dCBwcmVzZW50LCBvciBkb2VzbiYjMzk7dCBwYXNzIHNvbWUgcHJlLWRlZmluZWQgY2hlY2ssIGl0IGRvZXNuJiMzOTt0IHRyeSB0byBjb250aW51ZSBwcm9jZXNzaW5nLiBJdCBpcyBkZXNpZ25lZCB0byBsb29wIGJhY2sgYW5kIHRyeSBhZ2FpbiB0byBoYW5kbGUgdGhlIGlucHV0LiBUaGlzIGlzIGltcG9ydGFudCB0byBub3RlIGFzIGl0IHNob3dzIHRoYXQgbm8gbWF0dGVyIHdoYXQsIHRoZSBjb2RlIHdpbGwgY29udGludWUgdG8gdHJ5LgoKTXkgbmV4dCBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCB3aGF0JiMzOTtzIGhhcHBlbmluZyBhdCBgdHJ5X2FnYWluYD8mIzM0Oy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGVycm9yIGhhbmRsaW5nIG9yIHRoZSByZXRyeSBtZWNoYW5pc20gdGhhdCYjMzk7cyBiZWVuIGltcGxlbWVudGVkLiBJcyBpdCBhIHNpbXBsZSBsb29wIGJhY2sgdG8gcmUtcHJvbXB0IHRoZSB1c2VyPyBJcyB0aGVyZSBhbiBpbmNyZW1lbnRpbmcgY291bnRlciBzb21ld2hlcmUgdGhhdCB3b3VsZCB0cmlnZ2VyIGEgZGlmZmVyZW50IGFjdGlvbiBhZnRlciBhIGNlcnRhaW4gbnVtYmVyIG9mIGZhaWxlZCBhdHRlbXB0cz8gSSYjMzk7bSBhbHJlYWR5IGxvb2tpbmcgZm9yIHRob3NlIGhpbnRzIHdpdGhpbiB0aGlzIHNtYWxsIHNuaXBwZXQgb2YgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4NjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTg2MDpcdFx0aWYgKHBpZWNlcy1cdTAwM2VpbnN0X2V2dGxvZ19zaXplKVxuMTg2MTpcdFx0XHRmdy1cdTAwM2VpbnN0X2V2dGxvZ19zaXplID0gKHBpZWNlcy1cdTAwM2VpbnN0X2V2dGxvZ19zaXplIC0gMTYpLzEyO1xuMTg2MjpcdFx0ZWxzZVxuMTg2MzpcdFx0XHRmdy1cdTAwM2VpbnN0X2V2dGxvZ19zaXplID1cbjE4NjQ6XHRcdFx0XHRkcnYtXHUwMDNldHJhbnMtXHUwMDNlbWFjX2NmZy1cdTAwM2ViYXNlLVx1MDAzZW1heF9ldmVudF9sb2dfc2l6ZTtcbjE4NjU6XHRcdGZ3LVx1MDAzZWluc3RfZXJybG9nX3B0ciA9IHBpZWNlcy1cdTAwM2VpbnN0X2VycmxvZ19wdHI7XG4xODY2Olx0XG4xODY3Olx0XHQvKlxuMTg2ODpcdFx0ICogZmlndXJlIG91dCB0aGUgb2Zmc2V0IG9mIGNoYWluIG5vaXNlIHJlc2V0IGFuZCBnYWluIGNvbW1hbmRzXG4xODY5Olx0XHQgKiBiYXNlIG9uIHRoZSBzaXplIG9mIHN0YW5kYXJkIHBoeSBjYWxpYnJhdGlvbiBjb21tYW5kcyB0YWJsZSBzaXplXG4xODcwOlx0XHQgKi9cbjE4NzE6XHRcdGlmIChmdy1cdTAwM2V1Y29kZV9jYXBhLnN0YW5kYXJkX3BoeV9jYWxpYnJhdGlvbl9zaXplIFx1MDAzZVxuMTg3MjpcdFx0ICAgIElXTF9NQVhfUEhZX0NBTElCUkFURV9UQkxfU0laRSlcbjE4NzM6XHRcdFx0ZnctXHUwMDNldWNvZGVfY2FwYS5zdGFuZGFyZF9waHlfY2FsaWJyYXRpb25fc2l6ZSA9XG4xODc0Olx0XHRcdFx0SVdMX01BWF9TVEFOREFSRF9QSFlfQ0FMSUJSQVRFX1RCTF9TSVpFO1xuMTg3NTpcdFxuMTg3NjpcdFx0LyogV2UgaGF2ZSBvdXIgY29waWVzIG5vdywgYWxsb3cgT1MgcmVsZWFzZSBpdHMgY29waWVzICovXG4xODc3Olx0XHRyZWxlYXNlX2Zpcm13YXJlKHVjb2RlX3Jhdyk7XG4xODc4Olx0XG4xODc5Olx0XHRpd2xfZGJnX3Rsdl9sb2FkX2JpbihkcnYtXHUwMDNldHJhbnMtXHUwMDNlZGV2LCBkcnYtXHUwMDNldHJhbnMpO1xuMTg4MDpcdFxuMTg4MTpcdFx0bXV0ZXhfbG9jayhcdTAwMjZpd2x3aWZpX29wbW9kZV90YWJsZV9tdHgpO1xuMTg4MjpcdFx0c3dpdGNoIChmdy1cdTAwM2V0eXBlKSB7XG4xODgzOlx0XHRjYXNlIElXTF9GV19EVk06XG4xODg0Olx0XHRcdG9wID0gXHUwMDI2aXdsd2lmaV9vcG1vZGVfdGFibGVbRFZNX09QX01PREVdO1xuMTg4NTpcdFx0XHRicmVhaztcbjE4ODY6XHRcdGRlZmF1bHQ6XG4xODg3Olx0XHRcdFdBUk4oMSwgXCYjMzQ7SW52YWxpZCBmdyB0eXBlICVkXFxuXCYjMzQ7LCBmdy1cdTAwM2V0eXBlKTtcbjE4ODg6XHRcdFx0ZmFsbHRocm91Z2g7XG4xODg5Olx0XHRjYXNlIElXTF9GV19NVk06XG4xODkwOlx0XHRcdG9wID0gXHUwMDI2aXdsd2lmaV9vcG1vZGVfdGFibGVbTVZNX09QX01PREVdO1xuMTg5MTpcdFx0XHRicmVhaztcbjE4OTI6XHRcdH1cbjE4OTM6XHRcbjE4OTQ6XHQjaWYgSVNfRU5BQkxFRChDT05GSUdfSVdMTUxEKVxuMTg5NTpcdFx0aWYgKGl3bF9kcnZfaXNfd2lmaTdfc3VwcG9ydGVkKGRydi1cdTAwM2V0cmFucykpXG4xODk2Olx0XHRcdG9wID0gXHUwMDI2aXdsd2lmaV9vcG1vZGVfdGFibGVbTUxEX09QX01PREVdO1xuMTg5NzpcdCNlbmRpZlxuMTg5ODpcdFxuMTg5OTpcdFx0SVdMX0lORk8oZHJ2LCBcJiMzNDtsb2FkZWQgZmlybXdhcmUgdmVyc2lvbiAlcyBvcF9tb2RlICVzXFxuXCYjMzQ7LFxuMTkwMDpcdFx0XHQgZHJ2LVx1MDAzZWZ3LmZ3X3ZlcnNpb24sIG9wLVx1MDAzZW5hbWUpO1xuMTkwMTpcdFxuMTkwMjpcdFx0LyogYWRkIHRoaXMgZGV2aWNlIHRvIHRoZSBsaXN0IG9mIGRldmljZXMgdXNpbmcgdGhpcyBvcF9tb2RlICovXG4xOTAzOlx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNmRydi1cdTAwM2VsaXN0LCBcdTAwMjZvcC1cdTAwM2VkcnYpO1xuMTkwNDpcdFxuMTkwNTpcdFx0aWYgKG9wLVx1MDAzZW9wcykge1xuMTkwNjpcdFx0XHRkcnYtXHUwMDNlb3BfbW9kZSA9IF9pd2xfb3BfbW9kZV9zdGFydChkcnYsIG9wKTtcbjE5MDc6XHRcbjE5MDg6XHRcdFx0aWYgKCFkcnYtXHUwMDNlb3BfbW9kZSkge1xuMTkwOTpcdFx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZpd2x3aWZpX29wbW9kZV90YWJsZV9tdHgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTIyMQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBJJiMzOTttIHJlYWR5IHRvIHN1bW1hcml6ZSBteSB0aG91Z2h0IHByb2Nlc3MuIEhlcmUmIzM5O3MgaG93IEkmIzM5O20gYXBwcm9hY2hpbmcgdGhpczoKCioqQW5hbHl6aW5nIHRoZSBDb2RlIFN0cnVjdHVyZTogVGhlIGB0cnlfYWdhaW5gIExhYmVsKioKCkFscmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyBteSBtZW50YWwgcGFyc2VyIGZsYWdzIGlzIHRoZSBwcmVzZW5jZSBvZiBhIGB0cnlfYWdhaW5gIGxhYmVsLiBUaGF0IGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgbWVudGFsIGNoZWNrIG9uIGl0cyBzdXJyb3VuZGluZyBjb250ZXh0LiBBIGxhYmVsIGxpa2UgdGhhdCBzdHJvbmdseSBzdWdnZXN0cyBhIGxvb3Bpbmcgb3IgcmV0cnkgbWVjaGFuaXNtIGlzIGluIHBsYXkuIEkgaW1tZWRpYXRlbHkgc3RhcnQgcGljdHVyaW5nIHBvdGVudGlhbCBzY2VuYXJpb3M6CgoqICAgKipFcnJvciBIYW5kbGluZzoqKiBJcyB0aGlzIGxhYmVsIGFzc29jaWF0ZWQgd2l0aCBhIGBnb3RvYCBzdGF0ZW1lbnQgKGlmIHRoZSBsYW5ndWFnZSBhbGxvd3MgdGhhdCwgd2hpY2ggaXMgYmVjb21pbmcgbGVzcyBhbmQgbGVzcyBjb21tb24pIG9yIHNvbWUgb3RoZXIgY29udHJvbCBmbG93IHN0cnVjdHVyZSB0aGF0IGp1bXBzIGJhY2sgdG8gdGhpcyBwb2ludD8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgc29tZSBmb3JtIG9mIGVycm9yIGhhbmRsaW5nLCBsaWtlbHkgd2l0aGluIGEgbG9vcCwgd2hlcmUgaWYgc29tZXRoaW5nIGdvZXMgd3JvbmcsIHRoZSBwcm9ncmFtIHdpbGwganVtcCBiYWNrIHRvIGB0cnlfYWdhaW5gIHRvIGF0dGVtcHQgYSBkaWZmZXJlbnQgYXBwcm9hY2gsIG9yIHBlcmhhcHMgdGhlIHNhbWUgb25lIGFnYWluLgoqICAgKipSZXRyeSBMb2dpYzoqKiBJdCBjb3VsZCBpbmRpY2F0ZSBhbiBhdHRlbXB0IHRvIHNvbHZlIGEgcHJvYmxlbSB3aXRoIHNvbWUgZm9ybSBvZiBicnV0ZSBmb3JjZSwgd2hlcmUgaWYgaXQgZmFpbHMgb24gdGhlIGZpcnN0IHBhc3MsIGl0IGNpcmNsZXMgYmFjayB0byB0cnkgYW5vdGhlciBwZXJtdXRhdGlvbi4gSSYjMzk7bSBpbWFnaW5pbmcgc2l0dWF0aW9ucyBsaWtlIGRhdGFiYXNlIGNvbm5lY3Rpb24gYXR0ZW1wdHMsIG5ldHdvcmsgY2FsbHMsIG9yIG1heWJlIGEgc2VhcmNoIGFsZ29yaXRobSB0aGF0IHVzZXMgYW4gaXRlcmF0aXZlIG1ldGhvZC4KKiAgICoqRXh0ZXJuYWwgRmFjdG9yczoqKiBJdCBjb3VsZCBpbXBseSBhIGRlcGVuZGVuY3kgb24gZXh0ZXJuYWwgc291cmNlcyB3aGVyZSBpbnRlcm1pdHRlbnQgYXZhaWxhYmlsaXR5IG9yIHRyYW5zaWVudCBlcnJvcnMgYXJlIHBvc3NpYmxlLCBhbmQgdGh1cyB3YXJyYW50aW5nIGEgcmV0cnkuCgpFc3NlbnRpYWxseSwgc2VlaW5nIGB0cnlfYWdhaW5gIHRlbGxzIG1lIHRvIGxvb2sgZm9yIGEgbG9vcCwgYSBjb25kaXRpb25hbCBzdGF0ZW1lbnQsIGFuZCBhIHBvdGVudGlhbCByZWFzb24gd2h5IGFuIGF0dGVtcHQgbWlnaHQgZmFpbCBpbiB0aGUgZmlyc3QgcGxhY2UuIFRoYXQgbGFiZWwgaXMgYSBzaWduYWwgdG8gbWUgdGhhdCBJIG5lZWQgdG8gem9vbSBpbiBvbiBhIHNwZWNpZmljIHNlZ21lbnQgb2YgdGhlIGNvZGUuIE15IGV4cGVydCB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgZmllbGQgd2lsbCBhbGxvdyBtZSB0byBxdWlja2x5IG1hcCBvdXQgdGhlIGZsb3cgb2YgdGhlIGFwcGxpY2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0cnlfYWdhaW46JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9MTYzMj1zdGF0aWMgdm9pZCBpd2xfcmVxX2Z3X2NhbGxiYWNrKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqdWNvZGVfcmF3LCB2b2lkICpjb250ZXh0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE5MjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoxOTIyOiB0cnlfYWdhaW46XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xOTIzLVx0LyogdHJ5IG5leHQsIGlmIGFueSAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTc3MwoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgQmFjayBpbnRvIGBpd2xfcmVxX2Z3X2NhbGxiYWNrYCBmcm9tIGB0cnlfYWdhaW5gKioKCkFscmlnaHQsIEkmIzM5O20gZ29pbmcgYmFjayBpbnRvIGBpd2xfcmVxX2Z3X2NhbGxiYWNrYCBhZnRlciB0aGF0IGp1bXAgZnJvbSBgdHJ5X2FnYWluYC4gSSBuZWVkIHRvIHJlLWZhbWlsaWFyaXplIG15c2VsZiB3aXRoIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluIHRoaXMgZnVuY3Rpb24mIzM5O3MgY2FsbCBwYXRoLiBJIGtub3cgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBmaXJtd2FyZSBsb2FkaW5nIGhlcmUsIGFuZCBgaXdsX3JlcV9md19jYWxsYmFja2AgaXMgY3J1Y2lhbCBmb3IgaGFuZGxpbmcgdGhlIHJlcXVlc3RzLCByaWdodD8gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGVycm9yIGhhbmRsaW5nIHBhcnRpY3VsYXJseSwgZXNwZWNpYWxseSBhcm91bmQgJiMzNDt0cnlfYWdhaW4mIzM0Oy4gV2hhdCBzcGVjaWZpYyBmYWlsdXJlIG1vZGVzIGlzIHRoaXMgbWVjaGFuaXNtIGRlc2lnbmVkIHRvIGFkZHJlc3M/IElzIHRoaXMgc29tZSBzb3J0IG9mIHJldHJ5IG1lY2hhbmlzbT8gQW5kIGlmIHNvLCB3aGF0IGFyZSB0aGUgcGFyYW1ldGVycyBhcm91bmQgdGhvc2UgcmV0cmllcz8gSSYjMzk7bSB0aGlua2luZyBJIHNob3VsZCBwcm9iYWJseSB0cmFjayBhbGwgcG9zc2libGUgc2NlbmFyaW9zLiBJIGNhbiYjMzk7dCBhZmZvcmQgdG8gbWlzcyBzb21ldGhpbmcgY3J1Y2lhbCBpbiBzdWNoIGEgbG93LWxldmVsIHJvdXRpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxOTIyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE5MjI6XHQgdHJ5X2FnYWluOlxuMTkyMzpcdFx0LyogdHJ5IG5leHQsIGlmIGFueSAqL1xuMTkyNDpcdFx0cmVsZWFzZV9maXJtd2FyZSh1Y29kZV9yYXcpO1xuMTkyNTpcdFx0aWYgKGl3bF9yZXF1ZXN0X2Zpcm13YXJlKGRydiwgZmFsc2UpKVxuMTkyNjpcdFx0XHRnb3RvIG91dF91bmJpbmQ7XG4xOTI3Olx0XHRnb3RvIGZyZWU7XG4xOTI4Olx0XG4xOTI5Olx0IG91dF9mcmVlX2Z3OlxuMTkzMDpcdFx0cmVsZWFzZV9maXJtd2FyZSh1Y29kZV9yYXcpO1xuMTkzMTpcdCBvdXRfdW5iaW5kOlxuMTkzMjpcdFx0Y29tcGxldGUoXHUwMDI2ZHJ2LVx1MDAzZXJlcXVlc3RfZmlybXdhcmVfY29tcGxldGUpO1xuMTkzMzpcdFx0ZGV2aWNlX3JlbGVhc2VfZHJpdmVyKGRydi1cdTAwM2V0cmFucy1cdTAwM2VkZXYpO1xuMTkzNDpcdFx0LyogZHJ2IGhhcyBqdXN0IGJlZW4gZnJlZWQgYnkgdGhlIHJlbGVhc2UgKi9cbjE5MzU6XHRcdGZhaWx1cmUgPSBmYWxzZTtcbjE5MzY6XHQgZnJlZTpcbjE5Mzc6XHRcdGlmIChmYWlsdXJlKVxuMTkzODpcdFx0XHRpd2xfZGVhbGxvY191Y29kZShkcnYpO1xuMTkzOTpcdFxuMTk0MDpcdFx0aWYgKHBpZWNlcykge1xuMTk0MTpcdFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHBpZWNlcy1cdTAwM2VpbWcpOyBpJiM0MzsmIzQzOylcbjE5NDI6XHRcdFx0XHRrZnJlZShwaWVjZXMtXHUwMDNlaW1nW2ldLnNlYyk7XG4xOTQzOlx0XHRcdGtmcmVlKHBpZWNlcy1cdTAwM2VkYmdfbWVtX3Rsdik7XG4xOTQ0Olx0XHRcdGtmcmVlKHBpZWNlcyk7XG4xOTQ1Olx0XHR9XG4xOTQ2Olx0fVxuMTk0NzpcdFxuMTk0ODpcdHN0cnVjdCBpd2xfZHJ2ICppd2xfZHJ2X3N0YXJ0KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxuMTk0OTpcdHtcbjE5NTA6XHRcdHN0cnVjdCBpd2xfZHJ2ICpkcnY7XG4xOTUxOlx0XHRpbnQgcmV0O1xuMTk1MjpcdFxuMTk1MzpcdFx0ZHJ2ID0ga3phbGxvY19vYmooKmRydik7XG4xOTU0Olx0XHRpZiAoIWRydikge1xuMTk1NTpcdFx0XHRyZXQgPSAtRU5PTUVNO1xuMTk1NjpcdFx0XHRnb3RvIGVycjtcbjE5NTc6XHRcdH1cbjE5NTg6XHRcbjE5NTk6XHRcdGRydi1cdTAwM2V0cmFucyA9IHRyYW5zO1xuMTk2MDpcdFx0ZHJ2LVx1MDAzZWRldiA9IHRyYW5zLVx1MDAzZWRldjtcbjE5NjE6XHRcbjE5NjI6XHRcdGluaXRfY29tcGxldGlvbihcdTAwMjZkcnYtXHUwMDNlcmVxdWVzdF9maXJtd2FyZV9jb21wbGV0ZSk7XG4xOTYzOlx0XHRJTklUX0xJU1RfSEVBRChcdTAwMjZkcnYtXHUwMDNlbGlzdCk7XG4xOTY0Olx0XG4xOTY1Olx0I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcbjE5NjY6XHRcdC8qIENyZWF0ZSB0aGUgZGV2aWNlIGRlYnVnZnMgZW50cmllcy4gKi9cbjE5Njc6XHRcdGRydi1cdTAwM2VkYmdmc19kcnYgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZGV2X25hbWUodHJhbnMtXHUwMDNlZGV2KSxcbjE5Njg6XHRcdFx0XHRcdFx0ICAgIGl3bF9kYmdmc19yb290KTtcbjE5Njk6XHRcbjE5NzA6XHRcdC8qIENyZWF0ZSB0cmFuc3BvcnQgbGF5ZXIgZGVidWdmcyBkaXIgKi9cbjE5NzE6XHRcdGRydi1cdTAwM2V0cmFucy1cdTAwM2VkYmdmc19kaXIgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoXCYjMzQ7dHJhbnNcJiMzNDssIGRydi1cdTAwM2VkYmdmc19kcnYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mjc1NAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDEyMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBpd2x3aWZpIERyaXZlciBhbmQgV29ya3F1ZXVlIENoYW5nZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSWYgdGhlIGZpcm13YXJlIGlzbiYjMzk7dCBmb3VuZCwgdGhlIGRldmljZSBnZXRzIHVuYm91bmQsIHRoZSBkcml2ZXIgaXMgcmVtb3ZlZCwgYW5kIGBpd2xfcGNpX3JlbW92ZWAgZ2V0cyBjYWxsZWQuIE1ha2VzIHNlbnNlLiBTbywgaWYgdGhlIGRyaXZlciAqZG9lc24mIzM5O3QqIGhhdmUgdGhlIGZpcm13YXJlLCBpdCYjMzk7cyBub3Qgc3RpY2tpbmcgYXJvdW5kLiBJIHdhcyBpbml0aWFsbHkgd29ycmllZCB0aGF0IGFuIGludGVycnVwdCAqZHVyaW5nKiBmaXJtd2FyZSBsb2FkaW5nIG1pZ2h0IHRyaWdnZXIgYSByZXNldCwgYnV0IHRoZSBjb2RlIGNsZXZlcmx5IGNoZWNrcyBgdHJhbnMtJmd0O29wX21vZGVgIGluIGBpd2xfdHJhbnNfcmVzdGFydF93a2AuIFNpbmNlIGB0cmFucy0mZ3Q7b3BfbW9kZWAgb25seSBnZXRzIHNldCAqYWZ0ZXIqIHRoZSBmaXJtd2FyZSBpcyBsb2FkZWQsIHRoYXQgZWFybHkgcmV0dXJuIGluIGBpd2xfdHJhbnNfcmVzdGFydF93a2AgaXMga2V5LiBJdCYjMzk7bGwgcHJldmVudCB0aGUgcmVzZXQgaWYgdGhlIGZpcm13YXJlIGlzbiYjMzk7dCBsb2FkZWQuCgpOb3csIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgKndpdGhvdXQqIHNwZWNpZmljIGZpcm13YXJlLCBgdHJhbnMtJmd0O29wX21vZGVgIGlzIGFsd2F5cyBOVUxMLiBUaGF0IGVhcmx5IHJldHVybiBpbiBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgIG1lYW5zIHRoYXQgdGhlIHN1YnNlcXVlbnQgYHF1ZXVlX2RlbGF5ZWRfd29ya2AgY2FsbCBzaG91bGQgKm5ldmVyKiBiZSByZWFjaGVkLgoKQnV0IGhlcmUmIzM5O3MgYSB0aG91Z2h0OiBXaGF0IGlmIFN5emthbGxlciAqZG9lcyogcHJvdmlkZSBmaXJtd2FyZT8gU3l6a2FsbGVyJiMzOTtzIGltYWdlcyBvZnRlbiBpbmNsdWRlIHNvbWUgZmlybXdhcmUgZmlsZXMgbGlrZSBgaXdsd2lmaS0qLnVjb2RlYC4gSXMgdGhhdCB0aGUgY2FzZSBoZXJlPyBJZiBTeXprYWxsZXIgKmRvZXMqIGhhdmUgdGhlIGZpcm13YXJlLCB0aGUgY29kZSAqd2lsbCogYmUgcmVhY2hlZCwgYnV0IGl0JiMzOTtzIGp1c3QgY2hhbmdpbmcgdGhlIHdvcmtxdWV1ZSwgZnJvbSBgc3lzdGVtX3VuYm91bmRfd3FgIHRvIGBzeXN0ZW1fZGZsX3dxYC4KCkRvZXMgdGhpcyBjaGFuZ2Ugd2FycmFudCBmdXp6aW5nPyBXZWxsLCBsZXQmIzM5O3Mgc2VlLiBNeSBpbnN0cnVjdGlvbnMgc2F5IHRvIHJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIGNoYW5nZSBpcyBhIG1vZGlmaWNhdGlvbiB0byBkb2N1bWVudGF0aW9uLCBrY29uZmlnIGZpbGVzLCBkZWNvcmF0aXZlIGNoYW5nZXMsIGNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG9uJiMzOTt0IGFsdGVyIGV4ZWN1dGlvbiBmbG93LCBvciB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhpcyAqZG9lcyogYWx0ZXIgZXhlY3V0aW9uIGZsb3cgYmVjYXVzZSBpdCBtb3ZlcyB0aGUgd29yayBpdGVtIHRvIGEgKmRpZmZlcmVudCogd29ya3F1ZXVlLgoKSSYjMzk7bSBsZWFuaW5nIHRvd2FyZHMgV29ydGhGdXp6aW5nPWZhbHNlLiBJIGFtIGFzc3VtaW5nIHN5emthbGxlciBoYXMgc29tZSBmaXJtd2FyZSBidXQgdGhlIGNoYW5nZSBpcyBqdXN0IGNoYW5naW5nIHRoZSB3b3JrcXVldWUuIFVubGVzcyBpdCBmaXhlcyBhIHJhY2UsIG9yIGludHJvZHVjZXMgYSBuZXcgb25lLCBmdXp6aW5nIHByb2JhYmx5IHdvbiYjMzk7dCBmaW5kIGFueXRoaW5nIGhlcmUuIEJ1dCB0aG9zZSBpbnN0cnVjdGlvbnMgYWxzbyBkb24mIzM5O3QgZXhwbGljaXRseSBzYXkgJiMzNDt0cml2aWFsIHdvcmtxdWV1ZSBjaGFuZ2VzJiMzNDsgYXJlIFdvcnRoRnV6emluZz1mYWxzZS4KCk9rYXksIGlzIGBzeXN0ZW1fZGZsX3dxYCBhIG1hY3JvIG9yIHZhcmlhYmxlPyBJdCBpcyBhIGdsb2JhbCB2YXJpYWJsZS4gVGhlcmUgYXJlIGFsc28gc3BlY2lmaWMgY29uZmlncyBsaWtlIGBJV0xXSUZJYC4KCkJ1dCBoZXJlJiMzOTtzIHRoZSBraWNrZXI6IGBpd2x3aWZpYCBpcyBhIHJlYWwgaGFyZHdhcmUgZHJpdmVyLiBTeXprYWxsZXImIzM5O3MgYWJpbGl0eSB0byBmdXp6IGl0IGlzICpzZXZlcmVseSogbGltaXRlZCBldmVuIHdpdGggdlBDSSBiZWNhdXNlIG9mIGFsbCB0aGUgRE1BIGFuZCBmaXJtd2FyZSBpbnRlcmFjdGlvbnMuIElmIGl0JiMzOTtzIGxvYWRlZCwgdGhlIGRyaXZlciBuZWVkcyB0byB0YWxrIHRvIHRoZSBoYXJkd2FyZSwgYW5kIHRoZSB2UENJIGlzIG5vdCBhbiAqYWN0dWFsKiBJbnRlbCBXaS1GaSBjaGlwLiBJdCYjMzk7cyBqdXN0IHByb3ZpZGluZyByYW5kb20gZGF0YS4gU28sIHRoZSBmaXJtd2FyZSB3aWxsIGVpdGhlciBmYWlsIHRvIGxvYWQsIG9yIHRoZSBkZXZpY2Ugd2lsbCBmYWlsIHRvIGluaXRpYWxpemUuIFRoZSB2UENJIHdvbiYjMzk7dCBlbXVsYXRlIHRoZSBJbnRlbCBXaS1GaSBoYXJkd2FyZS4gVGhlIGZpcm13YXJlIHNpZ25hdHVyZSBjaGVjayBvciBwYXJzaW5nIHdpbGwgZmFpbC4KClRoZSBmaXJtd2FyZSBjb21lcyBmcm9tIHRoZSBmaWxlc3lzdGVtLiBCdXQsIHRoZSBkcml2ZXIgd3JpdGVzIGl0IHRvIHRoZSBkZXZpY2UgdXNpbmcgRE1BL01NSU8gYW5kIGV4cGVjdHMgdGhlIGRldmljZSB0byBib290IGFuZCBzZXQgcmVnaXN0ZXJzLiBUaGUgdlBDSSYjMzk7cyByYW5kb20gZGF0YSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgbWFrZSB0aGUgd2hvbGUgaW5pdGlhbGl6YXRpb24gc3RhdGUgbWFjaGluZSBmYWlsLgoKV2FpdCwgaXMgYHRyYW5zLSZndDtvcF9tb2RlYCBzZXQgQkVGT1JFIHRoZSBmaXJtd2FyZSBpcyBmdWxseSBib290ZWQ/IFdlIG11c3QgY2hlY2sgYGl3bF9yZXFfZndfY2FsbGJhY2tgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTg5OSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxODk5Olx0XHRJV0xfSU5GTyhkcnYsIFwmIzM0O2xvYWRlZCBmaXJtd2FyZSB2ZXJzaW9uICVzIG9wX21vZGUgJXNcXG5cJiMzNDssXG4xOTAwOlx0XHRcdCBkcnYtXHUwMDNlZncuZndfdmVyc2lvbiwgb3AtXHUwMDNlbmFtZSk7XG4xOTAxOlx0XG4xOTAyOlx0XHQvKiBhZGQgdGhpcyBkZXZpY2UgdG8gdGhlIGxpc3Qgb2YgZGV2aWNlcyB1c2luZyB0aGlzIG9wX21vZGUgKi9cbjE5MDM6XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZHJ2LVx1MDAzZWxpc3QsIFx1MDAyNm9wLVx1MDAzZWRydik7XG4xOTA0Olx0XG4xOTA1Olx0XHRpZiAob3AtXHUwMDNlb3BzKSB7XG4xOTA2Olx0XHRcdGRydi1cdTAwM2VvcF9tb2RlID0gX2l3bF9vcF9tb2RlX3N0YXJ0KGRydiwgb3ApO1xuMTkwNzpcdFxuMTkwODpcdFx0XHRpZiAoIWRydi1cdTAwM2VvcF9tb2RlKSB7XG4xOTA5Olx0XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNml3bHdpZmlfb3Btb2RlX3RhYmxlX210eCk7XG4xOTEwOlx0XHRcdFx0Z290byBvdXRfdW5iaW5kO1xuMTkxMTpcdFx0XHR9XG4xOTEyOlx0XHR9IGVsc2Uge1xuMTkxMzpcdFx0XHRyZXF1ZXN0X21vZHVsZV9ub3dhaXQoXCYjMzQ7JXNcJiMzNDssIG9wLVx1MDAzZW5hbWUpO1xuMTkxNDpcdFx0fVxuMTkxNTpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNml3bHdpZmlfb3Btb2RlX3RhYmxlX210eCk7XG4xOTE2Olx0XG4xOTE3Olx0XHRjb21wbGV0ZShcdTAwMjZkcnYtXHUwMDNlcmVxdWVzdF9maXJtd2FyZV9jb21wbGV0ZSk7XG4xOTE4Olx0XG4xOTE5Olx0XHRmYWlsdXJlID0gZmFsc2U7XG4xOTIwOlx0XHRnb3RvIGZyZWU7XG4xOTIxOlx0XG4xOTIyOlx0IHRyeV9hZ2FpbjpcbjE5MjM6XHRcdC8qIHRyeSBuZXh0LCBpZiBhbnkgKi9cbjE5MjQ6XHRcdHJlbGVhc2VfZmlybXdhcmUodWNvZGVfcmF3KTtcbjE5MjU6XHRcdGlmIChpd2xfcmVxdWVzdF9maXJtd2FyZShkcnYsIGZhbHNlKSlcbjE5MjY6XHRcdFx0Z290byBvdXRfdW5iaW5kO1xuMTkyNzpcdFx0Z290byBmcmVlO1xuMTkyODpcdFxuMTkyOTpcdCBvdXRfZnJlZV9mdzpcbjE5MzA6XHRcdHJlbGVhc2VfZmlybXdhcmUodWNvZGVfcmF3KTtcbjE5MzE6XHQgb3V0X3VuYmluZDpcbjE5MzI6XHRcdGNvbXBsZXRlKFx1MDAyNmRydi1cdTAwM2VyZXF1ZXN0X2Zpcm13YXJlX2NvbXBsZXRlKTtcbjE5MzM6XHRcdGRldmljZV9yZWxlYXNlX2RyaXZlcihkcnYtXHUwMDNldHJhbnMtXHUwMDNlZGV2KTtcbjE5MzQ6XHRcdC8qIGRydiBoYXMganVzdCBiZWVuIGZyZWVkIGJ5IHRoZSByZWxlYXNlICovXG4xOTM1Olx0XHRmYWlsdXJlID0gZmFsc2U7XG4xOTM2Olx0IGZyZWU6XG4xOTM3Olx0XHRpZiAoZmFpbHVyZSlcbjE5Mzg6XHRcdFx0aXdsX2RlYWxsb2NfdWNvZGUoZHJ2KTtcbjE5Mzk6XHRcbjE5NDA6XHRcdGlmIChwaWVjZXMpIHtcbjE5NDE6XHRcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShwaWVjZXMtXHUwMDNlaW1nKTsgaSYjNDM7JiM0MzspXG4xOTQyOlx0XHRcdFx0a2ZyZWUocGllY2VzLVx1MDAzZWltZ1tpXS5zZWMpO1xuMTk0MzpcdFx0XHRrZnJlZShwaWVjZXMtXHUwMDNlZGJnX21lbV90bHYpO1xuMTk0NDpcdFx0XHRrZnJlZShwaWVjZXMpO1xuMTk0NTpcdFx0fVxuMTk0NjpcdH1cbjE5NDc6XHRcbjE5NDg6XHRzdHJ1Y3QgaXdsX2RydiAqaXdsX2Rydl9zdGFydChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU0NzIKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHVuZm9sZHM6CgoqKkRpZ2dpbmcgaW50byB0aGUgSVdMIERyaXZlciBTdGFydHVwKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhpcyBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIGBpd2xgLCBraWNrcyBvZmYgaXRzIG9wZXJhdGlvbmFsIG1vZGUuIFRoZSBmdW5jdGlvbiBgX2l3bF9vcF9tb2RlX3N0YXJ0YCBpcyB0aGUga2V5IGhlcmUuIEl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQ7IGl0IGNhbGxzIGEgZnVuY3Rpb24gcG9pbnRlciwgYG9wLSZndDtvcHMtJmd0O3N0YXJ0YC4gTm93LCBgb3BgIGxpa2VseSByZXByZXNlbnRzIHRoZSBvcGVyYXRpb25hbCBtb2RlLCBhbmQgdGhlIGBvcHNgIHByb2JhYmx5IGNvbnRhaW5zIGEgdGFibGUgb2YgZnVuY3Rpb24gcG9pbnRlcnMgcmVsYXRlZCB0byB0aGF0IG1vZGUuCgpGb3IgdGhlIE11bHRpLVZpcnR1YWwgTWFjaGluZSAoTVZNKSBjYXNlLCB0aGlzIHRyYW5zbGF0ZXMgdG8gdGhlIGZ1bmN0aW9uIGBpd2xfb3BfbW9kZV9tdm1fc3RhcnRgIGdldHRpbmcgaW52b2tlZC4gU28sIHRoZSBiYXNlIGZ1bmN0aW9uIHNldHMgdXAgc29tZSBjb21tb24gc3R1ZmYsIGFuZCB0aGVuLCBiYXNlZCBvbiB0aGUgc3BlY2lmaWMgb3BlcmF0aW9uYWwgbW9kZSwgd2UgaGl0IGEgbW9kZS1zcGVjaWZpYyBzdGFydCBmdW5jdGlvbi4gR290IGl0LiBUaGlzIG1ha2VzIHNlbnNlIGZyb20gYW4gYXJjaGl0ZWN0dXJhbCBwZXJzcGVjdGl2ZTogYSBtb2R1bGFyIGFwcHJvYWNoIHRoYXQgYWxsb3dzIGZvciBkaWZmZXJlbnQgd2lyZWxlc3Mgc3RhbmRhcmRzIGFuZCBjb25maWd1cmF0aW9ucyB0byBiZSBzdXBwb3J0ZWQgY2xlYW5seS4gSSB3b25kZXIgd2hhdCBleGFjdGx5IGlzIGRvbmUgd2l0aGluIHRoYXQgYGl3bF9vcF9tb2RlX212bV9zdGFydGAgZnVuY3Rpb24uLi4gbGV0JiMzOTtzIHNlZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExOTcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTE5NzpcdGl3bF9vcF9tb2RlX212bV9zdGFydChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3Qgc3RydWN0IGl3bF9yZl9jZmcgKmNmZyxcbjExOTg6XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGl3bF9mdyAqZncsIHN0cnVjdCBkZW50cnkgKmRiZ2ZzX2RpcilcbjExOTk6XHR7XG4xMjAwOlx0XHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodztcbjEyMDE6XHRcdHN0cnVjdCBpd2xfb3BfbW9kZSAqb3BfbW9kZTtcbjEyMDI6XHRcdHN0cnVjdCBpd2xfbXZtICptdm07XG4xMjAzOlx0XHRzdGF0aWMgY29uc3QgdTggbm9fcmVjbGFpbV9jbWRzW10gPSB7XG4xMjA0Olx0XHRcdFRYX0NNRCxcbjEyMDU6XHRcdH07XG4xMjA2Olx0XHR1MzIgbWF4X2FnZztcbjEyMDc6XHRcdHNpemVfdCBzY2FuX3NpemU7XG4xMjA4Olx0XHR1MzIgbWluX2JhY2tvZmY7XG4xMjA5Olx0XHRzdHJ1Y3QgaXdsX212bV9jc21lX2Nvbm5faW5mbyAqY3NtZV9jb25uX2luZm8gX19tYXliZV91bnVzZWQ7XG4xMjEwOlx0XHRpbnQgcmF0ZWNoZWNrO1xuMTIxMTpcdFx0aW50IGVycjtcbjEyMTI6XHRcbjEyMTM6XHRcdC8qXG4xMjE0Olx0XHQgKiBXZSB1c2UgSVdMX1NUQVRJT05fQ09VTlRfTUFYIHRvIGNoZWNrIHRoZSB2YWxpZGl0eSBvZiB0aGUgc3RhdGlvblxuMTIxNTpcdFx0ICogaW5kZXggYWxsIG92ZXIgdGhlIGRyaXZlciAtIGNoZWNrIHRoYXQgaXRzIHZhbHVlIGNvcnJlc3BvbmRzIHRvIHRoZVxuMTIxNjpcdFx0ICogYXJyYXkgc2l6ZS5cbjEyMTc6XHRcdCAqL1xuMTIxODpcdFx0QlVJTERfQlVHX09OKEFSUkFZX1NJWkUobXZtLVx1MDAzZWZ3X2lkX3RvX21hY19pZCkgIT1cbjEyMTk6XHRcdFx0ICAgICBJV0xfU1RBVElPTl9DT1VOVF9NQVgpO1xuMTIyMDpcdFxuMTIyMTpcdFx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4xMjIyOlx0XHQgKiAxLiBBbGxvY2F0aW5nIGFuZCBjb25maWd1cmluZyBIVyBkYXRhXG4xMjIzOlx0XHQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4xMjI0Olx0XHRodyA9IGllZWU4MDIxMV9hbGxvY19odyhzaXplb2Yoc3RydWN0IGl3bF9vcF9tb2RlKSAmIzQzO1xuMTIyNTpcdFx0XHRcdFx0c2l6ZW9mKHN0cnVjdCBpd2xfbXZtKSxcbjEyMjY6XHRcdFx0XHRcdGl3bF9tdm1faGFzX21sZF9hcGkoZncpID8gXHUwMDI2aXdsX212bV9tbGRfaHdfb3BzIDpcbjEyMjc6XHRcdFx0XHRcdFx1MDAyNml3bF9tdm1faHdfb3BzKTtcbjEyMjg6XHRcdGlmICghaHcpXG4xMjI5Olx0XHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuMTIzMDpcdFxuMTIzMTpcdFx0aWYgKHRyYW5zLVx1MDAzZW1hY19jZmctXHUwMDNlZGV2aWNlX2ZhbWlseSBcdTAwM2U9IElXTF9ERVZJQ0VfRkFNSUxZX0JaKVxuMTIzMjpcdFx0XHRtYXhfYWdnID0gNTEyO1xuMTIzMzpcdFx0ZWxzZVxuMTIzNDpcdFx0XHRtYXhfYWdnID0gSUVFRTgwMjExX01BWF9BTVBEVV9CVUZfSEU7XG4xMjM1Olx0XG4xMjM2Olx0XHRody1cdTAwM2VtYXhfcnhfYWdncmVnYXRpb25fc3ViZnJhbWVzID0gbWF4X2FnZztcbjEyMzc6XHRcbjEyMzg6XHRcdG9wX21vZGUgPSBody1cdTAwM2Vwcml2O1xuMTIzOTpcdFxuMTI0MDpcdFx0bXZtID0gSVdMX09QX01PREVfR0VUX01WTShvcF9tb2RlKTtcbjEyNDE6XHRcdG12bS1cdTAwM2VkZXYgPSB0cmFucy1cdTAwM2VkZXY7XG4xMjQyOlx0XHRtdm0tXHUwMDNldHJhbnMgPSB0cmFucztcbjEyNDM6XHRcdG12bS1cdTAwM2VjZmcgPSBjZmc7XG4xMjQ0Olx0XHRtdm0tXHUwMDNlZncgPSBmdztcbjEyNDU6XHRcdG12bS1cdTAwM2VodyA9IGh3O1xuMTI0NjpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjYxOQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGU6CgoqKkRpdmluZyBpbnRvIHRoZSBpd2xfb3BfbW9kZV9tdm1fc3RhcnQgQ2FsbCBDaGFpbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGl3bF9vcF9tb2RlX212bV9zdGFydGAgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBleGVjdXRpb24gZmxvdyBhcm91bmQgYGl3bF90cmFuc19vcF9tb2RlX2VudGVyYC4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGF0IGZ1bmN0aW9uIGNhbGwuIEkga25vdyBgaXdsX3RyYW5zX29wX21vZGVfZW50ZXJgIGlzIHByb2JhYmx5IGhhbmRsaW5nIHNvbWUgc29ydCBvZiBtb2RlIHRyYW5zaXRpb24sIGxpa2VseSByZWxhdGVkIHRvIHRoZSB3aXJlbGVzcyBkcml2ZXImIzM5O3Mgb3BlcmF0aW9uYWwgc3RhdGUuIFRvIGdldCBhIGhhbmRsZSBvbiB0aGUgaW50ZXJhY3Rpb24sIEkgbmVlZCB0byBzZWUgKndoZXJlKiBpdCYjMzk7cyBhY3R1YWxseSBpbnZva2VkICp3aXRoaW4qIGBpd2xfb3BfbW9kZV9tdm1fc3RhcnRgLiBJIGV4cGVjdCB0aGF0LCBzaW5jZSBpdCYjMzk7cyBgX2VudGVyYCwgaXQgaXMgaW52b2tlZCBiZWZvcmUgaXQgZXhpdHMgdGhlIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNDIwOlx0XHQgKiBidXQgdGhleSBhcmUgYnVnZ3kuXG4xNDIxOlx0XHQgKi9cbjE0MjI6XHRcdGlmIChJV0xfVUNPREVfTUFKT1IobXZtLVx1MDAzZWZ3LVx1MDAzZXVjb2RlX3ZlcikgXHUwMDNjPSA3NylcbjE0MjM6XHRcdFx0dHJhbnMtXHUwMDNlY29uZi5md19yZXNldF9oYW5kc2hha2UgPSBmYWxzZTtcbjE0MjQ6XHRcbjE0MjU6XHRcdHRyYW5zLVx1MDAzZWNvbmYucXVldWVfYWxsb2NfY21kX3ZlciA9XG4xNDI2Olx0XHRcdGl3bF9md19sb29rdXBfY21kX3Zlcihtdm0tXHUwMDNlZncsXG4xNDI3Olx0XHRcdFx0XHQgICAgICBXSURFX0lEKERBVEFfUEFUSF9HUk9VUCxcbjE0Mjg6XHRcdFx0XHRcdFx0ICAgICAgU0NEX1FVRVVFX0NPTkZJR19DTUQpLFxuMTQyOTpcdFx0XHRcdFx0ICAgICAgMCk7XG4xNDMwOlx0XHRtdm0tXHUwMDNlc3RhX3JlbW92ZV9yZXF1aXJlc19xdWV1ZV9yZW1vdmUgPVxuMTQzMTpcdFx0XHR0cmFucy1cdTAwM2Vjb25mLnF1ZXVlX2FsbG9jX2NtZF92ZXIgXHUwMDNlIDA7XG4xNDMyOlx0XG4xNDMzOlx0XHRtdm0tXHUwMDNlbWxkX2FwaV9pc191c2VkID0gaXdsX212bV9oYXNfbWxkX2FwaShtdm0tXHUwMDNlZncpO1xuMTQzNDpcdFxuMTQzNTpcdFx0LyogQ29uZmlndXJlIHRyYW5zcG9ydCBsYXllciAqL1xuMTQzNjpcdFx0aXdsX3RyYW5zX29wX21vZGVfZW50ZXIobXZtLVx1MDAzZXRyYW5zLCBvcF9tb2RlKTtcbjE0Mzc6XHRcbjE0Mzg6XHRcdHRyYW5zLVx1MDAzZWRiZy5kZXN0X3RsdiA9IG12bS1cdTAwM2Vmdy1cdTAwM2VkYmcuZGVzdF90bHY7XG4xNDM5Olx0XHR0cmFucy1cdTAwM2VkYmcubl9kZXN0X3JlZyA9IG12bS1cdTAwM2Vmdy1cdTAwM2VkYmcubl9kZXN0X3JlZztcbjE0NDA6XHRcbjE0NDE6XHRcdC8qIHNldCB1cCBub3RpZmljYXRpb24gd2FpdCBzdXBwb3J0ICovXG4xNDQyOlx0XHRpd2xfbm90aWZpY2F0aW9uX3dhaXRfaW5pdChcdTAwMjZtdm0tXHUwMDNlbm90aWZfd2FpdCk7XG4xNDQzOlx0XG4xNDQ0Olx0XHQvKiBJbml0IHBoeSBkYiAqL1xuMTQ0NTpcdFx0bXZtLVx1MDAzZXBoeV9kYiA9IGl3bF9waHlfZGJfaW5pdCh0cmFucyk7XG4xNDQ2Olx0XHRpZiAoIW12bS1cdTAwM2VwaHlfZGIpIHtcbjE0NDc6XHRcdFx0SVdMX0VSUihtdm0sIFwmIzM0O0Nhbm5vdCBpbml0IHBoeV9kYlxcblwmIzM0Oyk7XG4xNDQ4Olx0XHRcdGVyciA9IC1FTk9NRU07XG4xNDQ5Olx0XHRcdGdvdG8gb3V0X2ZyZWU7XG4xNDUwOlx0XHR9XG4xNDUxOlx0XG4xNDUyOlx0XHRpZiAoaXdsd2lmaV9tb2RfcGFyYW1zLm52bV9maWxlKVxuMTQ1MzpcdFx0XHRtdm0tXHUwMDNlbnZtX2ZpbGVfbmFtZSA9IGl3bHdpZmlfbW9kX3BhcmFtcy5udm1fZmlsZTtcbjE0NTQ6XHRcdGVsc2VcbjE0NTU6XHRcdFx0SVdMX0RFQlVHX0VFUFJPTShtdm0tXHUwMDNldHJhbnMtXHUwMDNlZGV2LFxuMTQ1NjpcdFx0XHRcdFx0IFwmIzM0O3dvcmtpbmcgd2l0aG91dCBleHRlcm5hbCBudm0gZmlsZVxcblwmIzM0Oyk7XG4xNDU3Olx0XG4xNDU4Olx0XHRzY2FuX3NpemUgPSBpd2xfbXZtX3NjYW5fc2l6ZShtdm0pO1xuMTQ1OTpcdFxuMTQ2MDpcdFx0bXZtLVx1MDAzZXNjYW5fY21kID0ga21hbGxvYyhzY2FuX3NpemUsIEdGUF9LRVJORUwpO1xuMTQ2MTpcdFx0aWYgKCFtdm0tXHUwMDNlc2Nhbl9jbWQpIHtcbjE0NjI6XHRcdFx0ZXJyID0gLUVOT01FTTtcbjE0NjM6XHRcdFx0Z290byBvdXRfZnJlZTtcbjE0NjQ6XHRcdH1cbjE0NjU6XHRcdG12bS1cdTAwM2VzY2FuX2NtZF9zaXplID0gc2Nhbl9zaXplO1xuMTQ2NjpcdFxuMTQ2NzpcdFx0LyogaW52YWxpZGF0ZSBpZHMgdG8gcHJldmVudCBhY2NpZGVudGFsIHJlbW92YWwgb2Ygc3RhX2lkIDAgKi9cbjE0Njg6XHRcdG12bS1cdTAwM2VhdXhfc3RhLnN0YV9pZCA9IElXTF9JTlZBTElEX1NUQTtcbjE0Njk6XHRcdG12bS1cdTAwM2VzbmlmX3N0YS5zdGFfaWQgPSBJV0xfSU5WQUxJRF9TVEE7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3NzQzCgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMzU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIENvZGUmIzM5O3MgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYGl3bF90cmFuc19vcF9tb2RlX2VudGVyYCBpcyBjYWxsZWQgd2l0aGluIGBpd2xfb3BfbW9kZV9tdm1fc3RhcnRgLiAgQ3J1Y2lhbGx5LCBgdHJhbnMtJmd0O29wX21vZGVgIGlzIG9ubHkgaW5pdGlhbGl6ZWQgKmFmdGVyKiB0aGUgZmlybXdhcmUgc3VjY2Vzc2Z1bGx5IGxvYWRzIGFuZCBpcyBwYXJzZWQuICBTaW5jZSBTeXprYWxsZXIsIGluIGl0cyBzdGFuZGFyZCBjb25maWd1cmF0aW9uLCBkb2VzbiYjMzk7dCB0eXBpY2FsbHkgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGZpcm13YXJlLCBJJiMzOTttIHByZXR0eSBjZXJ0YWluIHRoYXQgYHRyYW5zLSZndDtvcF9tb2RlYCB3aWxsIGJlIE5VTEwgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4KCkNvbnNlcXVlbnRseSwgYGl3bF90cmFuc19yZXN0YXJ0X3drYCB3aWxsIGltbWVkaWF0ZWx5IGJhaWwgb3V0IGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiB0aGUgZnVuY3Rpb246CmBgYGMKCWlmICghdHJhbnMtJmd0O29wX21vZGUpCgkJcmV0dXJuOwpgYGAKVGhpcyBtZWFucyB0aGUgY3JpdGljYWwgbGluZSBJJiMzOTttIGludGVyZXN0ZWQgaW4sIHdoaWNoIHF1ZXVlcyBhIGRlbGF5ZWQgd29yazoKYGBgYwoJcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfd3EsICZhbXA7dHJhbnMtJmd0O3Jlc3RhcnQud2ssCgkJCSAgIElXTF9UUkFOU19SRVNFVF9ERUxBWSk7CmBgYAp3aWxsICpuZXZlciogYmUgZXhlY3V0ZWQgaW4gYSB0eXBpY2FsIFN5emthbGxlciBzY2VuYXJpby4gIFRoZXJlZm9yZSwgSSYjMzk7ZCBsZWFuIHRvd2FyZHMgc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGNvZGUgcGF0aC4KCkJ1dCB3YWl0LCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrLiBJcyB0aGVyZSAqYW55KiBjaGFuY2UgU3l6a2FsbGVyIGNvdWxkIHNvbWVob3cgcHJvdmlkZSBmaXJtd2FyZT8gSXQgKmNvdWxkKiBsZXZlcmFnZSBgc3l6X21vdW50X2ltYWdlYCBvciBhIHNpbWlsYXIgY2FsbCwgYnV0IHJlYWxpc3RpY2FsbHksIGl0IHVzdWFsbHkgKmRvZXNuJiMzOTt0KiBpbmNsdWRlIHRob3NlIHNwZWNpZmljIEludGVsIFdpLUZpIGZpcm13YXJlIGZpbGVzLiAgQW5kIGV2ZW4gaWYgaXQgKmRpZCosIHRoZSB2UENJIGVtdWxhdG9yIHdvdWxkIGFsbW9zdCBjZXJ0YWlubHkgZmFpbCBhdCBvdGhlciBjcml0aWNhbCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBzdGVwcywgc3VjaCBhcyB0aG9zZSByZWxhdGVkIHRvIGBpd2xfdHJhbnNfYWN0aXZhdGVfbmljYCBhbmQgYGl3bF9wb2xsX2JpdHNgLCB3aGljaCBuZWVkIHRvIGhhcHBlbiAqYmVmb3JlKiB0aGUgZHJpdmVyIGV2ZW4gYXR0ZW1wdHMgZmlybXdhcmUgbG9hZGluZy4KCkhvbGQgb24sIEkgc2VlIGEgcG90ZW50aWFsIGlzc3VlOiBgaXdsX3BjaV9nZW4xXzJfcHJvYmVgIGNhbGxzIGBpd2xfdHJhbnNfYWN0aXZhdGVfbmljYCAqYmVmb3JlKiBmaXJtd2FyZSBsb2FkaW5nLiBJIG5lZWQgdG8gcmUtZXZhbHVhdGUgYGl3bF9wY2lfZ2VuMV8yX3Byb2JlYCB0byBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQyNTgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDI1ODpcdFx0LypcbjQyNTk6XHRcdCAqIExldCYjMzk7cyB0cnkgdG8gZ3JhYiBOSUMgYWNjZXNzIGVhcmx5IGhlcmUuIFNvbWV0aW1lcywgTklDcyBtYXlcbjQyNjA6XHRcdCAqIGZhaWwgdG8gaW5pdGlhbGl6ZSwgYW5kIGlmIHRoYXQgaGFwcGVucyBpdCYjMzk7cyBiZXR0ZXIgaWYgd2Ugc2VlXG40MjYxOlx0XHQgKiBpc3N1ZXMgZWFybHkgb24gKGFuZCBjYW4gcmVwcm9iZSwgcGVyIHRoZSBsb2dpYyBpbnNpZGUpLCB0aGFuXG40MjYyOlx0XHQgKiBmaXJzdCB0cnlpbmcgdG8gbG9hZCB0aGUgZmlybXdhcmUgZXRjLiBhbmQgcG90ZW50aWFsbHkgb25seVxuNDI2MzpcdFx0ICogZGV0ZWN0aW5nIGFueSBwcm9ibGVtcyB3aGVuIHRoZSBmaXJzdCBpbnRlcmZhY2UgaXMgYnJvdWdodCB1cC5cbjQyNjQ6XHRcdCAqL1xuNDI2NTpcdFx0cmV0ID0gaXdsX3BjaWVfcHJlcGFyZV9jYXJkX2h3KGl3bF90cmFucyk7XG40MjY2Olx0XHRpZiAoIXJldCkge1xuNDI2NzpcdFx0XHRyZXQgPSBpd2xfdHJhbnNfYWN0aXZhdGVfbmljKGl3bF90cmFucyk7XG40MjY4Olx0XHRcdGlmIChyZXQpXG40MjY5Olx0XHRcdFx0Z290byBvdXRfZnJlZV90cmFucztcbjQyNzA6XHRcdFx0aWYgKGl3bF90cmFuc19ncmFiX25pY19hY2Nlc3MoaXdsX3RyYW5zKSkge1xuNDI3MTpcdFx0XHRcdGdldF9jcmZfaWQoaXdsX3RyYW5zLCBcdTAwMjZpbmZvKTtcbjQyNzI6XHRcdFx0XHQvKiBhbGwgZ29vZCAqL1xuNDI3MzpcdFx0XHRcdGl3bF90cmFuc19yZWxlYXNlX25pY19hY2Nlc3MoaXdsX3RyYW5zKTtcbjQyNzQ6XHRcdFx0fSBlbHNlIHtcbjQyNzU6XHRcdFx0XHRyZXQgPSAtRUlPO1xuNDI3NjpcdFx0XHRcdGdvdG8gb3V0X2ZyZWVfdHJhbnM7XG40Mjc3Olx0XHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg5NTAKCQkJCQkJCW91dHB1dDogMTU5CgkJCQkJCQl0aG91Z2h0czogNDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZz1mYWxzZTogVW5yZWFjaGFibGUgQ29kZSBpbiBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKgoKT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gTXkgYW5hbHlzaXMgaW5kaWNhdGVzIHRoYXQgdGhlIGNvZGUgbW9kaWZpY2F0aW9uLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgYHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fdW5ib3VuZF93cSwgLi4uKWAgdG8gYHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX3dxLCAuLi4pYCB3aXRoaW4gdGhlIEludGVsIFdpLUZpIGRyaXZlciwgaXMgKmZ1bmN0aW9uYWxseSogYSBjaGFuZ2UuIEhvd2V2ZXIsIGl0JiMzOTtzIHVsdGltYXRlbHkgdW5yZWFjaGFibGUgaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCBhbmQgdGh1cyBub3Qgd29ydGggZnV6emluZyBmb3Igb3VyIHB1cnBvc2VzLgoKVGhlIGNyaXRpY2FsIHBhdGggYmVnaW5zIHdpdGggYGl3bF90cmFuc19hY3RpdmF0ZV9uaWNgLCB3aGljaCBjYWxscyBgaXdsX3BvbGxfYml0c2AuIFRoaXMgZnVuY3Rpb24sIGNydWNpYWwgaGVyZSwgaXMgZGVzaWduZWQgdG8gd2FpdCBmb3IgYSBzcGVjaWZpYyBiaXQgd2l0aGluIGEgcmVnaXN0ZXIgdG8gYmUgc2V0LiBUaGUgaXNzdWUgaXMgdGhhdCB0aGUgdmlydHVhbGl6ZWQgUENJIGVudmlyb25tZW50IHRoYXQgU3l6a2FsbGVyIHByZXNlbnRzIGNhbiByZXR1cm4gcmFuZG9tIGRhdGEsIHdoaWNoIG1heSByYW5kb21seSBjYXVzZSB0aGlzIGZ1bmN0aW9uIHRvIHN1Y2NlZWQgb3IgZmFpbC4gSWYgaXQgc3VjY2VlZHMsIHRoZSBjb2RlIGNvbnRpbnVlcyB0byBgaXdsX3RyYW5zX2dyYWJfbmljX2FjY2Vzc2AsIHJlYWRzIGBDU1JfSFdfUkZfSURgLCBjYWxscyBgaXdsX3BjaV9maW5kX2Rldl9pbmZvYCwgYW5kIGZpbmFsbHkgYGl3bF9kcnZfc3RhcnRgLCB3aGljaCByZXF1ZXN0cyBmaXJtd2FyZS4gSWYgdGhlIGZpcm13YXJlIGlzbiYjMzk7dCBsb2FkZWQsIG9yIGZhaWxzIHRvIGJlIHByb3Blcmx5IGluaXRpYWxpemVkLCB0aGUgZHJpdmVyIHdpbGwgdW5iaW5kLgoKVGhlIG1vZGlmaWNhdGlvbiBvY2N1cnMgb25seSBpZiBgdHJhbnMtJmd0O29wX21vZGVgIGlzIHNldC4gR2l2ZW4gdGhlIG5lZWQgZm9yIEludGVsIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGJlIHByb3Blcmx5IGxvYWRlZCBhbmQgcGFyc2VkLCBhbmQgdGhlIHN1Y2Nlc3NmdWwgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHNwZWNpZmljIGhhcmR3YXJlIHN0YXRlIG1hY2hpbmUsIHRoaXMgY29kZSBwYXRoIGlzIHNpbXBseSBpbmFjY2Vzc2libGUgaW4gYSB2aXJ0dWFsaXplZCBTeXprYWxsZXIgZW52aXJvbm1lbnQuIFRoZSBjb21wbGV4aXR5IG9mIGVtdWxhdGluZyB0aGUgZmlybXdhcmUgbG9hZGluZyBhbmQgcGFyc2luZywgY29tYmluZWQgd2l0aCB0aGUgc3VjY2Vzc2Z1bCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiByZXF1aXJlZCB0byByZWFjaCB0aGUgY29kZSBwcmV2ZW50cyB1cyBmcm9tIGZ1enppbmcgaXQuIFRoZXJlZm9yZSwgYWNjb3JkaW5nIHRvIHRoZSBndWlkZWxpbmVzLCBJIGNhbiBjb25maWRlbnRseSByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgd29ya3F1ZXVlIHVzZWQgaW4gYGl3bF90cmFuc19yZXN0YXJ0X3drYCBmcm9tIGBzeXN0ZW1fdW5ib3VuZF93cWAgdG8gYHN5c3RlbV9kZmxfd3FgLiBIb3dldmVyLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgZWFybHkgaWYgYHRyYW5zLVx1MDAzZW9wX21vZGVgIGlzIG5vdCBzZXQuIGB0cmFucy1cdTAwM2VvcF9tb2RlYCBpcyBvbmx5IGluaXRpYWxpemVkIGFmdGVyIHRoZSBwcm9wcmlldGFyeSBJbnRlbCBXaS1GaSBmaXJtd2FyZSBpcyBzdWNjZXNzZnVsbHkgbG9hZGVkIGZyb20gdGhlIGZpbGVzeXN0ZW0gYW5kIHBhcnNlZCBieSB0aGUgZHJpdmVyLiBJbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHdpdGhvdXQgdGhlIHNwZWNpZmljIGZpcm13YXJlIGZpbGVzIGFuZCB3aXRob3V0IGEgcmVhbCBoYXJkd2FyZSBkZXZpY2UgKG9yIGEgaGlnaGx5IHNwZWNpYWxpemVkIGVtdWxhdG9yKSwgdGhlIGZpcm13YXJlIGxvYWRpbmcgd2lsbCBmYWlsLCB0aGUgZHJpdmVyIHdpbGwgdW5iaW5kLCBhbmQgdGhpcyBjb2RlIHBhdGggd2lsbCByZW1haW4gY29tcGxldGVseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIHdvcmtxdWV1ZSB1c2VkIGluIGBpd2xfdHJhbnNfcmVzdGFydF93a2AgZnJvbSBgc3lzdGVtX3VuYm91bmRfd3FgIHRvIGBzeXN0ZW1fZGZsX3dxYC4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGVhcmx5IGlmIGB0cmFucy1cdTAwM2VvcF9tb2RlYCBpcyBub3Qgc2V0LiBgdHJhbnMtXHUwMDNlb3BfbW9kZWAgaXMgb25seSBpbml0aWFsaXplZCBhZnRlciB0aGUgcHJvcHJpZXRhcnkgSW50ZWwgV2ktRmkgZmlybXdhcmUgaXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIGFuZCBwYXJzZWQgYnkgdGhlIGRyaXZlci4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRob3V0IHRoZSBzcGVjaWZpYyBmaXJtd2FyZSBmaWxlcyBhbmQgd2l0aG91dCBhIHJlYWwgaGFyZHdhcmUgZGV2aWNlIChvciBhIGhpZ2hseSBzcGVjaWFsaXplZCBlbXVsYXRvciksIHRoZSBmaXJtd2FyZSBsb2FkaW5nIHdpbGwgZmFpbCwgdGhlIGRyaXZlciB3aWxsIHVuYmluZCwgYW5kIHRoaXMgY29kZSBwYXRoIHdpbGwgcmVtYWluIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjI6MjUuMDQ4MDM3MjVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjgxNzQ4NDY2MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIHdvcmtxdWV1ZSB1c2VkIGluIGBpd2xfdHJhbnNfcmVzdGFydF93a2AgZnJvbSBgc3lzdGVtX3VuYm91bmRfd3FgIHRvIGBzeXN0ZW1fZGZsX3dxYC4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGVhcmx5IGlmIGB0cmFucy1cXHUwMDNlb3BfbW9kZWAgaXMgbm90IHNldC4gYHRyYW5zLVxcdTAwM2VvcF9tb2RlYCBpcyBvbmx5IGluaXRpYWxpemVkIGFmdGVyIHRoZSBwcm9wcmlldGFyeSBJbnRlbCBXaS1GaSBmaXJtd2FyZSBpcyBzdWNjZXNzZnVsbHkgbG9hZGVkIGZyb20gdGhlIGZpbGVzeXN0ZW0gYW5kIHBhcnNlZCBieSB0aGUgZHJpdmVyLiBJbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHdpdGhvdXQgdGhlIHNwZWNpZmljIGZpcm13YXJlIGZpbGVzIGFuZCB3aXRob3V0IGEgcmVhbCBoYXJkd2FyZSBkZXZpY2UgKG9yIGEgaGlnaGx5IHNwZWNpYWxpemVkIGVtdWxhdG9yKSwgdGhlIGZpcm13YXJlIGxvYWRpbmcgd2lsbCBmYWlsLCB0aGUgZHJpdmVyIHdpbGwgdW5iaW5kLCBhbmQgdGhpcyBjb2RlIHBhdGggd2lsbCByZW1haW4gY29tcGxldGVseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjIyOjI1LjA0ODA0NjIzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzM3MzM5NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhZmY4ZTQyOTdiMTQ4ZTg4YTFiOWNkODlkZjRlMTgzYTVhYmE5ZWMwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDcgMTg6MjI6MjMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmNcXG5pbmRleCA3M2FhZTExMjUwNDIxZi4uOTM0M2I2MjMwZTFhNDAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmNcXG5AQCAtMjM2LDcgKzIzNiw3IEBAIHN0YXRpYyB2b2lkIGl3bF90cmFuc19yZXN0YXJ0X3drKHN0cnVjdCB3b3JrX3N0cnVjdCAqd2spXFxuIFxcdG1vZGUgPSBpd2xfdHJhbnNfZGV0ZXJtaW5lX3Jlc3RhcnRfbW9kZSh0cmFucyk7XFxuIFxcdGlmIChtb2RlID09IElXTF9SRVNFVF9NT0RFX0JBQ0tPRkYpIHtcXG4gXFx0XFx0SVdMX0VSUih0cmFucywgXFxcIlRvbyBtYW55IGRldmljZSBlcnJvcnMgLSBkZWxheSBuZXh0IHJlc2V0XFxcXG5cXFwiKTtcXG4tXFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV91bmJvdW5kX3dxLCBcXHUwMDI2dHJhbnMtXFx1MDAzZXJlc3RhcnQud2ssXFxuK1xcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX3dxLCBcXHUwMDI2dHJhbnMtXFx1MDAzZXJlc3RhcnQud2ssXFxuIFxcdFxcdFxcdFxcdCAgIElXTF9UUkFOU19SRVNFVF9ERUxBWSk7XFxuIFxcdFxcdHJldHVybjtcXG4gXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyMjoyNS43MjMwOTc5NTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyNzQ5OTc3MjY4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgd29ya3F1ZXVlIHVzZWQgaW4gYGl3bF90cmFuc19yZXN0YXJ0X3drYCBmcm9tIGBzeXN0ZW1fdW5ib3VuZF93cWAgdG8gYHN5c3RlbV9kZmxfd3FgLiBIb3dldmVyLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgZWFybHkgaWYgYHRyYW5zLVxcdTAwM2VvcF9tb2RlYCBpcyBub3Qgc2V0LiBgdHJhbnMtXFx1MDAzZW9wX21vZGVgIGlzIG9ubHkgaW5pdGlhbGl6ZWQgYWZ0ZXIgdGhlIHByb3ByaWV0YXJ5IEludGVsIFdpLUZpIGZpcm13YXJlIGlzIHN1Y2Nlc3NmdWxseSBsb2FkZWQgZnJvbSB0aGUgZmlsZXN5c3RlbSBhbmQgcGFyc2VkIGJ5IHRoZSBkcml2ZXIuIEluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCB0aGUgc3BlY2lmaWMgZmlybXdhcmUgZmlsZXMgYW5kIHdpdGhvdXQgYSByZWFsIGhhcmR3YXJlIGRldmljZSAob3IgYSBoaWdobHkgc3BlY2lhbGl6ZWQgZW11bGF0b3IpLCB0aGUgZmlybXdhcmUgbG9hZGluZyB3aWxsIGZhaWwsIHRoZSBkcml2ZXIgd2lsbCB1bmJpbmQsIGFuZCB0aGlzIGNvZGUgcGF0aCB3aWxsIHJlbWFpbiBjb21wbGV0ZWx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhZmY4ZTQyOTdiMTQ4ZTg4YTFiOWNkODlkZjRlMTgzYTVhYmE5ZWMwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgNyAxODoyMjoyMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jXG5pbmRleCA3M2FhZTExMjUwNDIxZi4uOTM0M2I2MjMwZTFhNDAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jXG5AQCAtMjM2LDcgKzIzNiw3IEBAIHN0YXRpYyB2b2lkIGl3bF90cmFuc19yZXN0YXJ0X3drKHN0cnVjdCB3b3JrX3N0cnVjdCAqd2spXG4gXHRtb2RlID0gaXdsX3RyYW5zX2RldGVybWluZV9yZXN0YXJ0X21vZGUodHJhbnMpO1xuIFx0aWYgKG1vZGUgPT0gSVdMX1JFU0VUX01PREVfQkFDS09GRikge1xuIFx0XHRJV0xfRVJSKHRyYW5zLCBcIlRvbyBtYW55IGRldmljZSBlcnJvcnMgLSBkZWxheSBuZXh0IHJlc2V0XFxuXCIpO1xuLVx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3VuYm91bmRfd3EsIFx1MDAyNnRyYW5zLVx1MDAzZXJlc3RhcnQud2ssXG4rXHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX3dxLCBcdTAwMjZ0cmFucy1cdTAwM2VyZXN0YXJ0LndrLFxuIFx0XHRcdFx0ICAgSVdMX1RSQU5TX1JFU0VUX0RFTEFZKTtcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjI6MjUuNzIzMTAxMjI0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjAyNTg3OTQ2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQncyB0d2Vha2luZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuY2AuIEl0J3MgYSBzaW1wbGUgb25lLCByZWFsbHk6IGp1c3Qgc3dhcHBpbmcgb3V0IHRoZSB3b3JrcXVldWUgaW4gYGl3bF90cmFuc19yZXN0YXJ0X3drYC4gSXQncyBnb2luZyBmcm9tIGBzeXN0ZW1fdW5ib3VuZF93cWAgdG8gYHN5c3RlbV9kZmxfd3FgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiSXMgdGhpcyBldmVuIHdvcnRoIGJvdGhlcmluZyB3aXRoIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlP1wiXG5cbmBpd2x3aWZpYCDigJMgdGhhdCdzIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIHJpZ2h0PyBTbywgZmlyc3QgcXVlc3Rpb24gaXMsIGNhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIHRoaW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEludGVsIHdpcmVsZXNzIHVzdWFsbHkgZGVtYW5kcyBzcGVjaWZpYyBQQ0kgaGFyZHdhcmUuIEZ1enppbmcgUENJIGRyaXZlcnMgaXMgYSB3aG9sZSBvdGhlciBiYWxsZ2FtZSwgbm9ybWFsbHkgcmVxdWlyaW5nIGVtdWxhdGlvbiB0byBnZXQgYW55d2hlcmUuIFdpdGhvdXQgZW11bGF0aW9uLCB0aGV5J3JlIHR5cGljYWxseSBhIGZ1enppbmcgZGVhZC1lbmQuXG5cbkhhbmcgb27igKZgaXdsd2lmaWAgKmlzKiBhIFBDSSBkcml2ZXIsIGlzbid0IGl0PyBPa2F5LCBkb2VzIHN5emthbGxlciBldmVuIGRlYWwgd2l0aCB0aGlzPyBMYXN0IEkgY2hlY2tlZCwgc3l6a2FsbGVyIGNvdWxkIGZ1enogUENJIGRyaXZlcnMgdXNpbmcgdlBDSSBvciBzb21lIG90aGVyIHNpbWlsYXIgdHJpY2tlcnksIGJ1dCBpdCdzIHVzdWFsbHkgcHJldHR5IGxpbWl0ZWQgaW4gaXRzIGNvdmVyYWdlLlxuXG5CdXQsIHdhaXTigKYgdGhlIHBhdGNoICppdHNlbGYqIGlzIGp1c3QgY2hhbmdpbmcgdGhlIHdvcmtxdWV1ZS4gVGhhdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgZGlmZmVyZW5jZSBpbiBob3cgYW5kIHdoZXJlIHRoaXMgcmVzdGFydCB3b3JrIGdldHMgc2NoZWR1bGVkLiBTbywgbm93IHRoZSBxdWVzdGlvbiBib2lscyBkb3duIHRvOiBpcyB0aGlzIG5ldyB3b3JrcXVldWUgYXNzaWdubWVudCBsaWtlbHkgdG8gZXhwb3NlIGFueSBpbnRlcmVzdGluZyBuZXcgZnV6emluZyBwYXRocyBvciwgaGVhdmVuIGZvcmJpZCwgaW50cm9kdWNlIGFueSBuZXcgYnVncz9cblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIGBpd2xfdHJhbnNfcmVzdGFydF93a2AgYW5kIHNlZSB3aGF0IGl0IGRvZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MDQsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyMjozMS43NDg5ODQzNDVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyODI3ODMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF90cmFuc19yZXN0YXJ0X3drXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM9MTI3PWl3bF90cmFuc19kZXRlcm1pbmVfcmVzdGFydF9tb2RlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0yMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzoyMDI6c3RhdGljIHZvaWQgaXdsX3RyYW5zX3Jlc3RhcnRfd2soc3RydWN0IHdvcmtfc3RydWN0ICp3aylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTIwMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jPTI2Nz1zdHJ1Y3QgaXdsX3RyYW5zICppd2xfdHJhbnNfYWxsb2ModW5zaWduZWQgaW50IHByaXZfc2l6ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMjg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6Mjg5OlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZ0cmFucy1cXHUwMDNlcmVzdGFydC53aywgaXdsX3RyYW5zX3Jlc3RhcnRfd2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMjkwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYz02MTQ9dm9pZCBpd2xfdHJhbnNfc3RvcF9kZXZpY2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTYxOC1cXHQvKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6NjE5OlxcdCAqIFNlZSBhbHNvIHRoZSBjb21tZW50IGluIGl3bF90cmFuc19yZXN0YXJ0X3drKCkuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy02MjAtXFx0ICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTYyMS1cXHQgKiBXaGVuIHRoZSBvcG1vZGUgc3RvcHMgdGhlIGRldmljZSB3aGlsZSBhIHJlc2V0IGlzIHBlbmRpbmcsIHRoZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6NjIyOlxcdCAqIHdvcmtlciAoaXdsX3RyYW5zX3Jlc3RhcnRfd2spIG1pZ2h0IG5vdCBoYXZlIHJ1biB5ZXQgb3IsIG1vcmVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTYyMy1cXHQgKiBsaWtlbHksIHdpbGwgYmUgYmxvY2tlZCBvbiB0aGUgb3Btb2RlIGxvY2suIER1ZSB0byB0aGUgbG9ja2luZyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjI6MzEuOTIxODI2MTM2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA0NzgzODcyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBXaUZpIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGl3bF90cmFuc19yZXN0YXJ0X3drYCwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBmb3IgZnV6emluZywgc3BlY2lmaWNhbGx5IHdpdGggc3l6a2FsbGVyLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGUgYGl3bHdpZmlgIGRyaXZlciBpdHNlbGYgaXMgZXZlbiBhIHRhcmdldCBmb3Igc3l6a2FsbGVyLiBJIGtub3cgc3l6a2FsbGVyIGRvZXNuJ3QgaGF2ZSBjdXN0b20gaGFyZHdhcmUgZW11bGF0aW9uIGZvciBgaXdsd2lmaWAgc3BlY2lmaWNhbGx5LCBidXQgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMgY291bGQgc3RpbGwgdHJpZ2dlciBzb21lIGluaXRpYWxpemF0aW9uIG9yIGJhc2ljIGNvZGUgcGF0aHMgaW4gdGhlIGRyaXZlci4gSG93ZXZlciwgdGhpcyBwYXRjaCBpcyBhIHJlbGF0aXZlbHkgdGFyZ2V0ZWQgY2hhbmdlLCBqdXN0IGFsdGVyaW5nIHRoZSB3b3JrcXVldWUgaXQgdXNlcy4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3IgYnVpbGQgZmxhZ3MgdGhhdCBhcmUgaW1wb3J0YW50IGluIHRoaXMgY29udGV4dC4gSSBzdXNwZWN0IHRoZSBrZXkgaXMgaW4gdGhvc2UgY29uZmlncy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEzOSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjIyOjM1Ljk2OTY2NzE0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMTk2MTU4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVdMV0lGSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6Mjpjb25maWcgSVdMV0lGSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIE5leHQgR2VuIEFHTiAtIFdpcmVsZXNzLU4vQWR2YW5jZWQtTi9VbHRpbWF0ZS1OIChpd2x3aWZpKSBcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9NDc9aWYgSVdMV0lGSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy00OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NDk6Y29uZmlnIElXTFdJRklfS1VOSVRfVEVTVFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTAtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NTg6Y29uZmlnIElXTFdJRklfTEVEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01OS1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9ODQ9Y29uZmlnIElXTE1MRFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk0LSMgZG9uJ3QgY2FsbCBpdCBfTU9EVUxFIC0tIHdpbGwgY29uZnVzZSBLY29uZmlnL2ZpeGRlcC8uLi5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6OTU6Y29uZmlnIElXTFdJRklfT1BNT0RFX01PRFVMQVJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTYtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTEwNT1tZW51IFxcXCJEZWJ1Z2dpbmcgT3B0aW9uc1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMDc6Y29uZmlnIElXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA4LVxcdGJvb2wgXFxcIkVuYWJsZSBmdWxsIGRlYnVnZ2luZyBvdXRwdXQgaW4gdGhlIGl3bHdpZmkgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMxOmNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMyLVxcdGJvb2wgXFxcIml3bHdpZmkgZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTM5OmNvbmZpZyBJV0xXSUZJX0RFVklDRV9UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTE0MC1cXHRib29sIFxcXCJpd2x3aWZpIGRldmljZSBhY2Nlc3MgdHJhY2luZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjI6MzYuMTgxNjM2MzA2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQxMjY4NDE5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBc3Nlc3NpbmcgdGhlIEZ1enphYmlsaXR5IG9mIGEgQ29uZmlndXJhdGlvbiBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyB0aGUgY29uZmlnIGluIHF1ZXN0aW9uIGlzIGBJV0xXSUZJYC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBxdWVzdGlvbiBpZiBmdXp6aW5nIGl0IGlzIGV2ZW4gd29ydGh3aGlsZS4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHdvcmtxdWV1ZSBtb2RpZmljYXRpb24sIHdoaWNoIGlzIGdvb2QuIEJ1dCBpdCdzIGJ1cmllZCBpbiBhIGhhcmR3YXJlIGRyaXZlci4gQW5kIGhhcmR3YXJlIGRyaXZlcnMgYXJlIG5vdG9yaW91c2x5IGRpZmZpY3VsdCB0byBlZmZlY3RpdmVseSBmdXp6IHdpdGhvdXQgYWNjZXNzIHRvIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGEgcm9idXN0IGVtdWxhdGlvbiBlbnZpcm9ubWVudCwgYW5kIHRoZXNlIGFyZSBoYXJkIHRvIHNldCB1cC5cblxuSG9sZCBvbi4uLiBJJ20gcHJldHR5IHN1cmUgc3l6a2FsbGVyIGNhbiBmdXp6IFBDSSBkZXZpY2VzLCBjYW4ndCBpdD8gVGhhdCdzIGEgZ2FtZSBjaGFuZ2VyISBUaGlzIG1lYW5zIHRoYXQgaGFyZHdhcmUgYWNjZXNzIGlzbid0IG5lY2Vzc2FyaWx5IGEgaGFyZCBibG9ja2VyLlxuXG5BbHJpZ2h0LCBsZXQncyB6b29tIG91dCBhIGJpdC4gQmVmb3JlIGdldHRpbmcgdG9vIGRlZXAgaW50byB0aGlzIHNwZWNpZmljIGNvbmZpZywgbGV0IG1lIGp1c3QgcXVpY2tseSBzY2FuIGZvciBhbnkgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IHByb3ZpZGUgYWRkaXRpb25hbCBjb250ZXh0LiBObyBwb2ludCBpbiBtYWtpbmcgYSBkZWNpc2lvbiBiYXNlZCBvbiBvbmUgZGF0YSBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA4NywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjIyOjQwLjU5NDMyMzg0OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTg2MzA3MTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSVdMV0lGSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEyNjUgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoyOmNvbmZpZyBJV0xXSUZJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkludGVsIFdpcmVsZXNzIFdpRmkgTmV4dCBHZW4gQUdOIC0gV2lyZWxlc3MtTi9BZHZhbmNlZC1OL1VsdGltYXRlLU4gKGl3bHdpZmkpIFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy00Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NDc6aWYgSVdMV0lGSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy00OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NDk6Y29uZmlnIElXTFdJRklfS1VOSVRfVEVTVFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTAtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NTg6Y29uZmlnIElXTFdJRklfTEVEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01OS1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9ODQ9Y29uZmlnIElXTE1MRFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk0LSMgZG9uJ3QgY2FsbCBpdCBfTU9EVUxFIC0tIHdpbGwgY29uZnVzZSBLY29uZmlnL2ZpeGRlcC8uLi5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6OTU6Y29uZmlnIElXTFdJRklfT1BNT0RFX01PRFVMQVJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTYtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk5LVxcdGRlZmF1bHQgeSBpZiBJV0xNTEQ9bVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMDA6XFx0ZGVmYXVsdCB5IGlmIElXTFdJRklfS1VOSVRfVEVTVFM9bVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTA1PW1lbnUgXFxcIkRlYnVnZ2luZyBPcHRpb25zXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEwNzpjb25maWcgSVdMV0lGSV9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDgtXFx0Ym9vbCBcXFwiRW5hYmxlIGZ1bGwgZGVidWdnaW5nIG91dHB1dCBpbiB0aGUgaXdsd2lmaSBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzE6Y29uZmlnIElXTFdJRklfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzItXFx0Ym9vbCBcXFwiaXdsd2lmaSBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzk6Y29uZmlnIElXTFdJRklfREVWSUNFX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTQwLVxcdGJvb2wgXFxcIml3bHdpZmkgZGV2aWNlIGFjY2VzcyB0cmFjaW5nXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS0yLSMgY29tbW9uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTozOm9iai0kKENPTkZJR19JV0xXSUZJKVxcdCs9IGl3bHdpZmkub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUtNC1pd2x3aWZpLW9ianNcXHRcXHQrPSBpd2wtaW8ub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZT00MD1pd2x3aWZpLSQoQ09ORklHX0VGSSlcXHQrPSBmdy91ZWZpLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjQxOml3bHdpZmktJChDT05GSUdfSVdMV0lGSV9ERUJVR0ZTKSArPSBmdy9kZWJ1Z2ZzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU9NDM9aXdsd2lmaS1vYmpzICs9ICQoaXdsd2lmaS1tKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUtNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTo0NTppd2x3aWZpLSQoQ09ORklHX0lXTFdJRklfREVWSUNFX1RSQUNJTkcpICs9IGl3bC1kZXZ0cmFjZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS00Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU9NTI9b2JqLSQoQ09ORklHX0lXTE1MRClcXHQrPSBtbGQvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS01My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjU0Om9iai0kKENPTkZJR19JV0xXSUZJX0tVTklUX1RFU1RTKSArPSB0ZXN0cy9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTU1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9jZmcvYnouYz03Mj1jb25zdCBzdHJ1Y3QgaXdsX21hY19jZmcgaXdsX2J6X21hY19jZmcgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2NmZy9iei5jLTgyLX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9jZmcvYnouYzo4MzpFWFBPUlRfU1lNQk9MX0lGX0lXTFdJRklfS1VOSVQoaXdsX2J6X21hY19jZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvY2ZnL2J6LmMtODQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9NYWtlZmlsZT05PWl3bGR2bS1vYmpzXFx0XFx0Kz0gcnhvbi5vIGRldmljZXMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL01ha2VmaWxlLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL01ha2VmaWxlOjExOml3bGR2bS0kKENPTkZJR19JV0xXSUZJX0xFRFMpICs9IGxlZC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vTWFrZWZpbGU6MTI6aXdsZHZtLSQoQ09ORklHX0lXTFdJRklfREVCVUdGUykgKz0gZGVidWdmcy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vTWFrZWZpbGUtMTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaD0yMjU9c3RhdGljIGlubGluZSBib29sIGl3bF9hZHZhbmNlZF9idF9jb2V4aXN0KHN0cnVjdCBpd2xfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oLTIzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaDoyMzE6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmgtMjMyLWNvbnN0IGNoYXIgKml3bF9nZXRfdHhfZmFpbF9yZWFzb24odTMyIHN0YXR1cyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaD0zMzU9aW50IGl3bF9hbGl2ZV9zdGFydChzdHJ1Y3QgaXdsX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oLTMzNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaDozMzc6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmgtMzM4LXZvaWQgaXdsX3ByaW50X3J4X2NvbmZpZ19jbWQoc3RydWN0IGl3bF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmg9NDA3PWludCBpd2xfcmVhZF9lZXByb20oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHU4ICoqZWVwcm9tLCBzaXplX3QgKmVlcHJvbV9zaXplKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaC00MDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmg6NDA5OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmgtNDEwLXZvaWQgaXdsX2RiZ2ZzX3JlZ2lzdGVyKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwgc3RydWN0IGRlbnRyeSAqZGJnZnNfZGlyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oPTQxMj1zdGF0aWMgaW5saW5lIHZvaWQgaXdsX2RiZ2ZzX3JlZ2lzdGVyKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaC00MTMtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGRlbnRyeSAqZGJnZnNfZGlyKSB7IH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaDo0MTQ6I2VuZGlmIC8qIENPTkZJR19JV0xXSUZJX0RFQlVHRlMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaC00MTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmg6NDE2OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oLTQxNy0jZGVmaW5lIElXTF9ERUJVR19RVUlFVF9SRktJTEwobSwgZm10LCBhcmdzLi4uKVxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oPTQzMD1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmgtNDM2LX0gd2hpbGUgKDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmg6NDM3OiNlbmRpZlxcdFxcdFxcdFxcdC8qIENPTkZJR19JV0xXSUZJX0RFQlVHICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmgtNDM4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGVidWdmcy5jPTIxNTQ9c3RhdGljIHNzaXplX3QgaXdsX2RiZ2ZzX2VjaG9fdGVzdF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RlYnVnZnMuYy0yMTcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RlYnVnZnMuYzoyMTcxOiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RlYnVnZnMuYy0yMTcyLXN0YXRpYyBzc2l6ZV90IGl3bF9kYmdmc19sb2dfZXZlbnRfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RlYnVnZnMuYz0yMzAzPURFQlVHRlNfV1JJVEVfRklMRV9PUFMoZndfcmVzdGFydCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGVidWdmcy5jOjIzMDQ6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGVidWdmcy5jLTIzMDUtREVCVUdGU19SRUFEX1dSSVRFX0ZJTEVfT1BTKGxvZ19ldmVudCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZWJ1Z2ZzLmM9MjMxMz12b2lkIGl3bF9kYmdmc19yZWdpc3RlcihzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsIHN0cnVjdCBkZW50cnkgKmRiZ2ZzX2RpcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RlYnVnZnMuYy0yMzU1LVxcdERFQlVHRlNfQUREX0ZJTEUoZndfcmVzdGFydCwgZGlyX2RlYnVnLCAwMjAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZWJ1Z2ZzLmM6MjM1NjojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZWJ1Z2ZzLmMtMjM1Ny1cXHRERUJVR0ZTX0FERF9GSUxFKGxvZ19ldmVudCwgZGlyX2RlYnVnLCAwNjAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Rldi5oPTYyNz1zdHJ1Y3QgaXdsX3ByaXYge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2LmgtNzY1LVxcdFxcdHN0cnVjdCBzdGF0aXN0aWNzX3R4IHR4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Rldi5oOjc2NjojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Rldi5oLTc2Ny1cXHRcXHRzdHJ1Y3Qgc3RhdGlzdGljc19idF9hY3Rpdml0eSBidF9hY3Rpdml0eTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Rldi5oLTc3MS1cXHR9IHN0YXRpc3RpY3M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2Lmg6NzcyOiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2LmgtNzczLVxcdHN0cnVjdCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZXYuaC04NDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2Lmg6ODQ4OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2LmgtODQ5LVxcdC8qIGRlYnVnZnMgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Rldi5oLTg1My1cXHR2b2lkICp3b3dsYW5fc3JhbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZXYuaDo4NTQ6I2VuZGlmIC8qIENPTkZJR19JV0xXSUZJX0RFQlVHRlMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZXYuaC04NTUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZXYuaC04NjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2Lmg6ODY5OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9MRURTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2LmgtODcwLVxcdHN0cnVjdCBsZWRfY2xhc3NkZXYgbGVkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbGVkLmg9MTE9c3RydWN0IGl3bF9wcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbGVkLmgtMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbGVkLmg6MTk6I2lmZGVmIENPTkZJR19JV0xXSUZJX0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9sZWQuaC0yMC12b2lkIGl3bGFnbl9sZWRfZW5hYmxlKHN0cnVjdCBpd2xfcHJpdiAqcHJpdik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jPTQxOD1zdGF0aWMgaW50IGl3bGFnbl9tYWNfcmVzdW1lKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFjODAyMTEuYy00NDItXFx0fTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jOjQ0MzojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21hYzgwMjExLmMtNDQ0LVxcdGNvbnN0IHN0cnVjdCBmd19pbWcgKmltZztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21hYzgwMjExLmMtNDgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21hYzgwMjExLmM6NDgxOiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFjODAyMTEuYy00ODItXFx0aW1nID0gXFx1MDAyNnByaXYtXFx1MDAzZWZ3LVxcdTAwM2VpbWdbSVdMX1VDT0RFX1dPV0xBTl07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM9NTA9TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYzo1MTpNT0RVTEVfSU1QT1JUX05TKFxcXCJJV0xXSUZJXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jLTUyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jPTExMzI9c3RhdGljIHZvaWQgaXdsX3VuaW5pdF9kcnYoc3RydWN0IGl3bF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jLTExMzctXFx0aXdsX2NhbGliX2ZyZWVfcmVzdWx0cyhwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM6MTEzODojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYy0xMTM5LVxcdGtmcmVlKHByaXYtXFx1MDAzZXdvd2xhbl9zcmFtKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYz0xMTU3PXN0YXRpYyB2b2lkIGl3bF9vcHRpb25fY29uZmlnKHN0cnVjdCBpd2xfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTE1OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jOjExNTk6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jOjExNjA6XFx0SVdMX0lORk8ocHJpdiwgXFxcIkNPTkZJR19JV0xXSUZJX0RFQlVHIGVuYWJsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYy0xMTYxLSNlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jOjExNjI6XFx0SVdMX0lORk8ocHJpdiwgXFxcIkNPTkZJR19JV0xXSUZJX0RFQlVHIGRpc2FibGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTE2My0jZW5kaWZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTE2NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM6MTE2NTojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYzoxMTY2OlxcdElXTF9JTkZPKHByaXYsIFxcXCJDT05GSUdfSVdMV0lGSV9ERUJVR0ZTIGVuYWJsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYy0xMTY3LSNlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jOjExNjg6XFx0SVdMX0lORk8ocHJpdiwgXFxcIkNPTkZJR19JV0xXSUZJX0RFQlVHRlMgZGlzYWJsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYy0xMTY5LSNlbmRpZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYy0xMTcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYzoxMTcxOiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERVZJQ0VfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYzoxMTcyOlxcdElXTF9JTkZPKHByaXYsIFxcXCJDT05GSUdfSVdMV0lGSV9ERVZJQ0VfVFJBQ0lORyBlbmFibGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTE3My0jZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYzoxMTc0OlxcdElXTF9JTkZPKHByaXYsIFxcXCJDT05GSUdfSVdMV0lGSV9ERVZJQ0VfVFJBQ0lORyBkaXNhYmxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jLTExNzUtI2VuZGlmXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM9MTgxMT1pbnQgaXdsX2R1bXBfbmljX2V2ZW50X2xvZyhzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsIGJvb2wgZnVsbF9sb2csXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTg3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM6MTg3NzojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTg3OC1cXHRpZiAoYnVmKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jPTg4PXN0YXRpYyB2b2lkIGl3bGFnbl9yeF9wbV9zbGVlcF9ub3RpZihzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jLTkwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jOjkxOiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmMtOTItXFx0c3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdCA9IHJ4Yl9hZGRyKHJ4Yik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jPTEwOT1zdGF0aWMgdm9pZCBpd2xhZ25fcnhfYmVhY29uX25vdGlmKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmMtMTEzLVxcdHN0cnVjdCBpd2xhZ25fYmVhY29uX25vdGlmICpiZWFjb24gPSAodm9pZCAqKXBrdC1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jOjExNDojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jLTExNS1cXHR1MTYgc3RhdHVzID0gbGUxNl90b19jcHUoYmVhY29uLVxcdTAwM2ViZWFjb25fbm90aWZ5X2hkci5zdGF0dXMuc3RhdHVzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmM9MjM1PXN0YXRpYyB2b2lkIGl3bGFnbl9yeF9jYWxjX25vaXNlKHN0cnVjdCBpd2xfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmMtMjc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmM6Mjc2OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnguYy0yNzctLypcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmM9MzQyPXN0YXRpYyB2b2lkIGl3bGFnbl9yeF9zdGF0aXN0aWNzKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmMtMzc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmM6Mzc2OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnguYy0zNzctXFx0XFx0LyogaGFuZGxlIHRoaXMgZXhjZXB0aW9uIGRpcmVjdGx5ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jLTQxNi1cXHRtZW1jcHkoXFx1MDAyNnByaXYtXFx1MDAzZXN0YXRpc3RpY3MudHgsIHR4LCBzaXplb2YoKnR4KSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnguYzo0MTc6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jLTQxOC1cXHRpZiAoYnRfYWN0aXZpdHkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jPTQ0NT1zdGF0aWMgdm9pZCBpd2xhZ25fcnhfcmVwbHlfc3RhdGlzdGljcyhzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jLTQ1MS1cXHRpZiAobGUzMl90b19jcHUoc3RhdHMtXFx1MDAzZWZsYWcpIFxcdTAwMjYgVUNPREVfU1RBVElTVElDU19DTEVBUl9NU0spIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jOjQ1MjojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmMtNDUzLVxcdFxcdG1lbXNldChcXHUwMDI2cHJpdi1cXHUwMDNlYWNjdW1fc3RhdHMsIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeG9uLmM9ODMyPXN0YXRpYyBpbnQgaXdsX2Z1bGxfcnhvbl9yZXF1aXJlZChzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeG9uLmMtODg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4b24uYzo4ODc6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnhvbi5jLTg4OC12b2lkIGl3bF9wcmludF9yeF9jb25maWdfY21kKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYz0yMzI9c3RhdGljIHZvaWQgaXdsX3J4X3JlcGx5X3NjYW4oc3RydWN0IGl3bF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTIzNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjIzNTojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtMjM2LVxcdHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QgPSByeGJfYWRkcihyeGIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jPTI2Mj1zdGF0aWMgdm9pZCBpd2xfcnhfc2Nhbl9yZXN1bHRzX25vdGlmKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy0yNjQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzoyNjU6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTI2Ni1cXHRzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0ID0gcnhiX2FkZHIocnhiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3N0YS5jPTEyNj1ib29sIGl3bF9pc19odDQwX3R4X2FsbG93ZWQoc3RydWN0IGl3bF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc3RhLmMtMTMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3N0YS5jOjEzMzojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3N0YS5jLTEzNC1cXHRpZiAocHJpdi1cXHUwMDNlZGlzYWJsZV9odDQwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc3RhLmM9NzMxPXZvaWQgaXdsX2RlYWxsb2NfYmNhc3Rfc3RhdGlvbnMoc3RydWN0IGl3bF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc3RhLmMtNzQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3N0YS5jOjc1MDojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zdGEuYy03NTEtc3RhdGljIHZvaWQgaXdsX2R1bXBfbHFfY21kKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R0LmM9MjMwPXN0YXRpYyB2b2lkIGl3bF9sZWdhY3lfdHRfaGFuZGxlcihzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsIHMzMiB0ZW1wLCBib29sIGZvcmNlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHQuYy0yMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHQuYzoyMzU6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHQuYy0yMzYtXFx0aWYgKCh0dC1cXHUwMDNldHRfcHJldmlvdXNfdGVtcCkgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R0LmMtMjU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R0LmM6MjU2OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R0LmMtMjU3LVxcdHR0LVxcdTAwM2V0dF9wcmV2aW91c190ZW1wID0gdGVtcDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R0LmM9MzM1PXN0YXRpYyB2b2lkIGl3bF9hZHZhbmNlX3R0X2hhbmRsZXIoc3RydWN0IGl3bF9wcml2ICpwcml2LCBzMzIgdGVtcCwgYm9vbCBmb3JjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R0LmMtMzU4LVxcdFxcdCAgICB0ZW1wIFxcdTAwM2M9IHRyYW5zYWN0aW9uLVxcdTAwM2V0dF9oaWdoKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHQuYzozNTk6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHQuYy0zNjAtXFx0XFx0XFx0aWYgKCh0dC1cXHUwMDNldHRfcHJldmlvdXNfdGVtcCkgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R0Lmg9ODU9c3RydWN0IGl3bF90dF9tZ210IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R0LmgtODktXFx0Ym9vbCBjdF9raWxsX3RvZ2dsZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90dC5oOjkwOiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R0LmgtOTEtXFx0czMyIHR0X3ByZXZpb3VzX3RlbXA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jPTI2MD1pbnQgaXdsYWduX3R4X3NrYihzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jLTI4Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jOjI4NzojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jLTI4OC1cXHRpZiAoaWVlZTgwMjExX2lzX2F1dGgoZmMpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYz04MDc9c3RhdGljIHZvaWQgaXdsYWduX2h3cmF0ZV90b190eF9jb250cm9sKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwgdTMyIHJhdGVfbl9mbGFncyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtODI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmM6ODI3OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtODI4LWNvbnN0IGNoYXIgKml3bF9nZXRfdHhfZmFpbF9yZWFzb24odTMyIHN0YXR1cylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtODY0LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jOjg2NTojZW5kaWYgLyogQ09ORklHX0lXTFdJRklfREVCVUcgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jLTg2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmM9OTIwPXN0YXRpYyB2b2lkIGl3bF9yeF9yZXBseV90eF9hZ2coc3RydWN0IGl3bF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy05ODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYzo5ODE6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy05ODItI2RlZmluZSBBR0dfVFhfU1RBVEVfRkFJTCh4KSBjYXNlIEFHR19UWF9TVEFURV8gIyMgeDogcmV0dXJuICN4XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jPTk4ND1jb25zdCBjaGFyICppd2xfZ2V0X2FnZ190eF9mYWlsX3JlYXNvbih1MTYgc3RhdHVzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy0xMDA1LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jOjEwMDY6I2VuZGlmIC8qIENPTkZJR19JV0xXSUZJX0RFQlVHICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy0xMDA3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kYmcuYz0yNDI5PXZvaWQgaXdsX2Z3X2RiZ19zdG9wX3Jlc3RhcnRfcmVjb3JkaW5nKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZGJnLmMtMjQ0Ny1cXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kYmcuYzoyNDQ4OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kYmcuYy0yNDQ5LVxcdGlmICghcmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RiZy5oPTE3OT12b2lkIGl3bF9md19kYmdfc3RvcF9yZXN0YXJ0X3JlY29yZGluZyhzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RiZy5oLTE4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RiZy5oOjE4MzojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZGJnLmgtMTg0LXN0YXRpYyBpbmxpbmUgdm9pZCBpd2xfZndfc2V0X2RiZ19yZWNfb24oc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kYmcuaD0yMzU9aW50IGl3bF9md19zZW5kX3RpbWVzdGFtcF9tYXJrZXJfY21kKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kYmcuaC0yMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kYmcuaDoyMzc6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RiZy5oLTIzOC1zdGF0aWMgaW5saW5lIHZvaWQgaXdsX2Z3X2NhbmNlbF90aW1lc3RhbXAoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kYmcuaD0yNjk9c3RhdGljIGlubGluZSB2b2lkIGl3bF9md19yZXN1bWVfdGltZXN0YW1wKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCkge31cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RiZy5oLTI3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RiZy5oOjI3MTojZW5kaWYgLyogQ09ORklHX0lXTFdJRklfREVCVUdGUyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZGJnLmgtMjcyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kZWJ1Z2ZzLmgtOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RlYnVnZnMuaDo5OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kZWJ1Z2ZzLmgtMTAtdm9pZCBpd2xfZndydF9kYmdmc19yZWdpc3RlcihzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RlYnVnZnMuaD0xND1zdGF0aWMgaW5saW5lIHZvaWQgaXdsX2Z3cnRfZGJnZnNfcmVnaXN0ZXIoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kZWJ1Z2ZzLmgtMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kZWJ1Z2ZzLmg6MTc6I2VuZGlmIC8qIENPTkZJR19JV0xXSUZJX0RFQlVHRlMgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcnVudGltZS5oPTE0OD1zdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmgtMTkzLVxcdHN0cnVjdCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmg6MTk0OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmgtMTk1LVxcdFxcdHN0cnVjdCBkZWxheWVkX3dvcmsgd2s7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3J1bnRpbWUuaC0xOTktXFx0fSB0aW1lc3RhbXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmg6MjAwOiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmgtMjAxLVxcdGJvb2wgdHBjX2VuYWJsZWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmg6MjAyOiNlbmRpZiAvKiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmgtMjAzLVxcdHN0cnVjdCBpd2xfc2FyX3Byb2ZpbGUgc2FyX3Byb2ZpbGVzW0JJT1NfU0FSX01BWF9QUk9GSUxFX05VTV07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaD01MTM9c3RydWN0IGl3bF9kZXZfaW5mbyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaC01MzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtY29uZmlnLmg6NTMyOiNpZiBJU19FTkFCTEVEKENPTkZJR19JV0xXSUZJX0tVTklUX1RFU1RTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWNvbmZpZy5oLTUzMy1leHRlcm4gY29uc3Qgc3RydWN0IGl3bF9kZXZfaW5mbyBpd2xfZGV2X2luZm9fdGFibGVbXTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmM9NjQ9SVdMX0VYUE9SVF9TWU1CT0woX19pd2xfZXJyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5jLTY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmM6NjY6I2lmIGRlZmluZWQoQ09ORklHX0lXTFdJRklfREVCVUcpIHx8IGRlZmluZWQoQ09ORklHX0lXTFdJRklfREVWSUNFX1RSQUNJTkcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuYy02Ny12b2lkIF9faXdsX2RiZyhzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5jLTc3LVxcdHZhZi52YSA9IFxcdTAwMjZhcmdzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmM6Nzg6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuYy03OS1cXHRpZiAoaXdsX2hhdmVfZGVidWdfbGV2ZWwobGV2ZWwpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oPTE2PXN0YXRpYyBpbmxpbmUgYm9vbCBpd2xfaGF2ZV9kZWJ1Z19sZXZlbCh1MzIgbGV2ZWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaC0xNy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaDoxODojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oLTE5LVxcdHJldHVybiBpd2x3aWZpX21vZF9wYXJhbXMuZGVidWdfbGV2ZWwgXFx1MDAyNiBsZXZlbDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmg9Mzc9dm9pZCBfX2l3bF9jcml0KHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqZm10LCAuLi4pIF9fcHJpbnRmKDIsIDMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaC02OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oOjcwOiNpZiBkZWZpbmVkKENPTkZJR19JV0xXSUZJX0RFQlVHKSB8fCBkZWZpbmVkKENPTkZJR19JV0xXSUZJX0RFVklDRV9UUkFDSU5HKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmgtNzEtdm9pZCBfX2l3bF9kYmcoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaD04Mz1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaC05OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oOjEwMDojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oLTEwMS0jZGVmaW5lIGl3bF9wcmludF9oZXhfZHVtcChtLCBsZXZlbCwgcCwgbGVuKVxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oPTEwMj1kbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oLTEwOC0jZGVmaW5lIGl3bF9wcmludF9oZXhfZHVtcChtLCBsZXZlbCwgcCwgbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmg6MTA5OiNlbmRpZlxcdFxcdFxcdFxcdC8qIENPTkZJR19JV0xXSUZJX0RFQlVHICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaC0xMTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oLTEyNy0gKlxcdC9zeXMvbW9kdWxlL2l3bHdpZmkvcGFyYW1ldGVycy9kZWJ1Z1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmg6MTI4OiAqIHdoZW4gQ09ORklHX0lXTFdJRklfREVCVUc9eS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oLTEyOS0gKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmgtMTMwLSAqXFx0L3N5cy9rZXJuZWwvZGVidWcvcGh5MC9pd2x3aWZpL2RlYnVnL2RlYnVnX2xldmVsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaDoxMzE6ICogd2hlbiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTPXkuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaC0xMzItICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWRhdGEuaC04LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWRhdGEuaDo5OiNpZiAhZGVmaW5lZChfX0lXTFdJRklfREVWSUNFX1RSQUNFX0RBVEEpIHx8IGRlZmluZWQoVFJBQ0VfSEVBREVSX01VTFRJX1JFQUQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtZGF0YS5oOjEwOiNkZWZpbmUgX19JV0xXSUZJX0RFVklDRV9UUkFDRV9EQVRBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtZGF0YS5oLTExLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtZGF0YS5oPTM3PVRSQUNFX0VWRU5UKGl3bHdpZmlfZGV2X3J4X2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1kYXRhLmgtNTItKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1kYXRhLmg6NTM6I2VuZGlmIC8qIF9fSVdMV0lGSV9ERVZJQ0VfVFJBQ0VfREFUQSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWRhdGEuaC01NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWlvLmgtNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1pby5oOjg6I2lmICFkZWZpbmVkKF9fSVdMV0lGSV9ERVZJQ0VfVFJBQ0VfSU8pIHx8IGRlZmluZWQoVFJBQ0VfSEVBREVSX01VTFRJX1JFQUQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtaW8uaDo5OiNkZWZpbmUgX19JV0xXSUZJX0RFVklDRV9UUkFDRV9JT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWlvLmgtMTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1pby5oPTE3Mj1UUkFDRV9FVkVOVChpd2x3aWZpX2Rldl9pY3RfcmVhZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWlvLmgtMTg3LSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtaW8uaDoxODg6I2VuZGlmIC8qIF9fSVdMV0lGSV9ERVZJQ0VfVFJBQ0VfSU8gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1pby5oLTE4OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWl3bHdpZmkuaC05LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWl3bHdpZmkuaDoxMDojaWYgIWRlZmluZWQoX19JV0xXSUZJX0RFVklDRV9UUkFDRV9JV0xXSUZJKSB8fCBkZWZpbmVkKFRSQUNFX0hFQURFUl9NVUxUSV9SRUFEKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWl3bHdpZmkuaDoxMTojZGVmaW5lIF9fSVdMV0lGSV9ERVZJQ0VfVFJBQ0VfSVdMV0lGSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWl3bHdpZmkuaC0xMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWl3bHdpZmkuaD0xMTI9VFJBQ0VfRVZFTlQoaXdsd2lmaV9kZXZfdWNvZGVfZXZlbnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1pd2x3aWZpLmgtMTMwLSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtaXdsd2lmaS5oOjEzMTojZW5kaWYgLyogX19JV0xXSUZJX0RFVklDRV9UUkFDRV9JV0xXSUZJICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtaXdsd2lmaS5oLTEzMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLW1zZy5oLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtbXNnLmg6NzojaWYgIWRlZmluZWQoX19JV0xXSUZJX0RFVklDRV9UUkFDRV9NU0cpIHx8IGRlZmluZWQoVFJBQ0VfSEVBREVSX01VTFRJX1JFQUQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtbXNnLmg6ODojZGVmaW5lIF9fSVdMV0lGSV9ERVZJQ0VfVFJBQ0VfTVNHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtbXNnLmgtOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLW1zZy5oPTQ5PVRSQUNFX0VWRU5UKGl3bHdpZmlfZGJnLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtbXNnLmgtNjQtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1tc2cuaDo2NTojZW5kaWYgLyogX19JV0xXSUZJX0RFVklDRV9UUkFDRV9NU0cgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1tc2cuaC02Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLXVjb2RlLmgtNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS11Y29kZS5oOjc6I2lmICFkZWZpbmVkKF9fSVdMV0lGSV9ERVZJQ0VfVFJBQ0VfVUNPREUpIHx8IGRlZmluZWQoVFJBQ0VfSEVBREVSX01VTFRJX1JFQUQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtdWNvZGUuaDo4OiNkZWZpbmUgX19JV0xXSUZJX0RFVklDRV9UUkFDRV9VQ09ERVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLXVjb2RlLmgtOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLXVjb2RlLmg9MzU9VFJBQ0VfRVZFTlQoaXdsd2lmaV9kZXZfdWNvZGVfd3JhcF9ldmVudCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLXVjb2RlLmgtNTQtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS11Y29kZS5oOjU1OiNlbmRpZiAvKiBfX0lXTFdJRklfREVWSUNFX1RSQUNFX1VDT0RFICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtdWNvZGUuaC01Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmgtOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS5oOjk6I2lmbmRlZiBfX0lXTFdJRklfREVWSUNFX1RSQUNFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UuaDoxMDojZGVmaW5lIF9fSVdMV0lGSV9ERVZJQ0VfVFJBQ0VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS5oLTExLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9za2J1ZmYuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmg9NDk9c3RhdGljIGlubGluZSBzaXplX3QgaXdsX3J4X3RyYWNlX2xlbihjb25zdCBzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmgtNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UuaDo3OTojaWYgIWRlZmluZWQoQ09ORklHX0lXTFdJRklfREVWSUNFX1RSQUNJTkcpIHx8IGRlZmluZWQoX19DSEVDS0VSX18pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UuaC04MC0jdW5kZWYgVFJBQ0VfRVZFTlRcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmg9ODc9c3RhdGljIGlubGluZSB2b2lkIHRyYWNlXyAjIyBuYW1lKHByb3RvKSB7fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UuaC05OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS5oOjk5OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERVZJQ0VfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmgtMTAwLURFQ0xBUkVfVFJBQ0VQT0lOVChpd2x3aWZpX2Rldl9yeCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS5oPTEwNj1zdGF0aWMgaW5saW5lIHZvaWQgbWF5YmVfdHJhY2VfaXdsd2lmaV9kZXZfcngoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS5oLTEwOC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UuaDoxMDk6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFVklDRV9UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UuaC0xMTAtXFx0aWYgKHRyYWNlcG9pbnRfZW5hYmxlZChpd2x3aWZpX2Rldl9yeCkgfHxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmgtMTE0LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS5oOjExNTojZW5kaWYgLyogX19JV0xXSUZJX0RFVklDRV9UUkFDRSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9MzU9TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjM3OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMzgtc3RhdGljIHN0cnVjdCBkZW50cnkgKml3bF9kYmdmc19yb290O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9NTU9c3RydWN0IGl3bF9kcnYge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6Njg6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy02OS1cXHRzdHJ1Y3QgZGVudHJ5ICpkYmdmc19kcnY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz0xNTY4PV9pd2xfb3BfbW9kZV9zdGFydChzdHJ1Y3QgaXdsX2RydiAqZHJ2LCBzdHJ1Y3QgaXdsd2lmaV9vcG1vZGVfdGFibGUgKm9wKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTU3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoxNTgwOiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTU4MS1cXHRcXHRkcnYtXFx1MDAzZWRiZ2ZzX29wX21vZGUgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIob3AtXFx1MDAzZW5hbWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xNTk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjE1OTU6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xNTk2LVxcdFxcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShkcnYtXFx1MDAzZWRiZ2ZzX29wX21vZGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9MTYwOT1zdGF0aWMgdm9pZCBfaXdsX29wX21vZGVfc3RvcChzdHJ1Y3QgaXdsX2RydiAqZHJ2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTYxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoxNjE5OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTYyMC1cXHRcXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoZHJ2LVxcdTAwM2VkYmdmc19vcF9tb2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTE5NDg9c3RydWN0IGl3bF9kcnYgKml3bF9kcnZfc3RhcnQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xOTY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjE5NjU6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xOTY2LVxcdC8qIENyZWF0ZSB0aGUgZGV2aWNlIGRlYnVnZnMgZW50cmllcy4gKi9cXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyMjo0MC43NTI5NjQwMDFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTYyMDI2MDk4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEludGVsIFdpcmVsZXNzIERyaXZlciBSZXN0YXJ0IE1lY2hhbmlzbSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2UgdGhlIGtleSBmdW5jdGlvbiB3ZSdyZSBjb25jZXJuZWQgd2l0aCBoZXJlIGlzIGBpd2xfdHJhbnNfcmVzdGFydF93a2AuIFJpZ2h0LCBiZWNhdXNlIHN5emthbGxlcidzIGZ1enppbmcgUENJIGRldmljZXMsIGl0J3MgcHJvYmFibHkgbWVzc2luZyB3aXRoIFBDSSBjb25maWcgc3BhY2UgYW5kIG1lbW9yeS1tYXBwZWQgSS9PLCB3aGljaCBpcyB3aGVyZSBhIGxvdCBvZiB0aGVzZSBkcml2ZXIgYnVncyB0ZW5kIHRvIHBvcCB1cC4gVGhlIHJlYWwgcXVlc3Rpb24gaXM6IGNhbiB3ZSBhY3R1YWxseSAqaGl0KiBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgIHRocm91Z2ggdGhpcyBmdXp6aW5nIHByb2Nlc3M/XG5cbkxldCBtZSBqdXN0IGNoZWNrIHdoZXJlIGl0J3MgYmVpbmcgY2FsbGVkIGZyb20uIEFoLCBpdCBsb29rcyBsaWtlIGl0J3MgYSBkZWxheWVkIHdvcmssIHNwZWNpZmljYWxseSBgdHJhbnMtXHUwMDNlcmVzdGFydC53a2AuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0IHByb2JhYmx5IGhhbmRsZXMgc29tZSBzb3J0IG9mIHJlY292ZXJ5IG9yIHJlc3RhcnQgbG9naWMuIFNvLCBpdCAqaXMqIGNhbGxlZCBmcm9tIGBpd2xfdHJhbnNfcmVzdGFydF93a2AgaXRzZWxmLCBsaWtlbHkgZm9yIGJhY2tvZmYgc2NlbmFyaW9zLiBJJ2xsIG5lZWQgdG8gZGlnIGRlZXBlciBhbmQgc2VlIGlmIHRoZXJlIGFyZSBvdGhlciBwbGFjZXMgd2hlcmUgYHRyYW5zLVx1MDAzZXJlc3RhcnQud2tgIGlzIGJlaW5nIHF1ZXVlZC4gVGhpcyB3aWxsIGhlbHAgbWUgdG8gZGV0ZXJtaW5lIGFsbCB0aGUgdHJpZ2dlciBwb2ludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MDA4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjIzOjE2LjM3MzIyOTQ1OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI4NTk2MjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRyYW5zLVxcdTAwM2VyZXN0YXJ0LndrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM9MjAyPXN0YXRpYyB2b2lkIGl3bF90cmFuc19yZXN0YXJ0X3drKHN0cnVjdCB3b3JrX3N0cnVjdCAqd2spXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTIzOC1cXHRcXHRJV0xfRVJSKHRyYW5zLCBcXFwiVG9vIG1hbnkgZGV2aWNlIGVycm9ycyAtIGRlbGF5IG5leHQgcmVzZXRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6MjM5OlxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX3dxLCBcXHUwMDI2dHJhbnMtXFx1MDAzZXJlc3RhcnQud2ssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0yNDAtXFx0XFx0XFx0XFx0ICAgSVdMX1RSQU5TX1JFU0VUX0RFTEFZKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM9MjY3PXN0cnVjdCBpd2xfdHJhbnMgKml3bF90cmFuc19hbGxvYyh1bnNpZ25lZCBpbnQgcHJpdl9zaXplLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0yODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzoyODk6XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNnRyYW5zLVxcdTAwM2VyZXN0YXJ0LndrLCBpd2xfdHJhbnNfcmVzdGFydF93ayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0yOTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jPTI5ND12b2lkIGl3bF90cmFuc19mcmVlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMjk1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjI5NjpcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNnRyYW5zLVxcdTAwM2VyZXN0YXJ0LndrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTI5Ny19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jPTQxMj12b2lkIGl3bF90cmFuc19vcF9tb2RlX2xlYXZlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy00MjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzo0MjE6XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZ0cmFucy1cXHUwMDNlcmVzdGFydC53ayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy00MjItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oPTEwMDI9c3RhdGljIGlubGluZSB2b2lkIGl3bF90cmFuc19zY2hlZHVsZV9yZXNldChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtMTAyMS1cXHRcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNnRyYW5zLVxcdTAwM2VzdGF0dXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg6MTAyMjpcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF93cSwgXFx1MDAyNnRyYW5zLVxcdTAwM2VyZXN0YXJ0LndrLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTEwMjMtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyMzoxNy4wMDE4MzUxNDhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjAyNDk0ODk0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXRgIENoYW5nZSoqXG5cbk9rYXksIHNvIHRoaXMgYGl3bF90cmFuc19zY2hlZHVsZV9yZXNldGAgZnVuY3Rpb24gaXMgYmVpbmcgcXVldWVkLCB0aGF0IG11Y2ggaXMgY2xlYXIuIEJ1dCBpcyB0aGlzIGEgcmVhbCwgZnVuY3Rpb25hbCBjaGFuZ2U/IFllcywgaXQncyBtb2RpZnlpbmcgdGhlIHdvcmtxdWV1ZSwgdGhhdOKAmXMgc2lnbmlmaWNhbnQuIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciBpdCdzIHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZy4gSG9uZXN0bHksIHRoZSBjaGFuZ2UgaXRzZWxmIHNlZW1zIHF1aXRlIHNtYWxsIGFuZCB2ZXJ5IHNwZWNpZmljIHRvIHRoZSBzY2hlZHVsaW5nIG9mIGEgaGFyZHdhcmUgcmVzZXQgd2l0aGluIHRoaXMgcGFydGljdWxhciBkcml2ZXIuXG5cbkNhbiBJIGV2ZW4gcmVhY2ggdGhpcyBsb2dpYyBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQ/IE5vdywgc3l6a2FsbGVyICpkb2VzKiBmdXp6IFBDSSBkZXZpY2VzLCB3aGljaCBpcyBwcm9taXNpbmcuIEkga25vdyB0aGVyZSdzIHRoYXQgYHN5el9wY2lfZGV2aWNlYCBjYWxsIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBidXQgaXQncyBvZnRlbiBub3QgdmVyeSBlZmZlY3RpdmUgb24gY29tcGxleCBkcml2ZXJzIGxpa2UgYGl3bHdpZmlgIHVubGVzcyBhIHZlcnkgc3BlY2lmaWMgZW11bGF0b3IgaXMgdXNlZCwgd2hpY2ggSSBkb24ndCByZWNhbGwgc2VlaW5nLiBTdGlsbCwgc2luY2UgaXQgKmlzKiBhIFBDSSBkcml2ZXIsIEkgaGF2ZSB0byBhc3N1bWUgaXQncyB0aGVvcmV0aWNhbGx5IHJlYWNoYWJsZS5cblxuV2FpdCBhIHNlY29uZCwgdGhlcmUncyBhIGh1Z2UgY2F2ZWF0IGhlcmUuIGBpd2x3aWZpYCBpcyBhIGZpcm13YXJlLWRlcGVuZGVudCBkcml2ZXIsIGlzbuKAmXQgaXQ/IFdpdGhvdXQgdGhlIGZpcm13YXJlIGxvYWRlZCBwcm9wZXJseSwgdGhlIGRldmljZSBtaWdodCBqdXN0IGZhaWwgZWFybHkgaW4gdGhlIHByb2JlIHNlcXVlbmNlIGFuZCBuZXZlciBldmVuIGdldCB0byB0aGlzIHJlc2V0IGxvZ2ljLiBTbywgdGhlIG1vcmUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzLCBjYW4gSSByZWFjaCBgaXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0YCAqd2l0aG91dCogdGhlIGZpcm13YXJlPyBJIG5lZWQgdG8gY2hlY2sgdGhhdCBiZWZvcmUgSSBzcGVuZCBtdWNoIHRpbWUgb24gdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgxMjMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjM6MjMuMDI2Nzg4MjY5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzQyOTE1NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg9MTAwMD1pd2xfdHJhbnNfcmVsZWFzZV9uaWNfYWNjZXNzKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTEwMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaDoxMDAyOnN0YXRpYyBpbmxpbmUgdm9pZCBpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0xMDAzLVxcdFxcdFxcdFxcdFxcdCAgICBlbnVtIGl3bF9md19lcnJvcl90eXBlIHR5cGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oPTEwMjU9c3RhdGljIGlubGluZSB2b2lkIGl3bF90cmFuc19md19lcnJvcihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtMTAzNC1cXHRcXHRpd2xfb3BfbW9kZV9uaWNfZXJyb3IodHJhbnMtXFx1MDAzZW9wX21vZGUsIHR5cGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg6MTAzNTpcXHRcXHRpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXQodHJhbnMsIHR5cGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtMTAzNi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3J4LmM9MTgzNz1zdGF0aWMgdm9pZCBpd2xfdHJhbnNfcGNpZV9oYW5kbGVfcmVzZXRfaW50ZXJydXB0KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9yeC5jLTE4ODItXFx0XFx0XFx0dHJhbnMtXFx1MDAzZXN0YXRlID0gSVdMX1RSQU5TX05PX0ZXO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvcnguYzoxODgzOlxcdFxcdFxcdGl3bF90cmFuc19zY2hlZHVsZV9yZXNldCh0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3J4LmMtMTg4NC1cXHRcXHRcXHRcXHRcXHRcXHQgSVdMX0VSUl9UWVBFX1RPUF9SRVNFVF9CWV9CVCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3J4LmM9MjI2Mz1pcnFyZXR1cm5fdCBpd2xfcGNpZV9pcnFfbXNpeF9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvcnguYy0yMzcyLVxcdFxcdFxcdFxcdFxcdCAgICAgIElXTF9FUlJfVFlQRV9UT1BfRkFUQUxfRVJST1IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvcnguYzoyMzczOlxcdFxcdFxcdGl3bF90cmFuc19zY2hlZHVsZV9yZXNldCh0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3J4LmMtMjM3NC1cXHRcXHRcXHRcXHRcXHRcXHQgSVdMX0VSUl9UWVBFX1RPUF9GQVRBTF9FUlJPUik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLWdlbjIuYz01MDQ9aW50IGl3bF90cmFuc19wY2llX2dlbjJfc3RhcnRfZncoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLWdlbjIuYy02MjMtXFx0XFx0XFx0XFx0XFx0ICAgICAgSVdMX0VSUl9UWVBFX1RPUF9SRVNFVF9GQUlMRUQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMtZ2VuMi5jOjYyNDpcXHRcXHRcXHRpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXQodHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy1nZW4yLmMtNjI1LVxcdFxcdFxcdFxcdFxcdFxcdCBJV0xfRVJSX1RZUEVfVE9QX1JFU0VUX0ZBSUxFRCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3R4LWdlbjIuYz0xMTk3PWludCBpd2xfcGNpZV9nZW4yX2VucXVldWVfaGNtZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHgtZ2VuMi5jLTEyOTYtXFx0XFx0XFx0XFx0ICAgICAgSVdMX0VSUl9UWVBFX0NNRF9RVUVVRV9GVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3R4LWdlbjIuYzoxMjk3OlxcdFxcdGl3bF90cmFuc19zY2hlZHVsZV9yZXNldCh0cmFucywgSVdMX0VSUl9UWVBFX0NNRF9RVUVVRV9GVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3R4LWdlbjIuYy0xMjk4LVxcdFxcdGlkeCA9IC1FTk9TUEM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3R4LmM9MTM0Mz1pbnQgaXdsX3BjaWVfZW5xdWV1ZV9oY21kKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90eC5jLTE0NTEtXFx0XFx0XFx0XFx0ICAgICAgSVdMX0VSUl9UWVBFX0NNRF9RVUVVRV9GVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3R4LmM6MTQ1MjpcXHRcXHRpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXQodHJhbnMsIElXTF9FUlJfVFlQRV9DTURfUVVFVUVfRlVMTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90eC5jLTE0NTMtXFx0XFx0aWR4ID0gLUVOT1NQQztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjM6MjMuMTYxMDg3MTg0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg0NjUzMzY2ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgaXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0YCBQYXRjaCoqXG5cbk9rYXksIHNvIGBpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXRgIGlzIGJlaW5nIGNhbGxlZCBkdWUgdG8gZXJyb3JzIHBvdGVudGlhbGx5IHRyaWdnZXJlZCBieSBQQ0kgZnV6emluZyBvciBpbnRlcnJ1cHQgZnV6emluZyDigJMgdGhhdCdzIHRoZSBjb250ZXh0LiBUaGUgcGF0Y2ggaXRzZWxmIGlzIGluY3JlZGlibHkgc2ltcGxlOiBpdCdzIGEgb25lLWxpbmUgY2hhbmdlLCBzd2FwcGluZyBgc3lzdGVtX3VuYm91bmRfd3FgIGZvciBgc3lzdGVtX2RmbF93cWAuICBJcyB0aGlzIGV2ZW4gd29ydGggYm90aGVyaW5nIHdpdGggaW4gdGVybXMgb2YgZnV6emluZz8gSXQgZG9lc24ndCBpbnRyb2R1Y2UgYW55ICpuZXcqIGxvZ2ljLCBqdXN0IGNoYW5nZXMgd2hlcmUgYSBkZWxheWVkIHdvcmsgaXRlbSBnZXRzIHNjaGVkdWxlZC4gIFN5emthbGxlciBwcm9iYWJseSB3b24ndCBmaW5kIGJ1Z3MgZGlyZWN0bHkgcmVsYXRlZCB0byAqdGhpcyogY2hhbmdlIHVubGVzcyBpdCBleHBvc2VzIG9yIGZpeGVzIGEgcmFjZSBjb25kaXRpb24sIGFuZCB0aGF0J3Mgbm90IG9idmlvdXMgZnJvbSBhIGdsYW5jZS5cblxuQnV0IGxldCdzIGxvb2sgYXQgdGhlIGluc3RydWN0aW9ucywgd2hpY2ggc2F5IG5vdCB0byBmdXp6IHRoaXMgaWYgaXQncyBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgZGVjb3JhdGlvbiwgbnVtZXJpYyBjaGFuZ2VzIHdpdGhvdXQgZmxvdyBhbHRlcmF0aW9uLCBvciB1bnJlYWNoYWJsZSBjb2RlLiAgSXMgdGhpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlPyBZZXMsIGNoYW5naW5nIHRoZSB3b3JrcXVldWUgKmlzKiBmdW5jdGlvbmFsOyBkaWZmZXJlbnQgd29ya3F1ZXVlcyBoYXZlIGRpZmZlcmVudCBwcm9wZXJ0aWVzLiAgSXMgaXQgaW1wb3NzaWJsZSB0byByZWFjaD8gYGl3bHdpZmlgIGlzIGEgUENJIGRyaXZlciwgc28gUENJIGZ1enppbmcgbWFrZXMgaXQgcmVhY2hhYmxlLiBBbmQgaXQncyByZWFsIGhhcmR3YXJlLCBub3QgZW11bGF0ZWQuXG5cbk5vdywgY2FuIGl0IGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVU/IFN5emthbGxlciBoYXMgYHN5el9wY2lfZGV2aWNlYCwgd2hpY2ggaXMgcHJvbWlzaW5nLiBUaGUgcHJvYmxlbSBpcyBgaXdsd2lmaWAgKnJlcXVpcmVzKiBmaXJtd2FyZS4gSWYgdGhlIGZpcm13YXJlIGlzbid0IHByZXNlbnQsIHRoZSBkcml2ZXIgYmFpbHMgb3V0IGVhcmx5IGluIGBpd2xfcGNpX3Byb2JlYC4gU28gSSBuZWVkIHRvIGRpZyBpbnRvIGBpd2xfcGNpX3Byb2JlYCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTk2MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyMzozMS42MjY0MjczOFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQxMDg3NTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9wY2lfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtMzItICogVGhpcyBjb21wb25lbnQgaW1wbGVtZW50cyB0aGUgc3lzdGVtIGZsb3dzIHN1Y2ggYXMgYnVzIGVudW1lcmF0aW9uLCBidXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaDozMzogKiByZW1vdmFsLiBCdXMgZGVwZW5kZW50IHBhcnRzIG9mIHN5c3RlbSBmbG93cyAoc3VjaCBhcyBpd2xfcGNpX3Byb2JlKSBhcmUgaW5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC0zNC0gKiBidXMgc3BlY2lmaWMgZmlsZXMgKHRyYW5zcG9ydCBmaWxlcykuIFRoaXMgaXMgdGhlIGNvZGUgdGhhdCBpcyBjb21tb24gYW1vbmdcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYz0xMTQ3PUVYUE9SVF9TWU1CT0xfSUZfSVdMV0lGSV9LVU5JVChpd2xfcGNpX2ZpbmRfZGV2X2luZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYzoxMTQ5OnN0YXRpYyBpbnQgaXdsX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTE1MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM9MTMzOD1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaXdsX3BjaV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTM0MC1cXHQuaWRfdGFibGUgPSBpd2xfaHdfY2FyZF9pZHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jOjEzNDE6XFx0LnByb2JlID0gaXdsX3BjaV9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTM0Mi1cXHQucmVtb3ZlID0gaXdsX3BjaV9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjIzOjMxLjg2NzUyODY1M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDc1ODA1MjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBGaXJtd2FyZSBMb2FkaW5nIE1lY2hhbmlzbSoqXG5cbk9rYXksIHNvIEkgd2FudCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIEludGVsIHdpcmVsZXNzIGRyaXZlciBoYW5kbGVzIGZpcm13YXJlIGxvYWRpbmcuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBgaXdsX3BjaV9wcm9iZWAgZnVuY3Rpb24uIFRoYXQncyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCwgcmlnaHQ/IEl0J3Mgd2hlcmUgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbiBoYXBwZW5zLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGlzIGhhbmRsZWQgd2l0aGluIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHksIG9yIGlmIGl0J3MgZGVsZWdhdGVkIHRvIGEgaGVscGVyIGZ1bmN0aW9uIGNhbGxlZCBkdXJpbmcgdGhlIHByb2JlLiBJJ20gaG9waW5nIEkgY2FuIGxvY2F0ZSB0aGUgZmlybXdhcmUgbG9hZGluZyBzZXF1ZW5jZSBxdWlja2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTIyMywiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjIzOjM1LjM0MzMzOTMwMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzM0MTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTQ5LFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTE0OTpcXHRzdGF0aWMgaW50IGl3bF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuMTE1MDpcXHR7XFxuMTE1MTpcXHRcXHRjb25zdCBzdHJ1Y3QgaXdsX21hY19jZmcgKm1hY19jZmcgPSAodm9pZCAqKWVudC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuMTE1MjpcXHRcXHR1OCBfX2lvbWVtICpod19iYXNlO1xcbjExNTM6XFx0XFx0dTMyIGJhcjAsIGh3X3JldjtcXG4xMTU0OlxcdFxcdGludCByZXQ7XFxuMTE1NTpcXHRcXG4xMTU2OlxcdFxcdC8qIHJlYXNzaWduIG91ciBCQVIgMCBpZiBpbnZhbGlkIGR1ZSB0byBwb3NzaWJsZSBydW50aW1lIFBNIHJhY2VzICovXFxuMTE1NzpcXHRcXHRwY2lfcmVhZF9jb25maWdfZHdvcmQocGRldiwgUENJX0JBU0VfQUREUkVTU18wLCBcXHUwMDI2YmFyMCk7XFxuMTE1ODpcXHRcXHRpZiAoYmFyMCA9PSBQQ0lfQkFTRV9BRERSRVNTX01FTV9UWVBFXzY0KSB7XFxuMTE1OTpcXHRcXHRcXHRyZXQgPSBwY2lfYXNzaWduX3Jlc291cmNlKHBkZXYsIDApO1xcbjExNjA6XFx0XFx0XFx0aWYgKHJldClcXG4xMTYxOlxcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuMTE2MjpcXHRcXHR9XFxuMTE2MzpcXHRcXG4xMTY0OlxcdFxcdHJldCA9IHBjaW1fZW5hYmxlX2RldmljZShwZGV2KTtcXG4xMTY1OlxcdFxcdGlmIChyZXQpXFxuMTE2NjpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjExNjc6XFx0XFxuMTE2ODpcXHRcXHRwY2lfc2V0X21hc3RlcihwZGV2KTtcXG4xMTY5OlxcdFxcbjExNzA6XFx0XFx0cmV0ID0gcGNpbV9yZXF1ZXN0X2FsbF9yZWdpb25zKHBkZXYsIERSVl9OQU1FKTtcXG4xMTcxOlxcdFxcdGlmIChyZXQpIHtcXG4xMTcyOlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIlJlcXVlc3RpbmcgYWxsIFBDSSBCQVJzIGZhaWxlZC5cXFxcblxcXCIpO1xcbjExNzM6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4xMTc0OlxcdFxcdH1cXG4xMTc1OlxcdFxcbjExNzY6XFx0XFx0aHdfYmFzZSA9IHBjaW1faW9tYXAocGRldiwgMCwgMCk7XFxuMTE3NzpcXHRcXHRpZiAoIWh3X2Jhc2UpIHtcXG4xMTc4OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byBtYXAgQkFSIDAuXFxcXG5cXFwiKTtcXG4xMTc5OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjExODA6XFx0XFx0fVxcbjExODE6XFx0XFxuMTE4MjpcXHRcXHQvKiBXZSBjYW4ndCB1c2UgaXdsX3JlYWQzMiBiZWNhdXNlIHRyYW5zIHdhc24ndCBhbGxvY2F0ZWQgKi9cXG4xMTgzOlxcdFxcdGh3X3JldiA9IHJlYWRsKGh3X2Jhc2UgKyBDU1JfSFdfUkVWKTtcXG4xMTg0OlxcdFxcdGlmIChod19yZXYgPT0gMHhmZmZmZmZmZikge1xcbjExODU6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiSFdfUkVWPTB4RkZGRkZGRkYsIFBDSSBpc3N1ZXM/XFxcXG5cXFwiKTtcXG4xMTg2OlxcdFxcdFxcdHJldHVybiAtRUlPO1xcbjExODc6XFx0XFx0fVxcbjExODg6XFx0XFxuMTE4OTpcXHRcXHRyZXR1cm4gaXdsX3BjaV9nZW4xXzJfcHJvYmUocGRldiwgZW50LCBtYWNfY2ZnLCBod19iYXNlLCBod19yZXYpO1xcbjExOTA6XFx0fVxcbjExOTE6XFx0XFxuMTE5MjpcXHRzdGF0aWMgdm9pZCBpd2xfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4xMTkzOlxcdHtcXG4xMTk0OlxcdFxcdHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpO1xcbjExOTU6XFx0XFxuMTE5NjpcXHRcXHRpZiAoIXRyYW5zKVxcbjExOTc6XFx0XFx0XFx0cmV0dXJuO1xcbjExOTg6XFx0XFxuMTE5OTpcXHRcXHRpd2xfcGNpZV9nZW4xXzJfcmVtb3ZlKHRyYW5zKTtcXG4xMjAwOlxcdH1cXG4xMjAxOlxcdFxcbjEyMDI6XFx0I2lmZGVmIENPTkZJR19QTV9TTEVFUFxcbjEyMDM6XFx0XFxuMTIwNDpcXHRzdGF0aWMgaW50IGl3bF9wY2lfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXZpY2UpXFxuMTIwNTpcXHR7XFxuMTIwNjpcXHRcXHQvKiBCZWZvcmUgeW91IHB1dCBjb2RlIGhlcmUsIHRoaW5rIGFib3V0IFdvV0xBTi4gWW91IGNhbm5vdCBjaGVjayBoZXJlXFxuMTIwNzpcXHRcXHQgKiB3aGV0aGVyIFdvV0xBTiBpcyBlbmFibGVkIG9yIG5vdCwgYW5kIHlvdXIgY29kZSB3aWxsIHJ1biBldmVuIGlmXFxuMTIwODpcXHRcXHQgKiBXb1dMQU4gaXMgZW5hYmxlZCAtIGRvbid0IGtpbGwgdGhlIE5JQywgc29tZW9uZSBtYXkgbmVlZCBpdCBpbiBTeC5cXG4xMjA5OlxcdFxcdCAqL1xcbjEyMTA6XFx0XFxuMTIxMTpcXHRcXHRyZXR1cm4gMDtcXG4xMjEyOlxcdH1cXG4xMjEzOlxcdFxcbjEyMTQ6XFx0c3RhdGljIGludCBfaXdsX3BjaV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2aWNlLCBib29sIHJlc3RvcmUpXFxuMTIxNTpcXHR7XFxuMTIxNjpcXHRcXHRzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoZGV2aWNlKTtcXG4xMjE3OlxcdFxcdHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpO1xcbjEyMTg6XFx0XFx0c3RydWN0IGl3bF90cmFuc19wY2llICp0cmFuc19wY2llID0gSVdMX1RSQU5TX0dFVF9QQ0lFX1RSQU5TKHRyYW5zKTtcXG4xMjE5OlxcdFxcdGJvb2wgZGV2aWNlX3dhc19wb3dlcmVkX29mZiA9IGZhbHNlO1xcbjEyMjA6XFx0XFxuMTIyMTpcXHRcXHQvKiBCZWZvcmUgeW91IHB1dCBjb2RlIGhlcmUsIHRoaW5rIGFib3V0IFdvV0xBTi4gWW91IGNhbm5vdCBjaGVjayBoZXJlXFxuMTIyMjpcXHRcXHQgKiB3aGV0aGVyIFdvV0xBTiBpcyBlbmFibGVkIG9yIG5vdCwgYW5kIHlvdXIgY29kZSB3aWxsIHJ1biBldmVuIGlmXFxuMTIyMzpcXHRcXHQgKiBXb1dMQU4gaXMgZW5hYmxlZCAtIHRoZSBOSUMgbWF5IGJlIGFsaXZlLlxcbjEyMjQ6XFx0XFx0ICovXFxuMTIyNTpcXHRcXG4xMjI2OlxcdFxcdC8qXFxuMTIyNzpcXHRcXHQgKiBXZSBkaXNhYmxlIHRoZSBSRVRSWV9USU1FT1VUIHJlZ2lzdGVyICgweDQxKSB0byBrZWVwXFxuMTIyODpcXHRcXHQgKiBQQ0kgVHggcmV0cmllcyBmcm9tIGludGVyZmVyaW5nIHdpdGggQzMgQ1BVIHN0YXRlLlxcbjEyMjk6XFx0XFx0ICovXFxuMTIzMDpcXHRcXHRwY2lfd3JpdGVfY29uZmlnX2J5dGUocGRldiwgUENJX0NGR19SRVRSWV9USU1FT1VULCAweDAwKTtcXG4xMjMxOlxcdFxcbjEyMzI6XFx0XFx0aWYgKCF0cmFucy1cXHUwMDNlb3BfbW9kZSlcXG4xMjMzOlxcdFxcdFxcdHJldHVybiAwO1xcbjEyMzQ6XFx0XFxuMTIzNTpcXHRcXHRpZiAodGVzdF9iaXQoU1RBVFVTX0RFVklDRV9FTkFCTEVELCBcXHUwMDI2dHJhbnMtXFx1MDAzZXN0YXR1cykpIHtcXG4xMjM2OlxcdFxcdFxcdC8qXFxuMTIzNzpcXHRcXHRcXHQgKiBTY3JhdGNoIHZhbHVlIHdhcyBhbHRlcmVkLCB0aGlzIG1lYW5zIHRoZSBkZXZpY2Ugd2FzIHBvd2VyZWRcXG4xMjM4OlxcdFxcdFxcdCAqIG9mZiwgd2UgbmVlZCB0byByZXNldCBpdCBjb21wbGV0ZWx5LlxcbjEyMzk6XFx0XFx0XFx0ICogTm90ZTogTUFDIChiaXRzIDA6Nykgd2lsbCBiZSBjbGVhcmVkIHVwb24gc3VzcGVuZCBldmVuIHdpdGhcXG4xMjQwOlxcdFxcdFxcdCAqIHdvd2xhbiwgYnV0IG5vdCBiaXRzIFsxNTo4XS4gU28gaWYgd2UgaGF2ZSBiaXRzIHNldCBpbiBsb3dlclxcbjEyNDE6XFx0XFx0XFx0ICogd29yZCwgYXNzdW1lIHRoZSBkZXZpY2UgaXMgYWxpdmUuXFxuMTI0MjpcXHRcXHRcXHQgKiBBbHRlcm5hdGl2ZWx5LCBpZiB0aGUgc2NyYXRjaCB2YWx1ZSBpcyAweEZGRkZGRkZGLCB0aGVuIHdlXFxuMTI0MzpcXHRcXHRcXHQgKiBubyBsb25nZXIgaGF2ZSBhY2Nlc3MgdG8gdGhlIGRldmljZSBhbmQgY29uc2lkZXIgaXQgcG93ZXJlZFxcbjEyNDQ6XFx0XFx0XFx0ICogb2ZmLlxcbjEyNDU6XFx0XFx0XFx0ICogRm9yIG9sZGVyIGRldmljZXMsIGp1c3QgdHJ5IHNpbGVudGx5IHRvIGdyYWIgdGhlIE5JQy5cXG4xMjQ2OlxcdFxcdFxcdCAqL1xcbjEyNDc6XFx0XFx0XFx0aWYgKHRyYW5zLVxcdTAwM2VtYWNfY2ZnLVxcdTAwM2VkZXZpY2VfZmFtaWx5IFxcdTAwM2U9IElXTF9ERVZJQ0VfRkFNSUxZX0JaKSB7XFxuMTI0ODpcXHRcXHRcXHRcXHR1MzIgc2NyYXRjaCA9IGl3bF9yZWFkMzIodHJhbnMsIENTUl9GVU5DX1NDUkFUQ0gpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyMzozNS4zNDU2Nzk2NDFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU0NTc3Mjc0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGl2aW5nIGludG8gdGhlIGBpd2xfcGNpX2dlbjFfMl9wcm9iZWAgRnVuY3Rpb24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMgYGl3bF9wY2lfZ2VuMV8yX3Byb2JlYCBmdW5jdGlvbi4gTGV0J3Mgc2VlLi4uIGFzIGEgc2Vhc29uZWQga2VybmVsIGRldmVsb3BlciwgbXkgZmlyc3QgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgYnJvYWRlciBJbnRlbCB3aXJlbGVzcyBkcml2ZXIgYXJjaGl0ZWN0dXJlLiBJIGtub3cgdGhpcyBuYW1pbmcgY29udmVudGlvbiwgc28gSSBleHBlY3QgaXQncyBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIFBDSS1iYXNlZCBkZXZpY2VzIGFuZCBwcm9iYWJseSBhIGdlbmVyYXRpb24gb3IgdHdvIG9mIHRoZSBlYXJseSBpd2wgaGFyZHdhcmUuIFRoaXMgcHJvYmUgZnVuY3Rpb24gaXMgY3JpdGljYWwuIEl0J3MgdGhlIGVudHJ5IHBvaW50LCB0aGUgZ2F0ZWtlZXBlciBmb3IgYnJpbmdpbmcgYSBzdXBwb3J0ZWQgZGV2aWNlIG9ubGluZS4gSXQncyB3aGVyZSB0aGUgaW5pdGlhbCBoYXJkd2FyZSBpZGVudGlmaWNhdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIGJhc2ljIHNldHVwIG9jY3VyLlxuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHNwZWNpZmljIGNoaXBzIGl0J3MgcmVzcG9uc2libGUgZm9yLiBXaGF0IHNwZWNpZmljIGhhcmR3YXJlIHJldmlzaW9ucz8gQXJlIHRoZXJlIGFueSBrbm93biBlcnJhdGEgb3IgcXVpcmt5IGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBwYXJ0aWN1bGFyIGdlbmVyYXRpb24gb2YgaGFyZHdhcmUgdGhhdCBJIHNob3VsZCBrZWVwIGluIG1pbmQ/IEFyZSB0aGVyZSBwbGF0Zm9ybS1zcGVjaWZpYyBkZXBlbmRlbmNpZXMgSSdsbCBuZWVkIHRvIHdhdGNoIG91dCBmb3I/IEl0IGxpa2VseSBuZWVkcyB0byBtYXRjaCB0aGUgUENJIElELCB3aGljaCBJJ2xsIHdhbnQgdG8gdmVyaWZ5LiBUaGF0J3MgYWx3YXlzIG15IGZpcnN0IGNoZWNrLiBJIGFsc28gd2FudCB0byBzZWUgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIG90aGVyIGxheWVycyBvZiB0aGUgZHJpdmVyIOKAkyB0aGUgY29yZSBpd2wgY29kZSwgdGhlIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyLCBhbmQgdGhlIG5ldCBkZXZpY2UgcmVnaXN0cmF0aW9uLiBEb2VzIGl0IGFsbG9jYXRlIGEgZGV2aWNlIGNvbnRleHQ/IFdoZXJlIGRvZXMgaXQgaGFuZGxlIGludGVycnVwdCBzZXR1cD8gV2hhdCBpcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UgdG8gcHJvYmUgdGhlIGRldmljZSwgZnJvbSBzdGFydCB0byBmaW5pc2g/IFdoZXJlIGRvZXMgdGhlIGZ1bmN0aW9uIGxlYXZlIG9mZj9cblxuSSBhbHNvIG5lZWQgdG8gc2VlIGlmIGl0J3MgZ290IHByb3BlciBlcnJvciBoYW5kbGluZy4gV2hhdCBhYm91dCBwb3dlciBtYW5hZ2VtZW50IGNvbnNpZGVyYXRpb25zPyBJIGV4cGVjdCBzb21lIGtpbmQgb2YgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgcmVhZC93cml0ZSwgcG90ZW50aWFsbHkgRE1BIHNldHVwLCBhbmQgaW50ZXJydXB0IHJvdXRpbmcuIEknbGwgd2FudCB0byBjaGVjayBob3cgaXQgaGFuZGxlcyB0aGVzZSBkZXRhaWxzIGFuZCBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4gSXQgbmVlZHMgdG8gYmUgcm9idXN0LCBncmFjZWZ1bGx5IGhhbmRsaW5nIGFueSBmYWlsdXJlcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYW5kIGVuc3VyaW5nIGEgY2xlYW4gcm9sbGJhY2sgaWYgdGhlIGRldmljZSBjYW4ndCBiZSBicm91Z2h0IHVwLiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLiBJJ20gcmVhZHkgdG8gZGl2ZSBpbiBhbmQgZ2V0IGEgZ3JpcCBvZiB0aGUgbml0dHkgZ3JpdHR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzA2MiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjM6MzkuODkxNDU3NjZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1OTA5MDYxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfcGNpX2dlbjFfMl9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM9MTE0OT1zdGF0aWMgaW50IGl3bF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTE4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM6MTE4OTpcXHRyZXR1cm4gaXdsX3BjaV9nZW4xXzJfcHJvYmUocGRldiwgZW50LCBtYWNfY2ZnLCBod19iYXNlLCBod19yZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMTkwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvaW50ZXJuYWwuaD0xMjA5PXZvaWQgaXdsX3BjaWVfYWxsb2NfZndfbW9uaXRvcihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgdTggbWF4X3Bvd2VyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL2ludGVybmFsLmg6MTIxMDppbnQgaXdsX3BjaV9nZW4xXzJfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9pbnRlcm5hbC5oLTEyMTEtXFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM9NDIwMD1zdGF0aWMgdm9pZCBpd2xfcGNpZV9jaGVja19tZV9zdGF0dXMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtNDIzMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM6NDIzMjppbnQgaXdsX3BjaV9nZW4xXzJfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTQyMzMtXFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjIzOjQwLjE1MDU1ODA5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MzM2NjI2NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipEaWdnaW5nIGludG8gaXdsXFxfcGNpXFxfZ2VuMVxcXzJcXF9wcm9iZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgdGFraW5nIGEgY2xvc2UgbG9vayBhdCB0aGUgYGl3bF9wY2lfZ2VuMV8yX3Byb2JlYCBmdW5jdGlvbi4gVGhlIGZpcnN0IHRoaW5nIEkgd2FudCB0byB1bmRlcnN0YW5kIGlzIGhvdyBpdCBoYW5kbGVzIGZpcm13YXJlIGxvYWRpbmcuIFRoYXQncyBhIGNyaXRpY2FsIHBhcnQgb2YgdGhlIHdpcmVsZXNzIGRyaXZlciBicmluZy11cCBwcm9jZXNzLCBhbmQgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciB0aGlzIHByb2JlIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBpbml0aWF0aW5nIGl0LCBhbmQgaWYgc28sIGhvdy4gSSdsbCBuZWVkIHRvIHRyYWNlIHRocm91Z2ggdGhlIGNvZGUsIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGNhbGxzIHJlbGF0ZWQgdG8gZmlybXdhcmUgbG9hZGluZyBBUElzIG9yIHN0cnVjdHVyZXMuIFRoaXMgaW5pdGlhbCBpbnZlc3RpZ2F0aW9uIHNob3VsZCBwcm92aWRlIGEgc29saWQgYmFzZWxpbmUgdW5kZXJzdGFuZGluZyBvZiBpdHMgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MDY2LCJPdXRwdXRUb2tlbnMiOjUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjM6NDMuNjg0MjI0MjgyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NjgxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDIzMixcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjQyMzI6XFx0aW50IGl3bF9wY2lfZ2VuMV8yX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbjQyMzM6XFx0XFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQsXFxuNDIzNDpcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IGl3bF9tYWNfY2ZnICptYWNfY2ZnLFxcbjQyMzU6XFx0XFx0XFx0XFx0IHU4IF9faW9tZW0gKmh3X2Jhc2UsIHUzMiBod19yZXYpXFxuNDIzNjpcXHR7XFxuNDIzNzpcXHRcXHRjb25zdCBzdHJ1Y3QgaXdsX2Rldl9pbmZvICpkZXZfaW5mbztcXG40MjM4OlxcdFxcdHN0cnVjdCBpd2xfdHJhbnNfaW5mbyBpbmZvID0ge1xcbjQyMzk6XFx0XFx0XFx0Lmh3X2lkID0gKHBkZXYtXFx1MDAzZWRldmljZSBcXHUwMDNjXFx1MDAzYyAxNikgKyBwZGV2LVxcdTAwM2VzdWJzeXN0ZW1fZGV2aWNlLFxcbjQyNDA6XFx0XFx0XFx0Lmh3X3JldiA9IGh3X3JldixcXG40MjQxOlxcdFxcdH07XFxuNDI0MjpcXHRcXHRzdHJ1Y3QgaXdsX3RyYW5zICppd2xfdHJhbnM7XFxuNDI0MzpcXHRcXHRzdHJ1Y3QgaXdsX3RyYW5zX3BjaWUgKnRyYW5zX3BjaWU7XFxuNDI0NDpcXHRcXHRpbnQgcmV0O1xcbjQyNDU6XFx0XFxuNDI0NjpcXHRcXHRpd2xfdHJhbnMgPSBpd2xfdHJhbnNfcGNpZV9hbGxvYyhwZGV2LCBtYWNfY2ZnLCBcXHUwMDI2aW5mbywgaHdfYmFzZSk7XFxuNDI0NzpcXHRcXHRpZiAoSVNfRVJSKGl3bF90cmFucykpXFxuNDI0ODpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihpd2xfdHJhbnMpO1xcbjQyNDk6XFx0XFxuNDI1MDpcXHRcXHR0cmFuc19wY2llID0gSVdMX1RSQU5TX0dFVF9QQ0lFX1RSQU5TKGl3bF90cmFucyk7XFxuNDI1MTpcXHRcXG40MjUyOlxcdFxcdGl3bF90cmFuc19wY2llX2NoZWNrX3Byb2R1Y3RfcmVzZXRfc3RhdHVzKHBkZXYpO1xcbjQyNTM6XFx0XFx0aXdsX3RyYW5zX3BjaWVfY2hlY2tfcHJvZHVjdF9yZXNldF9tb2RlKHBkZXYpO1xcbjQyNTQ6XFx0XFxuNDI1NTpcXHRcXHQvKiBzZXQgdGhlIHRoaW5ncyB3ZSBrbm93IHNvIGZhciBmb3IgdGhlIGdyYWIgTklDIGFjY2VzcyAqL1xcbjQyNTY6XFx0XFx0aXdsX3RyYW5zX3NldF9pbmZvKGl3bF90cmFucywgXFx1MDAyNmluZm8pO1xcbjQyNTc6XFx0XFxuNDI1ODpcXHRcXHQvKlxcbjQyNTk6XFx0XFx0ICogTGV0J3MgdHJ5IHRvIGdyYWIgTklDIGFjY2VzcyBlYXJseSBoZXJlLiBTb21ldGltZXMsIE5JQ3MgbWF5XFxuNDI2MDpcXHRcXHQgKiBmYWlsIHRvIGluaXRpYWxpemUsIGFuZCBpZiB0aGF0IGhhcHBlbnMgaXQncyBiZXR0ZXIgaWYgd2Ugc2VlXFxuNDI2MTpcXHRcXHQgKiBpc3N1ZXMgZWFybHkgb24gKGFuZCBjYW4gcmVwcm9iZSwgcGVyIHRoZSBsb2dpYyBpbnNpZGUpLCB0aGFuXFxuNDI2MjpcXHRcXHQgKiBmaXJzdCB0cnlpbmcgdG8gbG9hZCB0aGUgZmlybXdhcmUgZXRjLiBhbmQgcG90ZW50aWFsbHkgb25seVxcbjQyNjM6XFx0XFx0ICogZGV0ZWN0aW5nIGFueSBwcm9ibGVtcyB3aGVuIHRoZSBmaXJzdCBpbnRlcmZhY2UgaXMgYnJvdWdodCB1cC5cXG40MjY0OlxcdFxcdCAqL1xcbjQyNjU6XFx0XFx0cmV0ID0gaXdsX3BjaWVfcHJlcGFyZV9jYXJkX2h3KGl3bF90cmFucyk7XFxuNDI2NjpcXHRcXHRpZiAoIXJldCkge1xcbjQyNjc6XFx0XFx0XFx0cmV0ID0gaXdsX3RyYW5zX2FjdGl2YXRlX25pYyhpd2xfdHJhbnMpO1xcbjQyNjg6XFx0XFx0XFx0aWYgKHJldClcXG40MjY5OlxcdFxcdFxcdFxcdGdvdG8gb3V0X2ZyZWVfdHJhbnM7XFxuNDI3MDpcXHRcXHRcXHRpZiAoaXdsX3RyYW5zX2dyYWJfbmljX2FjY2Vzcyhpd2xfdHJhbnMpKSB7XFxuNDI3MTpcXHRcXHRcXHRcXHRnZXRfY3JmX2lkKGl3bF90cmFucywgXFx1MDAyNmluZm8pO1xcbjQyNzI6XFx0XFx0XFx0XFx0LyogYWxsIGdvb2QgKi9cXG40MjczOlxcdFxcdFxcdFxcdGl3bF90cmFuc19yZWxlYXNlX25pY19hY2Nlc3MoaXdsX3RyYW5zKTtcXG40Mjc0OlxcdFxcdFxcdH0gZWxzZSB7XFxuNDI3NTpcXHRcXHRcXHRcXHRyZXQgPSAtRUlPO1xcbjQyNzY6XFx0XFx0XFx0XFx0Z290byBvdXRfZnJlZV90cmFucztcXG40Mjc3OlxcdFxcdFxcdH1cXG40Mjc4OlxcdFxcdH1cXG40Mjc5OlxcdFxcbjQyODA6XFx0XFx0aW5mby5od19yZl9pZCA9IGl3bF9yZWFkMzIoaXdsX3RyYW5zLCBDU1JfSFdfUkZfSUQpO1xcbjQyODE6XFx0XFxuNDI4MjpcXHRcXHQvKlxcbjQyODM6XFx0XFx0ICogVGhlIFJGX0lEIGlzIHNldCB0byB6ZXJvIGluIGJsYW5rIE9UUCBzbyByZWFkIHZlcnNpb24gdG9cXG40Mjg0OlxcdFxcdCAqIGV4dHJhY3QgdGhlIFJGX0lELlxcbjQyODU6XFx0XFx0ICogVGhpcyBpcyByZWxldmFudCBvbmx5IGZvciBmYW1pbHkgOTAwMCBhbmQgdXAuXFxuNDI4NjpcXHRcXHQgKi9cXG40Mjg3OlxcdFxcdGlmIChpd2xfdHJhbnMtXFx1MDAzZW1hY19jZmctXFx1MDAzZWRldmljZV9mYW1pbHkgXFx1MDAzZT0gSVdMX0RFVklDRV9GQU1JTFlfOTAwMCBcXHUwMDI2XFx1MDAyNlxcbjQyODg6XFx0XFx0ICAgICFDU1JfSFdfUkZJRF9UWVBFKGluZm8uaHdfcmZfaWQpIFxcdTAwMjZcXHUwMDI2IG1hcF9jcmZfaWQoaXdsX3RyYW5zLCBcXHUwMDI2aW5mbykpIHtcXG40Mjg5OlxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuNDI5MDpcXHRcXHRcXHRnb3RvIG91dF9mcmVlX3RyYW5zO1xcbjQyOTE6XFx0XFx0fVxcbjQyOTI6XFx0XFxuNDI5MzpcXHRcXHRJV0xfSU5GTyhpd2xfdHJhbnMsIFxcXCJQQ0kgZGV2ICUwNHgvJTA0eCwgcmV2PTB4JXgsIHJmaWQ9MHgleFxcXFxuXFxcIixcXG40Mjk0OlxcdFxcdFxcdCBwZGV2LVxcdTAwM2VkZXZpY2UsIHBkZXYtXFx1MDAzZXN1YnN5c3RlbV9kZXZpY2UsXFxuNDI5NTpcXHRcXHRcXHQgaW5mby5od19yZXYsIGluZm8uaHdfcmZfaWQpO1xcbjQyOTY6XFx0XFxuNDI5NzpcXHQjaWYgIUlTX0VOQUJMRUQoQ09ORklHX0lXTE1MRClcXG40Mjk4OlxcdFxcdGlmIChpd2xfZHJ2X2lzX3dpZmk3X3N1cHBvcnRlZChpd2xfdHJhbnMpKSB7XFxuNDI5OTpcXHRcXHRcXHRJV0xfRVJSKGl3bF90cmFucyxcXG40MzAwOlxcdFxcdFxcdFxcdFxcXCJJV0xNTEQgbmVlZHMgdG8gYmUgY29tcGlsZWQgdG8gc3VwcG9ydCB0aGlzIGRldmljZVxcXFxuXFxcIik7XFxuNDMwMTpcXHRcXHRcXHRyZXQgPSAtRU9QTk9UU1VQUDtcXG40MzAyOlxcdFxcdFxcdGdvdG8gb3V0X2ZyZWVfdHJhbnM7XFxuNDMwMzpcXHRcXHR9XFxuNDMwNDpcXHQjZW5kaWZcXG40MzA1OlxcdFxcbjQzMDY6XFx0XFx0ZGV2X2luZm8gPSBpd2xfcGNpX2ZpbmRfZGV2X2luZm8ocGRldi1cXHUwMDNlZGV2aWNlLCBwZGV2LVxcdTAwM2VzdWJzeXN0ZW1fZGV2aWNlLFxcbjQzMDc6XFx0XFx0XFx0XFx0XFx0XFx0IENTUl9IV19SRklEX1RZUEUoaW5mby5od19yZl9pZCksXFxuNDMwODpcXHRcXHRcXHRcXHRcXHRcXHQgQ1NSX0hXX1JGSURfSVNfQ0RCKGluZm8uaHdfcmZfaWQpLFxcbjQzMDk6XFx0XFx0XFx0XFx0XFx0XFx0IElXTF9TVUJERVZJQ0VfUkZfSUQocGRldi1cXHUwMDNlc3Vic3lzdGVtX2RldmljZSksXFxuNDMxMDpcXHRcXHRcXHRcXHRcXHRcXHQgSVdMX1NVQkRFVklDRV9CV19MSU0ocGRldi1cXHUwMDNlc3Vic3lzdGVtX2RldmljZSksXFxuNDMxMTpcXHRcXHRcXHRcXHRcXHRcXHQgIWl3bF90cmFucy1cXHUwMDNlbWFjX2NmZy1cXHUwMDNlaW50ZWdyYXRlZCk7XFxuNDMxMjpcXHRcXHRpZiAoZGV2X2luZm8pIHtcXG40MzEzOlxcdFxcdFxcdGl3bF90cmFucy1cXHUwMDNlY2ZnID0gZGV2X2luZm8tXFx1MDAzZWNmZztcXG40MzE0OlxcdFxcdFxcdGluZm8ubmFtZSA9IGRldl9pbmZvLVxcdTAwM2VuYW1lO1xcbjQzMTU6XFx0XFx0fVxcbjQzMTY6XFx0XFxuNDMxNzpcXHQjaWYgSVNfRU5BQkxFRChDT05GSUdfSVdMTVZNKVxcbjQzMTg6XFx0XFxuNDMxOTpcXHRcXHQvKlxcbjQzMjA6XFx0XFx0ICogc3BlY2lhbC1jYXNlIDcyNjVELCBpdCBoYXMgdGhlIHNhbWUgUENJIElEcy5cXG40MzIxOlxcdFxcdCAqXFxuNDMyMjpcXHRcXHQgKiBOb3RlIHRoYXQgYmVjYXVzZSB3ZSBhbHJlYWR5IHBhc3MgdGhlIGNmZyB0byB0aGUgdHJhbnNwb3J0IGFib3ZlLFxcbjQzMjM6XFx0XFx0ICogYWxsIHRoZSBwYXJhbWV0ZXJzIHRoYXQgdGhlIHRyYW5zcG9ydCB1c2VzIG11c3QsIHVudGlsIHRoYXQgaXNcXG40MzI0OlxcdFxcdCAqIGNoYW5nZWQsIGJlIGlkZW50aWNhbCB0byB0aGUgb25lcyBpbiB0aGUgNzI2NUQgY29uZmlndXJhdGlvbi5cXG40MzI1OlxcdFxcdCAqL1xcbjQzMjY6XFx0XFx0aWYgKGl3bF90cmFucy1cXHUwMDNlY2ZnID09IFxcdTAwMjZpd2w3MjY1X2NmZyBcXHUwMDI2XFx1MDAyNlxcbjQzMjc6XFx0XFx0ICAgIChpbmZvLmh3X3JldiBcXHUwMDI2IENTUl9IV19SRVZfVFlQRV9NU0spID09IENTUl9IV19SRVZfVFlQRV83MjY1RClcXG40MzI4OlxcdFxcdFxcdGl3bF90cmFucy1cXHUwMDNlY2ZnID0gXFx1MDAyNml3bDcyNjVkX2NmZztcXG40MzI5OlxcdCNlbmRpZlxcbjQzMzA6XFx0XFx0aWYgKCFpd2xfdHJhbnMtXFx1MDAzZWNmZykge1xcbjQzMzE6XFx0XFx0XFx0cHJfZXJyKFxcXCJObyBjb25maWcgZm91bmQgZm9yIFBDSSBkZXYgJTA0eC8lMDR4LCByZXY9MHgleCwgcmZpZD0weCV4XFxcXG5cXFwiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyMzo0My42ODQ2MTQ0NTJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUzNTQ3NzY0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5J3JlIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIFJlbWFpbmRlciBvZiBgaXdsX3BjaV9nZW4xXzJfcHJvYmVgKipcblxuQWxyaWdodCwgc28gd2UncmUgY29udGludWluZyBvdXIgZGlzc2VjdGlvbiBvZiBgaXdsX3BjaV9nZW4xXzJfcHJvYmVgLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0J3MgaGFwcGVuaW5nLiBJIGV4cGVjdCB0byBiZSBsb29raW5nIGZvciBrZXkgc3RlcHMsIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcywgYW5kIGVycm9yIGhhbmRsaW5nLiBJJ2xsIGJlIHNlYXJjaGluZyBmb3IgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBQQ0kgYnVzLCBob3cgaXQgaW5pdGlhbGl6ZXMgdGhlIGRldmljZSwgbGlrZWx5IHByb2JpbmcgZm9yIHNwZWNpZmljIGhhcmR3YXJlLCBhbmQgc2V0dGluZyB1cCBhbnkgbmVjZXNzYXJ5IGludGVycnVwdCBoYW5kbGVycy4gSSdsbCBiZSBwYXJ0aWN1bGFybHkgZm9jdXNlZCBvbiBob3cgaXQgdmVyaWZpZXMgdGhhdCB0aGUgZGV2aWNlIGlzLCBpbiBmYWN0LCBhIGNvbXBhdGlibGUgSW50ZWwgV2lyZWxlc3MgY2FyZCwgdmVyc2lvbiAxIG9yIDIuIEFsc28sIEknbSB3YXRjaGluZyBmb3IgYW55IHBvd2VyLW1hbmFnZW1lbnQgcmVsYXRlZCBjb2RlIOKAkyB0aGF0J3MgY3J1Y2lhbCBmb3IgYSBtb2Rlcm4gd2lyZWxlc3MgZHJpdmVyLiBBbmQgZmluYWxseSwgb2YgY291cnNlLCBJJ20gYW50aWNpcGF0aW5nIHRoZSBwb3RlbnRpYWwgcGl0ZmFsbHMg4oCTIGFueSBvYnZpb3VzIGVycm9yIGNvbmRpdGlvbnMgb3IgcmVzb3VyY2UgYWxsb2NhdGlvbiBpc3N1ZXMgdGhhdCBtaWdodCBhcmlzZS4gVGhpcyBpcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkOyBnZXR0aW5nIGEgd2lyZWxlc3MgY2FyZCB0byB3b3JrIGNvcnJlY3RseSBjYW4gYmUgY29tcGxleC4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjEzMywiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjM6NDguMjIwMDk1MDQyWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MTA4MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQzMzIsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI0MzMyOlxcdFxcdFxcdCAgICAgICBwZGV2LVxcdTAwM2VkZXZpY2UsIHBkZXYtXFx1MDAzZXN1YnN5c3RlbV9kZXZpY2UsXFxuNDMzMzpcXHRcXHRcXHQgICAgICAgaW5mby5od19yZXYsIGluZm8uaHdfcmZfaWQpO1xcbjQzMzQ6XFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG40MzM1OlxcdFxcdFxcdGdvdG8gb3V0X2ZyZWVfdHJhbnM7XFxuNDMzNjpcXHRcXHR9XFxuNDMzNzpcXHRcXG40MzM4OlxcdFxcdElXTF9JTkZPKGl3bF90cmFucywgXFxcIkRldGVjdGVkICVzXFxcXG5cXFwiLCBpbmZvLm5hbWUpO1xcbjQzMzk6XFx0XFxuNDM0MDpcXHRcXHRpZiAoaXdsX3RyYW5zLVxcdTAwM2VtYWNfY2ZnLVxcdTAwM2VtcV9yeF9zdXBwb3J0ZWQpIHtcXG40MzQxOlxcdFxcdFxcdGlmIChXQVJOX09OKCFpd2xfdHJhbnMtXFx1MDAzZWNmZy1cXHUwMDNlbnVtX3JiZHMpKSB7XFxuNDM0MjpcXHRcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbjQzNDM6XFx0XFx0XFx0XFx0Z290byBvdXRfZnJlZV90cmFucztcXG40MzQ0OlxcdFxcdFxcdH1cXG40MzQ1OlxcdFxcdFxcdHRyYW5zX3BjaWUtXFx1MDAzZW51bV9yeF9idWZzID0gaXdsX3RyYW5zX2dldF9udW1fcmJkcyhpd2xfdHJhbnMpO1xcbjQzNDY6XFx0XFx0fSBlbHNlIHtcXG40MzQ3OlxcdFxcdFxcdHRyYW5zX3BjaWUtXFx1MDAzZW51bV9yeF9idWZzID0gUlhfUVVFVUVfU0laRTtcXG40MzQ4OlxcdFxcdH1cXG40MzQ5OlxcdFxcbjQzNTA6XFx0XFx0aWYgKCFpd2xfdHJhbnMtXFx1MDAzZW1hY19jZmctXFx1MDAzZWludGVncmF0ZWQpIHtcXG40MzUxOlxcdFxcdFxcdHUxNiBsaW5rX3N0YXR1cztcXG40MzUyOlxcdFxcbjQzNTM6XFx0XFx0XFx0cGNpZV9jYXBhYmlsaXR5X3JlYWRfd29yZChwZGV2LCBQQ0lfRVhQX0xOS1NUQSwgXFx1MDAyNmxpbmtfc3RhdHVzKTtcXG40MzU0OlxcdFxcbjQzNTU6XFx0XFx0XFx0aW5mby5wY2llX2xpbmtfc3BlZWQgPVxcbjQzNTY6XFx0XFx0XFx0XFx0dTE2X2dldF9iaXRzKGxpbmtfc3RhdHVzLCBQQ0lfRVhQX0xOS1NUQV9DTFMpO1xcbjQzNTc6XFx0XFx0fVxcbjQzNTg6XFx0XFxuNDM1OTpcXHRcXHRpd2xfdHJhbnNfc2V0X2luZm8oaXdsX3RyYW5zLCBcXHUwMDI2aW5mbyk7XFxuNDM2MDpcXHRcXG40MzYxOlxcdFxcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBpd2xfdHJhbnMpO1xcbjQzNjI6XFx0XFxuNDM2MzpcXHRcXHRpd2xfcGNpZV9jaGVja19tZV9zdGF0dXMoaXdsX3RyYW5zKTtcXG40MzY0OlxcdFxcbjQzNjU6XFx0XFx0LyogdHJ5IHRvIGdldCBvd25lcnNoaXAgc28gdGhhdCB3ZSdsbCBrbm93IGlmIHdlIGRvbid0IG93biBpdCAqL1xcbjQzNjY6XFx0XFx0aXdsX3BjaWVfcHJlcGFyZV9jYXJkX2h3KGl3bF90cmFucyk7XFxuNDM2NzpcXHRcXG40MzY4OlxcdFxcdGl3bF90cmFucy1cXHUwMDNlZHJ2ID0gaXdsX2Rydl9zdGFydChpd2xfdHJhbnMpO1xcbjQzNjk6XFx0XFxuNDM3MDpcXHRcXHRpZiAoSVNfRVJSKGl3bF90cmFucy1cXHUwMDNlZHJ2KSkge1xcbjQzNzE6XFx0XFx0XFx0cmV0ID0gUFRSX0VSUihpd2xfdHJhbnMtXFx1MDAzZWRydik7XFxuNDM3MjpcXHRcXHRcXHRnb3RvIG91dF9mcmVlX3RyYW5zO1xcbjQzNzM6XFx0XFx0fVxcbjQzNzQ6XFx0XFxuNDM3NTpcXHRcXHQvKiByZWdpc3RlciB0cmFuc3BvcnQgbGF5ZXIgZGVidWdmcyBoZXJlICovXFxuNDM3NjpcXHRcXHRpd2xfdHJhbnNfcGNpZV9kYmdmc19yZWdpc3Rlcihpd2xfdHJhbnMpO1xcbjQzNzc6XFx0XFxuNDM3ODpcXHRcXHRyZXR1cm4gMDtcXG40Mzc5OlxcdFxcbjQzODA6XFx0b3V0X2ZyZWVfdHJhbnM6XFxuNDM4MTpcXHRcXHRpd2xfdHJhbnNfcGNpZV9mcmVlKGl3bF90cmFucyk7XFxuNDM4MjpcXHRcXHRyZXR1cm4gcmV0O1xcbjQzODM6XFx0fVxcbjQzODQ6XFx0XFxuNDM4NTpcXHR2b2lkIGl3bF9wY2llX2dlbjFfMl9yZW1vdmUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXFxuNDM4NjpcXHR7XFxuNDM4NzpcXHRcXHRzdHJ1Y3QgaXdsX3RyYW5zX3BjaWUgKnRyYW5zX3BjaWUgPSBJV0xfVFJBTlNfR0VUX1BDSUVfVFJBTlModHJhbnMpO1xcbjQzODg6XFx0XFxuNDM4OTpcXHRcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNnRyYW5zX3BjaWUtXFx1MDAzZW1lX3JlY2hlY2tfd2spO1xcbjQzOTA6XFx0XFxuNDM5MTpcXHRcXHRpd2xfZHJ2X3N0b3AodHJhbnMtXFx1MDAzZWRydik7XFxuNDM5MjpcXHRcXG40MzkzOlxcdFxcdGl3bF90cmFuc19wY2llX2ZyZWUodHJhbnMpO1xcbjQzOTQ6XFx0fVxcbjQzOTU6XFx0XFxuNDM5NjpcXHRpbnQgaXdsX3BjaWVfZ2VuMV8yX2FjdGl2YXRlX25pYyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcXG40Mzk3OlxcdHtcXG40Mzk4OlxcdFxcdGNvbnN0IHN0cnVjdCBpd2xfbWFjX2NmZyAqbWFjX2NmZyA9IHRyYW5zLVxcdTAwM2VtYWNfY2ZnO1xcbjQzOTk6XFx0XFx0dTMyIHBvbGxfcmVhZHk7XFxuNDQwMDpcXHRcXHRpbnQgZXJyO1xcbjQ0MDE6XFx0XFxuNDQwMjpcXHRcXHRpZiAobWFjX2NmZy1cXHUwMDNlYmlzcl93b3JrYXJvdW5kKSB7XFxuNDQwMzpcXHRcXHRcXHQvKiBlbnN1cmUgdGhlIFRPUCBGU00gaXNuJ3Qgc3RpbGwgaW4gcHJldmlvdXMgcmVzZXQgKi9cXG40NDA0OlxcdFxcdFxcdG1kZWxheSgyKTtcXG40NDA1OlxcdFxcdH1cXG40NDA2OlxcdFxcbjQ0MDc6XFx0XFx0LypcXG40NDA4OlxcdFxcdCAqIFNldCBcXFwiaW5pdGlhbGl6YXRpb24gY29tcGxldGVcXFwiIGJpdCB0byBtb3ZlIGFkYXB0ZXIgZnJvbVxcbjQ0MDk6XFx0XFx0ICogRDBVKiAtLVxcdTAwM2UgRDBBKiAocG93ZXJlZC11cCBhY3RpdmUpIHN0YXRlLlxcbjQ0MTA6XFx0XFx0ICovXFxuNDQxMTpcXHRcXHRpZiAobWFjX2NmZy1cXHUwMDNlZGV2aWNlX2ZhbWlseSBcXHUwMDNlPSBJV0xfREVWSUNFX0ZBTUlMWV9CWikge1xcbjQ0MTI6XFx0XFx0XFx0aXdsX3NldF9iaXQodHJhbnMsIENTUl9HUF9DTlRSTCxcXG40NDEzOlxcdFxcdFxcdFxcdCAgICBDU1JfR1BfQ05UUkxfUkVHX0ZMQUdfQlpfTUFDX0FDQ0VTU19SRVEgfFxcbjQ0MTQ6XFx0XFx0XFx0XFx0ICAgIENTUl9HUF9DTlRSTF9SRUdfRkxBR19NQUNfSU5JVCk7XFxuNDQxNTpcXHRcXHRcXHRwb2xsX3JlYWR5ID0gQ1NSX0dQX0NOVFJMX1JFR19GTEFHX01BQ19TVEFUVVM7XFxuNDQxNjpcXHRcXHR9IGVsc2Uge1xcbjQ0MTc6XFx0XFx0XFx0aXdsX3NldF9iaXQodHJhbnMsIENTUl9HUF9DTlRSTCxcXG40NDE4OlxcdFxcdFxcdFxcdCAgICBDU1JfR1BfQ05UUkxfUkVHX0ZMQUdfSU5JVF9ET05FKTtcXG40NDE5OlxcdFxcdFxcdHBvbGxfcmVhZHkgPSBDU1JfR1BfQ05UUkxfUkVHX0ZMQUdfTUFDX0NMT0NLX1JFQURZO1xcbjQ0MjA6XFx0XFx0fVxcbjQ0MjE6XFx0XFxuNDQyMjpcXHRcXHRpZiAobWFjX2NmZy1cXHUwMDNlZGV2aWNlX2ZhbWlseSA9PSBJV0xfREVWSUNFX0ZBTUlMWV84MDAwKVxcbjQ0MjM6XFx0XFx0XFx0dWRlbGF5KDIpO1xcbjQ0MjQ6XFx0XFxuNDQyNTpcXHRcXHQvKlxcbjQ0MjY6XFx0XFx0ICogV2FpdCBmb3IgY2xvY2sgc3RhYmlsaXphdGlvbjsgb25jZSBzdGFiaWxpemVkLCBhY2Nlc3MgdG9cXG40NDI3OlxcdFxcdCAqIGRldmljZS1pbnRlcm5hbCByZXNvdXJjZXMgaXMgc3VwcG9ydGVkLCBlLmcuIGl3bF93cml0ZV9wcnBoKClcXG40NDI4OlxcdFxcdCAqIGFuZCBhY2Nlc3NlcyB0byB1Q29kZSBTUkFNLlxcbjQ0Mjk6XFx0XFx0ICovXFxuNDQzMDpcXHRcXHRlcnIgPSBpd2xfcG9sbF9iaXRzKHRyYW5zLCBDU1JfR1BfQ05UUkwsIHBvbGxfcmVhZHksIDI1MDAwKTtcXG40NDMxOlxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjIzOjQ4LjIyMjYxMjExMVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTA4NDMxNjk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIGludG8gdGhlIGl3bF9kcnZfc3RhcnQgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IGBpd2xfZHJ2X3N0YXJ0YC4gVGhhdCdzIHdoZXJlIHRoZSBpbml0aWFsIGRyaXZlciBzdGFydHVwIHNlcXVlbmNlIGJlZ2lucywgd2hpY2gsIGluIHRoZSBjb250ZXh0IG9mIHRoZSBJbnRlbCBXaXJlbGVzcyBkcml2ZXIsIGlzIGdvaW5nIHRvIGJlIGNyaXRpY2FsLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGggZnJvbSBoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2VxdWVuY2luZyBhbmQgdGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLiBJcyBpdCBnb2luZyB0byB0cmlnZ2VyIGZpcm13YXJlIGxvYWRpbmcsIGhhcmR3YXJlIHByb2JpbmcsIGFuZCByZXNvdXJjZSBhbGxvY2F0aW9uPyBJJ2xsIHByb2JhYmx5IGJlIGRpdmluZyBpbnRvIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgc3RydWN0IGl3bF9wcml2IGFuZCBpdHMgZmllbGRzOiB3aGF0IGdldHMgc2V0IGluaXRpYWxseSwgYW5kIHdoYXQgZ2V0cyBkZWZlcnJlZD8gSSB3YW50IHRvIHNlZSBpZiB0aGlzIGlzIHdoZXJlIHRoZSBtYWluIGRldmljZSBlbnRyeSBwb2ludCBpcyByZWdpc3RlcmVkLiBBIGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgZnVuY3Rpb24gd2lsbCBsZWFkIHRvIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS4gSSBrbm93IHRoYXQgaXNzdWVzIGFyaXNpbmcgZHVyaW5nIHRoaXMgcGhhc2UgYXJlIGxpa2VseSB0byBiZSByZWxhdGVkIHRvIGhhcmR3YXJlIGRldGVjdGlvbiwgZmlybXdhcmUgbG9hZGluZyBlcnJvcnMsIG9yIGluaXRpYWwgcmVnaXN0ZXIgc2V0dXAgc28gaXQgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIHByb2Nlc3MuIFRoZSBmb2N1cyBvZiB1bmRlcnN0YW5kaW5nIHdpbGwgYmUgdGhlIGV4ZWN1dGlvbiBmbG93IGFuZCB0aGUgbWFpbiBkYXRhIHN0cnVjdHVyZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MDgxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyMzo1Mi4zMzEwNDg3ODhaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNzY3MjQ2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfZHJ2X3N0YXJ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTE2MzI9c3RhdGljIHZvaWQgaXdsX3JlcV9md19jYWxsYmFjayhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKnVjb2RlX3Jhdywgdm9pZCAqY29udGV4dClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE5NDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6MTk0ODpzdHJ1Y3QgaXdsX2RydiAqaXdsX2Rydl9zdGFydChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xOTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTQ3LSAqIDUpIFRoZSBidXMgc3BlY2lmaWMgY29tcG9uZW50IGNhbGxzIHRvIHRoZSBkcnYgYnVzIGFnbm9zdGljIHBhcnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaDo0ODogKiAgICAoaXdsX2Rydl9zdGFydClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaDo0OTogKiA2KSBpd2xfZHJ2X3N0YXJ0IGZldGNoZXMgdGhlIGZ3IEFTWU5DLCBpd2xfcmVxX2Z3X2NhbGxiYWNrXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtNTAtICogNykgaXdsX3JlcV9md19jYWxsYmFjayBwYXJzZXMgdGhlIGZ3IGZpbGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oPTU2PXN0cnVjdCBpd2xfcmZfY2ZnO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTU3LS8qKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oOjU4OiAqIGl3bF9kcnZfc3RhcnQgLSBzdGFydCB0aGUgZHJ2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtNTktICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTY3LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oOjY4OnN0cnVjdCBpd2xfZHJ2ICppd2xfZHJ2X3N0YXJ0KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC02OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYz00MjMyPWludCBpd2xfcGNpX2dlbjFfMl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy00MzY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYzo0MzY4OlxcdGl3bF90cmFucy1cXHUwMDNlZHJ2ID0gaXdsX2Rydl9zdGFydChpd2xfdHJhbnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy00MzY5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyMzo1Mi41Mzg3MjkzNzVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY5OTA4NzM0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBc3Nlc3NpbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIGFuIEludGVsIFdpLUZpIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIGBpd2xfZHJ2X3N0YXJ0YCBpcyBmZXRjaGluZyBmaXJtd2FyZSBhc3luY2hyb25vdXNseS4gUmlnaHQsIGFuZCBpZiB0aGUgZmlybXdhcmUncyBtaXNzaW5nLCBpdCBqdXN0IGZhaWxzLiBTeXprYWxsZXIgdXN1YWxseSBoYXMgYSBwcmV0dHkgbWluaW1hbCBzZXR1cCwgbm8gSW50ZWwgV2ktRmkgZmlybXdhcmUgZmlsZXMgdW5sZXNzIHdlIGV4cGxpY2l0bHkgaW5jbHVkZSB0aGVtIGluIHRoZSByb290ZnMuIEJ1dCBpdCBkb2VzIHRlc3QgUENJIGRldmljZXMsIGFuZCB0aGF0IGNhbiB0cmlwIHNvbWUgY29kZSBwYXRocy4gU28gdGhlIHF1ZXN0aW9uIGlzOiBpcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz9cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyB0cml2aWFsLCBhIHNpbmdsZSBsaW5lIGNoYW5nZSBpbiB0aGUgd29ya3F1ZXVlIGFzc2lnbm1lbnQ6XG5cbmBgYGNcbi1cdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fdW5ib3VuZF93cSwgXHUwMDI2dHJhbnMtXHUwMDNlcmVzdGFydC53ayxcbitcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX3dxLCBcdTAwMjZ0cmFucy1cdTAwM2VyZXN0YXJ0LndrLFxuYGBgXG5cbkl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc2hpZnRpbmcgZnJvbSBgc3lzdGVtX3VuYm91bmRfd3FgIHRvIGBzeXN0ZW1fZGZsX3dxYC4gQnV0IHRoYXQncyBpdC4gV2FpdCBhIG1pbnV0ZSwgdGhlIGluc3RydWN0aW9ucyBzYXkgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyBEb2N1bWVudGF0aW9uL0tjb25maWcgZmlsZXMsIGNvZGUgY29tbWVudHMsIGRlY29yYXRpdmUgY2hhbmdlcyBsaWtlIGxvZ2dpbmcsIGNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG9uJ3QgY2hhbmdlIHRoZSBleGVjdXRpb24gZmxvdywgb3IgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cblxuSXMgdGhpcyBwYXRoIHVucmVhY2hhYmxlPyBJZiBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgIG5lZWRzIHRoZSBmaXJtd2FyZSB0byBldmVuIGJlIHJlYWNoZWQsIGFuZCB0aGUgZmlybXdhcmUncyBhYnNlbnQsIHRoZW4gaXQncyBlZmZlY3RpdmVseSBhbiB1bnJlYWNoYWJsZSBjb2RlIHBhdGggaW4gb3VyIHR5cGljYWwgU3l6a2FsbGVyIHNldHVwLiBIbW0sIGJ1dCBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgIGlzIHNjaGVkdWxlZCBieSBgaXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0YC4gQ2FuIGBpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXRgIGJlIGNhbGxlZCBiZWZvcmUgZmlybXdhcmUgaXMgbG9hZGVkPyBXZSBuZWVkIHRvIHZlcmlmeSB0aGUgY2FsbCBjaGFpbiB0byBiZSBzdXJlLiBUaW1lIHRvIHJlLWNoZWNrIHRoZSBjYWxsZXJzIG9mIGBpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXRgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTA2NywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyMzo1OS4yMzc4MjExMDFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMzgzMDcxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaD0xMDAwPWl3bF90cmFuc19yZWxlYXNlX25pY19hY2Nlc3Moc3RydWN0IGl3bF90cmFucyAqdHJhbnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtMTAwMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oOjEwMDI6c3RhdGljIGlubGluZSB2b2lkIGl3bF90cmFuc19zY2hlZHVsZV9yZXNldChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTEwMDMtXFx0XFx0XFx0XFx0XFx0ICAgIGVudW0gaXdsX2Z3X2Vycm9yX3R5cGUgdHlwZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg9MTAyNT1zdGF0aWMgaW5saW5lIHZvaWQgaXdsX3RyYW5zX2Z3X2Vycm9yKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0xMDM0LVxcdFxcdGl3bF9vcF9tb2RlX25pY19lcnJvcih0cmFucy1cXHUwMDNlb3BfbW9kZSwgdHlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaDoxMDM1OlxcdFxcdGl3bF90cmFuc19zY2hlZHVsZV9yZXNldCh0cmFucywgdHlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0xMDM2LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvcnguYz0xODM3PXN0YXRpYyB2b2lkIGl3bF90cmFuc19wY2llX2hhbmRsZV9yZXNldF9pbnRlcnJ1cHQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3J4LmMtMTg4Mi1cXHRcXHRcXHR0cmFucy1cXHUwMDNlc3RhdGUgPSBJV0xfVFJBTlNfTk9fRlc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9yeC5jOjE4ODM6XFx0XFx0XFx0aXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0KHRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvcnguYy0xODg0LVxcdFxcdFxcdFxcdFxcdFxcdCBJV0xfRVJSX1RZUEVfVE9QX1JFU0VUX0JZX0JUKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvcnguYz0yMjYzPWlycXJldHVybl90IGl3bF9wY2llX2lycV9tc2l4X2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9yeC5jLTIzNzItXFx0XFx0XFx0XFx0XFx0ICAgICAgSVdMX0VSUl9UWVBFX1RPUF9GQVRBTF9FUlJPUik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9yeC5jOjIzNzM6XFx0XFx0XFx0aXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0KHRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvcnguYy0yMzc0LVxcdFxcdFxcdFxcdFxcdFxcdCBJV0xfRVJSX1RZUEVfVE9QX0ZBVEFMX0VSUk9SKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMtZ2VuMi5jPTUwND1pbnQgaXdsX3RyYW5zX3BjaWVfZ2VuMl9zdGFydF9mdyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMtZ2VuMi5jLTYyMy1cXHRcXHRcXHRcXHRcXHQgICAgICBJV0xfRVJSX1RZUEVfVE9QX1JFU0VUX0ZBSUxFRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy1nZW4yLmM6NjI0OlxcdFxcdFxcdGl3bF90cmFuc19zY2hlZHVsZV9yZXNldCh0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLWdlbjIuYy02MjUtXFx0XFx0XFx0XFx0XFx0XFx0IElXTF9FUlJfVFlQRV9UT1BfUkVTRVRfRkFJTEVEKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHgtZ2VuMi5jPTExOTc9aW50IGl3bF9wY2llX2dlbjJfZW5xdWV1ZV9oY21kKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90eC1nZW4yLmMtMTI5Ni1cXHRcXHRcXHRcXHQgICAgICBJV0xfRVJSX1RZUEVfQ01EX1FVRVVFX0ZVTEwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHgtZ2VuMi5jOjEyOTc6XFx0XFx0aXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0KHRyYW5zLCBJV0xfRVJSX1RZUEVfQ01EX1FVRVVFX0ZVTEwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHgtZ2VuMi5jLTEyOTgtXFx0XFx0aWR4ID0gLUVOT1NQQztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHguYz0xMzQzPWludCBpd2xfcGNpZV9lbnF1ZXVlX2hjbWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3R4LmMtMTQ1MS1cXHRcXHRcXHRcXHQgICAgICBJV0xfRVJSX1RZUEVfQ01EX1FVRVVFX0ZVTEwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHguYzoxNDUyOlxcdFxcdGl3bF90cmFuc19zY2hlZHVsZV9yZXNldCh0cmFucywgSVdMX0VSUl9UWVBFX0NNRF9RVUVVRV9GVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3R4LmMtMTQ1My1cXHRcXHRpZHggPSAtRU5PU1BDO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyMzo1OS40NTE2NjM2NzZaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTUxNTE1NjQyMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBvdGVudGlhbCBWdWxuZXJhYmlsaXRpZXMgaW4gYGl3bF9wY2llX2lycV9tc2l4X2hhbmRsZXJgKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBpd2xfcGNpZV9pcnFfbXNpeF9oYW5kbGVyYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGl0IG1pZ2h0IGJlIHN1c2NlcHRpYmxlIHRvIGludGVycnVwdCBpbmplY3Rpb24sIHNwZWNpZmljYWxseSB0aHJvdWdoIE1TSS1YIGludGVycnVwdHMuIFRoZSByZWFzb25pbmcgaXM6IGlmIHdlIGNhbiBtYW5pcHVsYXRlIHN5emthbGxlciB0byBpbmplY3QgdGhlc2UgaW50ZXJydXB0cyBzdWNjZXNzZnVsbHksIHdlIGNvdWxkIHBvdGVudGlhbGx5IHRyaWdnZXIgYSBjYWxsIHRvIGBpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXRgLiBUaGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgd2FudCB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBUaGVyZWZvcmUsIG15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgYGl3bF9wY2llX2lycV9tc2l4X2hhbmRsZXJgIGZ1bmN0aW9uIGNvZGUgaXRzZWxmIHdpdGggYSBjcml0aWNhbCBleWUsIGxvb2tpbmcgZm9yIGFueSB3ZWFrbmVzc2VzIG9yIGFzc3VtcHRpb25zIHRoYXQgY291bGQgYmUgZXhwbG9pdGVkIGluIHRoaXMgaW5qZWN0aW9uIHNjZW5hcmlvLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTIwNCwiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjI0OjE0LjYwMzIzMTk3WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwOTk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3J4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjM2NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjM2NTpcXHRcXG4yMzY2OlxcdFxcdGlmIChpbnRhX2h3IFxcdTAwMjYgTVNJWF9IV19JTlRfQ0FVU0VTX1JFR19UT1BfRkFUQUxfRVJSKSB7XFxuMjM2NzpcXHRcXHRcXHRJV0xfRVJSKHRyYW5zLCBcXFwiVE9QIEZhdGFsIGVycm9yIGRldGVjdGVkLCBpbnRhX2h3PTB4JXguXFxcXG5cXFwiLFxcbjIzNjg6XFx0XFx0XFx0XFx0aW50YV9odyk7XFxuMjM2OTpcXHRcXHRcXHRpZiAodHJhbnMtXFx1MDAzZW1hY19jZmctXFx1MDAzZWRldmljZV9mYW1pbHkgXFx1MDAzZT0gSVdMX0RFVklDRV9GQU1JTFlfQlopIHtcXG4yMzcwOlxcdFxcdFxcdFxcdHRyYW5zLVxcdTAwM2VyZXF1ZXN0X3RvcF9yZXNldCA9IDE7XFxuMjM3MTpcXHRcXHRcXHRcXHRpd2xfb3BfbW9kZV9uaWNfZXJyb3IodHJhbnMtXFx1MDAzZW9wX21vZGUsXFxuMjM3MjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBJV0xfRVJSX1RZUEVfVE9QX0ZBVEFMX0VSUk9SKTtcXG4yMzczOlxcdFxcdFxcdFxcdGl3bF90cmFuc19zY2hlZHVsZV9yZXNldCh0cmFucyxcXG4yMzc0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBJV0xfRVJSX1RZUEVfVE9QX0ZBVEFMX0VSUk9SKTtcXG4yMzc1OlxcdFxcdFxcdH1cXG4yMzc2OlxcdFxcdH1cXG4yMzc3OlxcdFxcbjIzNzg6XFx0XFx0LyogRXJyb3IgZGV0ZWN0ZWQgYnkgdUNvZGUgKi9cXG4yMzc5OlxcdFxcdGlmICgoaW50YV9maCBcXHUwMDI2IE1TSVhfRkhfSU5UX0NBVVNFU19GSF9FUlIpIHx8IHN3X2Vycikge1xcbjIzODA6XFx0XFx0XFx0SVdMX0VSUih0cmFucyxcXG4yMzgxOlxcdFxcdFxcdFxcdFxcXCJNaWNyb2NvZGUgU1cgZXJyb3IgZGV0ZWN0ZWQuIFJlc3RhcnRpbmcgMHglWC5cXFxcblxcXCIsXFxuMjM4MjpcXHRcXHRcXHRcXHRpbnRhX2ZoKTtcXG4yMzgzOlxcdFxcdFxcdGlzcl9zdGF0cy1cXHUwMDNlc3crKztcXG4yMzg0OlxcdFxcdFxcdC8qIGR1cmluZyBGVyByZXNldCBmbG93IHJlcG9ydCBlcnJvcnMgZnJvbSB0aGVyZSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyNDoxNC42MDM0NDM4MloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTYzNzQ2Mjc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBLZXJuZWwgQ3Jhc2ggUm91dGUqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMga2VybmVsIGlzc3VlIGFuZCB0aGlua2luZyBhYm91dCBhIHBvdGVudGlhbCBhdHRhY2sgdmVjdG9yLiBJdCBsb29rcyBsaWtlIGlmIHN5emthbGxlciBjYW4gaW5qZWN0IGFuIE1TSS1YIGludGVycnVwdCwgc3BlY2lmaWNhbGx5IG9uZSB3aGVyZSB0aGUgYGludGFfaHdgIGZsYWcgaGFzIHRoZSBgTVNJWF9IV19JTlRfQ0FVU0VTX1JFR19UT1BfRkFUQUxfRVJSYCBiaXQgc2V0LCBpdCAqbWlnaHQqIGxlYWQgZG93biB0aGUgcmFiYml0IGhvbGUgdG8gYGl3bF90cmFuc19zY2hlZHVsZV9yZXNldGAuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIHBvdGVudGlhbGx5IGV4cGxvaXRhYmxlLiBCdXQgaG9sZCBvbiwgdGhlIGBpd2xfcGNpZV9pcnFfbXNpeF9oYW5kbGVyYCBpcyByZWdpc3RlcmVkIHdoZW4gTVNJLVggaXMgKmVuYWJsZWQqLlxuXG5UaGUgcXVlc3Rpb24gbm93IGJlY29tZXM6IGNhbiB3ZSBlbmFibGUgTVNJLVggc29tZWhvdyAqd2l0aG91dCogZmlybXdhcmUgaW50ZXJ2ZW50aW9uPyBUaGF0IHdvdWxkIGJ5cGFzcyBzb21lIG9mIHRoZSBleHBlY3RlZCBzYWZldHkgY2hlY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGJldHRlci4gTXkgbmV4dCBzdGVwIGlzIHRvIHRyYWNlIHRoZSByZWdpc3RyYXRpb24gb2YgaW50ZXJydXB0IHJlcXVlc3RzLiBUaW1lIHRvIGRpZyBpbnRvIHdoZXJlIGByZXF1ZXN0X2lycWAgaXMgYmVpbmcgY2FsbGVkIGFuZCBzZWUgaG93IE1TSS1YIGZpdHMgaW50byB0aGUgcGljdHVyZS4gTGV0J3Mgc2VlIGlmIHdlIGNhbiBmaW5kIHNvbWUgY2x1ZXMgdGhlcmUuIFRoaXMgY291bGQgYmUgYSBibGluZCBhbGxleSwgYnV0IGl0J3Mgd29ydGggYSBsb29rLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTg2MywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjI0OjE5LjE2NzE5MzcyNloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk0NjA5MTkzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZXF1ZXN0X2lycVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjQ6MTkuNzYxODE1Nzc5WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MTM3MzI4NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipEZWJ1Z2dpbmcgSVJRIEFsbG9jYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gaGl0dGluZyBhIHNuYWcgc29tZXdoZXJlIHdpdGggaW50ZXJydXB0IHJlcXVlc3QgKElSUSkgaGFuZGxpbmcuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgd2hhdCdzIGdvaW5nIG9uLiBMZXQncyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIHRoZSBjcnVjaWFsIElSUSBhbGxvY2F0aW9uIHJvdXRpbmVzLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gbG9vayBjbG9zZWx5IGF0IGVpdGhlciBgcmVxdWVzdF90aHJlYWRlZF9pcnFgIG9yIGBwY2lfYWxsb2NfaXJxX3ZlY3RvcnNgLiBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyByZXNwb25zaWJsZSBmb3IgZ2V0dGluZyBtZSB0aG9zZSBwcmVjaW91cyBpbnRlcnJ1cHRzLCBzbyBhbnkgaXNzdWVzIGFyZSBsaWtlbHkgc3VyZmFjaW5nIHRoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBpcyBhbGxvY2F0aW5nIHRoZW0gYW5kIGlmIHNvbWV0aGluZyBpc24ndCBxdWl0ZSByaWdodCBpbiB0aGUgbG9naWMuIEdvdHRhIGNoZWNrIHRoZSBhcmd1bWVudHMgYmVpbmcgcGFzc2VkLCB0aGUgcmV0dXJuIHZhbHVlcywgYW5kIGFueSBwb3RlbnRpYWwgZXJyb3IgY29uZGl0aW9ucyBiZWluZyBoYW5kbGVkLiBQZXJoYXBzIHRoZSBpbnRlcnJ1cHQgdmVjdG9yIHRhYmxlIGlzIGZ1bGwsIG9yIG1heWJlIHRoZXJlJ3MgYSByZXNvdXJjZSBjb25mbGljdCBzb21ld2hlcmUuIFRoaXMgaXMgd2hlcmUgdGhlIGRldGVjdGl2ZSB3b3JrIGJlZ2lucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIyNTMsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyNDoyMy42NzU1NTE3OThaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNDA2NjAyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZXF1ZXN0X3RocmVhZGVkX2lycVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM9MTY5Nz1zdGF0aWMgaW50IGl3bF9wY2llX2luaXRfbXNpeF9oYW5kbGVyKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTE3MTEtXFx0XFx0bXNpeF9lbnRyeSA9IFxcdTAwMjZ0cmFuc19wY2llLVxcdTAwM2Vtc2l4X2VudHJpZXNbaV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jOjE3MTI6XFx0XFx0cmV0ID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0xNzEzLVxcdFxcdFxcdFxcdFxcdFxcdG1zaXhfZW50cnktXFx1MDAzZXZlY3RvcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYz0zODAwPWl3bF90cmFuc19wY2llX2FsbG9jKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTM5NjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jOjM5Njc6XFx0XFx0cmV0ID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwZGV2LVxcdTAwM2VpcnEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTM5NjgtXFx0XFx0XFx0XFx0XFx0XFx0aXdsX3BjaWVfaXNyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyNDoyMy44ODk2MjgzNzRaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI5NTM1NjkyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHdoYXQncyBnb2luZyBvbiwgZnJhbWVkIGFzIGEgZmlyc3QtcGVyc29uIHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipEaXZpbmcgaW50byBgaXdsX3BjaWVfaW5pdF9tc2l4X2hhbmRsZXJgKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBmdW5jdGlvbiwgYGl3bF9wY2llX2luaXRfbXNpeF9oYW5kbGVyYC4gSW1tZWRpYXRlbHksIHRoZSBuYW1lIHRlbGxzIG1lIHdlJ3JlIGRlYWxpbmcgd2l0aCBNU0ktWCBpbnRlcnJ1cHQgaGFuZGxpbmcgd2l0aGluIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIgZm9yIFBDSWUgZGV2aWNlcy4gVGhhdCBtZWFucyB3ZSdyZSBsaWtlbHkgY29uZmlndXJpbmcgYW5kIHJlZ2lzdGVyaW5nIGFuIE1TSS1YIGludGVycnVwdCBoYW5kbGVyIGZvciB0aGUgSW50ZWwgd2lyZWxlc3MgYWRhcHRlciwgc3BlY2lmaWNhbGx5IGZvciBhIFBDSWUgYnVzLiBUaGlzIGlzIGtleSB0byBtb2Rlcm4sIGVmZmljaWVudCBpbnRlcnJ1cHQgbWFuYWdlbWVudC4gV2l0aCBNU0ktWCwgd2UgY2FuIGFsbG9jYXRlIGEgZGVkaWNhdGVkIGludGVycnVwdCB2ZWN0b3IgZm9yIGVhY2ggZGV2aWNlIGZ1bmN0aW9uLCBtaW5pbWl6aW5nIGludGVycnVwdCBsYXRlbmN5IGFuZCBpbXByb3ZpbmcgcGVyZm9ybWFuY2UsIGVzcGVjaWFsbHkgdW5kZXIgaGVhdnkgbmV0d29yayBsb2FkLiBJJ20gZXhwZWN0aW5nIHRoaXMgZnVuY3Rpb24gdG8gYmUgdGhlIGNvcmUgb2YgZW5hYmxpbmcgdGhvc2UgY2FwYWJpbGl0aWVzIGZvciB0aGUgY2FyZC4gSSBiZXQgaXQnbGwgaW5pdGlhbGl6ZSB0aGUgTVNJLVggdGFibGUsIHNldCB1cCB0aGUgaW50ZXJydXB0IHZlY3RvcnMsIGFuZCBwcm9iYWJseSByZWdpc3RlciB0aGUgaGFuZGxlciBmdW5jdGlvbiB3aXRoIHRoZSBrZXJuZWwuIEkgd29uZGVyIHdoYXQgdGhlIHNwZWNpZmljIGRldGFpbHMgYXJlIGZvciB0aGlzIGRyaXZlcidzIGNvbmZpZ3VyYXRpb24uIEkgaG9wZSB0aGV5IGFyZSB0YWtpbmcgcHJvcGVyIHByZWNhdXRpb25zIGFuZCBjb25zaWRlcmF0aW9ucyBmb3IgZXJyb3IgaGFuZGxpbmcuIExldCdzIHNlZSBob3cgaXQncyBpbXBsZW1lbnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI4NzksIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyNDoyOC4xODQ5ODg2NVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUxODYyMjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9wY2llX2luaXRfbXNpeF9oYW5kbGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYz0xNjcwPXN0YXRpYyB2b2lkIGl3bF9wY2llX2lycV9zZXRfYWZmaW5pdHkoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtMTY5Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM6MTY5NzpzdGF0aWMgaW50IGl3bF9wY2llX2luaXRfbXNpeF9oYW5kbGVyKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0xNjk4LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBpd2xfdHJhbnNfcGNpZSAqdHJhbnNfcGNpZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYz0zODAwPWl3bF90cmFuc19wY2llX2FsbG9jKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTM5NTgtXFx0aWYgKHRyYW5zX3BjaWUtXFx1MDAzZW1zaXhfZW5hYmxlZCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYzozOTU5OlxcdFxcdHJldCA9IGl3bF9wY2llX2luaXRfbXNpeF9oYW5kbGVyKHBkZXYsIHRyYW5zX3BjaWUsIGluZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0zOTYwLVxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjI0OjI4LjQzNjg2MzM4MVoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NDg4NjU5Nzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldDogV29ya3F1ZXVlIENoYW5nZSBpbiBpd2wgV2lGaSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjaW5nIHRoZSBleGVjdXRpb24gcGF0aC4gYGl3bF9wY2llX2luaXRfbXNpeF9oYW5kbGVyYCBnZXRzIGNhbGxlZCB3aXRoaW4gYGl3bF90cmFuc19wY2llX2FsbG9jYCwgd2hpY2ggaXRzZWxmIGlzIGNhbGxlZCBpbiBgaXdsX3BjaV9nZW4xXzJfcHJvYmVgLiBBbHJpZ2h0LCBzbyB0aGUgSVJRIGhhbmRsZXIgaXMgcmVnaXN0ZXJlZCAqZHVyaW5nKiB0aGUgcHJvYmUgc2VxdWVuY2UsIGV2ZW4gYmVmb3JlIHRoZSBmaXJtd2FyZSBpcyBsb2FkZWQuIFRoYXQncyBpbnRlcmVzdGluZy4uLiB0aGF0IG1lYW5zIHN5emthbGxlciBjb3VsZCBwb3RlbnRpYWxseSBpbmplY3QgYW4gaW50ZXJydXB0IHByZXR0eSBlYXJseSBvbi4gVGhpcyBpbnRlcnJ1cHQgd291bGQgdHJpZ2dlciBgaXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0YCwgcXVldWluZyBgdHJhbnMtXHUwMDNlcmVzdGFydC53a2AuIFRoZSB3b3JrIGZ1bmN0aW9uIGl0c2VsZiBpcyBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgLlxuXG5IYW5nIG9uIGEgc2VjLi4uIHRoZSB3b3JrIGlzIHF1ZXVlZCBvbiBgc3lzdGVtX2RmbF93cWAsIG5vdCBgc3lzdGVtX3VuYm91bmRfd3FgLiBOb3cgdGhhdCBpcyBhIHN1YnRsZSwgYnV0IGZ1bmN0aW9uYWxseSByZWxldmFudCBjaGFuZ2UuIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBldmVuIHdvcnRoIGZ1enppbmc/IEl0J3Mgbm90IGludHJvZHVjaW5nIG5ldyBjb2RlLCBqdXN0IG1vZGlmeWluZyB3aGVyZSB0aGUgd29yayBnZXRzIHNjaGVkdWxlZC4gQnV0LCB0aGUgaW5zdHJ1Y3Rpb25zIHNheSB0aGF0IGNoYW5nZXMgdG8gZXhlY3V0aW9uIGZsb3cgKmFyZSogd29ydGggZnV6emluZy4gXG5cbkxldCdzIGJyZWFrIGl0IGRvd246IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczogZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgY29tbWVudHMsIGxvZ2dpbmcsIGNvbnN0YW50cyB0aGF0IGRvbid0IGFsdGVyIGV4ZWN1dGlvbiBvciB1bnJlYWNoYWJsZSBjb2RlXCIuIENoYW5naW5nIHRoZSB3b3JrcXVldWUgZGVmaW5pdGVseSBhbHRlcnMgdGhlIGV4ZWN1dGlvbiBmbG93OyBpdCBydW5zIG9uIGEgZGlmZmVyZW50IHdvcmtxdWV1ZSB3aGljaCBjb3VsZCBoYXZlIGRpZmZlcmVudCBjb25jdXJyZW5jeS4gQW5kIGlzIGl0IHVucmVhY2hhYmxlPyBOb3BlLCB3ZSBqdXN0IGVzdGFibGlzaGVkIHdlIGNhbiBoaXQgYGl3bF90cmFuc19zY2hlZHVsZV9yZXNldGAgdGhyb3VnaCBhbiBpbnRlcnJ1cHQgaW5qZWN0ZWQgZHVyaW5nIHByb2JlLCBldmVuIGJlZm9yZSBmaXJtd2FyZS5cblxuV2FpdCwgbG9va2luZyBhdCBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgLCBpdCBjaGVja3MgYHRyYW5zLVx1MDAzZW9wX21vZGVgLiBPa2F5LCBsZXQncyBkaWcgaW50byB3aGF0IGBpd2xfdHJhbnNfcmVzdGFydF93a2AgYWN0dWFsbHkgZG9lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM1NzcsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjQ6MzUuOTI1NTI2NDc3WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MzMxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwMixcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIwMjpcXHRzdGF0aWMgdm9pZCBpd2xfdHJhbnNfcmVzdGFydF93ayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndrKVxcbiAyMDM6XFx0e1xcbiAyMDQ6XFx0XFx0c3RydWN0IGl3bF90cmFucyAqdHJhbnMgPSBjb250YWluZXJfb2Yod2ssIHR5cGVvZigqdHJhbnMpLFxcbiAyMDU6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHJlc3RhcnQud2sud29yayk7XFxuIDIwNjpcXHRcXHRlbnVtIGl3bF9yZXNldF9tb2RlIG1vZGU7XFxuIDIwNzpcXHRcXG4gMjA4OlxcdFxcdGlmICh0cmFucy1cXHUwMDNlcmVzdGFydC5tb2RlLnR5cGUgPT0gSVdMX0VSUl9UWVBFX1RPUF9SRVNFVF9CWV9CVCkge1xcbiAyMDk6XFx0XFx0XFx0aXdsX3RyYW5zX3NjaGVkdWxlX3JlcHJvYmUodHJhbnMsIElXTF9UUkFOU19UT1BfRk9MTE9XRVJfV0FJVCk7XFxuIDIxMDpcXHRcXHRcXHRyZXR1cm47XFxuIDIxMTpcXHRcXHR9XFxuIDIxMjpcXHRcXG4gMjEzOlxcdFxcdGlmICghdHJhbnMtXFx1MDAzZW9wX21vZGUpXFxuIDIxNDpcXHRcXHRcXHRyZXR1cm47XFxuIDIxNTpcXHRcXG4gMjE2OlxcdFxcdC8qIG1pZ2h0IGhhdmUgYmVlbiBzY2hlZHVsZWQgYmVmb3JlIG1hcmtlZCBhcyBkZWFkLCByZS1jaGVjayAqL1xcbiAyMTc6XFx0XFx0aWYgKHRlc3RfYml0KFNUQVRVU19UUkFOU19ERUFELCBcXHUwMDI2dHJhbnMtXFx1MDAzZXN0YXR1cykpXFxuIDIxODpcXHRcXHRcXHRyZXR1cm47XFxuIDIxOTpcXHRcXG4gMjIwOlxcdFxcdGl3bF9vcF9tb2RlX2R1bXBfZXJyb3IodHJhbnMtXFx1MDAzZW9wX21vZGUsIFxcdTAwMjZ0cmFucy1cXHUwMDNlcmVzdGFydC5tb2RlKTtcXG4gMjIxOlxcdFxcbiAyMjI6XFx0XFx0LypcXG4gMjIzOlxcdFxcdCAqIElmIHRoZSBvcG1vZGUgc3RvcHBlZCB0aGUgZGV2aWNlIHdoaWxlIHdlIHdlcmUgdHJ5aW5nIHRvIGR1bXAgYW5kXFxuIDIyNDpcXHRcXHQgKiByZXNldCwgdGhlbiB3ZSdsbCBoYXZlIGRvbmUgdGhlIGR1bXAgYWxyZWFkeSAoc3luY2hyb25pemVkIGJ5IHRoZVxcbiAyMjU6XFx0XFx0ICogb3Btb2RlIGxvY2sgdGhhdCBpdCB3aWxsIGFjcXVpcmUgaW4gaXdsX29wX21vZGVfZHVtcF9lcnJvcigpKSBhbmRcXG4gMjI2OlxcdFxcdCAqIG1hbmFnZWQgdGhhdCB2aWEgdHJhbnMtXFx1MDAzZXJlc3RhcnQubW9kZS5cXG4gMjI3OlxcdFxcdCAqIEFkZGl0aW9uYWxseSwgbWFrZSBzdXJlIHRoYXQgaW4gc3VjaCBhIGNhc2Ugd2Ugd29uJ3QgYXR0ZW1wdCB0byBkb1xcbiAyMjg6XFx0XFx0ICogYW55IHJlc2V0cyBub3csIHNpbmNlIGl0J3Mgbm8gbG9uZ2VyIHJlcXVlc3RlZC5cXG4gMjI5OlxcdFxcdCAqL1xcbiAyMzA6XFx0XFx0aWYgKCF0ZXN0X2FuZF9jbGVhcl9iaXQoU1RBVFVTX1JFU0VUX1BFTkRJTkcsIFxcdTAwMjZ0cmFucy1cXHUwMDNlc3RhdHVzKSlcXG4gMjMxOlxcdFxcdFxcdHJldHVybjtcXG4gMjMyOlxcdFxcbiAyMzM6XFx0XFx0aWYgKCFpd2x3aWZpX21vZF9wYXJhbXMuZndfcmVzdGFydClcXG4gMjM0OlxcdFxcdFxcdHJldHVybjtcXG4gMjM1OlxcdFxcbiAyMzY6XFx0XFx0bW9kZSA9IGl3bF90cmFuc19kZXRlcm1pbmVfcmVzdGFydF9tb2RlKHRyYW5zKTtcXG4gMjM3OlxcdFxcdGlmIChtb2RlID09IElXTF9SRVNFVF9NT0RFX0JBQ0tPRkYpIHtcXG4gMjM4OlxcdFxcdFxcdElXTF9FUlIodHJhbnMsIFxcXCJUb28gbWFueSBkZXZpY2UgZXJyb3JzIC0gZGVsYXkgbmV4dCByZXNldFxcXFxuXFxcIik7XFxuIDIzOTpcXHRcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF93cSwgXFx1MDAyNnRyYW5zLVxcdTAwM2VyZXN0YXJ0LndrLFxcbiAyNDA6XFx0XFx0XFx0XFx0XFx0ICAgSVdMX1RSQU5TX1JFU0VUX0RFTEFZKTtcXG4gMjQxOlxcdFxcdFxcdHJldHVybjtcXG4gMjQyOlxcdFxcdH1cXG4gMjQzOlxcdFxcbiAyNDQ6XFx0XFx0aXdsX3RyYW5zX2luY19yZXN0YXJ0X2NvdW50KHRyYW5zLVxcdTAwM2VkZXYpO1xcbiAyNDU6XFx0XFxuIDI0NjpcXHRcXHRzd2l0Y2ggKG1vZGUpIHtcXG4gMjQ3OlxcdFxcdGNhc2UgSVdMX1JFU0VUX01PREVfVE9QX1JFU0VUOlxcbiAyNDg6XFx0XFx0XFx0dHJhbnMtXFx1MDAzZWRvX3RvcF9yZXNldCA9IDE7XFxuIDI0OTpcXHRcXHRcXHRJV0xfRVJSKHRyYW5zLCBcXFwiRGV2aWNlIGVycm9yIC0gVE9QIHJlc2V0XFxcXG5cXFwiKTtcXG4gMjUwOlxcdFxcdFxcdGZhbGx0aHJvdWdoO1xcbiAyNTE6XFx0XFx0Y2FzZSBJV0xfUkVTRVRfTU9ERV9TV19SRVNFVDpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjQ6MzUuOTI1NzEyODU3WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NDIyNTQ5OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGVzZSB0aG91Z2h0cywgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyB0aGUgYXVkaWVuY2UgaXMgYW5vdGhlciBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBhIENvbmRpdGlvbmFsIFJldHVybioqXG5cbkFscmlnaHQsIEknbSBsb29raW5nIGF0IHRoaXMgcGllY2Ugb2YgY29kZSBhbmQgaW1tZWRpYXRlbHkgc2VlIGEgY29uZGl0aW9uYWwgcmV0dXJuOiBgaWYgKCF0cmFucy1cdTAwM2VvcF9tb2RlKWAuIE15IGZpcnN0IHRob3VnaHQgaXMsIFwiT2theSwgdGhhdCdzIGEgcXVpY2sgZXhpdC5cIiBCdXQgdGhlIGZvbGxvdy11cCBxdWVzdGlvbiBpcyBhbHdheXMgKndoeSo/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZW4gYHRyYW5zLVx1MDAzZW9wX21vZGVgIGlzIGFjdHVhbGx5IHNldC4gSXQncyBjcnVjaWFsIHRvIGtub3cgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzIHdlJ3JlIGJ5cGFzc2luZyB0aGUgcmVzdCBvZiB0aGUgZnVuY3Rpb24uXG5cblNvLCB3aGVyZSBpcyB0aGlzIGBvcF9tb2RlYCBmbGFnIGluaXRpYWxpemVkIG9yIG1vZGlmaWVkPyBNeSBndXQgZmVlbGluZyBpcyB0aGF0IGl0J3MgZ29pbmcgdG8gYmUgaW4gYW4gaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gbGlrZSBgaXdsX29wX21vZGVfc3RhcnRgLCBvciBzb21ldGhpbmcgc2ltaWxhcmx5IG5hbWVkIHRoYXQgZGVhbHMgd2l0aCBzZXR0aW5nIHVwIHRoZSBvcGVyYXRpb25hbCBtb2RlIG9mIHRoZSBkZXZpY2UuIEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSByZWxldmFudCBjb2RlIGFuZCBzZWUgdGhlIGxvZ2ljIGFyb3VuZCB0aGF0IHZhcmlhYmxlLiBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoaXMgY29uZGl0aW9uYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MjU4LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyNDozOS44Njc5NzA5MDNaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzA5NTY4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0cmFucy1cXHUwMDNlb3BfbW9kZSA9XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM9Mzg3PXZvaWQgaXdsX3RyYW5zX29wX21vZGVfZW50ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTM4OS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzozOTA6XFx0dHJhbnMtXFx1MDAzZW9wX21vZGUgPSBvcF9tb2RlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMzkxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYz00MTI9dm9pZCBpd2xfdHJhbnNfb3BfbW9kZV9sZWF2ZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtNDIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6NDIzOlxcdHRyYW5zLVxcdTAwM2VvcF9tb2RlID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTQyNC1cXHRtZW1zZXQoXFx1MDAyNnRyYW5zLVxcdTAwM2Vjb25mLCAwLCBzaXplb2YodHJhbnMtXFx1MDAzZWNvbmYpKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjQ6NDAuMDkxMTQ1NzM4WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NDY0MDc5NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqVHJhY2luZyB0aGUgQ2FsbGVycyBvZiBgaXdsX3RyYW5zX29wX21vZGVfZW50ZXJgKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBzdXJyb3VuZGluZyBgaXdsX3RyYW5zX29wX21vZGVfZW50ZXJgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBmaW5kIG91dCB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5ICp1c2VkKi4gSSdsbCBuZWVkIHRvIGxvY2F0ZSBhbGwgb2YgaXRzIGNhbGwgc2l0ZXMuIEtub3dpbmcgdGhlIGNhbGwgZ3JhcGggd2lsbCBnaXZlIG1lIGEgY3JpdGljYWwgdW5kZXJzdGFuZGluZyBvZiB0aGUgZW50cnkgcG9pbnRzIGludG8gdGhpcyBvcGVyYXRpb25hbCBtb2RlIG1hbmFnZW1lbnQuIFRoaXMgd2lsbCBsaWtlbHkgcHJvdmlkZSBpbnNpZ2h0IGludG8gaG93IHRoZSB2YXJpb3VzIG9wZXJhdGlvbmFsIG1vZGVzIChhY3RpdmUsIHNsZWVwLCBldGMuKSBhcmUgZW50ZXJlZCBhbmQgZXhpdGVkLiBJJ20gYXNzdW1pbmcgdGhpcyBmdW5jdGlvbiBpcyBjZW50cmFsIHRvIHRoZSBkcml2ZXIncyBwb3dlciBtYW5hZ2VtZW50IGFuZC9vciBvcGVyYXRpb25hbCBzdGF0ZSB0cmFuc2l0aW9ucy4gTGV0J3Mgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBjcm9zcy1yZWZlcmVuY2VzLiBJIGV4cGVjdCB0aGUgY2FsbCBzaXRlcyB0byBpbGx1bWluYXRlIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIgdHJhbnNpdGlvbnMgYmV0d2VlbiBkaWZmZXJlbnQgb3BlcmF0aW9uYWwgc3RhdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTgzMywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjI0OjQ0LjkzNzU1NzkzMloiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2NTcwNTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF90cmFuc19vcF9tb2RlX2VudGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYz0xMjMzPXN0YXRpYyBzdHJ1Y3QgaXdsX29wX21vZGUgKml3bF9vcF9tb2RlX2R2bV9zdGFydChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYy0xMzYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYzoxMzYzOlxcdGl3bF90cmFuc19vcF9tb2RlX2VudGVyKHByaXYtXFx1MDAzZXRyYW5zLCBvcF9tb2RlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTM2NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM9Mzg1PUlXTF9FWFBPUlRfU1lNQk9MKGl3bF9nZXRfY21kX3N0cmluZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0zODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzozODc6dm9pZCBpd2xfdHJhbnNfb3BfbW9kZV9lbnRlcihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTM4OC1cXHRcXHRcXHQgICAgIHN0cnVjdCBpd2xfb3BfbW9kZSAqb3BfbW9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMzk5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjQwMDpJV0xfRVhQT1JUX1NZTUJPTChpd2xfdHJhbnNfb3BfbW9kZV9lbnRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy00MDEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oPTM3Mj1zdHJ1Y3QgaXdsX2R1bXBfc2FuaXRpemVfb3BzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtMzgwLSAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaDozODE6ICogVGhlc2UgdmFsdWVzIHNob3VsZCBiZSBzZXQgYmVmb3JlIGl3bF90cmFuc19vcF9tb2RlX2VudGVyKCkuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0zODItICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg9ODE3PWNvbnN0IGNoYXIgKml3bF9nZXRfY21kX3N0cmluZyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgdTMyIGlkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTgxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oOjgxOTp2b2lkIGl3bF90cmFuc19vcF9tb2RlX2VudGVyKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtODIwLVxcdFxcdFxcdCAgICAgc3RydWN0IGl3bF9vcF9tb2RlICpvcF9tb2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21sZC5jPTM0OT1pd2xfbWxkX2NvbmZpZ3VyZV90cmFucyhzdHJ1Y3QgaXdsX29wX21vZGUgKm9wX21vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tbGQuYy0zODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWxkLmM6Mzg0OlxcdGl3bF90cmFuc19vcF9tb2RlX2VudGVyKHRyYW5zLCBvcF9tb2RlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tbGQuYy0zODUtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vb3BzLmM9MTE5Nz1pd2xfb3BfbW9kZV9tdm1fc3RhcnQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHN0cnVjdCBpd2xfcmZfY2ZnICpjZmcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuYy0xNDM1LVxcdC8qIENvbmZpZ3VyZSB0cmFuc3BvcnQgbGF5ZXIgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuYzoxNDM2OlxcdGl3bF90cmFuc19vcF9tb2RlX2VudGVyKG12bS1cXHUwMDNldHJhbnMsIG9wX21vZGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jLTE0MzctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjI0OjQ1LjE0NDE5MTY4OVoiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NDMxNDE4MTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBBbmFseXNpczogaXdsd2lmaSBXb3JrcXVldWUgQ2hhbmdlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgaXdsX29wX21vZGVfZHZtX3N0YXJ0YCBhbmQgYGl3bF9vcF9tb2RlX212bV9zdGFydGAgZ2V0dGluZyBjYWxsZWQgc2lnbmlmeSB0aGUgc3RhcnQgb2YgdGhlIG9wX21vZGUgYWZ0ZXIgZmlybXdhcmUgaXMgbG9hZGVkLiBTbywgdGhlIGB0cmFucy1cdTAwM2VvcF9tb2RlYCBpcyAqb25seSogc2V0IGFmdGVyIHRoYXQgZmlybXdhcmUgaXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBhbmQgcGFyc2VkLiBJZiB0aGUgZmlybXdhcmUgaXMgbWlzc2luZywgYHRyYW5zLVx1MDAzZW9wX21vZGVgIHdpbGwgYmUgTlVMTCwgYW5kIHRoZSBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgIGZ1bmN0aW9uIHdvdWxkIGJhaWwgb3V0IGVhcmx5LiBJbiBmYWN0LCBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgIGRpcmVjdGx5IGNoZWNrcyBmb3IgYCF0cmFucy1cdTAwM2VvcF9tb2RlYCBhbmQgcmV0dXJucyBpZiBpdCdzIHRydWUuIFRodXMsIHRoaXMgcGF0Y2gsIHRoZSBgcXVldWVfZGVsYXllZF93b3JrYCBjYWxsLCBpcyBvbmx5IGV2ZXIgcmVhY2hlZCBpZiBgdHJhbnMtXHUwMDNlb3BfbW9kZWAgKmlzKiBzZXQsIHdoaWNoIGNvbmZpcm1zIGZpcm13YXJlIGlzIGxvYWRlZC5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGZvciBmdXp6aW5nOiBEb2VzIHN5emthbGxlciBldmVuIGhhdmUgdGhlIGBpd2x3aWZpYCBmaXJtd2FyZT8gQmFzZWQgb24gbXkgZXhwZXJpZW5jZSB3aXRoIHN5emthbGxlciBpbnN0YW5jZXMsIGVzcGVjaWFsbHkgb24gR0NFLCBpdCdzIHZlcnkgdW5saWtlbHkuIFVubGVzcyB0aGUgZmlybXdhcmUgaXMgZXhwbGljaXRseSBpbmNsdWRlZCBpbiB0aGUgaW1hZ2UsIHN5emthbGxlciBkZXBsb3ltZW50cyBnZW5lcmFsbHkgZG8gbm90IHNoaXAgd2l0aCBpdCwgZGVzcGl0ZSBmdXp6aW5nIFBDSSBkZXZpY2VzIGFzIHBhcnQgb2YgaXRzIGNvcmUgZnVuY3Rpb25hbGl0eS5cblxuU28sIGlzIHRoaXMgcGF0Y2ggd29ydGggZnV6emluZz8gSG9uZXN0bHksIGl0J3MganVzdCBjaGFuZ2luZyBgc3lzdGVtX3VuYm91bmRfd3FgIHRvIGBzeXN0ZW1fZGZsX3dxYC4gRXZlbiBpZiByZWFjaGFibGUsIGl0J3MgYSBvbmUtbGluZSB3b3JrcXVldWUgY2hhbmdlLiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzIHdoZXRoZXIgdGhlIGNvZGUgcGF0aCBpcyAqcmVhY2hhYmxlKi5cblxuVG8gYW5zd2VyIHRoZSAnV29ydGhGdXp6aW5nPWZhbHNlJyBjcml0ZXJpYSwgSSBuZWVkIHRvIGp1c3RpZnkgbXkgcmVhc29uaW5nLiBJIGhhdmUgdG8gYXNrIG15c2VsZiwgaXMgdGhpcyBjb2RlIHBhdGggaW1wb3NzaWJsZSB0byByZWFjaD8gQWJzb2x1dGVseS4gU2luY2UgYGl3bHdpZmlgIHJlbGllcyBvbiBwcm9wcmlldGFyeSBJbnRlbCBmaXJtd2FyZSB0byBpbml0aWFsaXplIHRoZSBgb3BfbW9kZWAsIGFuZCB0aGF0IGZpcm13YXJlIGlzIHVubGlrZWx5IHRvIGJlIHByZXNlbnQsIGBpd2xfcGNpX3Byb2JlYCBvciBgaXdsX2Rydl9zdGFydGAgd2lsbCBmYWlsIHRvIGxvYWQgdGhlIGZpcm13YXJlIGFuZCwgdGhlcmVmb3JlLCB0aGUgYHRyYW5zLVx1MDAzZW9wX21vZGVgIHdpbGwgbmV2ZXIgYmUgc2V0LiBJdCB3aWxsIHN0b3AgbXVjaCBlYXJsaWVyIHdpdGggYSBmaXJtd2FyZSBsb2FkIGZhaWx1cmUuIGBpd2xfcmVxX2Z3X2NhbGxiYWNrYCBnZXRzIGNhbGxlZCB3aGVuIGZpcm13YXJlIGlzIGxvYWRlZDsgaWYgbm90LCBpdCBmYWlscy5cblxuVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGlzIHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgc3l6a2FsbGVyIHNldHVwLlxuXG4qKldvcnRoRnV6emluZz1mYWxzZSoqXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MDc3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjI0OjUzLjU3NTYxMjU5OVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA4NzYwNDAwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfcmVxX2Z3X2NhbGxiYWNrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTI5Mz1JV0xfRVhQT1JUX1NZTUJPTChpd2xfZHJ2X2dldF9md25hbWVfcHJlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0yOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6Mjk1OnN0YXRpYyB2b2lkIGl3bF9yZXFfZndfY2FsbGJhY2soY29uc3Qgc3RydWN0IGZpcm13YXJlICp1Y29kZV9yYXcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMjk2LVxcdFxcdFxcdFxcdHZvaWQgKmNvbnRleHQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9MzI1PXN0YXRpYyBpbnQgaXdsX3JlcXVlc3RfZmlybXdhcmUoc3RydWN0IGl3bF9kcnYgKmRydiwgYm9vbCBmaXJzdClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTM4NS1cXHRcXHRcXHRcXHQgICAgICAgZHJ2LVxcdTAwM2V0cmFucy1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjM4NjpcXHRcXHRcXHRcXHQgICAgICAgR0ZQX0tFUk5FTCwgZHJ2LCBpd2xfcmVxX2Z3X2NhbGxiYWNrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0zODctfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9MTYwOT1zdGF0aWMgdm9pZCBfaXdsX29wX21vZGVfc3RvcChzdHJ1Y3QgaXdsX2RydiAqZHJ2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTYyNi0vKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjE2Mjc6ICogaXdsX3JlcV9md19jYWxsYmFjayAtIGNhbGxiYWNrIHdoZW4gZmlybXdhcmUgd2FzIGxvYWRlZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE2MjgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE2MzEtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6MTYzMjpzdGF0aWMgdm9pZCBpd2xfcmVxX2Z3X2NhbGxiYWNrKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqdWNvZGVfcmF3LCB2b2lkICpjb250ZXh0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE2MzMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtNDgtICogICAgKGl3bF9kcnZfc3RhcnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6NDk6ICogNikgaXdsX2Rydl9zdGFydCBmZXRjaGVzIHRoZSBmdyBBU1lOQywgaXdsX3JlcV9md19jYWxsYmFja1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oOjUwOiAqIDcpIGl3bF9yZXFfZndfY2FsbGJhY2sgcGFyc2VzIHRoZSBmdyBmaWxlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6NTE6ICogOCkgaXdsX3JlcV9md19jYWxsYmFjayBzdGFydHMgdGhlIHdpZmkgaW1wbGVtZW50YXRpb24gdG8gbWF0Y2hlcyB0aGUgZndcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC01Mi0gKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjQ6NTUuNjYzMjMwODY0WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2NDc3NDIyMTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIEZpcm13YXJlIFJlcXVlc3QgQ2FsbGJhY2sqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcyBgaXdsX3JlcV9md19jYWxsYmFja2AgZnVuY3Rpb24uIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGhhbmRsZXMgdGhlIFwiZmlybXdhcmUgbm90IGZvdW5kXCIgc2NlbmFyaW8uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBncmFjZWZ1bCBkZWdyYWRhdGlvbiwgYW55IGVycm9yIHJlcG9ydGluZywgcmV0cmllcywgZmFsbGJhY2sgbWVjaGFuaXNtcywgb3IgZXZlbiBwb3RlbnRpYWwga2VybmVsIHBhbmljcyB0aGF0IG1pZ2h0IGJlIHRyaWdnZXJlZCBpZiB0aGUgZmlybXdhcmUgaXNuJ3QgcHJlc2VudCBkdXJpbmcgdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIG9yIGNyaXRpY2FsIG9wZXJhdGlvbmFsIHBoYXNlcy4gSSdsbCBiZSBsb29raW5nIGZvciBjbHVlcyBvbiBob3cgdGhlIGRyaXZlciByZWNvdmVycywgbG9ncyB0aGUgZXJyb3IsIGFuZCB3aGV0aGVyIGl0IGF0dGVtcHRzIGFsdGVybmF0aXZlIGFwcHJvYWNoZXMuIEknbSBrZWVuIHRvIGRldGVybWluZSBpZiB0aGlzIGNhbGxiYWNrIGlzIHRoZSBkZWZpbml0aXZlIHBvaW50IG9mIGZhaWx1cmUsIG9yIGlmIHRoZXJlJ3MgYW55IGNsZXZlcm5lc3MgYnVpbHQtaW4gdGhhdCBtaWdodCBzdXJwcmlzZSBtZS4gRXNzZW50aWFsbHksIEknbSBleHBlY3RpbmcgdGhpcyB0byBiZSBhbiBpbXBvcnRhbnQgcGllY2Ugb2YgZXJyb3IgaGFuZGxpbmcgYW5kIEkgaW50ZW5kIHRvIHVuZGVyc3RhbmQgaXQgZnVsbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4ODY1LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjU6MTIuMTQwNjU3MDI4WiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNDY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjMyLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNjMyOlxcdHN0YXRpYyB2b2lkIGl3bF9yZXFfZndfY2FsbGJhY2soY29uc3Qgc3RydWN0IGZpcm13YXJlICp1Y29kZV9yYXcsIHZvaWQgKmNvbnRleHQpXFxuMTYzMzpcXHR7XFxuMTYzNDpcXHRcXHRpbnQgbWluX2NvcmUsIG1heF9jb3JlLCBsb2FkZWRfY29yZTtcXG4xNjM1OlxcdFxcdHN0cnVjdCBpd2xfZHJ2ICpkcnYgPSBjb250ZXh0O1xcbjE2MzY6XFx0XFx0c3RydWN0IGl3bF9mdyAqZncgPSBcXHUwMDI2ZHJ2LVxcdTAwM2VmdztcXG4xNjM3OlxcdFxcdGNvbnN0IHN0cnVjdCBpd2xfdWNvZGVfaGVhZGVyICp1Y29kZTtcXG4xNjM4OlxcdFxcdHN0cnVjdCBpd2x3aWZpX29wbW9kZV90YWJsZSAqb3A7XFxuMTYzOTpcXHRcXHRpbnQgZXJyO1xcbjE2NDA6XFx0XFx0c3RydWN0IGl3bF9maXJtd2FyZV9waWVjZXMgKnBpZWNlcztcXG4xNjQxOlxcdFxcdHVuc2lnbmVkIGludCBhcGlfbWluLCBhcGlfbWF4O1xcbjE2NDI6XFx0XFx0c2l6ZV90IHRyaWdnZXJfdGx2X3N6W0ZXX0RCR19UUklHR0VSX01BWF07XFxuMTY0MzpcXHRcXHR1MzIgYXBpX3ZlcjtcXG4xNjQ0OlxcdFxcdGludCBpO1xcbjE2NDU6XFx0XFx0Ym9vbCB1c25pZmZlcl9pbWFnZXMgPSBmYWxzZTtcXG4xNjQ2OlxcdFxcdGJvb2wgZmFpbHVyZSA9IHRydWU7XFxuMTY0NzpcXHRcXG4xNjQ4OlxcdFxcdGl3bF9nZXRfdWNvZGVfYXBpX3ZlcnNpb25zKGRydi1cXHUwMDNldHJhbnMsIFxcdTAwMjZhcGlfbWluLCBcXHUwMDI2YXBpX21heCk7XFxuMTY0OTpcXHRcXG4xNjUwOlxcdFxcdGZ3LVxcdTAwM2V1Y29kZV9jYXBhLm1heF9wcm9iZV9sZW5ndGggPSBJV0xfREVGQVVMVF9NQVhfUFJPQkVfTEVOR1RIO1xcbjE2NTE6XFx0XFx0ZnctXFx1MDAzZXVjb2RlX2NhcGEuc3RhbmRhcmRfcGh5X2NhbGlicmF0aW9uX3NpemUgPVxcbjE2NTI6XFx0XFx0XFx0XFx0SVdMX0RFRkFVTFRfU1RBTkRBUkRfUEhZX0NBTElCUkFURV9UQkxfU0laRTtcXG4xNjUzOlxcdFxcdGZ3LVxcdTAwM2V1Y29kZV9jYXBhLm5fc2Nhbl9jaGFubmVscyA9IElXTF9ERUZBVUxUX1NDQU5fQ0hBTk5FTFM7XFxuMTY1NDpcXHRcXHRmdy1cXHUwMDNldWNvZGVfY2FwYS5udW1fc3RhdGlvbnMgPSBJV0xfU1RBVElPTl9DT1VOVF9NQVg7XFxuMTY1NTpcXHRcXHRmdy1cXHUwMDNldWNvZGVfY2FwYS5udW1fYmVhY29ucyA9IDE7XFxuMTY1NjpcXHRcXHRmdy1cXHUwMDNldWNvZGVfY2FwYS5udW1fbWNhc3Rfa2V5X2VudHJpZXMgPSAyO1xcbjE2NTc6XFx0XFx0LyogZHVtcCBhbGwgZncgbWVtb3J5IGFyZWFzIGJ5IGRlZmF1bHQgKi9cXG4xNjU4OlxcdFxcdGZ3LVxcdTAwM2VkYmcuZHVtcF9tYXNrID0gMHhmZmZmZmZmZjtcXG4xNjU5OlxcdFxcbjE2NjA6XFx0XFx0cGllY2VzID0ga3phbGxvY19vYmooKnBpZWNlcyk7XFxuMTY2MTpcXHRcXHRpZiAoIXBpZWNlcylcXG4xNjYyOlxcdFxcdFxcdGdvdG8gb3V0X2ZyZWVfZnc7XFxuMTY2MzpcXHRcXG4xNjY0OlxcdFxcdGlmICghdWNvZGVfcmF3KVxcbjE2NjU6XFx0XFx0XFx0Z290byB0cnlfYWdhaW47XFxuMTY2NjpcXHRcXG4xNjY3OlxcdFxcdElXTF9ERUJVR19GV19JTkZPKGRydiwgXFxcIkxvYWRlZCBmaXJtd2FyZSBmaWxlICclcycgKCV6ZCBieXRlcykuXFxcXG5cXFwiLFxcbjE2Njg6XFx0XFx0XFx0XFx0ICBkcnYtXFx1MDAzZWZpcm13YXJlX25hbWUsIHVjb2RlX3Jhdy1cXHUwMDNlc2l6ZSk7XFxuMTY2OTpcXHRcXG4xNjcwOlxcdFxcdC8qIE1ha2Ugc3VyZSB0aGF0IHdlIGdvdCBhdCBsZWFzdCB0aGUgQVBJIHZlcnNpb24gbnVtYmVyICovXFxuMTY3MTpcXHRcXHRpZiAodWNvZGVfcmF3LVxcdTAwM2VzaXplIFxcdTAwM2MgNCkge1xcbjE2NzI6XFx0XFx0XFx0SVdMX0VSUihkcnYsIFxcXCJGaWxlIHNpemUgd2F5IHRvbyBzbWFsbCFcXFxcblxcXCIpO1xcbjE2NzM6XFx0XFx0XFx0Z290byB0cnlfYWdhaW47XFxuMTY3NDpcXHRcXHR9XFxuMTY3NTpcXHRcXG4xNjc2OlxcdFxcdC8qIERhdGEgZnJvbSB1Y29kZSBmaWxlOiAgaGVhZGVyIGZvbGxvd2VkIGJ5IHVDb2RlIGltYWdlcyAqL1xcbjE2Nzc6XFx0XFx0dWNvZGUgPSAoY29uc3Qgc3RydWN0IGl3bF91Y29kZV9oZWFkZXIgKil1Y29kZV9yYXctXFx1MDAzZWRhdGE7XFxuMTY3ODpcXHRcXG4xNjc5OlxcdFxcdGlmICh1Y29kZS1cXHUwMDNldmVyKVxcbjE2ODA6XFx0XFx0XFx0ZXJyID0gaXdsX3BhcnNlX3YxX3YyX2Zpcm13YXJlKGRydiwgdWNvZGVfcmF3LCBwaWVjZXMpO1xcbjE2ODE6XFx0XFx0ZWxzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyNToxMi4xNDA4NzQzMjhaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzk4NTg4NDMxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIENvbmRpdGlvbmFsIExvZ2ljKipcblxuUmlnaHQsIHNvIEknbSBzZWVpbmcgYSBjb25kaXRpb25hbCBzdGF0ZW1lbnQgaGVyZS4gSXQncyBlc3NlbnRpYWxseSBzYXlpbmcsIFwiSWYgdGhlIHZhcmlhYmxlIGB1Y29kZV9yYXdgIGlzIE5PVCB0cnVlIChvciBtb3JlIHByZWNpc2VseSwgZmFsc3kpLCB0aGVuIGp1bXAgb3ZlciB0byBhIGxhYmVsIGNhbGxlZCBgdHJ5X2FnYWluYFwiLiAgVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGF0IGB1Y29kZV9yYXdgIGxpa2VseSByZXByZXNlbnRzIHNvbWUgc29ydCBvZiByYXcgaW5wdXQgb3IgdmFsaWRhdGlvbiBjaGVjay4gVGhlIHN5c3RlbSBpcyBkZXNpZ25lZCB0byBoYW5kbGUgYSBzcGVjaWZpYyB0eXBlIG9mIGlucHV0IGFuZCBpZiB0aGF0IGV4cGVjdGVkIGlucHV0IGlzbid0IHByZXNlbnQsIG9yIGRvZXNuJ3QgcGFzcyBzb21lIHByZS1kZWZpbmVkIGNoZWNrLCBpdCBkb2Vzbid0IHRyeSB0byBjb250aW51ZSBwcm9jZXNzaW5nLiBJdCBpcyBkZXNpZ25lZCB0byBsb29wIGJhY2sgYW5kIHRyeSBhZ2FpbiB0byBoYW5kbGUgdGhlIGlucHV0LiBUaGlzIGlzIGltcG9ydGFudCB0byBub3RlIGFzIGl0IHNob3dzIHRoYXQgbm8gbWF0dGVyIHdoYXQsIHRoZSBjb2RlIHdpbGwgY29udGludWUgdG8gdHJ5LlxuXG5NeSBuZXh0IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIHdoYXQncyBoYXBwZW5pbmcgYXQgYHRyeV9hZ2FpbmA/XCIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBlcnJvciBoYW5kbGluZyBvciB0aGUgcmV0cnkgbWVjaGFuaXNtIHRoYXQncyBiZWVuIGltcGxlbWVudGVkLiBJcyBpdCBhIHNpbXBsZSBsb29wIGJhY2sgdG8gcmUtcHJvbXB0IHRoZSB1c2VyPyBJcyB0aGVyZSBhbiBpbmNyZW1lbnRpbmcgY291bnRlciBzb21ld2hlcmUgdGhhdCB3b3VsZCB0cmlnZ2VyIGEgZGlmZmVyZW50IGFjdGlvbiBhZnRlciBhIGNlcnRhaW4gbnVtYmVyIG9mIGZhaWxlZCBhdHRlbXB0cz8gSSdtIGFscmVhZHkgbG9va2luZyBmb3IgdGhvc2UgaGludHMgd2l0aGluIHRoaXMgc21hbGwgc25pcHBldCBvZiBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDAxOSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjU6MjAuMTI2NzYxNjc4WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNDM0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODYwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxODYwOlxcdFxcdGlmIChwaWVjZXMtXFx1MDAzZWluc3RfZXZ0bG9nX3NpemUpXFxuMTg2MTpcXHRcXHRcXHRmdy1cXHUwMDNlaW5zdF9ldnRsb2dfc2l6ZSA9IChwaWVjZXMtXFx1MDAzZWluc3RfZXZ0bG9nX3NpemUgLSAxNikvMTI7XFxuMTg2MjpcXHRcXHRlbHNlXFxuMTg2MzpcXHRcXHRcXHRmdy1cXHUwMDNlaW5zdF9ldnRsb2dfc2l6ZSA9XFxuMTg2NDpcXHRcXHRcXHRcXHRkcnYtXFx1MDAzZXRyYW5zLVxcdTAwM2VtYWNfY2ZnLVxcdTAwM2ViYXNlLVxcdTAwM2VtYXhfZXZlbnRfbG9nX3NpemU7XFxuMTg2NTpcXHRcXHRmdy1cXHUwMDNlaW5zdF9lcnJsb2dfcHRyID0gcGllY2VzLVxcdTAwM2VpbnN0X2VycmxvZ19wdHI7XFxuMTg2NjpcXHRcXG4xODY3OlxcdFxcdC8qXFxuMTg2ODpcXHRcXHQgKiBmaWd1cmUgb3V0IHRoZSBvZmZzZXQgb2YgY2hhaW4gbm9pc2UgcmVzZXQgYW5kIGdhaW4gY29tbWFuZHNcXG4xODY5OlxcdFxcdCAqIGJhc2Ugb24gdGhlIHNpemUgb2Ygc3RhbmRhcmQgcGh5IGNhbGlicmF0aW9uIGNvbW1hbmRzIHRhYmxlIHNpemVcXG4xODcwOlxcdFxcdCAqL1xcbjE4NzE6XFx0XFx0aWYgKGZ3LVxcdTAwM2V1Y29kZV9jYXBhLnN0YW5kYXJkX3BoeV9jYWxpYnJhdGlvbl9zaXplIFxcdTAwM2VcXG4xODcyOlxcdFxcdCAgICBJV0xfTUFYX1BIWV9DQUxJQlJBVEVfVEJMX1NJWkUpXFxuMTg3MzpcXHRcXHRcXHRmdy1cXHUwMDNldWNvZGVfY2FwYS5zdGFuZGFyZF9waHlfY2FsaWJyYXRpb25fc2l6ZSA9XFxuMTg3NDpcXHRcXHRcXHRcXHRJV0xfTUFYX1NUQU5EQVJEX1BIWV9DQUxJQlJBVEVfVEJMX1NJWkU7XFxuMTg3NTpcXHRcXG4xODc2OlxcdFxcdC8qIFdlIGhhdmUgb3VyIGNvcGllcyBub3csIGFsbG93IE9TIHJlbGVhc2UgaXRzIGNvcGllcyAqL1xcbjE4Nzc6XFx0XFx0cmVsZWFzZV9maXJtd2FyZSh1Y29kZV9yYXcpO1xcbjE4Nzg6XFx0XFxuMTg3OTpcXHRcXHRpd2xfZGJnX3Rsdl9sb2FkX2JpbihkcnYtXFx1MDAzZXRyYW5zLVxcdTAwM2VkZXYsIGRydi1cXHUwMDNldHJhbnMpO1xcbjE4ODA6XFx0XFxuMTg4MTpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZpd2x3aWZpX29wbW9kZV90YWJsZV9tdHgpO1xcbjE4ODI6XFx0XFx0c3dpdGNoIChmdy1cXHUwMDNldHlwZSkge1xcbjE4ODM6XFx0XFx0Y2FzZSBJV0xfRldfRFZNOlxcbjE4ODQ6XFx0XFx0XFx0b3AgPSBcXHUwMDI2aXdsd2lmaV9vcG1vZGVfdGFibGVbRFZNX09QX01PREVdO1xcbjE4ODU6XFx0XFx0XFx0YnJlYWs7XFxuMTg4NjpcXHRcXHRkZWZhdWx0OlxcbjE4ODc6XFx0XFx0XFx0V0FSTigxLCBcXFwiSW52YWxpZCBmdyB0eXBlICVkXFxcXG5cXFwiLCBmdy1cXHUwMDNldHlwZSk7XFxuMTg4ODpcXHRcXHRcXHRmYWxsdGhyb3VnaDtcXG4xODg5OlxcdFxcdGNhc2UgSVdMX0ZXX01WTTpcXG4xODkwOlxcdFxcdFxcdG9wID0gXFx1MDAyNml3bHdpZmlfb3Btb2RlX3RhYmxlW01WTV9PUF9NT0RFXTtcXG4xODkxOlxcdFxcdFxcdGJyZWFrO1xcbjE4OTI6XFx0XFx0fVxcbjE4OTM6XFx0XFxuMTg5NDpcXHQjaWYgSVNfRU5BQkxFRChDT05GSUdfSVdMTUxEKVxcbjE4OTU6XFx0XFx0aWYgKGl3bF9kcnZfaXNfd2lmaTdfc3VwcG9ydGVkKGRydi1cXHUwMDNldHJhbnMpKVxcbjE4OTY6XFx0XFx0XFx0b3AgPSBcXHUwMDI2aXdsd2lmaV9vcG1vZGVfdGFibGVbTUxEX09QX01PREVdO1xcbjE4OTc6XFx0I2VuZGlmXFxuMTg5ODpcXHRcXG4xODk5OlxcdFxcdElXTF9JTkZPKGRydiwgXFxcImxvYWRlZCBmaXJtd2FyZSB2ZXJzaW9uICVzIG9wX21vZGUgJXNcXFxcblxcXCIsXFxuMTkwMDpcXHRcXHRcXHQgZHJ2LVxcdTAwM2Vmdy5md192ZXJzaW9uLCBvcC1cXHUwMDNlbmFtZSk7XFxuMTkwMTpcXHRcXG4xOTAyOlxcdFxcdC8qIGFkZCB0aGlzIGRldmljZSB0byB0aGUgbGlzdCBvZiBkZXZpY2VzIHVzaW5nIHRoaXMgb3BfbW9kZSAqL1xcbjE5MDM6XFx0XFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2ZHJ2LVxcdTAwM2VsaXN0LCBcXHUwMDI2b3AtXFx1MDAzZWRydik7XFxuMTkwNDpcXHRcXG4xOTA1OlxcdFxcdGlmIChvcC1cXHUwMDNlb3BzKSB7XFxuMTkwNjpcXHRcXHRcXHRkcnYtXFx1MDAzZW9wX21vZGUgPSBfaXdsX29wX21vZGVfc3RhcnQoZHJ2LCBvcCk7XFxuMTkwNzpcXHRcXG4xOTA4OlxcdFxcdFxcdGlmICghZHJ2LVxcdTAwM2VvcF9tb2RlKSB7XFxuMTkwOTpcXHRcXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNml3bHdpZmlfb3Btb2RlX3RhYmxlX210eCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjI1OjIwLjEyNjk3ODEzOFoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzIyMjg0MjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBJJ20gcmVhZHkgdG8gc3VtbWFyaXplIG15IHRob3VnaHQgcHJvY2Vzcy4gSGVyZSdzIGhvdyBJJ20gYXBwcm9hY2hpbmcgdGhpczpcblxuKipBbmFseXppbmcgdGhlIENvZGUgU3RydWN0dXJlOiBUaGUgYHRyeV9hZ2FpbmAgTGFiZWwqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgbXkgbWVudGFsIHBhcnNlciBmbGFncyBpcyB0aGUgcHJlc2VuY2Ugb2YgYSBgdHJ5X2FnYWluYCBsYWJlbC4gVGhhdCBpbW1lZGlhdGVseSB0cmlnZ2VycyBhIG1lbnRhbCBjaGVjayBvbiBpdHMgc3Vycm91bmRpbmcgY29udGV4dC4gQSBsYWJlbCBsaWtlIHRoYXQgc3Ryb25nbHkgc3VnZ2VzdHMgYSBsb29waW5nIG9yIHJldHJ5IG1lY2hhbmlzbSBpcyBpbiBwbGF5LiBJIGltbWVkaWF0ZWx5IHN0YXJ0IHBpY3R1cmluZyBwb3RlbnRpYWwgc2NlbmFyaW9zOlxuXG4qICAgKipFcnJvciBIYW5kbGluZzoqKiBJcyB0aGlzIGxhYmVsIGFzc29jaWF0ZWQgd2l0aCBhIGBnb3RvYCBzdGF0ZW1lbnQgKGlmIHRoZSBsYW5ndWFnZSBhbGxvd3MgdGhhdCwgd2hpY2ggaXMgYmVjb21pbmcgbGVzcyBhbmQgbGVzcyBjb21tb24pIG9yIHNvbWUgb3RoZXIgY29udHJvbCBmbG93IHN0cnVjdHVyZSB0aGF0IGp1bXBzIGJhY2sgdG8gdGhpcyBwb2ludD8gSSdtIGFudGljaXBhdGluZyBzb21lIGZvcm0gb2YgZXJyb3IgaGFuZGxpbmcsIGxpa2VseSB3aXRoaW4gYSBsb29wLCB3aGVyZSBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZywgdGhlIHByb2dyYW0gd2lsbCBqdW1wIGJhY2sgdG8gYHRyeV9hZ2FpbmAgdG8gYXR0ZW1wdCBhIGRpZmZlcmVudCBhcHByb2FjaCwgb3IgcGVyaGFwcyB0aGUgc2FtZSBvbmUgYWdhaW4uXG4qICAgKipSZXRyeSBMb2dpYzoqKiBJdCBjb3VsZCBpbmRpY2F0ZSBhbiBhdHRlbXB0IHRvIHNvbHZlIGEgcHJvYmxlbSB3aXRoIHNvbWUgZm9ybSBvZiBicnV0ZSBmb3JjZSwgd2hlcmUgaWYgaXQgZmFpbHMgb24gdGhlIGZpcnN0IHBhc3MsIGl0IGNpcmNsZXMgYmFjayB0byB0cnkgYW5vdGhlciBwZXJtdXRhdGlvbi4gSSdtIGltYWdpbmluZyBzaXR1YXRpb25zIGxpa2UgZGF0YWJhc2UgY29ubmVjdGlvbiBhdHRlbXB0cywgbmV0d29yayBjYWxscywgb3IgbWF5YmUgYSBzZWFyY2ggYWxnb3JpdGhtIHRoYXQgdXNlcyBhbiBpdGVyYXRpdmUgbWV0aG9kLlxuKiAgICoqRXh0ZXJuYWwgRmFjdG9yczoqKiBJdCBjb3VsZCBpbXBseSBhIGRlcGVuZGVuY3kgb24gZXh0ZXJuYWwgc291cmNlcyB3aGVyZSBpbnRlcm1pdHRlbnQgYXZhaWxhYmlsaXR5IG9yIHRyYW5zaWVudCBlcnJvcnMgYXJlIHBvc3NpYmxlLCBhbmQgdGh1cyB3YXJyYW50aW5nIGEgcmV0cnkuXG5cbkVzc2VudGlhbGx5LCBzZWVpbmcgYHRyeV9hZ2FpbmAgdGVsbHMgbWUgdG8gbG9vayBmb3IgYSBsb29wLCBhIGNvbmRpdGlvbmFsIHN0YXRlbWVudCwgYW5kIGEgcG90ZW50aWFsIHJlYXNvbiB3aHkgYW4gYXR0ZW1wdCBtaWdodCBmYWlsIGluIHRoZSBmaXJzdCBwbGFjZS4gVGhhdCBsYWJlbCBpcyBhIHNpZ25hbCB0byBtZSB0aGF0IEkgbmVlZCB0byB6b29tIGluIG9uIGEgc3BlY2lmaWMgc2VnbWVudCBvZiB0aGUgY29kZS4gTXkgZXhwZXJ0IHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBmaWVsZCB3aWxsIGFsbG93IG1lIHRvIHF1aWNrbHkgbWFwIG91dCB0aGUgZmxvdyBvZiB0aGUgYXBwbGljYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMjIxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyNToyNC40NDkyNjYzODFaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyMzM1MDI4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0cnlfYWdhaW46XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTE2MzI9c3RhdGljIHZvaWQgaXdsX3JlcV9md19jYWxsYmFjayhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKnVjb2RlX3Jhdywgdm9pZCAqY29udGV4dClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE5MjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6MTkyMjogdHJ5X2FnYWluOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE5MjMtXFx0LyogdHJ5IG5leHQsIGlmIGFueSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyNToyNS4xNzI2MjQ1NVoiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzgxNTQ3NDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIEJhY2sgaW50byBgaXdsX3JlcV9md19jYWxsYmFja2AgZnJvbSBgdHJ5X2FnYWluYCoqXG5cbkFscmlnaHQsIEknbSBnb2luZyBiYWNrIGludG8gYGl3bF9yZXFfZndfY2FsbGJhY2tgIGFmdGVyIHRoYXQganVtcCBmcm9tIGB0cnlfYWdhaW5gLiBJIG5lZWQgdG8gcmUtZmFtaWxpYXJpemUgbXlzZWxmIHdpdGggd2hhdCdzIGhhcHBlbmluZyBpbiB0aGlzIGZ1bmN0aW9uJ3MgY2FsbCBwYXRoLiBJIGtub3cgd2UncmUgZGVhbGluZyB3aXRoIGZpcm13YXJlIGxvYWRpbmcgaGVyZSwgYW5kIGBpd2xfcmVxX2Z3X2NhbGxiYWNrYCBpcyBjcnVjaWFsIGZvciBoYW5kbGluZyB0aGUgcmVxdWVzdHMsIHJpZ2h0PyBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZXJyb3IgaGFuZGxpbmcgcGFydGljdWxhcmx5LCBlc3BlY2lhbGx5IGFyb3VuZCBcInRyeV9hZ2FpblwiLiBXaGF0IHNwZWNpZmljIGZhaWx1cmUgbW9kZXMgaXMgdGhpcyBtZWNoYW5pc20gZGVzaWduZWQgdG8gYWRkcmVzcz8gSXMgdGhpcyBzb21lIHNvcnQgb2YgcmV0cnkgbWVjaGFuaXNtPyBBbmQgaWYgc28sIHdoYXQgYXJlIHRoZSBwYXJhbWV0ZXJzIGFyb3VuZCB0aG9zZSByZXRyaWVzPyBJJ20gdGhpbmtpbmcgSSBzaG91bGQgcHJvYmFibHkgdHJhY2sgYWxsIHBvc3NpYmxlIHNjZW5hcmlvcy4gSSBjYW4ndCBhZmZvcmQgdG8gbWlzcyBzb21ldGhpbmcgY3J1Y2lhbCBpbiBzdWNoIGEgbG93LWxldmVsIHJvdXRpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNzczLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjU6MjguNTU0MTc3NDY5WiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MDk1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxOTIyLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxOTIyOlxcdCB0cnlfYWdhaW46XFxuMTkyMzpcXHRcXHQvKiB0cnkgbmV4dCwgaWYgYW55ICovXFxuMTkyNDpcXHRcXHRyZWxlYXNlX2Zpcm13YXJlKHVjb2RlX3Jhdyk7XFxuMTkyNTpcXHRcXHRpZiAoaXdsX3JlcXVlc3RfZmlybXdhcmUoZHJ2LCBmYWxzZSkpXFxuMTkyNjpcXHRcXHRcXHRnb3RvIG91dF91bmJpbmQ7XFxuMTkyNzpcXHRcXHRnb3RvIGZyZWU7XFxuMTkyODpcXHRcXG4xOTI5OlxcdCBvdXRfZnJlZV9mdzpcXG4xOTMwOlxcdFxcdHJlbGVhc2VfZmlybXdhcmUodWNvZGVfcmF3KTtcXG4xOTMxOlxcdCBvdXRfdW5iaW5kOlxcbjE5MzI6XFx0XFx0Y29tcGxldGUoXFx1MDAyNmRydi1cXHUwMDNlcmVxdWVzdF9maXJtd2FyZV9jb21wbGV0ZSk7XFxuMTkzMzpcXHRcXHRkZXZpY2VfcmVsZWFzZV9kcml2ZXIoZHJ2LVxcdTAwM2V0cmFucy1cXHUwMDNlZGV2KTtcXG4xOTM0OlxcdFxcdC8qIGRydiBoYXMganVzdCBiZWVuIGZyZWVkIGJ5IHRoZSByZWxlYXNlICovXFxuMTkzNTpcXHRcXHRmYWlsdXJlID0gZmFsc2U7XFxuMTkzNjpcXHQgZnJlZTpcXG4xOTM3OlxcdFxcdGlmIChmYWlsdXJlKVxcbjE5Mzg6XFx0XFx0XFx0aXdsX2RlYWxsb2NfdWNvZGUoZHJ2KTtcXG4xOTM5OlxcdFxcbjE5NDA6XFx0XFx0aWYgKHBpZWNlcykge1xcbjE5NDE6XFx0XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUocGllY2VzLVxcdTAwM2VpbWcpOyBpKyspXFxuMTk0MjpcXHRcXHRcXHRcXHRrZnJlZShwaWVjZXMtXFx1MDAzZWltZ1tpXS5zZWMpO1xcbjE5NDM6XFx0XFx0XFx0a2ZyZWUocGllY2VzLVxcdTAwM2VkYmdfbWVtX3Rsdik7XFxuMTk0NDpcXHRcXHRcXHRrZnJlZShwaWVjZXMpO1xcbjE5NDU6XFx0XFx0fVxcbjE5NDY6XFx0fVxcbjE5NDc6XFx0XFxuMTk0ODpcXHRzdHJ1Y3QgaXdsX2RydiAqaXdsX2Rydl9zdGFydChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcXG4xOTQ5OlxcdHtcXG4xOTUwOlxcdFxcdHN0cnVjdCBpd2xfZHJ2ICpkcnY7XFxuMTk1MTpcXHRcXHRpbnQgcmV0O1xcbjE5NTI6XFx0XFxuMTk1MzpcXHRcXHRkcnYgPSBremFsbG9jX29iaigqZHJ2KTtcXG4xOTU0OlxcdFxcdGlmICghZHJ2KSB7XFxuMTk1NTpcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbjE5NTY6XFx0XFx0XFx0Z290byBlcnI7XFxuMTk1NzpcXHRcXHR9XFxuMTk1ODpcXHRcXG4xOTU5OlxcdFxcdGRydi1cXHUwMDNldHJhbnMgPSB0cmFucztcXG4xOTYwOlxcdFxcdGRydi1cXHUwMDNlZGV2ID0gdHJhbnMtXFx1MDAzZWRldjtcXG4xOTYxOlxcdFxcbjE5NjI6XFx0XFx0aW5pdF9jb21wbGV0aW9uKFxcdTAwMjZkcnYtXFx1MDAzZXJlcXVlc3RfZmlybXdhcmVfY29tcGxldGUpO1xcbjE5NjM6XFx0XFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmRydi1cXHUwMDNlbGlzdCk7XFxuMTk2NDpcXHRcXG4xOTY1OlxcdCNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuMTk2NjpcXHRcXHQvKiBDcmVhdGUgdGhlIGRldmljZSBkZWJ1Z2ZzIGVudHJpZXMuICovXFxuMTk2NzpcXHRcXHRkcnYtXFx1MDAzZWRiZ2ZzX2RydiA9IGRlYnVnZnNfY3JlYXRlX2RpcihkZXZfbmFtZSh0cmFucy1cXHUwMDNlZGV2KSxcXG4xOTY4OlxcdFxcdFxcdFxcdFxcdFxcdCAgICBpd2xfZGJnZnNfcm9vdCk7XFxuMTk2OTpcXHRcXG4xOTcwOlxcdFxcdC8qIENyZWF0ZSB0cmFuc3BvcnQgbGF5ZXIgZGVidWdmcyBkaXIgKi9cXG4xOTcxOlxcdFxcdGRydi1cXHUwMDNldHJhbnMtXFx1MDAzZWRiZ2ZzX2RpciA9IGRlYnVnZnNfY3JlYXRlX2RpcihcXFwidHJhbnNcXFwiLCBkcnYtXFx1MDAzZWRiZ2ZzX2Rydik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjI1OjI4LjU1NDQ0MjE4OFoiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxOTY1Njk0MzQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGl3bHdpZmkgRHJpdmVyIGFuZCBXb3JrcXVldWUgQ2hhbmdlcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSWYgdGhlIGZpcm13YXJlIGlzbid0IGZvdW5kLCB0aGUgZGV2aWNlIGdldHMgdW5ib3VuZCwgdGhlIGRyaXZlciBpcyByZW1vdmVkLCBhbmQgYGl3bF9wY2lfcmVtb3ZlYCBnZXRzIGNhbGxlZC4gTWFrZXMgc2Vuc2UuIFNvLCBpZiB0aGUgZHJpdmVyICpkb2Vzbid0KiBoYXZlIHRoZSBmaXJtd2FyZSwgaXQncyBub3Qgc3RpY2tpbmcgYXJvdW5kLiBJIHdhcyBpbml0aWFsbHkgd29ycmllZCB0aGF0IGFuIGludGVycnVwdCAqZHVyaW5nKiBmaXJtd2FyZSBsb2FkaW5nIG1pZ2h0IHRyaWdnZXIgYSByZXNldCwgYnV0IHRoZSBjb2RlIGNsZXZlcmx5IGNoZWNrcyBgdHJhbnMtXHUwMDNlb3BfbW9kZWAgaW4gYGl3bF90cmFuc19yZXN0YXJ0X3drYC4gU2luY2UgYHRyYW5zLVx1MDAzZW9wX21vZGVgIG9ubHkgZ2V0cyBzZXQgKmFmdGVyKiB0aGUgZmlybXdhcmUgaXMgbG9hZGVkLCB0aGF0IGVhcmx5IHJldHVybiBpbiBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgIGlzIGtleS4gSXQnbGwgcHJldmVudCB0aGUgcmVzZXQgaWYgdGhlIGZpcm13YXJlIGlzbid0IGxvYWRlZC5cblxuTm93LCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50ICp3aXRob3V0KiBzcGVjaWZpYyBmaXJtd2FyZSwgYHRyYW5zLVx1MDAzZW9wX21vZGVgIGlzIGFsd2F5cyBOVUxMLiBUaGF0IGVhcmx5IHJldHVybiBpbiBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgIG1lYW5zIHRoYXQgdGhlIHN1YnNlcXVlbnQgYHF1ZXVlX2RlbGF5ZWRfd29ya2AgY2FsbCBzaG91bGQgKm5ldmVyKiBiZSByZWFjaGVkLlxuXG5CdXQgaGVyZSdzIGEgdGhvdWdodDogV2hhdCBpZiBTeXprYWxsZXIgKmRvZXMqIHByb3ZpZGUgZmlybXdhcmU/IFN5emthbGxlcidzIGltYWdlcyBvZnRlbiBpbmNsdWRlIHNvbWUgZmlybXdhcmUgZmlsZXMgbGlrZSBgaXdsd2lmaS0qLnVjb2RlYC4gSXMgdGhhdCB0aGUgY2FzZSBoZXJlPyBJZiBTeXprYWxsZXIgKmRvZXMqIGhhdmUgdGhlIGZpcm13YXJlLCB0aGUgY29kZSAqd2lsbCogYmUgcmVhY2hlZCwgYnV0IGl0J3MganVzdCBjaGFuZ2luZyB0aGUgd29ya3F1ZXVlLCBmcm9tIGBzeXN0ZW1fdW5ib3VuZF93cWAgdG8gYHN5c3RlbV9kZmxfd3FgLlxuXG5Eb2VzIHRoaXMgY2hhbmdlIHdhcnJhbnQgZnV6emluZz8gV2VsbCwgbGV0J3Mgc2VlLiBNeSBpbnN0cnVjdGlvbnMgc2F5IHRvIHJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIGNoYW5nZSBpcyBhIG1vZGlmaWNhdGlvbiB0byBkb2N1bWVudGF0aW9uLCBrY29uZmlnIGZpbGVzLCBkZWNvcmF0aXZlIGNoYW5nZXMsIGNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG9uJ3QgYWx0ZXIgZXhlY3V0aW9uIGZsb3csIG9yIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGlzICpkb2VzKiBhbHRlciBleGVjdXRpb24gZmxvdyBiZWNhdXNlIGl0IG1vdmVzIHRoZSB3b3JrIGl0ZW0gdG8gYSAqZGlmZmVyZW50KiB3b3JrcXVldWUuXG5cbkknbSBsZWFuaW5nIHRvd2FyZHMgV29ydGhGdXp6aW5nPWZhbHNlLiBJIGFtIGFzc3VtaW5nIHN5emthbGxlciBoYXMgc29tZSBmaXJtd2FyZSBidXQgdGhlIGNoYW5nZSBpcyBqdXN0IGNoYW5naW5nIHRoZSB3b3JrcXVldWUuIFVubGVzcyBpdCBmaXhlcyBhIHJhY2UsIG9yIGludHJvZHVjZXMgYSBuZXcgb25lLCBmdXp6aW5nIHByb2JhYmx5IHdvbid0IGZpbmQgYW55dGhpbmcgaGVyZS4gQnV0IHRob3NlIGluc3RydWN0aW9ucyBhbHNvIGRvbid0IGV4cGxpY2l0bHkgc2F5IFwidHJpdmlhbCB3b3JrcXVldWUgY2hhbmdlc1wiIGFyZSBXb3J0aEZ1enppbmc9ZmFsc2UuXG5cbk9rYXksIGlzIGBzeXN0ZW1fZGZsX3dxYCBhIG1hY3JvIG9yIHZhcmlhYmxlPyBJdCBpcyBhIGdsb2JhbCB2YXJpYWJsZS4gVGhlcmUgYXJlIGFsc28gc3BlY2lmaWMgY29uZmlncyBsaWtlIGBJV0xXSUZJYC5cblxuQnV0IGhlcmUncyB0aGUga2lja2VyOiBgaXdsd2lmaWAgaXMgYSByZWFsIGhhcmR3YXJlIGRyaXZlci4gU3l6a2FsbGVyJ3MgYWJpbGl0eSB0byBmdXp6IGl0IGlzICpzZXZlcmVseSogbGltaXRlZCBldmVuIHdpdGggdlBDSSBiZWNhdXNlIG9mIGFsbCB0aGUgRE1BIGFuZCBmaXJtd2FyZSBpbnRlcmFjdGlvbnMuIElmIGl0J3MgbG9hZGVkLCB0aGUgZHJpdmVyIG5lZWRzIHRvIHRhbGsgdG8gdGhlIGhhcmR3YXJlLCBhbmQgdGhlIHZQQ0kgaXMgbm90IGFuICphY3R1YWwqIEludGVsIFdpLUZpIGNoaXAuIEl0J3MganVzdCBwcm92aWRpbmcgcmFuZG9tIGRhdGEuIFNvLCB0aGUgZmlybXdhcmUgd2lsbCBlaXRoZXIgZmFpbCB0byBsb2FkLCBvciB0aGUgZGV2aWNlIHdpbGwgZmFpbCB0byBpbml0aWFsaXplLiBUaGUgdlBDSSB3b24ndCBlbXVsYXRlIHRoZSBJbnRlbCBXaS1GaSBoYXJkd2FyZS4gVGhlIGZpcm13YXJlIHNpZ25hdHVyZSBjaGVjayBvciBwYXJzaW5nIHdpbGwgZmFpbC5cblxuVGhlIGZpcm13YXJlIGNvbWVzIGZyb20gdGhlIGZpbGVzeXN0ZW0uIEJ1dCwgdGhlIGRyaXZlciB3cml0ZXMgaXQgdG8gdGhlIGRldmljZSB1c2luZyBETUEvTU1JTyBhbmQgZXhwZWN0cyB0aGUgZGV2aWNlIHRvIGJvb3QgYW5kIHNldCByZWdpc3RlcnMuIFRoZSB2UENJJ3MgcmFuZG9tIGRhdGEgd2lsbCBhbG1vc3QgY2VydGFpbmx5IG1ha2UgdGhlIHdob2xlIGluaXRpYWxpemF0aW9uIHN0YXRlIG1hY2hpbmUgZmFpbC5cblxuV2FpdCwgaXMgYHRyYW5zLVx1MDAzZW9wX21vZGVgIHNldCBCRUZPUkUgdGhlIGZpcm13YXJlIGlzIGZ1bGx5IGJvb3RlZD8gV2UgbXVzdCBjaGVjayBgaXdsX3JlcV9md19jYWxsYmFja2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNzU0LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIxNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjI1OjQ4LjIxMTM4OTExNFoiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjEwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTg5OSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTg5OTpcXHRcXHRJV0xfSU5GTyhkcnYsIFxcXCJsb2FkZWQgZmlybXdhcmUgdmVyc2lvbiAlcyBvcF9tb2RlICVzXFxcXG5cXFwiLFxcbjE5MDA6XFx0XFx0XFx0IGRydi1cXHUwMDNlZncuZndfdmVyc2lvbiwgb3AtXFx1MDAzZW5hbWUpO1xcbjE5MDE6XFx0XFxuMTkwMjpcXHRcXHQvKiBhZGQgdGhpcyBkZXZpY2UgdG8gdGhlIGxpc3Qgb2YgZGV2aWNlcyB1c2luZyB0aGlzIG9wX21vZGUgKi9cXG4xOTAzOlxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmRydi1cXHUwMDNlbGlzdCwgXFx1MDAyNm9wLVxcdTAwM2VkcnYpO1xcbjE5MDQ6XFx0XFxuMTkwNTpcXHRcXHRpZiAob3AtXFx1MDAzZW9wcykge1xcbjE5MDY6XFx0XFx0XFx0ZHJ2LVxcdTAwM2VvcF9tb2RlID0gX2l3bF9vcF9tb2RlX3N0YXJ0KGRydiwgb3ApO1xcbjE5MDc6XFx0XFxuMTkwODpcXHRcXHRcXHRpZiAoIWRydi1cXHUwMDNlb3BfbW9kZSkge1xcbjE5MDk6XFx0XFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZpd2x3aWZpX29wbW9kZV90YWJsZV9tdHgpO1xcbjE5MTA6XFx0XFx0XFx0XFx0Z290byBvdXRfdW5iaW5kO1xcbjE5MTE6XFx0XFx0XFx0fVxcbjE5MTI6XFx0XFx0fSBlbHNlIHtcXG4xOTEzOlxcdFxcdFxcdHJlcXVlc3RfbW9kdWxlX25vd2FpdChcXFwiJXNcXFwiLCBvcC1cXHUwMDNlbmFtZSk7XFxuMTkxNDpcXHRcXHR9XFxuMTkxNTpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNml3bHdpZmlfb3Btb2RlX3RhYmxlX210eCk7XFxuMTkxNjpcXHRcXG4xOTE3OlxcdFxcdGNvbXBsZXRlKFxcdTAwMjZkcnYtXFx1MDAzZXJlcXVlc3RfZmlybXdhcmVfY29tcGxldGUpO1xcbjE5MTg6XFx0XFxuMTkxOTpcXHRcXHRmYWlsdXJlID0gZmFsc2U7XFxuMTkyMDpcXHRcXHRnb3RvIGZyZWU7XFxuMTkyMTpcXHRcXG4xOTIyOlxcdCB0cnlfYWdhaW46XFxuMTkyMzpcXHRcXHQvKiB0cnkgbmV4dCwgaWYgYW55ICovXFxuMTkyNDpcXHRcXHRyZWxlYXNlX2Zpcm13YXJlKHVjb2RlX3Jhdyk7XFxuMTkyNTpcXHRcXHRpZiAoaXdsX3JlcXVlc3RfZmlybXdhcmUoZHJ2LCBmYWxzZSkpXFxuMTkyNjpcXHRcXHRcXHRnb3RvIG91dF91bmJpbmQ7XFxuMTkyNzpcXHRcXHRnb3RvIGZyZWU7XFxuMTkyODpcXHRcXG4xOTI5OlxcdCBvdXRfZnJlZV9mdzpcXG4xOTMwOlxcdFxcdHJlbGVhc2VfZmlybXdhcmUodWNvZGVfcmF3KTtcXG4xOTMxOlxcdCBvdXRfdW5iaW5kOlxcbjE5MzI6XFx0XFx0Y29tcGxldGUoXFx1MDAyNmRydi1cXHUwMDNlcmVxdWVzdF9maXJtd2FyZV9jb21wbGV0ZSk7XFxuMTkzMzpcXHRcXHRkZXZpY2VfcmVsZWFzZV9kcml2ZXIoZHJ2LVxcdTAwM2V0cmFucy1cXHUwMDNlZGV2KTtcXG4xOTM0OlxcdFxcdC8qIGRydiBoYXMganVzdCBiZWVuIGZyZWVkIGJ5IHRoZSByZWxlYXNlICovXFxuMTkzNTpcXHRcXHRmYWlsdXJlID0gZmFsc2U7XFxuMTkzNjpcXHQgZnJlZTpcXG4xOTM3OlxcdFxcdGlmIChmYWlsdXJlKVxcbjE5Mzg6XFx0XFx0XFx0aXdsX2RlYWxsb2NfdWNvZGUoZHJ2KTtcXG4xOTM5OlxcdFxcbjE5NDA6XFx0XFx0aWYgKHBpZWNlcykge1xcbjE5NDE6XFx0XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUocGllY2VzLVxcdTAwM2VpbWcpOyBpKyspXFxuMTk0MjpcXHRcXHRcXHRcXHRrZnJlZShwaWVjZXMtXFx1MDAzZWltZ1tpXS5zZWMpO1xcbjE5NDM6XFx0XFx0XFx0a2ZyZWUocGllY2VzLVxcdTAwM2VkYmdfbWVtX3Rsdik7XFxuMTk0NDpcXHRcXHRcXHRrZnJlZShwaWVjZXMpO1xcbjE5NDU6XFx0XFx0fVxcbjE5NDY6XFx0fVxcbjE5NDc6XFx0XFxuMTk0ODpcXHRzdHJ1Y3QgaXdsX2RydiAqaXdsX2Rydl9zdGFydChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjU6NDguMjExNjU0MDc0WiIsIlNlcSI6NTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMDM0MDk1NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHVuZm9sZHM6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBJV0wgRHJpdmVyIFN0YXJ0dXAqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhpcyBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIGBpd2xgLCBraWNrcyBvZmYgaXRzIG9wZXJhdGlvbmFsIG1vZGUuIFRoZSBmdW5jdGlvbiBgX2l3bF9vcF9tb2RlX3N0YXJ0YCBpcyB0aGUga2V5IGhlcmUuIEl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQ7IGl0IGNhbGxzIGEgZnVuY3Rpb24gcG9pbnRlciwgYG9wLVx1MDAzZW9wcy1cdTAwM2VzdGFydGAuIE5vdywgYG9wYCBsaWtlbHkgcmVwcmVzZW50cyB0aGUgb3BlcmF0aW9uYWwgbW9kZSwgYW5kIHRoZSBgb3BzYCBwcm9iYWJseSBjb250YWlucyBhIHRhYmxlIG9mIGZ1bmN0aW9uIHBvaW50ZXJzIHJlbGF0ZWQgdG8gdGhhdCBtb2RlLlxuXG5Gb3IgdGhlIE11bHRpLVZpcnR1YWwgTWFjaGluZSAoTVZNKSBjYXNlLCB0aGlzIHRyYW5zbGF0ZXMgdG8gdGhlIGZ1bmN0aW9uIGBpd2xfb3BfbW9kZV9tdm1fc3RhcnRgIGdldHRpbmcgaW52b2tlZC4gU28sIHRoZSBiYXNlIGZ1bmN0aW9uIHNldHMgdXAgc29tZSBjb21tb24gc3R1ZmYsIGFuZCB0aGVuLCBiYXNlZCBvbiB0aGUgc3BlY2lmaWMgb3BlcmF0aW9uYWwgbW9kZSwgd2UgaGl0IGEgbW9kZS1zcGVjaWZpYyBzdGFydCBmdW5jdGlvbi4gR290IGl0LiBUaGlzIG1ha2VzIHNlbnNlIGZyb20gYW4gYXJjaGl0ZWN0dXJhbCBwZXJzcGVjdGl2ZTogYSBtb2R1bGFyIGFwcHJvYWNoIHRoYXQgYWxsb3dzIGZvciBkaWZmZXJlbnQgd2lyZWxlc3Mgc3RhbmRhcmRzIGFuZCBjb25maWd1cmF0aW9ucyB0byBiZSBzdXBwb3J0ZWQgY2xlYW5seS4gSSB3b25kZXIgd2hhdCBleGFjdGx5IGlzIGRvbmUgd2l0aGluIHRoYXQgYGl3bF9vcF9tb2RlX212bV9zdGFydGAgZnVuY3Rpb24uLi4gbGV0J3Mgc2VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTQ3MiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjU6NTIuNTE1MDY3MzJaIiwiU2VxIjo1NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUyNDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDExOTcsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjExOTc6XFx0aXdsX29wX21vZGVfbXZtX3N0YXJ0KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCBzdHJ1Y3QgaXdsX3JmX2NmZyAqY2ZnLFxcbjExOTg6XFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGl3bF9mdyAqZncsIHN0cnVjdCBkZW50cnkgKmRiZ2ZzX2RpcilcXG4xMTk5OlxcdHtcXG4xMjAwOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xcbjEyMDE6XFx0XFx0c3RydWN0IGl3bF9vcF9tb2RlICpvcF9tb2RlO1xcbjEyMDI6XFx0XFx0c3RydWN0IGl3bF9tdm0gKm12bTtcXG4xMjAzOlxcdFxcdHN0YXRpYyBjb25zdCB1OCBub19yZWNsYWltX2NtZHNbXSA9IHtcXG4xMjA0OlxcdFxcdFxcdFRYX0NNRCxcXG4xMjA1OlxcdFxcdH07XFxuMTIwNjpcXHRcXHR1MzIgbWF4X2FnZztcXG4xMjA3OlxcdFxcdHNpemVfdCBzY2FuX3NpemU7XFxuMTIwODpcXHRcXHR1MzIgbWluX2JhY2tvZmY7XFxuMTIwOTpcXHRcXHRzdHJ1Y3QgaXdsX212bV9jc21lX2Nvbm5faW5mbyAqY3NtZV9jb25uX2luZm8gX19tYXliZV91bnVzZWQ7XFxuMTIxMDpcXHRcXHRpbnQgcmF0ZWNoZWNrO1xcbjEyMTE6XFx0XFx0aW50IGVycjtcXG4xMjEyOlxcdFxcbjEyMTM6XFx0XFx0LypcXG4xMjE0OlxcdFxcdCAqIFdlIHVzZSBJV0xfU1RBVElPTl9DT1VOVF9NQVggdG8gY2hlY2sgdGhlIHZhbGlkaXR5IG9mIHRoZSBzdGF0aW9uXFxuMTIxNTpcXHRcXHQgKiBpbmRleCBhbGwgb3ZlciB0aGUgZHJpdmVyIC0gY2hlY2sgdGhhdCBpdHMgdmFsdWUgY29ycmVzcG9uZHMgdG8gdGhlXFxuMTIxNjpcXHRcXHQgKiBhcnJheSBzaXplLlxcbjEyMTc6XFx0XFx0ICovXFxuMTIxODpcXHRcXHRCVUlMRF9CVUdfT04oQVJSQVlfU0laRShtdm0tXFx1MDAzZWZ3X2lkX3RvX21hY19pZCkgIT1cXG4xMjE5OlxcdFxcdFxcdCAgICAgSVdMX1NUQVRJT05fQ09VTlRfTUFYKTtcXG4xMjIwOlxcdFxcbjEyMjE6XFx0XFx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuMTIyMjpcXHRcXHQgKiAxLiBBbGxvY2F0aW5nIGFuZCBjb25maWd1cmluZyBIVyBkYXRhXFxuMTIyMzpcXHRcXHQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuMTIyNDpcXHRcXHRodyA9IGllZWU4MDIxMV9hbGxvY19odyhzaXplb2Yoc3RydWN0IGl3bF9vcF9tb2RlKSArXFxuMTIyNTpcXHRcXHRcXHRcXHRcXHRzaXplb2Yoc3RydWN0IGl3bF9tdm0pLFxcbjEyMjY6XFx0XFx0XFx0XFx0XFx0aXdsX212bV9oYXNfbWxkX2FwaShmdykgPyBcXHUwMDI2aXdsX212bV9tbGRfaHdfb3BzIDpcXG4xMjI3OlxcdFxcdFxcdFxcdFxcdFxcdTAwMjZpd2xfbXZtX2h3X29wcyk7XFxuMTIyODpcXHRcXHRpZiAoIWh3KVxcbjEyMjk6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XFxuMTIzMDpcXHRcXG4xMjMxOlxcdFxcdGlmICh0cmFucy1cXHUwMDNlbWFjX2NmZy1cXHUwMDNlZGV2aWNlX2ZhbWlseSBcXHUwMDNlPSBJV0xfREVWSUNFX0ZBTUlMWV9CWilcXG4xMjMyOlxcdFxcdFxcdG1heF9hZ2cgPSA1MTI7XFxuMTIzMzpcXHRcXHRlbHNlXFxuMTIzNDpcXHRcXHRcXHRtYXhfYWdnID0gSUVFRTgwMjExX01BWF9BTVBEVV9CVUZfSEU7XFxuMTIzNTpcXHRcXG4xMjM2OlxcdFxcdGh3LVxcdTAwM2VtYXhfcnhfYWdncmVnYXRpb25fc3ViZnJhbWVzID0gbWF4X2FnZztcXG4xMjM3OlxcdFxcbjEyMzg6XFx0XFx0b3BfbW9kZSA9IGh3LVxcdTAwM2Vwcml2O1xcbjEyMzk6XFx0XFxuMTI0MDpcXHRcXHRtdm0gPSBJV0xfT1BfTU9ERV9HRVRfTVZNKG9wX21vZGUpO1xcbjEyNDE6XFx0XFx0bXZtLVxcdTAwM2VkZXYgPSB0cmFucy1cXHUwMDNlZGV2O1xcbjEyNDI6XFx0XFx0bXZtLVxcdTAwM2V0cmFucyA9IHRyYW5zO1xcbjEyNDM6XFx0XFx0bXZtLVxcdTAwM2VjZmcgPSBjZmc7XFxuMTI0NDpcXHRcXHRtdm0tXFx1MDAzZWZ3ID0gZnc7XFxuMTI0NTpcXHRcXHRtdm0tXFx1MDAzZWh3ID0gaHc7XFxuMTI0NjpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjU6NTIuNTE1MzI0NjhaIiwiU2VxIjo1NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU3NTM1ODgxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGU6XG5cbioqRGl2aW5nIGludG8gdGhlIGl3bF9vcF9tb2RlX212bV9zdGFydCBDYWxsIENoYWluKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGl3bF9vcF9tb2RlX212bV9zdGFydGAgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBleGVjdXRpb24gZmxvdyBhcm91bmQgYGl3bF90cmFuc19vcF9tb2RlX2VudGVyYC4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGF0IGZ1bmN0aW9uIGNhbGwuIEkga25vdyBgaXdsX3RyYW5zX29wX21vZGVfZW50ZXJgIGlzIHByb2JhYmx5IGhhbmRsaW5nIHNvbWUgc29ydCBvZiBtb2RlIHRyYW5zaXRpb24sIGxpa2VseSByZWxhdGVkIHRvIHRoZSB3aXJlbGVzcyBkcml2ZXIncyBvcGVyYXRpb25hbCBzdGF0ZS4gVG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBpbnRlcmFjdGlvbiwgSSBuZWVkIHRvIHNlZSAqd2hlcmUqIGl0J3MgYWN0dWFsbHkgaW52b2tlZCAqd2l0aGluKiBgaXdsX29wX21vZGVfbXZtX3N0YXJ0YC4gSSBleHBlY3QgdGhhdCwgc2luY2UgaXQncyBgX2VudGVyYCwgaXQgaXMgaW52b2tlZCBiZWZvcmUgaXQgZXhpdHMgdGhlIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjYxOSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjU6NTYuMDkwNjg5Mjg3WiIsIlNlcSI6NTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0OTAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNDIwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNDIwOlxcdFxcdCAqIGJ1dCB0aGV5IGFyZSBidWdneS5cXG4xNDIxOlxcdFxcdCAqL1xcbjE0MjI6XFx0XFx0aWYgKElXTF9VQ09ERV9NQUpPUihtdm0tXFx1MDAzZWZ3LVxcdTAwM2V1Y29kZV92ZXIpIFxcdTAwM2M9IDc3KVxcbjE0MjM6XFx0XFx0XFx0dHJhbnMtXFx1MDAzZWNvbmYuZndfcmVzZXRfaGFuZHNoYWtlID0gZmFsc2U7XFxuMTQyNDpcXHRcXG4xNDI1OlxcdFxcdHRyYW5zLVxcdTAwM2Vjb25mLnF1ZXVlX2FsbG9jX2NtZF92ZXIgPVxcbjE0MjY6XFx0XFx0XFx0aXdsX2Z3X2xvb2t1cF9jbWRfdmVyKG12bS1cXHUwMDNlZncsXFxuMTQyNzpcXHRcXHRcXHRcXHRcXHQgICAgICBXSURFX0lEKERBVEFfUEFUSF9HUk9VUCxcXG4xNDI4OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIFNDRF9RVUVVRV9DT05GSUdfQ01EKSxcXG4xNDI5OlxcdFxcdFxcdFxcdFxcdCAgICAgIDApO1xcbjE0MzA6XFx0XFx0bXZtLVxcdTAwM2VzdGFfcmVtb3ZlX3JlcXVpcmVzX3F1ZXVlX3JlbW92ZSA9XFxuMTQzMTpcXHRcXHRcXHR0cmFucy1cXHUwMDNlY29uZi5xdWV1ZV9hbGxvY19jbWRfdmVyIFxcdTAwM2UgMDtcXG4xNDMyOlxcdFxcbjE0MzM6XFx0XFx0bXZtLVxcdTAwM2VtbGRfYXBpX2lzX3VzZWQgPSBpd2xfbXZtX2hhc19tbGRfYXBpKG12bS1cXHUwMDNlZncpO1xcbjE0MzQ6XFx0XFxuMTQzNTpcXHRcXHQvKiBDb25maWd1cmUgdHJhbnNwb3J0IGxheWVyICovXFxuMTQzNjpcXHRcXHRpd2xfdHJhbnNfb3BfbW9kZV9lbnRlcihtdm0tXFx1MDAzZXRyYW5zLCBvcF9tb2RlKTtcXG4xNDM3OlxcdFxcbjE0Mzg6XFx0XFx0dHJhbnMtXFx1MDAzZWRiZy5kZXN0X3RsdiA9IG12bS1cXHUwMDNlZnctXFx1MDAzZWRiZy5kZXN0X3RsdjtcXG4xNDM5OlxcdFxcdHRyYW5zLVxcdTAwM2VkYmcubl9kZXN0X3JlZyA9IG12bS1cXHUwMDNlZnctXFx1MDAzZWRiZy5uX2Rlc3RfcmVnO1xcbjE0NDA6XFx0XFxuMTQ0MTpcXHRcXHQvKiBzZXQgdXAgbm90aWZpY2F0aW9uIHdhaXQgc3VwcG9ydCAqL1xcbjE0NDI6XFx0XFx0aXdsX25vdGlmaWNhdGlvbl93YWl0X2luaXQoXFx1MDAyNm12bS1cXHUwMDNlbm90aWZfd2FpdCk7XFxuMTQ0MzpcXHRcXG4xNDQ0OlxcdFxcdC8qIEluaXQgcGh5IGRiICovXFxuMTQ0NTpcXHRcXHRtdm0tXFx1MDAzZXBoeV9kYiA9IGl3bF9waHlfZGJfaW5pdCh0cmFucyk7XFxuMTQ0NjpcXHRcXHRpZiAoIW12bS1cXHUwMDNlcGh5X2RiKSB7XFxuMTQ0NzpcXHRcXHRcXHRJV0xfRVJSKG12bSwgXFxcIkNhbm5vdCBpbml0IHBoeV9kYlxcXFxuXFxcIik7XFxuMTQ0ODpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbjE0NDk6XFx0XFx0XFx0Z290byBvdXRfZnJlZTtcXG4xNDUwOlxcdFxcdH1cXG4xNDUxOlxcdFxcbjE0NTI6XFx0XFx0aWYgKGl3bHdpZmlfbW9kX3BhcmFtcy5udm1fZmlsZSlcXG4xNDUzOlxcdFxcdFxcdG12bS1cXHUwMDNlbnZtX2ZpbGVfbmFtZSA9IGl3bHdpZmlfbW9kX3BhcmFtcy5udm1fZmlsZTtcXG4xNDU0OlxcdFxcdGVsc2VcXG4xNDU1OlxcdFxcdFxcdElXTF9ERUJVR19FRVBST00obXZtLVxcdTAwM2V0cmFucy1cXHUwMDNlZGV2LFxcbjE0NTY6XFx0XFx0XFx0XFx0XFx0IFxcXCJ3b3JraW5nIHdpdGhvdXQgZXh0ZXJuYWwgbnZtIGZpbGVcXFxcblxcXCIpO1xcbjE0NTc6XFx0XFxuMTQ1ODpcXHRcXHRzY2FuX3NpemUgPSBpd2xfbXZtX3NjYW5fc2l6ZShtdm0pO1xcbjE0NTk6XFx0XFxuMTQ2MDpcXHRcXHRtdm0tXFx1MDAzZXNjYW5fY21kID0ga21hbGxvYyhzY2FuX3NpemUsIEdGUF9LRVJORUwpO1xcbjE0NjE6XFx0XFx0aWYgKCFtdm0tXFx1MDAzZXNjYW5fY21kKSB7XFxuMTQ2MjpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbjE0NjM6XFx0XFx0XFx0Z290byBvdXRfZnJlZTtcXG4xNDY0OlxcdFxcdH1cXG4xNDY1OlxcdFxcdG12bS1cXHUwMDNlc2Nhbl9jbWRfc2l6ZSA9IHNjYW5fc2l6ZTtcXG4xNDY2OlxcdFxcbjE0Njc6XFx0XFx0LyogaW52YWxpZGF0ZSBpZHMgdG8gcHJldmVudCBhY2NpZGVudGFsIHJlbW92YWwgb2Ygc3RhX2lkIDAgKi9cXG4xNDY4OlxcdFxcdG12bS1cXHUwMDNlYXV4X3N0YS5zdGFfaWQgPSBJV0xfSU5WQUxJRF9TVEE7XFxuMTQ2OTpcXHRcXHRtdm0tXFx1MDAzZXNuaWZfc3RhLnN0YV9pZCA9IElXTF9JTlZBTElEX1NUQTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjU6NTYuMDkwOTQwODc3WiIsIlNlcSI6NTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkwOTQ2Mzg3NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ29kZSdzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgaXdsX3RyYW5zX29wX21vZGVfZW50ZXJgIGlzIGNhbGxlZCB3aXRoaW4gYGl3bF9vcF9tb2RlX212bV9zdGFydGAuICBDcnVjaWFsbHksIGB0cmFucy1cdTAwM2VvcF9tb2RlYCBpcyBvbmx5IGluaXRpYWxpemVkICphZnRlciogdGhlIGZpcm13YXJlIHN1Y2Nlc3NmdWxseSBsb2FkcyBhbmQgaXMgcGFyc2VkLiAgU2luY2UgU3l6a2FsbGVyLCBpbiBpdHMgc3RhbmRhcmQgY29uZmlndXJhdGlvbiwgZG9lc24ndCB0eXBpY2FsbHkgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGZpcm13YXJlLCBJJ20gcHJldHR5IGNlcnRhaW4gdGhhdCBgdHJhbnMtXHUwMDNlb3BfbW9kZWAgd2lsbCBiZSBOVUxMIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cbkNvbnNlcXVlbnRseSwgYGl3bF90cmFuc19yZXN0YXJ0X3drYCB3aWxsIGltbWVkaWF0ZWx5IGJhaWwgb3V0IGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiB0aGUgZnVuY3Rpb246XG5gYGBjXG5cdGlmICghdHJhbnMtXHUwMDNlb3BfbW9kZSlcblx0XHRyZXR1cm47XG5gYGBcblRoaXMgbWVhbnMgdGhlIGNyaXRpY2FsIGxpbmUgSSdtIGludGVyZXN0ZWQgaW4sIHdoaWNoIHF1ZXVlcyBhIGRlbGF5ZWQgd29yazpcbmBgYGNcblx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfd3EsIFx1MDAyNnRyYW5zLVx1MDAzZXJlc3RhcnQud2ssXG5cdFx0XHQgICBJV0xfVFJBTlNfUkVTRVRfREVMQVkpO1xuYGBgXG53aWxsICpuZXZlciogYmUgZXhlY3V0ZWQgaW4gYSB0eXBpY2FsIFN5emthbGxlciBzY2VuYXJpby4gIFRoZXJlZm9yZSwgSSdkIGxlYW4gdG93YXJkcyBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGZvciB0aGlzIHBhcnRpY3VsYXIgY29kZSBwYXRoLlxuXG5CdXQgd2FpdCwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjay4gSXMgdGhlcmUgKmFueSogY2hhbmNlIFN5emthbGxlciBjb3VsZCBzb21laG93IHByb3ZpZGUgZmlybXdhcmU/IEl0ICpjb3VsZCogbGV2ZXJhZ2UgYHN5el9tb3VudF9pbWFnZWAgb3IgYSBzaW1pbGFyIGNhbGwsIGJ1dCByZWFsaXN0aWNhbGx5LCBpdCB1c3VhbGx5ICpkb2Vzbid0KiBpbmNsdWRlIHRob3NlIHNwZWNpZmljIEludGVsIFdpLUZpIGZpcm13YXJlIGZpbGVzLiAgQW5kIGV2ZW4gaWYgaXQgKmRpZCosIHRoZSB2UENJIGVtdWxhdG9yIHdvdWxkIGFsbW9zdCBjZXJ0YWlubHkgZmFpbCBhdCBvdGhlciBjcml0aWNhbCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBzdGVwcywgc3VjaCBhcyB0aG9zZSByZWxhdGVkIHRvIGBpd2xfdHJhbnNfYWN0aXZhdGVfbmljYCBhbmQgYGl3bF9wb2xsX2JpdHNgLCB3aGljaCBuZWVkIHRvIGhhcHBlbiAqYmVmb3JlKiB0aGUgZHJpdmVyIGV2ZW4gYXR0ZW1wdHMgZmlybXdhcmUgbG9hZGluZy5cblxuSG9sZCBvbiwgSSBzZWUgYSBwb3RlbnRpYWwgaXNzdWU6IGBpd2xfcGNpX2dlbjFfMl9wcm9iZWAgY2FsbHMgYGl3bF90cmFuc19hY3RpdmF0ZV9uaWNgICpiZWZvcmUqIGZpcm13YXJlIGxvYWRpbmcuIEkgbmVlZCB0byByZS1ldmFsdWF0ZSBgaXdsX3BjaV9nZW4xXzJfcHJvYmVgIHRvIGNvbmZpcm0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3NzQzLCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjY6MDUuMTg1NTg1MjczWiIsIlNlcSI6NTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NDgzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDI1OCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNDI1ODpcXHRcXHQvKlxcbjQyNTk6XFx0XFx0ICogTGV0J3MgdHJ5IHRvIGdyYWIgTklDIGFjY2VzcyBlYXJseSBoZXJlLiBTb21ldGltZXMsIE5JQ3MgbWF5XFxuNDI2MDpcXHRcXHQgKiBmYWlsIHRvIGluaXRpYWxpemUsIGFuZCBpZiB0aGF0IGhhcHBlbnMgaXQncyBiZXR0ZXIgaWYgd2Ugc2VlXFxuNDI2MTpcXHRcXHQgKiBpc3N1ZXMgZWFybHkgb24gKGFuZCBjYW4gcmVwcm9iZSwgcGVyIHRoZSBsb2dpYyBpbnNpZGUpLCB0aGFuXFxuNDI2MjpcXHRcXHQgKiBmaXJzdCB0cnlpbmcgdG8gbG9hZCB0aGUgZmlybXdhcmUgZXRjLiBhbmQgcG90ZW50aWFsbHkgb25seVxcbjQyNjM6XFx0XFx0ICogZGV0ZWN0aW5nIGFueSBwcm9ibGVtcyB3aGVuIHRoZSBmaXJzdCBpbnRlcmZhY2UgaXMgYnJvdWdodCB1cC5cXG40MjY0OlxcdFxcdCAqL1xcbjQyNjU6XFx0XFx0cmV0ID0gaXdsX3BjaWVfcHJlcGFyZV9jYXJkX2h3KGl3bF90cmFucyk7XFxuNDI2NjpcXHRcXHRpZiAoIXJldCkge1xcbjQyNjc6XFx0XFx0XFx0cmV0ID0gaXdsX3RyYW5zX2FjdGl2YXRlX25pYyhpd2xfdHJhbnMpO1xcbjQyNjg6XFx0XFx0XFx0aWYgKHJldClcXG40MjY5OlxcdFxcdFxcdFxcdGdvdG8gb3V0X2ZyZWVfdHJhbnM7XFxuNDI3MDpcXHRcXHRcXHRpZiAoaXdsX3RyYW5zX2dyYWJfbmljX2FjY2Vzcyhpd2xfdHJhbnMpKSB7XFxuNDI3MTpcXHRcXHRcXHRcXHRnZXRfY3JmX2lkKGl3bF90cmFucywgXFx1MDAyNmluZm8pO1xcbjQyNzI6XFx0XFx0XFx0XFx0LyogYWxsIGdvb2QgKi9cXG40MjczOlxcdFxcdFxcdFxcdGl3bF90cmFuc19yZWxlYXNlX25pY19hY2Nlc3MoaXdsX3RyYW5zKTtcXG40Mjc0OlxcdFxcdFxcdH0gZWxzZSB7XFxuNDI3NTpcXHRcXHRcXHRcXHRyZXQgPSAtRUlPO1xcbjQyNzY6XFx0XFx0XFx0XFx0Z290byBvdXRfZnJlZV90cmFucztcXG40Mjc3OlxcdFxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjY6MDUuMTg1OTQ0MTMzWiIsIlNlcSI6NTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwMzY4Mzc2MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPWZhbHNlOiBVbnJlYWNoYWJsZSBDb2RlIGluIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqXG5cbk9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uIE15IGFuYWx5c2lzIGluZGljYXRlcyB0aGF0IHRoZSBjb2RlIG1vZGlmaWNhdGlvbiwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGBxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3VuYm91bmRfd3EsIC4uLilgIHRvIGBxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF93cSwgLi4uKWAgd2l0aGluIHRoZSBJbnRlbCBXaS1GaSBkcml2ZXIsIGlzICpmdW5jdGlvbmFsbHkqIGEgY2hhbmdlLiBIb3dldmVyLCBpdCdzIHVsdGltYXRlbHkgdW5yZWFjaGFibGUgaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCBhbmQgdGh1cyBub3Qgd29ydGggZnV6emluZyBmb3Igb3VyIHB1cnBvc2VzLlxuXG5UaGUgY3JpdGljYWwgcGF0aCBiZWdpbnMgd2l0aCBgaXdsX3RyYW5zX2FjdGl2YXRlX25pY2AsIHdoaWNoIGNhbGxzIGBpd2xfcG9sbF9iaXRzYC4gVGhpcyBmdW5jdGlvbiwgY3J1Y2lhbCBoZXJlLCBpcyBkZXNpZ25lZCB0byB3YWl0IGZvciBhIHNwZWNpZmljIGJpdCB3aXRoaW4gYSByZWdpc3RlciB0byBiZSBzZXQuIFRoZSBpc3N1ZSBpcyB0aGF0IHRoZSB2aXJ0dWFsaXplZCBQQ0kgZW52aXJvbm1lbnQgdGhhdCBTeXprYWxsZXIgcHJlc2VudHMgY2FuIHJldHVybiByYW5kb20gZGF0YSwgd2hpY2ggbWF5IHJhbmRvbWx5IGNhdXNlIHRoaXMgZnVuY3Rpb24gdG8gc3VjY2VlZCBvciBmYWlsLiBJZiBpdCBzdWNjZWVkcywgdGhlIGNvZGUgY29udGludWVzIHRvIGBpd2xfdHJhbnNfZ3JhYl9uaWNfYWNjZXNzYCwgcmVhZHMgYENTUl9IV19SRl9JRGAsIGNhbGxzIGBpd2xfcGNpX2ZpbmRfZGV2X2luZm9gLCBhbmQgZmluYWxseSBgaXdsX2Rydl9zdGFydGAsIHdoaWNoIHJlcXVlc3RzIGZpcm13YXJlLiBJZiB0aGUgZmlybXdhcmUgaXNuJ3QgbG9hZGVkLCBvciBmYWlscyB0byBiZSBwcm9wZXJseSBpbml0aWFsaXplZCwgdGhlIGRyaXZlciB3aWxsIHVuYmluZC5cblxuVGhlIG1vZGlmaWNhdGlvbiBvY2N1cnMgb25seSBpZiBgdHJhbnMtXHUwMDNlb3BfbW9kZWAgaXMgc2V0LiBHaXZlbiB0aGUgbmVlZCBmb3IgSW50ZWwgcHJvcHJpZXRhcnkgZmlybXdhcmUgdG8gYmUgcHJvcGVybHkgbG9hZGVkIGFuZCBwYXJzZWQsIGFuZCB0aGUgc3VjY2Vzc2Z1bCBpbml0aWFsaXphdGlvbiBvZiB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgc3RhdGUgbWFjaGluZSwgdGhpcyBjb2RlIHBhdGggaXMgc2ltcGx5IGluYWNjZXNzaWJsZSBpbiBhIHZpcnR1YWxpemVkIFN5emthbGxlciBlbnZpcm9ubWVudC4gVGhlIGNvbXBsZXhpdHkgb2YgZW11bGF0aW5nIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGFuZCBwYXJzaW5nLCBjb21iaW5lZCB3aXRoIHRoZSBzdWNjZXNzZnVsIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHJlcXVpcmVkIHRvIHJlYWNoIHRoZSBjb2RlIHByZXZlbnRzIHVzIGZyb20gZnV6emluZyBpdC4gVGhlcmVmb3JlLCBhY2NvcmRpbmcgdG8gdGhlIGd1aWRlbGluZXMsIEkgY2FuIGNvbmZpZGVudGx5IHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg5NTAsIk91dHB1dFRva2VucyI6MTU5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjY6MTMuMjIyNzg3MzAyWiIsIlNlcSI6NjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk1ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgd29ya3F1ZXVlIHVzZWQgaW4gYGl3bF90cmFuc19yZXN0YXJ0X3drYCBmcm9tIGBzeXN0ZW1fdW5ib3VuZF93cWAgdG8gYHN5c3RlbV9kZmxfd3FgLiBIb3dldmVyLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgZWFybHkgaWYgYHRyYW5zLVxcdTAwM2VvcF9tb2RlYCBpcyBub3Qgc2V0LiBgdHJhbnMtXFx1MDAzZW9wX21vZGVgIGlzIG9ubHkgaW5pdGlhbGl6ZWQgYWZ0ZXIgdGhlIHByb3ByaWV0YXJ5IEludGVsIFdpLUZpIGZpcm13YXJlIGlzIHN1Y2Nlc3NmdWxseSBsb2FkZWQgZnJvbSB0aGUgZmlsZXN5c3RlbSBhbmQgcGFyc2VkIGJ5IHRoZSBkcml2ZXIuIEluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCB0aGUgc3BlY2lmaWMgZmlybXdhcmUgZmlsZXMgYW5kIHdpdGhvdXQgYSByZWFsIGhhcmR3YXJlIGRldmljZSAob3IgYSBoaWdobHkgc3BlY2lhbGl6ZWQgZW11bGF0b3IpLCB0aGUgZmlybXdhcmUgbG9hZGluZyB3aWxsIGZhaWwsIHRoZSBkcml2ZXIgd2lsbCB1bmJpbmQsIGFuZCB0aGlzIGNvZGUgcGF0aCB3aWxsIHJlbWFpbiBjb21wbGV0ZWx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgd29ya3F1ZXVlIHVzZWQgaW4gYGl3bF90cmFuc19yZXN0YXJ0X3drYCBmcm9tIGBzeXN0ZW1fdW5ib3VuZF93cWAgdG8gYHN5c3RlbV9kZmxfd3FgLiBIb3dldmVyLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgZWFybHkgaWYgYHRyYW5zLVxcdTAwM2VvcF9tb2RlYCBpcyBub3Qgc2V0LiBgdHJhbnMtXFx1MDAzZW9wX21vZGVgIGlzIG9ubHkgaW5pdGlhbGl6ZWQgYWZ0ZXIgdGhlIHByb3ByaWV0YXJ5IEludGVsIFdpLUZpIGZpcm13YXJlIGlzIHN1Y2Nlc3NmdWxseSBsb2FkZWQgZnJvbSB0aGUgZmlsZXN5c3RlbSBhbmQgcGFyc2VkIGJ5IHRoZSBkcml2ZXIuIEluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCB0aGUgc3BlY2lmaWMgZmlybXdhcmUgZmlsZXMgYW5kIHdpdGhvdXQgYSByZWFsIGhhcmR3YXJlIGRldmljZSAob3IgYSBoaWdobHkgc3BlY2lhbGl6ZWQgZW11bGF0b3IpLCB0aGUgZmlybXdhcmUgbG9hZGluZyB3aWxsIGZhaWwsIHRoZSBkcml2ZXIgd2lsbCB1bmJpbmQsIGFuZCB0aGlzIGNvZGUgcGF0aCB3aWxsIHJlbWFpbiBjb21wbGV0ZWx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlthn4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-07 17:49:57 +0000 UTC FinishedAt: 2026-07-07 18:26:14 +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+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIHdvcmtxdWV1ZSB1c2VkIGluIGBpd2xfdHJhbnNfcmVzdGFydF93a2AgZnJvbSBgc3lzdGVtX3VuYm91bmRfd3FgIHRvIGBzeXN0ZW1fZGZsX3dxYC4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGVhcmx5IGlmIGB0cmFucy1cdTAwM2VvcF9tb2RlYCBpcyBub3Qgc2V0LiBgdHJhbnMtXHUwMDNlb3BfbW9kZWAgaXMgb25seSBpbml0aWFsaXplZCBhZnRlciB0aGUgcHJvcHJpZXRhcnkgSW50ZWwgV2ktRmkgZmlybXdhcmUgaXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIGFuZCBwYXJzZWQgYnkgdGhlIGRyaXZlci4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRob3V0IHRoZSBzcGVjaWZpYyBmaXJtd2FyZSBmaWxlcyBhbmQgd2l0aG91dCBhIHJlYWwgaGFyZHdhcmUgZGV2aWNlIChvciBhIGhpZ2hseSBzcGVjaWFsaXplZCBlbXVsYXRvciksIHRoZSBmaXJtd2FyZSBsb2FkaW5nIHdpbGwgZmFpbCwgdGhlIGRyaXZlciB3aWxsIHVuYmluZCwgYW5kIHRoaXMgY29kZSBwYXRoIHdpbGwgcmVtYWluIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjIyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYWZmOGU0Mjk3YjE0OGU4OGExYjljZDg5ZGY0ZTE4M2E1YWJhOWVjMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDcgMTg6MjI6MjMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmNcbmluZGV4IDczYWFlMTEyNTA0MjFmLi45MzQzYjYyMzBlMWE0MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmNcbkBAIC0yMzYsNyAmIzQzOzIzNiw3IEBAIHN0YXRpYyB2b2lkIGl3bF90cmFuc19yZXN0YXJ0X3drKHN0cnVjdCB3b3JrX3N0cnVjdCAqd2spXG4gXHRtb2RlID0gaXdsX3RyYW5zX2RldGVybWluZV9yZXN0YXJ0X21vZGUodHJhbnMpO1xuIFx0aWYgKG1vZGUgPT0gSVdMX1JFU0VUX01PREVfQkFDS09GRikge1xuIFx0XHRJV0xfRVJSKHRyYW5zLCBcJiMzNDtUb28gbWFueSBkZXZpY2UgZXJyb3JzIC0gZGVsYXkgbmV4dCByZXNldFxcblwmIzM0Oyk7XG4tXHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fdW5ib3VuZF93cSwgXHUwMDI2dHJhbnMtXHUwMDNlcmVzdGFydC53ayxcbiYjNDM7XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX3dxLCBcdTAwMjZ0cmFucy1cdTAwM2VyZXN0YXJ0LndrLFxuIFx0XHRcdFx0ICAgSVdMX1RSQU5TX1JFU0VUX0RFTEFZKTtcbiBcdFx0cmV0dXJuO1xuIFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjIyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIHdvcmtxdWV1ZSB1c2VkIGluIGBpd2xfdHJhbnNfcmVzdGFydF93a2AgZnJvbSBgc3lzdGVtX3VuYm91bmRfd3FgIHRvIGBzeXN0ZW1fZGZsX3dxYC4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGVhcmx5IGlmIGB0cmFucy1cdTAwM2VvcF9tb2RlYCBpcyBub3Qgc2V0LiBgdHJhbnMtXHUwMDNlb3BfbW9kZWAgaXMgb25seSBpbml0aWFsaXplZCBhZnRlciB0aGUgcHJvcHJpZXRhcnkgSW50ZWwgV2ktRmkgZmlybXdhcmUgaXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIGFuZCBwYXJzZWQgYnkgdGhlIGRyaXZlci4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRob3V0IHRoZSBzcGVjaWZpYyBmaXJtd2FyZSBmaWxlcyBhbmQgd2l0aG91dCBhIHJlYWwgaGFyZHdhcmUgZGV2aWNlIChvciBhIGhpZ2hseSBzcGVjaWFsaXplZCBlbXVsYXRvciksIHRoZSBmaXJtd2FyZSBsb2FkaW5nIHdpbGwgZmFpbCwgdGhlIGRyaXZlciB3aWxsIHVuYmluZCwgYW5kIHRoaXMgY29kZSBwYXRoIHdpbGwgcmVtYWluIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhZmY4ZTQyOTdiMTQ4ZTg4YTFiOWNkODlkZjRlMTgzYTVhYmE5ZWMwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgNyAxODoyMjoyMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jCmluZGV4IDczYWFlMTEyNTA0MjFmLi45MzQzYjYyMzBlMWE0MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jCkBAIC0yMzYsNyAmIzQzOzIzNiw3IEBAIHN0YXRpYyB2b2lkIGl3bF90cmFuc19yZXN0YXJ0X3drKHN0cnVjdCB3b3JrX3N0cnVjdCAqd2spCiAJbW9kZSA9IGl3bF90cmFuc19kZXRlcm1pbmVfcmVzdGFydF9tb2RlKHRyYW5zKTsKIAlpZiAobW9kZSA9PSBJV0xfUkVTRVRfTU9ERV9CQUNLT0ZGKSB7CiAJCUlXTF9FUlIodHJhbnMsICYjMzQ7VG9vIG1hbnkgZGV2aWNlIGVycm9ycyAtIGRlbGF5IG5leHQgcmVzZXRcbiYjMzQ7KTsKLQkJcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV91bmJvdW5kX3dxLCAmYW1wO3RyYW5zLSZndDtyZXN0YXJ0LndrLAomIzQzOwkJcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfd3EsICZhbXA7dHJhbnMtJmd0O3Jlc3RhcnQud2ssCiAJCQkJICAgSVdMX1RSQU5TX1JFU0VUX0RFTEFZKTsKIAkJcmV0dXJuOwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkwNAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0d2Vha2luZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuY2AuIEl0JiMzOTtzIGEgc2ltcGxlIG9uZSwgcmVhbGx5OiBqdXN0IHN3YXBwaW5nIG91dCB0aGUgd29ya3F1ZXVlIGluIGBpd2xfdHJhbnNfcmVzdGFydF93a2AuIEl0JiMzOTtzIGdvaW5nIGZyb20gYHN5c3RlbV91bmJvdW5kX3dxYCB0byBgc3lzdGVtX2RmbF93cWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtJcyB0aGlzIGV2ZW4gd29ydGggYm90aGVyaW5nIHdpdGggZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmU/JiMzNDsKCmBpd2x3aWZpYCDigJMgdGhhdCYjMzk7cyB0aGUgSW50ZWwgd2lyZWxlc3MgZHJpdmVyLCByaWdodD8gU28sIGZpcnN0IHF1ZXN0aW9uIGlzLCBjYW4gSSBldmVuICpyZWFjaCogdGhpcyB0aGluZyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJbnRlbCB3aXJlbGVzcyB1c3VhbGx5IGRlbWFuZHMgc3BlY2lmaWMgUENJIGhhcmR3YXJlLiBGdXp6aW5nIFBDSSBkcml2ZXJzIGlzIGEgd2hvbGUgb3RoZXIgYmFsbGdhbWUsIG5vcm1hbGx5IHJlcXVpcmluZyBlbXVsYXRpb24gdG8gZ2V0IGFueXdoZXJlLiBXaXRob3V0IGVtdWxhdGlvbiwgdGhleSYjMzk7cmUgdHlwaWNhbGx5IGEgZnV6emluZyBkZWFkLWVuZC4KCkhhbmcgb27igKZgaXdsd2lmaWAgKmlzKiBhIFBDSSBkcml2ZXIsIGlzbiYjMzk7dCBpdD8gT2theSwgZG9lcyBzeXprYWxsZXIgZXZlbiBkZWFsIHdpdGggdGhpcz8gTGFzdCBJIGNoZWNrZWQsIHN5emthbGxlciBjb3VsZCBmdXp6IFBDSSBkcml2ZXJzIHVzaW5nIHZQQ0kgb3Igc29tZSBvdGhlciBzaW1pbGFyIHRyaWNrZXJ5LCBidXQgaXQmIzM5O3MgdXN1YWxseSBwcmV0dHkgbGltaXRlZCBpbiBpdHMgY292ZXJhZ2UuCgpCdXQsIHdhaXTigKYgdGhlIHBhdGNoICppdHNlbGYqIGlzIGp1c3QgY2hhbmdpbmcgdGhlIHdvcmtxdWV1ZS4gVGhhdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGRpZmZlcmVuY2UgaW4gaG93IGFuZCB3aGVyZSB0aGlzIHJlc3RhcnQgd29yayBnZXRzIHNjaGVkdWxlZC4gU28sIG5vdyB0aGUgcXVlc3Rpb24gYm9pbHMgZG93biB0bzogaXMgdGhpcyBuZXcgd29ya3F1ZXVlIGFzc2lnbm1lbnQgbGlrZWx5IHRvIGV4cG9zZSBhbnkgaW50ZXJlc3RpbmcgbmV3IGZ1enppbmcgcGF0aHMgb3IsIGhlYXZlbiBmb3JiaWQsIGludHJvZHVjZSBhbnkgbmV3IGJ1Z3M/CgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIGBpd2xfdHJhbnNfcmVzdGFydF93a2AgYW5kIHNlZSB3aGF0IGl0IGRvZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3RyYW5zX3Jlc3RhcnRfd2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jPTEyNz1pd2xfdHJhbnNfZGV0ZXJtaW5lX3Jlc3RhcnRfbW9kZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTIwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6MjAyOnN0YXRpYyB2b2lkIGl3bF90cmFuc19yZXN0YXJ0X3drKHN0cnVjdCB3b3JrX3N0cnVjdCAqd2spXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTIwMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYz0yNjc9c3RydWN0IGl3bF90cmFucyAqaXdsX3RyYW5zX2FsbG9jKHVuc2lnbmVkIGludCBwcml2X3NpemUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0yODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjI4OTpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNnRyYW5zLVx1MDAzZXJlc3RhcnQud2ssIGl3bF90cmFuc19yZXN0YXJ0X3drKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMjkwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM9NjE0PXZvaWQgaXdsX3RyYW5zX3N0b3BfZGV2aWNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtNjE4LVx0LypcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6NjE5Olx0ICogU2VlIGFsc28gdGhlIGNvbW1lbnQgaW4gaXdsX3RyYW5zX3Jlc3RhcnRfd2soKS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtNjIwLVx0ICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtNjIxLVx0ICogV2hlbiB0aGUgb3Btb2RlIHN0b3BzIHRoZSBkZXZpY2Ugd2hpbGUgYSByZXNldCBpcyBwZW5kaW5nLCB0aGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6NjIyOlx0ICogd29ya2VyIChpd2xfdHJhbnNfcmVzdGFydF93aykgbWlnaHQgbm90IGhhdmUgcnVuIHlldCBvciwgbW9yZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy02MjMtXHQgKiBsaWtlbHksIHdpbGwgYmUgYmxvY2tlZCBvbiB0aGUgb3Btb2RlIGxvY2suIER1ZSB0byB0aGUgbG9ja2luZyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTM5CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2lGaSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBwb3RlbnRpYWwgaW1wbGljYXRpb25zIGZvciBmdXp6aW5nLCBzcGVjaWZpY2FsbHkgd2l0aCBzeXprYWxsZXIuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZSBgaXdsd2lmaWAgZHJpdmVyIGl0c2VsZiBpcyBldmVuIGEgdGFyZ2V0IGZvciBzeXprYWxsZXIuIEkga25vdyBzeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBjdXN0b20gaGFyZHdhcmUgZW11bGF0aW9uIGZvciBgaXdsd2lmaWAgc3BlY2lmaWNhbGx5LCBidXQgaXQmIzM5O3MgcG9zc2libGUgdGhhdCB0aGUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzIGNvdWxkIHN0aWxsIHRyaWdnZXIgc29tZSBpbml0aWFsaXphdGlvbiBvciBiYXNpYyBjb2RlIHBhdGhzIGluIHRoZSBkcml2ZXIuIEhvd2V2ZXIsIHRoaXMgcGF0Y2ggaXMgYSByZWxhdGl2ZWx5IHRhcmdldGVkIGNoYW5nZSwganVzdCBhbHRlcmluZyB0aGUgd29ya3F1ZXVlIGl0IHVzZXMuIEkgbmVlZCB0byBkaWcgZGVlcGVyIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIGJ1aWxkIGZsYWdzIHRoYXQgYXJlIGltcG9ydGFudCBpbiB0aGlzIGNvbnRleHQuIEkgc3VzcGVjdCB0aGUga2V5IGlzIGluIHRob3NlIGNvbmZpZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElXTFdJRkkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoyOmNvbmZpZyBJV0xXSUZJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIFdpcmVsZXNzIFdpRmkgTmV4dCBHZW4gQUdOIC0gV2lyZWxlc3MtTi9BZHZhbmNlZC1OL1VsdGltYXRlLU4gKGl3bHdpZmkpIFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz00Nz1pZiBJV0xXSUZJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NDk6Y29uZmlnIElXTFdJRklfS1VOSVRfVEVTVFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01MC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjU4OmNvbmZpZyBJV0xXSUZJX0xFRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01OS1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9ODQ9Y29uZmlnIElXTE1MRFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05NC0jIGRvbiYjMzk7dCBjYWxsIGl0IF9NT0RVTEUgLS0gd2lsbCBjb25mdXNlIEtjb25maWcvZml4ZGVwLy4uLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjk1OmNvbmZpZyBJV0xXSUZJX09QTU9ERV9NT0RVTEFSXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTYtXHRib29sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTEwNT1tZW51IFwmIzM0O0RlYnVnZ2luZyBPcHRpb25zXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEwNzpjb25maWcgSVdMV0lGSV9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGZ1bGwgZGVidWdnaW5nIG91dHB1dCBpbiB0aGUgaXdsd2lmaSBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEzMTpjb25maWcgSVdMV0lGSV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMyLVx0Ym9vbCBcJiMzNDtpd2x3aWZpIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTM5OmNvbmZpZyBJV0xXSUZJX0RFVklDRV9UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTQwLVx0Ym9vbCBcJiMzNDtpd2x3aWZpIGRldmljZSBhY2Nlc3MgdHJhY2luZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwODcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgdGhlIEZ1enphYmlsaXR5IG9mIGEgQ29uZmlndXJhdGlvbiBDaGFuZ2UqKgoKT2theSwgc28gdGhlIGNvbmZpZyBpbiBxdWVzdGlvbiBpcyBgSVdMV0lGSWAuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gcXVlc3Rpb24gaWYgZnV6emluZyBpdCBpcyBldmVuIHdvcnRod2hpbGUuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgd29ya3F1ZXVlIG1vZGlmaWNhdGlvbiwgd2hpY2ggaXMgZ29vZC4gQnV0IGl0JiMzOTtzIGJ1cmllZCBpbiBhIGhhcmR3YXJlIGRyaXZlci4gQW5kIGhhcmR3YXJlIGRyaXZlcnMgYXJlIG5vdG9yaW91c2x5IGRpZmZpY3VsdCB0byBlZmZlY3RpdmVseSBmdXp6IHdpdGhvdXQgYWNjZXNzIHRvIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGEgcm9idXN0IGVtdWxhdGlvbiBlbnZpcm9ubWVudCwgYW5kIHRoZXNlIGFyZSBoYXJkIHRvIHNldCB1cC4KCkhvbGQgb24uLi4gSSYjMzk7bSBwcmV0dHkgc3VyZSBzeXprYWxsZXIgY2FuIGZ1enogUENJIGRldmljZXMsIGNhbiYjMzk7dCBpdD8gVGhhdCYjMzk7cyBhIGdhbWUgY2hhbmdlciEgVGhpcyBtZWFucyB0aGF0IGhhcmR3YXJlIGFjY2VzcyBpc24mIzM5O3QgbmVjZXNzYXJpbHkgYSBoYXJkIGJsb2NrZXIuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgem9vbSBvdXQgYSBiaXQuIEJlZm9yZSBnZXR0aW5nIHRvbyBkZWVwIGludG8gdGhpcyBzcGVjaWZpYyBjb25maWcsIGxldCBtZSBqdXN0IHF1aWNrbHkgc2NhbiBmb3IgYW55IHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBwcm92aWRlIGFkZGl0aW9uYWwgY29udGV4dC4gTm8gcG9pbnQgaW4gbWFraW5nIGEgZGVjaXNpb24gYmFzZWQgb24gb25lIGRhdGEgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SVdMV0lGSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMjY1IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoyOmNvbmZpZyBJV0xXSUZJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIFdpcmVsZXNzIFdpRmkgTmV4dCBHZW4gQUdOIC0gV2lyZWxlc3MtTi9BZHZhbmNlZC1OL1VsdGltYXRlLU4gKGl3bHdpZmkpIFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy00Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo0NzppZiBJV0xXSUZJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NDk6Y29uZmlnIElXTFdJRklfS1VOSVRfVEVTVFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01MC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjU4OmNvbmZpZyBJV0xXSUZJX0xFRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01OS1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9ODQ9Y29uZmlnIElXTE1MRFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05NC0jIGRvbiYjMzk7dCBjYWxsIGl0IF9NT0RVTEUgLS0gd2lsbCBjb25mdXNlIEtjb25maWcvZml4ZGVwLy4uLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjk1OmNvbmZpZyBJV0xXSUZJX09QTU9ERV9NT0RVTEFSXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTYtXHRib29sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk5LVx0ZGVmYXVsdCB5IGlmIElXTE1MRD1tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTAwOlx0ZGVmYXVsdCB5IGlmIElXTFdJRklfS1VOSVRfVEVTVFM9bVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTA1PW1lbnUgXCYjMzQ7RGVidWdnaW5nIE9wdGlvbnNcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTA3OmNvbmZpZyBJV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA4LVx0Ym9vbCBcJiMzNDtFbmFibGUgZnVsbCBkZWJ1Z2dpbmcgb3V0cHV0IGluIHRoZSBpd2x3aWZpIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMxOmNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzItXHRib29sIFwmIzM0O2l3bHdpZmkgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzk6Y29uZmlnIElXTFdJRklfREVWSUNFX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNDAtXHRib29sIFwmIzM0O2l3bHdpZmkgZGV2aWNlIGFjY2VzcyB0cmFjaW5nXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS0yLSMgY29tbW9uXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX0lXTFdJRkkpXHQmIzQzOz0gaXdsd2lmaS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTQtaXdsd2lmaS1vYmpzXHRcdCYjNDM7PSBpd2wtaW8ub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU9NDA9aXdsd2lmaS0kKENPTkZJR19FRkkpXHQmIzQzOz0gZncvdWVmaS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjQxOml3bHdpZmktJChDT05GSUdfSVdMV0lGSV9ERUJVR0ZTKSAmIzQzOz0gZncvZGVidWdmcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZT00Mz1pd2x3aWZpLW9ianMgJiM0Mzs9ICQoaXdsd2lmaS1tKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS00NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6NDU6aXdsd2lmaS0kKENPTkZJR19JV0xXSUZJX0RFVklDRV9UUkFDSU5HKSAmIzQzOz0gaXdsLWRldnRyYWNlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUtNDYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZT01Mj1vYmotJChDT05GSUdfSVdMTUxEKVx0JiM0Mzs9IG1sZC9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUtNTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjU0Om9iai0kKENPTkZJR19JV0xXSUZJX0tVTklUX1RFU1RTKSAmIzQzOz0gdGVzdHMvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTU1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvY2ZnL2J6LmM9NzI9Y29uc3Qgc3RydWN0IGl3bF9tYWNfY2ZnIGl3bF9iel9tYWNfY2ZnID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvY2ZnL2J6LmMtODItfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvY2ZnL2J6LmM6ODM6RVhQT1JUX1NZTUJPTF9JRl9JV0xXSUZJX0tVTklUKGl3bF9iel9tYWNfY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvY2ZnL2J6LmMtODQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vTWFrZWZpbGU9OT1pd2xkdm0tb2Jqc1x0XHQmIzQzOz0gcnhvbi5vIGRldmljZXMub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vTWFrZWZpbGUtMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9NYWtlZmlsZToxMTppd2xkdm0tJChDT05GSUdfSVdMV0lGSV9MRURTKSAmIzQzOz0gbGVkLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL01ha2VmaWxlOjEyOml3bGR2bS0kKENPTkZJR19JV0xXSUZJX0RFQlVHRlMpICYjNDM7PSBkZWJ1Z2ZzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL01ha2VmaWxlLTEzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oPTIyNT1zdGF0aWMgaW5saW5lIGJvb2wgaXdsX2FkdmFuY2VkX2J0X2NvZXhpc3Qoc3RydWN0IGl3bF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oLTIzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oOjIzMTojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oLTIzMi1jb25zdCBjaGFyICppd2xfZ2V0X3R4X2ZhaWxfcmVhc29uKHUzMiBzdGF0dXMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oPTMzNT1pbnQgaXdsX2FsaXZlX3N0YXJ0KHN0cnVjdCBpd2xfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaC0zMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaDozMzc6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaC0zMzgtdm9pZCBpd2xfcHJpbnRfcnhfY29uZmlnX2NtZChzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmg9NDA3PWludCBpd2xfcmVhZF9lZXByb20oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHU4ICoqZWVwcm9tLCBzaXplX3QgKmVlcHJvbV9zaXplKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oLTQwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oOjQwOTojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmgtNDEwLXZvaWQgaXdsX2RiZ2ZzX3JlZ2lzdGVyKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwgc3RydWN0IGRlbnRyeSAqZGJnZnNfZGlyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaD00MTI9c3RhdGljIGlubGluZSB2b2lkIGl3bF9kYmdmc19yZWdpc3RlcihzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaC00MTMtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZGVudHJ5ICpkYmdmc19kaXIpIHsgfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmg6NDE0OiNlbmRpZiAvKiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaC00MTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaDo0MTY6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaC00MTctI2RlZmluZSBJV0xfREVCVUdfUVVJRVRfUkZLSUxMKG0sIGZtdCwgYXJncy4uLilcdFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmg9NDMwPWRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oLTQzNi19IHdoaWxlICgwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmg6NDM3OiNlbmRpZlx0XHRcdFx0LyogQ09ORklHX0lXTFdJRklfREVCVUcgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oLTQzOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZWJ1Z2ZzLmM9MjE1ND1zdGF0aWMgc3NpemVfdCBpd2xfZGJnZnNfZWNob190ZXN0X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RlYnVnZnMuYy0yMTcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGVidWdmcy5jOjIxNzE6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZWJ1Z2ZzLmMtMjE3Mi1zdGF0aWMgc3NpemVfdCBpd2xfZGJnZnNfbG9nX2V2ZW50X3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGVidWdmcy5jPTIzMDM9REVCVUdGU19XUklURV9GSUxFX09QUyhmd19yZXN0YXJ0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RlYnVnZnMuYzoyMzA0OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGVidWdmcy5jLTIzMDUtREVCVUdGU19SRUFEX1dSSVRFX0ZJTEVfT1BTKGxvZ19ldmVudCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGVidWdmcy5jPTIzMTM9dm9pZCBpd2xfZGJnZnNfcmVnaXN0ZXIoc3RydWN0IGl3bF9wcml2ICpwcml2LCBzdHJ1Y3QgZGVudHJ5ICpkYmdmc19kaXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGVidWdmcy5jLTIzNTUtXHRERUJVR0ZTX0FERF9GSUxFKGZ3X3Jlc3RhcnQsIGRpcl9kZWJ1ZywgMDIwMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZWJ1Z2ZzLmM6MjM1NjojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RlYnVnZnMuYy0yMzU3LVx0REVCVUdGU19BRERfRklMRShsb2dfZXZlbnQsIGRpcl9kZWJ1ZywgMDYwMCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2Lmg9NjI3PXN0cnVjdCBpd2xfcHJpdiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2LmgtNzY1LVx0XHRzdHJ1Y3Qgc3RhdGlzdGljc190eCB0eDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Rldi5oOjc2NjojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2LmgtNzY3LVx0XHRzdHJ1Y3Qgc3RhdGlzdGljc19idF9hY3Rpdml0eSBidF9hY3Rpdml0eTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZXYuaC03NzEtXHR9IHN0YXRpc3RpY3M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZXYuaDo3NzI6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Rldi5oLTc3My1cdHN0cnVjdCB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2LmgtODQ3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2Lmg6ODQ4OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZXYuaC04NDktXHQvKiBkZWJ1Z2ZzICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2LmgtODUzLVx0dm9pZCAqd293bGFuX3NyYW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZXYuaDo4NTQ6I2VuZGlmIC8qIENPTkZJR19JV0xXSUZJX0RFQlVHRlMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Rldi5oLTg1NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZXYuaC04NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZXYuaDo4Njk6I2lmZGVmIENPTkZJR19JV0xXSUZJX0xFRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Rldi5oLTg3MC1cdHN0cnVjdCBsZWRfY2xhc3NkZXYgbGVkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2xlZC5oPTExPXN0cnVjdCBpd2xfcHJpdjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9sZWQuaC0xOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2xlZC5oOjE5OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9MRURTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9sZWQuaC0yMC12b2lkIGl3bGFnbl9sZWRfZW5hYmxlKHN0cnVjdCBpd2xfcHJpdiAqcHJpdik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFjODAyMTEuYz00MTg9c3RhdGljIGludCBpd2xhZ25fbWFjX3Jlc3VtZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jLTQ0Mi1cdH07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jOjQ0MzojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFjODAyMTEuYy00NDQtXHRjb25zdCBzdHJ1Y3QgZndfaW1nICppbWc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFjODAyMTEuYy00ODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jOjQ4MTojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFjODAyMTEuYy00ODItXHRpbWcgPSBcdTAwMjZwcml2LVx1MDAzZWZ3LVx1MDAzZWltZ1tJV0xfVUNPREVfV09XTEFOXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM9NTA9TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYzo1MTpNT0RVTEVfSU1QT1JUX05TKFwmIzM0O0lXTFdJRklcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jLTUyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYz0xMTMyPXN0YXRpYyB2b2lkIGl3bF91bmluaXRfZHJ2KHN0cnVjdCBpd2xfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTEzNy1cdGl3bF9jYWxpYl9mcmVlX3Jlc3VsdHMocHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM6MTEzODojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jLTExMzktXHRrZnJlZShwcml2LVx1MDAzZXdvd2xhbl9zcmFtKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM9MTE1Nz1zdGF0aWMgdm9pZCBpd2xfb3B0aW9uX2NvbmZpZyhzdHJ1Y3QgaXdsX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTE1OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM6MTE1OTojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYzoxMTYwOlx0SVdMX0lORk8ocHJpdiwgXCYjMzQ7Q09ORklHX0lXTFdJRklfREVCVUcgZW5hYmxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTE2MS0jZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jOjExNjI6XHRJV0xfSU5GTyhwcml2LCBcJiMzNDtDT05GSUdfSVdMV0lGSV9ERUJVRyBkaXNhYmxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTE2My0jZW5kaWZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYy0xMTY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jOjExNjU6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYzoxMTY2Olx0SVdMX0lORk8ocHJpdiwgXCYjMzQ7Q09ORklHX0lXTFdJRklfREVCVUdGUyBlbmFibGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYy0xMTY3LSNlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM6MTE2ODpcdElXTF9JTkZPKHByaXYsIFwmIzM0O0NPTkZJR19JV0xXSUZJX0RFQlVHRlMgZGlzYWJsZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jLTExNjktI2VuZGlmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTE3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYzoxMTcxOiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERVZJQ0VfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jOjExNzI6XHRJV0xfSU5GTyhwcml2LCBcJiMzNDtDT05GSUdfSVdMV0lGSV9ERVZJQ0VfVFJBQ0lORyBlbmFibGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYy0xMTczLSNlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM6MTE3NDpcdElXTF9JTkZPKHByaXYsIFwmIzM0O0NPTkZJR19JV0xXSUZJX0RFVklDRV9UUkFDSU5HIGRpc2FibGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYy0xMTc1LSNlbmRpZlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYz0xODExPWludCBpd2xfZHVtcF9uaWNfZXZlbnRfbG9nKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwgYm9vbCBmdWxsX2xvZyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTg3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYzoxODc3OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jLTE4NzgtXHRpZiAoYnVmKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnguYz04OD1zdGF0aWMgdm9pZCBpd2xhZ25fcnhfcG1fc2xlZXBfbm90aWYoc3RydWN0IGl3bF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmMtOTAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnguYzo5MTojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmMtOTItXHRzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0ID0gcnhiX2FkZHIocnhiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jPTEwOT1zdGF0aWMgdm9pZCBpd2xhZ25fcnhfYmVhY29uX25vdGlmKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jLTExMy1cdHN0cnVjdCBpd2xhZ25fYmVhY29uX25vdGlmICpiZWFjb24gPSAodm9pZCAqKXBrdC1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnguYzoxMTQ6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jLTExNS1cdHUxNiBzdGF0dXMgPSBsZTE2X3RvX2NwdShiZWFjb24tXHUwMDNlYmVhY29uX25vdGlmeV9oZHIuc3RhdHVzLnN0YXR1cyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnguYz0yMzU9c3RhdGljIHZvaWQgaXdsYWduX3J4X2NhbGNfbm9pc2Uoc3RydWN0IGl3bF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmMtMjc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnguYzoyNzY6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmMtMjc3LS8qXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnguYz0zNDI9c3RhdGljIHZvaWQgaXdsYWduX3J4X3N0YXRpc3RpY3Moc3RydWN0IGl3bF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmMtMzc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnguYzozNzY6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmMtMzc3LVx0XHQvKiBoYW5kbGUgdGhpcyBleGNlcHRpb24gZGlyZWN0bHkgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jLTQxNi1cdG1lbWNweShcdTAwMjZwcml2LVx1MDAzZXN0YXRpc3RpY3MudHgsIHR4LCBzaXplb2YoKnR4KSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jOjQxNzojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnguYy00MTgtXHRpZiAoYnRfYWN0aXZpdHkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnguYz00NDU9c3RhdGljIHZvaWQgaXdsYWduX3J4X3JlcGx5X3N0YXRpc3RpY3Moc3RydWN0IGl3bF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmMtNDUxLVx0aWYgKGxlMzJfdG9fY3B1KHN0YXRzLVx1MDAzZWZsYWcpIFx1MDAyNiBVQ09ERV9TVEFUSVNUSUNTX0NMRUFSX01TSykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnguYzo0NTI6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmMtNDUzLVx0XHRtZW1zZXQoXHUwMDI2cHJpdi1cdTAwM2VhY2N1bV9zdGF0cywgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeG9uLmM9ODMyPXN0YXRpYyBpbnQgaXdsX2Z1bGxfcnhvbl9yZXF1aXJlZChzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnhvbi5jLTg4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4b24uYzo4ODc6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeG9uLmMtODg4LXZvaWQgaXdsX3ByaW50X3J4X2NvbmZpZ19jbWQoc3RydWN0IGl3bF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYz0yMzI9c3RhdGljIHZvaWQgaXdsX3J4X3JlcGx5X3NjYW4oc3RydWN0IGl3bF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy0yMzQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjIzNTojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy0yMzYtXHRzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0ID0gcnhiX2FkZHIocnhiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM9MjYyPXN0YXRpYyB2b2lkIGl3bF9yeF9zY2FuX3Jlc3VsdHNfbm90aWYoc3RydWN0IGl3bF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy0yNjQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjI2NTojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy0yNjYtXHRzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0ID0gcnhiX2FkZHIocnhiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zdGEuYz0xMjY9Ym9vbCBpd2xfaXNfaHQ0MF90eF9hbGxvd2VkKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zdGEuYy0xMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zdGEuYzoxMzM6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3N0YS5jLTEzNC1cdGlmIChwcml2LVx1MDAzZWRpc2FibGVfaHQ0MClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zdGEuYz03MzE9dm9pZCBpd2xfZGVhbGxvY19iY2FzdF9zdGF0aW9ucyhzdHJ1Y3QgaXdsX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc3RhLmMtNzQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc3RhLmM6NzUwOiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc3RhLmMtNzUxLXN0YXRpYyB2b2lkIGl3bF9kdW1wX2xxX2NtZChzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHQuYz0yMzA9c3RhdGljIHZvaWQgaXdsX2xlZ2FjeV90dF9oYW5kbGVyKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwgczMyIHRlbXAsIGJvb2wgZm9yY2UpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHQuYy0yMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90dC5jOjIzNTojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R0LmMtMjM2LVx0aWYgKCh0dC1cdTAwM2V0dF9wcmV2aW91c190ZW1wKSBcdTAwMjZcdTAwMjZcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90dC5jLTI1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R0LmM6MjU2OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHQuYy0yNTctXHR0dC1cdTAwM2V0dF9wcmV2aW91c190ZW1wID0gdGVtcDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90dC5jPTMzNT1zdGF0aWMgdm9pZCBpd2xfYWR2YW5jZV90dF9oYW5kbGVyKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwgczMyIHRlbXAsIGJvb2wgZm9yY2UpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHQuYy0zNTgtXHRcdCAgICB0ZW1wIFx1MDAzYz0gdHJhbnNhY3Rpb24tXHUwMDNldHRfaGlnaCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHQuYzozNTk6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90dC5jLTM2MC1cdFx0XHRpZiAoKHR0LVx1MDAzZXR0X3ByZXZpb3VzX3RlbXApIFx1MDAyNlx1MDAyNlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R0Lmg9ODU9c3RydWN0IGl3bF90dF9tZ210IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90dC5oLTg5LVx0Ym9vbCBjdF9raWxsX3RvZ2dsZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R0Lmg6OTA6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90dC5oLTkxLVx0czMyIHR0X3ByZXZpb3VzX3RlbXA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYz0yNjA9aW50IGl3bGFnbl90eF9za2Ioc3RydWN0IGl3bF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtMjg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYzoyODc6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jLTI4OC1cdGlmIChpZWVlODAyMTFfaXNfYXV0aChmYykpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYz04MDc9c3RhdGljIHZvaWQgaXdsYWduX2h3cmF0ZV90b190eF9jb250cm9sKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwgdTMyIHJhdGVfbl9mbGFncyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jLTgyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmM6ODI3OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy04MjgtY29uc3QgY2hhciAqaXdsX2dldF90eF9mYWlsX3JlYXNvbih1MzIgc3RhdHVzKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtODY0LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmM6ODY1OiNlbmRpZiAvKiBDT05GSUdfSVdMV0lGSV9ERUJVRyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy04NjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYz05MjA9c3RhdGljIHZvaWQgaXdsX3J4X3JlcGx5X3R4X2FnZyhzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy05ODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jOjk4MTojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtOTgyLSNkZWZpbmUgQUdHX1RYX1NUQVRFX0ZBSUwoeCkgY2FzZSBBR0dfVFhfU1RBVEVfICMjIHg6IHJldHVybiAjeFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmM9OTg0PWNvbnN0IGNoYXIgKml3bF9nZXRfYWdnX3R4X2ZhaWxfcmVhc29uKHUxNiBzdGF0dXMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy0xMDA1LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmM6MTAwNjojZW5kaWYgLyogQ09ORklHX0lXTFdJRklfREVCVUcgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtMTAwNy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RiZy5jPTI0Mjk9dm9pZCBpd2xfZndfZGJnX3N0b3BfcmVzdGFydF9yZWNvcmRpbmcoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZGJnLmMtMjQ0Ny1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZGJnLmM6MjQ0ODojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kYmcuYy0yNDQ5LVx0aWYgKCFyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RiZy5oPTE3OT12b2lkIGl3bF9md19kYmdfc3RvcF9yZXN0YXJ0X3JlY29yZGluZyhzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kYmcuaC0xODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RiZy5oOjE4MzojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kYmcuaC0xODQtc3RhdGljIGlubGluZSB2b2lkIGl3bF9md19zZXRfZGJnX3JlY19vbihzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kYmcuaD0yMzU9aW50IGl3bF9md19zZW5kX3RpbWVzdGFtcF9tYXJrZXJfY21kKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RiZy5oLTIzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZGJnLmg6MjM3OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RiZy5oLTIzOC1zdGF0aWMgaW5saW5lIHZvaWQgaXdsX2Z3X2NhbmNlbF90aW1lc3RhbXAoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZGJnLmg9MjY5PXN0YXRpYyBpbmxpbmUgdm9pZCBpd2xfZndfcmVzdW1lX3RpbWVzdGFtcChzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpIHt9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RiZy5oLTI3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZGJnLmg6MjcxOiNlbmRpZiAvKiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RiZy5oLTI3Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RlYnVnZnMuaC04LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kZWJ1Z2ZzLmg6OTojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kZWJ1Z2ZzLmgtMTAtdm9pZCBpd2xfZndydF9kYmdmc19yZWdpc3RlcihzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kZWJ1Z2ZzLmg9MTQ9c3RhdGljIGlubGluZSB2b2lkIGl3bF9md3J0X2RiZ2ZzX3JlZ2lzdGVyKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RlYnVnZnMuaC0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZGVidWdmcy5oOjE3OiNlbmRpZiAvKiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmg9MTQ4PXN0cnVjdCBpd2xfZndfcnVudGltZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmgtMTkzLVx0c3RydWN0IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcnVudGltZS5oOjE5NDojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmgtMTk1LVx0XHRzdHJ1Y3QgZGVsYXllZF93b3JrIHdrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcnVudGltZS5oLTE5OS1cdH0gdGltZXN0YW1wO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmg6MjAwOiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3J1bnRpbWUuaC0yMDEtXHRib29sIHRwY19lbmFibGVkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmg6MjAyOiNlbmRpZiAvKiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3J1bnRpbWUuaC0yMDMtXHRzdHJ1Y3QgaXdsX3Nhcl9wcm9maWxlIHNhcl9wcm9maWxlc1tCSU9TX1NBUl9NQVhfUFJPRklMRV9OVU1dO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWNvbmZpZy5oPTUxMz1zdHJ1Y3QgaXdsX2Rldl9pbmZvIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaC01MzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaDo1MzI6I2lmIElTX0VOQUJMRUQoQ09ORklHX0lXTFdJRklfS1VOSVRfVEVTVFMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaC01MzMtZXh0ZXJuIGNvbnN0IHN0cnVjdCBpd2xfZGV2X2luZm8gaXdsX2Rldl9pbmZvX3RhYmxlW107XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuYz02ND1JV0xfRVhQT1JUX1NZTUJPTChfX2l3bF9lcnIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuYy02NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmM6NjY6I2lmIGRlZmluZWQoQ09ORklHX0lXTFdJRklfREVCVUcpIHx8IGRlZmluZWQoQ09ORklHX0lXTFdJRklfREVWSUNFX1RSQUNJTkcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5jLTY3LXZvaWQgX19pd2xfZGJnKHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5jLTc3LVx0dmFmLnZhID0gXHUwMDI2YXJncztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmM6Nzg6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5jLTc5LVx0aWYgKGl3bF9oYXZlX2RlYnVnX2xldmVsKGxldmVsKSBcdTAwMjZcdTAwMjZcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oPTE2PXN0YXRpYyBpbmxpbmUgYm9vbCBpd2xfaGF2ZV9kZWJ1Z19sZXZlbCh1MzIgbGV2ZWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oLTE3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmg6MTg6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oLTE5LVx0cmV0dXJuIGl3bHdpZmlfbW9kX3BhcmFtcy5kZWJ1Z19sZXZlbCBcdTAwMjYgbGV2ZWw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaD0zNz12b2lkIF9faXdsX2NyaXQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpmbXQsIC4uLikgX19wcmludGYoMiwgMyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaC02OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmg6NzA6I2lmIGRlZmluZWQoQ09ORklHX0lXTFdJRklfREVCVUcpIHx8IGRlZmluZWQoQ09ORklHX0lXTFdJRklfREVWSUNFX1RSQUNJTkcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oLTcxLXZvaWQgX19pd2xfZGJnKHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oPTgzPWRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmgtOTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oOjEwMDojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmgtMTAxLSNkZWZpbmUgaXdsX3ByaW50X2hleF9kdW1wKG0sIGxldmVsLCBwLCBsZW4pXHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaD0xMDI9ZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHRcdFx0XFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oLTEwOC0jZGVmaW5lIGl3bF9wcmludF9oZXhfZHVtcChtLCBsZXZlbCwgcCwgbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaDoxMDk6I2VuZGlmXHRcdFx0XHQvKiBDT05GSUdfSVdMV0lGSV9ERUJVRyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaC0xMTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaC0xMjctICpcdC9zeXMvbW9kdWxlL2l3bHdpZmkvcGFyYW1ldGVycy9kZWJ1Z1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaDoxMjg6ICogd2hlbiBDT05GSUdfSVdMV0lGSV9ERUJVRz15LlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaC0xMjktICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmgtMTMwLSAqXHQvc3lzL2tlcm5lbC9kZWJ1Zy9waHkwL2l3bHdpZmkvZGVidWcvZGVidWdfbGV2ZWxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmg6MTMxOiAqIHdoZW4gQ09ORklHX0lXTFdJRklfREVCVUdGUz15LlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaC0xMzItICpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1kYXRhLmgtOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWRhdGEuaDo5OiNpZiAhZGVmaW5lZChfX0lXTFdJRklfREVWSUNFX1RSQUNFX0RBVEEpIHx8IGRlZmluZWQoVFJBQ0VfSEVBREVSX01VTFRJX1JFQUQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1kYXRhLmg6MTA6I2RlZmluZSBfX0lXTFdJRklfREVWSUNFX1RSQUNFX0RBVEFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWRhdGEuaC0xMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1kYXRhLmg9Mzc9VFJBQ0VfRVZFTlQoaXdsd2lmaV9kZXZfcnhfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1kYXRhLmgtNTItKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWRhdGEuaDo1MzojZW5kaWYgLyogX19JV0xXSUZJX0RFVklDRV9UUkFDRV9EQVRBICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1kYXRhLmgtNTQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtaW8uaC03LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtaW8uaDo4OiNpZiAhZGVmaW5lZChfX0lXTFdJRklfREVWSUNFX1RSQUNFX0lPKSB8fCBkZWZpbmVkKFRSQUNFX0hFQURFUl9NVUxUSV9SRUFEKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtaW8uaDo5OiNkZWZpbmUgX19JV0xXSUZJX0RFVklDRV9UUkFDRV9JT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtaW8uaC0xMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1pby5oPTE3Mj1UUkFDRV9FVkVOVChpd2x3aWZpX2Rldl9pY3RfcmVhZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1pby5oLTE4Ny0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtaW8uaDoxODg6I2VuZGlmIC8qIF9fSVdMV0lGSV9ERVZJQ0VfVFJBQ0VfSU8gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWlvLmgtMTg5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWl3bHdpZmkuaC05LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtaXdsd2lmaS5oOjEwOiNpZiAhZGVmaW5lZChfX0lXTFdJRklfREVWSUNFX1RSQUNFX0lXTFdJRkkpIHx8IGRlZmluZWQoVFJBQ0VfSEVBREVSX01VTFRJX1JFQUQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1pd2x3aWZpLmg6MTE6I2RlZmluZSBfX0lXTFdJRklfREVWSUNFX1RSQUNFX0lXTFdJRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWl3bHdpZmkuaC0xMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1pd2x3aWZpLmg9MTEyPVRSQUNFX0VWRU5UKGl3bHdpZmlfZGV2X3Vjb2RlX2V2ZW50LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWl3bHdpZmkuaC0xMzAtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWl3bHdpZmkuaDoxMzE6I2VuZGlmIC8qIF9fSVdMV0lGSV9ERVZJQ0VfVFJBQ0VfSVdMV0lGSSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtaXdsd2lmaS5oLTEzMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1tc2cuaC02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtbXNnLmg6NzojaWYgIWRlZmluZWQoX19JV0xXSUZJX0RFVklDRV9UUkFDRV9NU0cpIHx8IGRlZmluZWQoVFJBQ0VfSEVBREVSX01VTFRJX1JFQUQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1tc2cuaDo4OiNkZWZpbmUgX19JV0xXSUZJX0RFVklDRV9UUkFDRV9NU0dcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLW1zZy5oLTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtbXNnLmg9NDk9VFJBQ0VfRVZFTlQoaXdsd2lmaV9kYmcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtbXNnLmgtNjQtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLW1zZy5oOjY1OiNlbmRpZiAvKiBfX0lXTFdJRklfREVWSUNFX1RSQUNFX01TRyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtbXNnLmgtNjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtdWNvZGUuaC02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtdWNvZGUuaDo3OiNpZiAhZGVmaW5lZChfX0lXTFdJRklfREVWSUNFX1RSQUNFX1VDT0RFKSB8fCBkZWZpbmVkKFRSQUNFX0hFQURFUl9NVUxUSV9SRUFEKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtdWNvZGUuaDo4OiNkZWZpbmUgX19JV0xXSUZJX0RFVklDRV9UUkFDRV9VQ09ERVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtdWNvZGUuaC05LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLXVjb2RlLmg9MzU9VFJBQ0VfRVZFTlQoaXdsd2lmaV9kZXZfdWNvZGVfd3JhcF9ldmVudCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS11Y29kZS5oLTU0LSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS11Y29kZS5oOjU1OiNlbmRpZiAvKiBfX0lXTFdJRklfREVWSUNFX1RSQUNFX1VDT0RFICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS11Y29kZS5oLTU2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmgtOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmg6OTojaWZuZGVmIF9fSVdMV0lGSV9ERVZJQ0VfVFJBQ0VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmg6MTA6I2RlZmluZSBfX0lXTFdJRklfREVWSUNFX1RSQUNFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS5oLTExLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3NrYnVmZi5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UuaD00OT1zdGF0aWMgaW5saW5lIHNpemVfdCBpd2xfcnhfdHJhY2VfbGVuKGNvbnN0IHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmgtNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS5oOjc5OiNpZiAhZGVmaW5lZChDT05GSUdfSVdMV0lGSV9ERVZJQ0VfVFJBQ0lORykgfHwgZGVmaW5lZChfX0NIRUNLRVJfXylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmgtODAtI3VuZGVmIFRSQUNFX0VWRU5UXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UuaD04Nz1zdGF0aWMgaW5saW5lIHZvaWQgdHJhY2VfICMjIG5hbWUocHJvdG8pIHt9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UuaC05OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmg6OTk6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFVklDRV9UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS5oLTEwMC1ERUNMQVJFX1RSQUNFUE9JTlQoaXdsd2lmaV9kZXZfcngpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmg9MTA2PXN0YXRpYyBpbmxpbmUgdm9pZCBtYXliZV90cmFjZV9pd2x3aWZpX2Rldl9yeChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS5oLTEwOC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS5oOjEwOTojaWZkZWYgQ09ORklHX0lXTFdJRklfREVWSUNFX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmgtMTEwLVx0aWYgKHRyYWNlcG9pbnRfZW5hYmxlZChpd2x3aWZpX2Rldl9yeCkgfHxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS5oLTExNC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS5oOjExNTojZW5kaWYgLyogX19JV0xXSUZJX0RFVklDRV9UUkFDRSAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTM1PU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjM3OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0zOC1zdGF0aWMgc3RydWN0IGRlbnRyeSAqaXdsX2RiZ2ZzX3Jvb3Q7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9NTU9c3RydWN0IGl3bF9kcnYge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6Njg6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTY5LVx0c3RydWN0IGRlbnRyeSAqZGJnZnNfZHJ2O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTE1Njg9X2l3bF9vcF9tb2RlX3N0YXJ0KHN0cnVjdCBpd2xfZHJ2ICpkcnYsIHN0cnVjdCBpd2x3aWZpX29wbW9kZV90YWJsZSAqb3ApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTU3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjE1ODA6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE1ODEtXHRcdGRydi1cdTAwM2VkYmdmc19vcF9tb2RlID0gZGVidWdmc19jcmVhdGVfZGlyKG9wLVx1MDAzZW5hbWUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTU5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjE1OTU6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE1OTYtXHRcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShkcnYtXHUwMDNlZGJnZnNfb3BfbW9kZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9MTYwOT1zdGF0aWMgdm9pZCBfaXdsX29wX21vZGVfc3RvcChzdHJ1Y3QgaXdsX2RydiAqZHJ2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE2MTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoxNjE5OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xNjIwLVx0XHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoZHJ2LVx1MDAzZWRiZ2ZzX29wX21vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTE5NDg9c3RydWN0IGl3bF9kcnYgKml3bF9kcnZfc3RhcnQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTk2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjE5NjU6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE5NjYtXHQvKiBDcmVhdGUgdGhlIGRldmljZSBkZWJ1Z2ZzIGVudHJpZXMuICovXG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcwMDgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbnRlbCBXaXJlbGVzcyBEcml2ZXIgUmVzdGFydCBNZWNoYW5pc20qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2UgdGhlIGtleSBmdW5jdGlvbiB3ZSYjMzk7cmUgY29uY2VybmVkIHdpdGggaGVyZSBpcyBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgLiBSaWdodCwgYmVjYXVzZSBzeXprYWxsZXImIzM5O3MgZnV6emluZyBQQ0kgZGV2aWNlcywgaXQmIzM5O3MgcHJvYmFibHkgbWVzc2luZyB3aXRoIFBDSSBjb25maWcgc3BhY2UgYW5kIG1lbW9yeS1tYXBwZWQgSS9PLCB3aGljaCBpcyB3aGVyZSBhIGxvdCBvZiB0aGVzZSBkcml2ZXIgYnVncyB0ZW5kIHRvIHBvcCB1cC4gVGhlIHJlYWwgcXVlc3Rpb24gaXM6IGNhbiB3ZSBhY3R1YWxseSAqaGl0KiBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgIHRocm91Z2ggdGhpcyBmdXp6aW5nIHByb2Nlc3M/CgpMZXQgbWUganVzdCBjaGVjayB3aGVyZSBpdCYjMzk7cyBiZWluZyBjYWxsZWQgZnJvbS4gQWgsIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYSBkZWxheWVkIHdvcmssIHNwZWNpZmljYWxseSBgdHJhbnMtJmd0O3Jlc3RhcnQud2tgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCBwcm9iYWJseSBoYW5kbGVzIHNvbWUgc29ydCBvZiByZWNvdmVyeSBvciByZXN0YXJ0IGxvZ2ljLiBTbywgaXQgKmlzKiBjYWxsZWQgZnJvbSBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgIGl0c2VsZiwgbGlrZWx5IGZvciBiYWNrb2ZmIHNjZW5hcmlvcy4gSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyIGFuZCBzZWUgaWYgdGhlcmUgYXJlIG90aGVyIHBsYWNlcyB3aGVyZSBgdHJhbnMtJmd0O3Jlc3RhcnQud2tgIGlzIGJlaW5nIHF1ZXVlZC4gVGhpcyB3aWxsIGhlbHAgbWUgdG8gZGV0ZXJtaW5lIGFsbCB0aGUgdHJpZ2dlciBwb2ludHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RyYW5zLVx1MDAzZXJlc3RhcnQud2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jPTIwMj1zdGF0aWMgdm9pZCBpd2xfdHJhbnNfcmVzdGFydF93ayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMjM4LVx0XHRJV0xfRVJSKHRyYW5zLCBcJiMzNDtUb28gbWFueSBkZXZpY2UgZXJyb3JzIC0gZGVsYXkgbmV4dCByZXNldFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjIzOTpcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfd3EsIFx1MDAyNnRyYW5zLVx1MDAzZXJlc3RhcnQud2ssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTI0MC1cdFx0XHRcdCAgIElXTF9UUkFOU19SRVNFVF9ERUxBWSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYz0yNjc9c3RydWN0IGl3bF90cmFucyAqaXdsX3RyYW5zX2FsbG9jKHVuc2lnbmVkIGludCBwcml2X3NpemUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0yODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjI4OTpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNnRyYW5zLVx1MDAzZXJlc3RhcnQud2ssIGl3bF90cmFuc19yZXN0YXJ0X3drKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMjkwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM9Mjk0PXZvaWQgaXdsX3RyYW5zX2ZyZWUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTI5NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjI5NjpcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZ0cmFucy1cdTAwM2VyZXN0YXJ0LndrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMjk3LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jPTQxMj12b2lkIGl3bF90cmFuc19vcF9tb2RlX2xlYXZlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtNDIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzo0MjE6XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2dHJhbnMtXHUwMDNlcmVzdGFydC53ayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTQyMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oPTEwMDI9c3RhdGljIGlubGluZSB2b2lkIGl3bF90cmFuc19zY2hlZHVsZV9yZXNldChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTEwMjEtXHRcdFx0XHRcdCAgICAgICBcdTAwMjZ0cmFucy1cdTAwM2VzdGF0dXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaDoxMDIyOlx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfd3EsIFx1MDAyNnRyYW5zLVx1MDAzZXJlc3RhcnQud2ssIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0xMDIzLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgxMjMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgaXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0YCBDaGFuZ2UqKgoKT2theSwgc28gdGhpcyBgaXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0YCBmdW5jdGlvbiBpcyBiZWluZyBxdWV1ZWQsIHRoYXQgbXVjaCBpcyBjbGVhci4gQnV0IGlzIHRoaXMgYSByZWFsLCBmdW5jdGlvbmFsIGNoYW5nZT8gWWVzLCBpdCYjMzk7cyBtb2RpZnlpbmcgdGhlIHdvcmtxdWV1ZSwgdGhhdOKAmXMgc2lnbmlmaWNhbnQuIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciBpdCYjMzk7cyB3b3J0aCB0aGUgZWZmb3J0IG9mIGZ1enppbmcuIEhvbmVzdGx5LCB0aGUgY2hhbmdlIGl0c2VsZiBzZWVtcyBxdWl0ZSBzbWFsbCBhbmQgdmVyeSBzcGVjaWZpYyB0byB0aGUgc2NoZWR1bGluZyBvZiBhIGhhcmR3YXJlIHJlc2V0IHdpdGhpbiB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyLgoKQ2FuIEkgZXZlbiByZWFjaCB0aGlzIGxvZ2ljIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudD8gTm93LCBzeXprYWxsZXIgKmRvZXMqIGZ1enogUENJIGRldmljZXMsIHdoaWNoIGlzIHByb21pc2luZy4gSSBrbm93IHRoZXJlJiMzOTtzIHRoYXQgYHN5el9wY2lfZGV2aWNlYCBjYWxsIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBidXQgaXQmIzM5O3Mgb2Z0ZW4gbm90IHZlcnkgZWZmZWN0aXZlIG9uIGNvbXBsZXggZHJpdmVycyBsaWtlIGBpd2x3aWZpYCB1bmxlc3MgYSB2ZXJ5IHNwZWNpZmljIGVtdWxhdG9yIGlzIHVzZWQsIHdoaWNoIEkgZG9uJiMzOTt0IHJlY2FsbCBzZWVpbmcuIFN0aWxsLCBzaW5jZSBpdCAqaXMqIGEgUENJIGRyaXZlciwgSSBoYXZlIHRvIGFzc3VtZSBpdCYjMzk7cyB0aGVvcmV0aWNhbGx5IHJlYWNoYWJsZS4KCldhaXQgYSBzZWNvbmQsIHRoZXJlJiMzOTtzIGEgaHVnZSBjYXZlYXQgaGVyZS4gYGl3bHdpZmlgIGlzIGEgZmlybXdhcmUtZGVwZW5kZW50IGRyaXZlciwgaXNu4oCZdCBpdD8gV2l0aG91dCB0aGUgZmlybXdhcmUgbG9hZGVkIHByb3Blcmx5LCB0aGUgZGV2aWNlIG1pZ2h0IGp1c3QgZmFpbCBlYXJseSBpbiB0aGUgcHJvYmUgc2VxdWVuY2UgYW5kIG5ldmVyIGV2ZW4gZ2V0IHRvIHRoaXMgcmVzZXQgbG9naWMuIFNvLCB0aGUgbW9yZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXMsIGNhbiBJIHJlYWNoIGBpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXRgICp3aXRob3V0KiB0aGUgZmlybXdhcmU/IEkgbmVlZCB0byBjaGVjayB0aGF0IGJlZm9yZSBJIHNwZW5kIG11Y2ggdGltZSBvbiB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oPTEwMDA9aXdsX3RyYW5zX3JlbGVhc2VfbmljX2FjY2VzcyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTEwMDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oOjEwMDI6c3RhdGljIGlubGluZSB2b2lkIGl3bF90cmFuc19zY2hlZHVsZV9yZXNldChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtMTAwMy1cdFx0XHRcdFx0ICAgIGVudW0gaXdsX2Z3X2Vycm9yX3R5cGUgdHlwZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oPTEwMjU9c3RhdGljIGlubGluZSB2b2lkIGl3bF90cmFuc19md19lcnJvcihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTEwMzQtXHRcdGl3bF9vcF9tb2RlX25pY19lcnJvcih0cmFucy1cdTAwM2VvcF9tb2RlLCB0eXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg6MTAzNTpcdFx0aXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0KHRyYW5zLCB0eXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtMTAzNi1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3J4LmM9MTgzNz1zdGF0aWMgdm9pZCBpd2xfdHJhbnNfcGNpZV9oYW5kbGVfcmVzZXRfaW50ZXJydXB0KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvcnguYy0xODgyLVx0XHRcdHRyYW5zLVx1MDAzZXN0YXRlID0gSVdMX1RSQU5TX05PX0ZXO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9yeC5jOjE4ODM6XHRcdFx0aXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0KHRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9yeC5jLTE4ODQtXHRcdFx0XHRcdFx0IElXTF9FUlJfVFlQRV9UT1BfUkVTRVRfQllfQlQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvcnguYz0yMjYzPWlycXJldHVybl90IGl3bF9wY2llX2lycV9tc2l4X2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvcnguYy0yMzcyLVx0XHRcdFx0XHQgICAgICBJV0xfRVJSX1RZUEVfVE9QX0ZBVEFMX0VSUk9SKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvcnguYzoyMzczOlx0XHRcdGl3bF90cmFuc19zY2hlZHVsZV9yZXNldCh0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvcnguYy0yMzc0LVx0XHRcdFx0XHRcdCBJV0xfRVJSX1RZUEVfVE9QX0ZBVEFMX0VSUk9SKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLWdlbjIuYz01MDQ9aW50IGl3bF90cmFuc19wY2llX2dlbjJfc3RhcnRfZncoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy1nZW4yLmMtNjIzLVx0XHRcdFx0XHQgICAgICBJV0xfRVJSX1RZUEVfVE9QX1JFU0VUX0ZBSUxFRCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLWdlbjIuYzo2MjQ6XHRcdFx0aXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0KHRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy1nZW4yLmMtNjI1LVx0XHRcdFx0XHRcdCBJV0xfRVJSX1RZUEVfVE9QX1JFU0VUX0ZBSUxFRCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90eC1nZW4yLmM9MTE5Nz1pbnQgaXdsX3BjaWVfZ2VuMl9lbnF1ZXVlX2hjbWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90eC1nZW4yLmMtMTI5Ni1cdFx0XHRcdCAgICAgIElXTF9FUlJfVFlQRV9DTURfUVVFVUVfRlVMTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3R4LWdlbjIuYzoxMjk3Olx0XHRpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXQodHJhbnMsIElXTF9FUlJfVFlQRV9DTURfUVVFVUVfRlVMTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3R4LWdlbjIuYy0xMjk4LVx0XHRpZHggPSAtRU5PU1BDO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHguYz0xMzQzPWludCBpd2xfcGNpZV9lbnF1ZXVlX2hjbWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90eC5jLTE0NTEtXHRcdFx0XHQgICAgICBJV0xfRVJSX1RZUEVfQ01EX1FVRVVFX0ZVTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90eC5jOjE0NTI6XHRcdGl3bF90cmFuc19zY2hlZHVsZV9yZXNldCh0cmFucywgSVdMX0VSUl9UWVBFX0NNRF9RVUVVRV9GVUxMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHguYy0xNDUzLVx0XHRpZHggPSAtRU5PU1BDO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTk2MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDQyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXRgIFBhdGNoKioKCk9rYXksIHNvIGBpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXRgIGlzIGJlaW5nIGNhbGxlZCBkdWUgdG8gZXJyb3JzIHBvdGVudGlhbGx5IHRyaWdnZXJlZCBieSBQQ0kgZnV6emluZyBvciBpbnRlcnJ1cHQgZnV6emluZyDigJMgdGhhdCYjMzk7cyB0aGUgY29udGV4dC4gVGhlIHBhdGNoIGl0c2VsZiBpcyBpbmNyZWRpYmx5IHNpbXBsZTogaXQmIzM5O3MgYSBvbmUtbGluZSBjaGFuZ2UsIHN3YXBwaW5nIGBzeXN0ZW1fdW5ib3VuZF93cWAgZm9yIGBzeXN0ZW1fZGZsX3dxYC4gIElzIHRoaXMgZXZlbiB3b3J0aCBib3RoZXJpbmcgd2l0aCBpbiB0ZXJtcyBvZiBmdXp6aW5nPyBJdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55ICpuZXcqIGxvZ2ljLCBqdXN0IGNoYW5nZXMgd2hlcmUgYSBkZWxheWVkIHdvcmsgaXRlbSBnZXRzIHNjaGVkdWxlZC4gIFN5emthbGxlciBwcm9iYWJseSB3b24mIzM5O3QgZmluZCBidWdzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gKnRoaXMqIGNoYW5nZSB1bmxlc3MgaXQgZXhwb3NlcyBvciBmaXhlcyBhIHJhY2UgY29uZGl0aW9uLCBhbmQgdGhhdCYjMzk7cyBub3Qgb2J2aW91cyBmcm9tIGEgZ2xhbmNlLgoKQnV0IGxldCYjMzk7cyBsb29rIGF0IHRoZSBpbnN0cnVjdGlvbnMsIHdoaWNoIHNheSBub3QgdG8gZnV6eiB0aGlzIGlmIGl0JiMzOTtzIGRvY3VtZW50YXRpb24sIGNvbW1lbnRzLCBkZWNvcmF0aW9uLCBudW1lcmljIGNoYW5nZXMgd2l0aG91dCBmbG93IGFsdGVyYXRpb24sIG9yIHVucmVhY2hhYmxlIGNvZGUuICBJcyB0aGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2U/IFllcywgY2hhbmdpbmcgdGhlIHdvcmtxdWV1ZSAqaXMqIGZ1bmN0aW9uYWw7IGRpZmZlcmVudCB3b3JrcXVldWVzIGhhdmUgZGlmZmVyZW50IHByb3BlcnRpZXMuICBJcyBpdCBpbXBvc3NpYmxlIHRvIHJlYWNoPyBgaXdsd2lmaWAgaXMgYSBQQ0kgZHJpdmVyLCBzbyBQQ0kgZnV6emluZyBtYWtlcyBpdCByZWFjaGFibGUuIEFuZCBpdCYjMzk7cyByZWFsIGhhcmR3YXJlLCBub3QgZW11bGF0ZWQuCgpOb3csIGNhbiBpdCBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VPyBTeXprYWxsZXIgaGFzIGBzeXpfcGNpX2RldmljZWAsIHdoaWNoIGlzIHByb21pc2luZy4gVGhlIHByb2JsZW0gaXMgYGl3bHdpZmlgICpyZXF1aXJlcyogZmlybXdhcmUuIElmIHRoZSBmaXJtd2FyZSBpc24mIzM5O3QgcHJlc2VudCwgdGhlIGRyaXZlciBiYWlscyBvdXQgZWFybHkgaW4gYGl3bF9wY2lfcHJvYmVgLiBTbyBJIG5lZWQgdG8gZGlnIGludG8gYGl3bF9wY2lfcHJvYmVgIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9wY2lfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC0zMi0gKiBUaGlzIGNvbXBvbmVudCBpbXBsZW1lbnRzIHRoZSBzeXN0ZW0gZmxvd3Mgc3VjaCBhcyBidXMgZW51bWVyYXRpb24sIGJ1c1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6MzM6ICogcmVtb3ZhbC4gQnVzIGRlcGVuZGVudCBwYXJ0cyBvZiBzeXN0ZW0gZmxvd3MgKHN1Y2ggYXMgaXdsX3BjaV9wcm9iZSkgYXJlIGluXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC0zNC0gKiBidXMgc3BlY2lmaWMgZmlsZXMgKHRyYW5zcG9ydCBmaWxlcykuIFRoaXMgaXMgdGhlIGNvZGUgdGhhdCBpcyBjb21tb24gYW1vbmdcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM9MTE0Nz1FWFBPUlRfU1lNQk9MX0lGX0lXTFdJRklfS1VOSVQoaXdsX3BjaV9maW5kX2Rldl9pbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jOjExNDk6c3RhdGljIGludCBpd2xfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTExNTAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYz0xMzM4PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpd2xfcGNpX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTM0MC1cdC5pZF90YWJsZSA9IGl3bF9od19jYXJkX2lkcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYzoxMzQxOlx0LnByb2JlID0gaXdsX3BjaV9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMzQyLVx0LnJlbW92ZSA9IGl3bF9wY2lfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTIyMwoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIEZpcm13YXJlIExvYWRpbmcgTWVjaGFuaXNtKioKCk9rYXksIHNvIEkgd2FudCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIEludGVsIHdpcmVsZXNzIGRyaXZlciBoYW5kbGVzIGZpcm13YXJlIGxvYWRpbmcuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgYGl3bF9wY2lfcHJvYmVgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LCByaWdodD8gSXQmIzM5O3Mgd2hlcmUgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbiBoYXBwZW5zLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGlzIGhhbmRsZWQgd2l0aGluIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHksIG9yIGlmIGl0JiMzOTtzIGRlbGVnYXRlZCB0byBhIGhlbHBlciBmdW5jdGlvbiBjYWxsZWQgZHVyaW5nIHRoZSBwcm9iZS4gSSYjMzk7bSBob3BpbmcgSSBjYW4gbG9jYXRlIHRoZSBmaXJtd2FyZSBsb2FkaW5nIHNlcXVlbmNlIHF1aWNrbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTE0OSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTE0OTpcdHN0YXRpYyBpbnQgaXdsX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbjExNTA6XHR7XG4xMTUxOlx0XHRjb25zdCBzdHJ1Y3QgaXdsX21hY19jZmcgKm1hY19jZmcgPSAodm9pZCAqKWVudC1cdTAwM2Vkcml2ZXJfZGF0YTtcbjExNTI6XHRcdHU4IF9faW9tZW0gKmh3X2Jhc2U7XG4xMTUzOlx0XHR1MzIgYmFyMCwgaHdfcmV2O1xuMTE1NDpcdFx0aW50IHJldDtcbjExNTU6XHRcbjExNTY6XHRcdC8qIHJlYXNzaWduIG91ciBCQVIgMCBpZiBpbnZhbGlkIGR1ZSB0byBwb3NzaWJsZSBydW50aW1lIFBNIHJhY2VzICovXG4xMTU3Olx0XHRwY2lfcmVhZF9jb25maWdfZHdvcmQocGRldiwgUENJX0JBU0VfQUREUkVTU18wLCBcdTAwMjZiYXIwKTtcbjExNTg6XHRcdGlmIChiYXIwID09IFBDSV9CQVNFX0FERFJFU1NfTUVNX1RZUEVfNjQpIHtcbjExNTk6XHRcdFx0cmV0ID0gcGNpX2Fzc2lnbl9yZXNvdXJjZShwZGV2LCAwKTtcbjExNjA6XHRcdFx0aWYgKHJldClcbjExNjE6XHRcdFx0XHRyZXR1cm4gcmV0O1xuMTE2MjpcdFx0fVxuMTE2MzpcdFxuMTE2NDpcdFx0cmV0ID0gcGNpbV9lbmFibGVfZGV2aWNlKHBkZXYpO1xuMTE2NTpcdFx0aWYgKHJldClcbjExNjY6XHRcdFx0cmV0dXJuIHJldDtcbjExNjc6XHRcbjExNjg6XHRcdHBjaV9zZXRfbWFzdGVyKHBkZXYpO1xuMTE2OTpcdFxuMTE3MDpcdFx0cmV0ID0gcGNpbV9yZXF1ZXN0X2FsbF9yZWdpb25zKHBkZXYsIERSVl9OQU1FKTtcbjExNzE6XHRcdGlmIChyZXQpIHtcbjExNzI6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7UmVxdWVzdGluZyBhbGwgUENJIEJBUnMgZmFpbGVkLlxcblwmIzM0Oyk7XG4xMTczOlx0XHRcdHJldHVybiByZXQ7XG4xMTc0Olx0XHR9XG4xMTc1Olx0XG4xMTc2Olx0XHRod19iYXNlID0gcGNpbV9pb21hcChwZGV2LCAwLCAwKTtcbjExNzc6XHRcdGlmICghaHdfYmFzZSkge1xuMTE3ODpcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gbWFwIEJBUiAwLlxcblwmIzM0Oyk7XG4xMTc5Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuMTE4MDpcdFx0fVxuMTE4MTpcdFxuMTE4MjpcdFx0LyogV2UgY2FuJiMzOTt0IHVzZSBpd2xfcmVhZDMyIGJlY2F1c2UgdHJhbnMgd2FzbiYjMzk7dCBhbGxvY2F0ZWQgKi9cbjExODM6XHRcdGh3X3JldiA9IHJlYWRsKGh3X2Jhc2UgJiM0MzsgQ1NSX0hXX1JFVik7XG4xMTg0Olx0XHRpZiAoaHdfcmV2ID09IDB4ZmZmZmZmZmYpIHtcbjExODU6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7SFdfUkVWPTB4RkZGRkZGRkYsIFBDSSBpc3N1ZXM/XFxuXCYjMzQ7KTtcbjExODY6XHRcdFx0cmV0dXJuIC1FSU87XG4xMTg3Olx0XHR9XG4xMTg4Olx0XG4xMTg5Olx0XHRyZXR1cm4gaXdsX3BjaV9nZW4xXzJfcHJvYmUocGRldiwgZW50LCBtYWNfY2ZnLCBod19iYXNlLCBod19yZXYpO1xuMTE5MDpcdH1cbjExOTE6XHRcbjExOTI6XHRzdGF0aWMgdm9pZCBpd2xfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbjExOTM6XHR7XG4xMTk0Olx0XHRzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcbjExOTU6XHRcbjExOTY6XHRcdGlmICghdHJhbnMpXG4xMTk3Olx0XHRcdHJldHVybjtcbjExOTg6XHRcbjExOTk6XHRcdGl3bF9wY2llX2dlbjFfMl9yZW1vdmUodHJhbnMpO1xuMTIwMDpcdH1cbjEyMDE6XHRcbjEyMDI6XHQjaWZkZWYgQ09ORklHX1BNX1NMRUVQXG4xMjAzOlx0XG4xMjA0Olx0c3RhdGljIGludCBpd2xfcGNpX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2aWNlKVxuMTIwNTpcdHtcbjEyMDY6XHRcdC8qIEJlZm9yZSB5b3UgcHV0IGNvZGUgaGVyZSwgdGhpbmsgYWJvdXQgV29XTEFOLiBZb3UgY2Fubm90IGNoZWNrIGhlcmVcbjEyMDc6XHRcdCAqIHdoZXRoZXIgV29XTEFOIGlzIGVuYWJsZWQgb3Igbm90LCBhbmQgeW91ciBjb2RlIHdpbGwgcnVuIGV2ZW4gaWZcbjEyMDg6XHRcdCAqIFdvV0xBTiBpcyBlbmFibGVkIC0gZG9uJiMzOTt0IGtpbGwgdGhlIE5JQywgc29tZW9uZSBtYXkgbmVlZCBpdCBpbiBTeC5cbjEyMDk6XHRcdCAqL1xuMTIxMDpcdFxuMTIxMTpcdFx0cmV0dXJuIDA7XG4xMjEyOlx0fVxuMTIxMzpcdFxuMTIxNDpcdHN0YXRpYyBpbnQgX2l3bF9wY2lfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldmljZSwgYm9vbCByZXN0b3JlKVxuMTIxNTpcdHtcbjEyMTY6XHRcdHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gdG9fcGNpX2RldihkZXZpY2UpO1xuMTIxNzpcdFx0c3RydWN0IGl3bF90cmFucyAqdHJhbnMgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XG4xMjE4Olx0XHRzdHJ1Y3QgaXdsX3RyYW5zX3BjaWUgKnRyYW5zX3BjaWUgPSBJV0xfVFJBTlNfR0VUX1BDSUVfVFJBTlModHJhbnMpO1xuMTIxOTpcdFx0Ym9vbCBkZXZpY2Vfd2FzX3Bvd2VyZWRfb2ZmID0gZmFsc2U7XG4xMjIwOlx0XG4xMjIxOlx0XHQvKiBCZWZvcmUgeW91IHB1dCBjb2RlIGhlcmUsIHRoaW5rIGFib3V0IFdvV0xBTi4gWW91IGNhbm5vdCBjaGVjayBoZXJlXG4xMjIyOlx0XHQgKiB3aGV0aGVyIFdvV0xBTiBpcyBlbmFibGVkIG9yIG5vdCwgYW5kIHlvdXIgY29kZSB3aWxsIHJ1biBldmVuIGlmXG4xMjIzOlx0XHQgKiBXb1dMQU4gaXMgZW5hYmxlZCAtIHRoZSBOSUMgbWF5IGJlIGFsaXZlLlxuMTIyNDpcdFx0ICovXG4xMjI1Olx0XG4xMjI2Olx0XHQvKlxuMTIyNzpcdFx0ICogV2UgZGlzYWJsZSB0aGUgUkVUUllfVElNRU9VVCByZWdpc3RlciAoMHg0MSkgdG8ga2VlcFxuMTIyODpcdFx0ICogUENJIFR4IHJldHJpZXMgZnJvbSBpbnRlcmZlcmluZyB3aXRoIEMzIENQVSBzdGF0ZS5cbjEyMjk6XHRcdCAqL1xuMTIzMDpcdFx0cGNpX3dyaXRlX2NvbmZpZ19ieXRlKHBkZXYsIFBDSV9DRkdfUkVUUllfVElNRU9VVCwgMHgwMCk7XG4xMjMxOlx0XG4xMjMyOlx0XHRpZiAoIXRyYW5zLVx1MDAzZW9wX21vZGUpXG4xMjMzOlx0XHRcdHJldHVybiAwO1xuMTIzNDpcdFxuMTIzNTpcdFx0aWYgKHRlc3RfYml0KFNUQVRVU19ERVZJQ0VfRU5BQkxFRCwgXHUwMDI2dHJhbnMtXHUwMDNlc3RhdHVzKSkge1xuMTIzNjpcdFx0XHQvKlxuMTIzNzpcdFx0XHQgKiBTY3JhdGNoIHZhbHVlIHdhcyBhbHRlcmVkLCB0aGlzIG1lYW5zIHRoZSBkZXZpY2Ugd2FzIHBvd2VyZWRcbjEyMzg6XHRcdFx0ICogb2ZmLCB3ZSBuZWVkIHRvIHJlc2V0IGl0IGNvbXBsZXRlbHkuXG4xMjM5Olx0XHRcdCAqIE5vdGU6IE1BQyAoYml0cyAwOjcpIHdpbGwgYmUgY2xlYXJlZCB1cG9uIHN1c3BlbmQgZXZlbiB3aXRoXG4xMjQwOlx0XHRcdCAqIHdvd2xhbiwgYnV0IG5vdCBiaXRzIFsxNTo4XS4gU28gaWYgd2UgaGF2ZSBiaXRzIHNldCBpbiBsb3dlclxuMTI0MTpcdFx0XHQgKiB3b3JkLCBhc3N1bWUgdGhlIGRldmljZSBpcyBhbGl2ZS5cbjEyNDI6XHRcdFx0ICogQWx0ZXJuYXRpdmVseSwgaWYgdGhlIHNjcmF0Y2ggdmFsdWUgaXMgMHhGRkZGRkZGRiwgdGhlbiB3ZVxuMTI0MzpcdFx0XHQgKiBubyBsb25nZXIgaGF2ZSBhY2Nlc3MgdG8gdGhlIGRldmljZSBhbmQgY29uc2lkZXIgaXQgcG93ZXJlZFxuMTI0NDpcdFx0XHQgKiBvZmYuXG4xMjQ1Olx0XHRcdCAqIEZvciBvbGRlciBkZXZpY2VzLCBqdXN0IHRyeSBzaWxlbnRseSB0byBncmFiIHRoZSBOSUMuXG4xMjQ2Olx0XHRcdCAqL1xuMTI0NzpcdFx0XHRpZiAodHJhbnMtXHUwMDNlbWFjX2NmZy1cdTAwM2VkZXZpY2VfZmFtaWx5IFx1MDAzZT0gSVdMX0RFVklDRV9GQU1JTFlfQlopIHtcbjEyNDg6XHRcdFx0XHR1MzIgc2NyYXRjaCA9IGl3bF9yZWFkMzIodHJhbnMsIENTUl9GVU5DX1NDUkFUQ0gpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzA2MgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEaXZpbmcgaW50byB0aGUgYGl3bF9wY2lfZ2VuMV8yX3Byb2JlYCBGdW5jdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMgYGl3bF9wY2lfZ2VuMV8yX3Byb2JlYCBmdW5jdGlvbi4gTGV0JiMzOTtzIHNlZS4uLiBhcyBhIHNlYXNvbmVkIGtlcm5lbCBkZXZlbG9wZXIsIG15IGZpcnN0IHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhlIGJyb2FkZXIgSW50ZWwgd2lyZWxlc3MgZHJpdmVyIGFyY2hpdGVjdHVyZS4gSSBrbm93IHRoaXMgbmFtaW5nIGNvbnZlbnRpb24sIHNvIEkgZXhwZWN0IGl0JiMzOTtzIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggUENJLWJhc2VkIGRldmljZXMgYW5kIHByb2JhYmx5IGEgZ2VuZXJhdGlvbiBvciB0d28gb2YgdGhlIGVhcmx5IGl3bCBoYXJkd2FyZS4gVGhpcyBwcm9iZSBmdW5jdGlvbiBpcyBjcml0aWNhbC4gSXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50LCB0aGUgZ2F0ZWtlZXBlciBmb3IgYnJpbmdpbmcgYSBzdXBwb3J0ZWQgZGV2aWNlIG9ubGluZS4gSXQmIzM5O3Mgd2hlcmUgdGhlIGluaXRpYWwgaGFyZHdhcmUgaWRlbnRpZmljYXRpb24sIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBiYXNpYyBzZXR1cCBvY2N1ci4KCkkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgc3BlY2lmaWMgY2hpcHMgaXQmIzM5O3MgcmVzcG9uc2libGUgZm9yLiBXaGF0IHNwZWNpZmljIGhhcmR3YXJlIHJldmlzaW9ucz8gQXJlIHRoZXJlIGFueSBrbm93biBlcnJhdGEgb3IgcXVpcmt5IGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBwYXJ0aWN1bGFyIGdlbmVyYXRpb24gb2YgaGFyZHdhcmUgdGhhdCBJIHNob3VsZCBrZWVwIGluIG1pbmQ/IEFyZSB0aGVyZSBwbGF0Zm9ybS1zcGVjaWZpYyBkZXBlbmRlbmNpZXMgSSYjMzk7bGwgbmVlZCB0byB3YXRjaCBvdXQgZm9yPyBJdCBsaWtlbHkgbmVlZHMgdG8gbWF0Y2ggdGhlIFBDSSBJRCwgd2hpY2ggSSYjMzk7bGwgd2FudCB0byB2ZXJpZnkuIFRoYXQmIzM5O3MgYWx3YXlzIG15IGZpcnN0IGNoZWNrLiBJIGFsc28gd2FudCB0byBzZWUgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIG90aGVyIGxheWVycyBvZiB0aGUgZHJpdmVyIOKAkyB0aGUgY29yZSBpd2wgY29kZSwgdGhlIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyLCBhbmQgdGhlIG5ldCBkZXZpY2UgcmVnaXN0cmF0aW9uLiBEb2VzIGl0IGFsbG9jYXRlIGEgZGV2aWNlIGNvbnRleHQ/IFdoZXJlIGRvZXMgaXQgaGFuZGxlIGludGVycnVwdCBzZXR1cD8gV2hhdCBpcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UgdG8gcHJvYmUgdGhlIGRldmljZSwgZnJvbSBzdGFydCB0byBmaW5pc2g/IFdoZXJlIGRvZXMgdGhlIGZ1bmN0aW9uIGxlYXZlIG9mZj8KCkkgYWxzbyBuZWVkIHRvIHNlZSBpZiBpdCYjMzk7cyBnb3QgcHJvcGVyIGVycm9yIGhhbmRsaW5nLiBXaGF0IGFib3V0IHBvd2VyIG1hbmFnZW1lbnQgY29uc2lkZXJhdGlvbnM/IEkgZXhwZWN0IHNvbWUga2luZCBvZiBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZSByZWFkL3dyaXRlLCBwb3RlbnRpYWxseSBETUEgc2V0dXAsIGFuZCBpbnRlcnJ1cHQgcm91dGluZy4gSSYjMzk7bGwgd2FudCB0byBjaGVjayBob3cgaXQgaGFuZGxlcyB0aGVzZSBkZXRhaWxzIGFuZCBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4gSXQgbmVlZHMgdG8gYmUgcm9idXN0LCBncmFjZWZ1bGx5IGhhbmRsaW5nIGFueSBmYWlsdXJlcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYW5kIGVuc3VyaW5nIGEgY2xlYW4gcm9sbGJhY2sgaWYgdGhlIGRldmljZSBjYW4mIzM5O3QgYmUgYnJvdWdodCB1cC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLiBJJiMzOTttIHJlYWR5IHRvIGRpdmUgaW4gYW5kIGdldCBhIGdyaXAgb2YgdGhlIG5pdHR5IGdyaXR0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3BjaV9nZW4xXzJfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM9MTE0OT1zdGF0aWMgaW50IGl3bF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTExODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM6MTE4OTpcdHJldHVybiBpd2xfcGNpX2dlbjFfMl9wcm9iZShwZGV2LCBlbnQsIG1hY19jZmcsIGh3X2Jhc2UsIGh3X3Jldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTE5MC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9pbnRlcm5hbC5oPTEyMDk9dm9pZCBpd2xfcGNpZV9hbGxvY19md19tb25pdG9yKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCB1OCBtYXhfcG93ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9pbnRlcm5hbC5oOjEyMTA6aW50IGl3bF9wY2lfZ2VuMV8yX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9pbnRlcm5hbC5oLTEyMTEtXHRcdFx0IGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jPTQyMDA9c3RhdGljIHZvaWQgaXdsX3BjaWVfY2hlY2tfbWVfc3RhdHVzKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy00MjMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jOjQyMzI6aW50IGl3bF9wY2lfZ2VuMV8yX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTQyMzMtXHRcdFx0IGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MDY2CgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkRpZ2dpbmcgaW50byBpd2xcX3BjaVxfZ2VuMVxfMlxfcHJvYmUqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgdGFraW5nIGEgY2xvc2UgbG9vayBhdCB0aGUgYGl3bF9wY2lfZ2VuMV8yX3Byb2JlYCBmdW5jdGlvbi4gVGhlIGZpcnN0IHRoaW5nIEkgd2FudCB0byB1bmRlcnN0YW5kIGlzIGhvdyBpdCBoYW5kbGVzIGZpcm13YXJlIGxvYWRpbmcuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSB3aXJlbGVzcyBkcml2ZXIgYnJpbmctdXAgcHJvY2VzcywgYW5kIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgdGhpcyBwcm9iZSBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgaW5pdGlhdGluZyBpdCwgYW5kIGlmIHNvLCBob3cuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgdGhyb3VnaCB0aGUgY29kZSwgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgY2FsbHMgcmVsYXRlZCB0byBmaXJtd2FyZSBsb2FkaW5nIEFQSXMgb3Igc3RydWN0dXJlcy4gVGhpcyBpbml0aWFsIGludmVzdGlnYXRpb24gc2hvdWxkIHByb3ZpZGUgYSBzb2xpZCBiYXNlbGluZSB1bmRlcnN0YW5kaW5nIG9mIGl0cyBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MjMyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs0MjMyOlx0aW50IGl3bF9wY2lfZ2VuMV8yX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuNDIzMzpcdFx0XHRcdCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50LFxuNDIzNDpcdFx0XHRcdCBjb25zdCBzdHJ1Y3QgaXdsX21hY19jZmcgKm1hY19jZmcsXG40MjM1Olx0XHRcdFx0IHU4IF9faW9tZW0gKmh3X2Jhc2UsIHUzMiBod19yZXYpXG40MjM2Olx0e1xuNDIzNzpcdFx0Y29uc3Qgc3RydWN0IGl3bF9kZXZfaW5mbyAqZGV2X2luZm87XG40MjM4Olx0XHRzdHJ1Y3QgaXdsX3RyYW5zX2luZm8gaW5mbyA9IHtcbjQyMzk6XHRcdFx0Lmh3X2lkID0gKHBkZXYtXHUwMDNlZGV2aWNlIFx1MDAzY1x1MDAzYyAxNikgJiM0MzsgcGRldi1cdTAwM2VzdWJzeXN0ZW1fZGV2aWNlLFxuNDI0MDpcdFx0XHQuaHdfcmV2ID0gaHdfcmV2LFxuNDI0MTpcdFx0fTtcbjQyNDI6XHRcdHN0cnVjdCBpd2xfdHJhbnMgKml3bF90cmFucztcbjQyNDM6XHRcdHN0cnVjdCBpd2xfdHJhbnNfcGNpZSAqdHJhbnNfcGNpZTtcbjQyNDQ6XHRcdGludCByZXQ7XG40MjQ1Olx0XG40MjQ2Olx0XHRpd2xfdHJhbnMgPSBpd2xfdHJhbnNfcGNpZV9hbGxvYyhwZGV2LCBtYWNfY2ZnLCBcdTAwMjZpbmZvLCBod19iYXNlKTtcbjQyNDc6XHRcdGlmIChJU19FUlIoaXdsX3RyYW5zKSlcbjQyNDg6XHRcdFx0cmV0dXJuIFBUUl9FUlIoaXdsX3RyYW5zKTtcbjQyNDk6XHRcbjQyNTA6XHRcdHRyYW5zX3BjaWUgPSBJV0xfVFJBTlNfR0VUX1BDSUVfVFJBTlMoaXdsX3RyYW5zKTtcbjQyNTE6XHRcbjQyNTI6XHRcdGl3bF90cmFuc19wY2llX2NoZWNrX3Byb2R1Y3RfcmVzZXRfc3RhdHVzKHBkZXYpO1xuNDI1MzpcdFx0aXdsX3RyYW5zX3BjaWVfY2hlY2tfcHJvZHVjdF9yZXNldF9tb2RlKHBkZXYpO1xuNDI1NDpcdFxuNDI1NTpcdFx0Lyogc2V0IHRoZSB0aGluZ3Mgd2Uga25vdyBzbyBmYXIgZm9yIHRoZSBncmFiIE5JQyBhY2Nlc3MgKi9cbjQyNTY6XHRcdGl3bF90cmFuc19zZXRfaW5mbyhpd2xfdHJhbnMsIFx1MDAyNmluZm8pO1xuNDI1NzpcdFxuNDI1ODpcdFx0LypcbjQyNTk6XHRcdCAqIExldCYjMzk7cyB0cnkgdG8gZ3JhYiBOSUMgYWNjZXNzIGVhcmx5IGhlcmUuIFNvbWV0aW1lcywgTklDcyBtYXlcbjQyNjA6XHRcdCAqIGZhaWwgdG8gaW5pdGlhbGl6ZSwgYW5kIGlmIHRoYXQgaGFwcGVucyBpdCYjMzk7cyBiZXR0ZXIgaWYgd2Ugc2VlXG40MjYxOlx0XHQgKiBpc3N1ZXMgZWFybHkgb24gKGFuZCBjYW4gcmVwcm9iZSwgcGVyIHRoZSBsb2dpYyBpbnNpZGUpLCB0aGFuXG40MjYyOlx0XHQgKiBmaXJzdCB0cnlpbmcgdG8gbG9hZCB0aGUgZmlybXdhcmUgZXRjLiBhbmQgcG90ZW50aWFsbHkgb25seVxuNDI2MzpcdFx0ICogZGV0ZWN0aW5nIGFueSBwcm9ibGVtcyB3aGVuIHRoZSBmaXJzdCBpbnRlcmZhY2UgaXMgYnJvdWdodCB1cC5cbjQyNjQ6XHRcdCAqL1xuNDI2NTpcdFx0cmV0ID0gaXdsX3BjaWVfcHJlcGFyZV9jYXJkX2h3KGl3bF90cmFucyk7XG40MjY2Olx0XHRpZiAoIXJldCkge1xuNDI2NzpcdFx0XHRyZXQgPSBpd2xfdHJhbnNfYWN0aXZhdGVfbmljKGl3bF90cmFucyk7XG40MjY4Olx0XHRcdGlmIChyZXQpXG40MjY5Olx0XHRcdFx0Z290byBvdXRfZnJlZV90cmFucztcbjQyNzA6XHRcdFx0aWYgKGl3bF90cmFuc19ncmFiX25pY19hY2Nlc3MoaXdsX3RyYW5zKSkge1xuNDI3MTpcdFx0XHRcdGdldF9jcmZfaWQoaXdsX3RyYW5zLCBcdTAwMjZpbmZvKTtcbjQyNzI6XHRcdFx0XHQvKiBhbGwgZ29vZCAqL1xuNDI3MzpcdFx0XHRcdGl3bF90cmFuc19yZWxlYXNlX25pY19hY2Nlc3MoaXdsX3RyYW5zKTtcbjQyNzQ6XHRcdFx0fSBlbHNlIHtcbjQyNzU6XHRcdFx0XHRyZXQgPSAtRUlPO1xuNDI3NjpcdFx0XHRcdGdvdG8gb3V0X2ZyZWVfdHJhbnM7XG40Mjc3Olx0XHRcdH1cbjQyNzg6XHRcdH1cbjQyNzk6XHRcbjQyODA6XHRcdGluZm8uaHdfcmZfaWQgPSBpd2xfcmVhZDMyKGl3bF90cmFucywgQ1NSX0hXX1JGX0lEKTtcbjQyODE6XHRcbjQyODI6XHRcdC8qXG40MjgzOlx0XHQgKiBUaGUgUkZfSUQgaXMgc2V0IHRvIHplcm8gaW4gYmxhbmsgT1RQIHNvIHJlYWQgdmVyc2lvbiB0b1xuNDI4NDpcdFx0ICogZXh0cmFjdCB0aGUgUkZfSUQuXG40Mjg1Olx0XHQgKiBUaGlzIGlzIHJlbGV2YW50IG9ubHkgZm9yIGZhbWlseSA5MDAwIGFuZCB1cC5cbjQyODY6XHRcdCAqL1xuNDI4NzpcdFx0aWYgKGl3bF90cmFucy1cdTAwM2VtYWNfY2ZnLVx1MDAzZWRldmljZV9mYW1pbHkgXHUwMDNlPSBJV0xfREVWSUNFX0ZBTUlMWV85MDAwIFx1MDAyNlx1MDAyNlxuNDI4ODpcdFx0ICAgICFDU1JfSFdfUkZJRF9UWVBFKGluZm8uaHdfcmZfaWQpIFx1MDAyNlx1MDAyNiBtYXBfY3JmX2lkKGl3bF90cmFucywgXHUwMDI2aW5mbykpIHtcbjQyODk6XHRcdFx0cmV0ID0gLUVJTlZBTDtcbjQyOTA6XHRcdFx0Z290byBvdXRfZnJlZV90cmFucztcbjQyOTE6XHRcdH1cbjQyOTI6XHRcbjQyOTM6XHRcdElXTF9JTkZPKGl3bF90cmFucywgXCYjMzQ7UENJIGRldiAlMDR4LyUwNHgsIHJldj0weCV4LCByZmlkPTB4JXhcXG5cJiMzNDssXG40Mjk0Olx0XHRcdCBwZGV2LVx1MDAzZWRldmljZSwgcGRldi1cdTAwM2VzdWJzeXN0ZW1fZGV2aWNlLFxuNDI5NTpcdFx0XHQgaW5mby5od19yZXYsIGluZm8uaHdfcmZfaWQpO1xuNDI5NjpcdFxuNDI5NzpcdCNpZiAhSVNfRU5BQkxFRChDT05GSUdfSVdMTUxEKVxuNDI5ODpcdFx0aWYgKGl3bF9kcnZfaXNfd2lmaTdfc3VwcG9ydGVkKGl3bF90cmFucykpIHtcbjQyOTk6XHRcdFx0SVdMX0VSUihpd2xfdHJhbnMsXG40MzAwOlx0XHRcdFx0XCYjMzQ7SVdMTUxEIG5lZWRzIHRvIGJlIGNvbXBpbGVkIHRvIHN1cHBvcnQgdGhpcyBkZXZpY2VcXG5cJiMzNDspO1xuNDMwMTpcdFx0XHRyZXQgPSAtRU9QTk9UU1VQUDtcbjQzMDI6XHRcdFx0Z290byBvdXRfZnJlZV90cmFucztcbjQzMDM6XHRcdH1cbjQzMDQ6XHQjZW5kaWZcbjQzMDU6XHRcbjQzMDY6XHRcdGRldl9pbmZvID0gaXdsX3BjaV9maW5kX2Rldl9pbmZvKHBkZXYtXHUwMDNlZGV2aWNlLCBwZGV2LVx1MDAzZXN1YnN5c3RlbV9kZXZpY2UsXG40MzA3Olx0XHRcdFx0XHRcdCBDU1JfSFdfUkZJRF9UWVBFKGluZm8uaHdfcmZfaWQpLFxuNDMwODpcdFx0XHRcdFx0XHQgQ1NSX0hXX1JGSURfSVNfQ0RCKGluZm8uaHdfcmZfaWQpLFxuNDMwOTpcdFx0XHRcdFx0XHQgSVdMX1NVQkRFVklDRV9SRl9JRChwZGV2LVx1MDAzZXN1YnN5c3RlbV9kZXZpY2UpLFxuNDMxMDpcdFx0XHRcdFx0XHQgSVdMX1NVQkRFVklDRV9CV19MSU0ocGRldi1cdTAwM2VzdWJzeXN0ZW1fZGV2aWNlKSxcbjQzMTE6XHRcdFx0XHRcdFx0ICFpd2xfdHJhbnMtXHUwMDNlbWFjX2NmZy1cdTAwM2VpbnRlZ3JhdGVkKTtcbjQzMTI6XHRcdGlmIChkZXZfaW5mbykge1xuNDMxMzpcdFx0XHRpd2xfdHJhbnMtXHUwMDNlY2ZnID0gZGV2X2luZm8tXHUwMDNlY2ZnO1xuNDMxNDpcdFx0XHRpbmZvLm5hbWUgPSBkZXZfaW5mby1cdTAwM2VuYW1lO1xuNDMxNTpcdFx0fVxuNDMxNjpcdFxuNDMxNzpcdCNpZiBJU19FTkFCTEVEKENPTkZJR19JV0xNVk0pXG40MzE4Olx0XG40MzE5Olx0XHQvKlxuNDMyMDpcdFx0ICogc3BlY2lhbC1jYXNlIDcyNjVELCBpdCBoYXMgdGhlIHNhbWUgUENJIElEcy5cbjQzMjE6XHRcdCAqXG40MzIyOlx0XHQgKiBOb3RlIHRoYXQgYmVjYXVzZSB3ZSBhbHJlYWR5IHBhc3MgdGhlIGNmZyB0byB0aGUgdHJhbnNwb3J0IGFib3ZlLFxuNDMyMzpcdFx0ICogYWxsIHRoZSBwYXJhbWV0ZXJzIHRoYXQgdGhlIHRyYW5zcG9ydCB1c2VzIG11c3QsIHVudGlsIHRoYXQgaXNcbjQzMjQ6XHRcdCAqIGNoYW5nZWQsIGJlIGlkZW50aWNhbCB0byB0aGUgb25lcyBpbiB0aGUgNzI2NUQgY29uZmlndXJhdGlvbi5cbjQzMjU6XHRcdCAqL1xuNDMyNjpcdFx0aWYgKGl3bF90cmFucy1cdTAwM2VjZmcgPT0gXHUwMDI2aXdsNzI2NV9jZmcgXHUwMDI2XHUwMDI2XG40MzI3Olx0XHQgICAgKGluZm8uaHdfcmV2IFx1MDAyNiBDU1JfSFdfUkVWX1RZUEVfTVNLKSA9PSBDU1JfSFdfUkVWX1RZUEVfNzI2NUQpXG40MzI4Olx0XHRcdGl3bF90cmFucy1cdTAwM2VjZmcgPSBcdTAwMjZpd2w3MjY1ZF9jZmc7XG40MzI5Olx0I2VuZGlmXG40MzMwOlx0XHRpZiAoIWl3bF90cmFucy1cdTAwM2VjZmcpIHtcbjQzMzE6XHRcdFx0cHJfZXJyKFwmIzM0O05vIGNvbmZpZyBmb3VuZCBmb3IgUENJIGRldiAlMDR4LyUwNHgsIHJldj0weCV4LCByZmlkPTB4JXhcXG5cJiMzNDssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MTMzCgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5JiMzOTtyZSBteSBvd246CgoqKkFuYWx5emluZyB0aGUgUmVtYWluZGVyIG9mIGBpd2xfcGNpX2dlbjFfMl9wcm9iZWAqKgoKQWxyaWdodCwgc28gd2UmIzM5O3JlIGNvbnRpbnVpbmcgb3VyIGRpc3NlY3Rpb24gb2YgYGl3bF9wY2lfZ2VuMV8yX3Byb2JlYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBoYXBwZW5pbmcuIEkgZXhwZWN0IHRvIGJlIGxvb2tpbmcgZm9yIGtleSBzdGVwcywgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzLCBhbmQgZXJyb3IgaGFuZGxpbmcuIEkmIzM5O2xsIGJlIHNlYXJjaGluZyBmb3IgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBQQ0kgYnVzLCBob3cgaXQgaW5pdGlhbGl6ZXMgdGhlIGRldmljZSwgbGlrZWx5IHByb2JpbmcgZm9yIHNwZWNpZmljIGhhcmR3YXJlLCBhbmQgc2V0dGluZyB1cCBhbnkgbmVjZXNzYXJ5IGludGVycnVwdCBoYW5kbGVycy4gSSYjMzk7bGwgYmUgcGFydGljdWxhcmx5IGZvY3VzZWQgb24gaG93IGl0IHZlcmlmaWVzIHRoYXQgdGhlIGRldmljZSBpcywgaW4gZmFjdCwgYSBjb21wYXRpYmxlIEludGVsIFdpcmVsZXNzIGNhcmQsIHZlcnNpb24gMSBvciAyLiBBbHNvLCBJJiMzOTttIHdhdGNoaW5nIGZvciBhbnkgcG93ZXItbWFuYWdlbWVudCByZWxhdGVkIGNvZGUg4oCTIHRoYXQmIzM5O3MgY3J1Y2lhbCBmb3IgYSBtb2Rlcm4gd2lyZWxlc3MgZHJpdmVyLiBBbmQgZmluYWxseSwgb2YgY291cnNlLCBJJiMzOTttIGFudGljaXBhdGluZyB0aGUgcG90ZW50aWFsIHBpdGZhbGxzIOKAkyBhbnkgb2J2aW91cyBlcnJvciBjb25kaXRpb25zIG9yIHJlc291cmNlIGFsbG9jYXRpb24gaXNzdWVzIHRoYXQgbWlnaHQgYXJpc2UuIFRoaXMgaXMgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZDsgZ2V0dGluZyBhIHdpcmVsZXNzIGNhcmQgdG8gd29yayBjb3JyZWN0bHkgY2FuIGJlIGNvbXBsZXguIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQzMzIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzQzMzI6XHRcdFx0ICAgICAgIHBkZXYtXHUwMDNlZGV2aWNlLCBwZGV2LVx1MDAzZXN1YnN5c3RlbV9kZXZpY2UsXG40MzMzOlx0XHRcdCAgICAgICBpbmZvLmh3X3JldiwgaW5mby5od19yZl9pZCk7XG40MzM0Olx0XHRcdHJldCA9IC1FSU5WQUw7XG40MzM1Olx0XHRcdGdvdG8gb3V0X2ZyZWVfdHJhbnM7XG40MzM2Olx0XHR9XG40MzM3Olx0XG40MzM4Olx0XHRJV0xfSU5GTyhpd2xfdHJhbnMsIFwmIzM0O0RldGVjdGVkICVzXFxuXCYjMzQ7LCBpbmZvLm5hbWUpO1xuNDMzOTpcdFxuNDM0MDpcdFx0aWYgKGl3bF90cmFucy1cdTAwM2VtYWNfY2ZnLVx1MDAzZW1xX3J4X3N1cHBvcnRlZCkge1xuNDM0MTpcdFx0XHRpZiAoV0FSTl9PTighaXdsX3RyYW5zLVx1MDAzZWNmZy1cdTAwM2VudW1fcmJkcykpIHtcbjQzNDI6XHRcdFx0XHRyZXQgPSAtRUlOVkFMO1xuNDM0MzpcdFx0XHRcdGdvdG8gb3V0X2ZyZWVfdHJhbnM7XG40MzQ0Olx0XHRcdH1cbjQzNDU6XHRcdFx0dHJhbnNfcGNpZS1cdTAwM2VudW1fcnhfYnVmcyA9IGl3bF90cmFuc19nZXRfbnVtX3JiZHMoaXdsX3RyYW5zKTtcbjQzNDY6XHRcdH0gZWxzZSB7XG40MzQ3Olx0XHRcdHRyYW5zX3BjaWUtXHUwMDNlbnVtX3J4X2J1ZnMgPSBSWF9RVUVVRV9TSVpFO1xuNDM0ODpcdFx0fVxuNDM0OTpcdFxuNDM1MDpcdFx0aWYgKCFpd2xfdHJhbnMtXHUwMDNlbWFjX2NmZy1cdTAwM2VpbnRlZ3JhdGVkKSB7XG40MzUxOlx0XHRcdHUxNiBsaW5rX3N0YXR1cztcbjQzNTI6XHRcbjQzNTM6XHRcdFx0cGNpZV9jYXBhYmlsaXR5X3JlYWRfd29yZChwZGV2LCBQQ0lfRVhQX0xOS1NUQSwgXHUwMDI2bGlua19zdGF0dXMpO1xuNDM1NDpcdFxuNDM1NTpcdFx0XHRpbmZvLnBjaWVfbGlua19zcGVlZCA9XG40MzU2Olx0XHRcdFx0dTE2X2dldF9iaXRzKGxpbmtfc3RhdHVzLCBQQ0lfRVhQX0xOS1NUQV9DTFMpO1xuNDM1NzpcdFx0fVxuNDM1ODpcdFxuNDM1OTpcdFx0aXdsX3RyYW5zX3NldF9pbmZvKGl3bF90cmFucywgXHUwMDI2aW5mbyk7XG40MzYwOlx0XG40MzYxOlx0XHRwY2lfc2V0X2RydmRhdGEocGRldiwgaXdsX3RyYW5zKTtcbjQzNjI6XHRcbjQzNjM6XHRcdGl3bF9wY2llX2NoZWNrX21lX3N0YXR1cyhpd2xfdHJhbnMpO1xuNDM2NDpcdFxuNDM2NTpcdFx0LyogdHJ5IHRvIGdldCBvd25lcnNoaXAgc28gdGhhdCB3ZSYjMzk7bGwga25vdyBpZiB3ZSBkb24mIzM5O3Qgb3duIGl0ICovXG40MzY2Olx0XHRpd2xfcGNpZV9wcmVwYXJlX2NhcmRfaHcoaXdsX3RyYW5zKTtcbjQzNjc6XHRcbjQzNjg6XHRcdGl3bF90cmFucy1cdTAwM2VkcnYgPSBpd2xfZHJ2X3N0YXJ0KGl3bF90cmFucyk7XG40MzY5Olx0XG40MzcwOlx0XHRpZiAoSVNfRVJSKGl3bF90cmFucy1cdTAwM2VkcnYpKSB7XG40MzcxOlx0XHRcdHJldCA9IFBUUl9FUlIoaXdsX3RyYW5zLVx1MDAzZWRydik7XG40MzcyOlx0XHRcdGdvdG8gb3V0X2ZyZWVfdHJhbnM7XG40MzczOlx0XHR9XG40Mzc0Olx0XG40Mzc1Olx0XHQvKiByZWdpc3RlciB0cmFuc3BvcnQgbGF5ZXIgZGVidWdmcyBoZXJlICovXG40Mzc2Olx0XHRpd2xfdHJhbnNfcGNpZV9kYmdmc19yZWdpc3Rlcihpd2xfdHJhbnMpO1xuNDM3NzpcdFxuNDM3ODpcdFx0cmV0dXJuIDA7XG40Mzc5Olx0XG40MzgwOlx0b3V0X2ZyZWVfdHJhbnM6XG40MzgxOlx0XHRpd2xfdHJhbnNfcGNpZV9mcmVlKGl3bF90cmFucyk7XG40MzgyOlx0XHRyZXR1cm4gcmV0O1xuNDM4MzpcdH1cbjQzODQ6XHRcbjQzODU6XHR2b2lkIGl3bF9wY2llX2dlbjFfMl9yZW1vdmUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXG40Mzg2Olx0e1xuNDM4NzpcdFx0c3RydWN0IGl3bF90cmFuc19wY2llICp0cmFuc19wY2llID0gSVdMX1RSQU5TX0dFVF9QQ0lFX1RSQU5TKHRyYW5zKTtcbjQzODg6XHRcbjQzODk6XHRcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZ0cmFuc19wY2llLVx1MDAzZW1lX3JlY2hlY2tfd2spO1xuNDM5MDpcdFxuNDM5MTpcdFx0aXdsX2Rydl9zdG9wKHRyYW5zLVx1MDAzZWRydik7XG40MzkyOlx0XG40MzkzOlx0XHRpd2xfdHJhbnNfcGNpZV9mcmVlKHRyYW5zKTtcbjQzOTQ6XHR9XG40Mzk1Olx0XG40Mzk2Olx0aW50IGl3bF9wY2llX2dlbjFfMl9hY3RpdmF0ZV9uaWMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXG40Mzk3Olx0e1xuNDM5ODpcdFx0Y29uc3Qgc3RydWN0IGl3bF9tYWNfY2ZnICptYWNfY2ZnID0gdHJhbnMtXHUwMDNlbWFjX2NmZztcbjQzOTk6XHRcdHUzMiBwb2xsX3JlYWR5O1xuNDQwMDpcdFx0aW50IGVycjtcbjQ0MDE6XHRcbjQ0MDI6XHRcdGlmIChtYWNfY2ZnLVx1MDAzZWJpc3Jfd29ya2Fyb3VuZCkge1xuNDQwMzpcdFx0XHQvKiBlbnN1cmUgdGhlIFRPUCBGU00gaXNuJiMzOTt0IHN0aWxsIGluIHByZXZpb3VzIHJlc2V0ICovXG40NDA0Olx0XHRcdG1kZWxheSgyKTtcbjQ0MDU6XHRcdH1cbjQ0MDY6XHRcbjQ0MDc6XHRcdC8qXG40NDA4Olx0XHQgKiBTZXQgXCYjMzQ7aW5pdGlhbGl6YXRpb24gY29tcGxldGVcJiMzNDsgYml0IHRvIG1vdmUgYWRhcHRlciBmcm9tXG40NDA5Olx0XHQgKiBEMFUqIC0tXHUwMDNlIEQwQSogKHBvd2VyZWQtdXAgYWN0aXZlKSBzdGF0ZS5cbjQ0MTA6XHRcdCAqL1xuNDQxMTpcdFx0aWYgKG1hY19jZmctXHUwMDNlZGV2aWNlX2ZhbWlseSBcdTAwM2U9IElXTF9ERVZJQ0VfRkFNSUxZX0JaKSB7XG40NDEyOlx0XHRcdGl3bF9zZXRfYml0KHRyYW5zLCBDU1JfR1BfQ05UUkwsXG40NDEzOlx0XHRcdFx0ICAgIENTUl9HUF9DTlRSTF9SRUdfRkxBR19CWl9NQUNfQUNDRVNTX1JFUSB8XG40NDE0Olx0XHRcdFx0ICAgIENTUl9HUF9DTlRSTF9SRUdfRkxBR19NQUNfSU5JVCk7XG40NDE1Olx0XHRcdHBvbGxfcmVhZHkgPSBDU1JfR1BfQ05UUkxfUkVHX0ZMQUdfTUFDX1NUQVRVUztcbjQ0MTY6XHRcdH0gZWxzZSB7XG40NDE3Olx0XHRcdGl3bF9zZXRfYml0KHRyYW5zLCBDU1JfR1BfQ05UUkwsXG40NDE4Olx0XHRcdFx0ICAgIENTUl9HUF9DTlRSTF9SRUdfRkxBR19JTklUX0RPTkUpO1xuNDQxOTpcdFx0XHRwb2xsX3JlYWR5ID0gQ1NSX0dQX0NOVFJMX1JFR19GTEFHX01BQ19DTE9DS19SRUFEWTtcbjQ0MjA6XHRcdH1cbjQ0MjE6XHRcbjQ0MjI6XHRcdGlmIChtYWNfY2ZnLVx1MDAzZWRldmljZV9mYW1pbHkgPT0gSVdMX0RFVklDRV9GQU1JTFlfODAwMClcbjQ0MjM6XHRcdFx0dWRlbGF5KDIpO1xuNDQyNDpcdFxuNDQyNTpcdFx0LypcbjQ0MjY6XHRcdCAqIFdhaXQgZm9yIGNsb2NrIHN0YWJpbGl6YXRpb247IG9uY2Ugc3RhYmlsaXplZCwgYWNjZXNzIHRvXG40NDI3Olx0XHQgKiBkZXZpY2UtaW50ZXJuYWwgcmVzb3VyY2VzIGlzIHN1cHBvcnRlZCwgZS5nLiBpd2xfd3JpdGVfcHJwaCgpXG40NDI4Olx0XHQgKiBhbmQgYWNjZXNzZXMgdG8gdUNvZGUgU1JBTS5cbjQ0Mjk6XHRcdCAqL1xuNDQzMDpcdFx0ZXJyID0gaXdsX3BvbGxfYml0cyh0cmFucywgQ1NSX0dQX0NOVFJMLCBwb2xsX3JlYWR5LCAyNTAwMCk7XG40NDMxOlx0XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MDgxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpdmluZyBpbnRvIHRoZSBpd2xfZHJ2X3N0YXJ0IEZ1bmN0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBpd2xfZHJ2X3N0YXJ0YC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgaW5pdGlhbCBkcml2ZXIgc3RhcnR1cCBzZXF1ZW5jZSBiZWdpbnMsIHdoaWNoLCBpbiB0aGUgY29udGV4dCBvZiB0aGUgSW50ZWwgV2lyZWxlc3MgZHJpdmVyLCBpcyBnb2luZyB0byBiZSBjcml0aWNhbC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoIGZyb20gaGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNlcXVlbmNpbmcgYW5kIHRoZSBpbml0aWFsaXphdGlvbiByb3V0aW5lcy4gSXMgaXQgZ29pbmcgdG8gdHJpZ2dlciBmaXJtd2FyZSBsb2FkaW5nLCBoYXJkd2FyZSBwcm9iaW5nLCBhbmQgcmVzb3VyY2UgYWxsb2NhdGlvbj8gSSYjMzk7bGwgcHJvYmFibHkgYmUgZGl2aW5nIGludG8gdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBzdHJ1Y3QgaXdsX3ByaXYgYW5kIGl0cyBmaWVsZHM6IHdoYXQgZ2V0cyBzZXQgaW5pdGlhbGx5LCBhbmQgd2hhdCBnZXRzIGRlZmVycmVkPyBJIHdhbnQgdG8gc2VlIGlmIHRoaXMgaXMgd2hlcmUgdGhlIG1haW4gZGV2aWNlIGVudHJ5IHBvaW50IGlzIHJlZ2lzdGVyZWQuIEEgZGVlcGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBmdW5jdGlvbiB3aWxsIGxlYWQgdG8gdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLiBJIGtub3cgdGhhdCBpc3N1ZXMgYXJpc2luZyBkdXJpbmcgdGhpcyBwaGFzZSBhcmUgbGlrZWx5IHRvIGJlIHJlbGF0ZWQgdG8gaGFyZHdhcmUgZGV0ZWN0aW9uLCBmaXJtd2FyZSBsb2FkaW5nIGVycm9ycywgb3IgaW5pdGlhbCByZWdpc3RlciBzZXR1cCBzbyBpdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgcHJvY2Vzcy4gVGhlIGZvY3VzIG9mIHVuZGVyc3RhbmRpbmcgd2lsbCBiZSB0aGUgZXhlY3V0aW9uIGZsb3cgYW5kIHRoZSBtYWluIGRhdGEgc3RydWN0dXJlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX2Rydl9zdGFydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTE2MzI9c3RhdGljIHZvaWQgaXdsX3JlcV9md19jYWxsYmFjayhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKnVjb2RlX3Jhdywgdm9pZCAqY29udGV4dClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xOTQ3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6MTk0ODpzdHJ1Y3QgaXdsX2RydiAqaXdsX2Rydl9zdGFydChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE5NDkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTQ3LSAqIDUpIFRoZSBidXMgc3BlY2lmaWMgY29tcG9uZW50IGNhbGxzIHRvIHRoZSBkcnYgYnVzIGFnbm9zdGljIHBhcnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oOjQ4OiAqICAgIChpd2xfZHJ2X3N0YXJ0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6NDk6ICogNikgaXdsX2Rydl9zdGFydCBmZXRjaGVzIHRoZSBmdyBBU1lOQywgaXdsX3JlcV9md19jYWxsYmFja1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtNTAtICogNykgaXdsX3JlcV9md19jYWxsYmFjayBwYXJzZXMgdGhlIGZ3IGZpbGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaD01Nj1zdHJ1Y3QgaXdsX3JmX2NmZztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTU3LS8qKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6NTg6ICogaXdsX2Rydl9zdGFydCAtIHN0YXJ0IHRoZSBkcnZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTU5LSAqXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtNjctICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaDo2ODpzdHJ1Y3QgaXdsX2RydiAqaXdsX2Rydl9zdGFydChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC02OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM9NDIzMj1pbnQgaXdsX3BjaV9nZW4xXzJfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTQzNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM6NDM2ODpcdGl3bF90cmFucy1cdTAwM2VkcnYgPSBpd2xfZHJ2X3N0YXJ0KGl3bF90cmFucyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtNDM2OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkwNjcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQXNzZXNzaW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBhbiBJbnRlbCBXaS1GaSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gYGl3bF9kcnZfc3RhcnRgIGlzIGZldGNoaW5nIGZpcm13YXJlIGFzeW5jaHJvbm91c2x5LiBSaWdodCwgYW5kIGlmIHRoZSBmaXJtd2FyZSYjMzk7cyBtaXNzaW5nLCBpdCBqdXN0IGZhaWxzLiBTeXprYWxsZXIgdXN1YWxseSBoYXMgYSBwcmV0dHkgbWluaW1hbCBzZXR1cCwgbm8gSW50ZWwgV2ktRmkgZmlybXdhcmUgZmlsZXMgdW5sZXNzIHdlIGV4cGxpY2l0bHkgaW5jbHVkZSB0aGVtIGluIHRoZSByb290ZnMuIEJ1dCBpdCBkb2VzIHRlc3QgUENJIGRldmljZXMsIGFuZCB0aGF0IGNhbiB0cmlwIHNvbWUgY29kZSBwYXRocy4gU28gdGhlIHF1ZXN0aW9uIGlzOiBpcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz8KClRoZSBwYXRjaCBpdHNlbGYgaXMgdHJpdmlhbCwgYSBzaW5nbGUgbGluZSBjaGFuZ2UgaW4gdGhlIHdvcmtxdWV1ZSBhc3NpZ25tZW50OgoKYGBgYwotCXF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fdW5ib3VuZF93cSwgJmFtcDt0cmFucy0mZ3Q7cmVzdGFydC53aywKJiM0MzsJcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfd3EsICZhbXA7dHJhbnMtJmd0O3Jlc3RhcnQud2ssCmBgYAoKSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc2hpZnRpbmcgZnJvbSBgc3lzdGVtX3VuYm91bmRfd3FgIHRvIGBzeXN0ZW1fZGZsX3dxYC4gQnV0IHRoYXQmIzM5O3MgaXQuIFdhaXQgYSBtaW51dGUsIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgRG9jdW1lbnRhdGlvbi9LY29uZmlnIGZpbGVzLCBjb2RlIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGNoYW5nZXMgbGlrZSBsb2dnaW5nLCBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvbiYjMzk7dCBjaGFuZ2UgdGhlIGV4ZWN1dGlvbiBmbG93LCBvciBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLgoKSXMgdGhpcyBwYXRoIHVucmVhY2hhYmxlPyBJZiBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgIG5lZWRzIHRoZSBmaXJtd2FyZSB0byBldmVuIGJlIHJlYWNoZWQsIGFuZCB0aGUgZmlybXdhcmUmIzM5O3MgYWJzZW50LCB0aGVuIGl0JiMzOTtzIGVmZmVjdGl2ZWx5IGFuIHVucmVhY2hhYmxlIGNvZGUgcGF0aCBpbiBvdXIgdHlwaWNhbCBTeXprYWxsZXIgc2V0dXAuIEhtbSwgYnV0IGBpd2xfdHJhbnNfcmVzdGFydF93a2AgaXMgc2NoZWR1bGVkIGJ5IGBpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXRgLiBDYW4gYGl3bF90cmFuc19zY2hlZHVsZV9yZXNldGAgYmUgY2FsbGVkIGJlZm9yZSBmaXJtd2FyZSBpcyBsb2FkZWQ/IFdlIG5lZWQgdG8gdmVyaWZ5IHRoZSBjYWxsIGNoYWluIHRvIGJlIHN1cmUuIFRpbWUgdG8gcmUtY2hlY2sgdGhlIGNhbGxlcnMgb2YgYGl3bF90cmFuc19zY2hlZHVsZV9yZXNldGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF90cmFuc19zY2hlZHVsZV9yZXNldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg9MTAwMD1pd2xfdHJhbnNfcmVsZWFzZV9uaWNfYWNjZXNzKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtMTAwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg6MTAwMjpzdGF0aWMgaW5saW5lIHZvaWQgaXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0xMDAzLVx0XHRcdFx0XHQgICAgZW51bSBpd2xfZndfZXJyb3JfdHlwZSB0eXBlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg9MTAyNT1zdGF0aWMgaW5saW5lIHZvaWQgaXdsX3RyYW5zX2Z3X2Vycm9yKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtMTAzNC1cdFx0aXdsX29wX21vZGVfbmljX2Vycm9yKHRyYW5zLVx1MDAzZW9wX21vZGUsIHR5cGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaDoxMDM1Olx0XHRpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXQodHJhbnMsIHR5cGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0xMDM2LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvcnguYz0xODM3PXN0YXRpYyB2b2lkIGl3bF90cmFuc19wY2llX2hhbmRsZV9yZXNldF9pbnRlcnJ1cHQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9yeC5jLTE4ODItXHRcdFx0dHJhbnMtXHUwMDNlc3RhdGUgPSBJV0xfVFJBTlNfTk9fRlc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3J4LmM6MTg4MzpcdFx0XHRpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXQodHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3J4LmMtMTg4NC1cdFx0XHRcdFx0XHQgSVdMX0VSUl9UWVBFX1RPUF9SRVNFVF9CWV9CVCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9yeC5jPTIyNjM9aXJxcmV0dXJuX3QgaXdsX3BjaWVfaXJxX21zaXhfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkZXZfaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9yeC5jLTIzNzItXHRcdFx0XHRcdCAgICAgIElXTF9FUlJfVFlQRV9UT1BfRkFUQUxfRVJST1IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9yeC5jOjIzNzM6XHRcdFx0aXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0KHRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9yeC5jLTIzNzQtXHRcdFx0XHRcdFx0IElXTF9FUlJfVFlQRV9UT1BfRkFUQUxfRVJST1IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMtZ2VuMi5jPTUwND1pbnQgaXdsX3RyYW5zX3BjaWVfZ2VuMl9zdGFydF9mdyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLWdlbjIuYy02MjMtXHRcdFx0XHRcdCAgICAgIElXTF9FUlJfVFlQRV9UT1BfUkVTRVRfRkFJTEVEKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMtZ2VuMi5jOjYyNDpcdFx0XHRpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXQodHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLWdlbjIuYy02MjUtXHRcdFx0XHRcdFx0IElXTF9FUlJfVFlQRV9UT1BfUkVTRVRfRkFJTEVEKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3R4LWdlbjIuYz0xMTk3PWludCBpd2xfcGNpZV9nZW4yX2VucXVldWVfaGNtZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3R4LWdlbjIuYy0xMjk2LVx0XHRcdFx0ICAgICAgSVdMX0VSUl9UWVBFX0NNRF9RVUVVRV9GVUxMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHgtZ2VuMi5jOjEyOTc6XHRcdGl3bF90cmFuc19zY2hlZHVsZV9yZXNldCh0cmFucywgSVdMX0VSUl9UWVBFX0NNRF9RVUVVRV9GVUxMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHgtZ2VuMi5jLTEyOTgtXHRcdGlkeCA9IC1FTk9TUEM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90eC5jPTEzNDM9aW50IGl3bF9wY2llX2VucXVldWVfaGNtZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3R4LmMtMTQ1MS1cdFx0XHRcdCAgICAgIElXTF9FUlJfVFlQRV9DTURfUVVFVUVfRlVMTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3R4LmM6MTQ1MjpcdFx0aXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0KHRyYW5zLCBJV0xfRVJSX1RZUEVfQ01EX1FVRVVFX0ZVTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90eC5jLTE0NTMtXHRcdGlkeCA9IC1FTk9TUEM7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMjA0CgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBWdWxuZXJhYmlsaXRpZXMgaW4gYGl3bF9wY2llX2lycV9tc2l4X2hhbmRsZXJgKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYGl3bF9wY2llX2lycV9tc2l4X2hhbmRsZXJgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgaXQgbWlnaHQgYmUgc3VzY2VwdGlibGUgdG8gaW50ZXJydXB0IGluamVjdGlvbiwgc3BlY2lmaWNhbGx5IHRocm91Z2ggTVNJLVggaW50ZXJydXB0cy4gVGhlIHJlYXNvbmluZyBpczogaWYgd2UgY2FuIG1hbmlwdWxhdGUgc3l6a2FsbGVyIHRvIGluamVjdCB0aGVzZSBpbnRlcnJ1cHRzIHN1Y2Nlc3NmdWxseSwgd2UgY291bGQgcG90ZW50aWFsbHkgdHJpZ2dlciBhIGNhbGwgdG8gYGl3bF90cmFuc19zY2hlZHVsZV9yZXNldGAuIFRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgSSB3YW50IHRvIGludmVzdGlnYXRlIGZ1cnRoZXIuIFRoZXJlZm9yZSwgbXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBgaXdsX3BjaWVfaXJxX21zaXhfaGFuZGxlcmAgZnVuY3Rpb24gY29kZSBpdHNlbGYgd2l0aCBhIGNyaXRpY2FsIGV5ZSwgbG9va2luZyBmb3IgYW55IHdlYWtuZXNzZXMgb3IgYXNzdW1wdGlvbnMgdGhhdCBjb3VsZCBiZSBleHBsb2l0ZWQgaW4gdGhpcyBpbmplY3Rpb24gc2NlbmFyaW8uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9yeC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjM2NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMzY1Olx0XG4yMzY2Olx0XHRpZiAoaW50YV9odyBcdTAwMjYgTVNJWF9IV19JTlRfQ0FVU0VTX1JFR19UT1BfRkFUQUxfRVJSKSB7XG4yMzY3Olx0XHRcdElXTF9FUlIodHJhbnMsIFwmIzM0O1RPUCBGYXRhbCBlcnJvciBkZXRlY3RlZCwgaW50YV9odz0weCV4LlxcblwmIzM0OyxcbjIzNjg6XHRcdFx0XHRpbnRhX2h3KTtcbjIzNjk6XHRcdFx0aWYgKHRyYW5zLVx1MDAzZW1hY19jZmctXHUwMDNlZGV2aWNlX2ZhbWlseSBcdTAwM2U9IElXTF9ERVZJQ0VfRkFNSUxZX0JaKSB7XG4yMzcwOlx0XHRcdFx0dHJhbnMtXHUwMDNlcmVxdWVzdF90b3BfcmVzZXQgPSAxO1xuMjM3MTpcdFx0XHRcdGl3bF9vcF9tb2RlX25pY19lcnJvcih0cmFucy1cdTAwM2VvcF9tb2RlLFxuMjM3MjpcdFx0XHRcdFx0XHQgICAgICBJV0xfRVJSX1RZUEVfVE9QX0ZBVEFMX0VSUk9SKTtcbjIzNzM6XHRcdFx0XHRpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXQodHJhbnMsXG4yMzc0Olx0XHRcdFx0XHRcdFx0IElXTF9FUlJfVFlQRV9UT1BfRkFUQUxfRVJST1IpO1xuMjM3NTpcdFx0XHR9XG4yMzc2Olx0XHR9XG4yMzc3Olx0XG4yMzc4Olx0XHQvKiBFcnJvciBkZXRlY3RlZCBieSB1Q29kZSAqL1xuMjM3OTpcdFx0aWYgKChpbnRhX2ZoIFx1MDAyNiBNU0lYX0ZIX0lOVF9DQVVTRVNfRkhfRVJSKSB8fCBzd19lcnIpIHtcbjIzODA6XHRcdFx0SVdMX0VSUih0cmFucyxcbjIzODE6XHRcdFx0XHRcJiMzNDtNaWNyb2NvZGUgU1cgZXJyb3IgZGV0ZWN0ZWQuIFJlc3RhcnRpbmcgMHglWC5cXG5cJiMzNDssXG4yMzgyOlx0XHRcdFx0aW50YV9maCk7XG4yMzgzOlx0XHRcdGlzcl9zdGF0cy1cdTAwM2VzdyYjNDM7JiM0Mzs7XG4yMzg0Olx0XHRcdC8qIGR1cmluZyBGVyByZXNldCBmbG93IHJlcG9ydCBlcnJvcnMgZnJvbSB0aGVyZSAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTg2MwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDEwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgS2VybmVsIENyYXNoIFJvdXRlKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMga2VybmVsIGlzc3VlIGFuZCB0aGlua2luZyBhYm91dCBhIHBvdGVudGlhbCBhdHRhY2sgdmVjdG9yLiBJdCBsb29rcyBsaWtlIGlmIHN5emthbGxlciBjYW4gaW5qZWN0IGFuIE1TSS1YIGludGVycnVwdCwgc3BlY2lmaWNhbGx5IG9uZSB3aGVyZSB0aGUgYGludGFfaHdgIGZsYWcgaGFzIHRoZSBgTVNJWF9IV19JTlRfQ0FVU0VTX1JFR19UT1BfRkFUQUxfRVJSYCBiaXQgc2V0LCBpdCAqbWlnaHQqIGxlYWQgZG93biB0aGUgcmFiYml0IGhvbGUgdG8gYGl3bF90cmFuc19zY2hlZHVsZV9yZXNldGAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFuZCBwb3RlbnRpYWxseSBleHBsb2l0YWJsZS4gQnV0IGhvbGQgb24sIHRoZSBgaXdsX3BjaWVfaXJxX21zaXhfaGFuZGxlcmAgaXMgcmVnaXN0ZXJlZCB3aGVuIE1TSS1YIGlzICplbmFibGVkKi4KClRoZSBxdWVzdGlvbiBub3cgYmVjb21lczogY2FuIHdlIGVuYWJsZSBNU0ktWCBzb21laG93ICp3aXRob3V0KiBmaXJtd2FyZSBpbnRlcnZlbnRpb24/IFRoYXQgd291bGQgYnlwYXNzIHNvbWUgb2YgdGhlIGV4cGVjdGVkIHNhZmV0eSBjaGVja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYmV0dGVyLiBNeSBuZXh0IHN0ZXAgaXMgdG8gdHJhY2UgdGhlIHJlZ2lzdHJhdGlvbiBvZiBpbnRlcnJ1cHQgcmVxdWVzdHMuIFRpbWUgdG8gZGlnIGludG8gd2hlcmUgYHJlcXVlc3RfaXJxYCBpcyBiZWluZyBjYWxsZWQgYW5kIHNlZSBob3cgTVNJLVggZml0cyBpbnRvIHRoZSBwaWN0dXJlLiBMZXQmIzM5O3Mgc2VlIGlmIHdlIGNhbiBmaW5kIHNvbWUgY2x1ZXMgdGhlcmUuIFRoaXMgY291bGQgYmUgYSBibGluZCBhbGxleSwgYnV0IGl0JiMzOTtzIHdvcnRoIGEgbG9vay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZXF1ZXN0X2lycSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIyNTMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqRGVidWdnaW5nIElSUSBBbGxvY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gaGl0dGluZyBhIHNuYWcgc29tZXdoZXJlIHdpdGggaW50ZXJydXB0IHJlcXVlc3QgKElSUSkgaGFuZGxpbmcuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbi4gTGV0JiMzOTtzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gdGhlIGNydWNpYWwgSVJRIGFsbG9jYXRpb24gcm91dGluZXMuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBsb29rIGNsb3NlbHkgYXQgZWl0aGVyIGByZXF1ZXN0X3RocmVhZGVkX2lycWAgb3IgYHBjaV9hbGxvY19pcnFfdmVjdG9yc2AuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHJlc3BvbnNpYmxlIGZvciBnZXR0aW5nIG1lIHRob3NlIHByZWNpb3VzIGludGVycnVwdHMsIHNvIGFueSBpc3N1ZXMgYXJlIGxpa2VseSBzdXJmYWNpbmcgdGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGlzIGFsbG9jYXRpbmcgdGhlbSBhbmQgaWYgc29tZXRoaW5nIGlzbiYjMzk7dCBxdWl0ZSByaWdodCBpbiB0aGUgbG9naWMuIEdvdHRhIGNoZWNrIHRoZSBhcmd1bWVudHMgYmVpbmcgcGFzc2VkLCB0aGUgcmV0dXJuIHZhbHVlcywgYW5kIGFueSBwb3RlbnRpYWwgZXJyb3IgY29uZGl0aW9ucyBiZWluZyBoYW5kbGVkLiBQZXJoYXBzIHRoZSBpbnRlcnJ1cHQgdmVjdG9yIHRhYmxlIGlzIGZ1bGwsIG9yIG1heWJlIHRoZXJlJiMzOTtzIGEgcmVzb3VyY2UgY29uZmxpY3Qgc29tZXdoZXJlLiBUaGlzIGlzIHdoZXJlIHRoZSBkZXRlY3RpdmUgd29yayBiZWdpbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlcXVlc3RfdGhyZWFkZWRfaXJxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jPTE2OTc9c3RhdGljIGludCBpd2xfcGNpZV9pbml0X21zaXhfaGFuZGxlcihzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtMTcxMS1cdFx0bXNpeF9lbnRyeSA9IFx1MDAyNnRyYW5zX3BjaWUtXHUwMDNlbXNpeF9lbnRyaWVzW2ldO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jOjE3MTI6XHRcdHJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtMTcxMy1cdFx0XHRcdFx0XHRtc2l4X2VudHJ5LVx1MDAzZXZlY3Rvcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM9MzgwMD1pd2xfdHJhbnNfcGNpZV9hbGxvYyhzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtMzk2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYzozOTY3Olx0XHRyZXQgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwZGV2LVx1MDAzZWlycSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0zOTY4LVx0XHRcdFx0XHRcdGl3bF9wY2llX2lzcixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI4NzkKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB3aGF0JiMzOTtzIGdvaW5nIG9uLCBmcmFtZWQgYXMgYSBmaXJzdC1wZXJzb24gdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOgoKKipEaXZpbmcgaW50byBgaXdsX3BjaWVfaW5pdF9tc2l4X2hhbmRsZXJgKioKCkFscmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGZ1bmN0aW9uLCBgaXdsX3BjaWVfaW5pdF9tc2l4X2hhbmRsZXJgLiBJbW1lZGlhdGVseSwgdGhlIG5hbWUgdGVsbHMgbWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBNU0ktWCBpbnRlcnJ1cHQgaGFuZGxpbmcgd2l0aGluIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIgZm9yIFBDSWUgZGV2aWNlcy4gVGhhdCBtZWFucyB3ZSYjMzk7cmUgbGlrZWx5IGNvbmZpZ3VyaW5nIGFuZCByZWdpc3RlcmluZyBhbiBNU0ktWCBpbnRlcnJ1cHQgaGFuZGxlciBmb3IgdGhlIEludGVsIHdpcmVsZXNzIGFkYXB0ZXIsIHNwZWNpZmljYWxseSBmb3IgYSBQQ0llIGJ1cy4gVGhpcyBpcyBrZXkgdG8gbW9kZXJuLCBlZmZpY2llbnQgaW50ZXJydXB0IG1hbmFnZW1lbnQuIFdpdGggTVNJLVgsIHdlIGNhbiBhbGxvY2F0ZSBhIGRlZGljYXRlZCBpbnRlcnJ1cHQgdmVjdG9yIGZvciBlYWNoIGRldmljZSBmdW5jdGlvbiwgbWluaW1pemluZyBpbnRlcnJ1cHQgbGF0ZW5jeSBhbmQgaW1wcm92aW5nIHBlcmZvcm1hbmNlLCBlc3BlY2lhbGx5IHVuZGVyIGhlYXZ5IG5ldHdvcmsgbG9hZC4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBmdW5jdGlvbiB0byBiZSB0aGUgY29yZSBvZiBlbmFibGluZyB0aG9zZSBjYXBhYmlsaXRpZXMgZm9yIHRoZSBjYXJkLiBJIGJldCBpdCYjMzk7bGwgaW5pdGlhbGl6ZSB0aGUgTVNJLVggdGFibGUsIHNldCB1cCB0aGUgaW50ZXJydXB0IHZlY3RvcnMsIGFuZCBwcm9iYWJseSByZWdpc3RlciB0aGUgaGFuZGxlciBmdW5jdGlvbiB3aXRoIHRoZSBrZXJuZWwuIEkgd29uZGVyIHdoYXQgdGhlIHNwZWNpZmljIGRldGFpbHMgYXJlIGZvciB0aGlzIGRyaXZlciYjMzk7cyBjb25maWd1cmF0aW9uLiBJIGhvcGUgdGhleSBhcmUgdGFraW5nIHByb3BlciBwcmVjYXV0aW9ucyBhbmQgY29uc2lkZXJhdGlvbnMgZm9yIGVycm9yIGhhbmRsaW5nLiBMZXQmIzM5O3Mgc2VlIGhvdyBpdCYjMzk7cyBpbXBsZW1lbnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3BjaWVfaW5pdF9tc2l4X2hhbmRsZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM9MTY3MD1zdGF0aWMgdm9pZCBpd2xfcGNpZV9pcnFfc2V0X2FmZmluaXR5KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0xNjk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jOjE2OTc6c3RhdGljIGludCBpd2xfcGNpZV9pbml0X21zaXhfaGFuZGxlcihzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0xNjk4LVx0XHRcdFx0ICAgICAgc3RydWN0IGl3bF90cmFuc19wY2llICp0cmFuc19wY2llLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYz0zODAwPWl3bF90cmFuc19wY2llX2FsbG9jKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0zOTU4LVx0aWYgKHRyYW5zX3BjaWUtXHUwMDNlbXNpeF9lbmFibGVkKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM6Mzk1OTpcdFx0cmV0ID0gaXdsX3BjaWVfaW5pdF9tc2l4X2hhbmRsZXIocGRldiwgdHJhbnNfcGNpZSwgaW5mbyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtMzk2MC1cdFx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM1NzcKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA0MTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0OiBXb3JrcXVldWUgQ2hhbmdlIGluIGl3bCBXaUZpIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJhY2luZyB0aGUgZXhlY3V0aW9uIHBhdGguIGBpd2xfcGNpZV9pbml0X21zaXhfaGFuZGxlcmAgZ2V0cyBjYWxsZWQgd2l0aGluIGBpd2xfdHJhbnNfcGNpZV9hbGxvY2AsIHdoaWNoIGl0c2VsZiBpcyBjYWxsZWQgaW4gYGl3bF9wY2lfZ2VuMV8yX3Byb2JlYC4gQWxyaWdodCwgc28gdGhlIElSUSBoYW5kbGVyIGlzIHJlZ2lzdGVyZWQgKmR1cmluZyogdGhlIHByb2JlIHNlcXVlbmNlLCBldmVuIGJlZm9yZSB0aGUgZmlybXdhcmUgaXMgbG9hZGVkLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLi4uIHRoYXQgbWVhbnMgc3l6a2FsbGVyIGNvdWxkIHBvdGVudGlhbGx5IGluamVjdCBhbiBpbnRlcnJ1cHQgcHJldHR5IGVhcmx5IG9uLiBUaGlzIGludGVycnVwdCB3b3VsZCB0cmlnZ2VyIGBpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXRgLCBxdWV1aW5nIGB0cmFucy0mZ3Q7cmVzdGFydC53a2AuIFRoZSB3b3JrIGZ1bmN0aW9uIGl0c2VsZiBpcyBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgLgoKSGFuZyBvbiBhIHNlYy4uLiB0aGUgd29yayBpcyBxdWV1ZWQgb24gYHN5c3RlbV9kZmxfd3FgLCBub3QgYHN5c3RlbV91bmJvdW5kX3dxYC4gTm93IHRoYXQgaXMgYSBzdWJ0bGUsIGJ1dCBmdW5jdGlvbmFsbHkgcmVsZXZhbnQgY2hhbmdlLiBUaGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgZXZlbiB3b3J0aCBmdXp6aW5nPyBJdCYjMzk7cyBub3QgaW50cm9kdWNpbmcgbmV3IGNvZGUsIGp1c3QgbW9kaWZ5aW5nIHdoZXJlIHRoZSB3b3JrIGdldHMgc2NoZWR1bGVkLiBCdXQsIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRoYXQgY2hhbmdlcyB0byBleGVjdXRpb24gZmxvdyAqYXJlKiB3b3J0aCBmdXp6aW5nLiAKCkxldCYjMzk7cyBicmVhayBpdCBkb3duOiAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6IGRvY3VtZW50YXRpb24sIEtjb25maWcsIGNvbW1lbnRzLCBsb2dnaW5nLCBjb25zdGFudHMgdGhhdCBkb24mIzM5O3QgYWx0ZXIgZXhlY3V0aW9uIG9yIHVucmVhY2hhYmxlIGNvZGUmIzM0Oy4gQ2hhbmdpbmcgdGhlIHdvcmtxdWV1ZSBkZWZpbml0ZWx5IGFsdGVycyB0aGUgZXhlY3V0aW9uIGZsb3c7IGl0IHJ1bnMgb24gYSBkaWZmZXJlbnQgd29ya3F1ZXVlIHdoaWNoIGNvdWxkIGhhdmUgZGlmZmVyZW50IGNvbmN1cnJlbmN5LiBBbmQgaXMgaXQgdW5yZWFjaGFibGU/IE5vcGUsIHdlIGp1c3QgZXN0YWJsaXNoZWQgd2UgY2FuIGhpdCBgaXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0YCB0aHJvdWdoIGFuIGludGVycnVwdCBpbmplY3RlZCBkdXJpbmcgcHJvYmUsIGV2ZW4gYmVmb3JlIGZpcm13YXJlLgoKV2FpdCwgbG9va2luZyBhdCBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgLCBpdCBjaGVja3MgYHRyYW5zLSZndDtvcF9tb2RlYC4gT2theSwgbGV0JiMzOTtzIGRpZyBpbnRvIHdoYXQgYGl3bF90cmFuc19yZXN0YXJ0X3drYCBhY3R1YWxseSBkb2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMDIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIwMjpcdHN0YXRpYyB2b2lkIGl3bF90cmFuc19yZXN0YXJ0X3drKHN0cnVjdCB3b3JrX3N0cnVjdCAqd2spXG4gMjAzOlx0e1xuIDIwNDpcdFx0c3RydWN0IGl3bF90cmFucyAqdHJhbnMgPSBjb250YWluZXJfb2Yod2ssIHR5cGVvZigqdHJhbnMpLFxuIDIwNTpcdFx0XHRcdFx0XHQgICAgICAgcmVzdGFydC53ay53b3JrKTtcbiAyMDY6XHRcdGVudW0gaXdsX3Jlc2V0X21vZGUgbW9kZTtcbiAyMDc6XHRcbiAyMDg6XHRcdGlmICh0cmFucy1cdTAwM2VyZXN0YXJ0Lm1vZGUudHlwZSA9PSBJV0xfRVJSX1RZUEVfVE9QX1JFU0VUX0JZX0JUKSB7XG4gMjA5Olx0XHRcdGl3bF90cmFuc19zY2hlZHVsZV9yZXByb2JlKHRyYW5zLCBJV0xfVFJBTlNfVE9QX0ZPTExPV0VSX1dBSVQpO1xuIDIxMDpcdFx0XHRyZXR1cm47XG4gMjExOlx0XHR9XG4gMjEyOlx0XG4gMjEzOlx0XHRpZiAoIXRyYW5zLVx1MDAzZW9wX21vZGUpXG4gMjE0Olx0XHRcdHJldHVybjtcbiAyMTU6XHRcbiAyMTY6XHRcdC8qIG1pZ2h0IGhhdmUgYmVlbiBzY2hlZHVsZWQgYmVmb3JlIG1hcmtlZCBhcyBkZWFkLCByZS1jaGVjayAqL1xuIDIxNzpcdFx0aWYgKHRlc3RfYml0KFNUQVRVU19UUkFOU19ERUFELCBcdTAwMjZ0cmFucy1cdTAwM2VzdGF0dXMpKVxuIDIxODpcdFx0XHRyZXR1cm47XG4gMjE5Olx0XG4gMjIwOlx0XHRpd2xfb3BfbW9kZV9kdW1wX2Vycm9yKHRyYW5zLVx1MDAzZW9wX21vZGUsIFx1MDAyNnRyYW5zLVx1MDAzZXJlc3RhcnQubW9kZSk7XG4gMjIxOlx0XG4gMjIyOlx0XHQvKlxuIDIyMzpcdFx0ICogSWYgdGhlIG9wbW9kZSBzdG9wcGVkIHRoZSBkZXZpY2Ugd2hpbGUgd2Ugd2VyZSB0cnlpbmcgdG8gZHVtcCBhbmRcbiAyMjQ6XHRcdCAqIHJlc2V0LCB0aGVuIHdlJiMzOTtsbCBoYXZlIGRvbmUgdGhlIGR1bXAgYWxyZWFkeSAoc3luY2hyb25pemVkIGJ5IHRoZVxuIDIyNTpcdFx0ICogb3Btb2RlIGxvY2sgdGhhdCBpdCB3aWxsIGFjcXVpcmUgaW4gaXdsX29wX21vZGVfZHVtcF9lcnJvcigpKSBhbmRcbiAyMjY6XHRcdCAqIG1hbmFnZWQgdGhhdCB2aWEgdHJhbnMtXHUwMDNlcmVzdGFydC5tb2RlLlxuIDIyNzpcdFx0ICogQWRkaXRpb25hbGx5LCBtYWtlIHN1cmUgdGhhdCBpbiBzdWNoIGEgY2FzZSB3ZSB3b24mIzM5O3QgYXR0ZW1wdCB0byBkb1xuIDIyODpcdFx0ICogYW55IHJlc2V0cyBub3csIHNpbmNlIGl0JiMzOTtzIG5vIGxvbmdlciByZXF1ZXN0ZWQuXG4gMjI5Olx0XHQgKi9cbiAyMzA6XHRcdGlmICghdGVzdF9hbmRfY2xlYXJfYml0KFNUQVRVU19SRVNFVF9QRU5ESU5HLCBcdTAwMjZ0cmFucy1cdTAwM2VzdGF0dXMpKVxuIDIzMTpcdFx0XHRyZXR1cm47XG4gMjMyOlx0XG4gMjMzOlx0XHRpZiAoIWl3bHdpZmlfbW9kX3BhcmFtcy5md19yZXN0YXJ0KVxuIDIzNDpcdFx0XHRyZXR1cm47XG4gMjM1Olx0XG4gMjM2Olx0XHRtb2RlID0gaXdsX3RyYW5zX2RldGVybWluZV9yZXN0YXJ0X21vZGUodHJhbnMpO1xuIDIzNzpcdFx0aWYgKG1vZGUgPT0gSVdMX1JFU0VUX01PREVfQkFDS09GRikge1xuIDIzODpcdFx0XHRJV0xfRVJSKHRyYW5zLCBcJiMzNDtUb28gbWFueSBkZXZpY2UgZXJyb3JzIC0gZGVsYXkgbmV4dCByZXNldFxcblwmIzM0Oyk7XG4gMjM5Olx0XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX3dxLCBcdTAwMjZ0cmFucy1cdTAwM2VyZXN0YXJ0LndrLFxuIDI0MDpcdFx0XHRcdFx0ICAgSVdMX1RSQU5TX1JFU0VUX0RFTEFZKTtcbiAyNDE6XHRcdFx0cmV0dXJuO1xuIDI0MjpcdFx0fVxuIDI0MzpcdFxuIDI0NDpcdFx0aXdsX3RyYW5zX2luY19yZXN0YXJ0X2NvdW50KHRyYW5zLVx1MDAzZWRldik7XG4gMjQ1Olx0XG4gMjQ2Olx0XHRzd2l0Y2ggKG1vZGUpIHtcbiAyNDc6XHRcdGNhc2UgSVdMX1JFU0VUX01PREVfVE9QX1JFU0VUOlxuIDI0ODpcdFx0XHR0cmFucy1cdTAwM2Vkb190b3BfcmVzZXQgPSAxO1xuIDI0OTpcdFx0XHRJV0xfRVJSKHRyYW5zLCBcJiMzNDtEZXZpY2UgZXJyb3IgLSBUT1AgcmVzZXRcXG5cJiMzNDspO1xuIDI1MDpcdFx0XHRmYWxsdGhyb3VnaDtcbiAyNTE6XHRcdGNhc2UgSVdMX1JFU0VUX01PREVfU1dfUkVTRVQ6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MjU4CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhlc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgdGhlIGF1ZGllbmNlIGlzIGFub3RoZXIgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIGEgQ29uZGl0aW9uYWwgUmV0dXJuKioKCkFscmlnaHQsIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBpZWNlIG9mIGNvZGUgYW5kIGltbWVkaWF0ZWx5IHNlZSBhIGNvbmRpdGlvbmFsIHJldHVybjogYGlmICghdHJhbnMtJmd0O29wX21vZGUpYC4gTXkgZmlyc3QgdGhvdWdodCBpcywgJiMzNDtPa2F5LCB0aGF0JiMzOTtzIGEgcXVpY2sgZXhpdC4mIzM0OyBCdXQgdGhlIGZvbGxvdy11cCBxdWVzdGlvbiBpcyBhbHdheXMgKndoeSo/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZW4gYHRyYW5zLSZndDtvcF9tb2RlYCBpcyBhY3R1YWxseSBzZXQuIEl0JiMzOTtzIGNydWNpYWwgdG8ga25vdyB1bmRlciB3aGF0IGNpcmN1bXN0YW5jZXMgd2UmIzM5O3JlIGJ5cGFzc2luZyB0aGUgcmVzdCBvZiB0aGUgZnVuY3Rpb24uCgpTbywgd2hlcmUgaXMgdGhpcyBgb3BfbW9kZWAgZmxhZyBpbml0aWFsaXplZCBvciBtb2RpZmllZD8gTXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCBpdCYjMzk7cyBnb2luZyB0byBiZSBpbiBhbiBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBsaWtlIGBpd2xfb3BfbW9kZV9zdGFydGAsIG9yIHNvbWV0aGluZyBzaW1pbGFybHkgbmFtZWQgdGhhdCBkZWFscyB3aXRoIHNldHRpbmcgdXAgdGhlIG9wZXJhdGlvbmFsIG1vZGUgb2YgdGhlIGRldmljZS4gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIHJlbGV2YW50IGNvZGUgYW5kIHNlZSB0aGUgbG9naWMgYXJvdW5kIHRoYXQgdmFyaWFibGUuIFRoYXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoaXMgY29uZGl0aW9uYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RyYW5zLVx1MDAzZW9wX21vZGUgPSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM9Mzg3PXZvaWQgaXdsX3RyYW5zX29wX21vZGVfZW50ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0zODkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzozOTA6XHR0cmFucy1cdTAwM2VvcF9tb2RlID0gb3BfbW9kZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMzkxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM9NDEyPXZvaWQgaXdsX3RyYW5zX29wX21vZGVfbGVhdmUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy00MjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjQyMzpcdHRyYW5zLVx1MDAzZW9wX21vZGUgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy00MjQtXHRtZW1zZXQoXHUwMDI2dHJhbnMtXHUwMDNlY29uZiwgMCwgc2l6ZW9mKHRyYW5zLVx1MDAzZWNvbmYpKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU4MzMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlRyYWNpbmcgdGhlIENhbGxlcnMgb2YgYGl3bF90cmFuc19vcF9tb2RlX2VudGVyYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IHN1cnJvdW5kaW5nIGBpd2xfdHJhbnNfb3BfbW9kZV9lbnRlcmAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGZpbmQgb3V0IHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKnVzZWQqLiBJJiMzOTtsbCBuZWVkIHRvIGxvY2F0ZSBhbGwgb2YgaXRzIGNhbGwgc2l0ZXMuIEtub3dpbmcgdGhlIGNhbGwgZ3JhcGggd2lsbCBnaXZlIG1lIGEgY3JpdGljYWwgdW5kZXJzdGFuZGluZyBvZiB0aGUgZW50cnkgcG9pbnRzIGludG8gdGhpcyBvcGVyYXRpb25hbCBtb2RlIG1hbmFnZW1lbnQuIFRoaXMgd2lsbCBsaWtlbHkgcHJvdmlkZSBpbnNpZ2h0IGludG8gaG93IHRoZSB2YXJpb3VzIG9wZXJhdGlvbmFsIG1vZGVzIChhY3RpdmUsIHNsZWVwLCBldGMuKSBhcmUgZW50ZXJlZCBhbmQgZXhpdGVkLiBJJiMzOTttIGFzc3VtaW5nIHRoaXMgZnVuY3Rpb24gaXMgY2VudHJhbCB0byB0aGUgZHJpdmVyJiMzOTtzIHBvd2VyIG1hbmFnZW1lbnQgYW5kL29yIG9wZXJhdGlvbmFsIHN0YXRlIHRyYW5zaXRpb25zLiBMZXQmIzM5O3Mgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBjcm9zcy1yZWZlcmVuY2VzLiBJIGV4cGVjdCB0aGUgY2FsbCBzaXRlcyB0byBpbGx1bWluYXRlIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIgdHJhbnNpdGlvbnMgYmV0d2VlbiBkaWZmZXJlbnQgb3BlcmF0aW9uYWwgc3RhdGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfdHJhbnNfb3BfbW9kZV9lbnRlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYz0xMjMzPXN0YXRpYyBzdHJ1Y3QgaXdsX29wX21vZGUgKml3bF9vcF9tb2RlX2R2bV9zdGFydChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTM2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYzoxMzYzOlx0aXdsX3RyYW5zX29wX21vZGVfZW50ZXIocHJpdi1cdTAwM2V0cmFucywgb3BfbW9kZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTM2NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jPTM4NT1JV0xfRVhQT1JUX1NZTUJPTChpd2xfZ2V0X2NtZF9zdHJpbmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0zODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjM4Nzp2b2lkIGl3bF90cmFuc19vcF9tb2RlX2VudGVyKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0zODgtXHRcdFx0ICAgICBzdHJ1Y3QgaXdsX29wX21vZGUgKm9wX21vZGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0zOTktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzo0MDA6SVdMX0VYUE9SVF9TWU1CT0woaXdsX3RyYW5zX29wX21vZGVfZW50ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy00MDEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaD0zNzI9c3RydWN0IGl3bF9kdW1wX3Nhbml0aXplX29wcyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0zODAtICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg6MzgxOiAqIFRoZXNlIHZhbHVlcyBzaG91bGQgYmUgc2V0IGJlZm9yZSBpd2xfdHJhbnNfb3BfbW9kZV9lbnRlcigpLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0zODItICpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oPTgxNz1jb25zdCBjaGFyICppd2xfZ2V0X2NtZF9zdHJpbmcoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHUzMiBpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTgxOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg6ODE5OnZvaWQgaXdsX3RyYW5zX29wX21vZGVfZW50ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTgyMC1cdFx0XHQgICAgIHN0cnVjdCBpd2xfb3BfbW9kZSAqb3BfbW9kZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWxkLmM9MzQ5PWl3bF9tbGRfY29uZmlndXJlX3RyYW5zKHN0cnVjdCBpd2xfb3BfbW9kZSAqb3BfbW9kZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tbGQuYy0zODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tbGQuYzozODQ6XHRpd2xfdHJhbnNfb3BfbW9kZV9lbnRlcih0cmFucywgb3BfbW9kZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tbGQuYy0zODUtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jPTExOTc9aXdsX29wX21vZGVfbXZtX3N0YXJ0KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCBzdHJ1Y3QgaXdsX3JmX2NmZyAqY2ZnLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jLTE0MzUtXHQvKiBDb25maWd1cmUgdHJhbnNwb3J0IGxheWVyICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuYzoxNDM2Olx0aXdsX3RyYW5zX29wX21vZGVfZW50ZXIobXZtLVx1MDAzZXRyYW5zLCBvcF9tb2RlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jLTE0MzctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MDc3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNTEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBBbmFseXNpczogaXdsd2lmaSBXb3JrcXVldWUgQ2hhbmdlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBpd2xfb3BfbW9kZV9kdm1fc3RhcnRgIGFuZCBgaXdsX29wX21vZGVfbXZtX3N0YXJ0YCBnZXR0aW5nIGNhbGxlZCBzaWduaWZ5IHRoZSBzdGFydCBvZiB0aGUgb3BfbW9kZSBhZnRlciBmaXJtd2FyZSBpcyBsb2FkZWQuIFNvLCB0aGUgYHRyYW5zLSZndDtvcF9tb2RlYCBpcyAqb25seSogc2V0IGFmdGVyIHRoYXQgZmlybXdhcmUgaXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBhbmQgcGFyc2VkLiBJZiB0aGUgZmlybXdhcmUgaXMgbWlzc2luZywgYHRyYW5zLSZndDtvcF9tb2RlYCB3aWxsIGJlIE5VTEwsIGFuZCB0aGUgYGl3bF90cmFuc19yZXN0YXJ0X3drYCBmdW5jdGlvbiB3b3VsZCBiYWlsIG91dCBlYXJseS4gSW4gZmFjdCwgYGl3bF90cmFuc19yZXN0YXJ0X3drYCBkaXJlY3RseSBjaGVja3MgZm9yIGAhdHJhbnMtJmd0O29wX21vZGVgIGFuZCByZXR1cm5zIGlmIGl0JiMzOTtzIHRydWUuIFRodXMsIHRoaXMgcGF0Y2gsIHRoZSBgcXVldWVfZGVsYXllZF93b3JrYCBjYWxsLCBpcyBvbmx5IGV2ZXIgcmVhY2hlZCBpZiBgdHJhbnMtJmd0O29wX21vZGVgICppcyogc2V0LCB3aGljaCBjb25maXJtcyBmaXJtd2FyZSBpcyBsb2FkZWQuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gZm9yIGZ1enppbmc6IERvZXMgc3l6a2FsbGVyIGV2ZW4gaGF2ZSB0aGUgYGl3bHdpZmlgIGZpcm13YXJlPyBCYXNlZCBvbiBteSBleHBlcmllbmNlIHdpdGggc3l6a2FsbGVyIGluc3RhbmNlcywgZXNwZWNpYWxseSBvbiBHQ0UsIGl0JiMzOTtzIHZlcnkgdW5saWtlbHkuIFVubGVzcyB0aGUgZmlybXdhcmUgaXMgZXhwbGljaXRseSBpbmNsdWRlZCBpbiB0aGUgaW1hZ2UsIHN5emthbGxlciBkZXBsb3ltZW50cyBnZW5lcmFsbHkgZG8gbm90IHNoaXAgd2l0aCBpdCwgZGVzcGl0ZSBmdXp6aW5nIFBDSSBkZXZpY2VzIGFzIHBhcnQgb2YgaXRzIGNvcmUgZnVuY3Rpb25hbGl0eS4KClNvLCBpcyB0aGlzIHBhdGNoIHdvcnRoIGZ1enppbmc/IEhvbmVzdGx5LCBpdCYjMzk7cyBqdXN0IGNoYW5naW5nIGBzeXN0ZW1fdW5ib3VuZF93cWAgdG8gYHN5c3RlbV9kZmxfd3FgLiBFdmVuIGlmIHJlYWNoYWJsZSwgaXQmIzM5O3MgYSBvbmUtbGluZSB3b3JrcXVldWUgY2hhbmdlLiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzIHdoZXRoZXIgdGhlIGNvZGUgcGF0aCBpcyAqcmVhY2hhYmxlKi4KClRvIGFuc3dlciB0aGUgJiMzOTtXb3J0aEZ1enppbmc9ZmFsc2UmIzM5OyBjcml0ZXJpYSwgSSBuZWVkIHRvIGp1c3RpZnkgbXkgcmVhc29uaW5nLiBJIGhhdmUgdG8gYXNrIG15c2VsZiwgaXMgdGhpcyBjb2RlIHBhdGggaW1wb3NzaWJsZSB0byByZWFjaD8gQWJzb2x1dGVseS4gU2luY2UgYGl3bHdpZmlgIHJlbGllcyBvbiBwcm9wcmlldGFyeSBJbnRlbCBmaXJtd2FyZSB0byBpbml0aWFsaXplIHRoZSBgb3BfbW9kZWAsIGFuZCB0aGF0IGZpcm13YXJlIGlzIHVubGlrZWx5IHRvIGJlIHByZXNlbnQsIGBpd2xfcGNpX3Byb2JlYCBvciBgaXdsX2Rydl9zdGFydGAgd2lsbCBmYWlsIHRvIGxvYWQgdGhlIGZpcm13YXJlIGFuZCwgdGhlcmVmb3JlLCB0aGUgYHRyYW5zLSZndDtvcF9tb2RlYCB3aWxsIG5ldmVyIGJlIHNldC4gSXQgd2lsbCBzdG9wIG11Y2ggZWFybGllciB3aXRoIGEgZmlybXdhcmUgbG9hZCBmYWlsdXJlLiBgaXdsX3JlcV9md19jYWxsYmFja2AgZ2V0cyBjYWxsZWQgd2hlbiBmaXJtd2FyZSBpcyBsb2FkZWQ7IGlmIG5vdCwgaXQgZmFpbHMuCgpUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggaXMgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCBzeXprYWxsZXIgc2V0dXAuCgoqKldvcnRoRnV6emluZz1mYWxzZSoqCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9yZXFfZndfY2FsbGJhY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz0yOTM9SVdMX0VYUE9SVF9TWU1CT0woaXdsX2Rydl9nZXRfZnduYW1lX3ByZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0yOTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoyOTU6c3RhdGljIHZvaWQgaXdsX3JlcV9md19jYWxsYmFjayhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKnVjb2RlX3JhdyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTI5Ni1cdFx0XHRcdHZvaWQgKmNvbnRleHQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTMyNT1zdGF0aWMgaW50IGl3bF9yZXF1ZXN0X2Zpcm13YXJlKHN0cnVjdCBpd2xfZHJ2ICpkcnYsIGJvb2wgZmlyc3QpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMzg1LVx0XHRcdFx0ICAgICAgIGRydi1cdTAwM2V0cmFucy1cdTAwM2VkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzozODY6XHRcdFx0XHQgICAgICAgR0ZQX0tFUk5FTCwgZHJ2LCBpd2xfcmVxX2Z3X2NhbGxiYWNrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTM4Ny19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9MTYwOT1zdGF0aWMgdm9pZCBfaXdsX29wX21vZGVfc3RvcChzdHJ1Y3QgaXdsX2RydiAqZHJ2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE2MjYtLypcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjE2Mjc6ICogaXdsX3JlcV9md19jYWxsYmFjayAtIGNhbGxiYWNrIHdoZW4gZmlybXdhcmUgd2FzIGxvYWRlZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTYyOC0gKlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE2MzEtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoxNjMyOnN0YXRpYyB2b2lkIGl3bF9yZXFfZndfY2FsbGJhY2soY29uc3Qgc3RydWN0IGZpcm13YXJlICp1Y29kZV9yYXcsIHZvaWQgKmNvbnRleHQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xNjMzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC00OC0gKiAgICAoaXdsX2Rydl9zdGFydClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oOjQ5OiAqIDYpIGl3bF9kcnZfc3RhcnQgZmV0Y2hlcyB0aGUgZncgQVNZTkMsIGl3bF9yZXFfZndfY2FsbGJhY2tcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oOjUwOiAqIDcpIGl3bF9yZXFfZndfY2FsbGJhY2sgcGFyc2VzIHRoZSBmdyBmaWxlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaDo1MTogKiA4KSBpd2xfcmVxX2Z3X2NhbGxiYWNrIHN0YXJ0cyB0aGUgd2lmaSBpbXBsZW1lbnRhdGlvbiB0byBtYXRjaGVzIHRoZSBmd1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtNTItICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4ODY1CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBGaXJtd2FyZSBSZXF1ZXN0IENhbGxiYWNrKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgaXdsX3JlcV9md19jYWxsYmFja2AgZnVuY3Rpb24uIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIHRoZSAmIzM0O2Zpcm13YXJlIG5vdCBmb3VuZCYjMzQ7IHNjZW5hcmlvLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZ3JhY2VmdWwgZGVncmFkYXRpb24sIGFueSBlcnJvciByZXBvcnRpbmcsIHJldHJpZXMsIGZhbGxiYWNrIG1lY2hhbmlzbXMsIG9yIGV2ZW4gcG90ZW50aWFsIGtlcm5lbCBwYW5pY3MgdGhhdCBtaWdodCBiZSB0cmlnZ2VyZWQgaWYgdGhlIGZpcm13YXJlIGlzbiYjMzk7dCBwcmVzZW50IGR1cmluZyB0aGUgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uIG9yIGNyaXRpY2FsIG9wZXJhdGlvbmFsIHBoYXNlcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgY2x1ZXMgb24gaG93IHRoZSBkcml2ZXIgcmVjb3ZlcnMsIGxvZ3MgdGhlIGVycm9yLCBhbmQgd2hldGhlciBpdCBhdHRlbXB0cyBhbHRlcm5hdGl2ZSBhcHByb2FjaGVzLiBJJiMzOTttIGtlZW4gdG8gZGV0ZXJtaW5lIGlmIHRoaXMgY2FsbGJhY2sgaXMgdGhlIGRlZmluaXRpdmUgcG9pbnQgb2YgZmFpbHVyZSwgb3IgaWYgdGhlcmUmIzM5O3MgYW55IGNsZXZlcm5lc3MgYnVpbHQtaW4gdGhhdCBtaWdodCBzdXJwcmlzZSBtZS4gRXNzZW50aWFsbHksIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgdG8gYmUgYW4gaW1wb3J0YW50IHBpZWNlIG9mIGVycm9yIGhhbmRsaW5nIGFuZCBJIGludGVuZCB0byB1bmRlcnN0YW5kIGl0IGZ1bGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTYzMiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNjMyOlx0c3RhdGljIHZvaWQgaXdsX3JlcV9md19jYWxsYmFjayhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKnVjb2RlX3Jhdywgdm9pZCAqY29udGV4dClcbjE2MzM6XHR7XG4xNjM0Olx0XHRpbnQgbWluX2NvcmUsIG1heF9jb3JlLCBsb2FkZWRfY29yZTtcbjE2MzU6XHRcdHN0cnVjdCBpd2xfZHJ2ICpkcnYgPSBjb250ZXh0O1xuMTYzNjpcdFx0c3RydWN0IGl3bF9mdyAqZncgPSBcdTAwMjZkcnYtXHUwMDNlZnc7XG4xNjM3Olx0XHRjb25zdCBzdHJ1Y3QgaXdsX3Vjb2RlX2hlYWRlciAqdWNvZGU7XG4xNjM4Olx0XHRzdHJ1Y3QgaXdsd2lmaV9vcG1vZGVfdGFibGUgKm9wO1xuMTYzOTpcdFx0aW50IGVycjtcbjE2NDA6XHRcdHN0cnVjdCBpd2xfZmlybXdhcmVfcGllY2VzICpwaWVjZXM7XG4xNjQxOlx0XHR1bnNpZ25lZCBpbnQgYXBpX21pbiwgYXBpX21heDtcbjE2NDI6XHRcdHNpemVfdCB0cmlnZ2VyX3Rsdl9zeltGV19EQkdfVFJJR0dFUl9NQVhdO1xuMTY0MzpcdFx0dTMyIGFwaV92ZXI7XG4xNjQ0Olx0XHRpbnQgaTtcbjE2NDU6XHRcdGJvb2wgdXNuaWZmZXJfaW1hZ2VzID0gZmFsc2U7XG4xNjQ2Olx0XHRib29sIGZhaWx1cmUgPSB0cnVlO1xuMTY0NzpcdFxuMTY0ODpcdFx0aXdsX2dldF91Y29kZV9hcGlfdmVyc2lvbnMoZHJ2LVx1MDAzZXRyYW5zLCBcdTAwMjZhcGlfbWluLCBcdTAwMjZhcGlfbWF4KTtcbjE2NDk6XHRcbjE2NTA6XHRcdGZ3LVx1MDAzZXVjb2RlX2NhcGEubWF4X3Byb2JlX2xlbmd0aCA9IElXTF9ERUZBVUxUX01BWF9QUk9CRV9MRU5HVEg7XG4xNjUxOlx0XHRmdy1cdTAwM2V1Y29kZV9jYXBhLnN0YW5kYXJkX3BoeV9jYWxpYnJhdGlvbl9zaXplID1cbjE2NTI6XHRcdFx0XHRJV0xfREVGQVVMVF9TVEFOREFSRF9QSFlfQ0FMSUJSQVRFX1RCTF9TSVpFO1xuMTY1MzpcdFx0ZnctXHUwMDNldWNvZGVfY2FwYS5uX3NjYW5fY2hhbm5lbHMgPSBJV0xfREVGQVVMVF9TQ0FOX0NIQU5ORUxTO1xuMTY1NDpcdFx0ZnctXHUwMDNldWNvZGVfY2FwYS5udW1fc3RhdGlvbnMgPSBJV0xfU1RBVElPTl9DT1VOVF9NQVg7XG4xNjU1Olx0XHRmdy1cdTAwM2V1Y29kZV9jYXBhLm51bV9iZWFjb25zID0gMTtcbjE2NTY6XHRcdGZ3LVx1MDAzZXVjb2RlX2NhcGEubnVtX21jYXN0X2tleV9lbnRyaWVzID0gMjtcbjE2NTc6XHRcdC8qIGR1bXAgYWxsIGZ3IG1lbW9yeSBhcmVhcyBieSBkZWZhdWx0ICovXG4xNjU4Olx0XHRmdy1cdTAwM2VkYmcuZHVtcF9tYXNrID0gMHhmZmZmZmZmZjtcbjE2NTk6XHRcbjE2NjA6XHRcdHBpZWNlcyA9IGt6YWxsb2Nfb2JqKCpwaWVjZXMpO1xuMTY2MTpcdFx0aWYgKCFwaWVjZXMpXG4xNjYyOlx0XHRcdGdvdG8gb3V0X2ZyZWVfZnc7XG4xNjYzOlx0XG4xNjY0Olx0XHRpZiAoIXVjb2RlX3JhdylcbjE2NjU6XHRcdFx0Z290byB0cnlfYWdhaW47XG4xNjY2Olx0XG4xNjY3Olx0XHRJV0xfREVCVUdfRldfSU5GTyhkcnYsIFwmIzM0O0xvYWRlZCBmaXJtd2FyZSBmaWxlICYjMzk7JXMmIzM5OyAoJXpkIGJ5dGVzKS5cXG5cJiMzNDssXG4xNjY4Olx0XHRcdFx0ICBkcnYtXHUwMDNlZmlybXdhcmVfbmFtZSwgdWNvZGVfcmF3LVx1MDAzZXNpemUpO1xuMTY2OTpcdFxuMTY3MDpcdFx0LyogTWFrZSBzdXJlIHRoYXQgd2UgZ290IGF0IGxlYXN0IHRoZSBBUEkgdmVyc2lvbiBudW1iZXIgKi9cbjE2NzE6XHRcdGlmICh1Y29kZV9yYXctXHUwMDNlc2l6ZSBcdTAwM2MgNCkge1xuMTY3MjpcdFx0XHRJV0xfRVJSKGRydiwgXCYjMzQ7RmlsZSBzaXplIHdheSB0b28gc21hbGwhXFxuXCYjMzQ7KTtcbjE2NzM6XHRcdFx0Z290byB0cnlfYWdhaW47XG4xNjc0Olx0XHR9XG4xNjc1Olx0XG4xNjc2Olx0XHQvKiBEYXRhIGZyb20gdWNvZGUgZmlsZTogIGhlYWRlciBmb2xsb3dlZCBieSB1Q29kZSBpbWFnZXMgKi9cbjE2Nzc6XHRcdHVjb2RlID0gKGNvbnN0IHN0cnVjdCBpd2xfdWNvZGVfaGVhZGVyICopdWNvZGVfcmF3LVx1MDAzZWRhdGE7XG4xNjc4Olx0XG4xNjc5Olx0XHRpZiAodWNvZGUtXHUwMDNldmVyKVxuMTY4MDpcdFx0XHRlcnIgPSBpd2xfcGFyc2VfdjFfdjJfZmlybXdhcmUoZHJ2LCB1Y29kZV9yYXcsIHBpZWNlcyk7XG4xNjgxOlx0XHRlbHNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMDE5CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCByZW5kZXJlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgdGhlIENvbmRpdGlvbmFsIExvZ2ljKioKClJpZ2h0LCBzbyBJJiMzOTttIHNlZWluZyBhIGNvbmRpdGlvbmFsIHN0YXRlbWVudCBoZXJlLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBzYXlpbmcsICYjMzQ7SWYgdGhlIHZhcmlhYmxlIGB1Y29kZV9yYXdgIGlzIE5PVCB0cnVlIChvciBtb3JlIHByZWNpc2VseSwgZmFsc3kpLCB0aGVuIGp1bXAgb3ZlciB0byBhIGxhYmVsIGNhbGxlZCBgdHJ5X2FnYWluYCYjMzQ7LiAgVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGF0IGB1Y29kZV9yYXdgIGxpa2VseSByZXByZXNlbnRzIHNvbWUgc29ydCBvZiByYXcgaW5wdXQgb3IgdmFsaWRhdGlvbiBjaGVjay4gVGhlIHN5c3RlbSBpcyBkZXNpZ25lZCB0byBoYW5kbGUgYSBzcGVjaWZpYyB0eXBlIG9mIGlucHV0IGFuZCBpZiB0aGF0IGV4cGVjdGVkIGlucHV0IGlzbiYjMzk7dCBwcmVzZW50LCBvciBkb2VzbiYjMzk7dCBwYXNzIHNvbWUgcHJlLWRlZmluZWQgY2hlY2ssIGl0IGRvZXNuJiMzOTt0IHRyeSB0byBjb250aW51ZSBwcm9jZXNzaW5nLiBJdCBpcyBkZXNpZ25lZCB0byBsb29wIGJhY2sgYW5kIHRyeSBhZ2FpbiB0byBoYW5kbGUgdGhlIGlucHV0LiBUaGlzIGlzIGltcG9ydGFudCB0byBub3RlIGFzIGl0IHNob3dzIHRoYXQgbm8gbWF0dGVyIHdoYXQsIHRoZSBjb2RlIHdpbGwgY29udGludWUgdG8gdHJ5LgoKTXkgbmV4dCBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCB3aGF0JiMzOTtzIGhhcHBlbmluZyBhdCBgdHJ5X2FnYWluYD8mIzM0Oy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGVycm9yIGhhbmRsaW5nIG9yIHRoZSByZXRyeSBtZWNoYW5pc20gdGhhdCYjMzk7cyBiZWVuIGltcGxlbWVudGVkLiBJcyBpdCBhIHNpbXBsZSBsb29wIGJhY2sgdG8gcmUtcHJvbXB0IHRoZSB1c2VyPyBJcyB0aGVyZSBhbiBpbmNyZW1lbnRpbmcgY291bnRlciBzb21ld2hlcmUgdGhhdCB3b3VsZCB0cmlnZ2VyIGEgZGlmZmVyZW50IGFjdGlvbiBhZnRlciBhIGNlcnRhaW4gbnVtYmVyIG9mIGZhaWxlZCBhdHRlbXB0cz8gSSYjMzk7bSBhbHJlYWR5IGxvb2tpbmcgZm9yIHRob3NlIGhpbnRzIHdpdGhpbiB0aGlzIHNtYWxsIHNuaXBwZXQgb2YgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4NjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTg2MDpcdFx0aWYgKHBpZWNlcy1cdTAwM2VpbnN0X2V2dGxvZ19zaXplKVxuMTg2MTpcdFx0XHRmdy1cdTAwM2VpbnN0X2V2dGxvZ19zaXplID0gKHBpZWNlcy1cdTAwM2VpbnN0X2V2dGxvZ19zaXplIC0gMTYpLzEyO1xuMTg2MjpcdFx0ZWxzZVxuMTg2MzpcdFx0XHRmdy1cdTAwM2VpbnN0X2V2dGxvZ19zaXplID1cbjE4NjQ6XHRcdFx0XHRkcnYtXHUwMDNldHJhbnMtXHUwMDNlbWFjX2NmZy1cdTAwM2ViYXNlLVx1MDAzZW1heF9ldmVudF9sb2dfc2l6ZTtcbjE4NjU6XHRcdGZ3LVx1MDAzZWluc3RfZXJybG9nX3B0ciA9IHBpZWNlcy1cdTAwM2VpbnN0X2VycmxvZ19wdHI7XG4xODY2Olx0XG4xODY3Olx0XHQvKlxuMTg2ODpcdFx0ICogZmlndXJlIG91dCB0aGUgb2Zmc2V0IG9mIGNoYWluIG5vaXNlIHJlc2V0IGFuZCBnYWluIGNvbW1hbmRzXG4xODY5Olx0XHQgKiBiYXNlIG9uIHRoZSBzaXplIG9mIHN0YW5kYXJkIHBoeSBjYWxpYnJhdGlvbiBjb21tYW5kcyB0YWJsZSBzaXplXG4xODcwOlx0XHQgKi9cbjE4NzE6XHRcdGlmIChmdy1cdTAwM2V1Y29kZV9jYXBhLnN0YW5kYXJkX3BoeV9jYWxpYnJhdGlvbl9zaXplIFx1MDAzZVxuMTg3MjpcdFx0ICAgIElXTF9NQVhfUEhZX0NBTElCUkFURV9UQkxfU0laRSlcbjE4NzM6XHRcdFx0ZnctXHUwMDNldWNvZGVfY2FwYS5zdGFuZGFyZF9waHlfY2FsaWJyYXRpb25fc2l6ZSA9XG4xODc0Olx0XHRcdFx0SVdMX01BWF9TVEFOREFSRF9QSFlfQ0FMSUJSQVRFX1RCTF9TSVpFO1xuMTg3NTpcdFxuMTg3NjpcdFx0LyogV2UgaGF2ZSBvdXIgY29waWVzIG5vdywgYWxsb3cgT1MgcmVsZWFzZSBpdHMgY29waWVzICovXG4xODc3Olx0XHRyZWxlYXNlX2Zpcm13YXJlKHVjb2RlX3Jhdyk7XG4xODc4Olx0XG4xODc5Olx0XHRpd2xfZGJnX3Rsdl9sb2FkX2JpbihkcnYtXHUwMDNldHJhbnMtXHUwMDNlZGV2LCBkcnYtXHUwMDNldHJhbnMpO1xuMTg4MDpcdFxuMTg4MTpcdFx0bXV0ZXhfbG9jayhcdTAwMjZpd2x3aWZpX29wbW9kZV90YWJsZV9tdHgpO1xuMTg4MjpcdFx0c3dpdGNoIChmdy1cdTAwM2V0eXBlKSB7XG4xODgzOlx0XHRjYXNlIElXTF9GV19EVk06XG4xODg0Olx0XHRcdG9wID0gXHUwMDI2aXdsd2lmaV9vcG1vZGVfdGFibGVbRFZNX09QX01PREVdO1xuMTg4NTpcdFx0XHRicmVhaztcbjE4ODY6XHRcdGRlZmF1bHQ6XG4xODg3Olx0XHRcdFdBUk4oMSwgXCYjMzQ7SW52YWxpZCBmdyB0eXBlICVkXFxuXCYjMzQ7LCBmdy1cdTAwM2V0eXBlKTtcbjE4ODg6XHRcdFx0ZmFsbHRocm91Z2g7XG4xODg5Olx0XHRjYXNlIElXTF9GV19NVk06XG4xODkwOlx0XHRcdG9wID0gXHUwMDI2aXdsd2lmaV9vcG1vZGVfdGFibGVbTVZNX09QX01PREVdO1xuMTg5MTpcdFx0XHRicmVhaztcbjE4OTI6XHRcdH1cbjE4OTM6XHRcbjE4OTQ6XHQjaWYgSVNfRU5BQkxFRChDT05GSUdfSVdMTUxEKVxuMTg5NTpcdFx0aWYgKGl3bF9kcnZfaXNfd2lmaTdfc3VwcG9ydGVkKGRydi1cdTAwM2V0cmFucykpXG4xODk2Olx0XHRcdG9wID0gXHUwMDI2aXdsd2lmaV9vcG1vZGVfdGFibGVbTUxEX09QX01PREVdO1xuMTg5NzpcdCNlbmRpZlxuMTg5ODpcdFxuMTg5OTpcdFx0SVdMX0lORk8oZHJ2LCBcJiMzNDtsb2FkZWQgZmlybXdhcmUgdmVyc2lvbiAlcyBvcF9tb2RlICVzXFxuXCYjMzQ7LFxuMTkwMDpcdFx0XHQgZHJ2LVx1MDAzZWZ3LmZ3X3ZlcnNpb24sIG9wLVx1MDAzZW5hbWUpO1xuMTkwMTpcdFxuMTkwMjpcdFx0LyogYWRkIHRoaXMgZGV2aWNlIHRvIHRoZSBsaXN0IG9mIGRldmljZXMgdXNpbmcgdGhpcyBvcF9tb2RlICovXG4xOTAzOlx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNmRydi1cdTAwM2VsaXN0LCBcdTAwMjZvcC1cdTAwM2VkcnYpO1xuMTkwNDpcdFxuMTkwNTpcdFx0aWYgKG9wLVx1MDAzZW9wcykge1xuMTkwNjpcdFx0XHRkcnYtXHUwMDNlb3BfbW9kZSA9IF9pd2xfb3BfbW9kZV9zdGFydChkcnYsIG9wKTtcbjE5MDc6XHRcbjE5MDg6XHRcdFx0aWYgKCFkcnYtXHUwMDNlb3BfbW9kZSkge1xuMTkwOTpcdFx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZpd2x3aWZpX29wbW9kZV90YWJsZV9tdHgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTIyMQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBJJiMzOTttIHJlYWR5IHRvIHN1bW1hcml6ZSBteSB0aG91Z2h0IHByb2Nlc3MuIEhlcmUmIzM5O3MgaG93IEkmIzM5O20gYXBwcm9hY2hpbmcgdGhpczoKCioqQW5hbHl6aW5nIHRoZSBDb2RlIFN0cnVjdHVyZTogVGhlIGB0cnlfYWdhaW5gIExhYmVsKioKCkFscmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyBteSBtZW50YWwgcGFyc2VyIGZsYWdzIGlzIHRoZSBwcmVzZW5jZSBvZiBhIGB0cnlfYWdhaW5gIGxhYmVsLiBUaGF0IGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgbWVudGFsIGNoZWNrIG9uIGl0cyBzdXJyb3VuZGluZyBjb250ZXh0LiBBIGxhYmVsIGxpa2UgdGhhdCBzdHJvbmdseSBzdWdnZXN0cyBhIGxvb3Bpbmcgb3IgcmV0cnkgbWVjaGFuaXNtIGlzIGluIHBsYXkuIEkgaW1tZWRpYXRlbHkgc3RhcnQgcGljdHVyaW5nIHBvdGVudGlhbCBzY2VuYXJpb3M6CgoqICAgKipFcnJvciBIYW5kbGluZzoqKiBJcyB0aGlzIGxhYmVsIGFzc29jaWF0ZWQgd2l0aCBhIGBnb3RvYCBzdGF0ZW1lbnQgKGlmIHRoZSBsYW5ndWFnZSBhbGxvd3MgdGhhdCwgd2hpY2ggaXMgYmVjb21pbmcgbGVzcyBhbmQgbGVzcyBjb21tb24pIG9yIHNvbWUgb3RoZXIgY29udHJvbCBmbG93IHN0cnVjdHVyZSB0aGF0IGp1bXBzIGJhY2sgdG8gdGhpcyBwb2ludD8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgc29tZSBmb3JtIG9mIGVycm9yIGhhbmRsaW5nLCBsaWtlbHkgd2l0aGluIGEgbG9vcCwgd2hlcmUgaWYgc29tZXRoaW5nIGdvZXMgd3JvbmcsIHRoZSBwcm9ncmFtIHdpbGwganVtcCBiYWNrIHRvIGB0cnlfYWdhaW5gIHRvIGF0dGVtcHQgYSBkaWZmZXJlbnQgYXBwcm9hY2gsIG9yIHBlcmhhcHMgdGhlIHNhbWUgb25lIGFnYWluLgoqICAgKipSZXRyeSBMb2dpYzoqKiBJdCBjb3VsZCBpbmRpY2F0ZSBhbiBhdHRlbXB0IHRvIHNvbHZlIGEgcHJvYmxlbSB3aXRoIHNvbWUgZm9ybSBvZiBicnV0ZSBmb3JjZSwgd2hlcmUgaWYgaXQgZmFpbHMgb24gdGhlIGZpcnN0IHBhc3MsIGl0IGNpcmNsZXMgYmFjayB0byB0cnkgYW5vdGhlciBwZXJtdXRhdGlvbi4gSSYjMzk7bSBpbWFnaW5pbmcgc2l0dWF0aW9ucyBsaWtlIGRhdGFiYXNlIGNvbm5lY3Rpb24gYXR0ZW1wdHMsIG5ldHdvcmsgY2FsbHMsIG9yIG1heWJlIGEgc2VhcmNoIGFsZ29yaXRobSB0aGF0IHVzZXMgYW4gaXRlcmF0aXZlIG1ldGhvZC4KKiAgICoqRXh0ZXJuYWwgRmFjdG9yczoqKiBJdCBjb3VsZCBpbXBseSBhIGRlcGVuZGVuY3kgb24gZXh0ZXJuYWwgc291cmNlcyB3aGVyZSBpbnRlcm1pdHRlbnQgYXZhaWxhYmlsaXR5IG9yIHRyYW5zaWVudCBlcnJvcnMgYXJlIHBvc3NpYmxlLCBhbmQgdGh1cyB3YXJyYW50aW5nIGEgcmV0cnkuCgpFc3NlbnRpYWxseSwgc2VlaW5nIGB0cnlfYWdhaW5gIHRlbGxzIG1lIHRvIGxvb2sgZm9yIGEgbG9vcCwgYSBjb25kaXRpb25hbCBzdGF0ZW1lbnQsIGFuZCBhIHBvdGVudGlhbCByZWFzb24gd2h5IGFuIGF0dGVtcHQgbWlnaHQgZmFpbCBpbiB0aGUgZmlyc3QgcGxhY2UuIFRoYXQgbGFiZWwgaXMgYSBzaWduYWwgdG8gbWUgdGhhdCBJIG5lZWQgdG8gem9vbSBpbiBvbiBhIHNwZWNpZmljIHNlZ21lbnQgb2YgdGhlIGNvZGUuIE15IGV4cGVydCB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgZmllbGQgd2lsbCBhbGxvdyBtZSB0byBxdWlja2x5IG1hcCBvdXQgdGhlIGZsb3cgb2YgdGhlIGFwcGxpY2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0cnlfYWdhaW46JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9MTYzMj1zdGF0aWMgdm9pZCBpd2xfcmVxX2Z3X2NhbGxiYWNrKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqdWNvZGVfcmF3LCB2b2lkICpjb250ZXh0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE5MjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoxOTIyOiB0cnlfYWdhaW46XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xOTIzLVx0LyogdHJ5IG5leHQsIGlmIGFueSAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTc3MwoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgQmFjayBpbnRvIGBpd2xfcmVxX2Z3X2NhbGxiYWNrYCBmcm9tIGB0cnlfYWdhaW5gKioKCkFscmlnaHQsIEkmIzM5O20gZ29pbmcgYmFjayBpbnRvIGBpd2xfcmVxX2Z3X2NhbGxiYWNrYCBhZnRlciB0aGF0IGp1bXAgZnJvbSBgdHJ5X2FnYWluYC4gSSBuZWVkIHRvIHJlLWZhbWlsaWFyaXplIG15c2VsZiB3aXRoIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluIHRoaXMgZnVuY3Rpb24mIzM5O3MgY2FsbCBwYXRoLiBJIGtub3cgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBmaXJtd2FyZSBsb2FkaW5nIGhlcmUsIGFuZCBgaXdsX3JlcV9md19jYWxsYmFja2AgaXMgY3J1Y2lhbCBmb3IgaGFuZGxpbmcgdGhlIHJlcXVlc3RzLCByaWdodD8gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGVycm9yIGhhbmRsaW5nIHBhcnRpY3VsYXJseSwgZXNwZWNpYWxseSBhcm91bmQgJiMzNDt0cnlfYWdhaW4mIzM0Oy4gV2hhdCBzcGVjaWZpYyBmYWlsdXJlIG1vZGVzIGlzIHRoaXMgbWVjaGFuaXNtIGRlc2lnbmVkIHRvIGFkZHJlc3M/IElzIHRoaXMgc29tZSBzb3J0IG9mIHJldHJ5IG1lY2hhbmlzbT8gQW5kIGlmIHNvLCB3aGF0IGFyZSB0aGUgcGFyYW1ldGVycyBhcm91bmQgdGhvc2UgcmV0cmllcz8gSSYjMzk7bSB0aGlua2luZyBJIHNob3VsZCBwcm9iYWJseSB0cmFjayBhbGwgcG9zc2libGUgc2NlbmFyaW9zLiBJIGNhbiYjMzk7dCBhZmZvcmQgdG8gbWlzcyBzb21ldGhpbmcgY3J1Y2lhbCBpbiBzdWNoIGEgbG93LWxldmVsIHJvdXRpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxOTIyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE5MjI6XHQgdHJ5X2FnYWluOlxuMTkyMzpcdFx0LyogdHJ5IG5leHQsIGlmIGFueSAqL1xuMTkyNDpcdFx0cmVsZWFzZV9maXJtd2FyZSh1Y29kZV9yYXcpO1xuMTkyNTpcdFx0aWYgKGl3bF9yZXF1ZXN0X2Zpcm13YXJlKGRydiwgZmFsc2UpKVxuMTkyNjpcdFx0XHRnb3RvIG91dF91bmJpbmQ7XG4xOTI3Olx0XHRnb3RvIGZyZWU7XG4xOTI4Olx0XG4xOTI5Olx0IG91dF9mcmVlX2Z3OlxuMTkzMDpcdFx0cmVsZWFzZV9maXJtd2FyZSh1Y29kZV9yYXcpO1xuMTkzMTpcdCBvdXRfdW5iaW5kOlxuMTkzMjpcdFx0Y29tcGxldGUoXHUwMDI2ZHJ2LVx1MDAzZXJlcXVlc3RfZmlybXdhcmVfY29tcGxldGUpO1xuMTkzMzpcdFx0ZGV2aWNlX3JlbGVhc2VfZHJpdmVyKGRydi1cdTAwM2V0cmFucy1cdTAwM2VkZXYpO1xuMTkzNDpcdFx0LyogZHJ2IGhhcyBqdXN0IGJlZW4gZnJlZWQgYnkgdGhlIHJlbGVhc2UgKi9cbjE5MzU6XHRcdGZhaWx1cmUgPSBmYWxzZTtcbjE5MzY6XHQgZnJlZTpcbjE5Mzc6XHRcdGlmIChmYWlsdXJlKVxuMTkzODpcdFx0XHRpd2xfZGVhbGxvY191Y29kZShkcnYpO1xuMTkzOTpcdFxuMTk0MDpcdFx0aWYgKHBpZWNlcykge1xuMTk0MTpcdFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHBpZWNlcy1cdTAwM2VpbWcpOyBpJiM0MzsmIzQzOylcbjE5NDI6XHRcdFx0XHRrZnJlZShwaWVjZXMtXHUwMDNlaW1nW2ldLnNlYyk7XG4xOTQzOlx0XHRcdGtmcmVlKHBpZWNlcy1cdTAwM2VkYmdfbWVtX3Rsdik7XG4xOTQ0Olx0XHRcdGtmcmVlKHBpZWNlcyk7XG4xOTQ1Olx0XHR9XG4xOTQ2Olx0fVxuMTk0NzpcdFxuMTk0ODpcdHN0cnVjdCBpd2xfZHJ2ICppd2xfZHJ2X3N0YXJ0KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxuMTk0OTpcdHtcbjE5NTA6XHRcdHN0cnVjdCBpd2xfZHJ2ICpkcnY7XG4xOTUxOlx0XHRpbnQgcmV0O1xuMTk1MjpcdFxuMTk1MzpcdFx0ZHJ2ID0ga3phbGxvY19vYmooKmRydik7XG4xOTU0Olx0XHRpZiAoIWRydikge1xuMTk1NTpcdFx0XHRyZXQgPSAtRU5PTUVNO1xuMTk1NjpcdFx0XHRnb3RvIGVycjtcbjE5NTc6XHRcdH1cbjE5NTg6XHRcbjE5NTk6XHRcdGRydi1cdTAwM2V0cmFucyA9IHRyYW5zO1xuMTk2MDpcdFx0ZHJ2LVx1MDAzZWRldiA9IHRyYW5zLVx1MDAzZWRldjtcbjE5NjE6XHRcbjE5NjI6XHRcdGluaXRfY29tcGxldGlvbihcdTAwMjZkcnYtXHUwMDNlcmVxdWVzdF9maXJtd2FyZV9jb21wbGV0ZSk7XG4xOTYzOlx0XHRJTklUX0xJU1RfSEVBRChcdTAwMjZkcnYtXHUwMDNlbGlzdCk7XG4xOTY0Olx0XG4xOTY1Olx0I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcbjE5NjY6XHRcdC8qIENyZWF0ZSB0aGUgZGV2aWNlIGRlYnVnZnMgZW50cmllcy4gKi9cbjE5Njc6XHRcdGRydi1cdTAwM2VkYmdmc19kcnYgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZGV2X25hbWUodHJhbnMtXHUwMDNlZGV2KSxcbjE5Njg6XHRcdFx0XHRcdFx0ICAgIGl3bF9kYmdmc19yb290KTtcbjE5Njk6XHRcbjE5NzA6XHRcdC8qIENyZWF0ZSB0cmFuc3BvcnQgbGF5ZXIgZGVidWdmcyBkaXIgKi9cbjE5NzE6XHRcdGRydi1cdTAwM2V0cmFucy1cdTAwM2VkYmdmc19kaXIgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoXCYjMzQ7dHJhbnNcJiMzNDssIGRydi1cdTAwM2VkYmdmc19kcnYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mjc1NAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDEyMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBpd2x3aWZpIERyaXZlciBhbmQgV29ya3F1ZXVlIENoYW5nZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSWYgdGhlIGZpcm13YXJlIGlzbiYjMzk7dCBmb3VuZCwgdGhlIGRldmljZSBnZXRzIHVuYm91bmQsIHRoZSBkcml2ZXIgaXMgcmVtb3ZlZCwgYW5kIGBpd2xfcGNpX3JlbW92ZWAgZ2V0cyBjYWxsZWQuIE1ha2VzIHNlbnNlLiBTbywgaWYgdGhlIGRyaXZlciAqZG9lc24mIzM5O3QqIGhhdmUgdGhlIGZpcm13YXJlLCBpdCYjMzk7cyBub3Qgc3RpY2tpbmcgYXJvdW5kLiBJIHdhcyBpbml0aWFsbHkgd29ycmllZCB0aGF0IGFuIGludGVycnVwdCAqZHVyaW5nKiBmaXJtd2FyZSBsb2FkaW5nIG1pZ2h0IHRyaWdnZXIgYSByZXNldCwgYnV0IHRoZSBjb2RlIGNsZXZlcmx5IGNoZWNrcyBgdHJhbnMtJmd0O29wX21vZGVgIGluIGBpd2xfdHJhbnNfcmVzdGFydF93a2AuIFNpbmNlIGB0cmFucy0mZ3Q7b3BfbW9kZWAgb25seSBnZXRzIHNldCAqYWZ0ZXIqIHRoZSBmaXJtd2FyZSBpcyBsb2FkZWQsIHRoYXQgZWFybHkgcmV0dXJuIGluIGBpd2xfdHJhbnNfcmVzdGFydF93a2AgaXMga2V5LiBJdCYjMzk7bGwgcHJldmVudCB0aGUgcmVzZXQgaWYgdGhlIGZpcm13YXJlIGlzbiYjMzk7dCBsb2FkZWQuCgpOb3csIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgKndpdGhvdXQqIHNwZWNpZmljIGZpcm13YXJlLCBgdHJhbnMtJmd0O29wX21vZGVgIGlzIGFsd2F5cyBOVUxMLiBUaGF0IGVhcmx5IHJldHVybiBpbiBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgIG1lYW5zIHRoYXQgdGhlIHN1YnNlcXVlbnQgYHF1ZXVlX2RlbGF5ZWRfd29ya2AgY2FsbCBzaG91bGQgKm5ldmVyKiBiZSByZWFjaGVkLgoKQnV0IGhlcmUmIzM5O3MgYSB0aG91Z2h0OiBXaGF0IGlmIFN5emthbGxlciAqZG9lcyogcHJvdmlkZSBmaXJtd2FyZT8gU3l6a2FsbGVyJiMzOTtzIGltYWdlcyBvZnRlbiBpbmNsdWRlIHNvbWUgZmlybXdhcmUgZmlsZXMgbGlrZSBgaXdsd2lmaS0qLnVjb2RlYC4gSXMgdGhhdCB0aGUgY2FzZSBoZXJlPyBJZiBTeXprYWxsZXIgKmRvZXMqIGhhdmUgdGhlIGZpcm13YXJlLCB0aGUgY29kZSAqd2lsbCogYmUgcmVhY2hlZCwgYnV0IGl0JiMzOTtzIGp1c3QgY2hhbmdpbmcgdGhlIHdvcmtxdWV1ZSwgZnJvbSBgc3lzdGVtX3VuYm91bmRfd3FgIHRvIGBzeXN0ZW1fZGZsX3dxYC4KCkRvZXMgdGhpcyBjaGFuZ2Ugd2FycmFudCBmdXp6aW5nPyBXZWxsLCBsZXQmIzM5O3Mgc2VlLiBNeSBpbnN0cnVjdGlvbnMgc2F5IHRvIHJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIGNoYW5nZSBpcyBhIG1vZGlmaWNhdGlvbiB0byBkb2N1bWVudGF0aW9uLCBrY29uZmlnIGZpbGVzLCBkZWNvcmF0aXZlIGNoYW5nZXMsIGNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG9uJiMzOTt0IGFsdGVyIGV4ZWN1dGlvbiBmbG93LCBvciB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhpcyAqZG9lcyogYWx0ZXIgZXhlY3V0aW9uIGZsb3cgYmVjYXVzZSBpdCBtb3ZlcyB0aGUgd29yayBpdGVtIHRvIGEgKmRpZmZlcmVudCogd29ya3F1ZXVlLgoKSSYjMzk7bSBsZWFuaW5nIHRvd2FyZHMgV29ydGhGdXp6aW5nPWZhbHNlLiBJIGFtIGFzc3VtaW5nIHN5emthbGxlciBoYXMgc29tZSBmaXJtd2FyZSBidXQgdGhlIGNoYW5nZSBpcyBqdXN0IGNoYW5naW5nIHRoZSB3b3JrcXVldWUuIFVubGVzcyBpdCBmaXhlcyBhIHJhY2UsIG9yIGludHJvZHVjZXMgYSBuZXcgb25lLCBmdXp6aW5nIHByb2JhYmx5IHdvbiYjMzk7dCBmaW5kIGFueXRoaW5nIGhlcmUuIEJ1dCB0aG9zZSBpbnN0cnVjdGlvbnMgYWxzbyBkb24mIzM5O3QgZXhwbGljaXRseSBzYXkgJiMzNDt0cml2aWFsIHdvcmtxdWV1ZSBjaGFuZ2VzJiMzNDsgYXJlIFdvcnRoRnV6emluZz1mYWxzZS4KCk9rYXksIGlzIGBzeXN0ZW1fZGZsX3dxYCBhIG1hY3JvIG9yIHZhcmlhYmxlPyBJdCBpcyBhIGdsb2JhbCB2YXJpYWJsZS4gVGhlcmUgYXJlIGFsc28gc3BlY2lmaWMgY29uZmlncyBsaWtlIGBJV0xXSUZJYC4KCkJ1dCBoZXJlJiMzOTtzIHRoZSBraWNrZXI6IGBpd2x3aWZpYCBpcyBhIHJlYWwgaGFyZHdhcmUgZHJpdmVyLiBTeXprYWxsZXImIzM5O3MgYWJpbGl0eSB0byBmdXp6IGl0IGlzICpzZXZlcmVseSogbGltaXRlZCBldmVuIHdpdGggdlBDSSBiZWNhdXNlIG9mIGFsbCB0aGUgRE1BIGFuZCBmaXJtd2FyZSBpbnRlcmFjdGlvbnMuIElmIGl0JiMzOTtzIGxvYWRlZCwgdGhlIGRyaXZlciBuZWVkcyB0byB0YWxrIHRvIHRoZSBoYXJkd2FyZSwgYW5kIHRoZSB2UENJIGlzIG5vdCBhbiAqYWN0dWFsKiBJbnRlbCBXaS1GaSBjaGlwLiBJdCYjMzk7cyBqdXN0IHByb3ZpZGluZyByYW5kb20gZGF0YS4gU28sIHRoZSBmaXJtd2FyZSB3aWxsIGVpdGhlciBmYWlsIHRvIGxvYWQsIG9yIHRoZSBkZXZpY2Ugd2lsbCBmYWlsIHRvIGluaXRpYWxpemUuIFRoZSB2UENJIHdvbiYjMzk7dCBlbXVsYXRlIHRoZSBJbnRlbCBXaS1GaSBoYXJkd2FyZS4gVGhlIGZpcm13YXJlIHNpZ25hdHVyZSBjaGVjayBvciBwYXJzaW5nIHdpbGwgZmFpbC4KClRoZSBmaXJtd2FyZSBjb21lcyBmcm9tIHRoZSBmaWxlc3lzdGVtLiBCdXQsIHRoZSBkcml2ZXIgd3JpdGVzIGl0IHRvIHRoZSBkZXZpY2UgdXNpbmcgRE1BL01NSU8gYW5kIGV4cGVjdHMgdGhlIGRldmljZSB0byBib290IGFuZCBzZXQgcmVnaXN0ZXJzLiBUaGUgdlBDSSYjMzk7cyByYW5kb20gZGF0YSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgbWFrZSB0aGUgd2hvbGUgaW5pdGlhbGl6YXRpb24gc3RhdGUgbWFjaGluZSBmYWlsLgoKV2FpdCwgaXMgYHRyYW5zLSZndDtvcF9tb2RlYCBzZXQgQkVGT1JFIHRoZSBmaXJtd2FyZSBpcyBmdWxseSBib290ZWQ/IFdlIG11c3QgY2hlY2sgYGl3bF9yZXFfZndfY2FsbGJhY2tgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTg5OSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxODk5Olx0XHRJV0xfSU5GTyhkcnYsIFwmIzM0O2xvYWRlZCBmaXJtd2FyZSB2ZXJzaW9uICVzIG9wX21vZGUgJXNcXG5cJiMzNDssXG4xOTAwOlx0XHRcdCBkcnYtXHUwMDNlZncuZndfdmVyc2lvbiwgb3AtXHUwMDNlbmFtZSk7XG4xOTAxOlx0XG4xOTAyOlx0XHQvKiBhZGQgdGhpcyBkZXZpY2UgdG8gdGhlIGxpc3Qgb2YgZGV2aWNlcyB1c2luZyB0aGlzIG9wX21vZGUgKi9cbjE5MDM6XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZHJ2LVx1MDAzZWxpc3QsIFx1MDAyNm9wLVx1MDAzZWRydik7XG4xOTA0Olx0XG4xOTA1Olx0XHRpZiAob3AtXHUwMDNlb3BzKSB7XG4xOTA2Olx0XHRcdGRydi1cdTAwM2VvcF9tb2RlID0gX2l3bF9vcF9tb2RlX3N0YXJ0KGRydiwgb3ApO1xuMTkwNzpcdFxuMTkwODpcdFx0XHRpZiAoIWRydi1cdTAwM2VvcF9tb2RlKSB7XG4xOTA5Olx0XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNml3bHdpZmlfb3Btb2RlX3RhYmxlX210eCk7XG4xOTEwOlx0XHRcdFx0Z290byBvdXRfdW5iaW5kO1xuMTkxMTpcdFx0XHR9XG4xOTEyOlx0XHR9IGVsc2Uge1xuMTkxMzpcdFx0XHRyZXF1ZXN0X21vZHVsZV9ub3dhaXQoXCYjMzQ7JXNcJiMzNDssIG9wLVx1MDAzZW5hbWUpO1xuMTkxNDpcdFx0fVxuMTkxNTpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNml3bHdpZmlfb3Btb2RlX3RhYmxlX210eCk7XG4xOTE2Olx0XG4xOTE3Olx0XHRjb21wbGV0ZShcdTAwMjZkcnYtXHUwMDNlcmVxdWVzdF9maXJtd2FyZV9jb21wbGV0ZSk7XG4xOTE4Olx0XG4xOTE5Olx0XHRmYWlsdXJlID0gZmFsc2U7XG4xOTIwOlx0XHRnb3RvIGZyZWU7XG4xOTIxOlx0XG4xOTIyOlx0IHRyeV9hZ2FpbjpcbjE5MjM6XHRcdC8qIHRyeSBuZXh0LCBpZiBhbnkgKi9cbjE5MjQ6XHRcdHJlbGVhc2VfZmlybXdhcmUodWNvZGVfcmF3KTtcbjE5MjU6XHRcdGlmIChpd2xfcmVxdWVzdF9maXJtd2FyZShkcnYsIGZhbHNlKSlcbjE5MjY6XHRcdFx0Z290byBvdXRfdW5iaW5kO1xuMTkyNzpcdFx0Z290byBmcmVlO1xuMTkyODpcdFxuMTkyOTpcdCBvdXRfZnJlZV9mdzpcbjE5MzA6XHRcdHJlbGVhc2VfZmlybXdhcmUodWNvZGVfcmF3KTtcbjE5MzE6XHQgb3V0X3VuYmluZDpcbjE5MzI6XHRcdGNvbXBsZXRlKFx1MDAyNmRydi1cdTAwM2VyZXF1ZXN0X2Zpcm13YXJlX2NvbXBsZXRlKTtcbjE5MzM6XHRcdGRldmljZV9yZWxlYXNlX2RyaXZlcihkcnYtXHUwMDNldHJhbnMtXHUwMDNlZGV2KTtcbjE5MzQ6XHRcdC8qIGRydiBoYXMganVzdCBiZWVuIGZyZWVkIGJ5IHRoZSByZWxlYXNlICovXG4xOTM1Olx0XHRmYWlsdXJlID0gZmFsc2U7XG4xOTM2Olx0IGZyZWU6XG4xOTM3Olx0XHRpZiAoZmFpbHVyZSlcbjE5Mzg6XHRcdFx0aXdsX2RlYWxsb2NfdWNvZGUoZHJ2KTtcbjE5Mzk6XHRcbjE5NDA6XHRcdGlmIChwaWVjZXMpIHtcbjE5NDE6XHRcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShwaWVjZXMtXHUwMDNlaW1nKTsgaSYjNDM7JiM0MzspXG4xOTQyOlx0XHRcdFx0a2ZyZWUocGllY2VzLVx1MDAzZWltZ1tpXS5zZWMpO1xuMTk0MzpcdFx0XHRrZnJlZShwaWVjZXMtXHUwMDNlZGJnX21lbV90bHYpO1xuMTk0NDpcdFx0XHRrZnJlZShwaWVjZXMpO1xuMTk0NTpcdFx0fVxuMTk0NjpcdH1cbjE5NDc6XHRcbjE5NDg6XHRzdHJ1Y3QgaXdsX2RydiAqaXdsX2Rydl9zdGFydChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU0NzIKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHVuZm9sZHM6CgoqKkRpZ2dpbmcgaW50byB0aGUgSVdMIERyaXZlciBTdGFydHVwKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhpcyBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIGBpd2xgLCBraWNrcyBvZmYgaXRzIG9wZXJhdGlvbmFsIG1vZGUuIFRoZSBmdW5jdGlvbiBgX2l3bF9vcF9tb2RlX3N0YXJ0YCBpcyB0aGUga2V5IGhlcmUuIEl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQ7IGl0IGNhbGxzIGEgZnVuY3Rpb24gcG9pbnRlciwgYG9wLSZndDtvcHMtJmd0O3N0YXJ0YC4gTm93LCBgb3BgIGxpa2VseSByZXByZXNlbnRzIHRoZSBvcGVyYXRpb25hbCBtb2RlLCBhbmQgdGhlIGBvcHNgIHByb2JhYmx5IGNvbnRhaW5zIGEgdGFibGUgb2YgZnVuY3Rpb24gcG9pbnRlcnMgcmVsYXRlZCB0byB0aGF0IG1vZGUuCgpGb3IgdGhlIE11bHRpLVZpcnR1YWwgTWFjaGluZSAoTVZNKSBjYXNlLCB0aGlzIHRyYW5zbGF0ZXMgdG8gdGhlIGZ1bmN0aW9uIGBpd2xfb3BfbW9kZV9tdm1fc3RhcnRgIGdldHRpbmcgaW52b2tlZC4gU28sIHRoZSBiYXNlIGZ1bmN0aW9uIHNldHMgdXAgc29tZSBjb21tb24gc3R1ZmYsIGFuZCB0aGVuLCBiYXNlZCBvbiB0aGUgc3BlY2lmaWMgb3BlcmF0aW9uYWwgbW9kZSwgd2UgaGl0IGEgbW9kZS1zcGVjaWZpYyBzdGFydCBmdW5jdGlvbi4gR290IGl0LiBUaGlzIG1ha2VzIHNlbnNlIGZyb20gYW4gYXJjaGl0ZWN0dXJhbCBwZXJzcGVjdGl2ZTogYSBtb2R1bGFyIGFwcHJvYWNoIHRoYXQgYWxsb3dzIGZvciBkaWZmZXJlbnQgd2lyZWxlc3Mgc3RhbmRhcmRzIGFuZCBjb25maWd1cmF0aW9ucyB0byBiZSBzdXBwb3J0ZWQgY2xlYW5seS4gSSB3b25kZXIgd2hhdCBleGFjdGx5IGlzIGRvbmUgd2l0aGluIHRoYXQgYGl3bF9vcF9tb2RlX212bV9zdGFydGAgZnVuY3Rpb24uLi4gbGV0JiMzOTtzIHNlZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExOTcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTE5NzpcdGl3bF9vcF9tb2RlX212bV9zdGFydChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3Qgc3RydWN0IGl3bF9yZl9jZmcgKmNmZyxcbjExOTg6XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGl3bF9mdyAqZncsIHN0cnVjdCBkZW50cnkgKmRiZ2ZzX2RpcilcbjExOTk6XHR7XG4xMjAwOlx0XHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodztcbjEyMDE6XHRcdHN0cnVjdCBpd2xfb3BfbW9kZSAqb3BfbW9kZTtcbjEyMDI6XHRcdHN0cnVjdCBpd2xfbXZtICptdm07XG4xMjAzOlx0XHRzdGF0aWMgY29uc3QgdTggbm9fcmVjbGFpbV9jbWRzW10gPSB7XG4xMjA0Olx0XHRcdFRYX0NNRCxcbjEyMDU6XHRcdH07XG4xMjA2Olx0XHR1MzIgbWF4X2FnZztcbjEyMDc6XHRcdHNpemVfdCBzY2FuX3NpemU7XG4xMjA4Olx0XHR1MzIgbWluX2JhY2tvZmY7XG4xMjA5Olx0XHRzdHJ1Y3QgaXdsX212bV9jc21lX2Nvbm5faW5mbyAqY3NtZV9jb25uX2luZm8gX19tYXliZV91bnVzZWQ7XG4xMjEwOlx0XHRpbnQgcmF0ZWNoZWNrO1xuMTIxMTpcdFx0aW50IGVycjtcbjEyMTI6XHRcbjEyMTM6XHRcdC8qXG4xMjE0Olx0XHQgKiBXZSB1c2UgSVdMX1NUQVRJT05fQ09VTlRfTUFYIHRvIGNoZWNrIHRoZSB2YWxpZGl0eSBvZiB0aGUgc3RhdGlvblxuMTIxNTpcdFx0ICogaW5kZXggYWxsIG92ZXIgdGhlIGRyaXZlciAtIGNoZWNrIHRoYXQgaXRzIHZhbHVlIGNvcnJlc3BvbmRzIHRvIHRoZVxuMTIxNjpcdFx0ICogYXJyYXkgc2l6ZS5cbjEyMTc6XHRcdCAqL1xuMTIxODpcdFx0QlVJTERfQlVHX09OKEFSUkFZX1NJWkUobXZtLVx1MDAzZWZ3X2lkX3RvX21hY19pZCkgIT1cbjEyMTk6XHRcdFx0ICAgICBJV0xfU1RBVElPTl9DT1VOVF9NQVgpO1xuMTIyMDpcdFxuMTIyMTpcdFx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4xMjIyOlx0XHQgKiAxLiBBbGxvY2F0aW5nIGFuZCBjb25maWd1cmluZyBIVyBkYXRhXG4xMjIzOlx0XHQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4xMjI0Olx0XHRodyA9IGllZWU4MDIxMV9hbGxvY19odyhzaXplb2Yoc3RydWN0IGl3bF9vcF9tb2RlKSAmIzQzO1xuMTIyNTpcdFx0XHRcdFx0c2l6ZW9mKHN0cnVjdCBpd2xfbXZtKSxcbjEyMjY6XHRcdFx0XHRcdGl3bF9tdm1faGFzX21sZF9hcGkoZncpID8gXHUwMDI2aXdsX212bV9tbGRfaHdfb3BzIDpcbjEyMjc6XHRcdFx0XHRcdFx1MDAyNml3bF9tdm1faHdfb3BzKTtcbjEyMjg6XHRcdGlmICghaHcpXG4xMjI5Olx0XHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuMTIzMDpcdFxuMTIzMTpcdFx0aWYgKHRyYW5zLVx1MDAzZW1hY19jZmctXHUwMDNlZGV2aWNlX2ZhbWlseSBcdTAwM2U9IElXTF9ERVZJQ0VfRkFNSUxZX0JaKVxuMTIzMjpcdFx0XHRtYXhfYWdnID0gNTEyO1xuMTIzMzpcdFx0ZWxzZVxuMTIzNDpcdFx0XHRtYXhfYWdnID0gSUVFRTgwMjExX01BWF9BTVBEVV9CVUZfSEU7XG4xMjM1Olx0XG4xMjM2Olx0XHRody1cdTAwM2VtYXhfcnhfYWdncmVnYXRpb25fc3ViZnJhbWVzID0gbWF4X2FnZztcbjEyMzc6XHRcbjEyMzg6XHRcdG9wX21vZGUgPSBody1cdTAwM2Vwcml2O1xuMTIzOTpcdFxuMTI0MDpcdFx0bXZtID0gSVdMX09QX01PREVfR0VUX01WTShvcF9tb2RlKTtcbjEyNDE6XHRcdG12bS1cdTAwM2VkZXYgPSB0cmFucy1cdTAwM2VkZXY7XG4xMjQyOlx0XHRtdm0tXHUwMDNldHJhbnMgPSB0cmFucztcbjEyNDM6XHRcdG12bS1cdTAwM2VjZmcgPSBjZmc7XG4xMjQ0Olx0XHRtdm0tXHUwMDNlZncgPSBmdztcbjEyNDU6XHRcdG12bS1cdTAwM2VodyA9IGh3O1xuMTI0NjpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjYxOQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGU6CgoqKkRpdmluZyBpbnRvIHRoZSBpd2xfb3BfbW9kZV9tdm1fc3RhcnQgQ2FsbCBDaGFpbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGl3bF9vcF9tb2RlX212bV9zdGFydGAgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBleGVjdXRpb24gZmxvdyBhcm91bmQgYGl3bF90cmFuc19vcF9tb2RlX2VudGVyYC4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGF0IGZ1bmN0aW9uIGNhbGwuIEkga25vdyBgaXdsX3RyYW5zX29wX21vZGVfZW50ZXJgIGlzIHByb2JhYmx5IGhhbmRsaW5nIHNvbWUgc29ydCBvZiBtb2RlIHRyYW5zaXRpb24sIGxpa2VseSByZWxhdGVkIHRvIHRoZSB3aXJlbGVzcyBkcml2ZXImIzM5O3Mgb3BlcmF0aW9uYWwgc3RhdGUuIFRvIGdldCBhIGhhbmRsZSBvbiB0aGUgaW50ZXJhY3Rpb24sIEkgbmVlZCB0byBzZWUgKndoZXJlKiBpdCYjMzk7cyBhY3R1YWxseSBpbnZva2VkICp3aXRoaW4qIGBpd2xfb3BfbW9kZV9tdm1fc3RhcnRgLiBJIGV4cGVjdCB0aGF0LCBzaW5jZSBpdCYjMzk7cyBgX2VudGVyYCwgaXQgaXMgaW52b2tlZCBiZWZvcmUgaXQgZXhpdHMgdGhlIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNDIwOlx0XHQgKiBidXQgdGhleSBhcmUgYnVnZ3kuXG4xNDIxOlx0XHQgKi9cbjE0MjI6XHRcdGlmIChJV0xfVUNPREVfTUFKT1IobXZtLVx1MDAzZWZ3LVx1MDAzZXVjb2RlX3ZlcikgXHUwMDNjPSA3NylcbjE0MjM6XHRcdFx0dHJhbnMtXHUwMDNlY29uZi5md19yZXNldF9oYW5kc2hha2UgPSBmYWxzZTtcbjE0MjQ6XHRcbjE0MjU6XHRcdHRyYW5zLVx1MDAzZWNvbmYucXVldWVfYWxsb2NfY21kX3ZlciA9XG4xNDI2Olx0XHRcdGl3bF9md19sb29rdXBfY21kX3Zlcihtdm0tXHUwMDNlZncsXG4xNDI3Olx0XHRcdFx0XHQgICAgICBXSURFX0lEKERBVEFfUEFUSF9HUk9VUCxcbjE0Mjg6XHRcdFx0XHRcdFx0ICAgICAgU0NEX1FVRVVFX0NPTkZJR19DTUQpLFxuMTQyOTpcdFx0XHRcdFx0ICAgICAgMCk7XG4xNDMwOlx0XHRtdm0tXHUwMDNlc3RhX3JlbW92ZV9yZXF1aXJlc19xdWV1ZV9yZW1vdmUgPVxuMTQzMTpcdFx0XHR0cmFucy1cdTAwM2Vjb25mLnF1ZXVlX2FsbG9jX2NtZF92ZXIgXHUwMDNlIDA7XG4xNDMyOlx0XG4xNDMzOlx0XHRtdm0tXHUwMDNlbWxkX2FwaV9pc191c2VkID0gaXdsX212bV9oYXNfbWxkX2FwaShtdm0tXHUwMDNlZncpO1xuMTQzNDpcdFxuMTQzNTpcdFx0LyogQ29uZmlndXJlIHRyYW5zcG9ydCBsYXllciAqL1xuMTQzNjpcdFx0aXdsX3RyYW5zX29wX21vZGVfZW50ZXIobXZtLVx1MDAzZXRyYW5zLCBvcF9tb2RlKTtcbjE0Mzc6XHRcbjE0Mzg6XHRcdHRyYW5zLVx1MDAzZWRiZy5kZXN0X3RsdiA9IG12bS1cdTAwM2Vmdy1cdTAwM2VkYmcuZGVzdF90bHY7XG4xNDM5Olx0XHR0cmFucy1cdTAwM2VkYmcubl9kZXN0X3JlZyA9IG12bS1cdTAwM2Vmdy1cdTAwM2VkYmcubl9kZXN0X3JlZztcbjE0NDA6XHRcbjE0NDE6XHRcdC8qIHNldCB1cCBub3RpZmljYXRpb24gd2FpdCBzdXBwb3J0ICovXG4xNDQyOlx0XHRpd2xfbm90aWZpY2F0aW9uX3dhaXRfaW5pdChcdTAwMjZtdm0tXHUwMDNlbm90aWZfd2FpdCk7XG4xNDQzOlx0XG4xNDQ0Olx0XHQvKiBJbml0IHBoeSBkYiAqL1xuMTQ0NTpcdFx0bXZtLVx1MDAzZXBoeV9kYiA9IGl3bF9waHlfZGJfaW5pdCh0cmFucyk7XG4xNDQ2Olx0XHRpZiAoIW12bS1cdTAwM2VwaHlfZGIpIHtcbjE0NDc6XHRcdFx0SVdMX0VSUihtdm0sIFwmIzM0O0Nhbm5vdCBpbml0IHBoeV9kYlxcblwmIzM0Oyk7XG4xNDQ4Olx0XHRcdGVyciA9IC1FTk9NRU07XG4xNDQ5Olx0XHRcdGdvdG8gb3V0X2ZyZWU7XG4xNDUwOlx0XHR9XG4xNDUxOlx0XG4xNDUyOlx0XHRpZiAoaXdsd2lmaV9tb2RfcGFyYW1zLm52bV9maWxlKVxuMTQ1MzpcdFx0XHRtdm0tXHUwMDNlbnZtX2ZpbGVfbmFtZSA9IGl3bHdpZmlfbW9kX3BhcmFtcy5udm1fZmlsZTtcbjE0NTQ6XHRcdGVsc2VcbjE0NTU6XHRcdFx0SVdMX0RFQlVHX0VFUFJPTShtdm0tXHUwMDNldHJhbnMtXHUwMDNlZGV2LFxuMTQ1NjpcdFx0XHRcdFx0IFwmIzM0O3dvcmtpbmcgd2l0aG91dCBleHRlcm5hbCBudm0gZmlsZVxcblwmIzM0Oyk7XG4xNDU3Olx0XG4xNDU4Olx0XHRzY2FuX3NpemUgPSBpd2xfbXZtX3NjYW5fc2l6ZShtdm0pO1xuMTQ1OTpcdFxuMTQ2MDpcdFx0bXZtLVx1MDAzZXNjYW5fY21kID0ga21hbGxvYyhzY2FuX3NpemUsIEdGUF9LRVJORUwpO1xuMTQ2MTpcdFx0aWYgKCFtdm0tXHUwMDNlc2Nhbl9jbWQpIHtcbjE0NjI6XHRcdFx0ZXJyID0gLUVOT01FTTtcbjE0NjM6XHRcdFx0Z290byBvdXRfZnJlZTtcbjE0NjQ6XHRcdH1cbjE0NjU6XHRcdG12bS1cdTAwM2VzY2FuX2NtZF9zaXplID0gc2Nhbl9zaXplO1xuMTQ2NjpcdFxuMTQ2NzpcdFx0LyogaW52YWxpZGF0ZSBpZHMgdG8gcHJldmVudCBhY2NpZGVudGFsIHJlbW92YWwgb2Ygc3RhX2lkIDAgKi9cbjE0Njg6XHRcdG12bS1cdTAwM2VhdXhfc3RhLnN0YV9pZCA9IElXTF9JTlZBTElEX1NUQTtcbjE0Njk6XHRcdG12bS1cdTAwM2VzbmlmX3N0YS5zdGFfaWQgPSBJV0xfSU5WQUxJRF9TVEE7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3NzQzCgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMzU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIENvZGUmIzM5O3MgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYGl3bF90cmFuc19vcF9tb2RlX2VudGVyYCBpcyBjYWxsZWQgd2l0aGluIGBpd2xfb3BfbW9kZV9tdm1fc3RhcnRgLiAgQ3J1Y2lhbGx5LCBgdHJhbnMtJmd0O29wX21vZGVgIGlzIG9ubHkgaW5pdGlhbGl6ZWQgKmFmdGVyKiB0aGUgZmlybXdhcmUgc3VjY2Vzc2Z1bGx5IGxvYWRzIGFuZCBpcyBwYXJzZWQuICBTaW5jZSBTeXprYWxsZXIsIGluIGl0cyBzdGFuZGFyZCBjb25maWd1cmF0aW9uLCBkb2VzbiYjMzk7dCB0eXBpY2FsbHkgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGZpcm13YXJlLCBJJiMzOTttIHByZXR0eSBjZXJ0YWluIHRoYXQgYHRyYW5zLSZndDtvcF9tb2RlYCB3aWxsIGJlIE5VTEwgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4KCkNvbnNlcXVlbnRseSwgYGl3bF90cmFuc19yZXN0YXJ0X3drYCB3aWxsIGltbWVkaWF0ZWx5IGJhaWwgb3V0IGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiB0aGUgZnVuY3Rpb246CmBgYGMKCWlmICghdHJhbnMtJmd0O29wX21vZGUpCgkJcmV0dXJuOwpgYGAKVGhpcyBtZWFucyB0aGUgY3JpdGljYWwgbGluZSBJJiMzOTttIGludGVyZXN0ZWQgaW4sIHdoaWNoIHF1ZXVlcyBhIGRlbGF5ZWQgd29yazoKYGBgYwoJcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfd3EsICZhbXA7dHJhbnMtJmd0O3Jlc3RhcnQud2ssCgkJCSAgIElXTF9UUkFOU19SRVNFVF9ERUxBWSk7CmBgYAp3aWxsICpuZXZlciogYmUgZXhlY3V0ZWQgaW4gYSB0eXBpY2FsIFN5emthbGxlciBzY2VuYXJpby4gIFRoZXJlZm9yZSwgSSYjMzk7ZCBsZWFuIHRvd2FyZHMgc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGNvZGUgcGF0aC4KCkJ1dCB3YWl0LCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrLiBJcyB0aGVyZSAqYW55KiBjaGFuY2UgU3l6a2FsbGVyIGNvdWxkIHNvbWVob3cgcHJvdmlkZSBmaXJtd2FyZT8gSXQgKmNvdWxkKiBsZXZlcmFnZSBgc3l6X21vdW50X2ltYWdlYCBvciBhIHNpbWlsYXIgY2FsbCwgYnV0IHJlYWxpc3RpY2FsbHksIGl0IHVzdWFsbHkgKmRvZXNuJiMzOTt0KiBpbmNsdWRlIHRob3NlIHNwZWNpZmljIEludGVsIFdpLUZpIGZpcm13YXJlIGZpbGVzLiAgQW5kIGV2ZW4gaWYgaXQgKmRpZCosIHRoZSB2UENJIGVtdWxhdG9yIHdvdWxkIGFsbW9zdCBjZXJ0YWlubHkgZmFpbCBhdCBvdGhlciBjcml0aWNhbCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBzdGVwcywgc3VjaCBhcyB0aG9zZSByZWxhdGVkIHRvIGBpd2xfdHJhbnNfYWN0aXZhdGVfbmljYCBhbmQgYGl3bF9wb2xsX2JpdHNgLCB3aGljaCBuZWVkIHRvIGhhcHBlbiAqYmVmb3JlKiB0aGUgZHJpdmVyIGV2ZW4gYXR0ZW1wdHMgZmlybXdhcmUgbG9hZGluZy4KCkhvbGQgb24sIEkgc2VlIGEgcG90ZW50aWFsIGlzc3VlOiBgaXdsX3BjaV9nZW4xXzJfcHJvYmVgIGNhbGxzIGBpd2xfdHJhbnNfYWN0aXZhdGVfbmljYCAqYmVmb3JlKiBmaXJtd2FyZSBsb2FkaW5nLiBJIG5lZWQgdG8gcmUtZXZhbHVhdGUgYGl3bF9wY2lfZ2VuMV8yX3Byb2JlYCB0byBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQyNTgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDI1ODpcdFx0LypcbjQyNTk6XHRcdCAqIExldCYjMzk7cyB0cnkgdG8gZ3JhYiBOSUMgYWNjZXNzIGVhcmx5IGhlcmUuIFNvbWV0aW1lcywgTklDcyBtYXlcbjQyNjA6XHRcdCAqIGZhaWwgdG8gaW5pdGlhbGl6ZSwgYW5kIGlmIHRoYXQgaGFwcGVucyBpdCYjMzk7cyBiZXR0ZXIgaWYgd2Ugc2VlXG40MjYxOlx0XHQgKiBpc3N1ZXMgZWFybHkgb24gKGFuZCBjYW4gcmVwcm9iZSwgcGVyIHRoZSBsb2dpYyBpbnNpZGUpLCB0aGFuXG40MjYyOlx0XHQgKiBmaXJzdCB0cnlpbmcgdG8gbG9hZCB0aGUgZmlybXdhcmUgZXRjLiBhbmQgcG90ZW50aWFsbHkgb25seVxuNDI2MzpcdFx0ICogZGV0ZWN0aW5nIGFueSBwcm9ibGVtcyB3aGVuIHRoZSBmaXJzdCBpbnRlcmZhY2UgaXMgYnJvdWdodCB1cC5cbjQyNjQ6XHRcdCAqL1xuNDI2NTpcdFx0cmV0ID0gaXdsX3BjaWVfcHJlcGFyZV9jYXJkX2h3KGl3bF90cmFucyk7XG40MjY2Olx0XHRpZiAoIXJldCkge1xuNDI2NzpcdFx0XHRyZXQgPSBpd2xfdHJhbnNfYWN0aXZhdGVfbmljKGl3bF90cmFucyk7XG40MjY4Olx0XHRcdGlmIChyZXQpXG40MjY5Olx0XHRcdFx0Z290byBvdXRfZnJlZV90cmFucztcbjQyNzA6XHRcdFx0aWYgKGl3bF90cmFuc19ncmFiX25pY19hY2Nlc3MoaXdsX3RyYW5zKSkge1xuNDI3MTpcdFx0XHRcdGdldF9jcmZfaWQoaXdsX3RyYW5zLCBcdTAwMjZpbmZvKTtcbjQyNzI6XHRcdFx0XHQvKiBhbGwgZ29vZCAqL1xuNDI3MzpcdFx0XHRcdGl3bF90cmFuc19yZWxlYXNlX25pY19hY2Nlc3MoaXdsX3RyYW5zKTtcbjQyNzQ6XHRcdFx0fSBlbHNlIHtcbjQyNzU6XHRcdFx0XHRyZXQgPSAtRUlPO1xuNDI3NjpcdFx0XHRcdGdvdG8gb3V0X2ZyZWVfdHJhbnM7XG40Mjc3Olx0XHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg5NTAKCQkJCQkJCW91dHB1dDogMTU5CgkJCQkJCQl0aG91Z2h0czogNDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZz1mYWxzZTogVW5yZWFjaGFibGUgQ29kZSBpbiBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKgoKT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gTXkgYW5hbHlzaXMgaW5kaWNhdGVzIHRoYXQgdGhlIGNvZGUgbW9kaWZpY2F0aW9uLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgYHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fdW5ib3VuZF93cSwgLi4uKWAgdG8gYHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX3dxLCAuLi4pYCB3aXRoaW4gdGhlIEludGVsIFdpLUZpIGRyaXZlciwgaXMgKmZ1bmN0aW9uYWxseSogYSBjaGFuZ2UuIEhvd2V2ZXIsIGl0JiMzOTtzIHVsdGltYXRlbHkgdW5yZWFjaGFibGUgaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCBhbmQgdGh1cyBub3Qgd29ydGggZnV6emluZyBmb3Igb3VyIHB1cnBvc2VzLgoKVGhlIGNyaXRpY2FsIHBhdGggYmVnaW5zIHdpdGggYGl3bF90cmFuc19hY3RpdmF0ZV9uaWNgLCB3aGljaCBjYWxscyBgaXdsX3BvbGxfYml0c2AuIFRoaXMgZnVuY3Rpb24sIGNydWNpYWwgaGVyZSwgaXMgZGVzaWduZWQgdG8gd2FpdCBmb3IgYSBzcGVjaWZpYyBiaXQgd2l0aGluIGEgcmVnaXN0ZXIgdG8gYmUgc2V0LiBUaGUgaXNzdWUgaXMgdGhhdCB0aGUgdmlydHVhbGl6ZWQgUENJIGVudmlyb25tZW50IHRoYXQgU3l6a2FsbGVyIHByZXNlbnRzIGNhbiByZXR1cm4gcmFuZG9tIGRhdGEsIHdoaWNoIG1heSByYW5kb21seSBjYXVzZSB0aGlzIGZ1bmN0aW9uIHRvIHN1Y2NlZWQgb3IgZmFpbC4gSWYgaXQgc3VjY2VlZHMsIHRoZSBjb2RlIGNvbnRpbnVlcyB0byBgaXdsX3RyYW5zX2dyYWJfbmljX2FjY2Vzc2AsIHJlYWRzIGBDU1JfSFdfUkZfSURgLCBjYWxscyBgaXdsX3BjaV9maW5kX2Rldl9pbmZvYCwgYW5kIGZpbmFsbHkgYGl3bF9kcnZfc3RhcnRgLCB3aGljaCByZXF1ZXN0cyBmaXJtd2FyZS4gSWYgdGhlIGZpcm13YXJlIGlzbiYjMzk7dCBsb2FkZWQsIG9yIGZhaWxzIHRvIGJlIHByb3Blcmx5IGluaXRpYWxpemVkLCB0aGUgZHJpdmVyIHdpbGwgdW5iaW5kLgoKVGhlIG1vZGlmaWNhdGlvbiBvY2N1cnMgb25seSBpZiBgdHJhbnMtJmd0O29wX21vZGVgIGlzIHNldC4gR2l2ZW4gdGhlIG5lZWQgZm9yIEludGVsIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGJlIHByb3Blcmx5IGxvYWRlZCBhbmQgcGFyc2VkLCBhbmQgdGhlIHN1Y2Nlc3NmdWwgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHNwZWNpZmljIGhhcmR3YXJlIHN0YXRlIG1hY2hpbmUsIHRoaXMgY29kZSBwYXRoIGlzIHNpbXBseSBpbmFjY2Vzc2libGUgaW4gYSB2aXJ0dWFsaXplZCBTeXprYWxsZXIgZW52aXJvbm1lbnQuIFRoZSBjb21wbGV4aXR5IG9mIGVtdWxhdGluZyB0aGUgZmlybXdhcmUgbG9hZGluZyBhbmQgcGFyc2luZywgY29tYmluZWQgd2l0aCB0aGUgc3VjY2Vzc2Z1bCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiByZXF1aXJlZCB0byByZWFjaCB0aGUgY29kZSBwcmV2ZW50cyB1cyBmcm9tIGZ1enppbmcgaXQuIFRoZXJlZm9yZSwgYWNjb3JkaW5nIHRvIHRoZSBndWlkZWxpbmVzLCBJIGNhbiBjb25maWRlbnRseSByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgd29ya3F1ZXVlIHVzZWQgaW4gYGl3bF90cmFuc19yZXN0YXJ0X3drYCBmcm9tIGBzeXN0ZW1fdW5ib3VuZF93cWAgdG8gYHN5c3RlbV9kZmxfd3FgLiBIb3dldmVyLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgZWFybHkgaWYgYHRyYW5zLVx1MDAzZW9wX21vZGVgIGlzIG5vdCBzZXQuIGB0cmFucy1cdTAwM2VvcF9tb2RlYCBpcyBvbmx5IGluaXRpYWxpemVkIGFmdGVyIHRoZSBwcm9wcmlldGFyeSBJbnRlbCBXaS1GaSBmaXJtd2FyZSBpcyBzdWNjZXNzZnVsbHkgbG9hZGVkIGZyb20gdGhlIGZpbGVzeXN0ZW0gYW5kIHBhcnNlZCBieSB0aGUgZHJpdmVyLiBJbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHdpdGhvdXQgdGhlIHNwZWNpZmljIGZpcm13YXJlIGZpbGVzIGFuZCB3aXRob3V0IGEgcmVhbCBoYXJkd2FyZSBkZXZpY2UgKG9yIGEgaGlnaGx5IHNwZWNpYWxpemVkIGVtdWxhdG9yKSwgdGhlIGZpcm13YXJlIGxvYWRpbmcgd2lsbCBmYWlsLCB0aGUgZHJpdmVyIHdpbGwgdW5iaW5kLCBhbmQgdGhpcyBjb2RlIHBhdGggd2lsbCByZW1haW4gY29tcGxldGVseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIHdvcmtxdWV1ZSB1c2VkIGluIGBpd2xfdHJhbnNfcmVzdGFydF93a2AgZnJvbSBgc3lzdGVtX3VuYm91bmRfd3FgIHRvIGBzeXN0ZW1fZGZsX3dxYC4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGVhcmx5IGlmIGB0cmFucy1cdTAwM2VvcF9tb2RlYCBpcyBub3Qgc2V0LiBgdHJhbnMtXHUwMDNlb3BfbW9kZWAgaXMgb25seSBpbml0aWFsaXplZCBhZnRlciB0aGUgcHJvcHJpZXRhcnkgSW50ZWwgV2ktRmkgZmlybXdhcmUgaXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIGFuZCBwYXJzZWQgYnkgdGhlIGRyaXZlci4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRob3V0IHRoZSBzcGVjaWZpYyBmaXJtd2FyZSBmaWxlcyBhbmQgd2l0aG91dCBhIHJlYWwgaGFyZHdhcmUgZGV2aWNlIChvciBhIGhpZ2hseSBzcGVjaWFsaXplZCBlbXVsYXRvciksIHRoZSBmaXJtd2FyZSBsb2FkaW5nIHdpbGwgZmFpbCwgdGhlIGRyaXZlciB3aWxsIHVuYmluZCwgYW5kIHRoaXMgY29kZSBwYXRoIHdpbGwgcmVtYWluIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjI6MjUuMDQ4MDM3MjVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjgxNzQ4NDY2MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIHdvcmtxdWV1ZSB1c2VkIGluIGBpd2xfdHJhbnNfcmVzdGFydF93a2AgZnJvbSBgc3lzdGVtX3VuYm91bmRfd3FgIHRvIGBzeXN0ZW1fZGZsX3dxYC4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGVhcmx5IGlmIGB0cmFucy1cXHUwMDNlb3BfbW9kZWAgaXMgbm90IHNldC4gYHRyYW5zLVxcdTAwM2VvcF9tb2RlYCBpcyBvbmx5IGluaXRpYWxpemVkIGFmdGVyIHRoZSBwcm9wcmlldGFyeSBJbnRlbCBXaS1GaSBmaXJtd2FyZSBpcyBzdWNjZXNzZnVsbHkgbG9hZGVkIGZyb20gdGhlIGZpbGVzeXN0ZW0gYW5kIHBhcnNlZCBieSB0aGUgZHJpdmVyLiBJbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHdpdGhvdXQgdGhlIHNwZWNpZmljIGZpcm13YXJlIGZpbGVzIGFuZCB3aXRob3V0IGEgcmVhbCBoYXJkd2FyZSBkZXZpY2UgKG9yIGEgaGlnaGx5IHNwZWNpYWxpemVkIGVtdWxhdG9yKSwgdGhlIGZpcm13YXJlIGxvYWRpbmcgd2lsbCBmYWlsLCB0aGUgZHJpdmVyIHdpbGwgdW5iaW5kLCBhbmQgdGhpcyBjb2RlIHBhdGggd2lsbCByZW1haW4gY29tcGxldGVseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjIyOjI1LjA0ODA0NjIzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzM3MzM5NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhZmY4ZTQyOTdiMTQ4ZTg4YTFiOWNkODlkZjRlMTgzYTVhYmE5ZWMwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDcgMTg6MjI6MjMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmNcXG5pbmRleCA3M2FhZTExMjUwNDIxZi4uOTM0M2I2MjMwZTFhNDAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmNcXG5AQCAtMjM2LDcgKzIzNiw3IEBAIHN0YXRpYyB2b2lkIGl3bF90cmFuc19yZXN0YXJ0X3drKHN0cnVjdCB3b3JrX3N0cnVjdCAqd2spXFxuIFxcdG1vZGUgPSBpd2xfdHJhbnNfZGV0ZXJtaW5lX3Jlc3RhcnRfbW9kZSh0cmFucyk7XFxuIFxcdGlmIChtb2RlID09IElXTF9SRVNFVF9NT0RFX0JBQ0tPRkYpIHtcXG4gXFx0XFx0SVdMX0VSUih0cmFucywgXFxcIlRvbyBtYW55IGRldmljZSBlcnJvcnMgLSBkZWxheSBuZXh0IHJlc2V0XFxcXG5cXFwiKTtcXG4tXFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV91bmJvdW5kX3dxLCBcXHUwMDI2dHJhbnMtXFx1MDAzZXJlc3RhcnQud2ssXFxuK1xcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX3dxLCBcXHUwMDI2dHJhbnMtXFx1MDAzZXJlc3RhcnQud2ssXFxuIFxcdFxcdFxcdFxcdCAgIElXTF9UUkFOU19SRVNFVF9ERUxBWSk7XFxuIFxcdFxcdHJldHVybjtcXG4gXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyMjoyNS43MjMwOTc5NTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyNzQ5OTc3MjY4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgd29ya3F1ZXVlIHVzZWQgaW4gYGl3bF90cmFuc19yZXN0YXJ0X3drYCBmcm9tIGBzeXN0ZW1fdW5ib3VuZF93cWAgdG8gYHN5c3RlbV9kZmxfd3FgLiBIb3dldmVyLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgZWFybHkgaWYgYHRyYW5zLVxcdTAwM2VvcF9tb2RlYCBpcyBub3Qgc2V0LiBgdHJhbnMtXFx1MDAzZW9wX21vZGVgIGlzIG9ubHkgaW5pdGlhbGl6ZWQgYWZ0ZXIgdGhlIHByb3ByaWV0YXJ5IEludGVsIFdpLUZpIGZpcm13YXJlIGlzIHN1Y2Nlc3NmdWxseSBsb2FkZWQgZnJvbSB0aGUgZmlsZXN5c3RlbSBhbmQgcGFyc2VkIGJ5IHRoZSBkcml2ZXIuIEluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCB0aGUgc3BlY2lmaWMgZmlybXdhcmUgZmlsZXMgYW5kIHdpdGhvdXQgYSByZWFsIGhhcmR3YXJlIGRldmljZSAob3IgYSBoaWdobHkgc3BlY2lhbGl6ZWQgZW11bGF0b3IpLCB0aGUgZmlybXdhcmUgbG9hZGluZyB3aWxsIGZhaWwsIHRoZSBkcml2ZXIgd2lsbCB1bmJpbmQsIGFuZCB0aGlzIGNvZGUgcGF0aCB3aWxsIHJlbWFpbiBjb21wbGV0ZWx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhZmY4ZTQyOTdiMTQ4ZTg4YTFiOWNkODlkZjRlMTgzYTVhYmE5ZWMwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgNyAxODoyMjoyMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jXG5pbmRleCA3M2FhZTExMjUwNDIxZi4uOTM0M2I2MjMwZTFhNDAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jXG5AQCAtMjM2LDcgKzIzNiw3IEBAIHN0YXRpYyB2b2lkIGl3bF90cmFuc19yZXN0YXJ0X3drKHN0cnVjdCB3b3JrX3N0cnVjdCAqd2spXG4gXHRtb2RlID0gaXdsX3RyYW5zX2RldGVybWluZV9yZXN0YXJ0X21vZGUodHJhbnMpO1xuIFx0aWYgKG1vZGUgPT0gSVdMX1JFU0VUX01PREVfQkFDS09GRikge1xuIFx0XHRJV0xfRVJSKHRyYW5zLCBcIlRvbyBtYW55IGRldmljZSBlcnJvcnMgLSBkZWxheSBuZXh0IHJlc2V0XFxuXCIpO1xuLVx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3VuYm91bmRfd3EsIFx1MDAyNnRyYW5zLVx1MDAzZXJlc3RhcnQud2ssXG4rXHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX3dxLCBcdTAwMjZ0cmFucy1cdTAwM2VyZXN0YXJ0LndrLFxuIFx0XHRcdFx0ICAgSVdMX1RSQU5TX1JFU0VUX0RFTEFZKTtcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjI6MjUuNzIzMTAxMjI0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjAyNTg3OTQ2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQncyB0d2Vha2luZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuY2AuIEl0J3MgYSBzaW1wbGUgb25lLCByZWFsbHk6IGp1c3Qgc3dhcHBpbmcgb3V0IHRoZSB3b3JrcXVldWUgaW4gYGl3bF90cmFuc19yZXN0YXJ0X3drYC4gSXQncyBnb2luZyBmcm9tIGBzeXN0ZW1fdW5ib3VuZF93cWAgdG8gYHN5c3RlbV9kZmxfd3FgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiSXMgdGhpcyBldmVuIHdvcnRoIGJvdGhlcmluZyB3aXRoIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlP1wiXG5cbmBpd2x3aWZpYCDigJMgdGhhdCdzIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIHJpZ2h0PyBTbywgZmlyc3QgcXVlc3Rpb24gaXMsIGNhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIHRoaW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEludGVsIHdpcmVsZXNzIHVzdWFsbHkgZGVtYW5kcyBzcGVjaWZpYyBQQ0kgaGFyZHdhcmUuIEZ1enppbmcgUENJIGRyaXZlcnMgaXMgYSB3aG9sZSBvdGhlciBiYWxsZ2FtZSwgbm9ybWFsbHkgcmVxdWlyaW5nIGVtdWxhdGlvbiB0byBnZXQgYW55d2hlcmUuIFdpdGhvdXQgZW11bGF0aW9uLCB0aGV5J3JlIHR5cGljYWxseSBhIGZ1enppbmcgZGVhZC1lbmQuXG5cbkhhbmcgb27igKZgaXdsd2lmaWAgKmlzKiBhIFBDSSBkcml2ZXIsIGlzbid0IGl0PyBPa2F5LCBkb2VzIHN5emthbGxlciBldmVuIGRlYWwgd2l0aCB0aGlzPyBMYXN0IEkgY2hlY2tlZCwgc3l6a2FsbGVyIGNvdWxkIGZ1enogUENJIGRyaXZlcnMgdXNpbmcgdlBDSSBvciBzb21lIG90aGVyIHNpbWlsYXIgdHJpY2tlcnksIGJ1dCBpdCdzIHVzdWFsbHkgcHJldHR5IGxpbWl0ZWQgaW4gaXRzIGNvdmVyYWdlLlxuXG5CdXQsIHdhaXTigKYgdGhlIHBhdGNoICppdHNlbGYqIGlzIGp1c3QgY2hhbmdpbmcgdGhlIHdvcmtxdWV1ZS4gVGhhdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgZGlmZmVyZW5jZSBpbiBob3cgYW5kIHdoZXJlIHRoaXMgcmVzdGFydCB3b3JrIGdldHMgc2NoZWR1bGVkLiBTbywgbm93IHRoZSBxdWVzdGlvbiBib2lscyBkb3duIHRvOiBpcyB0aGlzIG5ldyB3b3JrcXVldWUgYXNzaWdubWVudCBsaWtlbHkgdG8gZXhwb3NlIGFueSBpbnRlcmVzdGluZyBuZXcgZnV6emluZyBwYXRocyBvciwgaGVhdmVuIGZvcmJpZCwgaW50cm9kdWNlIGFueSBuZXcgYnVncz9cblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIGBpd2xfdHJhbnNfcmVzdGFydF93a2AgYW5kIHNlZSB3aGF0IGl0IGRvZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MDQsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyMjozMS43NDg5ODQzNDVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyODI3ODMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF90cmFuc19yZXN0YXJ0X3drXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM9MTI3PWl3bF90cmFuc19kZXRlcm1pbmVfcmVzdGFydF9tb2RlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0yMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzoyMDI6c3RhdGljIHZvaWQgaXdsX3RyYW5zX3Jlc3RhcnRfd2soc3RydWN0IHdvcmtfc3RydWN0ICp3aylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTIwMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jPTI2Nz1zdHJ1Y3QgaXdsX3RyYW5zICppd2xfdHJhbnNfYWxsb2ModW5zaWduZWQgaW50IHByaXZfc2l6ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMjg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6Mjg5OlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZ0cmFucy1cXHUwMDNlcmVzdGFydC53aywgaXdsX3RyYW5zX3Jlc3RhcnRfd2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMjkwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYz02MTQ9dm9pZCBpd2xfdHJhbnNfc3RvcF9kZXZpY2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTYxOC1cXHQvKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6NjE5OlxcdCAqIFNlZSBhbHNvIHRoZSBjb21tZW50IGluIGl3bF90cmFuc19yZXN0YXJ0X3drKCkuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy02MjAtXFx0ICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTYyMS1cXHQgKiBXaGVuIHRoZSBvcG1vZGUgc3RvcHMgdGhlIGRldmljZSB3aGlsZSBhIHJlc2V0IGlzIHBlbmRpbmcsIHRoZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6NjIyOlxcdCAqIHdvcmtlciAoaXdsX3RyYW5zX3Jlc3RhcnRfd2spIG1pZ2h0IG5vdCBoYXZlIHJ1biB5ZXQgb3IsIG1vcmVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTYyMy1cXHQgKiBsaWtlbHksIHdpbGwgYmUgYmxvY2tlZCBvbiB0aGUgb3Btb2RlIGxvY2suIER1ZSB0byB0aGUgbG9ja2luZyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjI6MzEuOTIxODI2MTM2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA0NzgzODcyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBXaUZpIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGl3bF90cmFuc19yZXN0YXJ0X3drYCwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBmb3IgZnV6emluZywgc3BlY2lmaWNhbGx5IHdpdGggc3l6a2FsbGVyLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGUgYGl3bHdpZmlgIGRyaXZlciBpdHNlbGYgaXMgZXZlbiBhIHRhcmdldCBmb3Igc3l6a2FsbGVyLiBJIGtub3cgc3l6a2FsbGVyIGRvZXNuJ3QgaGF2ZSBjdXN0b20gaGFyZHdhcmUgZW11bGF0aW9uIGZvciBgaXdsd2lmaWAgc3BlY2lmaWNhbGx5LCBidXQgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMgY291bGQgc3RpbGwgdHJpZ2dlciBzb21lIGluaXRpYWxpemF0aW9uIG9yIGJhc2ljIGNvZGUgcGF0aHMgaW4gdGhlIGRyaXZlci4gSG93ZXZlciwgdGhpcyBwYXRjaCBpcyBhIHJlbGF0aXZlbHkgdGFyZ2V0ZWQgY2hhbmdlLCBqdXN0IGFsdGVyaW5nIHRoZSB3b3JrcXVldWUgaXQgdXNlcy4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3IgYnVpbGQgZmxhZ3MgdGhhdCBhcmUgaW1wb3J0YW50IGluIHRoaXMgY29udGV4dC4gSSBzdXNwZWN0IHRoZSBrZXkgaXMgaW4gdGhvc2UgY29uZmlncy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEzOSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjIyOjM1Ljk2OTY2NzE0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMTk2MTU4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVdMV0lGSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6Mjpjb25maWcgSVdMV0lGSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIE5leHQgR2VuIEFHTiAtIFdpcmVsZXNzLU4vQWR2YW5jZWQtTi9VbHRpbWF0ZS1OIChpd2x3aWZpKSBcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9NDc9aWYgSVdMV0lGSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy00OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NDk6Y29uZmlnIElXTFdJRklfS1VOSVRfVEVTVFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTAtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NTg6Y29uZmlnIElXTFdJRklfTEVEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01OS1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9ODQ9Y29uZmlnIElXTE1MRFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk0LSMgZG9uJ3QgY2FsbCBpdCBfTU9EVUxFIC0tIHdpbGwgY29uZnVzZSBLY29uZmlnL2ZpeGRlcC8uLi5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6OTU6Y29uZmlnIElXTFdJRklfT1BNT0RFX01PRFVMQVJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTYtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTEwNT1tZW51IFxcXCJEZWJ1Z2dpbmcgT3B0aW9uc1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMDc6Y29uZmlnIElXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA4LVxcdGJvb2wgXFxcIkVuYWJsZSBmdWxsIGRlYnVnZ2luZyBvdXRwdXQgaW4gdGhlIGl3bHdpZmkgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMxOmNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMyLVxcdGJvb2wgXFxcIml3bHdpZmkgZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTM5OmNvbmZpZyBJV0xXSUZJX0RFVklDRV9UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTE0MC1cXHRib29sIFxcXCJpd2x3aWZpIGRldmljZSBhY2Nlc3MgdHJhY2luZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjI6MzYuMTgxNjM2MzA2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQxMjY4NDE5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBc3Nlc3NpbmcgdGhlIEZ1enphYmlsaXR5IG9mIGEgQ29uZmlndXJhdGlvbiBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyB0aGUgY29uZmlnIGluIHF1ZXN0aW9uIGlzIGBJV0xXSUZJYC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBxdWVzdGlvbiBpZiBmdXp6aW5nIGl0IGlzIGV2ZW4gd29ydGh3aGlsZS4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHdvcmtxdWV1ZSBtb2RpZmljYXRpb24sIHdoaWNoIGlzIGdvb2QuIEJ1dCBpdCdzIGJ1cmllZCBpbiBhIGhhcmR3YXJlIGRyaXZlci4gQW5kIGhhcmR3YXJlIGRyaXZlcnMgYXJlIG5vdG9yaW91c2x5IGRpZmZpY3VsdCB0byBlZmZlY3RpdmVseSBmdXp6IHdpdGhvdXQgYWNjZXNzIHRvIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGEgcm9idXN0IGVtdWxhdGlvbiBlbnZpcm9ubWVudCwgYW5kIHRoZXNlIGFyZSBoYXJkIHRvIHNldCB1cC5cblxuSG9sZCBvbi4uLiBJJ20gcHJldHR5IHN1cmUgc3l6a2FsbGVyIGNhbiBmdXp6IFBDSSBkZXZpY2VzLCBjYW4ndCBpdD8gVGhhdCdzIGEgZ2FtZSBjaGFuZ2VyISBUaGlzIG1lYW5zIHRoYXQgaGFyZHdhcmUgYWNjZXNzIGlzbid0IG5lY2Vzc2FyaWx5IGEgaGFyZCBibG9ja2VyLlxuXG5BbHJpZ2h0LCBsZXQncyB6b29tIG91dCBhIGJpdC4gQmVmb3JlIGdldHRpbmcgdG9vIGRlZXAgaW50byB0aGlzIHNwZWNpZmljIGNvbmZpZywgbGV0IG1lIGp1c3QgcXVpY2tseSBzY2FuIGZvciBhbnkgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IHByb3ZpZGUgYWRkaXRpb25hbCBjb250ZXh0LiBObyBwb2ludCBpbiBtYWtpbmcgYSBkZWNpc2lvbiBiYXNlZCBvbiBvbmUgZGF0YSBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA4NywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjIyOjQwLjU5NDMyMzg0OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTg2MzA3MTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSVdMV0lGSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEyNjUgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoyOmNvbmZpZyBJV0xXSUZJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkludGVsIFdpcmVsZXNzIFdpRmkgTmV4dCBHZW4gQUdOIC0gV2lyZWxlc3MtTi9BZHZhbmNlZC1OL1VsdGltYXRlLU4gKGl3bHdpZmkpIFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy00Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NDc6aWYgSVdMV0lGSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy00OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NDk6Y29uZmlnIElXTFdJRklfS1VOSVRfVEVTVFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTAtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NTg6Y29uZmlnIElXTFdJRklfTEVEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01OS1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9ODQ9Y29uZmlnIElXTE1MRFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk0LSMgZG9uJ3QgY2FsbCBpdCBfTU9EVUxFIC0tIHdpbGwgY29uZnVzZSBLY29uZmlnL2ZpeGRlcC8uLi5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6OTU6Y29uZmlnIElXTFdJRklfT1BNT0RFX01PRFVMQVJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTYtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk5LVxcdGRlZmF1bHQgeSBpZiBJV0xNTEQ9bVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMDA6XFx0ZGVmYXVsdCB5IGlmIElXTFdJRklfS1VOSVRfVEVTVFM9bVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTA1PW1lbnUgXFxcIkRlYnVnZ2luZyBPcHRpb25zXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEwNzpjb25maWcgSVdMV0lGSV9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDgtXFx0Ym9vbCBcXFwiRW5hYmxlIGZ1bGwgZGVidWdnaW5nIG91dHB1dCBpbiB0aGUgaXdsd2lmaSBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzE6Y29uZmlnIElXTFdJRklfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzItXFx0Ym9vbCBcXFwiaXdsd2lmaSBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzk6Y29uZmlnIElXTFdJRklfREVWSUNFX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTQwLVxcdGJvb2wgXFxcIml3bHdpZmkgZGV2aWNlIGFjY2VzcyB0cmFjaW5nXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS0yLSMgY29tbW9uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTozOm9iai0kKENPTkZJR19JV0xXSUZJKVxcdCs9IGl3bHdpZmkub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUtNC1pd2x3aWZpLW9ianNcXHRcXHQrPSBpd2wtaW8ub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZT00MD1pd2x3aWZpLSQoQ09ORklHX0VGSSlcXHQrPSBmdy91ZWZpLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjQxOml3bHdpZmktJChDT05GSUdfSVdMV0lGSV9ERUJVR0ZTKSArPSBmdy9kZWJ1Z2ZzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU9NDM9aXdsd2lmaS1vYmpzICs9ICQoaXdsd2lmaS1tKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUtNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTo0NTppd2x3aWZpLSQoQ09ORklHX0lXTFdJRklfREVWSUNFX1RSQUNJTkcpICs9IGl3bC1kZXZ0cmFjZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS00Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU9NTI9b2JqLSQoQ09ORklHX0lXTE1MRClcXHQrPSBtbGQvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS01My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjU0Om9iai0kKENPTkZJR19JV0xXSUZJX0tVTklUX1RFU1RTKSArPSB0ZXN0cy9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTU1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9jZmcvYnouYz03Mj1jb25zdCBzdHJ1Y3QgaXdsX21hY19jZmcgaXdsX2J6X21hY19jZmcgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2NmZy9iei5jLTgyLX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9jZmcvYnouYzo4MzpFWFBPUlRfU1lNQk9MX0lGX0lXTFdJRklfS1VOSVQoaXdsX2J6X21hY19jZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvY2ZnL2J6LmMtODQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9NYWtlZmlsZT05PWl3bGR2bS1vYmpzXFx0XFx0Kz0gcnhvbi5vIGRldmljZXMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL01ha2VmaWxlLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL01ha2VmaWxlOjExOml3bGR2bS0kKENPTkZJR19JV0xXSUZJX0xFRFMpICs9IGxlZC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vTWFrZWZpbGU6MTI6aXdsZHZtLSQoQ09ORklHX0lXTFdJRklfREVCVUdGUykgKz0gZGVidWdmcy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vTWFrZWZpbGUtMTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaD0yMjU9c3RhdGljIGlubGluZSBib29sIGl3bF9hZHZhbmNlZF9idF9jb2V4aXN0KHN0cnVjdCBpd2xfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oLTIzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaDoyMzE6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmgtMjMyLWNvbnN0IGNoYXIgKml3bF9nZXRfdHhfZmFpbF9yZWFzb24odTMyIHN0YXR1cyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaD0zMzU9aW50IGl3bF9hbGl2ZV9zdGFydChzdHJ1Y3QgaXdsX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oLTMzNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaDozMzc6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmgtMzM4LXZvaWQgaXdsX3ByaW50X3J4X2NvbmZpZ19jbWQoc3RydWN0IGl3bF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmg9NDA3PWludCBpd2xfcmVhZF9lZXByb20oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHU4ICoqZWVwcm9tLCBzaXplX3QgKmVlcHJvbV9zaXplKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaC00MDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmg6NDA5OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmgtNDEwLXZvaWQgaXdsX2RiZ2ZzX3JlZ2lzdGVyKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwgc3RydWN0IGRlbnRyeSAqZGJnZnNfZGlyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oPTQxMj1zdGF0aWMgaW5saW5lIHZvaWQgaXdsX2RiZ2ZzX3JlZ2lzdGVyKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaC00MTMtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGRlbnRyeSAqZGJnZnNfZGlyKSB7IH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaDo0MTQ6I2VuZGlmIC8qIENPTkZJR19JV0xXSUZJX0RFQlVHRlMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9hZ24uaC00MTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmg6NDE2OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oLTQxNy0jZGVmaW5lIElXTF9ERUJVR19RVUlFVF9SRktJTEwobSwgZm10LCBhcmdzLi4uKVxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Fnbi5oPTQzMD1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmgtNDM2LX0gd2hpbGUgKDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmg6NDM3OiNlbmRpZlxcdFxcdFxcdFxcdC8qIENPTkZJR19JV0xXSUZJX0RFQlVHICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vYWduLmgtNDM4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGVidWdmcy5jPTIxNTQ9c3RhdGljIHNzaXplX3QgaXdsX2RiZ2ZzX2VjaG9fdGVzdF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RlYnVnZnMuYy0yMTcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RlYnVnZnMuYzoyMTcxOiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RlYnVnZnMuYy0yMTcyLXN0YXRpYyBzc2l6ZV90IGl3bF9kYmdmc19sb2dfZXZlbnRfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RlYnVnZnMuYz0yMzAzPURFQlVHRlNfV1JJVEVfRklMRV9PUFMoZndfcmVzdGFydCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGVidWdmcy5jOjIzMDQ6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGVidWdmcy5jLTIzMDUtREVCVUdGU19SRUFEX1dSSVRFX0ZJTEVfT1BTKGxvZ19ldmVudCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZWJ1Z2ZzLmM9MjMxMz12b2lkIGl3bF9kYmdmc19yZWdpc3RlcihzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsIHN0cnVjdCBkZW50cnkgKmRiZ2ZzX2RpcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2RlYnVnZnMuYy0yMzU1LVxcdERFQlVHRlNfQUREX0ZJTEUoZndfcmVzdGFydCwgZGlyX2RlYnVnLCAwMjAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZWJ1Z2ZzLmM6MjM1NjojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZWJ1Z2ZzLmMtMjM1Ny1cXHRERUJVR0ZTX0FERF9GSUxFKGxvZ19ldmVudCwgZGlyX2RlYnVnLCAwNjAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Rldi5oPTYyNz1zdHJ1Y3QgaXdsX3ByaXYge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2LmgtNzY1LVxcdFxcdHN0cnVjdCBzdGF0aXN0aWNzX3R4IHR4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Rldi5oOjc2NjojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Rldi5oLTc2Ny1cXHRcXHRzdHJ1Y3Qgc3RhdGlzdGljc19idF9hY3Rpdml0eSBidF9hY3Rpdml0eTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Rldi5oLTc3MS1cXHR9IHN0YXRpc3RpY3M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2Lmg6NzcyOiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2LmgtNzczLVxcdHN0cnVjdCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZXYuaC04NDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2Lmg6ODQ4OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2LmgtODQ5LVxcdC8qIGRlYnVnZnMgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL2Rldi5oLTg1My1cXHR2b2lkICp3b3dsYW5fc3JhbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZXYuaDo4NTQ6I2VuZGlmIC8qIENPTkZJR19JV0xXSUZJX0RFQlVHRlMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZXYuaC04NTUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9kZXYuaC04NjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2Lmg6ODY5OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9MRURTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vZGV2LmgtODcwLVxcdHN0cnVjdCBsZWRfY2xhc3NkZXYgbGVkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbGVkLmg9MTE9c3RydWN0IGl3bF9wcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbGVkLmgtMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbGVkLmg6MTk6I2lmZGVmIENPTkZJR19JV0xXSUZJX0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9sZWQuaC0yMC12b2lkIGl3bGFnbl9sZWRfZW5hYmxlKHN0cnVjdCBpd2xfcHJpdiAqcHJpdik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jPTQxOD1zdGF0aWMgaW50IGl3bGFnbl9tYWNfcmVzdW1lKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFjODAyMTEuYy00NDItXFx0fTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jOjQ0MzojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21hYzgwMjExLmMtNDQ0LVxcdGNvbnN0IHN0cnVjdCBmd19pbWcgKmltZztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21hYzgwMjExLmMtNDgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21hYzgwMjExLmM6NDgxOiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFjODAyMTEuYy00ODItXFx0aW1nID0gXFx1MDAyNnByaXYtXFx1MDAzZWZ3LVxcdTAwM2VpbWdbSVdMX1VDT0RFX1dPV0xBTl07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM9NTA9TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYzo1MTpNT0RVTEVfSU1QT1JUX05TKFxcXCJJV0xXSUZJXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jLTUyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jPTExMzI9c3RhdGljIHZvaWQgaXdsX3VuaW5pdF9kcnYoc3RydWN0IGl3bF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jLTExMzctXFx0aXdsX2NhbGliX2ZyZWVfcmVzdWx0cyhwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM6MTEzODojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYy0xMTM5LVxcdGtmcmVlKHByaXYtXFx1MDAzZXdvd2xhbl9zcmFtKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYz0xMTU3PXN0YXRpYyB2b2lkIGl3bF9vcHRpb25fY29uZmlnKHN0cnVjdCBpd2xfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTE1OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jOjExNTk6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jOjExNjA6XFx0SVdMX0lORk8ocHJpdiwgXFxcIkNPTkZJR19JV0xXSUZJX0RFQlVHIGVuYWJsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYy0xMTYxLSNlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jOjExNjI6XFx0SVdMX0lORk8ocHJpdiwgXFxcIkNPTkZJR19JV0xXSUZJX0RFQlVHIGRpc2FibGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTE2My0jZW5kaWZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTE2NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM6MTE2NTojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYzoxMTY2OlxcdElXTF9JTkZPKHByaXYsIFxcXCJDT05GSUdfSVdMV0lGSV9ERUJVR0ZTIGVuYWJsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYy0xMTY3LSNlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jOjExNjg6XFx0SVdMX0lORk8ocHJpdiwgXFxcIkNPTkZJR19JV0xXSUZJX0RFQlVHRlMgZGlzYWJsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYy0xMTY5LSNlbmRpZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYy0xMTcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYzoxMTcxOiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERVZJQ0VfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYzoxMTcyOlxcdElXTF9JTkZPKHByaXYsIFxcXCJDT05GSUdfSVdMV0lGSV9ERVZJQ0VfVFJBQ0lORyBlbmFibGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTE3My0jZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYzoxMTc0OlxcdElXTF9JTkZPKHByaXYsIFxcXCJDT05GSUdfSVdMV0lGSV9ERVZJQ0VfVFJBQ0lORyBkaXNhYmxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jLTExNzUtI2VuZGlmXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM9MTgxMT1pbnQgaXdsX2R1bXBfbmljX2V2ZW50X2xvZyhzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsIGJvb2wgZnVsbF9sb2csXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTg3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM6MTg3NzojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTg3OC1cXHRpZiAoYnVmKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jPTg4PXN0YXRpYyB2b2lkIGl3bGFnbl9yeF9wbV9zbGVlcF9ub3RpZihzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jLTkwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jOjkxOiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmMtOTItXFx0c3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdCA9IHJ4Yl9hZGRyKHJ4Yik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jPTEwOT1zdGF0aWMgdm9pZCBpd2xhZ25fcnhfYmVhY29uX25vdGlmKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmMtMTEzLVxcdHN0cnVjdCBpd2xhZ25fYmVhY29uX25vdGlmICpiZWFjb24gPSAodm9pZCAqKXBrdC1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jOjExNDojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jLTExNS1cXHR1MTYgc3RhdHVzID0gbGUxNl90b19jcHUoYmVhY29uLVxcdTAwM2ViZWFjb25fbm90aWZ5X2hkci5zdGF0dXMuc3RhdHVzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmM9MjM1PXN0YXRpYyB2b2lkIGl3bGFnbl9yeF9jYWxjX25vaXNlKHN0cnVjdCBpd2xfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmMtMjc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmM6Mjc2OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnguYy0yNzctLypcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmM9MzQyPXN0YXRpYyB2b2lkIGl3bGFnbl9yeF9zdGF0aXN0aWNzKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmMtMzc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmM6Mzc2OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnguYy0zNzctXFx0XFx0LyogaGFuZGxlIHRoaXMgZXhjZXB0aW9uIGRpcmVjdGx5ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jLTQxNi1cXHRtZW1jcHkoXFx1MDAyNnByaXYtXFx1MDAzZXN0YXRpc3RpY3MudHgsIHR4LCBzaXplb2YoKnR4KSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnguYzo0MTc6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jLTQxOC1cXHRpZiAoYnRfYWN0aXZpdHkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jPTQ0NT1zdGF0aWMgdm9pZCBpd2xhZ25fcnhfcmVwbHlfc3RhdGlzdGljcyhzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jLTQ1MS1cXHRpZiAobGUzMl90b19jcHUoc3RhdHMtXFx1MDAzZWZsYWcpIFxcdTAwMjYgVUNPREVfU1RBVElTVElDU19DTEVBUl9NU0spIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeC5jOjQ1MjojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4LmMtNDUzLVxcdFxcdG1lbXNldChcXHUwMDI2cHJpdi1cXHUwMDNlYWNjdW1fc3RhdHMsIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeG9uLmM9ODMyPXN0YXRpYyBpbnQgaXdsX2Z1bGxfcnhvbl9yZXF1aXJlZChzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9yeG9uLmMtODg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3J4b24uYzo4ODc6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnhvbi5jLTg4OC12b2lkIGl3bF9wcmludF9yeF9jb25maWdfY21kKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYz0yMzI9c3RhdGljIHZvaWQgaXdsX3J4X3JlcGx5X3NjYW4oc3RydWN0IGl3bF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTIzNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjIzNTojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtMjM2LVxcdHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QgPSByeGJfYWRkcihyeGIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jPTI2Mj1zdGF0aWMgdm9pZCBpd2xfcnhfc2Nhbl9yZXN1bHRzX25vdGlmKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy0yNjQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzoyNjU6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTI2Ni1cXHRzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0ID0gcnhiX2FkZHIocnhiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3N0YS5jPTEyNj1ib29sIGl3bF9pc19odDQwX3R4X2FsbG93ZWQoc3RydWN0IGl3bF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc3RhLmMtMTMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3N0YS5jOjEzMzojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3N0YS5jLTEzNC1cXHRpZiAocHJpdi1cXHUwMDNlZGlzYWJsZV9odDQwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc3RhLmM9NzMxPXZvaWQgaXdsX2RlYWxsb2NfYmNhc3Rfc3RhdGlvbnMoc3RydWN0IGl3bF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc3RhLmMtNzQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3N0YS5jOjc1MDojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zdGEuYy03NTEtc3RhdGljIHZvaWQgaXdsX2R1bXBfbHFfY21kKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R0LmM9MjMwPXN0YXRpYyB2b2lkIGl3bF9sZWdhY3lfdHRfaGFuZGxlcihzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsIHMzMiB0ZW1wLCBib29sIGZvcmNlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHQuYy0yMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHQuYzoyMzU6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHQuYy0yMzYtXFx0aWYgKCh0dC1cXHUwMDNldHRfcHJldmlvdXNfdGVtcCkgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R0LmMtMjU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R0LmM6MjU2OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R0LmMtMjU3LVxcdHR0LVxcdTAwM2V0dF9wcmV2aW91c190ZW1wID0gdGVtcDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R0LmM9MzM1PXN0YXRpYyB2b2lkIGl3bF9hZHZhbmNlX3R0X2hhbmRsZXIoc3RydWN0IGl3bF9wcml2ICpwcml2LCBzMzIgdGVtcCwgYm9vbCBmb3JjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R0LmMtMzU4LVxcdFxcdCAgICB0ZW1wIFxcdTAwM2M9IHRyYW5zYWN0aW9uLVxcdTAwM2V0dF9oaWdoKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHQuYzozNTk6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHQuYy0zNjAtXFx0XFx0XFx0aWYgKCh0dC1cXHUwMDNldHRfcHJldmlvdXNfdGVtcCkgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R0Lmg9ODU9c3RydWN0IGl3bF90dF9tZ210IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R0LmgtODktXFx0Ym9vbCBjdF9raWxsX3RvZ2dsZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90dC5oOjkwOiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R0LmgtOTEtXFx0czMyIHR0X3ByZXZpb3VzX3RlbXA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jPTI2MD1pbnQgaXdsYWduX3R4X3NrYihzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jLTI4Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jOjI4NzojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jLTI4OC1cXHRpZiAoaWVlZTgwMjExX2lzX2F1dGgoZmMpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYz04MDc9c3RhdGljIHZvaWQgaXdsYWduX2h3cmF0ZV90b190eF9jb250cm9sKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwgdTMyIHJhdGVfbl9mbGFncyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtODI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmM6ODI3OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtODI4LWNvbnN0IGNoYXIgKml3bF9nZXRfdHhfZmFpbF9yZWFzb24odTMyIHN0YXR1cylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtODY0LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jOjg2NTojZW5kaWYgLyogQ09ORklHX0lXTFdJRklfREVCVUcgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jLTg2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmM9OTIwPXN0YXRpYyB2b2lkIGl3bF9yeF9yZXBseV90eF9hZ2coc3RydWN0IGl3bF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy05ODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYzo5ODE6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy05ODItI2RlZmluZSBBR0dfVFhfU1RBVEVfRkFJTCh4KSBjYXNlIEFHR19UWF9TVEFURV8gIyMgeDogcmV0dXJuICN4XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jPTk4ND1jb25zdCBjaGFyICppd2xfZ2V0X2FnZ190eF9mYWlsX3JlYXNvbih1MTYgc3RhdHVzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy0xMDA1LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jOjEwMDY6I2VuZGlmIC8qIENPTkZJR19JV0xXSUZJX0RFQlVHICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy0xMDA3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kYmcuYz0yNDI5PXZvaWQgaXdsX2Z3X2RiZ19zdG9wX3Jlc3RhcnRfcmVjb3JkaW5nKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZGJnLmMtMjQ0Ny1cXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kYmcuYzoyNDQ4OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kYmcuYy0yNDQ5LVxcdGlmICghcmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RiZy5oPTE3OT12b2lkIGl3bF9md19kYmdfc3RvcF9yZXN0YXJ0X3JlY29yZGluZyhzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RiZy5oLTE4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RiZy5oOjE4MzojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZGJnLmgtMTg0LXN0YXRpYyBpbmxpbmUgdm9pZCBpd2xfZndfc2V0X2RiZ19yZWNfb24oc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kYmcuaD0yMzU9aW50IGl3bF9md19zZW5kX3RpbWVzdGFtcF9tYXJrZXJfY21kKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kYmcuaC0yMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kYmcuaDoyMzc6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RiZy5oLTIzOC1zdGF0aWMgaW5saW5lIHZvaWQgaXdsX2Z3X2NhbmNlbF90aW1lc3RhbXAoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kYmcuaD0yNjk9c3RhdGljIGlubGluZSB2b2lkIGl3bF9md19yZXN1bWVfdGltZXN0YW1wKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCkge31cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RiZy5oLTI3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RiZy5oOjI3MTojZW5kaWYgLyogQ09ORklHX0lXTFdJRklfREVCVUdGUyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZGJnLmgtMjcyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kZWJ1Z2ZzLmgtOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RlYnVnZnMuaDo5OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kZWJ1Z2ZzLmgtMTAtdm9pZCBpd2xfZndydF9kYmdmc19yZWdpc3RlcihzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2RlYnVnZnMuaD0xND1zdGF0aWMgaW5saW5lIHZvaWQgaXdsX2Z3cnRfZGJnZnNfcmVnaXN0ZXIoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kZWJ1Z2ZzLmgtMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9kZWJ1Z2ZzLmg6MTc6I2VuZGlmIC8qIENPTkZJR19JV0xXSUZJX0RFQlVHRlMgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcnVudGltZS5oPTE0OD1zdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmgtMTkzLVxcdHN0cnVjdCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmg6MTk0OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmgtMTk1LVxcdFxcdHN0cnVjdCBkZWxheWVkX3dvcmsgd2s7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3J1bnRpbWUuaC0xOTktXFx0fSB0aW1lc3RhbXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmg6MjAwOiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmgtMjAxLVxcdGJvb2wgdHBjX2VuYWJsZWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmg6MjAyOiNlbmRpZiAvKiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmgtMjAzLVxcdHN0cnVjdCBpd2xfc2FyX3Byb2ZpbGUgc2FyX3Byb2ZpbGVzW0JJT1NfU0FSX01BWF9QUk9GSUxFX05VTV07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaD01MTM9c3RydWN0IGl3bF9kZXZfaW5mbyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaC01MzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtY29uZmlnLmg6NTMyOiNpZiBJU19FTkFCTEVEKENPTkZJR19JV0xXSUZJX0tVTklUX1RFU1RTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWNvbmZpZy5oLTUzMy1leHRlcm4gY29uc3Qgc3RydWN0IGl3bF9kZXZfaW5mbyBpd2xfZGV2X2luZm9fdGFibGVbXTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmM9NjQ9SVdMX0VYUE9SVF9TWU1CT0woX19pd2xfZXJyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5jLTY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmM6NjY6I2lmIGRlZmluZWQoQ09ORklHX0lXTFdJRklfREVCVUcpIHx8IGRlZmluZWQoQ09ORklHX0lXTFdJRklfREVWSUNFX1RSQUNJTkcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuYy02Ny12b2lkIF9faXdsX2RiZyhzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5jLTc3LVxcdHZhZi52YSA9IFxcdTAwMjZhcmdzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmM6Nzg6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuYy03OS1cXHRpZiAoaXdsX2hhdmVfZGVidWdfbGV2ZWwobGV2ZWwpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oPTE2PXN0YXRpYyBpbmxpbmUgYm9vbCBpd2xfaGF2ZV9kZWJ1Z19sZXZlbCh1MzIgbGV2ZWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaC0xNy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaDoxODojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oLTE5LVxcdHJldHVybiBpd2x3aWZpX21vZF9wYXJhbXMuZGVidWdfbGV2ZWwgXFx1MDAyNiBsZXZlbDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmg9Mzc9dm9pZCBfX2l3bF9jcml0KHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqZm10LCAuLi4pIF9fcHJpbnRmKDIsIDMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaC02OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oOjcwOiNpZiBkZWZpbmVkKENPTkZJR19JV0xXSUZJX0RFQlVHKSB8fCBkZWZpbmVkKENPTkZJR19JV0xXSUZJX0RFVklDRV9UUkFDSU5HKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmgtNzEtdm9pZCBfX2l3bF9kYmcoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaD04Mz1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaC05OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oOjEwMDojaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oLTEwMS0jZGVmaW5lIGl3bF9wcmludF9oZXhfZHVtcChtLCBsZXZlbCwgcCwgbGVuKVxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oPTEwMj1kbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oLTEwOC0jZGVmaW5lIGl3bF9wcmludF9oZXhfZHVtcChtLCBsZXZlbCwgcCwgbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmg6MTA5OiNlbmRpZlxcdFxcdFxcdFxcdC8qIENPTkZJR19JV0xXSUZJX0RFQlVHICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaC0xMTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oLTEyNy0gKlxcdC9zeXMvbW9kdWxlL2l3bHdpZmkvcGFyYW1ldGVycy9kZWJ1Z1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmg6MTI4OiAqIHdoZW4gQ09ORklHX0lXTFdJRklfREVCVUc9eS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZWJ1Zy5oLTEyOS0gKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRlYnVnLmgtMTMwLSAqXFx0L3N5cy9rZXJuZWwvZGVidWcvcGh5MC9pd2x3aWZpL2RlYnVnL2RlYnVnX2xldmVsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaDoxMzE6ICogd2hlbiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTPXkuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGVidWcuaC0xMzItICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWRhdGEuaC04LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWRhdGEuaDo5OiNpZiAhZGVmaW5lZChfX0lXTFdJRklfREVWSUNFX1RSQUNFX0RBVEEpIHx8IGRlZmluZWQoVFJBQ0VfSEVBREVSX01VTFRJX1JFQUQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtZGF0YS5oOjEwOiNkZWZpbmUgX19JV0xXSUZJX0RFVklDRV9UUkFDRV9EQVRBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtZGF0YS5oLTExLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtZGF0YS5oPTM3PVRSQUNFX0VWRU5UKGl3bHdpZmlfZGV2X3J4X2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1kYXRhLmgtNTItKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1kYXRhLmg6NTM6I2VuZGlmIC8qIF9fSVdMV0lGSV9ERVZJQ0VfVFJBQ0VfREFUQSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWRhdGEuaC01NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWlvLmgtNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1pby5oOjg6I2lmICFkZWZpbmVkKF9fSVdMV0lGSV9ERVZJQ0VfVFJBQ0VfSU8pIHx8IGRlZmluZWQoVFJBQ0VfSEVBREVSX01VTFRJX1JFQUQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtaW8uaDo5OiNkZWZpbmUgX19JV0xXSUZJX0RFVklDRV9UUkFDRV9JT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWlvLmgtMTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1pby5oPTE3Mj1UUkFDRV9FVkVOVChpd2x3aWZpX2Rldl9pY3RfcmVhZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWlvLmgtMTg3LSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtaW8uaDoxODg6I2VuZGlmIC8qIF9fSVdMV0lGSV9ERVZJQ0VfVFJBQ0VfSU8gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1pby5oLTE4OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWl3bHdpZmkuaC05LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWl3bHdpZmkuaDoxMDojaWYgIWRlZmluZWQoX19JV0xXSUZJX0RFVklDRV9UUkFDRV9JV0xXSUZJKSB8fCBkZWZpbmVkKFRSQUNFX0hFQURFUl9NVUxUSV9SRUFEKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWl3bHdpZmkuaDoxMTojZGVmaW5lIF9fSVdMV0lGSV9ERVZJQ0VfVFJBQ0VfSVdMV0lGSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWl3bHdpZmkuaC0xMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLWl3bHdpZmkuaD0xMTI9VFJBQ0VfRVZFTlQoaXdsd2lmaV9kZXZfdWNvZGVfZXZlbnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1pd2x3aWZpLmgtMTMwLSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtaXdsd2lmaS5oOjEzMTojZW5kaWYgLyogX19JV0xXSUZJX0RFVklDRV9UUkFDRV9JV0xXSUZJICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtaXdsd2lmaS5oLTEzMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLW1zZy5oLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtbXNnLmg6NzojaWYgIWRlZmluZWQoX19JV0xXSUZJX0RFVklDRV9UUkFDRV9NU0cpIHx8IGRlZmluZWQoVFJBQ0VfSEVBREVSX01VTFRJX1JFQUQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtbXNnLmg6ODojZGVmaW5lIF9fSVdMV0lGSV9ERVZJQ0VfVFJBQ0VfTVNHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtbXNnLmgtOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLW1zZy5oPTQ5PVRSQUNFX0VWRU5UKGl3bHdpZmlfZGJnLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtbXNnLmgtNjQtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1tc2cuaDo2NTojZW5kaWYgLyogX19JV0xXSUZJX0RFVklDRV9UUkFDRV9NU0cgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS1tc2cuaC02Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLXVjb2RlLmgtNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS11Y29kZS5oOjc6I2lmICFkZWZpbmVkKF9fSVdMV0lGSV9ERVZJQ0VfVFJBQ0VfVUNPREUpIHx8IGRlZmluZWQoVFJBQ0VfSEVBREVSX01VTFRJX1JFQUQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtdWNvZGUuaDo4OiNkZWZpbmUgX19JV0xXSUZJX0RFVklDRV9UUkFDRV9VQ09ERVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLXVjb2RlLmgtOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLXVjb2RlLmg9MzU9VFJBQ0VfRVZFTlQoaXdsd2lmaV9kZXZfdWNvZGVfd3JhcF9ldmVudCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLXVjb2RlLmgtNTQtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS11Y29kZS5oOjU1OiNlbmRpZiAvKiBfX0lXTFdJRklfREVWSUNFX1RSQUNFX1VDT0RFICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UtdWNvZGUuaC01Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmgtOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS5oOjk6I2lmbmRlZiBfX0lXTFdJRklfREVWSUNFX1RSQUNFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UuaDoxMDojZGVmaW5lIF9fSVdMV0lGSV9ERVZJQ0VfVFJBQ0VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS5oLTExLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9za2J1ZmYuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmg9NDk9c3RhdGljIGlubGluZSBzaXplX3QgaXdsX3J4X3RyYWNlX2xlbihjb25zdCBzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmgtNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UuaDo3OTojaWYgIWRlZmluZWQoQ09ORklHX0lXTFdJRklfREVWSUNFX1RSQUNJTkcpIHx8IGRlZmluZWQoX19DSEVDS0VSX18pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UuaC04MC0jdW5kZWYgVFJBQ0VfRVZFTlRcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmg9ODc9c3RhdGljIGlubGluZSB2b2lkIHRyYWNlXyAjIyBuYW1lKHByb3RvKSB7fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UuaC05OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS5oOjk5OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERVZJQ0VfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmgtMTAwLURFQ0xBUkVfVFJBQ0VQT0lOVChpd2x3aWZpX2Rldl9yeCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS5oPTEwNj1zdGF0aWMgaW5saW5lIHZvaWQgbWF5YmVfdHJhY2VfaXdsd2lmaV9kZXZfcngoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS5oLTEwOC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UuaDoxMDk6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFVklDRV9UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZGV2dHJhY2UuaC0xMTAtXFx0aWYgKHRyYWNlcG9pbnRfZW5hYmxlZChpd2x3aWZpX2Rldl9yeCkgfHxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRldnRyYWNlLmgtMTE0LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kZXZ0cmFjZS5oOjExNTojZW5kaWYgLyogX19JV0xXSUZJX0RFVklDRV9UUkFDRSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9MzU9TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjM3OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMzgtc3RhdGljIHN0cnVjdCBkZW50cnkgKml3bF9kYmdmc19yb290O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9NTU9c3RydWN0IGl3bF9kcnYge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6Njg6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy02OS1cXHRzdHJ1Y3QgZGVudHJ5ICpkYmdmc19kcnY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYz0xNTY4PV9pd2xfb3BfbW9kZV9zdGFydChzdHJ1Y3QgaXdsX2RydiAqZHJ2LCBzdHJ1Y3QgaXdsd2lmaV9vcG1vZGVfdGFibGUgKm9wKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTU3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoxNTgwOiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTU4MS1cXHRcXHRkcnYtXFx1MDAzZWRiZ2ZzX29wX21vZGUgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIob3AtXFx1MDAzZW5hbWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xNTk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjE1OTU6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xNTk2LVxcdFxcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShkcnYtXFx1MDAzZWRiZ2ZzX29wX21vZGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9MTYwOT1zdGF0aWMgdm9pZCBfaXdsX29wX21vZGVfc3RvcChzdHJ1Y3QgaXdsX2RydiAqZHJ2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTYxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYzoxNjE5OiNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTYyMC1cXHRcXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoZHJ2LVxcdTAwM2VkYmdmc19vcF9tb2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTE5NDg9c3RydWN0IGl3bF9kcnYgKml3bF9kcnZfc3RhcnQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xOTY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjE5NjU6I2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xOTY2LVxcdC8qIENyZWF0ZSB0aGUgZGV2aWNlIGRlYnVnZnMgZW50cmllcy4gKi9cXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyMjo0MC43NTI5NjQwMDFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTYyMDI2MDk4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEludGVsIFdpcmVsZXNzIERyaXZlciBSZXN0YXJ0IE1lY2hhbmlzbSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2UgdGhlIGtleSBmdW5jdGlvbiB3ZSdyZSBjb25jZXJuZWQgd2l0aCBoZXJlIGlzIGBpd2xfdHJhbnNfcmVzdGFydF93a2AuIFJpZ2h0LCBiZWNhdXNlIHN5emthbGxlcidzIGZ1enppbmcgUENJIGRldmljZXMsIGl0J3MgcHJvYmFibHkgbWVzc2luZyB3aXRoIFBDSSBjb25maWcgc3BhY2UgYW5kIG1lbW9yeS1tYXBwZWQgSS9PLCB3aGljaCBpcyB3aGVyZSBhIGxvdCBvZiB0aGVzZSBkcml2ZXIgYnVncyB0ZW5kIHRvIHBvcCB1cC4gVGhlIHJlYWwgcXVlc3Rpb24gaXM6IGNhbiB3ZSBhY3R1YWxseSAqaGl0KiBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgIHRocm91Z2ggdGhpcyBmdXp6aW5nIHByb2Nlc3M/XG5cbkxldCBtZSBqdXN0IGNoZWNrIHdoZXJlIGl0J3MgYmVpbmcgY2FsbGVkIGZyb20uIEFoLCBpdCBsb29rcyBsaWtlIGl0J3MgYSBkZWxheWVkIHdvcmssIHNwZWNpZmljYWxseSBgdHJhbnMtXHUwMDNlcmVzdGFydC53a2AuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0IHByb2JhYmx5IGhhbmRsZXMgc29tZSBzb3J0IG9mIHJlY292ZXJ5IG9yIHJlc3RhcnQgbG9naWMuIFNvLCBpdCAqaXMqIGNhbGxlZCBmcm9tIGBpd2xfdHJhbnNfcmVzdGFydF93a2AgaXRzZWxmLCBsaWtlbHkgZm9yIGJhY2tvZmYgc2NlbmFyaW9zLiBJJ2xsIG5lZWQgdG8gZGlnIGRlZXBlciBhbmQgc2VlIGlmIHRoZXJlIGFyZSBvdGhlciBwbGFjZXMgd2hlcmUgYHRyYW5zLVx1MDAzZXJlc3RhcnQud2tgIGlzIGJlaW5nIHF1ZXVlZC4gVGhpcyB3aWxsIGhlbHAgbWUgdG8gZGV0ZXJtaW5lIGFsbCB0aGUgdHJpZ2dlciBwb2ludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MDA4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjIzOjE2LjM3MzIyOTQ1OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI4NTk2MjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRyYW5zLVxcdTAwM2VyZXN0YXJ0LndrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM9MjAyPXN0YXRpYyB2b2lkIGl3bF90cmFuc19yZXN0YXJ0X3drKHN0cnVjdCB3b3JrX3N0cnVjdCAqd2spXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTIzOC1cXHRcXHRJV0xfRVJSKHRyYW5zLCBcXFwiVG9vIG1hbnkgZGV2aWNlIGVycm9ycyAtIGRlbGF5IG5leHQgcmVzZXRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6MjM5OlxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX3dxLCBcXHUwMDI2dHJhbnMtXFx1MDAzZXJlc3RhcnQud2ssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0yNDAtXFx0XFx0XFx0XFx0ICAgSVdMX1RSQU5TX1JFU0VUX0RFTEFZKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM9MjY3PXN0cnVjdCBpd2xfdHJhbnMgKml3bF90cmFuc19hbGxvYyh1bnNpZ25lZCBpbnQgcHJpdl9zaXplLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0yODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzoyODk6XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNnRyYW5zLVxcdTAwM2VyZXN0YXJ0LndrLCBpd2xfdHJhbnNfcmVzdGFydF93ayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0yOTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jPTI5ND12b2lkIGl3bF90cmFuc19mcmVlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMjk1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjI5NjpcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNnRyYW5zLVxcdTAwM2VyZXN0YXJ0LndrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTI5Ny19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jPTQxMj12b2lkIGl3bF90cmFuc19vcF9tb2RlX2xlYXZlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy00MjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzo0MjE6XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZ0cmFucy1cXHUwMDNlcmVzdGFydC53ayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy00MjItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oPTEwMDI9c3RhdGljIGlubGluZSB2b2lkIGl3bF90cmFuc19zY2hlZHVsZV9yZXNldChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtMTAyMS1cXHRcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNnRyYW5zLVxcdTAwM2VzdGF0dXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg6MTAyMjpcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF93cSwgXFx1MDAyNnRyYW5zLVxcdTAwM2VyZXN0YXJ0LndrLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTEwMjMtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyMzoxNy4wMDE4MzUxNDhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjAyNDk0ODk0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXRgIENoYW5nZSoqXG5cbk9rYXksIHNvIHRoaXMgYGl3bF90cmFuc19zY2hlZHVsZV9yZXNldGAgZnVuY3Rpb24gaXMgYmVpbmcgcXVldWVkLCB0aGF0IG11Y2ggaXMgY2xlYXIuIEJ1dCBpcyB0aGlzIGEgcmVhbCwgZnVuY3Rpb25hbCBjaGFuZ2U/IFllcywgaXQncyBtb2RpZnlpbmcgdGhlIHdvcmtxdWV1ZSwgdGhhdOKAmXMgc2lnbmlmaWNhbnQuIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciBpdCdzIHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZy4gSG9uZXN0bHksIHRoZSBjaGFuZ2UgaXRzZWxmIHNlZW1zIHF1aXRlIHNtYWxsIGFuZCB2ZXJ5IHNwZWNpZmljIHRvIHRoZSBzY2hlZHVsaW5nIG9mIGEgaGFyZHdhcmUgcmVzZXQgd2l0aGluIHRoaXMgcGFydGljdWxhciBkcml2ZXIuXG5cbkNhbiBJIGV2ZW4gcmVhY2ggdGhpcyBsb2dpYyBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQ/IE5vdywgc3l6a2FsbGVyICpkb2VzKiBmdXp6IFBDSSBkZXZpY2VzLCB3aGljaCBpcyBwcm9taXNpbmcuIEkga25vdyB0aGVyZSdzIHRoYXQgYHN5el9wY2lfZGV2aWNlYCBjYWxsIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBidXQgaXQncyBvZnRlbiBub3QgdmVyeSBlZmZlY3RpdmUgb24gY29tcGxleCBkcml2ZXJzIGxpa2UgYGl3bHdpZmlgIHVubGVzcyBhIHZlcnkgc3BlY2lmaWMgZW11bGF0b3IgaXMgdXNlZCwgd2hpY2ggSSBkb24ndCByZWNhbGwgc2VlaW5nLiBTdGlsbCwgc2luY2UgaXQgKmlzKiBhIFBDSSBkcml2ZXIsIEkgaGF2ZSB0byBhc3N1bWUgaXQncyB0aGVvcmV0aWNhbGx5IHJlYWNoYWJsZS5cblxuV2FpdCBhIHNlY29uZCwgdGhlcmUncyBhIGh1Z2UgY2F2ZWF0IGhlcmUuIGBpd2x3aWZpYCBpcyBhIGZpcm13YXJlLWRlcGVuZGVudCBkcml2ZXIsIGlzbuKAmXQgaXQ/IFdpdGhvdXQgdGhlIGZpcm13YXJlIGxvYWRlZCBwcm9wZXJseSwgdGhlIGRldmljZSBtaWdodCBqdXN0IGZhaWwgZWFybHkgaW4gdGhlIHByb2JlIHNlcXVlbmNlIGFuZCBuZXZlciBldmVuIGdldCB0byB0aGlzIHJlc2V0IGxvZ2ljLiBTbywgdGhlIG1vcmUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzLCBjYW4gSSByZWFjaCBgaXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0YCAqd2l0aG91dCogdGhlIGZpcm13YXJlPyBJIG5lZWQgdG8gY2hlY2sgdGhhdCBiZWZvcmUgSSBzcGVuZCBtdWNoIHRpbWUgb24gdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgxMjMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjM6MjMuMDI2Nzg4MjY5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzQyOTE1NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg9MTAwMD1pd2xfdHJhbnNfcmVsZWFzZV9uaWNfYWNjZXNzKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTEwMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaDoxMDAyOnN0YXRpYyBpbmxpbmUgdm9pZCBpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0xMDAzLVxcdFxcdFxcdFxcdFxcdCAgICBlbnVtIGl3bF9md19lcnJvcl90eXBlIHR5cGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oPTEwMjU9c3RhdGljIGlubGluZSB2b2lkIGl3bF90cmFuc19md19lcnJvcihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtMTAzNC1cXHRcXHRpd2xfb3BfbW9kZV9uaWNfZXJyb3IodHJhbnMtXFx1MDAzZW9wX21vZGUsIHR5cGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg6MTAzNTpcXHRcXHRpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXQodHJhbnMsIHR5cGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtMTAzNi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3J4LmM9MTgzNz1zdGF0aWMgdm9pZCBpd2xfdHJhbnNfcGNpZV9oYW5kbGVfcmVzZXRfaW50ZXJydXB0KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9yeC5jLTE4ODItXFx0XFx0XFx0dHJhbnMtXFx1MDAzZXN0YXRlID0gSVdMX1RSQU5TX05PX0ZXO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvcnguYzoxODgzOlxcdFxcdFxcdGl3bF90cmFuc19zY2hlZHVsZV9yZXNldCh0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3J4LmMtMTg4NC1cXHRcXHRcXHRcXHRcXHRcXHQgSVdMX0VSUl9UWVBFX1RPUF9SRVNFVF9CWV9CVCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3J4LmM9MjI2Mz1pcnFyZXR1cm5fdCBpd2xfcGNpZV9pcnFfbXNpeF9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvcnguYy0yMzcyLVxcdFxcdFxcdFxcdFxcdCAgICAgIElXTF9FUlJfVFlQRV9UT1BfRkFUQUxfRVJST1IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvcnguYzoyMzczOlxcdFxcdFxcdGl3bF90cmFuc19zY2hlZHVsZV9yZXNldCh0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3J4LmMtMjM3NC1cXHRcXHRcXHRcXHRcXHRcXHQgSVdMX0VSUl9UWVBFX1RPUF9GQVRBTF9FUlJPUik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLWdlbjIuYz01MDQ9aW50IGl3bF90cmFuc19wY2llX2dlbjJfc3RhcnRfZncoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLWdlbjIuYy02MjMtXFx0XFx0XFx0XFx0XFx0ICAgICAgSVdMX0VSUl9UWVBFX1RPUF9SRVNFVF9GQUlMRUQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMtZ2VuMi5jOjYyNDpcXHRcXHRcXHRpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXQodHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy1nZW4yLmMtNjI1LVxcdFxcdFxcdFxcdFxcdFxcdCBJV0xfRVJSX1RZUEVfVE9QX1JFU0VUX0ZBSUxFRCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3R4LWdlbjIuYz0xMTk3PWludCBpd2xfcGNpZV9nZW4yX2VucXVldWVfaGNtZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHgtZ2VuMi5jLTEyOTYtXFx0XFx0XFx0XFx0ICAgICAgSVdMX0VSUl9UWVBFX0NNRF9RVUVVRV9GVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3R4LWdlbjIuYzoxMjk3OlxcdFxcdGl3bF90cmFuc19zY2hlZHVsZV9yZXNldCh0cmFucywgSVdMX0VSUl9UWVBFX0NNRF9RVUVVRV9GVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3R4LWdlbjIuYy0xMjk4LVxcdFxcdGlkeCA9IC1FTk9TUEM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3R4LmM9MTM0Mz1pbnQgaXdsX3BjaWVfZW5xdWV1ZV9oY21kKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90eC5jLTE0NTEtXFx0XFx0XFx0XFx0ICAgICAgSVdMX0VSUl9UWVBFX0NNRF9RVUVVRV9GVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3R4LmM6MTQ1MjpcXHRcXHRpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXQodHJhbnMsIElXTF9FUlJfVFlQRV9DTURfUVVFVUVfRlVMTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90eC5jLTE0NTMtXFx0XFx0aWR4ID0gLUVOT1NQQztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjM6MjMuMTYxMDg3MTg0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg0NjUzMzY2ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgaXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0YCBQYXRjaCoqXG5cbk9rYXksIHNvIGBpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXRgIGlzIGJlaW5nIGNhbGxlZCBkdWUgdG8gZXJyb3JzIHBvdGVudGlhbGx5IHRyaWdnZXJlZCBieSBQQ0kgZnV6emluZyBvciBpbnRlcnJ1cHQgZnV6emluZyDigJMgdGhhdCdzIHRoZSBjb250ZXh0LiBUaGUgcGF0Y2ggaXRzZWxmIGlzIGluY3JlZGlibHkgc2ltcGxlOiBpdCdzIGEgb25lLWxpbmUgY2hhbmdlLCBzd2FwcGluZyBgc3lzdGVtX3VuYm91bmRfd3FgIGZvciBgc3lzdGVtX2RmbF93cWAuICBJcyB0aGlzIGV2ZW4gd29ydGggYm90aGVyaW5nIHdpdGggaW4gdGVybXMgb2YgZnV6emluZz8gSXQgZG9lc24ndCBpbnRyb2R1Y2UgYW55ICpuZXcqIGxvZ2ljLCBqdXN0IGNoYW5nZXMgd2hlcmUgYSBkZWxheWVkIHdvcmsgaXRlbSBnZXRzIHNjaGVkdWxlZC4gIFN5emthbGxlciBwcm9iYWJseSB3b24ndCBmaW5kIGJ1Z3MgZGlyZWN0bHkgcmVsYXRlZCB0byAqdGhpcyogY2hhbmdlIHVubGVzcyBpdCBleHBvc2VzIG9yIGZpeGVzIGEgcmFjZSBjb25kaXRpb24sIGFuZCB0aGF0J3Mgbm90IG9idmlvdXMgZnJvbSBhIGdsYW5jZS5cblxuQnV0IGxldCdzIGxvb2sgYXQgdGhlIGluc3RydWN0aW9ucywgd2hpY2ggc2F5IG5vdCB0byBmdXp6IHRoaXMgaWYgaXQncyBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgZGVjb3JhdGlvbiwgbnVtZXJpYyBjaGFuZ2VzIHdpdGhvdXQgZmxvdyBhbHRlcmF0aW9uLCBvciB1bnJlYWNoYWJsZSBjb2RlLiAgSXMgdGhpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlPyBZZXMsIGNoYW5naW5nIHRoZSB3b3JrcXVldWUgKmlzKiBmdW5jdGlvbmFsOyBkaWZmZXJlbnQgd29ya3F1ZXVlcyBoYXZlIGRpZmZlcmVudCBwcm9wZXJ0aWVzLiAgSXMgaXQgaW1wb3NzaWJsZSB0byByZWFjaD8gYGl3bHdpZmlgIGlzIGEgUENJIGRyaXZlciwgc28gUENJIGZ1enppbmcgbWFrZXMgaXQgcmVhY2hhYmxlLiBBbmQgaXQncyByZWFsIGhhcmR3YXJlLCBub3QgZW11bGF0ZWQuXG5cbk5vdywgY2FuIGl0IGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVU/IFN5emthbGxlciBoYXMgYHN5el9wY2lfZGV2aWNlYCwgd2hpY2ggaXMgcHJvbWlzaW5nLiBUaGUgcHJvYmxlbSBpcyBgaXdsd2lmaWAgKnJlcXVpcmVzKiBmaXJtd2FyZS4gSWYgdGhlIGZpcm13YXJlIGlzbid0IHByZXNlbnQsIHRoZSBkcml2ZXIgYmFpbHMgb3V0IGVhcmx5IGluIGBpd2xfcGNpX3Byb2JlYC4gU28gSSBuZWVkIHRvIGRpZyBpbnRvIGBpd2xfcGNpX3Byb2JlYCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTk2MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyMzozMS42MjY0MjczOFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQxMDg3NTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9wY2lfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtMzItICogVGhpcyBjb21wb25lbnQgaW1wbGVtZW50cyB0aGUgc3lzdGVtIGZsb3dzIHN1Y2ggYXMgYnVzIGVudW1lcmF0aW9uLCBidXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaDozMzogKiByZW1vdmFsLiBCdXMgZGVwZW5kZW50IHBhcnRzIG9mIHN5c3RlbSBmbG93cyAoc3VjaCBhcyBpd2xfcGNpX3Byb2JlKSBhcmUgaW5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC0zNC0gKiBidXMgc3BlY2lmaWMgZmlsZXMgKHRyYW5zcG9ydCBmaWxlcykuIFRoaXMgaXMgdGhlIGNvZGUgdGhhdCBpcyBjb21tb24gYW1vbmdcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYz0xMTQ3PUVYUE9SVF9TWU1CT0xfSUZfSVdMV0lGSV9LVU5JVChpd2xfcGNpX2ZpbmRfZGV2X2luZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYzoxMTQ5OnN0YXRpYyBpbnQgaXdsX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTE1MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM9MTMzOD1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaXdsX3BjaV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTM0MC1cXHQuaWRfdGFibGUgPSBpd2xfaHdfY2FyZF9pZHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jOjEzNDE6XFx0LnByb2JlID0gaXdsX3BjaV9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTM0Mi1cXHQucmVtb3ZlID0gaXdsX3BjaV9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjIzOjMxLjg2NzUyODY1M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDc1ODA1MjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBGaXJtd2FyZSBMb2FkaW5nIE1lY2hhbmlzbSoqXG5cbk9rYXksIHNvIEkgd2FudCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIEludGVsIHdpcmVsZXNzIGRyaXZlciBoYW5kbGVzIGZpcm13YXJlIGxvYWRpbmcuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBgaXdsX3BjaV9wcm9iZWAgZnVuY3Rpb24uIFRoYXQncyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCwgcmlnaHQ/IEl0J3Mgd2hlcmUgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbiBoYXBwZW5zLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGlzIGhhbmRsZWQgd2l0aGluIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHksIG9yIGlmIGl0J3MgZGVsZWdhdGVkIHRvIGEgaGVscGVyIGZ1bmN0aW9uIGNhbGxlZCBkdXJpbmcgdGhlIHByb2JlLiBJJ20gaG9waW5nIEkgY2FuIGxvY2F0ZSB0aGUgZmlybXdhcmUgbG9hZGluZyBzZXF1ZW5jZSBxdWlja2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTIyMywiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjIzOjM1LjM0MzMzOTMwMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzM0MTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTQ5LFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTE0OTpcXHRzdGF0aWMgaW50IGl3bF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuMTE1MDpcXHR7XFxuMTE1MTpcXHRcXHRjb25zdCBzdHJ1Y3QgaXdsX21hY19jZmcgKm1hY19jZmcgPSAodm9pZCAqKWVudC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuMTE1MjpcXHRcXHR1OCBfX2lvbWVtICpod19iYXNlO1xcbjExNTM6XFx0XFx0dTMyIGJhcjAsIGh3X3JldjtcXG4xMTU0OlxcdFxcdGludCByZXQ7XFxuMTE1NTpcXHRcXG4xMTU2OlxcdFxcdC8qIHJlYXNzaWduIG91ciBCQVIgMCBpZiBpbnZhbGlkIGR1ZSB0byBwb3NzaWJsZSBydW50aW1lIFBNIHJhY2VzICovXFxuMTE1NzpcXHRcXHRwY2lfcmVhZF9jb25maWdfZHdvcmQocGRldiwgUENJX0JBU0VfQUREUkVTU18wLCBcXHUwMDI2YmFyMCk7XFxuMTE1ODpcXHRcXHRpZiAoYmFyMCA9PSBQQ0lfQkFTRV9BRERSRVNTX01FTV9UWVBFXzY0KSB7XFxuMTE1OTpcXHRcXHRcXHRyZXQgPSBwY2lfYXNzaWduX3Jlc291cmNlKHBkZXYsIDApO1xcbjExNjA6XFx0XFx0XFx0aWYgKHJldClcXG4xMTYxOlxcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuMTE2MjpcXHRcXHR9XFxuMTE2MzpcXHRcXG4xMTY0OlxcdFxcdHJldCA9IHBjaW1fZW5hYmxlX2RldmljZShwZGV2KTtcXG4xMTY1OlxcdFxcdGlmIChyZXQpXFxuMTE2NjpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjExNjc6XFx0XFxuMTE2ODpcXHRcXHRwY2lfc2V0X21hc3RlcihwZGV2KTtcXG4xMTY5OlxcdFxcbjExNzA6XFx0XFx0cmV0ID0gcGNpbV9yZXF1ZXN0X2FsbF9yZWdpb25zKHBkZXYsIERSVl9OQU1FKTtcXG4xMTcxOlxcdFxcdGlmIChyZXQpIHtcXG4xMTcyOlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIlJlcXVlc3RpbmcgYWxsIFBDSSBCQVJzIGZhaWxlZC5cXFxcblxcXCIpO1xcbjExNzM6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4xMTc0OlxcdFxcdH1cXG4xMTc1OlxcdFxcbjExNzY6XFx0XFx0aHdfYmFzZSA9IHBjaW1faW9tYXAocGRldiwgMCwgMCk7XFxuMTE3NzpcXHRcXHRpZiAoIWh3X2Jhc2UpIHtcXG4xMTc4OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byBtYXAgQkFSIDAuXFxcXG5cXFwiKTtcXG4xMTc5OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjExODA6XFx0XFx0fVxcbjExODE6XFx0XFxuMTE4MjpcXHRcXHQvKiBXZSBjYW4ndCB1c2UgaXdsX3JlYWQzMiBiZWNhdXNlIHRyYW5zIHdhc24ndCBhbGxvY2F0ZWQgKi9cXG4xMTgzOlxcdFxcdGh3X3JldiA9IHJlYWRsKGh3X2Jhc2UgKyBDU1JfSFdfUkVWKTtcXG4xMTg0OlxcdFxcdGlmIChod19yZXYgPT0gMHhmZmZmZmZmZikge1xcbjExODU6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiSFdfUkVWPTB4RkZGRkZGRkYsIFBDSSBpc3N1ZXM/XFxcXG5cXFwiKTtcXG4xMTg2OlxcdFxcdFxcdHJldHVybiAtRUlPO1xcbjExODc6XFx0XFx0fVxcbjExODg6XFx0XFxuMTE4OTpcXHRcXHRyZXR1cm4gaXdsX3BjaV9nZW4xXzJfcHJvYmUocGRldiwgZW50LCBtYWNfY2ZnLCBod19iYXNlLCBod19yZXYpO1xcbjExOTA6XFx0fVxcbjExOTE6XFx0XFxuMTE5MjpcXHRzdGF0aWMgdm9pZCBpd2xfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4xMTkzOlxcdHtcXG4xMTk0OlxcdFxcdHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpO1xcbjExOTU6XFx0XFxuMTE5NjpcXHRcXHRpZiAoIXRyYW5zKVxcbjExOTc6XFx0XFx0XFx0cmV0dXJuO1xcbjExOTg6XFx0XFxuMTE5OTpcXHRcXHRpd2xfcGNpZV9nZW4xXzJfcmVtb3ZlKHRyYW5zKTtcXG4xMjAwOlxcdH1cXG4xMjAxOlxcdFxcbjEyMDI6XFx0I2lmZGVmIENPTkZJR19QTV9TTEVFUFxcbjEyMDM6XFx0XFxuMTIwNDpcXHRzdGF0aWMgaW50IGl3bF9wY2lfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXZpY2UpXFxuMTIwNTpcXHR7XFxuMTIwNjpcXHRcXHQvKiBCZWZvcmUgeW91IHB1dCBjb2RlIGhlcmUsIHRoaW5rIGFib3V0IFdvV0xBTi4gWW91IGNhbm5vdCBjaGVjayBoZXJlXFxuMTIwNzpcXHRcXHQgKiB3aGV0aGVyIFdvV0xBTiBpcyBlbmFibGVkIG9yIG5vdCwgYW5kIHlvdXIgY29kZSB3aWxsIHJ1biBldmVuIGlmXFxuMTIwODpcXHRcXHQgKiBXb1dMQU4gaXMgZW5hYmxlZCAtIGRvbid0IGtpbGwgdGhlIE5JQywgc29tZW9uZSBtYXkgbmVlZCBpdCBpbiBTeC5cXG4xMjA5OlxcdFxcdCAqL1xcbjEyMTA6XFx0XFxuMTIxMTpcXHRcXHRyZXR1cm4gMDtcXG4xMjEyOlxcdH1cXG4xMjEzOlxcdFxcbjEyMTQ6XFx0c3RhdGljIGludCBfaXdsX3BjaV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2aWNlLCBib29sIHJlc3RvcmUpXFxuMTIxNTpcXHR7XFxuMTIxNjpcXHRcXHRzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoZGV2aWNlKTtcXG4xMjE3OlxcdFxcdHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpO1xcbjEyMTg6XFx0XFx0c3RydWN0IGl3bF90cmFuc19wY2llICp0cmFuc19wY2llID0gSVdMX1RSQU5TX0dFVF9QQ0lFX1RSQU5TKHRyYW5zKTtcXG4xMjE5OlxcdFxcdGJvb2wgZGV2aWNlX3dhc19wb3dlcmVkX29mZiA9IGZhbHNlO1xcbjEyMjA6XFx0XFxuMTIyMTpcXHRcXHQvKiBCZWZvcmUgeW91IHB1dCBjb2RlIGhlcmUsIHRoaW5rIGFib3V0IFdvV0xBTi4gWW91IGNhbm5vdCBjaGVjayBoZXJlXFxuMTIyMjpcXHRcXHQgKiB3aGV0aGVyIFdvV0xBTiBpcyBlbmFibGVkIG9yIG5vdCwgYW5kIHlvdXIgY29kZSB3aWxsIHJ1biBldmVuIGlmXFxuMTIyMzpcXHRcXHQgKiBXb1dMQU4gaXMgZW5hYmxlZCAtIHRoZSBOSUMgbWF5IGJlIGFsaXZlLlxcbjEyMjQ6XFx0XFx0ICovXFxuMTIyNTpcXHRcXG4xMjI2OlxcdFxcdC8qXFxuMTIyNzpcXHRcXHQgKiBXZSBkaXNhYmxlIHRoZSBSRVRSWV9USU1FT1VUIHJlZ2lzdGVyICgweDQxKSB0byBrZWVwXFxuMTIyODpcXHRcXHQgKiBQQ0kgVHggcmV0cmllcyBmcm9tIGludGVyZmVyaW5nIHdpdGggQzMgQ1BVIHN0YXRlLlxcbjEyMjk6XFx0XFx0ICovXFxuMTIzMDpcXHRcXHRwY2lfd3JpdGVfY29uZmlnX2J5dGUocGRldiwgUENJX0NGR19SRVRSWV9USU1FT1VULCAweDAwKTtcXG4xMjMxOlxcdFxcbjEyMzI6XFx0XFx0aWYgKCF0cmFucy1cXHUwMDNlb3BfbW9kZSlcXG4xMjMzOlxcdFxcdFxcdHJldHVybiAwO1xcbjEyMzQ6XFx0XFxuMTIzNTpcXHRcXHRpZiAodGVzdF9iaXQoU1RBVFVTX0RFVklDRV9FTkFCTEVELCBcXHUwMDI2dHJhbnMtXFx1MDAzZXN0YXR1cykpIHtcXG4xMjM2OlxcdFxcdFxcdC8qXFxuMTIzNzpcXHRcXHRcXHQgKiBTY3JhdGNoIHZhbHVlIHdhcyBhbHRlcmVkLCB0aGlzIG1lYW5zIHRoZSBkZXZpY2Ugd2FzIHBvd2VyZWRcXG4xMjM4OlxcdFxcdFxcdCAqIG9mZiwgd2UgbmVlZCB0byByZXNldCBpdCBjb21wbGV0ZWx5LlxcbjEyMzk6XFx0XFx0XFx0ICogTm90ZTogTUFDIChiaXRzIDA6Nykgd2lsbCBiZSBjbGVhcmVkIHVwb24gc3VzcGVuZCBldmVuIHdpdGhcXG4xMjQwOlxcdFxcdFxcdCAqIHdvd2xhbiwgYnV0IG5vdCBiaXRzIFsxNTo4XS4gU28gaWYgd2UgaGF2ZSBiaXRzIHNldCBpbiBsb3dlclxcbjEyNDE6XFx0XFx0XFx0ICogd29yZCwgYXNzdW1lIHRoZSBkZXZpY2UgaXMgYWxpdmUuXFxuMTI0MjpcXHRcXHRcXHQgKiBBbHRlcm5hdGl2ZWx5LCBpZiB0aGUgc2NyYXRjaCB2YWx1ZSBpcyAweEZGRkZGRkZGLCB0aGVuIHdlXFxuMTI0MzpcXHRcXHRcXHQgKiBubyBsb25nZXIgaGF2ZSBhY2Nlc3MgdG8gdGhlIGRldmljZSBhbmQgY29uc2lkZXIgaXQgcG93ZXJlZFxcbjEyNDQ6XFx0XFx0XFx0ICogb2ZmLlxcbjEyNDU6XFx0XFx0XFx0ICogRm9yIG9sZGVyIGRldmljZXMsIGp1c3QgdHJ5IHNpbGVudGx5IHRvIGdyYWIgdGhlIE5JQy5cXG4xMjQ2OlxcdFxcdFxcdCAqL1xcbjEyNDc6XFx0XFx0XFx0aWYgKHRyYW5zLVxcdTAwM2VtYWNfY2ZnLVxcdTAwM2VkZXZpY2VfZmFtaWx5IFxcdTAwM2U9IElXTF9ERVZJQ0VfRkFNSUxZX0JaKSB7XFxuMTI0ODpcXHRcXHRcXHRcXHR1MzIgc2NyYXRjaCA9IGl3bF9yZWFkMzIodHJhbnMsIENTUl9GVU5DX1NDUkFUQ0gpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyMzozNS4zNDU2Nzk2NDFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU0NTc3Mjc0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGl2aW5nIGludG8gdGhlIGBpd2xfcGNpX2dlbjFfMl9wcm9iZWAgRnVuY3Rpb24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMgYGl3bF9wY2lfZ2VuMV8yX3Byb2JlYCBmdW5jdGlvbi4gTGV0J3Mgc2VlLi4uIGFzIGEgc2Vhc29uZWQga2VybmVsIGRldmVsb3BlciwgbXkgZmlyc3QgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgYnJvYWRlciBJbnRlbCB3aXJlbGVzcyBkcml2ZXIgYXJjaGl0ZWN0dXJlLiBJIGtub3cgdGhpcyBuYW1pbmcgY29udmVudGlvbiwgc28gSSBleHBlY3QgaXQncyBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIFBDSS1iYXNlZCBkZXZpY2VzIGFuZCBwcm9iYWJseSBhIGdlbmVyYXRpb24gb3IgdHdvIG9mIHRoZSBlYXJseSBpd2wgaGFyZHdhcmUuIFRoaXMgcHJvYmUgZnVuY3Rpb24gaXMgY3JpdGljYWwuIEl0J3MgdGhlIGVudHJ5IHBvaW50LCB0aGUgZ2F0ZWtlZXBlciBmb3IgYnJpbmdpbmcgYSBzdXBwb3J0ZWQgZGV2aWNlIG9ubGluZS4gSXQncyB3aGVyZSB0aGUgaW5pdGlhbCBoYXJkd2FyZSBpZGVudGlmaWNhdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIGJhc2ljIHNldHVwIG9jY3VyLlxuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHNwZWNpZmljIGNoaXBzIGl0J3MgcmVzcG9uc2libGUgZm9yLiBXaGF0IHNwZWNpZmljIGhhcmR3YXJlIHJldmlzaW9ucz8gQXJlIHRoZXJlIGFueSBrbm93biBlcnJhdGEgb3IgcXVpcmt5IGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBwYXJ0aWN1bGFyIGdlbmVyYXRpb24gb2YgaGFyZHdhcmUgdGhhdCBJIHNob3VsZCBrZWVwIGluIG1pbmQ/IEFyZSB0aGVyZSBwbGF0Zm9ybS1zcGVjaWZpYyBkZXBlbmRlbmNpZXMgSSdsbCBuZWVkIHRvIHdhdGNoIG91dCBmb3I/IEl0IGxpa2VseSBuZWVkcyB0byBtYXRjaCB0aGUgUENJIElELCB3aGljaCBJJ2xsIHdhbnQgdG8gdmVyaWZ5LiBUaGF0J3MgYWx3YXlzIG15IGZpcnN0IGNoZWNrLiBJIGFsc28gd2FudCB0byBzZWUgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIG90aGVyIGxheWVycyBvZiB0aGUgZHJpdmVyIOKAkyB0aGUgY29yZSBpd2wgY29kZSwgdGhlIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyLCBhbmQgdGhlIG5ldCBkZXZpY2UgcmVnaXN0cmF0aW9uLiBEb2VzIGl0IGFsbG9jYXRlIGEgZGV2aWNlIGNvbnRleHQ/IFdoZXJlIGRvZXMgaXQgaGFuZGxlIGludGVycnVwdCBzZXR1cD8gV2hhdCBpcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UgdG8gcHJvYmUgdGhlIGRldmljZSwgZnJvbSBzdGFydCB0byBmaW5pc2g/IFdoZXJlIGRvZXMgdGhlIGZ1bmN0aW9uIGxlYXZlIG9mZj9cblxuSSBhbHNvIG5lZWQgdG8gc2VlIGlmIGl0J3MgZ290IHByb3BlciBlcnJvciBoYW5kbGluZy4gV2hhdCBhYm91dCBwb3dlciBtYW5hZ2VtZW50IGNvbnNpZGVyYXRpb25zPyBJIGV4cGVjdCBzb21lIGtpbmQgb2YgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgcmVhZC93cml0ZSwgcG90ZW50aWFsbHkgRE1BIHNldHVwLCBhbmQgaW50ZXJydXB0IHJvdXRpbmcuIEknbGwgd2FudCB0byBjaGVjayBob3cgaXQgaGFuZGxlcyB0aGVzZSBkZXRhaWxzIGFuZCBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4gSXQgbmVlZHMgdG8gYmUgcm9idXN0LCBncmFjZWZ1bGx5IGhhbmRsaW5nIGFueSBmYWlsdXJlcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYW5kIGVuc3VyaW5nIGEgY2xlYW4gcm9sbGJhY2sgaWYgdGhlIGRldmljZSBjYW4ndCBiZSBicm91Z2h0IHVwLiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLiBJJ20gcmVhZHkgdG8gZGl2ZSBpbiBhbmQgZ2V0IGEgZ3JpcCBvZiB0aGUgbml0dHkgZ3JpdHR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzA2MiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjM6MzkuODkxNDU3NjZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1OTA5MDYxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfcGNpX2dlbjFfMl9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM9MTE0OT1zdGF0aWMgaW50IGl3bF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTE4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM6MTE4OTpcXHRyZXR1cm4gaXdsX3BjaV9nZW4xXzJfcHJvYmUocGRldiwgZW50LCBtYWNfY2ZnLCBod19iYXNlLCBod19yZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMTkwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvaW50ZXJuYWwuaD0xMjA5PXZvaWQgaXdsX3BjaWVfYWxsb2NfZndfbW9uaXRvcihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgdTggbWF4X3Bvd2VyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL2ludGVybmFsLmg6MTIxMDppbnQgaXdsX3BjaV9nZW4xXzJfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9pbnRlcm5hbC5oLTEyMTEtXFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM9NDIwMD1zdGF0aWMgdm9pZCBpd2xfcGNpZV9jaGVja19tZV9zdGF0dXMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtNDIzMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM6NDIzMjppbnQgaXdsX3BjaV9nZW4xXzJfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTQyMzMtXFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjIzOjQwLjE1MDU1ODA5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MzM2NjI2NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipEaWdnaW5nIGludG8gaXdsXFxfcGNpXFxfZ2VuMVxcXzJcXF9wcm9iZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgdGFraW5nIGEgY2xvc2UgbG9vayBhdCB0aGUgYGl3bF9wY2lfZ2VuMV8yX3Byb2JlYCBmdW5jdGlvbi4gVGhlIGZpcnN0IHRoaW5nIEkgd2FudCB0byB1bmRlcnN0YW5kIGlzIGhvdyBpdCBoYW5kbGVzIGZpcm13YXJlIGxvYWRpbmcuIFRoYXQncyBhIGNyaXRpY2FsIHBhcnQgb2YgdGhlIHdpcmVsZXNzIGRyaXZlciBicmluZy11cCBwcm9jZXNzLCBhbmQgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciB0aGlzIHByb2JlIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBpbml0aWF0aW5nIGl0LCBhbmQgaWYgc28sIGhvdy4gSSdsbCBuZWVkIHRvIHRyYWNlIHRocm91Z2ggdGhlIGNvZGUsIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGNhbGxzIHJlbGF0ZWQgdG8gZmlybXdhcmUgbG9hZGluZyBBUElzIG9yIHN0cnVjdHVyZXMuIFRoaXMgaW5pdGlhbCBpbnZlc3RpZ2F0aW9uIHNob3VsZCBwcm92aWRlIGEgc29saWQgYmFzZWxpbmUgdW5kZXJzdGFuZGluZyBvZiBpdHMgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MDY2LCJPdXRwdXRUb2tlbnMiOjUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjM6NDMuNjg0MjI0MjgyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NjgxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDIzMixcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjQyMzI6XFx0aW50IGl3bF9wY2lfZ2VuMV8yX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbjQyMzM6XFx0XFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQsXFxuNDIzNDpcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IGl3bF9tYWNfY2ZnICptYWNfY2ZnLFxcbjQyMzU6XFx0XFx0XFx0XFx0IHU4IF9faW9tZW0gKmh3X2Jhc2UsIHUzMiBod19yZXYpXFxuNDIzNjpcXHR7XFxuNDIzNzpcXHRcXHRjb25zdCBzdHJ1Y3QgaXdsX2Rldl9pbmZvICpkZXZfaW5mbztcXG40MjM4OlxcdFxcdHN0cnVjdCBpd2xfdHJhbnNfaW5mbyBpbmZvID0ge1xcbjQyMzk6XFx0XFx0XFx0Lmh3X2lkID0gKHBkZXYtXFx1MDAzZWRldmljZSBcXHUwMDNjXFx1MDAzYyAxNikgKyBwZGV2LVxcdTAwM2VzdWJzeXN0ZW1fZGV2aWNlLFxcbjQyNDA6XFx0XFx0XFx0Lmh3X3JldiA9IGh3X3JldixcXG40MjQxOlxcdFxcdH07XFxuNDI0MjpcXHRcXHRzdHJ1Y3QgaXdsX3RyYW5zICppd2xfdHJhbnM7XFxuNDI0MzpcXHRcXHRzdHJ1Y3QgaXdsX3RyYW5zX3BjaWUgKnRyYW5zX3BjaWU7XFxuNDI0NDpcXHRcXHRpbnQgcmV0O1xcbjQyNDU6XFx0XFxuNDI0NjpcXHRcXHRpd2xfdHJhbnMgPSBpd2xfdHJhbnNfcGNpZV9hbGxvYyhwZGV2LCBtYWNfY2ZnLCBcXHUwMDI2aW5mbywgaHdfYmFzZSk7XFxuNDI0NzpcXHRcXHRpZiAoSVNfRVJSKGl3bF90cmFucykpXFxuNDI0ODpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihpd2xfdHJhbnMpO1xcbjQyNDk6XFx0XFxuNDI1MDpcXHRcXHR0cmFuc19wY2llID0gSVdMX1RSQU5TX0dFVF9QQ0lFX1RSQU5TKGl3bF90cmFucyk7XFxuNDI1MTpcXHRcXG40MjUyOlxcdFxcdGl3bF90cmFuc19wY2llX2NoZWNrX3Byb2R1Y3RfcmVzZXRfc3RhdHVzKHBkZXYpO1xcbjQyNTM6XFx0XFx0aXdsX3RyYW5zX3BjaWVfY2hlY2tfcHJvZHVjdF9yZXNldF9tb2RlKHBkZXYpO1xcbjQyNTQ6XFx0XFxuNDI1NTpcXHRcXHQvKiBzZXQgdGhlIHRoaW5ncyB3ZSBrbm93IHNvIGZhciBmb3IgdGhlIGdyYWIgTklDIGFjY2VzcyAqL1xcbjQyNTY6XFx0XFx0aXdsX3RyYW5zX3NldF9pbmZvKGl3bF90cmFucywgXFx1MDAyNmluZm8pO1xcbjQyNTc6XFx0XFxuNDI1ODpcXHRcXHQvKlxcbjQyNTk6XFx0XFx0ICogTGV0J3MgdHJ5IHRvIGdyYWIgTklDIGFjY2VzcyBlYXJseSBoZXJlLiBTb21ldGltZXMsIE5JQ3MgbWF5XFxuNDI2MDpcXHRcXHQgKiBmYWlsIHRvIGluaXRpYWxpemUsIGFuZCBpZiB0aGF0IGhhcHBlbnMgaXQncyBiZXR0ZXIgaWYgd2Ugc2VlXFxuNDI2MTpcXHRcXHQgKiBpc3N1ZXMgZWFybHkgb24gKGFuZCBjYW4gcmVwcm9iZSwgcGVyIHRoZSBsb2dpYyBpbnNpZGUpLCB0aGFuXFxuNDI2MjpcXHRcXHQgKiBmaXJzdCB0cnlpbmcgdG8gbG9hZCB0aGUgZmlybXdhcmUgZXRjLiBhbmQgcG90ZW50aWFsbHkgb25seVxcbjQyNjM6XFx0XFx0ICogZGV0ZWN0aW5nIGFueSBwcm9ibGVtcyB3aGVuIHRoZSBmaXJzdCBpbnRlcmZhY2UgaXMgYnJvdWdodCB1cC5cXG40MjY0OlxcdFxcdCAqL1xcbjQyNjU6XFx0XFx0cmV0ID0gaXdsX3BjaWVfcHJlcGFyZV9jYXJkX2h3KGl3bF90cmFucyk7XFxuNDI2NjpcXHRcXHRpZiAoIXJldCkge1xcbjQyNjc6XFx0XFx0XFx0cmV0ID0gaXdsX3RyYW5zX2FjdGl2YXRlX25pYyhpd2xfdHJhbnMpO1xcbjQyNjg6XFx0XFx0XFx0aWYgKHJldClcXG40MjY5OlxcdFxcdFxcdFxcdGdvdG8gb3V0X2ZyZWVfdHJhbnM7XFxuNDI3MDpcXHRcXHRcXHRpZiAoaXdsX3RyYW5zX2dyYWJfbmljX2FjY2Vzcyhpd2xfdHJhbnMpKSB7XFxuNDI3MTpcXHRcXHRcXHRcXHRnZXRfY3JmX2lkKGl3bF90cmFucywgXFx1MDAyNmluZm8pO1xcbjQyNzI6XFx0XFx0XFx0XFx0LyogYWxsIGdvb2QgKi9cXG40MjczOlxcdFxcdFxcdFxcdGl3bF90cmFuc19yZWxlYXNlX25pY19hY2Nlc3MoaXdsX3RyYW5zKTtcXG40Mjc0OlxcdFxcdFxcdH0gZWxzZSB7XFxuNDI3NTpcXHRcXHRcXHRcXHRyZXQgPSAtRUlPO1xcbjQyNzY6XFx0XFx0XFx0XFx0Z290byBvdXRfZnJlZV90cmFucztcXG40Mjc3OlxcdFxcdFxcdH1cXG40Mjc4OlxcdFxcdH1cXG40Mjc5OlxcdFxcbjQyODA6XFx0XFx0aW5mby5od19yZl9pZCA9IGl3bF9yZWFkMzIoaXdsX3RyYW5zLCBDU1JfSFdfUkZfSUQpO1xcbjQyODE6XFx0XFxuNDI4MjpcXHRcXHQvKlxcbjQyODM6XFx0XFx0ICogVGhlIFJGX0lEIGlzIHNldCB0byB6ZXJvIGluIGJsYW5rIE9UUCBzbyByZWFkIHZlcnNpb24gdG9cXG40Mjg0OlxcdFxcdCAqIGV4dHJhY3QgdGhlIFJGX0lELlxcbjQyODU6XFx0XFx0ICogVGhpcyBpcyByZWxldmFudCBvbmx5IGZvciBmYW1pbHkgOTAwMCBhbmQgdXAuXFxuNDI4NjpcXHRcXHQgKi9cXG40Mjg3OlxcdFxcdGlmIChpd2xfdHJhbnMtXFx1MDAzZW1hY19jZmctXFx1MDAzZWRldmljZV9mYW1pbHkgXFx1MDAzZT0gSVdMX0RFVklDRV9GQU1JTFlfOTAwMCBcXHUwMDI2XFx1MDAyNlxcbjQyODg6XFx0XFx0ICAgICFDU1JfSFdfUkZJRF9UWVBFKGluZm8uaHdfcmZfaWQpIFxcdTAwMjZcXHUwMDI2IG1hcF9jcmZfaWQoaXdsX3RyYW5zLCBcXHUwMDI2aW5mbykpIHtcXG40Mjg5OlxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuNDI5MDpcXHRcXHRcXHRnb3RvIG91dF9mcmVlX3RyYW5zO1xcbjQyOTE6XFx0XFx0fVxcbjQyOTI6XFx0XFxuNDI5MzpcXHRcXHRJV0xfSU5GTyhpd2xfdHJhbnMsIFxcXCJQQ0kgZGV2ICUwNHgvJTA0eCwgcmV2PTB4JXgsIHJmaWQ9MHgleFxcXFxuXFxcIixcXG40Mjk0OlxcdFxcdFxcdCBwZGV2LVxcdTAwM2VkZXZpY2UsIHBkZXYtXFx1MDAzZXN1YnN5c3RlbV9kZXZpY2UsXFxuNDI5NTpcXHRcXHRcXHQgaW5mby5od19yZXYsIGluZm8uaHdfcmZfaWQpO1xcbjQyOTY6XFx0XFxuNDI5NzpcXHQjaWYgIUlTX0VOQUJMRUQoQ09ORklHX0lXTE1MRClcXG40Mjk4OlxcdFxcdGlmIChpd2xfZHJ2X2lzX3dpZmk3X3N1cHBvcnRlZChpd2xfdHJhbnMpKSB7XFxuNDI5OTpcXHRcXHRcXHRJV0xfRVJSKGl3bF90cmFucyxcXG40MzAwOlxcdFxcdFxcdFxcdFxcXCJJV0xNTEQgbmVlZHMgdG8gYmUgY29tcGlsZWQgdG8gc3VwcG9ydCB0aGlzIGRldmljZVxcXFxuXFxcIik7XFxuNDMwMTpcXHRcXHRcXHRyZXQgPSAtRU9QTk9UU1VQUDtcXG40MzAyOlxcdFxcdFxcdGdvdG8gb3V0X2ZyZWVfdHJhbnM7XFxuNDMwMzpcXHRcXHR9XFxuNDMwNDpcXHQjZW5kaWZcXG40MzA1OlxcdFxcbjQzMDY6XFx0XFx0ZGV2X2luZm8gPSBpd2xfcGNpX2ZpbmRfZGV2X2luZm8ocGRldi1cXHUwMDNlZGV2aWNlLCBwZGV2LVxcdTAwM2VzdWJzeXN0ZW1fZGV2aWNlLFxcbjQzMDc6XFx0XFx0XFx0XFx0XFx0XFx0IENTUl9IV19SRklEX1RZUEUoaW5mby5od19yZl9pZCksXFxuNDMwODpcXHRcXHRcXHRcXHRcXHRcXHQgQ1NSX0hXX1JGSURfSVNfQ0RCKGluZm8uaHdfcmZfaWQpLFxcbjQzMDk6XFx0XFx0XFx0XFx0XFx0XFx0IElXTF9TVUJERVZJQ0VfUkZfSUQocGRldi1cXHUwMDNlc3Vic3lzdGVtX2RldmljZSksXFxuNDMxMDpcXHRcXHRcXHRcXHRcXHRcXHQgSVdMX1NVQkRFVklDRV9CV19MSU0ocGRldi1cXHUwMDNlc3Vic3lzdGVtX2RldmljZSksXFxuNDMxMTpcXHRcXHRcXHRcXHRcXHRcXHQgIWl3bF90cmFucy1cXHUwMDNlbWFjX2NmZy1cXHUwMDNlaW50ZWdyYXRlZCk7XFxuNDMxMjpcXHRcXHRpZiAoZGV2X2luZm8pIHtcXG40MzEzOlxcdFxcdFxcdGl3bF90cmFucy1cXHUwMDNlY2ZnID0gZGV2X2luZm8tXFx1MDAzZWNmZztcXG40MzE0OlxcdFxcdFxcdGluZm8ubmFtZSA9IGRldl9pbmZvLVxcdTAwM2VuYW1lO1xcbjQzMTU6XFx0XFx0fVxcbjQzMTY6XFx0XFxuNDMxNzpcXHQjaWYgSVNfRU5BQkxFRChDT05GSUdfSVdMTVZNKVxcbjQzMTg6XFx0XFxuNDMxOTpcXHRcXHQvKlxcbjQzMjA6XFx0XFx0ICogc3BlY2lhbC1jYXNlIDcyNjVELCBpdCBoYXMgdGhlIHNhbWUgUENJIElEcy5cXG40MzIxOlxcdFxcdCAqXFxuNDMyMjpcXHRcXHQgKiBOb3RlIHRoYXQgYmVjYXVzZSB3ZSBhbHJlYWR5IHBhc3MgdGhlIGNmZyB0byB0aGUgdHJhbnNwb3J0IGFib3ZlLFxcbjQzMjM6XFx0XFx0ICogYWxsIHRoZSBwYXJhbWV0ZXJzIHRoYXQgdGhlIHRyYW5zcG9ydCB1c2VzIG11c3QsIHVudGlsIHRoYXQgaXNcXG40MzI0OlxcdFxcdCAqIGNoYW5nZWQsIGJlIGlkZW50aWNhbCB0byB0aGUgb25lcyBpbiB0aGUgNzI2NUQgY29uZmlndXJhdGlvbi5cXG40MzI1OlxcdFxcdCAqL1xcbjQzMjY6XFx0XFx0aWYgKGl3bF90cmFucy1cXHUwMDNlY2ZnID09IFxcdTAwMjZpd2w3MjY1X2NmZyBcXHUwMDI2XFx1MDAyNlxcbjQzMjc6XFx0XFx0ICAgIChpbmZvLmh3X3JldiBcXHUwMDI2IENTUl9IV19SRVZfVFlQRV9NU0spID09IENTUl9IV19SRVZfVFlQRV83MjY1RClcXG40MzI4OlxcdFxcdFxcdGl3bF90cmFucy1cXHUwMDNlY2ZnID0gXFx1MDAyNml3bDcyNjVkX2NmZztcXG40MzI5OlxcdCNlbmRpZlxcbjQzMzA6XFx0XFx0aWYgKCFpd2xfdHJhbnMtXFx1MDAzZWNmZykge1xcbjQzMzE6XFx0XFx0XFx0cHJfZXJyKFxcXCJObyBjb25maWcgZm91bmQgZm9yIFBDSSBkZXYgJTA0eC8lMDR4LCByZXY9MHgleCwgcmZpZD0weCV4XFxcXG5cXFwiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyMzo0My42ODQ2MTQ0NTJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUzNTQ3NzY0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5J3JlIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIFJlbWFpbmRlciBvZiBgaXdsX3BjaV9nZW4xXzJfcHJvYmVgKipcblxuQWxyaWdodCwgc28gd2UncmUgY29udGludWluZyBvdXIgZGlzc2VjdGlvbiBvZiBgaXdsX3BjaV9nZW4xXzJfcHJvYmVgLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0J3MgaGFwcGVuaW5nLiBJIGV4cGVjdCB0byBiZSBsb29raW5nIGZvciBrZXkgc3RlcHMsIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcywgYW5kIGVycm9yIGhhbmRsaW5nLiBJJ2xsIGJlIHNlYXJjaGluZyBmb3IgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBQQ0kgYnVzLCBob3cgaXQgaW5pdGlhbGl6ZXMgdGhlIGRldmljZSwgbGlrZWx5IHByb2JpbmcgZm9yIHNwZWNpZmljIGhhcmR3YXJlLCBhbmQgc2V0dGluZyB1cCBhbnkgbmVjZXNzYXJ5IGludGVycnVwdCBoYW5kbGVycy4gSSdsbCBiZSBwYXJ0aWN1bGFybHkgZm9jdXNlZCBvbiBob3cgaXQgdmVyaWZpZXMgdGhhdCB0aGUgZGV2aWNlIGlzLCBpbiBmYWN0LCBhIGNvbXBhdGlibGUgSW50ZWwgV2lyZWxlc3MgY2FyZCwgdmVyc2lvbiAxIG9yIDIuIEFsc28sIEknbSB3YXRjaGluZyBmb3IgYW55IHBvd2VyLW1hbmFnZW1lbnQgcmVsYXRlZCBjb2RlIOKAkyB0aGF0J3MgY3J1Y2lhbCBmb3IgYSBtb2Rlcm4gd2lyZWxlc3MgZHJpdmVyLiBBbmQgZmluYWxseSwgb2YgY291cnNlLCBJJ20gYW50aWNpcGF0aW5nIHRoZSBwb3RlbnRpYWwgcGl0ZmFsbHMg4oCTIGFueSBvYnZpb3VzIGVycm9yIGNvbmRpdGlvbnMgb3IgcmVzb3VyY2UgYWxsb2NhdGlvbiBpc3N1ZXMgdGhhdCBtaWdodCBhcmlzZS4gVGhpcyBpcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkOyBnZXR0aW5nIGEgd2lyZWxlc3MgY2FyZCB0byB3b3JrIGNvcnJlY3RseSBjYW4gYmUgY29tcGxleC4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjEzMywiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjM6NDguMjIwMDk1MDQyWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MTA4MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQzMzIsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI0MzMyOlxcdFxcdFxcdCAgICAgICBwZGV2LVxcdTAwM2VkZXZpY2UsIHBkZXYtXFx1MDAzZXN1YnN5c3RlbV9kZXZpY2UsXFxuNDMzMzpcXHRcXHRcXHQgICAgICAgaW5mby5od19yZXYsIGluZm8uaHdfcmZfaWQpO1xcbjQzMzQ6XFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG40MzM1OlxcdFxcdFxcdGdvdG8gb3V0X2ZyZWVfdHJhbnM7XFxuNDMzNjpcXHRcXHR9XFxuNDMzNzpcXHRcXG40MzM4OlxcdFxcdElXTF9JTkZPKGl3bF90cmFucywgXFxcIkRldGVjdGVkICVzXFxcXG5cXFwiLCBpbmZvLm5hbWUpO1xcbjQzMzk6XFx0XFxuNDM0MDpcXHRcXHRpZiAoaXdsX3RyYW5zLVxcdTAwM2VtYWNfY2ZnLVxcdTAwM2VtcV9yeF9zdXBwb3J0ZWQpIHtcXG40MzQxOlxcdFxcdFxcdGlmIChXQVJOX09OKCFpd2xfdHJhbnMtXFx1MDAzZWNmZy1cXHUwMDNlbnVtX3JiZHMpKSB7XFxuNDM0MjpcXHRcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbjQzNDM6XFx0XFx0XFx0XFx0Z290byBvdXRfZnJlZV90cmFucztcXG40MzQ0OlxcdFxcdFxcdH1cXG40MzQ1OlxcdFxcdFxcdHRyYW5zX3BjaWUtXFx1MDAzZW51bV9yeF9idWZzID0gaXdsX3RyYW5zX2dldF9udW1fcmJkcyhpd2xfdHJhbnMpO1xcbjQzNDY6XFx0XFx0fSBlbHNlIHtcXG40MzQ3OlxcdFxcdFxcdHRyYW5zX3BjaWUtXFx1MDAzZW51bV9yeF9idWZzID0gUlhfUVVFVUVfU0laRTtcXG40MzQ4OlxcdFxcdH1cXG40MzQ5OlxcdFxcbjQzNTA6XFx0XFx0aWYgKCFpd2xfdHJhbnMtXFx1MDAzZW1hY19jZmctXFx1MDAzZWludGVncmF0ZWQpIHtcXG40MzUxOlxcdFxcdFxcdHUxNiBsaW5rX3N0YXR1cztcXG40MzUyOlxcdFxcbjQzNTM6XFx0XFx0XFx0cGNpZV9jYXBhYmlsaXR5X3JlYWRfd29yZChwZGV2LCBQQ0lfRVhQX0xOS1NUQSwgXFx1MDAyNmxpbmtfc3RhdHVzKTtcXG40MzU0OlxcdFxcbjQzNTU6XFx0XFx0XFx0aW5mby5wY2llX2xpbmtfc3BlZWQgPVxcbjQzNTY6XFx0XFx0XFx0XFx0dTE2X2dldF9iaXRzKGxpbmtfc3RhdHVzLCBQQ0lfRVhQX0xOS1NUQV9DTFMpO1xcbjQzNTc6XFx0XFx0fVxcbjQzNTg6XFx0XFxuNDM1OTpcXHRcXHRpd2xfdHJhbnNfc2V0X2luZm8oaXdsX3RyYW5zLCBcXHUwMDI2aW5mbyk7XFxuNDM2MDpcXHRcXG40MzYxOlxcdFxcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBpd2xfdHJhbnMpO1xcbjQzNjI6XFx0XFxuNDM2MzpcXHRcXHRpd2xfcGNpZV9jaGVja19tZV9zdGF0dXMoaXdsX3RyYW5zKTtcXG40MzY0OlxcdFxcbjQzNjU6XFx0XFx0LyogdHJ5IHRvIGdldCBvd25lcnNoaXAgc28gdGhhdCB3ZSdsbCBrbm93IGlmIHdlIGRvbid0IG93biBpdCAqL1xcbjQzNjY6XFx0XFx0aXdsX3BjaWVfcHJlcGFyZV9jYXJkX2h3KGl3bF90cmFucyk7XFxuNDM2NzpcXHRcXG40MzY4OlxcdFxcdGl3bF90cmFucy1cXHUwMDNlZHJ2ID0gaXdsX2Rydl9zdGFydChpd2xfdHJhbnMpO1xcbjQzNjk6XFx0XFxuNDM3MDpcXHRcXHRpZiAoSVNfRVJSKGl3bF90cmFucy1cXHUwMDNlZHJ2KSkge1xcbjQzNzE6XFx0XFx0XFx0cmV0ID0gUFRSX0VSUihpd2xfdHJhbnMtXFx1MDAzZWRydik7XFxuNDM3MjpcXHRcXHRcXHRnb3RvIG91dF9mcmVlX3RyYW5zO1xcbjQzNzM6XFx0XFx0fVxcbjQzNzQ6XFx0XFxuNDM3NTpcXHRcXHQvKiByZWdpc3RlciB0cmFuc3BvcnQgbGF5ZXIgZGVidWdmcyBoZXJlICovXFxuNDM3NjpcXHRcXHRpd2xfdHJhbnNfcGNpZV9kYmdmc19yZWdpc3Rlcihpd2xfdHJhbnMpO1xcbjQzNzc6XFx0XFxuNDM3ODpcXHRcXHRyZXR1cm4gMDtcXG40Mzc5OlxcdFxcbjQzODA6XFx0b3V0X2ZyZWVfdHJhbnM6XFxuNDM4MTpcXHRcXHRpd2xfdHJhbnNfcGNpZV9mcmVlKGl3bF90cmFucyk7XFxuNDM4MjpcXHRcXHRyZXR1cm4gcmV0O1xcbjQzODM6XFx0fVxcbjQzODQ6XFx0XFxuNDM4NTpcXHR2b2lkIGl3bF9wY2llX2dlbjFfMl9yZW1vdmUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXFxuNDM4NjpcXHR7XFxuNDM4NzpcXHRcXHRzdHJ1Y3QgaXdsX3RyYW5zX3BjaWUgKnRyYW5zX3BjaWUgPSBJV0xfVFJBTlNfR0VUX1BDSUVfVFJBTlModHJhbnMpO1xcbjQzODg6XFx0XFxuNDM4OTpcXHRcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNnRyYW5zX3BjaWUtXFx1MDAzZW1lX3JlY2hlY2tfd2spO1xcbjQzOTA6XFx0XFxuNDM5MTpcXHRcXHRpd2xfZHJ2X3N0b3AodHJhbnMtXFx1MDAzZWRydik7XFxuNDM5MjpcXHRcXG40MzkzOlxcdFxcdGl3bF90cmFuc19wY2llX2ZyZWUodHJhbnMpO1xcbjQzOTQ6XFx0fVxcbjQzOTU6XFx0XFxuNDM5NjpcXHRpbnQgaXdsX3BjaWVfZ2VuMV8yX2FjdGl2YXRlX25pYyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcXG40Mzk3OlxcdHtcXG40Mzk4OlxcdFxcdGNvbnN0IHN0cnVjdCBpd2xfbWFjX2NmZyAqbWFjX2NmZyA9IHRyYW5zLVxcdTAwM2VtYWNfY2ZnO1xcbjQzOTk6XFx0XFx0dTMyIHBvbGxfcmVhZHk7XFxuNDQwMDpcXHRcXHRpbnQgZXJyO1xcbjQ0MDE6XFx0XFxuNDQwMjpcXHRcXHRpZiAobWFjX2NmZy1cXHUwMDNlYmlzcl93b3JrYXJvdW5kKSB7XFxuNDQwMzpcXHRcXHRcXHQvKiBlbnN1cmUgdGhlIFRPUCBGU00gaXNuJ3Qgc3RpbGwgaW4gcHJldmlvdXMgcmVzZXQgKi9cXG40NDA0OlxcdFxcdFxcdG1kZWxheSgyKTtcXG40NDA1OlxcdFxcdH1cXG40NDA2OlxcdFxcbjQ0MDc6XFx0XFx0LypcXG40NDA4OlxcdFxcdCAqIFNldCBcXFwiaW5pdGlhbGl6YXRpb24gY29tcGxldGVcXFwiIGJpdCB0byBtb3ZlIGFkYXB0ZXIgZnJvbVxcbjQ0MDk6XFx0XFx0ICogRDBVKiAtLVxcdTAwM2UgRDBBKiAocG93ZXJlZC11cCBhY3RpdmUpIHN0YXRlLlxcbjQ0MTA6XFx0XFx0ICovXFxuNDQxMTpcXHRcXHRpZiAobWFjX2NmZy1cXHUwMDNlZGV2aWNlX2ZhbWlseSBcXHUwMDNlPSBJV0xfREVWSUNFX0ZBTUlMWV9CWikge1xcbjQ0MTI6XFx0XFx0XFx0aXdsX3NldF9iaXQodHJhbnMsIENTUl9HUF9DTlRSTCxcXG40NDEzOlxcdFxcdFxcdFxcdCAgICBDU1JfR1BfQ05UUkxfUkVHX0ZMQUdfQlpfTUFDX0FDQ0VTU19SRVEgfFxcbjQ0MTQ6XFx0XFx0XFx0XFx0ICAgIENTUl9HUF9DTlRSTF9SRUdfRkxBR19NQUNfSU5JVCk7XFxuNDQxNTpcXHRcXHRcXHRwb2xsX3JlYWR5ID0gQ1NSX0dQX0NOVFJMX1JFR19GTEFHX01BQ19TVEFUVVM7XFxuNDQxNjpcXHRcXHR9IGVsc2Uge1xcbjQ0MTc6XFx0XFx0XFx0aXdsX3NldF9iaXQodHJhbnMsIENTUl9HUF9DTlRSTCxcXG40NDE4OlxcdFxcdFxcdFxcdCAgICBDU1JfR1BfQ05UUkxfUkVHX0ZMQUdfSU5JVF9ET05FKTtcXG40NDE5OlxcdFxcdFxcdHBvbGxfcmVhZHkgPSBDU1JfR1BfQ05UUkxfUkVHX0ZMQUdfTUFDX0NMT0NLX1JFQURZO1xcbjQ0MjA6XFx0XFx0fVxcbjQ0MjE6XFx0XFxuNDQyMjpcXHRcXHRpZiAobWFjX2NmZy1cXHUwMDNlZGV2aWNlX2ZhbWlseSA9PSBJV0xfREVWSUNFX0ZBTUlMWV84MDAwKVxcbjQ0MjM6XFx0XFx0XFx0dWRlbGF5KDIpO1xcbjQ0MjQ6XFx0XFxuNDQyNTpcXHRcXHQvKlxcbjQ0MjY6XFx0XFx0ICogV2FpdCBmb3IgY2xvY2sgc3RhYmlsaXphdGlvbjsgb25jZSBzdGFiaWxpemVkLCBhY2Nlc3MgdG9cXG40NDI3OlxcdFxcdCAqIGRldmljZS1pbnRlcm5hbCByZXNvdXJjZXMgaXMgc3VwcG9ydGVkLCBlLmcuIGl3bF93cml0ZV9wcnBoKClcXG40NDI4OlxcdFxcdCAqIGFuZCBhY2Nlc3NlcyB0byB1Q29kZSBTUkFNLlxcbjQ0Mjk6XFx0XFx0ICovXFxuNDQzMDpcXHRcXHRlcnIgPSBpd2xfcG9sbF9iaXRzKHRyYW5zLCBDU1JfR1BfQ05UUkwsIHBvbGxfcmVhZHksIDI1MDAwKTtcXG40NDMxOlxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjIzOjQ4LjIyMjYxMjExMVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTA4NDMxNjk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIGludG8gdGhlIGl3bF9kcnZfc3RhcnQgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IGBpd2xfZHJ2X3N0YXJ0YC4gVGhhdCdzIHdoZXJlIHRoZSBpbml0aWFsIGRyaXZlciBzdGFydHVwIHNlcXVlbmNlIGJlZ2lucywgd2hpY2gsIGluIHRoZSBjb250ZXh0IG9mIHRoZSBJbnRlbCBXaXJlbGVzcyBkcml2ZXIsIGlzIGdvaW5nIHRvIGJlIGNyaXRpY2FsLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGggZnJvbSBoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2VxdWVuY2luZyBhbmQgdGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLiBJcyBpdCBnb2luZyB0byB0cmlnZ2VyIGZpcm13YXJlIGxvYWRpbmcsIGhhcmR3YXJlIHByb2JpbmcsIGFuZCByZXNvdXJjZSBhbGxvY2F0aW9uPyBJJ2xsIHByb2JhYmx5IGJlIGRpdmluZyBpbnRvIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgc3RydWN0IGl3bF9wcml2IGFuZCBpdHMgZmllbGRzOiB3aGF0IGdldHMgc2V0IGluaXRpYWxseSwgYW5kIHdoYXQgZ2V0cyBkZWZlcnJlZD8gSSB3YW50IHRvIHNlZSBpZiB0aGlzIGlzIHdoZXJlIHRoZSBtYWluIGRldmljZSBlbnRyeSBwb2ludCBpcyByZWdpc3RlcmVkLiBBIGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgZnVuY3Rpb24gd2lsbCBsZWFkIHRvIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS4gSSBrbm93IHRoYXQgaXNzdWVzIGFyaXNpbmcgZHVyaW5nIHRoaXMgcGhhc2UgYXJlIGxpa2VseSB0byBiZSByZWxhdGVkIHRvIGhhcmR3YXJlIGRldGVjdGlvbiwgZmlybXdhcmUgbG9hZGluZyBlcnJvcnMsIG9yIGluaXRpYWwgcmVnaXN0ZXIgc2V0dXAgc28gaXQgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIHByb2Nlc3MuIFRoZSBmb2N1cyBvZiB1bmRlcnN0YW5kaW5nIHdpbGwgYmUgdGhlIGV4ZWN1dGlvbiBmbG93IGFuZCB0aGUgbWFpbiBkYXRhIHN0cnVjdHVyZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MDgxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyMzo1Mi4zMzEwNDg3ODhaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNzY3MjQ2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfZHJ2X3N0YXJ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTE2MzI9c3RhdGljIHZvaWQgaXdsX3JlcV9md19jYWxsYmFjayhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKnVjb2RlX3Jhdywgdm9pZCAqY29udGV4dClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE5NDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6MTk0ODpzdHJ1Y3QgaXdsX2RydiAqaXdsX2Rydl9zdGFydChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0xOTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTQ3LSAqIDUpIFRoZSBidXMgc3BlY2lmaWMgY29tcG9uZW50IGNhbGxzIHRvIHRoZSBkcnYgYnVzIGFnbm9zdGljIHBhcnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaDo0ODogKiAgICAoaXdsX2Rydl9zdGFydClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaDo0OTogKiA2KSBpd2xfZHJ2X3N0YXJ0IGZldGNoZXMgdGhlIGZ3IEFTWU5DLCBpd2xfcmVxX2Z3X2NhbGxiYWNrXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtNTAtICogNykgaXdsX3JlcV9md19jYWxsYmFjayBwYXJzZXMgdGhlIGZ3IGZpbGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oPTU2PXN0cnVjdCBpd2xfcmZfY2ZnO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTU3LS8qKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oOjU4OiAqIGl3bF9kcnZfc3RhcnQgLSBzdGFydCB0aGUgZHJ2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtNTktICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oLTY3LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oOjY4OnN0cnVjdCBpd2xfZHJ2ICppd2xfZHJ2X3N0YXJ0KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC02OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYz00MjMyPWludCBpd2xfcGNpX2dlbjFfMl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy00MzY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYzo0MzY4OlxcdGl3bF90cmFucy1cXHUwMDNlZHJ2ID0gaXdsX2Rydl9zdGFydChpd2xfdHJhbnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy00MzY5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyMzo1Mi41Mzg3MjkzNzVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY5OTA4NzM0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBc3Nlc3NpbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIGFuIEludGVsIFdpLUZpIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIGBpd2xfZHJ2X3N0YXJ0YCBpcyBmZXRjaGluZyBmaXJtd2FyZSBhc3luY2hyb25vdXNseS4gUmlnaHQsIGFuZCBpZiB0aGUgZmlybXdhcmUncyBtaXNzaW5nLCBpdCBqdXN0IGZhaWxzLiBTeXprYWxsZXIgdXN1YWxseSBoYXMgYSBwcmV0dHkgbWluaW1hbCBzZXR1cCwgbm8gSW50ZWwgV2ktRmkgZmlybXdhcmUgZmlsZXMgdW5sZXNzIHdlIGV4cGxpY2l0bHkgaW5jbHVkZSB0aGVtIGluIHRoZSByb290ZnMuIEJ1dCBpdCBkb2VzIHRlc3QgUENJIGRldmljZXMsIGFuZCB0aGF0IGNhbiB0cmlwIHNvbWUgY29kZSBwYXRocy4gU28gdGhlIHF1ZXN0aW9uIGlzOiBpcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz9cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyB0cml2aWFsLCBhIHNpbmdsZSBsaW5lIGNoYW5nZSBpbiB0aGUgd29ya3F1ZXVlIGFzc2lnbm1lbnQ6XG5cbmBgYGNcbi1cdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fdW5ib3VuZF93cSwgXHUwMDI2dHJhbnMtXHUwMDNlcmVzdGFydC53ayxcbitcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX3dxLCBcdTAwMjZ0cmFucy1cdTAwM2VyZXN0YXJ0LndrLFxuYGBgXG5cbkl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc2hpZnRpbmcgZnJvbSBgc3lzdGVtX3VuYm91bmRfd3FgIHRvIGBzeXN0ZW1fZGZsX3dxYC4gQnV0IHRoYXQncyBpdC4gV2FpdCBhIG1pbnV0ZSwgdGhlIGluc3RydWN0aW9ucyBzYXkgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyBEb2N1bWVudGF0aW9uL0tjb25maWcgZmlsZXMsIGNvZGUgY29tbWVudHMsIGRlY29yYXRpdmUgY2hhbmdlcyBsaWtlIGxvZ2dpbmcsIGNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG9uJ3QgY2hhbmdlIHRoZSBleGVjdXRpb24gZmxvdywgb3IgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cblxuSXMgdGhpcyBwYXRoIHVucmVhY2hhYmxlPyBJZiBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgIG5lZWRzIHRoZSBmaXJtd2FyZSB0byBldmVuIGJlIHJlYWNoZWQsIGFuZCB0aGUgZmlybXdhcmUncyBhYnNlbnQsIHRoZW4gaXQncyBlZmZlY3RpdmVseSBhbiB1bnJlYWNoYWJsZSBjb2RlIHBhdGggaW4gb3VyIHR5cGljYWwgU3l6a2FsbGVyIHNldHVwLiBIbW0sIGJ1dCBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgIGlzIHNjaGVkdWxlZCBieSBgaXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0YC4gQ2FuIGBpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXRgIGJlIGNhbGxlZCBiZWZvcmUgZmlybXdhcmUgaXMgbG9hZGVkPyBXZSBuZWVkIHRvIHZlcmlmeSB0aGUgY2FsbCBjaGFpbiB0byBiZSBzdXJlLiBUaW1lIHRvIHJlLWNoZWNrIHRoZSBjYWxsZXJzIG9mIGBpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXRgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTA2NywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyMzo1OS4yMzc4MjExMDFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMzgzMDcxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaD0xMDAwPWl3bF90cmFuc19yZWxlYXNlX25pY19hY2Nlc3Moc3RydWN0IGl3bF90cmFucyAqdHJhbnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtMTAwMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oOjEwMDI6c3RhdGljIGlubGluZSB2b2lkIGl3bF90cmFuc19zY2hlZHVsZV9yZXNldChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTEwMDMtXFx0XFx0XFx0XFx0XFx0ICAgIGVudW0gaXdsX2Z3X2Vycm9yX3R5cGUgdHlwZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg9MTAyNT1zdGF0aWMgaW5saW5lIHZvaWQgaXdsX3RyYW5zX2Z3X2Vycm9yKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0xMDM0LVxcdFxcdGl3bF9vcF9tb2RlX25pY19lcnJvcih0cmFucy1cXHUwMDNlb3BfbW9kZSwgdHlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaDoxMDM1OlxcdFxcdGl3bF90cmFuc19zY2hlZHVsZV9yZXNldCh0cmFucywgdHlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0xMDM2LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvcnguYz0xODM3PXN0YXRpYyB2b2lkIGl3bF90cmFuc19wY2llX2hhbmRsZV9yZXNldF9pbnRlcnJ1cHQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3J4LmMtMTg4Mi1cXHRcXHRcXHR0cmFucy1cXHUwMDNlc3RhdGUgPSBJV0xfVFJBTlNfTk9fRlc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9yeC5jOjE4ODM6XFx0XFx0XFx0aXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0KHRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvcnguYy0xODg0LVxcdFxcdFxcdFxcdFxcdFxcdCBJV0xfRVJSX1RZUEVfVE9QX1JFU0VUX0JZX0JUKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvcnguYz0yMjYzPWlycXJldHVybl90IGl3bF9wY2llX2lycV9tc2l4X2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9yeC5jLTIzNzItXFx0XFx0XFx0XFx0XFx0ICAgICAgSVdMX0VSUl9UWVBFX1RPUF9GQVRBTF9FUlJPUik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9yeC5jOjIzNzM6XFx0XFx0XFx0aXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0KHRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvcnguYy0yMzc0LVxcdFxcdFxcdFxcdFxcdFxcdCBJV0xfRVJSX1RZUEVfVE9QX0ZBVEFMX0VSUk9SKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMtZ2VuMi5jPTUwND1pbnQgaXdsX3RyYW5zX3BjaWVfZ2VuMl9zdGFydF9mdyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMtZ2VuMi5jLTYyMy1cXHRcXHRcXHRcXHRcXHQgICAgICBJV0xfRVJSX1RZUEVfVE9QX1JFU0VUX0ZBSUxFRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy1nZW4yLmM6NjI0OlxcdFxcdFxcdGl3bF90cmFuc19zY2hlZHVsZV9yZXNldCh0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLWdlbjIuYy02MjUtXFx0XFx0XFx0XFx0XFx0XFx0IElXTF9FUlJfVFlQRV9UT1BfUkVTRVRfRkFJTEVEKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHgtZ2VuMi5jPTExOTc9aW50IGl3bF9wY2llX2dlbjJfZW5xdWV1ZV9oY21kKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90eC1nZW4yLmMtMTI5Ni1cXHRcXHRcXHRcXHQgICAgICBJV0xfRVJSX1RZUEVfQ01EX1FVRVVFX0ZVTEwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHgtZ2VuMi5jOjEyOTc6XFx0XFx0aXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0KHRyYW5zLCBJV0xfRVJSX1RZUEVfQ01EX1FVRVVFX0ZVTEwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHgtZ2VuMi5jLTEyOTgtXFx0XFx0aWR4ID0gLUVOT1NQQztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHguYz0xMzQzPWludCBpd2xfcGNpZV9lbnF1ZXVlX2hjbWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3R4LmMtMTQ1MS1cXHRcXHRcXHRcXHQgICAgICBJV0xfRVJSX1RZUEVfQ01EX1FVRVVFX0ZVTEwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHguYzoxNDUyOlxcdFxcdGl3bF90cmFuc19zY2hlZHVsZV9yZXNldCh0cmFucywgSVdMX0VSUl9UWVBFX0NNRF9RVUVVRV9GVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3R4LmMtMTQ1My1cXHRcXHRpZHggPSAtRU5PU1BDO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyMzo1OS40NTE2NjM2NzZaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTUxNTE1NjQyMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBvdGVudGlhbCBWdWxuZXJhYmlsaXRpZXMgaW4gYGl3bF9wY2llX2lycV9tc2l4X2hhbmRsZXJgKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBpd2xfcGNpZV9pcnFfbXNpeF9oYW5kbGVyYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGl0IG1pZ2h0IGJlIHN1c2NlcHRpYmxlIHRvIGludGVycnVwdCBpbmplY3Rpb24sIHNwZWNpZmljYWxseSB0aHJvdWdoIE1TSS1YIGludGVycnVwdHMuIFRoZSByZWFzb25pbmcgaXM6IGlmIHdlIGNhbiBtYW5pcHVsYXRlIHN5emthbGxlciB0byBpbmplY3QgdGhlc2UgaW50ZXJydXB0cyBzdWNjZXNzZnVsbHksIHdlIGNvdWxkIHBvdGVudGlhbGx5IHRyaWdnZXIgYSBjYWxsIHRvIGBpd2xfdHJhbnNfc2NoZWR1bGVfcmVzZXRgLiBUaGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgd2FudCB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBUaGVyZWZvcmUsIG15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgYGl3bF9wY2llX2lycV9tc2l4X2hhbmRsZXJgIGZ1bmN0aW9uIGNvZGUgaXRzZWxmIHdpdGggYSBjcml0aWNhbCBleWUsIGxvb2tpbmcgZm9yIGFueSB3ZWFrbmVzc2VzIG9yIGFzc3VtcHRpb25zIHRoYXQgY291bGQgYmUgZXhwbG9pdGVkIGluIHRoaXMgaW5qZWN0aW9uIHNjZW5hcmlvLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTIwNCwiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjI0OjE0LjYwMzIzMTk3WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwOTk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3J4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjM2NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjM2NTpcXHRcXG4yMzY2OlxcdFxcdGlmIChpbnRhX2h3IFxcdTAwMjYgTVNJWF9IV19JTlRfQ0FVU0VTX1JFR19UT1BfRkFUQUxfRVJSKSB7XFxuMjM2NzpcXHRcXHRcXHRJV0xfRVJSKHRyYW5zLCBcXFwiVE9QIEZhdGFsIGVycm9yIGRldGVjdGVkLCBpbnRhX2h3PTB4JXguXFxcXG5cXFwiLFxcbjIzNjg6XFx0XFx0XFx0XFx0aW50YV9odyk7XFxuMjM2OTpcXHRcXHRcXHRpZiAodHJhbnMtXFx1MDAzZW1hY19jZmctXFx1MDAzZWRldmljZV9mYW1pbHkgXFx1MDAzZT0gSVdMX0RFVklDRV9GQU1JTFlfQlopIHtcXG4yMzcwOlxcdFxcdFxcdFxcdHRyYW5zLVxcdTAwM2VyZXF1ZXN0X3RvcF9yZXNldCA9IDE7XFxuMjM3MTpcXHRcXHRcXHRcXHRpd2xfb3BfbW9kZV9uaWNfZXJyb3IodHJhbnMtXFx1MDAzZW9wX21vZGUsXFxuMjM3MjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBJV0xfRVJSX1RZUEVfVE9QX0ZBVEFMX0VSUk9SKTtcXG4yMzczOlxcdFxcdFxcdFxcdGl3bF90cmFuc19zY2hlZHVsZV9yZXNldCh0cmFucyxcXG4yMzc0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBJV0xfRVJSX1RZUEVfVE9QX0ZBVEFMX0VSUk9SKTtcXG4yMzc1OlxcdFxcdFxcdH1cXG4yMzc2OlxcdFxcdH1cXG4yMzc3OlxcdFxcbjIzNzg6XFx0XFx0LyogRXJyb3IgZGV0ZWN0ZWQgYnkgdUNvZGUgKi9cXG4yMzc5OlxcdFxcdGlmICgoaW50YV9maCBcXHUwMDI2IE1TSVhfRkhfSU5UX0NBVVNFU19GSF9FUlIpIHx8IHN3X2Vycikge1xcbjIzODA6XFx0XFx0XFx0SVdMX0VSUih0cmFucyxcXG4yMzgxOlxcdFxcdFxcdFxcdFxcXCJNaWNyb2NvZGUgU1cgZXJyb3IgZGV0ZWN0ZWQuIFJlc3RhcnRpbmcgMHglWC5cXFxcblxcXCIsXFxuMjM4MjpcXHRcXHRcXHRcXHRpbnRhX2ZoKTtcXG4yMzgzOlxcdFxcdFxcdGlzcl9zdGF0cy1cXHUwMDNlc3crKztcXG4yMzg0OlxcdFxcdFxcdC8qIGR1cmluZyBGVyByZXNldCBmbG93IHJlcG9ydCBlcnJvcnMgZnJvbSB0aGVyZSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyNDoxNC42MDM0NDM4MloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTYzNzQ2Mjc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBLZXJuZWwgQ3Jhc2ggUm91dGUqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMga2VybmVsIGlzc3VlIGFuZCB0aGlua2luZyBhYm91dCBhIHBvdGVudGlhbCBhdHRhY2sgdmVjdG9yLiBJdCBsb29rcyBsaWtlIGlmIHN5emthbGxlciBjYW4gaW5qZWN0IGFuIE1TSS1YIGludGVycnVwdCwgc3BlY2lmaWNhbGx5IG9uZSB3aGVyZSB0aGUgYGludGFfaHdgIGZsYWcgaGFzIHRoZSBgTVNJWF9IV19JTlRfQ0FVU0VTX1JFR19UT1BfRkFUQUxfRVJSYCBiaXQgc2V0LCBpdCAqbWlnaHQqIGxlYWQgZG93biB0aGUgcmFiYml0IGhvbGUgdG8gYGl3bF90cmFuc19zY2hlZHVsZV9yZXNldGAuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIHBvdGVudGlhbGx5IGV4cGxvaXRhYmxlLiBCdXQgaG9sZCBvbiwgdGhlIGBpd2xfcGNpZV9pcnFfbXNpeF9oYW5kbGVyYCBpcyByZWdpc3RlcmVkIHdoZW4gTVNJLVggaXMgKmVuYWJsZWQqLlxuXG5UaGUgcXVlc3Rpb24gbm93IGJlY29tZXM6IGNhbiB3ZSBlbmFibGUgTVNJLVggc29tZWhvdyAqd2l0aG91dCogZmlybXdhcmUgaW50ZXJ2ZW50aW9uPyBUaGF0IHdvdWxkIGJ5cGFzcyBzb21lIG9mIHRoZSBleHBlY3RlZCBzYWZldHkgY2hlY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGJldHRlci4gTXkgbmV4dCBzdGVwIGlzIHRvIHRyYWNlIHRoZSByZWdpc3RyYXRpb24gb2YgaW50ZXJydXB0IHJlcXVlc3RzLiBUaW1lIHRvIGRpZyBpbnRvIHdoZXJlIGByZXF1ZXN0X2lycWAgaXMgYmVpbmcgY2FsbGVkIGFuZCBzZWUgaG93IE1TSS1YIGZpdHMgaW50byB0aGUgcGljdHVyZS4gTGV0J3Mgc2VlIGlmIHdlIGNhbiBmaW5kIHNvbWUgY2x1ZXMgdGhlcmUuIFRoaXMgY291bGQgYmUgYSBibGluZCBhbGxleSwgYnV0IGl0J3Mgd29ydGggYSBsb29rLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTg2MywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjI0OjE5LjE2NzE5MzcyNloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk0NjA5MTkzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZXF1ZXN0X2lycVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjQ6MTkuNzYxODE1Nzc5WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MTM3MzI4NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipEZWJ1Z2dpbmcgSVJRIEFsbG9jYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gaGl0dGluZyBhIHNuYWcgc29tZXdoZXJlIHdpdGggaW50ZXJydXB0IHJlcXVlc3QgKElSUSkgaGFuZGxpbmcuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgd2hhdCdzIGdvaW5nIG9uLiBMZXQncyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIHRoZSBjcnVjaWFsIElSUSBhbGxvY2F0aW9uIHJvdXRpbmVzLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gbG9vayBjbG9zZWx5IGF0IGVpdGhlciBgcmVxdWVzdF90aHJlYWRlZF9pcnFgIG9yIGBwY2lfYWxsb2NfaXJxX3ZlY3RvcnNgLiBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyByZXNwb25zaWJsZSBmb3IgZ2V0dGluZyBtZSB0aG9zZSBwcmVjaW91cyBpbnRlcnJ1cHRzLCBzbyBhbnkgaXNzdWVzIGFyZSBsaWtlbHkgc3VyZmFjaW5nIHRoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBpcyBhbGxvY2F0aW5nIHRoZW0gYW5kIGlmIHNvbWV0aGluZyBpc24ndCBxdWl0ZSByaWdodCBpbiB0aGUgbG9naWMuIEdvdHRhIGNoZWNrIHRoZSBhcmd1bWVudHMgYmVpbmcgcGFzc2VkLCB0aGUgcmV0dXJuIHZhbHVlcywgYW5kIGFueSBwb3RlbnRpYWwgZXJyb3IgY29uZGl0aW9ucyBiZWluZyBoYW5kbGVkLiBQZXJoYXBzIHRoZSBpbnRlcnJ1cHQgdmVjdG9yIHRhYmxlIGlzIGZ1bGwsIG9yIG1heWJlIHRoZXJlJ3MgYSByZXNvdXJjZSBjb25mbGljdCBzb21ld2hlcmUuIFRoaXMgaXMgd2hlcmUgdGhlIGRldGVjdGl2ZSB3b3JrIGJlZ2lucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIyNTMsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyNDoyMy42NzU1NTE3OThaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNDA2NjAyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZXF1ZXN0X3RocmVhZGVkX2lycVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM9MTY5Nz1zdGF0aWMgaW50IGl3bF9wY2llX2luaXRfbXNpeF9oYW5kbGVyKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTE3MTEtXFx0XFx0bXNpeF9lbnRyeSA9IFxcdTAwMjZ0cmFuc19wY2llLVxcdTAwM2Vtc2l4X2VudHJpZXNbaV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jOjE3MTI6XFx0XFx0cmV0ID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0xNzEzLVxcdFxcdFxcdFxcdFxcdFxcdG1zaXhfZW50cnktXFx1MDAzZXZlY3RvcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYz0zODAwPWl3bF90cmFuc19wY2llX2FsbG9jKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTM5NjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jOjM5Njc6XFx0XFx0cmV0ID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwZGV2LVxcdTAwM2VpcnEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTM5NjgtXFx0XFx0XFx0XFx0XFx0XFx0aXdsX3BjaWVfaXNyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyNDoyMy44ODk2MjgzNzRaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI5NTM1NjkyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHdoYXQncyBnb2luZyBvbiwgZnJhbWVkIGFzIGEgZmlyc3QtcGVyc29uIHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipEaXZpbmcgaW50byBgaXdsX3BjaWVfaW5pdF9tc2l4X2hhbmRsZXJgKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBmdW5jdGlvbiwgYGl3bF9wY2llX2luaXRfbXNpeF9oYW5kbGVyYC4gSW1tZWRpYXRlbHksIHRoZSBuYW1lIHRlbGxzIG1lIHdlJ3JlIGRlYWxpbmcgd2l0aCBNU0ktWCBpbnRlcnJ1cHQgaGFuZGxpbmcgd2l0aGluIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIgZm9yIFBDSWUgZGV2aWNlcy4gVGhhdCBtZWFucyB3ZSdyZSBsaWtlbHkgY29uZmlndXJpbmcgYW5kIHJlZ2lzdGVyaW5nIGFuIE1TSS1YIGludGVycnVwdCBoYW5kbGVyIGZvciB0aGUgSW50ZWwgd2lyZWxlc3MgYWRhcHRlciwgc3BlY2lmaWNhbGx5IGZvciBhIFBDSWUgYnVzLiBUaGlzIGlzIGtleSB0byBtb2Rlcm4sIGVmZmljaWVudCBpbnRlcnJ1cHQgbWFuYWdlbWVudC4gV2l0aCBNU0ktWCwgd2UgY2FuIGFsbG9jYXRlIGEgZGVkaWNhdGVkIGludGVycnVwdCB2ZWN0b3IgZm9yIGVhY2ggZGV2aWNlIGZ1bmN0aW9uLCBtaW5pbWl6aW5nIGludGVycnVwdCBsYXRlbmN5IGFuZCBpbXByb3ZpbmcgcGVyZm9ybWFuY2UsIGVzcGVjaWFsbHkgdW5kZXIgaGVhdnkgbmV0d29yayBsb2FkLiBJJ20gZXhwZWN0aW5nIHRoaXMgZnVuY3Rpb24gdG8gYmUgdGhlIGNvcmUgb2YgZW5hYmxpbmcgdGhvc2UgY2FwYWJpbGl0aWVzIGZvciB0aGUgY2FyZC4gSSBiZXQgaXQnbGwgaW5pdGlhbGl6ZSB0aGUgTVNJLVggdGFibGUsIHNldCB1cCB0aGUgaW50ZXJydXB0IHZlY3RvcnMsIGFuZCBwcm9iYWJseSByZWdpc3RlciB0aGUgaGFuZGxlciBmdW5jdGlvbiB3aXRoIHRoZSBrZXJuZWwuIEkgd29uZGVyIHdoYXQgdGhlIHNwZWNpZmljIGRldGFpbHMgYXJlIGZvciB0aGlzIGRyaXZlcidzIGNvbmZpZ3VyYXRpb24uIEkgaG9wZSB0aGV5IGFyZSB0YWtpbmcgcHJvcGVyIHByZWNhdXRpb25zIGFuZCBjb25zaWRlcmF0aW9ucyBmb3IgZXJyb3IgaGFuZGxpbmcuIExldCdzIHNlZSBob3cgaXQncyBpbXBsZW1lbnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI4NzksIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyNDoyOC4xODQ5ODg2NVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUxODYyMjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9wY2llX2luaXRfbXNpeF9oYW5kbGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYz0xNjcwPXN0YXRpYyB2b2lkIGl3bF9wY2llX2lycV9zZXRfYWZmaW5pdHkoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtMTY5Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM6MTY5NzpzdGF0aWMgaW50IGl3bF9wY2llX2luaXRfbXNpeF9oYW5kbGVyKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0xNjk4LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBpd2xfdHJhbnNfcGNpZSAqdHJhbnNfcGNpZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYz0zODAwPWl3bF90cmFuc19wY2llX2FsbG9jKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTM5NTgtXFx0aWYgKHRyYW5zX3BjaWUtXFx1MDAzZW1zaXhfZW5hYmxlZCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYzozOTU5OlxcdFxcdHJldCA9IGl3bF9wY2llX2luaXRfbXNpeF9oYW5kbGVyKHBkZXYsIHRyYW5zX3BjaWUsIGluZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0zOTYwLVxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjI0OjI4LjQzNjg2MzM4MVoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NDg4NjU5Nzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldDogV29ya3F1ZXVlIENoYW5nZSBpbiBpd2wgV2lGaSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjaW5nIHRoZSBleGVjdXRpb24gcGF0aC4gYGl3bF9wY2llX2luaXRfbXNpeF9oYW5kbGVyYCBnZXRzIGNhbGxlZCB3aXRoaW4gYGl3bF90cmFuc19wY2llX2FsbG9jYCwgd2hpY2ggaXRzZWxmIGlzIGNhbGxlZCBpbiBgaXdsX3BjaV9nZW4xXzJfcHJvYmVgLiBBbHJpZ2h0LCBzbyB0aGUgSVJRIGhhbmRsZXIgaXMgcmVnaXN0ZXJlZCAqZHVyaW5nKiB0aGUgcHJvYmUgc2VxdWVuY2UsIGV2ZW4gYmVmb3JlIHRoZSBmaXJtd2FyZSBpcyBsb2FkZWQuIFRoYXQncyBpbnRlcmVzdGluZy4uLiB0aGF0IG1lYW5zIHN5emthbGxlciBjb3VsZCBwb3RlbnRpYWxseSBpbmplY3QgYW4gaW50ZXJydXB0IHByZXR0eSBlYXJseSBvbi4gVGhpcyBpbnRlcnJ1cHQgd291bGQgdHJpZ2dlciBgaXdsX3RyYW5zX3NjaGVkdWxlX3Jlc2V0YCwgcXVldWluZyBgdHJhbnMtXHUwMDNlcmVzdGFydC53a2AuIFRoZSB3b3JrIGZ1bmN0aW9uIGl0c2VsZiBpcyBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgLlxuXG5IYW5nIG9uIGEgc2VjLi4uIHRoZSB3b3JrIGlzIHF1ZXVlZCBvbiBgc3lzdGVtX2RmbF93cWAsIG5vdCBgc3lzdGVtX3VuYm91bmRfd3FgLiBOb3cgdGhhdCBpcyBhIHN1YnRsZSwgYnV0IGZ1bmN0aW9uYWxseSByZWxldmFudCBjaGFuZ2UuIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBldmVuIHdvcnRoIGZ1enppbmc/IEl0J3Mgbm90IGludHJvZHVjaW5nIG5ldyBjb2RlLCBqdXN0IG1vZGlmeWluZyB3aGVyZSB0aGUgd29yayBnZXRzIHNjaGVkdWxlZC4gQnV0LCB0aGUgaW5zdHJ1Y3Rpb25zIHNheSB0aGF0IGNoYW5nZXMgdG8gZXhlY3V0aW9uIGZsb3cgKmFyZSogd29ydGggZnV6emluZy4gXG5cbkxldCdzIGJyZWFrIGl0IGRvd246IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczogZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgY29tbWVudHMsIGxvZ2dpbmcsIGNvbnN0YW50cyB0aGF0IGRvbid0IGFsdGVyIGV4ZWN1dGlvbiBvciB1bnJlYWNoYWJsZSBjb2RlXCIuIENoYW5naW5nIHRoZSB3b3JrcXVldWUgZGVmaW5pdGVseSBhbHRlcnMgdGhlIGV4ZWN1dGlvbiBmbG93OyBpdCBydW5zIG9uIGEgZGlmZmVyZW50IHdvcmtxdWV1ZSB3aGljaCBjb3VsZCBoYXZlIGRpZmZlcmVudCBjb25jdXJyZW5jeS4gQW5kIGlzIGl0IHVucmVhY2hhYmxlPyBOb3BlLCB3ZSBqdXN0IGVzdGFibGlzaGVkIHdlIGNhbiBoaXQgYGl3bF90cmFuc19zY2hlZHVsZV9yZXNldGAgdGhyb3VnaCBhbiBpbnRlcnJ1cHQgaW5qZWN0ZWQgZHVyaW5nIHByb2JlLCBldmVuIGJlZm9yZSBmaXJtd2FyZS5cblxuV2FpdCwgbG9va2luZyBhdCBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgLCBpdCBjaGVja3MgYHRyYW5zLVx1MDAzZW9wX21vZGVgLiBPa2F5LCBsZXQncyBkaWcgaW50byB3aGF0IGBpd2xfdHJhbnNfcmVzdGFydF93a2AgYWN0dWFsbHkgZG9lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM1NzcsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjQ6MzUuOTI1NTI2NDc3WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MzMxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwMixcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIwMjpcXHRzdGF0aWMgdm9pZCBpd2xfdHJhbnNfcmVzdGFydF93ayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndrKVxcbiAyMDM6XFx0e1xcbiAyMDQ6XFx0XFx0c3RydWN0IGl3bF90cmFucyAqdHJhbnMgPSBjb250YWluZXJfb2Yod2ssIHR5cGVvZigqdHJhbnMpLFxcbiAyMDU6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHJlc3RhcnQud2sud29yayk7XFxuIDIwNjpcXHRcXHRlbnVtIGl3bF9yZXNldF9tb2RlIG1vZGU7XFxuIDIwNzpcXHRcXG4gMjA4OlxcdFxcdGlmICh0cmFucy1cXHUwMDNlcmVzdGFydC5tb2RlLnR5cGUgPT0gSVdMX0VSUl9UWVBFX1RPUF9SRVNFVF9CWV9CVCkge1xcbiAyMDk6XFx0XFx0XFx0aXdsX3RyYW5zX3NjaGVkdWxlX3JlcHJvYmUodHJhbnMsIElXTF9UUkFOU19UT1BfRk9MTE9XRVJfV0FJVCk7XFxuIDIxMDpcXHRcXHRcXHRyZXR1cm47XFxuIDIxMTpcXHRcXHR9XFxuIDIxMjpcXHRcXG4gMjEzOlxcdFxcdGlmICghdHJhbnMtXFx1MDAzZW9wX21vZGUpXFxuIDIxNDpcXHRcXHRcXHRyZXR1cm47XFxuIDIxNTpcXHRcXG4gMjE2OlxcdFxcdC8qIG1pZ2h0IGhhdmUgYmVlbiBzY2hlZHVsZWQgYmVmb3JlIG1hcmtlZCBhcyBkZWFkLCByZS1jaGVjayAqL1xcbiAyMTc6XFx0XFx0aWYgKHRlc3RfYml0KFNUQVRVU19UUkFOU19ERUFELCBcXHUwMDI2dHJhbnMtXFx1MDAzZXN0YXR1cykpXFxuIDIxODpcXHRcXHRcXHRyZXR1cm47XFxuIDIxOTpcXHRcXG4gMjIwOlxcdFxcdGl3bF9vcF9tb2RlX2R1bXBfZXJyb3IodHJhbnMtXFx1MDAzZW9wX21vZGUsIFxcdTAwMjZ0cmFucy1cXHUwMDNlcmVzdGFydC5tb2RlKTtcXG4gMjIxOlxcdFxcbiAyMjI6XFx0XFx0LypcXG4gMjIzOlxcdFxcdCAqIElmIHRoZSBvcG1vZGUgc3RvcHBlZCB0aGUgZGV2aWNlIHdoaWxlIHdlIHdlcmUgdHJ5aW5nIHRvIGR1bXAgYW5kXFxuIDIyNDpcXHRcXHQgKiByZXNldCwgdGhlbiB3ZSdsbCBoYXZlIGRvbmUgdGhlIGR1bXAgYWxyZWFkeSAoc3luY2hyb25pemVkIGJ5IHRoZVxcbiAyMjU6XFx0XFx0ICogb3Btb2RlIGxvY2sgdGhhdCBpdCB3aWxsIGFjcXVpcmUgaW4gaXdsX29wX21vZGVfZHVtcF9lcnJvcigpKSBhbmRcXG4gMjI2OlxcdFxcdCAqIG1hbmFnZWQgdGhhdCB2aWEgdHJhbnMtXFx1MDAzZXJlc3RhcnQubW9kZS5cXG4gMjI3OlxcdFxcdCAqIEFkZGl0aW9uYWxseSwgbWFrZSBzdXJlIHRoYXQgaW4gc3VjaCBhIGNhc2Ugd2Ugd29uJ3QgYXR0ZW1wdCB0byBkb1xcbiAyMjg6XFx0XFx0ICogYW55IHJlc2V0cyBub3csIHNpbmNlIGl0J3Mgbm8gbG9uZ2VyIHJlcXVlc3RlZC5cXG4gMjI5OlxcdFxcdCAqL1xcbiAyMzA6XFx0XFx0aWYgKCF0ZXN0X2FuZF9jbGVhcl9iaXQoU1RBVFVTX1JFU0VUX1BFTkRJTkcsIFxcdTAwMjZ0cmFucy1cXHUwMDNlc3RhdHVzKSlcXG4gMjMxOlxcdFxcdFxcdHJldHVybjtcXG4gMjMyOlxcdFxcbiAyMzM6XFx0XFx0aWYgKCFpd2x3aWZpX21vZF9wYXJhbXMuZndfcmVzdGFydClcXG4gMjM0OlxcdFxcdFxcdHJldHVybjtcXG4gMjM1OlxcdFxcbiAyMzY6XFx0XFx0bW9kZSA9IGl3bF90cmFuc19kZXRlcm1pbmVfcmVzdGFydF9tb2RlKHRyYW5zKTtcXG4gMjM3OlxcdFxcdGlmIChtb2RlID09IElXTF9SRVNFVF9NT0RFX0JBQ0tPRkYpIHtcXG4gMjM4OlxcdFxcdFxcdElXTF9FUlIodHJhbnMsIFxcXCJUb28gbWFueSBkZXZpY2UgZXJyb3JzIC0gZGVsYXkgbmV4dCByZXNldFxcXFxuXFxcIik7XFxuIDIzOTpcXHRcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF93cSwgXFx1MDAyNnRyYW5zLVxcdTAwM2VyZXN0YXJ0LndrLFxcbiAyNDA6XFx0XFx0XFx0XFx0XFx0ICAgSVdMX1RSQU5TX1JFU0VUX0RFTEFZKTtcXG4gMjQxOlxcdFxcdFxcdHJldHVybjtcXG4gMjQyOlxcdFxcdH1cXG4gMjQzOlxcdFxcbiAyNDQ6XFx0XFx0aXdsX3RyYW5zX2luY19yZXN0YXJ0X2NvdW50KHRyYW5zLVxcdTAwM2VkZXYpO1xcbiAyNDU6XFx0XFxuIDI0NjpcXHRcXHRzd2l0Y2ggKG1vZGUpIHtcXG4gMjQ3OlxcdFxcdGNhc2UgSVdMX1JFU0VUX01PREVfVE9QX1JFU0VUOlxcbiAyNDg6XFx0XFx0XFx0dHJhbnMtXFx1MDAzZWRvX3RvcF9yZXNldCA9IDE7XFxuIDI0OTpcXHRcXHRcXHRJV0xfRVJSKHRyYW5zLCBcXFwiRGV2aWNlIGVycm9yIC0gVE9QIHJlc2V0XFxcXG5cXFwiKTtcXG4gMjUwOlxcdFxcdFxcdGZhbGx0aHJvdWdoO1xcbiAyNTE6XFx0XFx0Y2FzZSBJV0xfUkVTRVRfTU9ERV9TV19SRVNFVDpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjQ6MzUuOTI1NzEyODU3WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NDIyNTQ5OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGVzZSB0aG91Z2h0cywgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyB0aGUgYXVkaWVuY2UgaXMgYW5vdGhlciBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBhIENvbmRpdGlvbmFsIFJldHVybioqXG5cbkFscmlnaHQsIEknbSBsb29raW5nIGF0IHRoaXMgcGllY2Ugb2YgY29kZSBhbmQgaW1tZWRpYXRlbHkgc2VlIGEgY29uZGl0aW9uYWwgcmV0dXJuOiBgaWYgKCF0cmFucy1cdTAwM2VvcF9tb2RlKWAuIE15IGZpcnN0IHRob3VnaHQgaXMsIFwiT2theSwgdGhhdCdzIGEgcXVpY2sgZXhpdC5cIiBCdXQgdGhlIGZvbGxvdy11cCBxdWVzdGlvbiBpcyBhbHdheXMgKndoeSo/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZW4gYHRyYW5zLVx1MDAzZW9wX21vZGVgIGlzIGFjdHVhbGx5IHNldC4gSXQncyBjcnVjaWFsIHRvIGtub3cgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzIHdlJ3JlIGJ5cGFzc2luZyB0aGUgcmVzdCBvZiB0aGUgZnVuY3Rpb24uXG5cblNvLCB3aGVyZSBpcyB0aGlzIGBvcF9tb2RlYCBmbGFnIGluaXRpYWxpemVkIG9yIG1vZGlmaWVkPyBNeSBndXQgZmVlbGluZyBpcyB0aGF0IGl0J3MgZ29pbmcgdG8gYmUgaW4gYW4gaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gbGlrZSBgaXdsX29wX21vZGVfc3RhcnRgLCBvciBzb21ldGhpbmcgc2ltaWxhcmx5IG5hbWVkIHRoYXQgZGVhbHMgd2l0aCBzZXR0aW5nIHVwIHRoZSBvcGVyYXRpb25hbCBtb2RlIG9mIHRoZSBkZXZpY2UuIEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSByZWxldmFudCBjb2RlIGFuZCBzZWUgdGhlIGxvZ2ljIGFyb3VuZCB0aGF0IHZhcmlhYmxlLiBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoaXMgY29uZGl0aW9uYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MjU4LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyNDozOS44Njc5NzA5MDNaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzA5NTY4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0cmFucy1cXHUwMDNlb3BfbW9kZSA9XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM9Mzg3PXZvaWQgaXdsX3RyYW5zX29wX21vZGVfZW50ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTM4OS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzozOTA6XFx0dHJhbnMtXFx1MDAzZW9wX21vZGUgPSBvcF9tb2RlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMzkxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYz00MTI9dm9pZCBpd2xfdHJhbnNfb3BfbW9kZV9sZWF2ZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtNDIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6NDIzOlxcdHRyYW5zLVxcdTAwM2VvcF9tb2RlID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTQyNC1cXHRtZW1zZXQoXFx1MDAyNnRyYW5zLVxcdTAwM2Vjb25mLCAwLCBzaXplb2YodHJhbnMtXFx1MDAzZWNvbmYpKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjQ6NDAuMDkxMTQ1NzM4WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NDY0MDc5NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqVHJhY2luZyB0aGUgQ2FsbGVycyBvZiBgaXdsX3RyYW5zX29wX21vZGVfZW50ZXJgKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBzdXJyb3VuZGluZyBgaXdsX3RyYW5zX29wX21vZGVfZW50ZXJgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBmaW5kIG91dCB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5ICp1c2VkKi4gSSdsbCBuZWVkIHRvIGxvY2F0ZSBhbGwgb2YgaXRzIGNhbGwgc2l0ZXMuIEtub3dpbmcgdGhlIGNhbGwgZ3JhcGggd2lsbCBnaXZlIG1lIGEgY3JpdGljYWwgdW5kZXJzdGFuZGluZyBvZiB0aGUgZW50cnkgcG9pbnRzIGludG8gdGhpcyBvcGVyYXRpb25hbCBtb2RlIG1hbmFnZW1lbnQuIFRoaXMgd2lsbCBsaWtlbHkgcHJvdmlkZSBpbnNpZ2h0IGludG8gaG93IHRoZSB2YXJpb3VzIG9wZXJhdGlvbmFsIG1vZGVzIChhY3RpdmUsIHNsZWVwLCBldGMuKSBhcmUgZW50ZXJlZCBhbmQgZXhpdGVkLiBJJ20gYXNzdW1pbmcgdGhpcyBmdW5jdGlvbiBpcyBjZW50cmFsIHRvIHRoZSBkcml2ZXIncyBwb3dlciBtYW5hZ2VtZW50IGFuZC9vciBvcGVyYXRpb25hbCBzdGF0ZSB0cmFuc2l0aW9ucy4gTGV0J3Mgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBjcm9zcy1yZWZlcmVuY2VzLiBJIGV4cGVjdCB0aGUgY2FsbCBzaXRlcyB0byBpbGx1bWluYXRlIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIgdHJhbnNpdGlvbnMgYmV0d2VlbiBkaWZmZXJlbnQgb3BlcmF0aW9uYWwgc3RhdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTgzMywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjI0OjQ0LjkzNzU1NzkzMloiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2NTcwNTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF90cmFuc19vcF9tb2RlX2VudGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYz0xMjMzPXN0YXRpYyBzdHJ1Y3QgaXdsX29wX21vZGUgKml3bF9vcF9tb2RlX2R2bV9zdGFydChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYy0xMzYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYzoxMzYzOlxcdGl3bF90cmFuc19vcF9tb2RlX2VudGVyKHByaXYtXFx1MDAzZXRyYW5zLCBvcF9tb2RlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTM2NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM9Mzg1PUlXTF9FWFBPUlRfU1lNQk9MKGl3bF9nZXRfY21kX3N0cmluZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0zODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzozODc6dm9pZCBpd2xfdHJhbnNfb3BfbW9kZV9lbnRlcihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTM4OC1cXHRcXHRcXHQgICAgIHN0cnVjdCBpd2xfb3BfbW9kZSAqb3BfbW9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMzk5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjQwMDpJV0xfRVhQT1JUX1NZTUJPTChpd2xfdHJhbnNfb3BfbW9kZV9lbnRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy00MDEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oPTM3Mj1zdHJ1Y3QgaXdsX2R1bXBfc2FuaXRpemVfb3BzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtMzgwLSAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaDozODE6ICogVGhlc2UgdmFsdWVzIHNob3VsZCBiZSBzZXQgYmVmb3JlIGl3bF90cmFuc19vcF9tb2RlX2VudGVyKCkuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0zODItICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg9ODE3PWNvbnN0IGNoYXIgKml3bF9nZXRfY21kX3N0cmluZyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgdTMyIGlkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTgxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oOjgxOTp2b2lkIGl3bF90cmFuc19vcF9tb2RlX2VudGVyKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtODIwLVxcdFxcdFxcdCAgICAgc3RydWN0IGl3bF9vcF9tb2RlICpvcF9tb2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21sZC5jPTM0OT1pd2xfbWxkX2NvbmZpZ3VyZV90cmFucyhzdHJ1Y3QgaXdsX29wX21vZGUgKm9wX21vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tbGQuYy0zODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWxkLmM6Mzg0OlxcdGl3bF90cmFuc19vcF9tb2RlX2VudGVyKHRyYW5zLCBvcF9tb2RlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tbGQuYy0zODUtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vb3BzLmM9MTE5Nz1pd2xfb3BfbW9kZV9tdm1fc3RhcnQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHN0cnVjdCBpd2xfcmZfY2ZnICpjZmcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuYy0xNDM1LVxcdC8qIENvbmZpZ3VyZSB0cmFuc3BvcnQgbGF5ZXIgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuYzoxNDM2OlxcdGl3bF90cmFuc19vcF9tb2RlX2VudGVyKG12bS1cXHUwMDNldHJhbnMsIG9wX21vZGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jLTE0MzctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjI0OjQ1LjE0NDE5MTY4OVoiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NDMxNDE4MTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBBbmFseXNpczogaXdsd2lmaSBXb3JrcXVldWUgQ2hhbmdlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgaXdsX29wX21vZGVfZHZtX3N0YXJ0YCBhbmQgYGl3bF9vcF9tb2RlX212bV9zdGFydGAgZ2V0dGluZyBjYWxsZWQgc2lnbmlmeSB0aGUgc3RhcnQgb2YgdGhlIG9wX21vZGUgYWZ0ZXIgZmlybXdhcmUgaXMgbG9hZGVkLiBTbywgdGhlIGB0cmFucy1cdTAwM2VvcF9tb2RlYCBpcyAqb25seSogc2V0IGFmdGVyIHRoYXQgZmlybXdhcmUgaXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBhbmQgcGFyc2VkLiBJZiB0aGUgZmlybXdhcmUgaXMgbWlzc2luZywgYHRyYW5zLVx1MDAzZW9wX21vZGVgIHdpbGwgYmUgTlVMTCwgYW5kIHRoZSBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgIGZ1bmN0aW9uIHdvdWxkIGJhaWwgb3V0IGVhcmx5LiBJbiBmYWN0LCBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgIGRpcmVjdGx5IGNoZWNrcyBmb3IgYCF0cmFucy1cdTAwM2VvcF9tb2RlYCBhbmQgcmV0dXJucyBpZiBpdCdzIHRydWUuIFRodXMsIHRoaXMgcGF0Y2gsIHRoZSBgcXVldWVfZGVsYXllZF93b3JrYCBjYWxsLCBpcyBvbmx5IGV2ZXIgcmVhY2hlZCBpZiBgdHJhbnMtXHUwMDNlb3BfbW9kZWAgKmlzKiBzZXQsIHdoaWNoIGNvbmZpcm1zIGZpcm13YXJlIGlzIGxvYWRlZC5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGZvciBmdXp6aW5nOiBEb2VzIHN5emthbGxlciBldmVuIGhhdmUgdGhlIGBpd2x3aWZpYCBmaXJtd2FyZT8gQmFzZWQgb24gbXkgZXhwZXJpZW5jZSB3aXRoIHN5emthbGxlciBpbnN0YW5jZXMsIGVzcGVjaWFsbHkgb24gR0NFLCBpdCdzIHZlcnkgdW5saWtlbHkuIFVubGVzcyB0aGUgZmlybXdhcmUgaXMgZXhwbGljaXRseSBpbmNsdWRlZCBpbiB0aGUgaW1hZ2UsIHN5emthbGxlciBkZXBsb3ltZW50cyBnZW5lcmFsbHkgZG8gbm90IHNoaXAgd2l0aCBpdCwgZGVzcGl0ZSBmdXp6aW5nIFBDSSBkZXZpY2VzIGFzIHBhcnQgb2YgaXRzIGNvcmUgZnVuY3Rpb25hbGl0eS5cblxuU28sIGlzIHRoaXMgcGF0Y2ggd29ydGggZnV6emluZz8gSG9uZXN0bHksIGl0J3MganVzdCBjaGFuZ2luZyBgc3lzdGVtX3VuYm91bmRfd3FgIHRvIGBzeXN0ZW1fZGZsX3dxYC4gRXZlbiBpZiByZWFjaGFibGUsIGl0J3MgYSBvbmUtbGluZSB3b3JrcXVldWUgY2hhbmdlLiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzIHdoZXRoZXIgdGhlIGNvZGUgcGF0aCBpcyAqcmVhY2hhYmxlKi5cblxuVG8gYW5zd2VyIHRoZSAnV29ydGhGdXp6aW5nPWZhbHNlJyBjcml0ZXJpYSwgSSBuZWVkIHRvIGp1c3RpZnkgbXkgcmVhc29uaW5nLiBJIGhhdmUgdG8gYXNrIG15c2VsZiwgaXMgdGhpcyBjb2RlIHBhdGggaW1wb3NzaWJsZSB0byByZWFjaD8gQWJzb2x1dGVseS4gU2luY2UgYGl3bHdpZmlgIHJlbGllcyBvbiBwcm9wcmlldGFyeSBJbnRlbCBmaXJtd2FyZSB0byBpbml0aWFsaXplIHRoZSBgb3BfbW9kZWAsIGFuZCB0aGF0IGZpcm13YXJlIGlzIHVubGlrZWx5IHRvIGJlIHByZXNlbnQsIGBpd2xfcGNpX3Byb2JlYCBvciBgaXdsX2Rydl9zdGFydGAgd2lsbCBmYWlsIHRvIGxvYWQgdGhlIGZpcm13YXJlIGFuZCwgdGhlcmVmb3JlLCB0aGUgYHRyYW5zLVx1MDAzZW9wX21vZGVgIHdpbGwgbmV2ZXIgYmUgc2V0LiBJdCB3aWxsIHN0b3AgbXVjaCBlYXJsaWVyIHdpdGggYSBmaXJtd2FyZSBsb2FkIGZhaWx1cmUuIGBpd2xfcmVxX2Z3X2NhbGxiYWNrYCBnZXRzIGNhbGxlZCB3aGVuIGZpcm13YXJlIGlzIGxvYWRlZDsgaWYgbm90LCBpdCBmYWlscy5cblxuVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGlzIHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgc3l6a2FsbGVyIHNldHVwLlxuXG4qKldvcnRoRnV6emluZz1mYWxzZSoqXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MDc3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjI0OjUzLjU3NTYxMjU5OVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA4NzYwNDAwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfcmVxX2Z3X2NhbGxiYWNrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTI5Mz1JV0xfRVhQT1JUX1NZTUJPTChpd2xfZHJ2X2dldF9md25hbWVfcHJlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0yOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6Mjk1OnN0YXRpYyB2b2lkIGl3bF9yZXFfZndfY2FsbGJhY2soY29uc3Qgc3RydWN0IGZpcm13YXJlICp1Y29kZV9yYXcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMjk2LVxcdFxcdFxcdFxcdHZvaWQgKmNvbnRleHQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9MzI1PXN0YXRpYyBpbnQgaXdsX3JlcXVlc3RfZmlybXdhcmUoc3RydWN0IGl3bF9kcnYgKmRydiwgYm9vbCBmaXJzdClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTM4NS1cXHRcXHRcXHRcXHQgICAgICAgZHJ2LVxcdTAwM2V0cmFucy1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjM4NjpcXHRcXHRcXHRcXHQgICAgICAgR0ZQX0tFUk5FTCwgZHJ2LCBpd2xfcmVxX2Z3X2NhbGxiYWNrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0zODctfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9MTYwOT1zdGF0aWMgdm9pZCBfaXdsX29wX21vZGVfc3RvcChzdHJ1Y3QgaXdsX2RydiAqZHJ2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmMtMTYyNi0vKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjE2Mjc6ICogaXdsX3JlcV9md19jYWxsYmFjayAtIGNhbGxiYWNrIHdoZW4gZmlybXdhcmUgd2FzIGxvYWRlZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE2MjgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE2MzEtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6MTYzMjpzdGF0aWMgdm9pZCBpd2xfcmVxX2Z3X2NhbGxiYWNrKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqdWNvZGVfcmF3LCB2b2lkICpjb250ZXh0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE2MzMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmgtNDgtICogICAgKGl3bF9kcnZfc3RhcnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6NDk6ICogNikgaXdsX2Rydl9zdGFydCBmZXRjaGVzIHRoZSBmdyBBU1lOQywgaXdsX3JlcV9md19jYWxsYmFja1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5oOjUwOiAqIDcpIGl3bF9yZXFfZndfY2FsbGJhY2sgcGFyc2VzIHRoZSBmdyBmaWxlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2Lmg6NTE6ICogOCkgaXdsX3JlcV9md19jYWxsYmFjayBzdGFydHMgdGhlIHdpZmkgaW1wbGVtZW50YXRpb24gdG8gbWF0Y2hlcyB0aGUgZndcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuaC01Mi0gKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjQ6NTUuNjYzMjMwODY0WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2NDc3NDIyMTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIEZpcm13YXJlIFJlcXVlc3QgQ2FsbGJhY2sqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcyBgaXdsX3JlcV9md19jYWxsYmFja2AgZnVuY3Rpb24uIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGhhbmRsZXMgdGhlIFwiZmlybXdhcmUgbm90IGZvdW5kXCIgc2NlbmFyaW8uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBncmFjZWZ1bCBkZWdyYWRhdGlvbiwgYW55IGVycm9yIHJlcG9ydGluZywgcmV0cmllcywgZmFsbGJhY2sgbWVjaGFuaXNtcywgb3IgZXZlbiBwb3RlbnRpYWwga2VybmVsIHBhbmljcyB0aGF0IG1pZ2h0IGJlIHRyaWdnZXJlZCBpZiB0aGUgZmlybXdhcmUgaXNuJ3QgcHJlc2VudCBkdXJpbmcgdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIG9yIGNyaXRpY2FsIG9wZXJhdGlvbmFsIHBoYXNlcy4gSSdsbCBiZSBsb29raW5nIGZvciBjbHVlcyBvbiBob3cgdGhlIGRyaXZlciByZWNvdmVycywgbG9ncyB0aGUgZXJyb3IsIGFuZCB3aGV0aGVyIGl0IGF0dGVtcHRzIGFsdGVybmF0aXZlIGFwcHJvYWNoZXMuIEknbSBrZWVuIHRvIGRldGVybWluZSBpZiB0aGlzIGNhbGxiYWNrIGlzIHRoZSBkZWZpbml0aXZlIHBvaW50IG9mIGZhaWx1cmUsIG9yIGlmIHRoZXJlJ3MgYW55IGNsZXZlcm5lc3MgYnVpbHQtaW4gdGhhdCBtaWdodCBzdXJwcmlzZSBtZS4gRXNzZW50aWFsbHksIEknbSBleHBlY3RpbmcgdGhpcyB0byBiZSBhbiBpbXBvcnRhbnQgcGllY2Ugb2YgZXJyb3IgaGFuZGxpbmcgYW5kIEkgaW50ZW5kIHRvIHVuZGVyc3RhbmQgaXQgZnVsbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4ODY1LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjU6MTIuMTQwNjU3MDI4WiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNDY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjMyLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNjMyOlxcdHN0YXRpYyB2b2lkIGl3bF9yZXFfZndfY2FsbGJhY2soY29uc3Qgc3RydWN0IGZpcm13YXJlICp1Y29kZV9yYXcsIHZvaWQgKmNvbnRleHQpXFxuMTYzMzpcXHR7XFxuMTYzNDpcXHRcXHRpbnQgbWluX2NvcmUsIG1heF9jb3JlLCBsb2FkZWRfY29yZTtcXG4xNjM1OlxcdFxcdHN0cnVjdCBpd2xfZHJ2ICpkcnYgPSBjb250ZXh0O1xcbjE2MzY6XFx0XFx0c3RydWN0IGl3bF9mdyAqZncgPSBcXHUwMDI2ZHJ2LVxcdTAwM2VmdztcXG4xNjM3OlxcdFxcdGNvbnN0IHN0cnVjdCBpd2xfdWNvZGVfaGVhZGVyICp1Y29kZTtcXG4xNjM4OlxcdFxcdHN0cnVjdCBpd2x3aWZpX29wbW9kZV90YWJsZSAqb3A7XFxuMTYzOTpcXHRcXHRpbnQgZXJyO1xcbjE2NDA6XFx0XFx0c3RydWN0IGl3bF9maXJtd2FyZV9waWVjZXMgKnBpZWNlcztcXG4xNjQxOlxcdFxcdHVuc2lnbmVkIGludCBhcGlfbWluLCBhcGlfbWF4O1xcbjE2NDI6XFx0XFx0c2l6ZV90IHRyaWdnZXJfdGx2X3N6W0ZXX0RCR19UUklHR0VSX01BWF07XFxuMTY0MzpcXHRcXHR1MzIgYXBpX3ZlcjtcXG4xNjQ0OlxcdFxcdGludCBpO1xcbjE2NDU6XFx0XFx0Ym9vbCB1c25pZmZlcl9pbWFnZXMgPSBmYWxzZTtcXG4xNjQ2OlxcdFxcdGJvb2wgZmFpbHVyZSA9IHRydWU7XFxuMTY0NzpcXHRcXG4xNjQ4OlxcdFxcdGl3bF9nZXRfdWNvZGVfYXBpX3ZlcnNpb25zKGRydi1cXHUwMDNldHJhbnMsIFxcdTAwMjZhcGlfbWluLCBcXHUwMDI2YXBpX21heCk7XFxuMTY0OTpcXHRcXG4xNjUwOlxcdFxcdGZ3LVxcdTAwM2V1Y29kZV9jYXBhLm1heF9wcm9iZV9sZW5ndGggPSBJV0xfREVGQVVMVF9NQVhfUFJPQkVfTEVOR1RIO1xcbjE2NTE6XFx0XFx0ZnctXFx1MDAzZXVjb2RlX2NhcGEuc3RhbmRhcmRfcGh5X2NhbGlicmF0aW9uX3NpemUgPVxcbjE2NTI6XFx0XFx0XFx0XFx0SVdMX0RFRkFVTFRfU1RBTkRBUkRfUEhZX0NBTElCUkFURV9UQkxfU0laRTtcXG4xNjUzOlxcdFxcdGZ3LVxcdTAwM2V1Y29kZV9jYXBhLm5fc2Nhbl9jaGFubmVscyA9IElXTF9ERUZBVUxUX1NDQU5fQ0hBTk5FTFM7XFxuMTY1NDpcXHRcXHRmdy1cXHUwMDNldWNvZGVfY2FwYS5udW1fc3RhdGlvbnMgPSBJV0xfU1RBVElPTl9DT1VOVF9NQVg7XFxuMTY1NTpcXHRcXHRmdy1cXHUwMDNldWNvZGVfY2FwYS5udW1fYmVhY29ucyA9IDE7XFxuMTY1NjpcXHRcXHRmdy1cXHUwMDNldWNvZGVfY2FwYS5udW1fbWNhc3Rfa2V5X2VudHJpZXMgPSAyO1xcbjE2NTc6XFx0XFx0LyogZHVtcCBhbGwgZncgbWVtb3J5IGFyZWFzIGJ5IGRlZmF1bHQgKi9cXG4xNjU4OlxcdFxcdGZ3LVxcdTAwM2VkYmcuZHVtcF9tYXNrID0gMHhmZmZmZmZmZjtcXG4xNjU5OlxcdFxcbjE2NjA6XFx0XFx0cGllY2VzID0ga3phbGxvY19vYmooKnBpZWNlcyk7XFxuMTY2MTpcXHRcXHRpZiAoIXBpZWNlcylcXG4xNjYyOlxcdFxcdFxcdGdvdG8gb3V0X2ZyZWVfZnc7XFxuMTY2MzpcXHRcXG4xNjY0OlxcdFxcdGlmICghdWNvZGVfcmF3KVxcbjE2NjU6XFx0XFx0XFx0Z290byB0cnlfYWdhaW47XFxuMTY2NjpcXHRcXG4xNjY3OlxcdFxcdElXTF9ERUJVR19GV19JTkZPKGRydiwgXFxcIkxvYWRlZCBmaXJtd2FyZSBmaWxlICclcycgKCV6ZCBieXRlcykuXFxcXG5cXFwiLFxcbjE2Njg6XFx0XFx0XFx0XFx0ICBkcnYtXFx1MDAzZWZpcm13YXJlX25hbWUsIHVjb2RlX3Jhdy1cXHUwMDNlc2l6ZSk7XFxuMTY2OTpcXHRcXG4xNjcwOlxcdFxcdC8qIE1ha2Ugc3VyZSB0aGF0IHdlIGdvdCBhdCBsZWFzdCB0aGUgQVBJIHZlcnNpb24gbnVtYmVyICovXFxuMTY3MTpcXHRcXHRpZiAodWNvZGVfcmF3LVxcdTAwM2VzaXplIFxcdTAwM2MgNCkge1xcbjE2NzI6XFx0XFx0XFx0SVdMX0VSUihkcnYsIFxcXCJGaWxlIHNpemUgd2F5IHRvbyBzbWFsbCFcXFxcblxcXCIpO1xcbjE2NzM6XFx0XFx0XFx0Z290byB0cnlfYWdhaW47XFxuMTY3NDpcXHRcXHR9XFxuMTY3NTpcXHRcXG4xNjc2OlxcdFxcdC8qIERhdGEgZnJvbSB1Y29kZSBmaWxlOiAgaGVhZGVyIGZvbGxvd2VkIGJ5IHVDb2RlIGltYWdlcyAqL1xcbjE2Nzc6XFx0XFx0dWNvZGUgPSAoY29uc3Qgc3RydWN0IGl3bF91Y29kZV9oZWFkZXIgKil1Y29kZV9yYXctXFx1MDAzZWRhdGE7XFxuMTY3ODpcXHRcXG4xNjc5OlxcdFxcdGlmICh1Y29kZS1cXHUwMDNldmVyKVxcbjE2ODA6XFx0XFx0XFx0ZXJyID0gaXdsX3BhcnNlX3YxX3YyX2Zpcm13YXJlKGRydiwgdWNvZGVfcmF3LCBwaWVjZXMpO1xcbjE2ODE6XFx0XFx0ZWxzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyNToxMi4xNDA4NzQzMjhaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzk4NTg4NDMxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIENvbmRpdGlvbmFsIExvZ2ljKipcblxuUmlnaHQsIHNvIEknbSBzZWVpbmcgYSBjb25kaXRpb25hbCBzdGF0ZW1lbnQgaGVyZS4gSXQncyBlc3NlbnRpYWxseSBzYXlpbmcsIFwiSWYgdGhlIHZhcmlhYmxlIGB1Y29kZV9yYXdgIGlzIE5PVCB0cnVlIChvciBtb3JlIHByZWNpc2VseSwgZmFsc3kpLCB0aGVuIGp1bXAgb3ZlciB0byBhIGxhYmVsIGNhbGxlZCBgdHJ5X2FnYWluYFwiLiAgVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGF0IGB1Y29kZV9yYXdgIGxpa2VseSByZXByZXNlbnRzIHNvbWUgc29ydCBvZiByYXcgaW5wdXQgb3IgdmFsaWRhdGlvbiBjaGVjay4gVGhlIHN5c3RlbSBpcyBkZXNpZ25lZCB0byBoYW5kbGUgYSBzcGVjaWZpYyB0eXBlIG9mIGlucHV0IGFuZCBpZiB0aGF0IGV4cGVjdGVkIGlucHV0IGlzbid0IHByZXNlbnQsIG9yIGRvZXNuJ3QgcGFzcyBzb21lIHByZS1kZWZpbmVkIGNoZWNrLCBpdCBkb2Vzbid0IHRyeSB0byBjb250aW51ZSBwcm9jZXNzaW5nLiBJdCBpcyBkZXNpZ25lZCB0byBsb29wIGJhY2sgYW5kIHRyeSBhZ2FpbiB0byBoYW5kbGUgdGhlIGlucHV0LiBUaGlzIGlzIGltcG9ydGFudCB0byBub3RlIGFzIGl0IHNob3dzIHRoYXQgbm8gbWF0dGVyIHdoYXQsIHRoZSBjb2RlIHdpbGwgY29udGludWUgdG8gdHJ5LlxuXG5NeSBuZXh0IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIHdoYXQncyBoYXBwZW5pbmcgYXQgYHRyeV9hZ2FpbmA/XCIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBlcnJvciBoYW5kbGluZyBvciB0aGUgcmV0cnkgbWVjaGFuaXNtIHRoYXQncyBiZWVuIGltcGxlbWVudGVkLiBJcyBpdCBhIHNpbXBsZSBsb29wIGJhY2sgdG8gcmUtcHJvbXB0IHRoZSB1c2VyPyBJcyB0aGVyZSBhbiBpbmNyZW1lbnRpbmcgY291bnRlciBzb21ld2hlcmUgdGhhdCB3b3VsZCB0cmlnZ2VyIGEgZGlmZmVyZW50IGFjdGlvbiBhZnRlciBhIGNlcnRhaW4gbnVtYmVyIG9mIGZhaWxlZCBhdHRlbXB0cz8gSSdtIGFscmVhZHkgbG9va2luZyBmb3IgdGhvc2UgaGludHMgd2l0aGluIHRoaXMgc21hbGwgc25pcHBldCBvZiBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDAxOSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjU6MjAuMTI2NzYxNjc4WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNDM0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODYwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxODYwOlxcdFxcdGlmIChwaWVjZXMtXFx1MDAzZWluc3RfZXZ0bG9nX3NpemUpXFxuMTg2MTpcXHRcXHRcXHRmdy1cXHUwMDNlaW5zdF9ldnRsb2dfc2l6ZSA9IChwaWVjZXMtXFx1MDAzZWluc3RfZXZ0bG9nX3NpemUgLSAxNikvMTI7XFxuMTg2MjpcXHRcXHRlbHNlXFxuMTg2MzpcXHRcXHRcXHRmdy1cXHUwMDNlaW5zdF9ldnRsb2dfc2l6ZSA9XFxuMTg2NDpcXHRcXHRcXHRcXHRkcnYtXFx1MDAzZXRyYW5zLVxcdTAwM2VtYWNfY2ZnLVxcdTAwM2ViYXNlLVxcdTAwM2VtYXhfZXZlbnRfbG9nX3NpemU7XFxuMTg2NTpcXHRcXHRmdy1cXHUwMDNlaW5zdF9lcnJsb2dfcHRyID0gcGllY2VzLVxcdTAwM2VpbnN0X2VycmxvZ19wdHI7XFxuMTg2NjpcXHRcXG4xODY3OlxcdFxcdC8qXFxuMTg2ODpcXHRcXHQgKiBmaWd1cmUgb3V0IHRoZSBvZmZzZXQgb2YgY2hhaW4gbm9pc2UgcmVzZXQgYW5kIGdhaW4gY29tbWFuZHNcXG4xODY5OlxcdFxcdCAqIGJhc2Ugb24gdGhlIHNpemUgb2Ygc3RhbmRhcmQgcGh5IGNhbGlicmF0aW9uIGNvbW1hbmRzIHRhYmxlIHNpemVcXG4xODcwOlxcdFxcdCAqL1xcbjE4NzE6XFx0XFx0aWYgKGZ3LVxcdTAwM2V1Y29kZV9jYXBhLnN0YW5kYXJkX3BoeV9jYWxpYnJhdGlvbl9zaXplIFxcdTAwM2VcXG4xODcyOlxcdFxcdCAgICBJV0xfTUFYX1BIWV9DQUxJQlJBVEVfVEJMX1NJWkUpXFxuMTg3MzpcXHRcXHRcXHRmdy1cXHUwMDNldWNvZGVfY2FwYS5zdGFuZGFyZF9waHlfY2FsaWJyYXRpb25fc2l6ZSA9XFxuMTg3NDpcXHRcXHRcXHRcXHRJV0xfTUFYX1NUQU5EQVJEX1BIWV9DQUxJQlJBVEVfVEJMX1NJWkU7XFxuMTg3NTpcXHRcXG4xODc2OlxcdFxcdC8qIFdlIGhhdmUgb3VyIGNvcGllcyBub3csIGFsbG93IE9TIHJlbGVhc2UgaXRzIGNvcGllcyAqL1xcbjE4Nzc6XFx0XFx0cmVsZWFzZV9maXJtd2FyZSh1Y29kZV9yYXcpO1xcbjE4Nzg6XFx0XFxuMTg3OTpcXHRcXHRpd2xfZGJnX3Rsdl9sb2FkX2JpbihkcnYtXFx1MDAzZXRyYW5zLVxcdTAwM2VkZXYsIGRydi1cXHUwMDNldHJhbnMpO1xcbjE4ODA6XFx0XFxuMTg4MTpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZpd2x3aWZpX29wbW9kZV90YWJsZV9tdHgpO1xcbjE4ODI6XFx0XFx0c3dpdGNoIChmdy1cXHUwMDNldHlwZSkge1xcbjE4ODM6XFx0XFx0Y2FzZSBJV0xfRldfRFZNOlxcbjE4ODQ6XFx0XFx0XFx0b3AgPSBcXHUwMDI2aXdsd2lmaV9vcG1vZGVfdGFibGVbRFZNX09QX01PREVdO1xcbjE4ODU6XFx0XFx0XFx0YnJlYWs7XFxuMTg4NjpcXHRcXHRkZWZhdWx0OlxcbjE4ODc6XFx0XFx0XFx0V0FSTigxLCBcXFwiSW52YWxpZCBmdyB0eXBlICVkXFxcXG5cXFwiLCBmdy1cXHUwMDNldHlwZSk7XFxuMTg4ODpcXHRcXHRcXHRmYWxsdGhyb3VnaDtcXG4xODg5OlxcdFxcdGNhc2UgSVdMX0ZXX01WTTpcXG4xODkwOlxcdFxcdFxcdG9wID0gXFx1MDAyNml3bHdpZmlfb3Btb2RlX3RhYmxlW01WTV9PUF9NT0RFXTtcXG4xODkxOlxcdFxcdFxcdGJyZWFrO1xcbjE4OTI6XFx0XFx0fVxcbjE4OTM6XFx0XFxuMTg5NDpcXHQjaWYgSVNfRU5BQkxFRChDT05GSUdfSVdMTUxEKVxcbjE4OTU6XFx0XFx0aWYgKGl3bF9kcnZfaXNfd2lmaTdfc3VwcG9ydGVkKGRydi1cXHUwMDNldHJhbnMpKVxcbjE4OTY6XFx0XFx0XFx0b3AgPSBcXHUwMDI2aXdsd2lmaV9vcG1vZGVfdGFibGVbTUxEX09QX01PREVdO1xcbjE4OTc6XFx0I2VuZGlmXFxuMTg5ODpcXHRcXG4xODk5OlxcdFxcdElXTF9JTkZPKGRydiwgXFxcImxvYWRlZCBmaXJtd2FyZSB2ZXJzaW9uICVzIG9wX21vZGUgJXNcXFxcblxcXCIsXFxuMTkwMDpcXHRcXHRcXHQgZHJ2LVxcdTAwM2Vmdy5md192ZXJzaW9uLCBvcC1cXHUwMDNlbmFtZSk7XFxuMTkwMTpcXHRcXG4xOTAyOlxcdFxcdC8qIGFkZCB0aGlzIGRldmljZSB0byB0aGUgbGlzdCBvZiBkZXZpY2VzIHVzaW5nIHRoaXMgb3BfbW9kZSAqL1xcbjE5MDM6XFx0XFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2ZHJ2LVxcdTAwM2VsaXN0LCBcXHUwMDI2b3AtXFx1MDAzZWRydik7XFxuMTkwNDpcXHRcXG4xOTA1OlxcdFxcdGlmIChvcC1cXHUwMDNlb3BzKSB7XFxuMTkwNjpcXHRcXHRcXHRkcnYtXFx1MDAzZW9wX21vZGUgPSBfaXdsX29wX21vZGVfc3RhcnQoZHJ2LCBvcCk7XFxuMTkwNzpcXHRcXG4xOTA4OlxcdFxcdFxcdGlmICghZHJ2LVxcdTAwM2VvcF9tb2RlKSB7XFxuMTkwOTpcXHRcXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNml3bHdpZmlfb3Btb2RlX3RhYmxlX210eCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjI1OjIwLjEyNjk3ODEzOFoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzIyMjg0MjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBJJ20gcmVhZHkgdG8gc3VtbWFyaXplIG15IHRob3VnaHQgcHJvY2Vzcy4gSGVyZSdzIGhvdyBJJ20gYXBwcm9hY2hpbmcgdGhpczpcblxuKipBbmFseXppbmcgdGhlIENvZGUgU3RydWN0dXJlOiBUaGUgYHRyeV9hZ2FpbmAgTGFiZWwqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgbXkgbWVudGFsIHBhcnNlciBmbGFncyBpcyB0aGUgcHJlc2VuY2Ugb2YgYSBgdHJ5X2FnYWluYCBsYWJlbC4gVGhhdCBpbW1lZGlhdGVseSB0cmlnZ2VycyBhIG1lbnRhbCBjaGVjayBvbiBpdHMgc3Vycm91bmRpbmcgY29udGV4dC4gQSBsYWJlbCBsaWtlIHRoYXQgc3Ryb25nbHkgc3VnZ2VzdHMgYSBsb29waW5nIG9yIHJldHJ5IG1lY2hhbmlzbSBpcyBpbiBwbGF5LiBJIGltbWVkaWF0ZWx5IHN0YXJ0IHBpY3R1cmluZyBwb3RlbnRpYWwgc2NlbmFyaW9zOlxuXG4qICAgKipFcnJvciBIYW5kbGluZzoqKiBJcyB0aGlzIGxhYmVsIGFzc29jaWF0ZWQgd2l0aCBhIGBnb3RvYCBzdGF0ZW1lbnQgKGlmIHRoZSBsYW5ndWFnZSBhbGxvd3MgdGhhdCwgd2hpY2ggaXMgYmVjb21pbmcgbGVzcyBhbmQgbGVzcyBjb21tb24pIG9yIHNvbWUgb3RoZXIgY29udHJvbCBmbG93IHN0cnVjdHVyZSB0aGF0IGp1bXBzIGJhY2sgdG8gdGhpcyBwb2ludD8gSSdtIGFudGljaXBhdGluZyBzb21lIGZvcm0gb2YgZXJyb3IgaGFuZGxpbmcsIGxpa2VseSB3aXRoaW4gYSBsb29wLCB3aGVyZSBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZywgdGhlIHByb2dyYW0gd2lsbCBqdW1wIGJhY2sgdG8gYHRyeV9hZ2FpbmAgdG8gYXR0ZW1wdCBhIGRpZmZlcmVudCBhcHByb2FjaCwgb3IgcGVyaGFwcyB0aGUgc2FtZSBvbmUgYWdhaW4uXG4qICAgKipSZXRyeSBMb2dpYzoqKiBJdCBjb3VsZCBpbmRpY2F0ZSBhbiBhdHRlbXB0IHRvIHNvbHZlIGEgcHJvYmxlbSB3aXRoIHNvbWUgZm9ybSBvZiBicnV0ZSBmb3JjZSwgd2hlcmUgaWYgaXQgZmFpbHMgb24gdGhlIGZpcnN0IHBhc3MsIGl0IGNpcmNsZXMgYmFjayB0byB0cnkgYW5vdGhlciBwZXJtdXRhdGlvbi4gSSdtIGltYWdpbmluZyBzaXR1YXRpb25zIGxpa2UgZGF0YWJhc2UgY29ubmVjdGlvbiBhdHRlbXB0cywgbmV0d29yayBjYWxscywgb3IgbWF5YmUgYSBzZWFyY2ggYWxnb3JpdGhtIHRoYXQgdXNlcyBhbiBpdGVyYXRpdmUgbWV0aG9kLlxuKiAgICoqRXh0ZXJuYWwgRmFjdG9yczoqKiBJdCBjb3VsZCBpbXBseSBhIGRlcGVuZGVuY3kgb24gZXh0ZXJuYWwgc291cmNlcyB3aGVyZSBpbnRlcm1pdHRlbnQgYXZhaWxhYmlsaXR5IG9yIHRyYW5zaWVudCBlcnJvcnMgYXJlIHBvc3NpYmxlLCBhbmQgdGh1cyB3YXJyYW50aW5nIGEgcmV0cnkuXG5cbkVzc2VudGlhbGx5LCBzZWVpbmcgYHRyeV9hZ2FpbmAgdGVsbHMgbWUgdG8gbG9vayBmb3IgYSBsb29wLCBhIGNvbmRpdGlvbmFsIHN0YXRlbWVudCwgYW5kIGEgcG90ZW50aWFsIHJlYXNvbiB3aHkgYW4gYXR0ZW1wdCBtaWdodCBmYWlsIGluIHRoZSBmaXJzdCBwbGFjZS4gVGhhdCBsYWJlbCBpcyBhIHNpZ25hbCB0byBtZSB0aGF0IEkgbmVlZCB0byB6b29tIGluIG9uIGEgc3BlY2lmaWMgc2VnbWVudCBvZiB0aGUgY29kZS4gTXkgZXhwZXJ0IHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBmaWVsZCB3aWxsIGFsbG93IG1lIHRvIHF1aWNrbHkgbWFwIG91dCB0aGUgZmxvdyBvZiB0aGUgYXBwbGljYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMjIxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyNToyNC40NDkyNjYzODFaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyMzM1MDI4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0cnlfYWdhaW46XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTE2MzI9c3RhdGljIHZvaWQgaXdsX3JlcV9md19jYWxsYmFjayhjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKnVjb2RlX3Jhdywgdm9pZCAqY29udGV4dClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE5MjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6MTkyMjogdHJ5X2FnYWluOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jLTE5MjMtXFx0LyogdHJ5IG5leHQsIGlmIGFueSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODoyNToyNS4xNzI2MjQ1NVoiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzgxNTQ3NDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIEJhY2sgaW50byBgaXdsX3JlcV9md19jYWxsYmFja2AgZnJvbSBgdHJ5X2FnYWluYCoqXG5cbkFscmlnaHQsIEknbSBnb2luZyBiYWNrIGludG8gYGl3bF9yZXFfZndfY2FsbGJhY2tgIGFmdGVyIHRoYXQganVtcCBmcm9tIGB0cnlfYWdhaW5gLiBJIG5lZWQgdG8gcmUtZmFtaWxpYXJpemUgbXlzZWxmIHdpdGggd2hhdCdzIGhhcHBlbmluZyBpbiB0aGlzIGZ1bmN0aW9uJ3MgY2FsbCBwYXRoLiBJIGtub3cgd2UncmUgZGVhbGluZyB3aXRoIGZpcm13YXJlIGxvYWRpbmcgaGVyZSwgYW5kIGBpd2xfcmVxX2Z3X2NhbGxiYWNrYCBpcyBjcnVjaWFsIGZvciBoYW5kbGluZyB0aGUgcmVxdWVzdHMsIHJpZ2h0PyBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZXJyb3IgaGFuZGxpbmcgcGFydGljdWxhcmx5LCBlc3BlY2lhbGx5IGFyb3VuZCBcInRyeV9hZ2FpblwiLiBXaGF0IHNwZWNpZmljIGZhaWx1cmUgbW9kZXMgaXMgdGhpcyBtZWNoYW5pc20gZGVzaWduZWQgdG8gYWRkcmVzcz8gSXMgdGhpcyBzb21lIHNvcnQgb2YgcmV0cnkgbWVjaGFuaXNtPyBBbmQgaWYgc28sIHdoYXQgYXJlIHRoZSBwYXJhbWV0ZXJzIGFyb3VuZCB0aG9zZSByZXRyaWVzPyBJJ20gdGhpbmtpbmcgSSBzaG91bGQgcHJvYmFibHkgdHJhY2sgYWxsIHBvc3NpYmxlIHNjZW5hcmlvcy4gSSBjYW4ndCBhZmZvcmQgdG8gbWlzcyBzb21ldGhpbmcgY3J1Y2lhbCBpbiBzdWNoIGEgbG93LWxldmVsIHJvdXRpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNzczLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjU6MjguNTU0MTc3NDY5WiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MDk1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxOTIyLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxOTIyOlxcdCB0cnlfYWdhaW46XFxuMTkyMzpcXHRcXHQvKiB0cnkgbmV4dCwgaWYgYW55ICovXFxuMTkyNDpcXHRcXHRyZWxlYXNlX2Zpcm13YXJlKHVjb2RlX3Jhdyk7XFxuMTkyNTpcXHRcXHRpZiAoaXdsX3JlcXVlc3RfZmlybXdhcmUoZHJ2LCBmYWxzZSkpXFxuMTkyNjpcXHRcXHRcXHRnb3RvIG91dF91bmJpbmQ7XFxuMTkyNzpcXHRcXHRnb3RvIGZyZWU7XFxuMTkyODpcXHRcXG4xOTI5OlxcdCBvdXRfZnJlZV9mdzpcXG4xOTMwOlxcdFxcdHJlbGVhc2VfZmlybXdhcmUodWNvZGVfcmF3KTtcXG4xOTMxOlxcdCBvdXRfdW5iaW5kOlxcbjE5MzI6XFx0XFx0Y29tcGxldGUoXFx1MDAyNmRydi1cXHUwMDNlcmVxdWVzdF9maXJtd2FyZV9jb21wbGV0ZSk7XFxuMTkzMzpcXHRcXHRkZXZpY2VfcmVsZWFzZV9kcml2ZXIoZHJ2LVxcdTAwM2V0cmFucy1cXHUwMDNlZGV2KTtcXG4xOTM0OlxcdFxcdC8qIGRydiBoYXMganVzdCBiZWVuIGZyZWVkIGJ5IHRoZSByZWxlYXNlICovXFxuMTkzNTpcXHRcXHRmYWlsdXJlID0gZmFsc2U7XFxuMTkzNjpcXHQgZnJlZTpcXG4xOTM3OlxcdFxcdGlmIChmYWlsdXJlKVxcbjE5Mzg6XFx0XFx0XFx0aXdsX2RlYWxsb2NfdWNvZGUoZHJ2KTtcXG4xOTM5OlxcdFxcbjE5NDA6XFx0XFx0aWYgKHBpZWNlcykge1xcbjE5NDE6XFx0XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUocGllY2VzLVxcdTAwM2VpbWcpOyBpKyspXFxuMTk0MjpcXHRcXHRcXHRcXHRrZnJlZShwaWVjZXMtXFx1MDAzZWltZ1tpXS5zZWMpO1xcbjE5NDM6XFx0XFx0XFx0a2ZyZWUocGllY2VzLVxcdTAwM2VkYmdfbWVtX3Rsdik7XFxuMTk0NDpcXHRcXHRcXHRrZnJlZShwaWVjZXMpO1xcbjE5NDU6XFx0XFx0fVxcbjE5NDY6XFx0fVxcbjE5NDc6XFx0XFxuMTk0ODpcXHRzdHJ1Y3QgaXdsX2RydiAqaXdsX2Rydl9zdGFydChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcXG4xOTQ5OlxcdHtcXG4xOTUwOlxcdFxcdHN0cnVjdCBpd2xfZHJ2ICpkcnY7XFxuMTk1MTpcXHRcXHRpbnQgcmV0O1xcbjE5NTI6XFx0XFxuMTk1MzpcXHRcXHRkcnYgPSBremFsbG9jX29iaigqZHJ2KTtcXG4xOTU0OlxcdFxcdGlmICghZHJ2KSB7XFxuMTk1NTpcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbjE5NTY6XFx0XFx0XFx0Z290byBlcnI7XFxuMTk1NzpcXHRcXHR9XFxuMTk1ODpcXHRcXG4xOTU5OlxcdFxcdGRydi1cXHUwMDNldHJhbnMgPSB0cmFucztcXG4xOTYwOlxcdFxcdGRydi1cXHUwMDNlZGV2ID0gdHJhbnMtXFx1MDAzZWRldjtcXG4xOTYxOlxcdFxcbjE5NjI6XFx0XFx0aW5pdF9jb21wbGV0aW9uKFxcdTAwMjZkcnYtXFx1MDAzZXJlcXVlc3RfZmlybXdhcmVfY29tcGxldGUpO1xcbjE5NjM6XFx0XFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmRydi1cXHUwMDNlbGlzdCk7XFxuMTk2NDpcXHRcXG4xOTY1OlxcdCNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuMTk2NjpcXHRcXHQvKiBDcmVhdGUgdGhlIGRldmljZSBkZWJ1Z2ZzIGVudHJpZXMuICovXFxuMTk2NzpcXHRcXHRkcnYtXFx1MDAzZWRiZ2ZzX2RydiA9IGRlYnVnZnNfY3JlYXRlX2RpcihkZXZfbmFtZSh0cmFucy1cXHUwMDNlZGV2KSxcXG4xOTY4OlxcdFxcdFxcdFxcdFxcdFxcdCAgICBpd2xfZGJnZnNfcm9vdCk7XFxuMTk2OTpcXHRcXG4xOTcwOlxcdFxcdC8qIENyZWF0ZSB0cmFuc3BvcnQgbGF5ZXIgZGVidWdmcyBkaXIgKi9cXG4xOTcxOlxcdFxcdGRydi1cXHUwMDNldHJhbnMtXFx1MDAzZWRiZ2ZzX2RpciA9IGRlYnVnZnNfY3JlYXRlX2RpcihcXFwidHJhbnNcXFwiLCBkcnYtXFx1MDAzZWRiZ2ZzX2Rydik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjI1OjI4LjU1NDQ0MjE4OFoiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxOTY1Njk0MzQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGl3bHdpZmkgRHJpdmVyIGFuZCBXb3JrcXVldWUgQ2hhbmdlcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSWYgdGhlIGZpcm13YXJlIGlzbid0IGZvdW5kLCB0aGUgZGV2aWNlIGdldHMgdW5ib3VuZCwgdGhlIGRyaXZlciBpcyByZW1vdmVkLCBhbmQgYGl3bF9wY2lfcmVtb3ZlYCBnZXRzIGNhbGxlZC4gTWFrZXMgc2Vuc2UuIFNvLCBpZiB0aGUgZHJpdmVyICpkb2Vzbid0KiBoYXZlIHRoZSBmaXJtd2FyZSwgaXQncyBub3Qgc3RpY2tpbmcgYXJvdW5kLiBJIHdhcyBpbml0aWFsbHkgd29ycmllZCB0aGF0IGFuIGludGVycnVwdCAqZHVyaW5nKiBmaXJtd2FyZSBsb2FkaW5nIG1pZ2h0IHRyaWdnZXIgYSByZXNldCwgYnV0IHRoZSBjb2RlIGNsZXZlcmx5IGNoZWNrcyBgdHJhbnMtXHUwMDNlb3BfbW9kZWAgaW4gYGl3bF90cmFuc19yZXN0YXJ0X3drYC4gU2luY2UgYHRyYW5zLVx1MDAzZW9wX21vZGVgIG9ubHkgZ2V0cyBzZXQgKmFmdGVyKiB0aGUgZmlybXdhcmUgaXMgbG9hZGVkLCB0aGF0IGVhcmx5IHJldHVybiBpbiBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgIGlzIGtleS4gSXQnbGwgcHJldmVudCB0aGUgcmVzZXQgaWYgdGhlIGZpcm13YXJlIGlzbid0IGxvYWRlZC5cblxuTm93LCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50ICp3aXRob3V0KiBzcGVjaWZpYyBmaXJtd2FyZSwgYHRyYW5zLVx1MDAzZW9wX21vZGVgIGlzIGFsd2F5cyBOVUxMLiBUaGF0IGVhcmx5IHJldHVybiBpbiBgaXdsX3RyYW5zX3Jlc3RhcnRfd2tgIG1lYW5zIHRoYXQgdGhlIHN1YnNlcXVlbnQgYHF1ZXVlX2RlbGF5ZWRfd29ya2AgY2FsbCBzaG91bGQgKm5ldmVyKiBiZSByZWFjaGVkLlxuXG5CdXQgaGVyZSdzIGEgdGhvdWdodDogV2hhdCBpZiBTeXprYWxsZXIgKmRvZXMqIHByb3ZpZGUgZmlybXdhcmU/IFN5emthbGxlcidzIGltYWdlcyBvZnRlbiBpbmNsdWRlIHNvbWUgZmlybXdhcmUgZmlsZXMgbGlrZSBgaXdsd2lmaS0qLnVjb2RlYC4gSXMgdGhhdCB0aGUgY2FzZSBoZXJlPyBJZiBTeXprYWxsZXIgKmRvZXMqIGhhdmUgdGhlIGZpcm13YXJlLCB0aGUgY29kZSAqd2lsbCogYmUgcmVhY2hlZCwgYnV0IGl0J3MganVzdCBjaGFuZ2luZyB0aGUgd29ya3F1ZXVlLCBmcm9tIGBzeXN0ZW1fdW5ib3VuZF93cWAgdG8gYHN5c3RlbV9kZmxfd3FgLlxuXG5Eb2VzIHRoaXMgY2hhbmdlIHdhcnJhbnQgZnV6emluZz8gV2VsbCwgbGV0J3Mgc2VlLiBNeSBpbnN0cnVjdGlvbnMgc2F5IHRvIHJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIGNoYW5nZSBpcyBhIG1vZGlmaWNhdGlvbiB0byBkb2N1bWVudGF0aW9uLCBrY29uZmlnIGZpbGVzLCBkZWNvcmF0aXZlIGNoYW5nZXMsIGNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG9uJ3QgYWx0ZXIgZXhlY3V0aW9uIGZsb3csIG9yIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGlzICpkb2VzKiBhbHRlciBleGVjdXRpb24gZmxvdyBiZWNhdXNlIGl0IG1vdmVzIHRoZSB3b3JrIGl0ZW0gdG8gYSAqZGlmZmVyZW50KiB3b3JrcXVldWUuXG5cbkknbSBsZWFuaW5nIHRvd2FyZHMgV29ydGhGdXp6aW5nPWZhbHNlLiBJIGFtIGFzc3VtaW5nIHN5emthbGxlciBoYXMgc29tZSBmaXJtd2FyZSBidXQgdGhlIGNoYW5nZSBpcyBqdXN0IGNoYW5naW5nIHRoZSB3b3JrcXVldWUuIFVubGVzcyBpdCBmaXhlcyBhIHJhY2UsIG9yIGludHJvZHVjZXMgYSBuZXcgb25lLCBmdXp6aW5nIHByb2JhYmx5IHdvbid0IGZpbmQgYW55dGhpbmcgaGVyZS4gQnV0IHRob3NlIGluc3RydWN0aW9ucyBhbHNvIGRvbid0IGV4cGxpY2l0bHkgc2F5IFwidHJpdmlhbCB3b3JrcXVldWUgY2hhbmdlc1wiIGFyZSBXb3J0aEZ1enppbmc9ZmFsc2UuXG5cbk9rYXksIGlzIGBzeXN0ZW1fZGZsX3dxYCBhIG1hY3JvIG9yIHZhcmlhYmxlPyBJdCBpcyBhIGdsb2JhbCB2YXJpYWJsZS4gVGhlcmUgYXJlIGFsc28gc3BlY2lmaWMgY29uZmlncyBsaWtlIGBJV0xXSUZJYC5cblxuQnV0IGhlcmUncyB0aGUga2lja2VyOiBgaXdsd2lmaWAgaXMgYSByZWFsIGhhcmR3YXJlIGRyaXZlci4gU3l6a2FsbGVyJ3MgYWJpbGl0eSB0byBmdXp6IGl0IGlzICpzZXZlcmVseSogbGltaXRlZCBldmVuIHdpdGggdlBDSSBiZWNhdXNlIG9mIGFsbCB0aGUgRE1BIGFuZCBmaXJtd2FyZSBpbnRlcmFjdGlvbnMuIElmIGl0J3MgbG9hZGVkLCB0aGUgZHJpdmVyIG5lZWRzIHRvIHRhbGsgdG8gdGhlIGhhcmR3YXJlLCBhbmQgdGhlIHZQQ0kgaXMgbm90IGFuICphY3R1YWwqIEludGVsIFdpLUZpIGNoaXAuIEl0J3MganVzdCBwcm92aWRpbmcgcmFuZG9tIGRhdGEuIFNvLCB0aGUgZmlybXdhcmUgd2lsbCBlaXRoZXIgZmFpbCB0byBsb2FkLCBvciB0aGUgZGV2aWNlIHdpbGwgZmFpbCB0byBpbml0aWFsaXplLiBUaGUgdlBDSSB3b24ndCBlbXVsYXRlIHRoZSBJbnRlbCBXaS1GaSBoYXJkd2FyZS4gVGhlIGZpcm13YXJlIHNpZ25hdHVyZSBjaGVjayBvciBwYXJzaW5nIHdpbGwgZmFpbC5cblxuVGhlIGZpcm13YXJlIGNvbWVzIGZyb20gdGhlIGZpbGVzeXN0ZW0uIEJ1dCwgdGhlIGRyaXZlciB3cml0ZXMgaXQgdG8gdGhlIGRldmljZSB1c2luZyBETUEvTU1JTyBhbmQgZXhwZWN0cyB0aGUgZGV2aWNlIHRvIGJvb3QgYW5kIHNldCByZWdpc3RlcnMuIFRoZSB2UENJJ3MgcmFuZG9tIGRhdGEgd2lsbCBhbG1vc3QgY2VydGFpbmx5IG1ha2UgdGhlIHdob2xlIGluaXRpYWxpemF0aW9uIHN0YXRlIG1hY2hpbmUgZmFpbC5cblxuV2FpdCwgaXMgYHRyYW5zLVx1MDAzZW9wX21vZGVgIHNldCBCRUZPUkUgdGhlIGZpcm13YXJlIGlzIGZ1bGx5IGJvb3RlZD8gV2UgbXVzdCBjaGVjayBgaXdsX3JlcV9md19jYWxsYmFja2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNzU0LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIxNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjI1OjQ4LjIxMTM4OTExNFoiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjEwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTg5OSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTg5OTpcXHRcXHRJV0xfSU5GTyhkcnYsIFxcXCJsb2FkZWQgZmlybXdhcmUgdmVyc2lvbiAlcyBvcF9tb2RlICVzXFxcXG5cXFwiLFxcbjE5MDA6XFx0XFx0XFx0IGRydi1cXHUwMDNlZncuZndfdmVyc2lvbiwgb3AtXFx1MDAzZW5hbWUpO1xcbjE5MDE6XFx0XFxuMTkwMjpcXHRcXHQvKiBhZGQgdGhpcyBkZXZpY2UgdG8gdGhlIGxpc3Qgb2YgZGV2aWNlcyB1c2luZyB0aGlzIG9wX21vZGUgKi9cXG4xOTAzOlxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmRydi1cXHUwMDNlbGlzdCwgXFx1MDAyNm9wLVxcdTAwM2VkcnYpO1xcbjE5MDQ6XFx0XFxuMTkwNTpcXHRcXHRpZiAob3AtXFx1MDAzZW9wcykge1xcbjE5MDY6XFx0XFx0XFx0ZHJ2LVxcdTAwM2VvcF9tb2RlID0gX2l3bF9vcF9tb2RlX3N0YXJ0KGRydiwgb3ApO1xcbjE5MDc6XFx0XFxuMTkwODpcXHRcXHRcXHRpZiAoIWRydi1cXHUwMDNlb3BfbW9kZSkge1xcbjE5MDk6XFx0XFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZpd2x3aWZpX29wbW9kZV90YWJsZV9tdHgpO1xcbjE5MTA6XFx0XFx0XFx0XFx0Z290byBvdXRfdW5iaW5kO1xcbjE5MTE6XFx0XFx0XFx0fVxcbjE5MTI6XFx0XFx0fSBlbHNlIHtcXG4xOTEzOlxcdFxcdFxcdHJlcXVlc3RfbW9kdWxlX25vd2FpdChcXFwiJXNcXFwiLCBvcC1cXHUwMDNlbmFtZSk7XFxuMTkxNDpcXHRcXHR9XFxuMTkxNTpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNml3bHdpZmlfb3Btb2RlX3RhYmxlX210eCk7XFxuMTkxNjpcXHRcXG4xOTE3OlxcdFxcdGNvbXBsZXRlKFxcdTAwMjZkcnYtXFx1MDAzZXJlcXVlc3RfZmlybXdhcmVfY29tcGxldGUpO1xcbjE5MTg6XFx0XFxuMTkxOTpcXHRcXHRmYWlsdXJlID0gZmFsc2U7XFxuMTkyMDpcXHRcXHRnb3RvIGZyZWU7XFxuMTkyMTpcXHRcXG4xOTIyOlxcdCB0cnlfYWdhaW46XFxuMTkyMzpcXHRcXHQvKiB0cnkgbmV4dCwgaWYgYW55ICovXFxuMTkyNDpcXHRcXHRyZWxlYXNlX2Zpcm13YXJlKHVjb2RlX3Jhdyk7XFxuMTkyNTpcXHRcXHRpZiAoaXdsX3JlcXVlc3RfZmlybXdhcmUoZHJ2LCBmYWxzZSkpXFxuMTkyNjpcXHRcXHRcXHRnb3RvIG91dF91bmJpbmQ7XFxuMTkyNzpcXHRcXHRnb3RvIGZyZWU7XFxuMTkyODpcXHRcXG4xOTI5OlxcdCBvdXRfZnJlZV9mdzpcXG4xOTMwOlxcdFxcdHJlbGVhc2VfZmlybXdhcmUodWNvZGVfcmF3KTtcXG4xOTMxOlxcdCBvdXRfdW5iaW5kOlxcbjE5MzI6XFx0XFx0Y29tcGxldGUoXFx1MDAyNmRydi1cXHUwMDNlcmVxdWVzdF9maXJtd2FyZV9jb21wbGV0ZSk7XFxuMTkzMzpcXHRcXHRkZXZpY2VfcmVsZWFzZV9kcml2ZXIoZHJ2LVxcdTAwM2V0cmFucy1cXHUwMDNlZGV2KTtcXG4xOTM0OlxcdFxcdC8qIGRydiBoYXMganVzdCBiZWVuIGZyZWVkIGJ5IHRoZSByZWxlYXNlICovXFxuMTkzNTpcXHRcXHRmYWlsdXJlID0gZmFsc2U7XFxuMTkzNjpcXHQgZnJlZTpcXG4xOTM3OlxcdFxcdGlmIChmYWlsdXJlKVxcbjE5Mzg6XFx0XFx0XFx0aXdsX2RlYWxsb2NfdWNvZGUoZHJ2KTtcXG4xOTM5OlxcdFxcbjE5NDA6XFx0XFx0aWYgKHBpZWNlcykge1xcbjE5NDE6XFx0XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUocGllY2VzLVxcdTAwM2VpbWcpOyBpKyspXFxuMTk0MjpcXHRcXHRcXHRcXHRrZnJlZShwaWVjZXMtXFx1MDAzZWltZ1tpXS5zZWMpO1xcbjE5NDM6XFx0XFx0XFx0a2ZyZWUocGllY2VzLVxcdTAwM2VkYmdfbWVtX3Rsdik7XFxuMTk0NDpcXHRcXHRcXHRrZnJlZShwaWVjZXMpO1xcbjE5NDU6XFx0XFx0fVxcbjE5NDY6XFx0fVxcbjE5NDc6XFx0XFxuMTk0ODpcXHRzdHJ1Y3QgaXdsX2RydiAqaXdsX2Rydl9zdGFydChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjU6NDguMjExNjU0MDc0WiIsIlNlcSI6NTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMDM0MDk1NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHVuZm9sZHM6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBJV0wgRHJpdmVyIFN0YXJ0dXAqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhpcyBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIGBpd2xgLCBraWNrcyBvZmYgaXRzIG9wZXJhdGlvbmFsIG1vZGUuIFRoZSBmdW5jdGlvbiBgX2l3bF9vcF9tb2RlX3N0YXJ0YCBpcyB0aGUga2V5IGhlcmUuIEl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQ7IGl0IGNhbGxzIGEgZnVuY3Rpb24gcG9pbnRlciwgYG9wLVx1MDAzZW9wcy1cdTAwM2VzdGFydGAuIE5vdywgYG9wYCBsaWtlbHkgcmVwcmVzZW50cyB0aGUgb3BlcmF0aW9uYWwgbW9kZSwgYW5kIHRoZSBgb3BzYCBwcm9iYWJseSBjb250YWlucyBhIHRhYmxlIG9mIGZ1bmN0aW9uIHBvaW50ZXJzIHJlbGF0ZWQgdG8gdGhhdCBtb2RlLlxuXG5Gb3IgdGhlIE11bHRpLVZpcnR1YWwgTWFjaGluZSAoTVZNKSBjYXNlLCB0aGlzIHRyYW5zbGF0ZXMgdG8gdGhlIGZ1bmN0aW9uIGBpd2xfb3BfbW9kZV9tdm1fc3RhcnRgIGdldHRpbmcgaW52b2tlZC4gU28sIHRoZSBiYXNlIGZ1bmN0aW9uIHNldHMgdXAgc29tZSBjb21tb24gc3R1ZmYsIGFuZCB0aGVuLCBiYXNlZCBvbiB0aGUgc3BlY2lmaWMgb3BlcmF0aW9uYWwgbW9kZSwgd2UgaGl0IGEgbW9kZS1zcGVjaWZpYyBzdGFydCBmdW5jdGlvbi4gR290IGl0LiBUaGlzIG1ha2VzIHNlbnNlIGZyb20gYW4gYXJjaGl0ZWN0dXJhbCBwZXJzcGVjdGl2ZTogYSBtb2R1bGFyIGFwcHJvYWNoIHRoYXQgYWxsb3dzIGZvciBkaWZmZXJlbnQgd2lyZWxlc3Mgc3RhbmRhcmRzIGFuZCBjb25maWd1cmF0aW9ucyB0byBiZSBzdXBwb3J0ZWQgY2xlYW5seS4gSSB3b25kZXIgd2hhdCBleGFjdGx5IGlzIGRvbmUgd2l0aGluIHRoYXQgYGl3bF9vcF9tb2RlX212bV9zdGFydGAgZnVuY3Rpb24uLi4gbGV0J3Mgc2VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTQ3MiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjU6NTIuNTE1MDY3MzJaIiwiU2VxIjo1NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUyNDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDExOTcsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjExOTc6XFx0aXdsX29wX21vZGVfbXZtX3N0YXJ0KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCBzdHJ1Y3QgaXdsX3JmX2NmZyAqY2ZnLFxcbjExOTg6XFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGl3bF9mdyAqZncsIHN0cnVjdCBkZW50cnkgKmRiZ2ZzX2RpcilcXG4xMTk5OlxcdHtcXG4xMjAwOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xcbjEyMDE6XFx0XFx0c3RydWN0IGl3bF9vcF9tb2RlICpvcF9tb2RlO1xcbjEyMDI6XFx0XFx0c3RydWN0IGl3bF9tdm0gKm12bTtcXG4xMjAzOlxcdFxcdHN0YXRpYyBjb25zdCB1OCBub19yZWNsYWltX2NtZHNbXSA9IHtcXG4xMjA0OlxcdFxcdFxcdFRYX0NNRCxcXG4xMjA1OlxcdFxcdH07XFxuMTIwNjpcXHRcXHR1MzIgbWF4X2FnZztcXG4xMjA3OlxcdFxcdHNpemVfdCBzY2FuX3NpemU7XFxuMTIwODpcXHRcXHR1MzIgbWluX2JhY2tvZmY7XFxuMTIwOTpcXHRcXHRzdHJ1Y3QgaXdsX212bV9jc21lX2Nvbm5faW5mbyAqY3NtZV9jb25uX2luZm8gX19tYXliZV91bnVzZWQ7XFxuMTIxMDpcXHRcXHRpbnQgcmF0ZWNoZWNrO1xcbjEyMTE6XFx0XFx0aW50IGVycjtcXG4xMjEyOlxcdFxcbjEyMTM6XFx0XFx0LypcXG4xMjE0OlxcdFxcdCAqIFdlIHVzZSBJV0xfU1RBVElPTl9DT1VOVF9NQVggdG8gY2hlY2sgdGhlIHZhbGlkaXR5IG9mIHRoZSBzdGF0aW9uXFxuMTIxNTpcXHRcXHQgKiBpbmRleCBhbGwgb3ZlciB0aGUgZHJpdmVyIC0gY2hlY2sgdGhhdCBpdHMgdmFsdWUgY29ycmVzcG9uZHMgdG8gdGhlXFxuMTIxNjpcXHRcXHQgKiBhcnJheSBzaXplLlxcbjEyMTc6XFx0XFx0ICovXFxuMTIxODpcXHRcXHRCVUlMRF9CVUdfT04oQVJSQVlfU0laRShtdm0tXFx1MDAzZWZ3X2lkX3RvX21hY19pZCkgIT1cXG4xMjE5OlxcdFxcdFxcdCAgICAgSVdMX1NUQVRJT05fQ09VTlRfTUFYKTtcXG4xMjIwOlxcdFxcbjEyMjE6XFx0XFx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuMTIyMjpcXHRcXHQgKiAxLiBBbGxvY2F0aW5nIGFuZCBjb25maWd1cmluZyBIVyBkYXRhXFxuMTIyMzpcXHRcXHQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuMTIyNDpcXHRcXHRodyA9IGllZWU4MDIxMV9hbGxvY19odyhzaXplb2Yoc3RydWN0IGl3bF9vcF9tb2RlKSArXFxuMTIyNTpcXHRcXHRcXHRcXHRcXHRzaXplb2Yoc3RydWN0IGl3bF9tdm0pLFxcbjEyMjY6XFx0XFx0XFx0XFx0XFx0aXdsX212bV9oYXNfbWxkX2FwaShmdykgPyBcXHUwMDI2aXdsX212bV9tbGRfaHdfb3BzIDpcXG4xMjI3OlxcdFxcdFxcdFxcdFxcdFxcdTAwMjZpd2xfbXZtX2h3X29wcyk7XFxuMTIyODpcXHRcXHRpZiAoIWh3KVxcbjEyMjk6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XFxuMTIzMDpcXHRcXG4xMjMxOlxcdFxcdGlmICh0cmFucy1cXHUwMDNlbWFjX2NmZy1cXHUwMDNlZGV2aWNlX2ZhbWlseSBcXHUwMDNlPSBJV0xfREVWSUNFX0ZBTUlMWV9CWilcXG4xMjMyOlxcdFxcdFxcdG1heF9hZ2cgPSA1MTI7XFxuMTIzMzpcXHRcXHRlbHNlXFxuMTIzNDpcXHRcXHRcXHRtYXhfYWdnID0gSUVFRTgwMjExX01BWF9BTVBEVV9CVUZfSEU7XFxuMTIzNTpcXHRcXG4xMjM2OlxcdFxcdGh3LVxcdTAwM2VtYXhfcnhfYWdncmVnYXRpb25fc3ViZnJhbWVzID0gbWF4X2FnZztcXG4xMjM3OlxcdFxcbjEyMzg6XFx0XFx0b3BfbW9kZSA9IGh3LVxcdTAwM2Vwcml2O1xcbjEyMzk6XFx0XFxuMTI0MDpcXHRcXHRtdm0gPSBJV0xfT1BfTU9ERV9HRVRfTVZNKG9wX21vZGUpO1xcbjEyNDE6XFx0XFx0bXZtLVxcdTAwM2VkZXYgPSB0cmFucy1cXHUwMDNlZGV2O1xcbjEyNDI6XFx0XFx0bXZtLVxcdTAwM2V0cmFucyA9IHRyYW5zO1xcbjEyNDM6XFx0XFx0bXZtLVxcdTAwM2VjZmcgPSBjZmc7XFxuMTI0NDpcXHRcXHRtdm0tXFx1MDAzZWZ3ID0gZnc7XFxuMTI0NTpcXHRcXHRtdm0tXFx1MDAzZWh3ID0gaHc7XFxuMTI0NjpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjU6NTIuNTE1MzI0NjhaIiwiU2VxIjo1NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU3NTM1ODgxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGU6XG5cbioqRGl2aW5nIGludG8gdGhlIGl3bF9vcF9tb2RlX212bV9zdGFydCBDYWxsIENoYWluKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGl3bF9vcF9tb2RlX212bV9zdGFydGAgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBleGVjdXRpb24gZmxvdyBhcm91bmQgYGl3bF90cmFuc19vcF9tb2RlX2VudGVyYC4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGF0IGZ1bmN0aW9uIGNhbGwuIEkga25vdyBgaXdsX3RyYW5zX29wX21vZGVfZW50ZXJgIGlzIHByb2JhYmx5IGhhbmRsaW5nIHNvbWUgc29ydCBvZiBtb2RlIHRyYW5zaXRpb24sIGxpa2VseSByZWxhdGVkIHRvIHRoZSB3aXJlbGVzcyBkcml2ZXIncyBvcGVyYXRpb25hbCBzdGF0ZS4gVG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBpbnRlcmFjdGlvbiwgSSBuZWVkIHRvIHNlZSAqd2hlcmUqIGl0J3MgYWN0dWFsbHkgaW52b2tlZCAqd2l0aGluKiBgaXdsX29wX21vZGVfbXZtX3N0YXJ0YC4gSSBleHBlY3QgdGhhdCwgc2luY2UgaXQncyBgX2VudGVyYCwgaXQgaXMgaW52b2tlZCBiZWZvcmUgaXQgZXhpdHMgdGhlIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjYxOSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjU6NTYuMDkwNjg5Mjg3WiIsIlNlcSI6NTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0OTAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNDIwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNDIwOlxcdFxcdCAqIGJ1dCB0aGV5IGFyZSBidWdneS5cXG4xNDIxOlxcdFxcdCAqL1xcbjE0MjI6XFx0XFx0aWYgKElXTF9VQ09ERV9NQUpPUihtdm0tXFx1MDAzZWZ3LVxcdTAwM2V1Y29kZV92ZXIpIFxcdTAwM2M9IDc3KVxcbjE0MjM6XFx0XFx0XFx0dHJhbnMtXFx1MDAzZWNvbmYuZndfcmVzZXRfaGFuZHNoYWtlID0gZmFsc2U7XFxuMTQyNDpcXHRcXG4xNDI1OlxcdFxcdHRyYW5zLVxcdTAwM2Vjb25mLnF1ZXVlX2FsbG9jX2NtZF92ZXIgPVxcbjE0MjY6XFx0XFx0XFx0aXdsX2Z3X2xvb2t1cF9jbWRfdmVyKG12bS1cXHUwMDNlZncsXFxuMTQyNzpcXHRcXHRcXHRcXHRcXHQgICAgICBXSURFX0lEKERBVEFfUEFUSF9HUk9VUCxcXG4xNDI4OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIFNDRF9RVUVVRV9DT05GSUdfQ01EKSxcXG4xNDI5OlxcdFxcdFxcdFxcdFxcdCAgICAgIDApO1xcbjE0MzA6XFx0XFx0bXZtLVxcdTAwM2VzdGFfcmVtb3ZlX3JlcXVpcmVzX3F1ZXVlX3JlbW92ZSA9XFxuMTQzMTpcXHRcXHRcXHR0cmFucy1cXHUwMDNlY29uZi5xdWV1ZV9hbGxvY19jbWRfdmVyIFxcdTAwM2UgMDtcXG4xNDMyOlxcdFxcbjE0MzM6XFx0XFx0bXZtLVxcdTAwM2VtbGRfYXBpX2lzX3VzZWQgPSBpd2xfbXZtX2hhc19tbGRfYXBpKG12bS1cXHUwMDNlZncpO1xcbjE0MzQ6XFx0XFxuMTQzNTpcXHRcXHQvKiBDb25maWd1cmUgdHJhbnNwb3J0IGxheWVyICovXFxuMTQzNjpcXHRcXHRpd2xfdHJhbnNfb3BfbW9kZV9lbnRlcihtdm0tXFx1MDAzZXRyYW5zLCBvcF9tb2RlKTtcXG4xNDM3OlxcdFxcbjE0Mzg6XFx0XFx0dHJhbnMtXFx1MDAzZWRiZy5kZXN0X3RsdiA9IG12bS1cXHUwMDNlZnctXFx1MDAzZWRiZy5kZXN0X3RsdjtcXG4xNDM5OlxcdFxcdHRyYW5zLVxcdTAwM2VkYmcubl9kZXN0X3JlZyA9IG12bS1cXHUwMDNlZnctXFx1MDAzZWRiZy5uX2Rlc3RfcmVnO1xcbjE0NDA6XFx0XFxuMTQ0MTpcXHRcXHQvKiBzZXQgdXAgbm90aWZpY2F0aW9uIHdhaXQgc3VwcG9ydCAqL1xcbjE0NDI6XFx0XFx0aXdsX25vdGlmaWNhdGlvbl93YWl0X2luaXQoXFx1MDAyNm12bS1cXHUwMDNlbm90aWZfd2FpdCk7XFxuMTQ0MzpcXHRcXG4xNDQ0OlxcdFxcdC8qIEluaXQgcGh5IGRiICovXFxuMTQ0NTpcXHRcXHRtdm0tXFx1MDAzZXBoeV9kYiA9IGl3bF9waHlfZGJfaW5pdCh0cmFucyk7XFxuMTQ0NjpcXHRcXHRpZiAoIW12bS1cXHUwMDNlcGh5X2RiKSB7XFxuMTQ0NzpcXHRcXHRcXHRJV0xfRVJSKG12bSwgXFxcIkNhbm5vdCBpbml0IHBoeV9kYlxcXFxuXFxcIik7XFxuMTQ0ODpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbjE0NDk6XFx0XFx0XFx0Z290byBvdXRfZnJlZTtcXG4xNDUwOlxcdFxcdH1cXG4xNDUxOlxcdFxcbjE0NTI6XFx0XFx0aWYgKGl3bHdpZmlfbW9kX3BhcmFtcy5udm1fZmlsZSlcXG4xNDUzOlxcdFxcdFxcdG12bS1cXHUwMDNlbnZtX2ZpbGVfbmFtZSA9IGl3bHdpZmlfbW9kX3BhcmFtcy5udm1fZmlsZTtcXG4xNDU0OlxcdFxcdGVsc2VcXG4xNDU1OlxcdFxcdFxcdElXTF9ERUJVR19FRVBST00obXZtLVxcdTAwM2V0cmFucy1cXHUwMDNlZGV2LFxcbjE0NTY6XFx0XFx0XFx0XFx0XFx0IFxcXCJ3b3JraW5nIHdpdGhvdXQgZXh0ZXJuYWwgbnZtIGZpbGVcXFxcblxcXCIpO1xcbjE0NTc6XFx0XFxuMTQ1ODpcXHRcXHRzY2FuX3NpemUgPSBpd2xfbXZtX3NjYW5fc2l6ZShtdm0pO1xcbjE0NTk6XFx0XFxuMTQ2MDpcXHRcXHRtdm0tXFx1MDAzZXNjYW5fY21kID0ga21hbGxvYyhzY2FuX3NpemUsIEdGUF9LRVJORUwpO1xcbjE0NjE6XFx0XFx0aWYgKCFtdm0tXFx1MDAzZXNjYW5fY21kKSB7XFxuMTQ2MjpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbjE0NjM6XFx0XFx0XFx0Z290byBvdXRfZnJlZTtcXG4xNDY0OlxcdFxcdH1cXG4xNDY1OlxcdFxcdG12bS1cXHUwMDNlc2Nhbl9jbWRfc2l6ZSA9IHNjYW5fc2l6ZTtcXG4xNDY2OlxcdFxcbjE0Njc6XFx0XFx0LyogaW52YWxpZGF0ZSBpZHMgdG8gcHJldmVudCBhY2NpZGVudGFsIHJlbW92YWwgb2Ygc3RhX2lkIDAgKi9cXG4xNDY4OlxcdFxcdG12bS1cXHUwMDNlYXV4X3N0YS5zdGFfaWQgPSBJV0xfSU5WQUxJRF9TVEE7XFxuMTQ2OTpcXHRcXHRtdm0tXFx1MDAzZXNuaWZfc3RhLnN0YV9pZCA9IElXTF9JTlZBTElEX1NUQTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjU6NTYuMDkwOTQwODc3WiIsIlNlcSI6NTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkwOTQ2Mzg3NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ29kZSdzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgaXdsX3RyYW5zX29wX21vZGVfZW50ZXJgIGlzIGNhbGxlZCB3aXRoaW4gYGl3bF9vcF9tb2RlX212bV9zdGFydGAuICBDcnVjaWFsbHksIGB0cmFucy1cdTAwM2VvcF9tb2RlYCBpcyBvbmx5IGluaXRpYWxpemVkICphZnRlciogdGhlIGZpcm13YXJlIHN1Y2Nlc3NmdWxseSBsb2FkcyBhbmQgaXMgcGFyc2VkLiAgU2luY2UgU3l6a2FsbGVyLCBpbiBpdHMgc3RhbmRhcmQgY29uZmlndXJhdGlvbiwgZG9lc24ndCB0eXBpY2FsbHkgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGZpcm13YXJlLCBJJ20gcHJldHR5IGNlcnRhaW4gdGhhdCBgdHJhbnMtXHUwMDNlb3BfbW9kZWAgd2lsbCBiZSBOVUxMIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cbkNvbnNlcXVlbnRseSwgYGl3bF90cmFuc19yZXN0YXJ0X3drYCB3aWxsIGltbWVkaWF0ZWx5IGJhaWwgb3V0IGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiB0aGUgZnVuY3Rpb246XG5gYGBjXG5cdGlmICghdHJhbnMtXHUwMDNlb3BfbW9kZSlcblx0XHRyZXR1cm47XG5gYGBcblRoaXMgbWVhbnMgdGhlIGNyaXRpY2FsIGxpbmUgSSdtIGludGVyZXN0ZWQgaW4sIHdoaWNoIHF1ZXVlcyBhIGRlbGF5ZWQgd29yazpcbmBgYGNcblx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfd3EsIFx1MDAyNnRyYW5zLVx1MDAzZXJlc3RhcnQud2ssXG5cdFx0XHQgICBJV0xfVFJBTlNfUkVTRVRfREVMQVkpO1xuYGBgXG53aWxsICpuZXZlciogYmUgZXhlY3V0ZWQgaW4gYSB0eXBpY2FsIFN5emthbGxlciBzY2VuYXJpby4gIFRoZXJlZm9yZSwgSSdkIGxlYW4gdG93YXJkcyBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGZvciB0aGlzIHBhcnRpY3VsYXIgY29kZSBwYXRoLlxuXG5CdXQgd2FpdCwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjay4gSXMgdGhlcmUgKmFueSogY2hhbmNlIFN5emthbGxlciBjb3VsZCBzb21laG93IHByb3ZpZGUgZmlybXdhcmU/IEl0ICpjb3VsZCogbGV2ZXJhZ2UgYHN5el9tb3VudF9pbWFnZWAgb3IgYSBzaW1pbGFyIGNhbGwsIGJ1dCByZWFsaXN0aWNhbGx5LCBpdCB1c3VhbGx5ICpkb2Vzbid0KiBpbmNsdWRlIHRob3NlIHNwZWNpZmljIEludGVsIFdpLUZpIGZpcm13YXJlIGZpbGVzLiAgQW5kIGV2ZW4gaWYgaXQgKmRpZCosIHRoZSB2UENJIGVtdWxhdG9yIHdvdWxkIGFsbW9zdCBjZXJ0YWlubHkgZmFpbCBhdCBvdGhlciBjcml0aWNhbCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBzdGVwcywgc3VjaCBhcyB0aG9zZSByZWxhdGVkIHRvIGBpd2xfdHJhbnNfYWN0aXZhdGVfbmljYCBhbmQgYGl3bF9wb2xsX2JpdHNgLCB3aGljaCBuZWVkIHRvIGhhcHBlbiAqYmVmb3JlKiB0aGUgZHJpdmVyIGV2ZW4gYXR0ZW1wdHMgZmlybXdhcmUgbG9hZGluZy5cblxuSG9sZCBvbiwgSSBzZWUgYSBwb3RlbnRpYWwgaXNzdWU6IGBpd2xfcGNpX2dlbjFfMl9wcm9iZWAgY2FsbHMgYGl3bF90cmFuc19hY3RpdmF0ZV9uaWNgICpiZWZvcmUqIGZpcm13YXJlIGxvYWRpbmcuIEkgbmVlZCB0byByZS1ldmFsdWF0ZSBgaXdsX3BjaV9nZW4xXzJfcHJvYmVgIHRvIGNvbmZpcm0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3NzQzLCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjY6MDUuMTg1NTg1MjczWiIsIlNlcSI6NTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NDgzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDI1OCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNDI1ODpcXHRcXHQvKlxcbjQyNTk6XFx0XFx0ICogTGV0J3MgdHJ5IHRvIGdyYWIgTklDIGFjY2VzcyBlYXJseSBoZXJlLiBTb21ldGltZXMsIE5JQ3MgbWF5XFxuNDI2MDpcXHRcXHQgKiBmYWlsIHRvIGluaXRpYWxpemUsIGFuZCBpZiB0aGF0IGhhcHBlbnMgaXQncyBiZXR0ZXIgaWYgd2Ugc2VlXFxuNDI2MTpcXHRcXHQgKiBpc3N1ZXMgZWFybHkgb24gKGFuZCBjYW4gcmVwcm9iZSwgcGVyIHRoZSBsb2dpYyBpbnNpZGUpLCB0aGFuXFxuNDI2MjpcXHRcXHQgKiBmaXJzdCB0cnlpbmcgdG8gbG9hZCB0aGUgZmlybXdhcmUgZXRjLiBhbmQgcG90ZW50aWFsbHkgb25seVxcbjQyNjM6XFx0XFx0ICogZGV0ZWN0aW5nIGFueSBwcm9ibGVtcyB3aGVuIHRoZSBmaXJzdCBpbnRlcmZhY2UgaXMgYnJvdWdodCB1cC5cXG40MjY0OlxcdFxcdCAqL1xcbjQyNjU6XFx0XFx0cmV0ID0gaXdsX3BjaWVfcHJlcGFyZV9jYXJkX2h3KGl3bF90cmFucyk7XFxuNDI2NjpcXHRcXHRpZiAoIXJldCkge1xcbjQyNjc6XFx0XFx0XFx0cmV0ID0gaXdsX3RyYW5zX2FjdGl2YXRlX25pYyhpd2xfdHJhbnMpO1xcbjQyNjg6XFx0XFx0XFx0aWYgKHJldClcXG40MjY5OlxcdFxcdFxcdFxcdGdvdG8gb3V0X2ZyZWVfdHJhbnM7XFxuNDI3MDpcXHRcXHRcXHRpZiAoaXdsX3RyYW5zX2dyYWJfbmljX2FjY2Vzcyhpd2xfdHJhbnMpKSB7XFxuNDI3MTpcXHRcXHRcXHRcXHRnZXRfY3JmX2lkKGl3bF90cmFucywgXFx1MDAyNmluZm8pO1xcbjQyNzI6XFx0XFx0XFx0XFx0LyogYWxsIGdvb2QgKi9cXG40MjczOlxcdFxcdFxcdFxcdGl3bF90cmFuc19yZWxlYXNlX25pY19hY2Nlc3MoaXdsX3RyYW5zKTtcXG40Mjc0OlxcdFxcdFxcdH0gZWxzZSB7XFxuNDI3NTpcXHRcXHRcXHRcXHRyZXQgPSAtRUlPO1xcbjQyNzY6XFx0XFx0XFx0XFx0Z290byBvdXRfZnJlZV90cmFucztcXG40Mjc3OlxcdFxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjY6MDUuMTg1OTQ0MTMzWiIsIlNlcSI6NTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwMzY4Mzc2MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPWZhbHNlOiBVbnJlYWNoYWJsZSBDb2RlIGluIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqXG5cbk9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uIE15IGFuYWx5c2lzIGluZGljYXRlcyB0aGF0IHRoZSBjb2RlIG1vZGlmaWNhdGlvbiwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGBxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3VuYm91bmRfd3EsIC4uLilgIHRvIGBxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF93cSwgLi4uKWAgd2l0aGluIHRoZSBJbnRlbCBXaS1GaSBkcml2ZXIsIGlzICpmdW5jdGlvbmFsbHkqIGEgY2hhbmdlLiBIb3dldmVyLCBpdCdzIHVsdGltYXRlbHkgdW5yZWFjaGFibGUgaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCBhbmQgdGh1cyBub3Qgd29ydGggZnV6emluZyBmb3Igb3VyIHB1cnBvc2VzLlxuXG5UaGUgY3JpdGljYWwgcGF0aCBiZWdpbnMgd2l0aCBgaXdsX3RyYW5zX2FjdGl2YXRlX25pY2AsIHdoaWNoIGNhbGxzIGBpd2xfcG9sbF9iaXRzYC4gVGhpcyBmdW5jdGlvbiwgY3J1Y2lhbCBoZXJlLCBpcyBkZXNpZ25lZCB0byB3YWl0IGZvciBhIHNwZWNpZmljIGJpdCB3aXRoaW4gYSByZWdpc3RlciB0byBiZSBzZXQuIFRoZSBpc3N1ZSBpcyB0aGF0IHRoZSB2aXJ0dWFsaXplZCBQQ0kgZW52aXJvbm1lbnQgdGhhdCBTeXprYWxsZXIgcHJlc2VudHMgY2FuIHJldHVybiByYW5kb20gZGF0YSwgd2hpY2ggbWF5IHJhbmRvbWx5IGNhdXNlIHRoaXMgZnVuY3Rpb24gdG8gc3VjY2VlZCBvciBmYWlsLiBJZiBpdCBzdWNjZWVkcywgdGhlIGNvZGUgY29udGludWVzIHRvIGBpd2xfdHJhbnNfZ3JhYl9uaWNfYWNjZXNzYCwgcmVhZHMgYENTUl9IV19SRl9JRGAsIGNhbGxzIGBpd2xfcGNpX2ZpbmRfZGV2X2luZm9gLCBhbmQgZmluYWxseSBgaXdsX2Rydl9zdGFydGAsIHdoaWNoIHJlcXVlc3RzIGZpcm13YXJlLiBJZiB0aGUgZmlybXdhcmUgaXNuJ3QgbG9hZGVkLCBvciBmYWlscyB0byBiZSBwcm9wZXJseSBpbml0aWFsaXplZCwgdGhlIGRyaXZlciB3aWxsIHVuYmluZC5cblxuVGhlIG1vZGlmaWNhdGlvbiBvY2N1cnMgb25seSBpZiBgdHJhbnMtXHUwMDNlb3BfbW9kZWAgaXMgc2V0LiBHaXZlbiB0aGUgbmVlZCBmb3IgSW50ZWwgcHJvcHJpZXRhcnkgZmlybXdhcmUgdG8gYmUgcHJvcGVybHkgbG9hZGVkIGFuZCBwYXJzZWQsIGFuZCB0aGUgc3VjY2Vzc2Z1bCBpbml0aWFsaXphdGlvbiBvZiB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgc3RhdGUgbWFjaGluZSwgdGhpcyBjb2RlIHBhdGggaXMgc2ltcGx5IGluYWNjZXNzaWJsZSBpbiBhIHZpcnR1YWxpemVkIFN5emthbGxlciBlbnZpcm9ubWVudC4gVGhlIGNvbXBsZXhpdHkgb2YgZW11bGF0aW5nIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGFuZCBwYXJzaW5nLCBjb21iaW5lZCB3aXRoIHRoZSBzdWNjZXNzZnVsIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHJlcXVpcmVkIHRvIHJlYWNoIHRoZSBjb2RlIHByZXZlbnRzIHVzIGZyb20gZnV6emluZyBpdC4gVGhlcmVmb3JlLCBhY2NvcmRpbmcgdG8gdGhlIGd1aWRlbGluZXMsIEkgY2FuIGNvbmZpZGVudGx5IHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg5NTAsIk91dHB1dFRva2VucyI6MTU5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6MjY6MTMuMjIyNzg3MzAyWiIsIlNlcSI6NjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk1ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgd29ya3F1ZXVlIHVzZWQgaW4gYGl3bF90cmFuc19yZXN0YXJ0X3drYCBmcm9tIGBzeXN0ZW1fdW5ib3VuZF93cWAgdG8gYHN5c3RlbV9kZmxfd3FgLiBIb3dldmVyLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgZWFybHkgaWYgYHRyYW5zLVxcdTAwM2VvcF9tb2RlYCBpcyBub3Qgc2V0LiBgdHJhbnMtXFx1MDAzZW9wX21vZGVgIGlzIG9ubHkgaW5pdGlhbGl6ZWQgYWZ0ZXIgdGhlIHByb3ByaWV0YXJ5IEludGVsIFdpLUZpIGZpcm13YXJlIGlzIHN1Y2Nlc3NmdWxseSBsb2FkZWQgZnJvbSB0aGUgZmlsZXN5c3RlbSBhbmQgcGFyc2VkIGJ5IHRoZSBkcml2ZXIuIEluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCB0aGUgc3BlY2lmaWMgZmlybXdhcmUgZmlsZXMgYW5kIHdpdGhvdXQgYSByZWFsIGhhcmR3YXJlIGRldmljZSAob3IgYSBoaWdobHkgc3BlY2lhbGl6ZWQgZW11bGF0b3IpLCB0aGUgZmlybXdhcmUgbG9hZGluZyB3aWxsIGZhaWwsIHRoZSBkcml2ZXIgd2lsbCB1bmJpbmQsIGFuZCB0aGlzIGNvZGUgcGF0aCB3aWxsIHJlbWFpbiBjb21wbGV0ZWx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgd29ya3F1ZXVlIHVzZWQgaW4gYGl3bF90cmFuc19yZXN0YXJ0X3drYCBmcm9tIGBzeXN0ZW1fdW5ib3VuZF93cWAgdG8gYHN5c3RlbV9kZmxfd3FgLiBIb3dldmVyLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgZWFybHkgaWYgYHRyYW5zLVxcdTAwM2VvcF9tb2RlYCBpcyBub3Qgc2V0LiBgdHJhbnMtXFx1MDAzZW9wX21vZGVgIGlzIG9ubHkgaW5pdGlhbGl6ZWQgYWZ0ZXIgdGhlIHByb3ByaWV0YXJ5IEludGVsIFdpLUZpIGZpcm13YXJlIGlzIHN1Y2Nlc3NmdWxseSBsb2FkZWQgZnJvbSB0aGUgZmlsZXN5c3RlbSBhbmQgcGFyc2VkIGJ5IHRoZSBkcml2ZXIuIEluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCB0aGUgc3BlY2lmaWMgZmlybXdhcmUgZmlsZXMgYW5kIHdpdGhvdXQgYSByZWFsIGhhcmR3YXJlIGRldmljZSAob3IgYSBoaWdobHkgc3BlY2lhbGl6ZWQgZW11bGF0b3IpLCB0aGUgZmlybXdhcmUgbG9hZGluZyB3aWxsIGZhaWwsIHRoZSBkcml2ZXIgd2lsbCB1bmJpbmQsIGFuZCB0aGlzIGNvZGUgcGF0aCB3aWxsIHJlbWFpbiBjb21wbGV0ZWx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlthn4[1] Phase: Running StartedAt: 2026-07-07 18:26:24 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlthn4[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-07 18:26:24 +0000 UTC FinishedAt: 2026-07-07 18:27:22 +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,}