Name: series-workflowf6wkd Phase: Succeeded StartedAt: 2026-07-27 14:33:57 +0000 UTC FinishedAt: 2026-07-27 19:18:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6wkd[0] Phase: Succeeded StartedAt: 2026-07-27 14:33:57 +0000 UTC FinishedAt: 2026-07-27 15:03:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6wkd[0].run-triage Phase: Succeeded StartedAt: 2026-07-27 14:33:57 +0000 UTC FinishedAt: 2026-07-27 15:03:32 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "04026c998c24ac47eb76886b9790c5710b603eb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIRTIO_VSOCKETS", "VSOCKETS", "VIRTIO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "04026c998c24ac47eb76886b9790c5710b603eb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIRTIO_VSOCKETS", "VSOCKETS", "VIRTIO" ], "series_id": "f89370a8-640f-423d-9a80-36627d7f307e" }, "track": "KASAN", "fuzz": { "focus": [ "kvm", "net" ], "focus_symbols": [ "virtio_transport_tx_work", "virtio_transport_event_work", "virtio_transport_rx_work" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE1OjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJUlRJT19WU09DS0VUUyYjMzQ7LAogICAgJiMzNDtWU09DS0VUUyYjMzQ7LAogICAgJiMzNDtWSVJUSU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmsmIzM0OywKICAgICYjMzQ7dmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrJiMzNDssCiAgICAmIzM0O3ZpcnRpb190cmFuc3BvcnRfcnhfd29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHZpcnRpbyB2c29jayB3b3JrcXVldWUgaGFuZGxlcnMgKFRYLCBSWCwgRXZlbnQpIHdoZXJlIHZpcnRxdWV1ZXMgY291bGQgYmUgYWNjZXNzZWQgYWZ0ZXIgdGhleSBhcmUgbm8gbG9uZ2VyIHZhbGlkLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGxvZ2ljIGZvciB2aXJ0aW8tdnNvY2ssIHdoaWNoIGlzIGNvbW1vbmx5IHVzZWQgYW5kIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTU6MDE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlMmY5ODEwMmFmMzcwYWZlZmUwZGY2YmIwZTBiNzRmZmY3NTVmMjgzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjcgMTU6MDE6NDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMgYi9uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuY1xuaW5kZXggNTdmMmQ2ZWMzZmZjNjkuLjc5Y2YxOWY1ODk0MzlmIDEwMDY0NFxuLS0tIGEvbmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jXG5AQCAtMzQ2LDEyICYjNDM7MzQ2LDEzIEBAIHN0YXRpYyB2b2lkIHZpcnRpb190cmFuc3BvcnRfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRzdHJ1Y3QgdmlydHF1ZXVlICp2cTtcbiBcdGJvb2wgYWRkZWQgPSBmYWxzZTtcbiBcbi1cdHZxID0gdnNvY2stXHUwMDNldnFzW1ZTT0NLX1ZRX1RYXTtcbiBcdG11dGV4X2xvY2soXHUwMDI2dnNvY2stXHUwMDNldHhfbG9jayk7XG4gXG4gXHRpZiAoIXZzb2NrLVx1MDAzZXR4X3J1bilcbiBcdFx0Z290byBvdXQ7XG4gXG4mIzQzO1x0dnEgPSB2c29jay1cdTAwM2V2cXNbVlNPQ0tfVlFfVFhdO1xuJiM0MztcbiBcdGRvIHtcbiBcdFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbiBcdFx0dW5zaWduZWQgaW50IGxlbjtcbkBAIC00NTEsMTMgJiM0Mzs0NTIsMTMgQEAgc3RhdGljIHZvaWQgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB2aXJ0aW9fdnNvY2ssIGV2ZW50X3dvcmspO1xuIFx0c3RydWN0IHZpcnRxdWV1ZSAqdnE7XG4gXG4tXHR2cSA9IHZzb2NrLVx1MDAzZXZxc1tWU09DS19WUV9FVkVOVF07XG4tXG4gXHRtdXRleF9sb2NrKFx1MDAyNnZzb2NrLVx1MDAzZWV2ZW50X2xvY2spO1xuIFxuIFx0aWYgKCF2c29jay1cdTAwM2VldmVudF9ydW4pXG4gXHRcdGdvdG8gb3V0O1xuIFxuJiM0MztcdHZxID0gdnNvY2stXHUwMDNldnFzW1ZTT0NLX1ZRX0VWRU5UXTtcbiYjNDM7XG4gXHRkbyB7XG4gXHRcdHN0cnVjdCB2aXJ0aW9fdnNvY2tfZXZlbnQgKmV2ZW50O1xuIFx0XHR1bnNpZ25lZCBpbnQgbGVuO1xuQEAgLTYzNCwxMyAmIzQzOzYzNSwxMyBAQCBzdGF0aWMgdm9pZCB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IHZpcnRpb192c29jaywgcnhfd29yayk7XG4gXHRzdHJ1Y3QgdmlydHF1ZXVlICp2cTtcbiBcbi1cdHZxID0gdnNvY2stXHUwMDNldnFzW1ZTT0NLX1ZRX1JYXTtcbi1cbiBcdG11dGV4X2xvY2soXHUwMDI2dnNvY2stXHUwMDNlcnhfbG9jayk7XG4gXG4gXHRpZiAoIXZzb2NrLVx1MDAzZXJ4X3J1bilcbiBcdFx0Z290byBvdXQ7XG4gXG4mIzQzO1x0dnEgPSB2c29jay1cdTAwM2V2cXNbVlNPQ0tfVlFfUlhdO1xuJiM0MztcbiBcdGRvIHtcbiBcdFx0dmlydHF1ZXVlX2Rpc2FibGVfY2IodnEpO1xuIFx0XHRmb3IgKDs7KSB7XG5AQCAtNjg5LDcgJiM0Mzs2OTAsOCBAQCBzdGF0aWMgdm9pZCB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0fSB3aGlsZSAoIXZpcnRxdWV1ZV9lbmFibGVfY2IodnEpKTtcbiBcbiBvdXQ6XG4tXHRpZiAodnNvY2stXHUwMDNlcnhfYnVmX25yIFx1MDAzYyB2c29jay1cdTAwM2VyeF9idWZfbWF4X25yIC8gMilcbiYjNDM7XHRpZiAodnNvY2stXHUwMDNlcnhfcnVuIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICB2c29jay1cdTAwM2VyeF9idWZfbnIgXHUwMDNjIHZzb2NrLVx1MDAzZXJ4X2J1Zl9tYXhfbnIgLyAyKVxuIFx0XHR2aXJ0aW9fdnNvY2tfcnhfZmlsbCh2c29jayk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2dnNvY2stXHUwMDNlcnhfbG9jayk7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE1OjAxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSVJUSU9fVlNPQ0tFVFMmIzM0OywKICAgICYjMzQ7VlNPQ0tFVFMmIzM0OywKICAgICYjMzQ7VklSVElPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmlydGlvX3RyYW5zcG9ydF90eF93b3JrJiMzNDssCiAgICAmIzM0O3ZpcnRpb190cmFuc3BvcnRfZXZlbnRfd29yayYjMzQ7LAogICAgJiMzNDt2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB2aXJ0aW8gdnNvY2sgd29ya3F1ZXVlIGhhbmRsZXJzIChUWCwgUlgsIEV2ZW50KSB3aGVyZSB2aXJ0cXVldWVzIGNvdWxkIGJlIGFjY2Vzc2VkIGFmdGVyIHRoZXkgYXJlIG5vIGxvbmdlciB2YWxpZC4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBsb2dpYyBmb3IgdmlydGlvLXZzb2NrLCB3aGljaCBpcyBjb21tb25seSB1c2VkIGFuZCBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTJmOTgxMDJhZjM3MGFmZWZlMGRmNmJiMGUwYjc0ZmZmNzU1ZjI4MwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDI3IDE1OjAxOjQ4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMgYi9uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYwppbmRleCA1N2YyZDZlYzNmZmM2OS4uNzljZjE5ZjU4OTQzOWYgMTAwNjQ0Ci0tLSBhL25ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jCkBAIC0zNDYsMTIgJiM0MzszNDYsMTMgQEAgc3RhdGljIHZvaWQgdmlydGlvX3RyYW5zcG9ydF90eF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAlzdHJ1Y3QgdmlydHF1ZXVlICp2cTsKIAlib29sIGFkZGVkID0gZmFsc2U7CiAKLQl2cSA9IHZzb2NrLSZndDt2cXNbVlNPQ0tfVlFfVFhdOwogCW11dGV4X2xvY2soJmFtcDt2c29jay0mZ3Q7dHhfbG9jayk7CiAKIAlpZiAoIXZzb2NrLSZndDt0eF9ydW4pCiAJCWdvdG8gb3V0OwogCiYjNDM7CXZxID0gdnNvY2stJmd0O3Zxc1tWU09DS19WUV9UWF07CiYjNDM7CiAJZG8gewogCQlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwogCQl1bnNpZ25lZCBpbnQgbGVuOwpAQCAtNDUxLDEzICYjNDM7NDUyLDEzIEBAIHN0YXRpYyB2b2lkIHZpcnRpb190cmFuc3BvcnRfZXZlbnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJCWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdmlydGlvX3Zzb2NrLCBldmVudF93b3JrKTsKIAlzdHJ1Y3QgdmlydHF1ZXVlICp2cTsKIAotCXZxID0gdnNvY2stJmd0O3Zxc1tWU09DS19WUV9FVkVOVF07Ci0KIAltdXRleF9sb2NrKCZhbXA7dnNvY2stJmd0O2V2ZW50X2xvY2spOwogCiAJaWYgKCF2c29jay0mZ3Q7ZXZlbnRfcnVuKQogCQlnb3RvIG91dDsKIAomIzQzOwl2cSA9IHZzb2NrLSZndDt2cXNbVlNPQ0tfVlFfRVZFTlRdOwomIzQzOwogCWRvIHsKIAkJc3RydWN0IHZpcnRpb192c29ja19ldmVudCAqZXZlbnQ7CiAJCXVuc2lnbmVkIGludCBsZW47CkBAIC02MzQsMTMgJiM0Mzs2MzUsMTMgQEAgc3RhdGljIHZvaWQgdmlydGlvX3RyYW5zcG9ydF9yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB2aXJ0aW9fdnNvY2ssIHJ4X3dvcmspOwogCXN0cnVjdCB2aXJ0cXVldWUgKnZxOwogCi0JdnEgPSB2c29jay0mZ3Q7dnFzW1ZTT0NLX1ZRX1JYXTsKLQogCW11dGV4X2xvY2soJmFtcDt2c29jay0mZ3Q7cnhfbG9jayk7CiAKIAlpZiAoIXZzb2NrLSZndDtyeF9ydW4pCiAJCWdvdG8gb3V0OwogCiYjNDM7CXZxID0gdnNvY2stJmd0O3Zxc1tWU09DS19WUV9SWF07CiYjNDM7CiAJZG8gewogCQl2aXJ0cXVldWVfZGlzYWJsZV9jYih2cSk7CiAJCWZvciAoOzspIHsKQEAgLTY4OSw3ICYjNDM7NjkwLDggQEAgc3RhdGljIHZvaWQgdmlydGlvX3RyYW5zcG9ydF9yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAl9IHdoaWxlICghdmlydHF1ZXVlX2VuYWJsZV9jYih2cSkpOwogCiBvdXQ6Ci0JaWYgKHZzb2NrLSZndDtyeF9idWZfbnIgJmx0OyB2c29jay0mZ3Q7cnhfYnVmX21heF9uciAvIDIpCiYjNDM7CWlmICh2c29jay0mZ3Q7cnhfcnVuICZhbXA7JmFtcDsKJiM0MzsJICAgIHZzb2NrLSZndDtyeF9idWZfbnIgJmx0OyB2c29jay0mZ3Q7cnhfYnVmX21heF9uciAvIDIpCiAJCXZpcnRpb192c29ja19yeF9maWxsKHZzb2NrKTsKIAltdXRleF91bmxvY2soJmFtcDt2c29jay0mZ3Q7cnhfbG9jayk7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE1OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVmlydGlvLVZTb2NrIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdHdlYWtzIGBuZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0FoLCB0aGlzIHRvdWNoZXMgdGhlIGNvcmUgdmlydGlvLXZzb2NrIHRyYW5zcG9ydCBsYXllci4mIzM0OyBUaGUga2V5IGNoYW5nZXMgYXJlIHdpdGhpbiBgdmlydGlvX3RyYW5zcG9ydF90eF93b3JrYCwgYHZpcnRpb190cmFuc3BvcnRfZXZlbnRfd29ya2AsIGFuZCBgdmlydGlvX3RyYW5zcG9ydF9yeF93b3JrYC4gU3BlY2lmaWNhbGx5LCB0aGUgY29kZSBub3cgYXNzaWducyB0aGUgdmlydHF1ZXVlIChgdnFgKSBvbmx5ICphZnRlciogY2hlY2tpbmcgaWYgYHZzb2NrLSZndDt0eF9ydW5gIChhbmQgYGV2ZW50X3J1bmAsIGByeF9ydW5gKSBpcyB0cnVlLCBhbmQgdGhpcyBjaGVjayBvY2N1cnMgd2l0aGluIHRoZSBtdXRleCBsb2NrLiBBZGRpdGlvbmFsbHksIHRoZXJlJiMzOTtzIGEgbmV3IGNoZWNrIGZvciBgdnNvY2stJmd0O3J4X3J1bmAgYmVmb3JlIGNhbGxpbmcgYHZpcnRpb192c29ja19yeF9maWxsKHZzb2NrKTtgIGluIGB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmtgLgoKTXkgaW5pdGlhbCByZWFkIHN1Z2dlc3RzIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCDigJMgbGlrZWx5IGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlLiBUaGUgb3JpZ2luYWwgY29kZSBwb3RlbnRpYWxseSBhY2Nlc3NlZCB0aGUgdmlydHF1ZXVlIGFmdGVyIGB2c29jay0mZ3Q7dHhfcnVuYCBiZWNhbWUgZmFsc2UsIGxlYWRpbmcgdG8gaW52YWxpZCBhY2Nlc3MuIFdhaXQsIHllYWgsIGlmIGB2c29jay0mZ3Q7dHhfcnVuYCBpcyBmYWxzZSwgaXQganVtcHMgdG8gYG91dGAsIGJ1dCBgdnFgIHdhcyBhc3NpZ25lZCBhbHJlYWR5LCB0aGF0IGFjY2VzcyB0byBgdnNvY2stJmd0O3Zxc2AgY291bGQgYmUgYSBidWcuCgpOb3csIGxldCYjMzk7cyBjb25maXJtIHRoZSBzaWduaWZpY2FuY2UuIGB2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmtgLCBgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrYCwgYW5kIGB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmtgIGFyZSBkZWZpbml0ZWx5IHdvcmtxdWV1ZSBmdW5jdGlvbnMgY3JpdGljYWwgdG8gdmlydGlvLXZzb2NrJiMzOTtzIGZ1bmN0aW9uYWxpdHkuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdmlydGlvLXZzb2NrIGlzIHN1cHBvcnRlZCBpbiBRRU1VIGFuZCwgaW1wb3J0YW50bHksIGZyZXF1ZW50bHkgZnV6emVkLiBUaGF0IG1lYW5zIHRoZXNlIGZ1bmN0aW9ucyBhcmUgaGlnaC12YWx1ZSB0YXJnZXRzIGZvciBleHBsb2l0IGF0dGVtcHRzLgoKR2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgYSBzZWN1cml0eSBpc3N1ZSwgaXQmIzM5O3MgZGVmaW5pdGVseSB3b3J0aCBpbnZlc3RpZ2F0aW5nIHRob3JvdWdobHkuIFRoZSBuZXh0IHN0ZXAgaXMgdG8gbG9jYXRlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHZpcnRpby12c29jaywgbGlrZWx5IGluIGBuZXQvdm13X3Zzb2NrL0tjb25maWdgIG9yIHBvc3NpYmx5IGV2ZW4gYGRyaXZlcnMvdmhvc3QvS2NvbmZpZ2AuIExldCYjMzk7cyBjb25maXJtIHRoYXQgYnkgZ3JlcHBpbmcgZm9yIGB2aXJ0aW9fdHJhbnNwb3J0LmNgIGluIGBuZXQvdm13X3Zzb2NrL01ha2VmaWxlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aXJ0aW9fdHJhbnNwb3J0Lm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrL01ha2VmaWxlPTQ9b2JqLSQoQ09ORklHX1ZNV0FSRV9WTUNJX1ZTT0NLRVRTKSAmIzQzOz0gdm13X3Zzb2NrX3ZtY2lfdHJhbnNwb3J0Lm9cbm5ldC92bXdfdnNvY2svTWFrZWZpbGU6NTpvYmotJChDT05GSUdfVklSVElPX1ZTT0NLRVRTKSAmIzQzOz0gdm13X3Zzb2NrX3ZpcnRpb190cmFuc3BvcnQub1xubmV0L3Ztd192c29jay9NYWtlZmlsZS02LW9iai0kKENPTkZJR19WSVJUSU9fVlNPQ0tFVFNfQ09NTU9OKSAmIzQzOz0gdm13X3Zzb2NrX3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLm9cbi0tXG5uZXQvdm13X3Zzb2NrL01ha2VmaWxlPTE1PXZtd192c29ja192bWNpX3RyYW5zcG9ydC15ICYjNDM7PSB2bWNpX3RyYW5zcG9ydC5vIHZtY2lfdHJhbnNwb3J0X25vdGlmeS5vIFxcXG4tLVxubmV0L3Ztd192c29jay9NYWtlZmlsZS0xNy1cbm5ldC92bXdfdnNvY2svTWFrZWZpbGU6MTg6dm13X3Zzb2NrX3ZpcnRpb190cmFuc3BvcnQteSAmIzQzOz0gdmlydGlvX3RyYW5zcG9ydC5vXG5uZXQvdm13X3Zzb2NrL01ha2VmaWxlLTE5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE1OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MTkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIFZpcnRpby1WU09DSyBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBgQ09ORklHX1ZJUlRJT19WU09DS0VUU2AgaXMgdGhlIGtleS4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBgbmV0L3Ztd192c29jay9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgZGVmaW5pdGlvbiBhbmQgZGVwZW5kZW5jaWVzIGZvciBgVklSVElPX1ZTT0NLRVRTYCBzaG91bGQgbGl2ZS4gSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gc3ltYm9sIGlzIHByb3Blcmx5IGRlZmluZWQgYW5kIHRoYXQgaXRzIGRlcGVuZGVuY2llcywgaWYgYW55LCBhcmUgd2hhdCBJIGV4cGVjdC4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2Ugd2hldGhlciBpdCYjMzk7cyB0aWVkIHRvIHRoZSBgVklSVElPYCBmYW1pbHkgZ2VuZXJhbGx5LCBvciBwZXJoYXBzIHNwZWNpZmljIGhhcmR3YXJlIHZpcnR1YWxpemF0aW9uIHBsYXRmb3Jtcy4gSSYjMzk7bGwgYWxzbyBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIG9wdGlvbnMgb3IgZGVmYXVsdCBzZXR0aW5ncyB0aGF0IGFyZSByZWxldmFudCB0byBteSBjdXJyZW50IGludmVzdGlnYXRpb24uIEtub3dpbmcgdGhlIGNvbnRleHQgb2YgdGhlIEtjb25maWcgZmlsZSB3aWxsIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciBldmFsdWF0aW5nIGl0cyBpbXBsaWNhdGlvbnMgaW4gdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIHJ1bnRpbWUgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTU6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZJUlRJT19WU09DS0VUUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svS2NvbmZpZz00MT1jb25maWcgVk1XQVJFX1ZNQ0lfVlNPQ0tFVFNcbi0tXG5uZXQvdm13X3Zzb2NrL0tjb25maWctNTItXG5uZXQvdm13X3Zzb2NrL0tjb25maWc6NTM6Y29uZmlnIFZJUlRJT19WU09DS0VUU1xubmV0L3Ztd192c29jay9LY29uZmlnLTU0LVx0dHJpc3RhdGUgXCYjMzQ7dmlydGlvIHRyYW5zcG9ydCBmb3IgVmlydHVhbCBTb2NrZXRzXCYjMzQ7XG4tLVxubmV0L3Ztd192c29jay9LY29uZmlnLTY1LVxubmV0L3Ztd192c29jay9LY29uZmlnOjY2OmNvbmZpZyBWSVJUSU9fVlNPQ0tFVFNfQ09NTU9OXG5uZXQvdm13X3Zzb2NrL0tjb25maWctNjctXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE1OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNTEKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgVklSVElPX1ZTT0NLRVRTIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBvYmplY3RpdmUgaXMgY2xlYXI6IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YgYFZJUlRJT19WU09DS0VUU2AuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYWJvdXQgaWRlbnRpZnlpbmcgdGhlIGltbWVkaWF0ZSBwYXJlbnQsIHRob3VnaCB0aGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHRoaW5rIGFib3V0IHRoaXMgaW4gYSBsYXllcmVkIGZhc2hpb24uIFdoYXQgZG9lcyBgVklSVElPX1ZTT0NLRVRTYCByZWx5IG9uIGF0IHRoZSBoYXJkd2FyZSBsZXZlbD8gSXMgaXQgYSBzcGVjaWZpYyBWSVJUSU8gdHJhbnNwb3J0PyBJcyB0aGVyZSBhbnl0aGluZyBwbGF0Zm9ybSBzcGVjaWZpYyB0aGF0IHRoaXMgaXMgZ29pbmcgdG8gYmUgc2l0dGluZyBvbiB0b3Agb2Y/IEkgbmVlZCB0byB0aGluayBhYm91dCB3aGljaCBWSVJUSU8gc3BlYyB2ZXJzaW9uIGlzIHJlbGV2YW50LiBBcmUgdGhlcmUgYW55IGZlYXR1cmVzIEkgd291bGQgZXhwZWN0IHRvIGZpbmQgaW4gaXRzIGltcGxlbWVudGF0aW9uLCB3aGljaCBpcyBhbHNvIGdvaW5nIHRvIGFmZmVjdCB0aGUgZGVwZW5kZW5jeSBjaGFpbj8gSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIGJ1aWxkIHN5c3RlbSBkZWZpbml0aW9ucywgYW5kIHRoZSBtb2R1bGUgYnVpbGQgY29uZmlnLiBUaG9zZSBzaG91bGQgYmUgdGhlIHByaW1hcnkgc291cmNlcyBvZiB0cnV0aCB0byBzZWUgdGhlIG90aGVyIGtlcm5lbCBtb2R1bGVzLCBhbmQgZHJpdmVycyB0aGF0IGBWSVJUSU9fVlNPQ0tFVFNgIHB1bGxzIGluLCBvciBpZiBpdCBoYXMgYW55IG1vZHVsZSBvcHRpb25zLiBUaGVuIEkgbmVlZCB0byBmb2xsb3cgdGhlIHRyYWlsLiBJZiBpdCByZWZlcmVuY2VzIG90aGVyIFZJUlRJTyBkcml2ZXJzLCBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgaW50ZXJhY3Rpb25zLiBEb2VzIGl0IGludGVyYWN0IHdpdGggYSBjb3JlIFZJUlRJTyBsYXllcj8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBmb3IgSS9PIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmc/IFRoaXMgYWxzbyBtZWFucyBwb3RlbnRpYWxseSBjb25zaWRlcmluZyB0aGUgdXNlcnNwYWNlIHNpZGUsIGVzcGVjaWFsbHkgaWYgdGhpcyB1dGlsaXplcyBhIGRlZGljYXRlZCB0cmFuc3BvcnQsIGFuZCBpZiB0aGVyZSBhcmUgYW55IGFzc29jaWF0ZWQgbGlicmFyaWVzLiBVbHRpbWF0ZWx5LCBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBhcmNoaXRlY3R1cmFsIGNvbnRleHQgb2YgYFZJUlRJT19WU09DS0VUU2AgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgdmlydHVhbGl6YXRpb24gbGFuZHNjYXBlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBhbGwgdGhlIHBpZWNlcyBpdCB0b3VjaGVzIHRvIG1ha2UgaXQgd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNTA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuICA1MTpcdFx0ICB3aWxsIGJlIGNhbGxlZCB2bXdfdnNvY2tfdm1jaV90cmFuc3BvcnQuIElmIHVuc3VyZSwgc2F5IE4uXG4gIDUyOlx0XG4gIDUzOlx0Y29uZmlnIFZJUlRJT19WU09DS0VUU1xuICA1NDpcdFx0dHJpc3RhdGUgXCYjMzQ7dmlydGlvIHRyYW5zcG9ydCBmb3IgVmlydHVhbCBTb2NrZXRzXCYjMzQ7XG4gIDU1Olx0XHRkZXBlbmRzIG9uIFZTT0NLRVRTIFx1MDAyNlx1MDAyNiBWSVJUSU9cbiAgNTY6XHRcdHNlbGVjdCBWSVJUSU9fVlNPQ0tFVFNfQ09NTU9OXG4gIDU3Olx0XHRoZWxwXG4gIDU4Olx0XHQgIFRoaXMgbW9kdWxlIGltcGxlbWVudHMgYSB2aXJ0aW8gdHJhbnNwb3J0IGZvciBWaXJ0dWFsIFNvY2tldHMuXG4gIDU5Olx0XG4gIDYwOlx0XHQgIEVuYWJsZSB0aGlzIHRyYW5zcG9ydCBpZiB5b3VyIFZpcnR1YWwgTWFjaGluZSBob3N0IHN1cHBvcnRzIFZpcnR1YWxcbiAgNjE6XHRcdCAgU29ja2V0cyBvdmVyIHZpcnRpby5cbiAgNjI6XHRcbiAgNjM6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXG4gIDY0Olx0XHQgIGNhbGxlZCB2bXdfdnNvY2tfdmlydGlvX3RyYW5zcG9ydC4gSWYgdW5zdXJlLCBzYXkgTi5cbiAgNjU6XHRcbiAgNjY6XHRjb25maWcgVklSVElPX1ZTT0NLRVRTX0NPTU1PTlxuICA2NzpcdFx0dHJpc3RhdGVcbiAgNjg6XHRcdGhlbHBcbiAgNjk6XHRcdCAgVGhpcyBvcHRpb24gaXMgc2VsZWN0ZWQgYnkgYW55IGRyaXZlciB3aGljaCBuZWVkcyB0byBhY2Nlc3NcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODU4CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipEZWVwIERpdmUgaW50byBWU09DSyBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMuIFRoZSBjb3JlIGRlcGVuZGVuY2llcywgZnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBhcmUgYFZTT0NLRVRTYCBhbmQgYFZJUlRJT2AuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0JiMzOTtzIHRoZSB2aXJ0dWFsIHNvY2tldCBpbXBsZW1lbnRhdGlvbiwgbGlrZWx5IG92ZXIgdGhlIFZpcnRJTyB0cmFuc3BvcnQgbGF5ZXIuIE1ha2VzIGl0IHRoZSBvYnZpb3VzIGNob2ljZSBmb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIGBWU09DS0VUU2AgY29uZmlndXJhdGlvbiBkaXJlY3RseSB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2UuIFdoZXJlIGVsc2Ugd291bGQgaXQgYmUgZGVmaW5lZCBidXQgaW4gYG5ldC92bXdfdnNvY2svS2NvbmZpZ2A/IEl0JiMzOTtzIHRoZSBzdGFuZGFyZCBsb2NhdGlvbiBmb3IgdGhpcyBraW5kIG9mIGRldmljZS4gTGV0JiMzOTtzIHNlZSB3aGF0IGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQsIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLCBhbmQgbW9zdCBpbXBvcnRhbnRseSwgd2hhdCBvdGhlciBkZXBlbmRlbmNpZXMgYW5kIGNvbmRpdGlvbmFscyBtaWdodCBiZSBsdXJraW5nLiBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgZGV0YWlscyBvZiB0aGUgS2NvbmZpZyBmaWxlIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGltcGxlbWVudGF0aW9uIGluc2lkZSBhbmQgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFZzb2NrIHByb3RvY29sXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBWU09DS0VUU1xuICAgNzpcdFx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBTb2NrZXQgcHJvdG9jb2xcJiMzNDtcbiAgIDg6XHRcdGhlbHBcbiAgIDk6XHRcdCAgVmlydHVhbCBTb2NrZXQgUHJvdG9jb2wgaXMgYSBzb2NrZXQgcHJvdG9jb2wgc2ltaWxhciB0byBUQ1AvSVBcbiAgMTA6XHRcdCAgYWxsb3dpbmcgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIFZpcnR1YWwgTWFjaGluZXMgYW5kIGh5cGVydmlzb3JcbiAgMTE6XHRcdCAgb3IgaG9zdC5cbiAgMTI6XHRcbiAgMTM6XHRcdCAgWW91IHNob3VsZCBhbHNvIHNlbGVjdCBvbmUgb3IgbW9yZSBoeXBlcnZpc29yLXNwZWNpZmljIHRyYW5zcG9ydHNcbiAgMTQ6XHRcdCAgYmVsb3cuXG4gIDE1Olx0XG4gIDE2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAgMTc6XHRcdCAgd2lsbCBiZSBjYWxsZWQgdnNvY2suIElmIHVuc3VyZSwgc2F5IE4uXG4gIDE4Olx0XG4gIDE5Olx0Y29uZmlnIFZTT0NLRVRTX0RJQUdcbiAgMjA6XHRcdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgU29ja2V0cyBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Mzc1CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVmlydGlvIHZzb2NrIFRyYW5zcG9ydCBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYFZTT0NLRVRTYCwgYFZJUlRJT2AsIGFuZCBgVklSVElPX1ZTT0NLRVRTYC4gUmlnaHQsIGBWSVJUSU9gIGlzIGEgY29yZSBjb25maWcsIHNvIHRoYXQmIzM5O3MgZXhwZWN0ZWQuIExldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBkZXBlbmRlbmNpZXMgYXQgcGxheSBoZXJlLiBUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgbW9kaWZ5aW5nIGB2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmtgLCBgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrYCwgYW5kIGB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmtgLiBUaG9zZSBsb29rIGxpa2Ugd29ya3F1ZXVlIGZ1bmN0aW9ucywgdHJpZ2dlcmVkIHByb2JhYmx5IGJ5IHZpcnRxdWV1ZSBjYWxsYmFja3Mgb3Igb3RoZXIgZXZlbnRzLgoKV2hhdCBhcmUgdGhlIGltcG9ydGFudCBzeW1ib2xzIEkgc2hvdWxkIGJlIGZvY3VzaW5nIG9uPyBMZXQgbWUgbm90ZSB0aG9zZSBmdW5jdGlvbnMgZG93bjogYHZpcnRpb190cmFuc3BvcnRfdHhfd29ya2AsIGB2aXJ0aW9fdHJhbnNwb3J0X2V2ZW50X3dvcmtgLCBhbmQgYHZpcnRpb190cmFuc3BvcnRfcnhfd29ya2AuCgpXYWl0LCB0aGVzZSBsb29rIGxpa2Ugc3RhdGljIGZ1bmN0aW9ucy4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrLiBZdXAsIGBzdGF0aWMgdm9pZCB2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKWAsIGV0Yy4gU2luY2UgdGhleSYjMzk7cmUgc3RhdGljLCB0aGV5ICptaWdodCogbm90IGJlIHRoZSBiZXN0IGZvY3VzIHN5bWJvbHMgaWYgdGhleSYjMzk7cmUgaW5saW5lZC4gQnV0IHdhaXQsIHdvcmtxdWV1ZSBmdW5jdGlvbnMgY2FuJiMzOTt0IGJlIGlubGluZWQgYmVjYXVzZSB0aGVpciBhZGRyZXNzZXMgYXJlIHBhc3NlZCB0byBgSU5JVF9XT1JLYC4gRXhhY3RseS4gVGhlIGluc3RydWN0aW9ucyBzcGVjaWZ5IGEgcHJlZmVyZW5jZSBmb3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBIb3dldmVyLCB0aGVzZSAqYXJlKiBwYXNzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMgdG8gYElOSVRfV09SS2AsIHNvIHRoZXkgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLgoKT2theSwgdGhlc2Ugc2hvdWxkIGJlIGZpbmUsIGJ1dCBtYXliZSBJIHNob3VsZCBhbHNvIGluY2x1ZGUgdGhlIGZ1bmN0aW9ucyB0aGF0IHNjaGVkdWxlIHRoZW0sIG9yIHRoZSB2aXJ0aW8gdnNvY2sgZW50cnkgcG9pbnRzLCBqdXN0IHRvIGJlIHRob3JvdWdoLiBJIHNob3VsZCBjaGVjayBgdmlydGlvX3RyYW5zcG9ydC5jYCB0byBzZWUgd2hlcmUgdGhlc2Ugd29ya3F1ZXVlIGZ1bmN0aW9ucyBhcmUgYmVpbmcgY2FsbGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJTklUX1dPUksuKnZpcnRpb190cmFuc3BvcnRfLipfd29yayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTgwMD1zdGF0aWMgaW50IHZpcnRpb192c29ja19wcm9iZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy04MjktXHRza2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNnZzb2NrLVx1MDAzZXNlbmRfcGt0X3F1ZXVlKTtcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjgzMDpcdElOSVRfV09SSyhcdTAwMjZ2c29jay1cdTAwM2VyeF93b3JrLCB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmspO1xubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6ODMxOlx0SU5JVF9XT1JLKFx1MDAyNnZzb2NrLVx1MDAzZXR4X3dvcmssIHZpcnRpb190cmFuc3BvcnRfdHhfd29yayk7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzo4MzI6XHRJTklUX1dPUksoXHUwMDI2dnNvY2stXHUwMDNlZXZlbnRfd29yaywgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrKTtcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjgzMzpcdElOSVRfV09SSyhcdTAwMjZ2c29jay1cdTAwM2VzZW5kX3BrdF93b3JrLCB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X3dvcmspO1xubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtODM0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDI0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHVuZGVyc3RhbmRpbmcsIGZyYW1lZCBhcyBteSBvd24gdGhvdWdodHM6CgoqKlZpcnRpby1WU29jayBJbml0aWFsaXphdGlvbiBhbmQgVHJpZ2dlcmluZyoqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNraW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgdmlydGlvLXZzb2NrIGRyaXZlciBhbmQgaXRzIHRob3VnaHQgcHJvY2Vzc2VzLiBJdCBhbGwgc3RhcnRzIGluIGB2aXJ0aW9fdnNvY2tfcHJvYmVgLCB3aGljaCBtYWtlcyBzZW5zZSBhcyB0aGUgZW50cnkgcG9pbnQuIEJ1dCB3aGF0IHJlYWxseSBzZXRzIHRoZSB3aG9sZSB0aGluZyBpbiBtb3Rpb24/IEFoLCByaWdodCwgaXQmIzM5O3MgdGhlIHZpcnRxdWV1ZSBjYWxsYmFja3MuIFRob3NlIGFyZSB0aGUga2V5LiBUaGV54oCZcmUgbGlrZSB0aGUgZXZlbnQgaGFuZGxlcnMsIHRoZSB0cmlnZ2Vycy4gV2hlbiBkYXRhIGlzIGF2YWlsYWJsZSwgYSByZXF1ZXN0IGNvbXBsZXRlcywgb3Igc29tZSBvdGhlciB2aXJ0cXVldWUtcmVsYXRlZCBldmVudCBvY2N1cnMsIHRoZSBkcml2ZXImIzM5O3MgaW50ZXJuYWwgbG9naWMgd2FrZXMgdXAgYW5kIHNwcmluZ3MgdG8gYWN0aW9uLiBUaGF0JiMzOTtzIHRoZSBwcmltYXJ5IG1lY2hhbmlzbSBkcml2aW5nIHRoZSBzdGF0ZSBjaGFuZ2VzIGFuZCByZWFjdGlvbnMgb2YgdGhpcyB3aG9sZSBwcm9jZXNzLiBNYWtlcyBwZXJmZWN0IHNlbnNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtxdWV1ZV93b3JrLipfd29yayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTE1OD12aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTIxMC1cdGlmIChyZXN0YXJ0X3J4KVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6MjExOlx0XHRxdWV1ZV93b3JrKHZpcnRpb192c29ja193b3JrcXVldWUsIFx1MDAyNnZzb2NrLVx1MDAzZXJ4X3dvcmspO1xubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtMjEyLX1cbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz0yMzc9dmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtMjcwLVx0XHR2aXJ0aW9fdnNvY2tfc2tiX3F1ZXVlX3RhaWwoXHUwMDI2dnNvY2stXHUwMDNlc2VuZF9wa3RfcXVldWUsIHNrYik7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzoyNzE6XHRcdHF1ZXVlX3dvcmsodmlydGlvX3Zzb2NrX3dvcmtxdWV1ZSwgXHUwMDI2dnNvY2stXHUwMDNlc2VuZF9wa3Rfd29yayk7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy0yNzItXHR9XG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM9MjgwPXZpcnRpb190cmFuc3BvcnRfY2FuY2VsX3BrdChzdHJ1Y3QgdnNvY2tfc29jayAqdnNrKVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTMwMC1cdFx0ICAgIG5ld19jbnQgXHUwMDNjIHZpcnRxdWV1ZV9nZXRfdnJpbmdfc2l6ZShyeF92cSkpXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzozMDE6XHRcdFx0cXVldWVfd29yayh2aXJ0aW9fdnNvY2tfd29ya3F1ZXVlLCBcdTAwMjZ2c29jay1cdTAwM2VyeF93b3JrKTtcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTMwMi1cdH1cbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz0zNDI9c3RhdGljIHZvaWQgdmlydGlvX3RyYW5zcG9ydF90eF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy0zNzAtXHRpZiAoYWRkZWQpXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzozNzE6XHRcdHF1ZXVlX3dvcmsodmlydGlvX3Zzb2NrX3dvcmtxdWV1ZSwgXHUwMDI2dnNvY2stXHUwMDNlc2VuZF9wa3Rfd29yayk7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy0zNzItfVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTQ4MD1zdGF0aWMgdm9pZCB2aXJ0aW9fdnNvY2tfZXZlbnRfZG9uZShzdHJ1Y3QgdmlydHF1ZXVlICp2cSlcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy00ODUtXHRcdHJldHVybjtcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjQ4NjpcdHF1ZXVlX3dvcmsodmlydGlvX3Zzb2NrX3dvcmtxdWV1ZSwgXHUwMDI2dnNvY2stXHUwMDNlZXZlbnRfd29yayk7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy00ODctfVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTQ4OT1zdGF0aWMgdm9pZCB2aXJ0aW9fdnNvY2tfdHhfZG9uZShzdHJ1Y3QgdmlydHF1ZXVlICp2cSlcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy00OTQtXHRcdHJldHVybjtcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjQ5NTpcdHF1ZXVlX3dvcmsodmlydGlvX3Zzb2NrX3dvcmtxdWV1ZSwgXHUwMDI2dnNvY2stXHUwMDNldHhfd29yayk7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy00OTYtfVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTQ5OD1zdGF0aWMgdm9pZCB2aXJ0aW9fdnNvY2tfcnhfZG9uZShzdHJ1Y3QgdmlydHF1ZXVlICp2cSlcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy01MDMtXHRcdHJldHVybjtcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjUwNDpcdHF1ZXVlX3dvcmsodmlydGlvX3Zzb2NrX3dvcmtxdWV1ZSwgXHUwMDI2dnNvY2stXHUwMDNlcnhfd29yayk7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy01MDUtfVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTcyNz1zdGF0aWMgdm9pZCB2aXJ0aW9fdnNvY2tfdnFzX3N0YXJ0KHN0cnVjdCB2aXJ0aW9fdnNvY2sgKnZzb2NrKVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTc1MS1cdCAqL1xubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6NzUyOlx0cXVldWVfd29yayh2aXJ0aW9fdnNvY2tfd29ya3F1ZXVlLCBcdTAwMjZ2c29jay1cdTAwM2VzZW5kX3BrdF93b3JrKTtcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTc1My19XG4tLVxubmV0L3Ztd192c29jay92c29ja19sb29wYmFjay5jPTI5PXN0YXRpYyBpbnQgdnNvY2tfbG9vcGJhY2tfc2VuZF9wa3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldCAqbmV0KVxuLS1cbm5ldC92bXdfdnNvY2svdnNvY2tfbG9vcGJhY2suYy0zNC1cdHZpcnRpb192c29ja19za2JfcXVldWVfdGFpbChcdTAwMjZ2c29jay1cdTAwM2Vwa3RfcXVldWUsIHNrYik7XG5uZXQvdm13X3Zzb2NrL3Zzb2NrX2xvb3BiYWNrLmM6MzU6XHRxdWV1ZV93b3JrKHZzb2NrLVx1MDAzZXdvcmtxdWV1ZSwgXHUwMDI2dnNvY2stXHUwMDNlcGt0X3dvcmspO1xubmV0L3Ztd192c29jay92c29ja19sb29wYmFjay5jLTM2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODg2CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKklkZW50aWZ5aW5nIEtleSB2c29jayBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgdmlydHF1ZXVlIGNhbGxiYWNrcyDigJMgdGhvc2UgYXJlIHRoZSBjb3JlIG9mIGhvdyB0aGUgdnNvY2sgaW1wbGVtZW50YXRpb24gaGFuZGxlcyBkYXRhIGZsb3csIHNvIHRoZXkmIzM5O3JlIGRlZmluaXRlbHkgaW1wb3J0YW50LiBJIHNlZSB0aGVtIGFzIGB2aXJ0aW9fdnNvY2tfZXZlbnRfZG9uZWAsIGB2aXJ0aW9fdnNvY2tfdHhfZG9uZWAsIGFuZCBgdmlydGlvX3Zzb2NrX3J4X2RvbmVgLiBUaG9zZSBhcmUgdGhlIG9idmlvdXMgZm9jdXMgcG9pbnRzIGFzIGZhciBhcyB0aGUgY2FsbGJhY2sgZnVuY3Rpb25zIGFyZSBjb25jZXJuZWQuCgpCZXlvbmQgdGhvc2UsIEkgbmVlZCB0byBjb25zaWRlciB3aGVyZSB0aGUgcHJvY2Vzc2luZyBkcml2ZW4gYnkgdGhvc2UgY2FsbGJhY2tzIGFjdHVhbGx5IGhhcHBlbnMsIGFuZCBpbiB0aGlzIGNvbnRleHQsIHRoYXQgc2VlbXMgdG8gYmUgaW5zaWRlIGB2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmtgLCBgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrYCwgYW5kIGB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmtgLiBUaGVzZSBzZWVtIHRvIGJlIHRoZSBjb3JlIHRyYW5zcG9ydCBmdW5jdGlvbnMuCgpOb3csIGxldCYjMzk7cyBzZWUgaWYgd2UmIzM5O3ZlIG1pc3NlZCBhbnl0aGluZy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIG1pZ2h0IGJlIHNpZ25pZmljYW50LiBJJiMzOTttIG5vdGluZyB0aGF0IGB2aXJ0aW9fdnNvY2tfZXZlbnRfZG9uZWAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBJbnRlcmVzdGluZy4gSSBuZWVkIHRvIGtub3cgaWYgYW55IG90aGVyIGZ1bmN0aW9ucywgbGlrZSBgdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdGAsIGFyZSBhY2Nlc3NpYmxlIGZyb20gb3V0c2lkZSB0aGUgc3BlY2lmaWMgdnNvY2sgbW9kdWxlLiBJZiBgdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdGAgaXMgbm90IHN0YXRpYywgdGhhdCYjMzk7cyBhIGtleSBmdW5jdGlvbiBmb3IgbXkgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE1OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz0zMD1zdHJ1Y3QgdmlydGlvX3Zzb2NrIHtcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy02MS1cdC8qIFRoZXNlIGZpZWxkcyBhcmUgdXNlZCBvbmx5IGluIHR4IHBhdGggaW4gZnVuY3Rpb25cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjYyOlx0ICogJiMzOTt2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X3dvcmsoKSYjMzk7LCBzbyB0byBzYXZlXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy02My1cdCAqIHN0YWNrIHNwYWNlIGluIGl0LCBwbGFjZSBib3RoIG9mIHRoZW0gaGVyZS4gRWFjaFxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTE1Nz1zdGF0aWMgdm9pZFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6MTU4OnZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3Rfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy0xNTkte1xuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTIzNj1zdGF0aWMgaW50XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzoyMzc6dmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy0yMzgte1xuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTU1Nz1zdGF0aWMgc3RydWN0IHZpcnRpb190cmFuc3BvcnQgdmlydGlvX3RyYW5zcG9ydCA9IHtcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy02MDgtXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzo2MDk6XHQuc2VuZF9wa3QgPSB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0LFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNjEwLVx0LmNhbl9tc2d6ZXJvY29weSA9IHZpcnRpb190cmFuc3BvcnRfY2FuX21zZ3plcm9jb3B5LFxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTcyNz1zdGF0aWMgdm9pZCB2aXJ0aW9fdnNvY2tfdnFzX3N0YXJ0KHN0cnVjdCB2aXJ0aW9fdnNvY2sgKnZzb2NrKVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTc0Mi1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjc0MzpcdC8qIHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3QoKSBjYW4gcXVldWUgcGFja2V0cyBvbmNlXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy03NDQtXHQgKiB0aGVfdmlydGlvX3Zzb2NrIGlzIHNldCwgYnV0IHRoZXkgd29uJiMzOTt0IGJlIHByb2Nlc3NlZCB1bnRpbFxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTgwMD1zdGF0aWMgaW50IHZpcnRpb192c29ja19wcm9iZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy04MzItXHRJTklUX1dPUksoXHUwMDI2dnNvY2stXHUwMDNlZXZlbnRfd29yaywgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrKTtcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjgzMzpcdElOSVRfV09SSyhcdTAwMjZ2c29jay1cdTAwM2VzZW5kX3BrdF93b3JrLCB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X3dvcmspO1xubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtODM0LVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz0yMTI9c3RhdGljIHN0cnVjdCBza19idWZmICp2aXJ0aW9fdHJhbnNwb3J0X2FsbG9jX3NrYihzdHJ1Y3QgdmlydGlvX3Zzb2NrX3BrdF9pbmZvICppbmZvLFxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0yOTgtICovXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6Mjk5OnN0YXRpYyBpbnQgdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF9pbmZvKHN0cnVjdCB2c29ja19zb2NrICp2c2ssXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMzAwLVx0XHRcdFx0XHQgIHN0cnVjdCB2aXJ0aW9fdnNvY2tfcGt0X2luZm8gKmluZm8pXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTY1NT1zdGF0aWMgaW50IHZpcnRpb190cmFuc3BvcnRfc2VuZF9jcmVkaXRfdXBkYXRlKHN0cnVjdCB2c29ja19zb2NrICp2c2spXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTY2Mi1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzo2NjM6XHRyZXR1cm4gdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF9pbmZvKHZzaywgXHUwMDI2aW5mbyk7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtNjY0LX1cbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM9MTIwMj1pbnQgdmlydGlvX3RyYW5zcG9ydF9jb25uZWN0KHN0cnVjdCB2c29ja19zb2NrICp2c2spXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTEyMDktXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6MTIxMDpcdHJldHVybiB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X2luZm8odnNrLCBcdTAwMjZpbmZvKTtcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMjExLX1cbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM9MTIxND1pbnQgdmlydGlvX3RyYW5zcG9ydF9zaHV0ZG93bihzdHJ1Y3QgdnNvY2tfc29jayAqdnNrLCBpbnQgbW9kZSlcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTIyNS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoxMjI2Olx0cmV0dXJuIHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RfaW5mbyh2c2ssIFx1MDAyNmluZm8pO1xubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTEyMjctfVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz0xMjQxPXZpcnRpb190cmFuc3BvcnRfc3RyZWFtX2VucXVldWUoc3RydWN0IHZzb2NrX3NvY2sgKnZzayxcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTI1Mi1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoxMjUzOlx0cmV0dXJuIHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RfaW5mbyh2c2ssIFx1MDAyNmluZm8pO1xubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTEyNTQtfVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz0xMjgxPXN0YXRpYyBpbnQgdmlydGlvX3RyYW5zcG9ydF9yZXNldChzdHJ1Y3QgdnNvY2tfc29jayAqdnNrLFxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMjk0LVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jOjEyOTU6XHRyZXR1cm4gdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF9pbmZvKHZzaywgXHUwMDI2aW5mbyk7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTI5Ni19XG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTEzMDU9c3RhdGljIGludCB2aXJ0aW9fdHJhbnNwb3J0X3Jlc2V0X25vX3NvY2soY29uc3Qgc3RydWN0IHZpcnRpb190cmFuc3BvcnQgKnQsXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTEzMjEtXHRcdCAqIHQtXHUwMDNlc2VuZF9wa3QoKSwgaW5zdGVhZCBvZiByZWx5aW5nIG9uXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6MTMyMjpcdFx0ICogdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF9pbmZvKCkgdG8gcGFzcyBpdC4gSXQgaXMgbm90IG5lZWRlZFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTEzMjMtXHRcdCAqIGJ5IHZpcnRpb190cmFuc3BvcnRfYWxsb2Nfc2tiKCkuXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTE2NDg9dmlydGlvX3RyYW5zcG9ydF9zZW5kX3Jlc3BvbnNlKHN0cnVjdCB2c29ja19zb2NrICp2c2ssXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTE2NjAtXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6MTY2MTpcdHJldHVybiB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X2luZm8odnNrLCBcdTAwMjZpbmZvKTtcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xNjYyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTU6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyMzAKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBWaXJ0aW8tVlNPQ0sgV29ya3F1ZXVlIFJhY2UgQ29uZGl0aW9uIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBjb3JlIG9mIGl0IHJldm9sdmVzIGFyb3VuZCB0aG9zZSB0aHJlZSBmdW5jdGlvbnM6IGB2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmtgLCBgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrYCwgYW5kIGB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmtgLiBUaGV5JiMzOTtyZSBiZWluZyBmZWQgaW50byBgSU5JVF9XT1JLYCwgd2hpY2ggbWVhbnMgdGhleSYjMzk7cmUgc2NoZWR1bGVkIHRvIHJ1biBhc3luY2hyb25vdXNseSBpbiBhIHdvcmtxdWV1ZS4gVGhhdCYjMzk7cyBzdGFuZGFyZCBwcmFjdGljZSwgYnV0IGl0JiMzOTtzIHdoZXJlIHRoZSBwcm9ibGVtIGxpZXMuCgpUaGUgcGF0Y2ggdGFyZ2V0cyBhIHJhY2UgY29uZGl0aW9uLiBJdCBzZWVtcyB3ZSYjMzk7cmUgYWNjZXNzaW5nIGB2c29jay0mZ3Q7dnFzW1ZTT0NLX1ZRX1RYXWAgKmJlZm9yZSogY2hlY2tpbmcgYHZzb2NrLSZndDt0eF9ydW5gLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBjb25jdXJyZW5jeSBidWcsIGFuZCBpdCBtYWtlcyBwZXJmZWN0IHNlbnNlIHRoYXQgaXQgbmVlZHMgdG8gYmUgZml4ZWQuIElmIGB2c29jay0mZ3Q7dHhfcnVuYCBpcyBmYWxzZSwgaXQmIzM5O3MgYSBodWdlIHJlZCBmbGFnIGJlY2F1c2UgaXQgbWVhbnMgdGhvc2UgdmlydHF1ZXVlcywgd2hpY2ggYXJlIHZpdGFsIGZvciBjb21tdW5pY2F0aW9uLCBjb3VsZCBiZSBnb25lIOKAkyBmcmVlZCwgaW52YWxpZCwgd2hhdGV2ZXIuIFRoaXMgd2hvbGUgbWVzcyBjb3VsZCBiZSB0cmlnZ2VyZWQgYnkgZGV2aWNlIHJlbW92YWwgb3IgYSBzdXNwZW5kL3Jlc3VtZSBjeWNsZS4gVGhvc2UgZXZlbnRzIGFyZSB1c3VhbGx5IGhhbmRsZWQgYnkgc29tZSBjbGVhbnVwIG9yIHRlYXJkb3duIGZ1bmN0aW9ucy4KClNvLCB0aGUgb2J2aW91cyBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBgdmlydGlvX3Zzb2NrX3JlbW92ZWAgYW5kIGl0cyBzdXJyb3VuZGluZyBjb250ZXh0LiBXZSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB2c29jayBkZXZpY2UgaXMgcmVtb3ZlZCBvciBzdXNwZW5kZWQsIGFuZCBob3cgdGhhdCByZWxhdGVzIHRvIGB2c29jay0mZ3Q7dHhfcnVuYCBhbmQgdGhlIHN0YXRlIG9mIHRob3NlIHZpcnRxdWV1ZXMuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYHZpcnRpb192c29ja19yZW1vdmVgIHRvIHNlZSB3aGF0IGl0JiMzOTtzIGRvaW5nIHdpdGggdGhlIHZpcnRxdWV1ZXMgd2hlbiB0aGUgZGV2aWNlIGlzIGJlaW5nIHVucGx1Z2dlZCBvciBzdXNwZW5kZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE1OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZpcnRpb192c29ja19yZW1vdmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz04MDA9c3RhdGljIGludCB2aXJ0aW9fdnNvY2tfcHJvYmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtODU5LVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6ODYwOnN0YXRpYyB2b2lkIHZpcnRpb192c29ja19yZW1vdmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy04NjEte1xuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTkzOD1zdGF0aWMgc3RydWN0IHZpcnRpb19kcml2ZXIgdmlydGlvX3Zzb2NrX2RyaXZlciA9IHtcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy05NDMtXHQucHJvYmUgPSB2aXJ0aW9fdnNvY2tfcHJvYmUsXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzo5NDQ6XHQucmVtb3ZlID0gdmlydGlvX3Zzb2NrX3JlbW92ZSxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTk0NS0jaWZkZWYgQ09ORklHX1BNX1NMRUVQXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE1OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDIxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBEZWNpc2lvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBwcmV0dHkgY2xlYXI6IGBSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdCYjMzk7cyAqanVzdCogZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyBsaWtlIGAucmVtb3ZlYCwgYC5zaHV0ZG93bmAsIG9yIGBwY2lfdW5yZWdpc3Rlcl9kcml2ZXJgIHRoYXQgb25seSBydW4gZHVyaW5nIGhvdC11bnBsdWcgb3Igc3lzZnMgdW5iaW5kLiBCdXQgaG9sZCBvbiwgdGhlIHBhdGNoIHRvdWNoZXMgYHZpcnRpb190cmFuc3BvcnRfdHhfd29ya2AsIGB2aXJ0aW9fdHJhbnNwb3J0X2V2ZW50X3dvcmtgLCBhbmQgYHZpcnRpb190cmFuc3BvcnRfcnhfd29ya2AuIFRoZXNlIGFyZSBOT1QgdGVhcmRvd24gZnVuY3Rpb25zOyB0aGV5JiMzOTtyZSB0aGUgcHJpbWFyeSB3b3JrcXVldWUgaGFuZGxlcnMgZm9yIFJYL1RYL0V2ZW50LiBUaGUgYnVnICptaWdodCogbWFuaWZlc3QgZHVyaW5nIHRlYXJkb3duLCBzdXNwZW5kL3Jlc3VtZSwgb3IgcmVzZXQsIGJ1dCB0aGUgYWN0dWFsIGNvZGUgYmVpbmcgbW9kaWZpZWQgaXMgaW4gdGhlIGNvcmUgZGF0YSBwYXRoIOKAkyBSWCBhbmQgVFggd29yay4gVGhhdCBtYWtlcyB0aGlzIHBhdGNoIHByaW1lIGZvciBmdXp6aW5nLgoKTm93LCBsZXQmIzM5O3MgZGlnIGEgYml0IGRlZXBlci4gU3BlY2lmaWNhbGx5LCBpdCB0b3VjaGVzIGB2aXJ0aW9fdnNvY2tfcnhfZmlsbGAsIHdoaWNoIGdldHMgY2FsbGVkIHdpdGhpbiBgdmlydGlvX3RyYW5zcG9ydF9yeF93b3JrYC4gVGhlIHBhdGNoIGFkZHMgYHZzb2NrLSZndDtyeF9ydW4gJmFtcDsmYW1wO2AgYXMgYSBjb25kaXRpb24gYmVmb3JlIGNhbGxpbmcgYHZpcnRpb192c29ja19yeF9maWxsKHZzb2NrKWAuIFRoaXMgaXMgaW50ZXJlc3Rpbmc7IHdlIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoYXQgY29uZGl0aW9uIHNpZ25pZmllcy4KClRvIGVuc3VyZSBJIGhhdmUgYWxsIHRoZSByZWxldmFudCBzeW1ib2xzLCBJIG5lZWQgdG8gZm9jdXMgb246CiogICBgdmlydGlvX3RyYW5zcG9ydF90eF93b3JrYAoqICAgYHZpcnRpb190cmFuc3BvcnRfZXZlbnRfd29ya2AKKiAgIGB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmtgCiogICBgdmlydGlvX3Zzb2NrX3J4X2ZpbGxgCiogICBgdmlydGlvX3Zzb2NrX2V2ZW50X2RvbmVgCiogICBgdmlydGlvX3Zzb2NrX3R4X2RvbmVgCiogICBgdmlydGlvX3Zzb2NrX3J4X2RvbmVgCgpOb3csIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpZiBgdmlydGlvX3Zzb2NrX3J4X2ZpbGxgIGlzIHN0YXRpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTU6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmlydGlvX3Zzb2NrX3J4X2ZpbGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz0yODA9dmlydGlvX3RyYW5zcG9ydF9jYW5jZWxfcGt0KHN0cnVjdCB2c29ja19zb2NrICp2c2spXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtMzEwLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6MzExOnN0YXRpYyB2b2lkIHZpcnRpb192c29ja19yeF9maWxsKHN0cnVjdCB2aXJ0aW9fdnNvY2sgKnZzb2NrKVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtMzEyLXtcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz02MzI9c3RhdGljIHZvaWQgdmlydGlvX3RyYW5zcG9ydF9yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy02OTQtXHQgICAgdnNvY2stXHUwMDNlcnhfYnVmX25yIFx1MDAzYyB2c29jay1cdTAwM2VyeF9idWZfbWF4X25yIC8gMilcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjY5NTpcdFx0dmlydGlvX3Zzb2NrX3J4X2ZpbGwodnNvY2spO1xubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNjk2LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZzb2NrLVx1MDAzZXJ4X2xvY2spO1xuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTcyNz1zdGF0aWMgdm9pZCB2aXJ0aW9fdnNvY2tfdnFzX3N0YXJ0KHN0cnVjdCB2aXJ0aW9fdnNvY2sgKnZzb2NrKVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTczMy1cdG11dGV4X2xvY2soXHUwMDI2dnNvY2stXHUwMDNlcnhfbG9jayk7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzo3MzQ6XHR2aXJ0aW9fdnNvY2tfcnhfZmlsbCh2c29jayk7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy03MzUtXHR2c29jay1cdTAwM2VyeF9ydW4gPSB0cnVlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjIyMQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRhcmdldCBGdW5jdGlvbnMgYW5kIENvbmZpZ3VyYXRpb25zKioKCk9rYXksIHNvIHRoaXMgaXMgc3RhdGljLCB3aGljaCBtZWFucyBJIHNob3VsZCBob25lIGluIG9uIHRoZSBjb3JlIHN5bWJvbHM6IHRoZSB3b3JrIGZ1bmN0aW9ucyBhbmQgdGhlIHZpcnRxdWV1ZSBjYWxsYmFja3MuIFNpbmNlIHRoZSB3b3JrIGZ1bmN0aW9ucyBhcmUgcGFzc2VkIHRvIGBJTklUX1dPUktgLCB0aGV5IGhhdmUgZGlzdGluY3QgYWRkcmVzc2VzIGFuZCBhcmVuJiMzOTt0IGlubGluZWQsIHdoaWNoIG1ha2VzIHRoZW0gcHJpbWUgdGFyZ2V0cy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGxvb2tpbmcgYXQgYHZpcnRpb190cmFuc3BvcnRfdHhfd29ya2AsIGB2aXJ0aW9fdHJhbnNwb3J0X2V2ZW50X3dvcmtgLCBhbmQgYHZpcnRpb190cmFuc3BvcnRfcnhfd29ya2AuCgpOb3csIGxldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGFsc28gYmUgcmVsZXZhbnQsIGp1c3QgdG8gYmUgdGhvcm91Z2guIEkmIzM5O20gdGhpbmtpbmcgb2YgYHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RgLCBgdmlydGlvX3RyYW5zcG9ydF9jYW5jZWxfcGt0YCwgYHZpcnRpb190cmFuc3BvcnRfY29ubmVjdGAsIGB2aXJ0aW9fdHJhbnNwb3J0X3NodXRkb3duYCwgYHZpcnRpb190cmFuc3BvcnRfc3RyZWFtX2VucXVldWVgLCBgdmlydGlvX3RyYW5zcG9ydF9yZXNldGAsIGFuZCBgdmlydGlvX3RyYW5zcG9ydF9zZW5kX3Jlc3BvbnNlYC4KCkhvd2V2ZXIsIHRoZSBwYXRjaCAqc3BlY2lmaWNhbGx5KiBtb2RpZmllcyB0aGUgd29ya3F1ZXVlIGhhbmRsZXJzLCBzbyBJJiMzOTtsbCBwcmlvcml0aXplIGluY2x1ZGluZyB0aGUgd29ya3F1ZXVlIGhhbmRsZXJzIGFzIG15IGZvY3VzIHN5bWJvbHMuCgpNb3Zpbmcgb24gdG8gdGhlIGNvbmZpZ3VyYXRpb25zLCBJIG5lZWQgdG8gbGlzdCB0aGUgcmVsZXZhbnQgb25lcy4gSSYjMzk7bSBzZWVpbmcgYFZJUlRJT19WU09DS0VUU2AsIGBWU09DS0VUU2AsIGFuZCBgVklSVElPYC4gV2FpdCBhIG1pbnV0ZSwgYFZJUlRJT19WU09DS0VUU2AgKmRlcGVuZHMqIG9uIGJvdGggYFZTT0NLRVRTYCBhbmQgYFZJUlRJT2AuIFNvIEkgc2hvdWxkIGxpc3QgdGhlbSBpbiB0aGF0IG9yZGVyIG9mIGRlcGVuZGVuY3kuIEkgc2hvdWxkIGFsc28gY2hlY2sgaWYgYFZJUlRJT19WU09DS0VUU19DT01NT05gIGlzIG5lY2Vzc2FyeS4gU2luY2UgaXQmIzM5O3Mgc2VsZWN0ZWQgYnkgYFZJUlRJT19WU09DS0VUU2AsIGl0IGNvdWxkIGJlIHVzZWZ1bCB0byBpbmNsdWRlIGFzIHdlbGwuCgpUbyBiZSBzdXJlLCBJJiMzOTtsbCBkb3VibGUtY2hlY2sgYFZJUlRJT19WU09DS0VUU2AgaW4gYG5ldC92bXdfdnNvY2svS2NvbmZpZ2AuIFJpZ2h0LCBpdCBkZXBlbmRzIG9uIGBWU09DS0VUU2AgYW5kIGBWSVJUSU9gIGFuZCBzZWxlY3RzIGBWSVJUSU9fVlNPQ0tFVFNfQ09NTU9OYC4gVGhhdCBjb25maXJtcyB0aGF0IGBWSVJUSU9fVlNPQ0tFVFNgIGlzIHRoZSBwcmltYXJ5IGNvbmZpZy4gTm93IEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgaWYgYFZTT0NLRVRTYCBpdHNlbGYgaGFzIGFueSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE1OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWU09DS0VUUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svS2NvbmZpZy01LVxubmV0L3Ztd192c29jay9LY29uZmlnOjY6Y29uZmlnIFZTT0NLRVRTXG5uZXQvdm13X3Zzb2NrL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgU29ja2V0IHByb3RvY29sXCYjMzQ7XG4tLVxubmV0L3Ztd192c29jay9LY29uZmlnLTE4LVxubmV0L3Ztd192c29jay9LY29uZmlnOjE5OmNvbmZpZyBWU09DS0VUU19ESUFHXG5uZXQvdm13X3Zzb2NrL0tjb25maWctMjAtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIFNvY2tldHMgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQvdm13X3Zzb2NrL0tjb25maWctMjgtXG5uZXQvdm13X3Zzb2NrL0tjb25maWc6Mjk6Y29uZmlnIFZTT0NLRVRTX0xPT1BCQUNLXG5uZXQvdm13X3Zzb2NrL0tjb25maWctMzAtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIFNvY2tldHMgbG9vcGJhY2sgdHJhbnNwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE1OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMzMzCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZvciBhbiBleHBlcnQgbGlrZSBteXNlbGY6CgoqKkRlcGVuZGVuY3kgQW5hbHlzaXM6IFZTT0NLRVRTIGFuZCBWSVJUSU8qKgoKUmlnaHQsIHNvLCBmaXJzdCB0aGluZ3MgZmlyc3QsIGBWU09DS0VUU2AgaXMgYmVhdXRpZnVsbHkgc2VsZi1jb250YWluZWQuIE5vIGV4dGVybmFsIGxpYnJhcmllcywgbm8gdW5kZXJseWluZyBmcmFtZXdvcmtzIEkgbmVlZCB0byB3b3JyeSBhYm91dCDigJMgaXQmIzM5O3MgY2xlYW4gYW5kIGVmZmljaWVudCBmcm9tIGEgZGVwZW5kZW5jeSBwZXJzcGVjdGl2ZSwgd2hpY2ggaXMgYWx3YXlzIGEgd2luIGluIHRoaXMgZ2FtZS4KCk5vdywgdGhhdCBicmluZ3MgbWUgdG8gYFZJUlRJT2AuIEdvdHRhIHF1aWNrbHkgcmVmcmVzaCBteSBtZW50YWwgbWFwIG9mIGl0cyBlY29zeXN0ZW0uIEkgbmVlZCB0byBydW4gYSBxdWljayBtZW50YWwgY2hlY2tsaXN0IHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZzogQXJlIHRoZXJlIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzIGx1cmtpbmcgd2l0aGluIHRoZSBgVklSVElPYCBhcmNoaXRlY3R1cmU/IElzIGl0IHN0YW5kaW5nIG9uIGl0cyBvd24sIG9yIGRvZXMgaXQgcmVseSBvbiBzdXBwb3J0aW5nIGxpYnJhcmllcyBvciB1bmRlcmx5aW5nIGhhcmR3YXJlIGZlYXR1cmVzIHRvIGZ1bmN0aW9uPyBOZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTU6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZJUlRJTyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlydGlvLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZpcnRpby9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjI6Y29uZmlnIFZJUlRJT19BTkNIT1JcbmRyaXZlcnMvdmlydGlvL0tjb25maWctMy1cdGJvb2xcbmRyaXZlcnMvdmlydGlvL0tjb25maWctNC1cbmRyaXZlcnMvdmlydGlvL0tjb25maWc6NTpjb25maWcgVklSVElPXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTYtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvdmlydGlvL0tjb25maWctMTItXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjEzOmNvbmZpZyBWSVJUSU9fUENJX0xJQlxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0xNC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0yMC1cbmRyaXZlcnMvdmlydGlvL0tjb25maWc6MjE6Y29uZmlnIFZJUlRJT19QQ0lfTElCX0xFR0FDWVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0yMi1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0yOS1cbmRyaXZlcnMvdmlydGlvL0tjb25maWc6MzA6bWVudWNvbmZpZyBWSVJUSU9fTUVOVVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7VmlydGlvIGRyaXZlcnNcJiMzNDtcbi0tXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnPTM0PWlmIFZJUlRJT19NRU5VXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTM1LVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZzozNjpjb25maWcgVklSVElPX0hBUkRFTl9OT1RJRklDQVRJT05cbmRyaXZlcnMvdmlydGlvL0tjb25maWctMzctICAgICAgICBib29sIFwmIzM0O0hhcmRlbiB2aXJ0aW8gbm90aWZpY2F0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy00OS1cbmRyaXZlcnMvdmlydGlvL0tjb25maWc6NTA6Y29uZmlnIFZJUlRJT19QQ0lcbmRyaXZlcnMvdmlydGlvL0tjb25maWctNTEtXHR0cmlzdGF0ZSBcJiMzNDtQQ0kgZHJpdmVyIGZvciB2aXJ0aW8gZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvdmlydGlvL0tjb25maWctNjItXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjYzOmNvbmZpZyBWSVJUSU9fUENJX0FETUlOX0xFR0FDWVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy02NC1cdGJvb2xcbi0tXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTY3LVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZzo2ODpjb25maWcgVklSVElPX1BDSV9MRUdBQ1lcbmRyaXZlcnMvdmlydGlvL0tjb25maWctNjktXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIGxlZ2FjeSB2aXJ0aW8gZHJhZnQgMC45LlggYW5kIG9sZGVyIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTg3LVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZzo4ODpjb25maWcgVklSVElPX1ZEUEFcbmRyaXZlcnMvdmlydGlvL0tjb25maWctODktXHR0cmlzdGF0ZSBcJiMzNDt2RFBBIGRyaXZlciBmb3IgdmlydGlvIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTEwMC1cbmRyaXZlcnMvdmlydGlvL0tjb25maWc6MTAxOmNvbmZpZyBWSVJUSU9fUE1FTVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0xMDItXHR0cmlzdGF0ZSBcJiMzNDtTdXBwb3J0IGZvciB2aXJ0aW8gcG1lbSBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTExMS1cbmRyaXZlcnMvdmlydGlvL0tjb25maWc6MTEyOmNvbmZpZyBWSVJUSU9fQkFMTE9PTlxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0xMTMtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0aW8gYmFsbG9vbiBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTEyMi1cbmRyaXZlcnMvdmlydGlvL0tjb25maWc6MTIzOmNvbmZpZyBWSVJUSU9fTUVNXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTEyNC1cdHRyaXN0YXRlIFwmIzM0O1ZpcnRpbyBtZW0gZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0xNDItXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjE0Mzpjb25maWcgVklSVElPX0lOUFVUXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTE0NC1cdHRyaXN0YXRlIFwmIzM0O1ZpcnRpbyBpbnB1dCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTE1Mi1cbmRyaXZlcnMvdmlydGlvL0tjb25maWc6MTUzOmNvbmZpZyBWSVJUSU9fTU1JT1xuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0xNTQtXHR0cmlzdGF0ZSBcJiMzNDtQbGF0Zm9ybSBidXMgZHJpdmVyIGZvciBtZW1vcnkgbWFwcGVkIHZpcnRpbyBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0xNjItXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjE2Mzpjb25maWcgVklSVElPX01NSU9fQ01ETElORV9ERVZJQ0VTXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTE2NC1cdGJvb2wgXCYjMzQ7TWVtb3J5IG1hcHBlZCB2aXJ0aW8gZGV2aWNlcyBwYXJhbWV0ZXIgcGFyc2luZ1wmIzM0O1xuLS1cbmRyaXZlcnMvdmlydGlvL0tjb25maWctMTczLVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZzoxNzQ6Y29uZmlnIFZJUlRJT19ETUFfU0hBUkVEX0JVRkZFUlxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0xNzUtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvdmlydGlvL0tjb25maWctMTgwLVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZzoxODE6Y29uZmlnIFZJUlRJT19ERUJVR1xuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0xODItXHRib29sIFwmIzM0O0RlYnVnIGZhY2lsaXRpZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTE5MC1cbmRyaXZlcnMvdmlydGlvL0tjb25maWc6MTkxOmNvbmZpZyBWSVJUSU9fUlRDXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTE5Mi1cdHRyaXN0YXRlIFwmIzM0O1ZpcnRpbyBSVEMgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZz0yMTE9Y29tbWVudCBcJiMzNDtFbmFibGUgUFRQXzE1ODhfQ0xPQ0sgaW4gb3JkZXIgdG8gZW5hYmxlIFZJUlRJT19SVENfUFRQLlwmIzM0O1xuLS1cbmRyaXZlcnMvdmlydGlvL0tjb25maWctMjEzLVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZzoyMTQ6Y29uZmlnIFZJUlRJT19SVENfUFRQXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTIxNS1cdGJvb2wgXCYjMzQ7VmlydGlvIFJUQyBQVFAgY2xvY2tzXCYjMzQ7XG4tLVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0yMjQtXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjIyNTpjb25maWcgVklSVElPX1JUQ19BUk1cbmRyaXZlcnMvdmlydGlvL0tjb25maWctMjI2LVx0Ym9vbCBcJiMzNDtWaXJ0aW8gUlRDIGNyb3NzLXRpbWVzdGFtcGluZyB1c2luZyBBcm0gR2VuZXJpYyBUaW1lclwmIzM0O1xuLS1cbmRyaXZlcnMvdmlydGlvL0tjb25maWc9MjM4PWNvbW1lbnQgXCYjMzQ7RW5hYmxlIFJUQ19DTEFTUyBpbiBvcmRlciB0byBlbmFibGUgVklSVElPX1JUQ19DTEFTUy5cJiMzNDtcbi0tXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTI0MC1cbmRyaXZlcnMvdmlydGlvL0tjb25maWc6MjQxOmNvbmZpZyBWSVJUSU9fUlRDX0NMQVNTXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTI0Mi1cdGJvb2wgXCYjMzQ7UmVhbCBUaW1lIENsb2NrIGRyaXZlciBmb3IgVmlydGlvIFJUQ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDkxMgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBWSVJUSU8gYW5kIFJlbGV2YW50IFN5bWJvbHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYFZJUlRJT2AgY29uZmlndXJhdGlvbi4gSXQmIzM5O3MgYSB0cmlzdGF0ZSwgYW5kIGNydWNpYWxseSwgaXQgaGFzICpubyogZGVwZW5kZW5jaWVzIG90aGVyIHRoYW4gaXRzZWxmLCB3aGljaCBtZWFucyBpdCBleGlzdHMgb24gaXRzIG93biBwbGFuZSBpbiB0aGUgY29uZmlndXJhdGlvbiB0cmVlLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdy4gVGhlIGltcGxpY2F0aW9uIGhlcmUgaXMgdGhhdCB3ZSBoYXZlIHRocmVlIGNvbmZpZ3VyYXRpb24gb3B0aW9uczogYFZJUlRJT19WU09DS0VUU2AsIGBWU09DS0VUU2AsIGFuZCBgVklSVElPYCBpdHNlbGYuCgpXYWl0LCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBgVklSVElPX01FTlVgIGNvbnRyb2xzIHZpc2liaWxpdHkgb2YgdGhlIG1lbnUuIEFsdGhvdWdoIHRoZSB0ZXh0IHNlZW1zIHRvIGltcGx5IGBWSVJUSU9fTUVOVWAgbXVzdCBiZSBzZXQgZm9yIHRoZSBtZW51IHRvIGJlIHZpc2libGUsIGBWSVJUSU9gIGlzIGluZGVwZW5kZW50IG9mIHRoaXMsIG9yIGFueSBvdGhlciBvcHRpb24gb3RoZXIgdGhhbiBpdHNlbGYsIGFzIGl0JiMzOTtzIGEgdHJpc3RhdGUuIEkgYW0gcHJldHR5IHN1cmUgYFZJUlRJT19WU09DS0VUU2AgaXMgdGhlIGtleSwgYXMgaXQgc2VsZWN0cyBgVklSVElPX1ZTT0NLRVRTX0NPTU1PTmAgYW5kIGRlcGVuZHMgb24gKmJvdGgqIGBWU09DS0VUU2AgYW5kIGBWSVJUSU9gLiBTbyBteSBwcmltYXJ5IGZvY3VzIHdpbGwgYmUgb24gdGhlIGNvbWJpbmF0aW9uLiBUaGVyZWZvcmUsIEkgd2lsbCBsaXN0IHRoZXNlOiBgVklSVElPX1ZTT0NLRVRTYCwgYFZTT0NLRVRTYCwgYW5kIGBWSVJUSU9gLgoKTm93LCBtb3Zpbmcgb24gdG8gdGhlIGNvZGUgaXRzZWxmLCBJJiMzOTttIG5vdGluZyBzcGVjaWZpYyBmdW5jdGlvbnMgdG8ga2VlcCBhbiBleWUgb24uIEkgbmVlZCB0byBmb2N1cyBvbjogYHZpcnRpb190cmFuc3BvcnRfdHhfd29ya2AsIGB2aXJ0aW9fdHJhbnNwb3J0X2V2ZW50X3dvcmtgLCBgdmlydGlvX3RyYW5zcG9ydF9yeF93b3JrYCwgYW5kIGFsc28gYHZpcnRpb192c29ja19yeF9maWxsYC4gSSB3aWxsIG5lZWQgdG8gY29uc2lkZXIgdGhlIGNvbnRleHQgb2YgdGhlc2UgZnVuY3Rpb25zIGFuZCBob3cgdGhleSYjMzk7cmUgdXNlZC4KClRoZSBwYXRjaCBtb2RpZmllcyBgdmlydGlvX3RyYW5zcG9ydF90eF93b3JrYCwgYHZpcnRpb190cmFuc3BvcnRfZXZlbnRfd29ya2AsIGFuZCBgdmlydGlvX3RyYW5zcG9ydF9yeF93b3JrYC4gVGhhdCBtYWtlcyBzZW5zZS4gSSB3aWxsIHN0YXJ0IGJ5IGxpc3RpbmcgdGhlc2UuCgpIYW5nIG9uLiBUaGVyZSYjMzk7cyBhIGd1aWRlbGluZSBhYm91dCBwcmVmZXJyaW5nIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBUaGlzIGlzIGltcG9ydGFudC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBzdGF0aWM7IG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgdGhleSBtaWdodCBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlci4gSG93ZXZlciwgdGhlIGZ1bmN0aW9ucyBhcmUgcGFzc2VkIHRvIGBJTklUX1dPUktgLiBTaW5jZSB0aGUgY29tcGlsZXIgbmVlZHMgdG8gdGFrZSB0aGVpciBhZGRyZXNzZXMgdG8gdXNlIHRoZW0gaW4gdGhpcyBtYW5uZXIsIHRoZXkgKmNhbm5vdCogYmUgZnVsbHkgaW5saW5lZC4gVGhlIGNvbXBpbGVyIGhhcyB0byBlbWl0IHRoZWlyIGJvZHkgc29tZXdoZXJlLiBJIHNob3VsZCB0aGVyZWZvcmUgYWxzbyBsaXN0IGZ1bmN0aW9ucyB0aGF0IHF1ZXVlIHRoZSB3b3JrLiBJJiMzOTtsbCBpbmNsdWRlIGB2aXJ0aW9fdnNvY2tfdHhfZG9uZWAsIGB2aXJ0aW9fdnNvY2tfZXZlbnRfZG9uZWAsIGFuZCBgdmlydGlvX3Zzb2NrX3J4X2RvbmVgLgoKQWgsIGFuZCBJIHNob3VsZCBhZGQgYHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RgIGFzIHdlbGwsIHNpbmNlIHRoYXQmIzM5O3MgYSBub24tc3RhdGljIGVudHJ5IHBvaW50LgoKSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgYHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RgLCBhbmQgbWFrZSBzdXJlIGl0IGlzIGluIGxpbmUgd2l0aCB0aGUgaW5zdHJ1Y3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3Ztd192c29jay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM9MzA9c3RydWN0IHZpcnRpb192c29jayB7XG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNjEtXHQvKiBUaGVzZSBmaWVsZHMgYXJlIHVzZWQgb25seSBpbiB0eCBwYXRoIGluIGZ1bmN0aW9uXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzo2MjpcdCAqICYjMzk7dmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF93b3JrKCkmIzM5Oywgc28gdG8gc2F2ZVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNjMtXHQgKiBzdGFjayBzcGFjZSBpbiBpdCwgcGxhY2UgYm90aCBvZiB0aGVtIGhlcmUuIEVhY2hcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz0xNTc9c3RhdGljIHZvaWRcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjE1ODp2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtMTU5LXtcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz0yMzY9c3RhdGljIGludFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6MjM3OnZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldCAqbmV0KVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtMjM4LXtcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz01NTc9c3RhdGljIHN0cnVjdCB2aXJ0aW9fdHJhbnNwb3J0IHZpcnRpb190cmFuc3BvcnQgPSB7XG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNjA4LVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6NjA5Olx0LnNlbmRfcGt0ID0gdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdCxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTYxMC1cdC5jYW5fbXNnemVyb2NvcHkgPSB2aXJ0aW9fdHJhbnNwb3J0X2Nhbl9tc2d6ZXJvY29weSxcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz03Mjc9c3RhdGljIHZvaWQgdmlydGlvX3Zzb2NrX3Zxc19zdGFydChzdHJ1Y3QgdmlydGlvX3Zzb2NrICp2c29jaylcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy03NDItXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzo3NDM6XHQvKiB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0KCkgY2FuIHF1ZXVlIHBhY2tldHMgb25jZVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNzQ0LVx0ICogdGhlX3ZpcnRpb192c29jayBpcyBzZXQsIGJ1dCB0aGV5IHdvbiYjMzk7dCBiZSBwcm9jZXNzZWQgdW50aWxcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz04MDA9c3RhdGljIGludCB2aXJ0aW9fdnNvY2tfcHJvYmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtODMyLVx0SU5JVF9XT1JLKFx1MDAyNnZzb2NrLVx1MDAzZWV2ZW50X3dvcmssIHZpcnRpb190cmFuc3BvcnRfZXZlbnRfd29yayk7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzo4MzM6XHRJTklUX1dPUksoXHUwMDI2dnNvY2stXHUwMDNlc2VuZF9wa3Rfd29yaywgdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF93b3JrKTtcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTgzNC1cbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM9MjEyPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdmlydGlvX3RyYW5zcG9ydF9hbGxvY19za2Ioc3RydWN0IHZpcnRpb192c29ja19wa3RfaW5mbyAqaW5mbyxcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMjk4LSAqL1xubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jOjI5OTpzdGF0aWMgaW50IHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RfaW5mbyhzdHJ1Y3QgdnNvY2tfc29jayAqdnNrLFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTMwMC1cdFx0XHRcdFx0ICBzdHJ1Y3QgdmlydGlvX3Zzb2NrX3BrdF9pbmZvICppbmZvKVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz02NTU9c3RhdGljIGludCB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfY3JlZGl0X3VwZGF0ZShzdHJ1Y3QgdnNvY2tfc29jayAqdnNrKVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy02NjItXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6NjYzOlx0cmV0dXJuIHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RfaW5mbyh2c2ssIFx1MDAyNmluZm8pO1xubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTY2NC19XG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTEyMDI9aW50IHZpcnRpb190cmFuc3BvcnRfY29ubmVjdChzdHJ1Y3QgdnNvY2tfc29jayAqdnNrKVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMjA5LVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jOjEyMTA6XHRyZXR1cm4gdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF9pbmZvKHZzaywgXHUwMDI2aW5mbyk7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTIxMS19XG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTEyMTQ9aW50IHZpcnRpb190cmFuc3BvcnRfc2h1dGRvd24oc3RydWN0IHZzb2NrX3NvY2sgKnZzaywgaW50IG1vZGUpXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTEyMjUtXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6MTIyNjpcdHJldHVybiB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X2luZm8odnNrLCBcdTAwMjZpbmZvKTtcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMjI3LX1cbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM9MTI0MT12aXJ0aW9fdHJhbnNwb3J0X3N0cmVhbV9lbnF1ZXVlKHN0cnVjdCB2c29ja19zb2NrICp2c2ssXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTEyNTItXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6MTI1MzpcdHJldHVybiB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X2luZm8odnNrLCBcdTAwMjZpbmZvKTtcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMjU0LX1cbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM9MTI4MT1zdGF0aWMgaW50IHZpcnRpb190cmFuc3BvcnRfcmVzZXQoc3RydWN0IHZzb2NrX3NvY2sgKnZzayxcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTI5NC1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoxMjk1Olx0cmV0dXJuIHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RfaW5mbyh2c2ssIFx1MDAyNmluZm8pO1xubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTEyOTYtfVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz0xMzA1PXN0YXRpYyBpbnQgdmlydGlvX3RyYW5zcG9ydF9yZXNldF9ub19zb2NrKGNvbnN0IHN0cnVjdCB2aXJ0aW9fdHJhbnNwb3J0ICp0LFxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMzIxLVx0XHQgKiB0LVx1MDAzZXNlbmRfcGt0KCksIGluc3RlYWQgb2YgcmVseWluZyBvblxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jOjEzMjI6XHRcdCAqIHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RfaW5mbygpIHRvIHBhc3MgaXQuIEl0IGlzIG5vdCBuZWVkZWRcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMzIzLVx0XHQgKiBieSB2aXJ0aW9fdHJhbnNwb3J0X2FsbG9jX3NrYigpLlxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz0xNjQ4PXZpcnRpb190cmFuc3BvcnRfc2VuZF9yZXNwb25zZShzdHJ1Y3QgdnNvY2tfc29jayAqdnNrLFxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xNjYwLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jOjE2NjE6XHRyZXR1cm4gdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF9pbmZvKHZzaywgXHUwMDI2aW5mbyk7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTY2Mi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE1OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3ODE1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBgdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdGAgRnVuY3Rpb24qKgoKSG1tLCBgdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdGAuIFRoYXQgZnVuY3Rpb24gbmFtZSByaW5ncyBhIGJlbGwuIE5vdywgaXNuJiMzOTt0IHRoYXQgc3RhdGljIGluIGB2aXJ0aW9fdHJhbnNwb3J0LmNgPyBBaCwgeWVzLCBpdCBzZWVtcyB0byBiZSBkZWNsYXJlZCBhcyBzdGF0aWMuIExldCBtZSBqdXN0IGNvbmZpcm0gdGhhdC4uLiBPa2F5LCBsZXQgbWUganVzdCBkb3VibGUgY2hlY2sgYHZpcnRpb190cmFuc3BvcnQuY2AgYmVjYXVzZSBJIGNvdWxkIHN3ZWFyIGl0IHdhcy4gTGluZSAyMzYuLi4gR290IGl0IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMzA6XHRcbiAyMzE6XHRcdG11dGV4X3VubG9jayhcdTAwMjZ2c29jay1cdTAwM2V0eF9sb2NrKTtcbiAyMzI6XHRcbiAyMzM6XHRcdHJldHVybiByZXQ7XG4gMjM0Olx0fVxuIDIzNTpcdFxuIDIzNjpcdHN0YXRpYyBpbnRcbiAyMzc6XHR2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldClcbiAyMzg6XHR7XG4gMjM5Olx0XHRzdHJ1Y3QgdmlydGlvX3Zzb2NrX2hkciAqaGRyO1xuIDI0MDpcdFx0c3RydWN0IHZpcnRpb192c29jayAqdnNvY2s7XG4gMjQxOlx0XHRpbnQgbGVuID0gc2tiLVx1MDAzZWxlbjtcbiAyNDI6XHRcbiAyNDM6XHRcdGhkciA9IHZpcnRpb192c29ja19oZHIoc2tiKTtcbiAyNDQ6XHRcbiAyNDU6XHRcdHJjdV9yZWFkX2xvY2soKTtcbiAyNDY6XHRcdHZzb2NrID0gcmN1X2RlcmVmZXJlbmNlKHRoZV92aXJ0aW9fdnNvY2spO1xuIDI0NzpcdFx0aWYgKCF2c29jaykge1xuIDI0ODpcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiAyNDk6XHRcdFx0bGVuID0gLUVOT0RFVjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTU6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgzMTQKCQkJCQkJCW91dHB1dDogMTQ0CgkJCQkJCQl0aG91Z2h0czogNjI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBWaXJ0aW8tVlNvY2sgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBkaWdnaW5nIGludG8gdGhpcyBwYXRjaC4gVGhlIGtleSBoZXJlIGlzIHRoYXQgaXQmIzM5O3MgYWRkcmVzc2luZyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBudWxsLXBvaW50ZXIgZGVyZWZlcmVuY2Ugd2l0aGluIHRoZSB2aXJ0aW8gdnNvY2sgd29ya3F1ZXVlIGhhbmRsZXJzLiBJIHNlZSB0aGUgbWFpbiBmb2N1cyBpcyBvbiBgdmlydGlvX3RyYW5zcG9ydF90eF93b3JrYCwgYHZpcnRpb190cmFuc3BvcnRfZXZlbnRfd29ya2AsIGFuZCBgdmlydGlvX3RyYW5zcG9ydF9yeF93b3JrYC4gVGhlc2UgYXJlIHRoZSBoYW5kbGVycyB0aGF0IHByb2Nlc3MgdGhlIGluY29taW5nIGFuZCBvdXRnb2luZyBkYXRhLCBhbmQgZXZlbnRzLCBhbmQgdGhleSYjMzk7cmUgdGhlIGNyaXRpY2FsIHBhdGhzIHRvIGZ1enouIFllcywgSSB1bmRlcnN0YW5kIHRoZXkmIzM5O3JlIHN0YXRpYyBmdW5jdGlvbnMuIEJ1dCBjcnVjaWFsbHksIHRoZWlyIGFkZHJlc3NlcyBhcmUgdGFrZW4gZm9yIGBJTklUX1dPUktgLCBtZWFuaW5nIHRoZXkgKndvbiYjMzk7dCogYmUgaW5saW5lZCBhbmQgdGhleSYjMzk7bGwgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLCB3aGljaCBpcyB3aGF0IEkgbmVlZC4KCk15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgKmRlZmluaXRlbHkqIHNvbWV0aGluZyB3ZSBzaG91bGQgYmUgZnV6emluZyAoYFdvcnRoRnV6emluZzogdHJ1ZWApLiBUaGUgcGF0Y2ggYWltcyB0byBzeW5jaHJvbml6ZSBhY2Nlc3MgdG8gdGhlIHZpcnRxdWV1ZXMgd2l0aGluIHRoZXNlIGhhbmRsZXJzLCBzcGVjaWZpY2FsbHkgZW5zdXJpbmcgdGhhdCB0aGV5JiMzOTtyZSBvbmx5IGFjY2Vzc2VkIHdoZW4gdGhlIHJlbGV2YW50ICYjMzQ7cnVuJiMzNDsgZmxhZyBpcyB0cnVlICppbnNpZGUgdGhlIGxvY2sqLiBUaGlzIGRpcmVjdGx5IGFkZHJlc3NlcyB0aGUgcmFjZSBjb25kaXRpb24uIEdpdmVuIHRoYXQgdmlydGlvLXZzb2NrIGlzIGEgY29yZSBjb21wb25lbnQgb2Z0ZW4gdXNlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCB0aGUgZXhwb3N1cmUgaXMgaGlnaCwgYW5kIHRoaXMgaXMgYSBnb29kIHRhcmdldC4KCkZvciBmdXp6aW5nIGNvbmZpZ3VyYXRpb24sIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGEgZmV3IGtleSBvcHRpb25zLiBJJiMzOTt2ZSBjb25maXJtZWQgYFZJUlRJT19WU09DS0VUU2AsIHdoaWNoIHRoZW4gYWxzbyBlbmFibGVzIGBWU09DS0VUU2AgYW5kIGBWSVJUSU9gLiBUaGUgdXNlIG9mIGBzZWxlY3RgIG1lYW5zIEkgZG9uJiMzOTt0IG5lZWQgdG8gZXhwbGljaXRseSBlbmFibGUgYFZJUlRJT19WU09DS0VUU19DT01NT05gLCBidXQgaXQgd29uJiMzOTt0IGh1cnQgdG8gYWRkIGl0IGVpdGhlciwgc28gSSYjMzk7bSBvbWl0dGluZyBpdC4KCkxvb2tpbmcgYXQgdGhlIGNvZGUgbW9yZSBjbG9zZWx5LCBgdmlydGlvX3Zzb2NrX3J4X2ZpbGxgIGlzIGFsc28gbW9kaWZpZWQsIHdpdGggYSBjaGVjayBhZGRlZC4gU28sIEkgd2lsbCBpbmNsdWRlIHRoYXQgaW4gdGhlIHRhcmdldC4gSSYjMzk7bGwgaW5jbHVkZSBgdmlydGlvX3Zzb2NrX3J4X2ZpbGxgIGluIGBGb2N1c1N5bWJvbHNgLgoKVGhlcmVmb3JlLCBteSBmaW5hbGl6ZWQgc3VtbWFyeSBmb3IgdGhpcyBmdXp6aW5nIGVmZm9ydCBpczoKCmBgYGpzb24KewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmsmIzM0OywKICAgICYjMzQ7dmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrJiMzNDssCiAgICAmIzM0O3ZpcnRpb190cmFuc3BvcnRfcnhfd29yayYjMzQ7LAogICAgJiMzNDt2aXJ0aW9fdnNvY2tfcnhfZmlsbCYjMzQ7CiAgXSwKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSVJUSU9fVlNPQ0tFVFMmIzM0OywKICAgICYjMzQ7VlNPQ0tFVFMmIzM0OywKICAgICYjMzQ7VklSVElPJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdmlydGlvIHZzb2NrIHdvcmtxdWV1ZSBoYW5kbGVycyAoVFgsIFJYLCBFdmVudCkgYW5kIHJ4LWZpbGwsIHdoZXJlIHZpcnRxdWV1ZXMgY291bGQgYmUgYWNjZXNzZWQgYWZ0ZXIgdGhleSBhcmUgbm8gbG9uZ2VyIHZhbGlkLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGxvZ2ljIGZvciB2aXJ0aW8tdnNvY2ssIHdoaWNoIGlzIGNvbW1vbmx5IHVzZWQgYW5kIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDsKfQpgYGAKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTU6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJUlRJT19WU09DS0VUUyYjMzQ7LAogICAgJiMzNDtWU09DS0VUUyYjMzQ7LAogICAgJiMzNDtWSVJUSU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmsmIzM0OywKICAgICYjMzQ7dmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrJiMzNDssCiAgICAmIzM0O3ZpcnRpb190cmFuc3BvcnRfcnhfd29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHZpcnRpbyB2c29jayB3b3JrcXVldWUgaGFuZGxlcnMgKFRYLCBSWCwgRXZlbnQpIHdoZXJlIHZpcnRxdWV1ZXMgY291bGQgYmUgYWNjZXNzZWQgYWZ0ZXIgdGhleSBhcmUgbm8gbG9uZ2VyIHZhbGlkLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGxvZ2ljIGZvciB2aXJ0aW8tdnNvY2ssIHdoaWNoIGlzIGNvbW1vbmx5IHVzZWQgYW5kIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJUlRJT19WU09DS0VUUyYjMzQ7LAogICAgJiMzNDtWU09DS0VUUyYjMzQ7LAogICAgJiMzNDtWSVJUSU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmsmIzM0OywKICAgICYjMzQ7dmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrJiMzNDssCiAgICAmIzM0O3ZpcnRpb190cmFuc3BvcnRfcnhfd29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHZpcnRpbyB2c29jayB3b3JrcXVldWUgaGFuZGxlcnMgKFRYLCBSWCwgRXZlbnQpIHdoZXJlIHZpcnRxdWV1ZXMgY291bGQgYmUgYWNjZXNzZWQgYWZ0ZXIgdGhleSBhcmUgbm8gbG9uZ2VyIHZhbGlkLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGxvZ2ljIGZvciB2aXJ0aW8tdnNvY2ssIHdoaWNoIGlzIGNvbW1vbmx5IHVzZWQgYW5kIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNTowMTo1MC40MjYzODAxNjhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTE0NjAwNTkwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSVJUSU9fVlNPQ0tFVFNcIixcbiAgICBcIlZTT0NLRVRTXCIsXG4gICAgXCJWSVJUSU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmtcIixcbiAgICBcInZpcnRpb190cmFuc3BvcnRfZXZlbnRfd29ya1wiLFxuICAgIFwidmlydGlvX3RyYW5zcG9ydF9yeF93b3JrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB2aXJ0aW8gdnNvY2sgd29ya3F1ZXVlIGhhbmRsZXJzIChUWCwgUlgsIEV2ZW50KSB3aGVyZSB2aXJ0cXVldWVzIGNvdWxkIGJlIGFjY2Vzc2VkIGFmdGVyIHRoZXkgYXJlIG5vIGxvbmdlciB2YWxpZC4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBsb2dpYyBmb3IgdmlydGlvLXZzb2NrLCB3aGljaCBpcyBjb21tb25seSB1c2VkIGFuZCBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNTowMTo1MC40MjYzOTA5MjhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MzEwNzk0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGUyZjk4MTAyYWYzNzBhZmVmZTBkZjZiYjBlMGI3NGZmZjc1NWYyODNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgMjcgMTU6MDE6NDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMgYi9uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuY1xcbmluZGV4IDU3ZjJkNmVjM2ZmYzY5Li43OWNmMTlmNTg5NDM5ZiAxMDA2NDRcXG4tLS0gYS9uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuY1xcbisrKyBiL25ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jXFxuQEAgLTM0NiwxMiArMzQ2LDEzIEBAIHN0YXRpYyB2b2lkIHZpcnRpb190cmFuc3BvcnRfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdHN0cnVjdCB2aXJ0cXVldWUgKnZxO1xcbiBcXHRib29sIGFkZGVkID0gZmFsc2U7XFxuIFxcbi1cXHR2cSA9IHZzb2NrLVxcdTAwM2V2cXNbVlNPQ0tfVlFfVFhdO1xcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZ2c29jay1cXHUwMDNldHhfbG9jayk7XFxuIFxcbiBcXHRpZiAoIXZzb2NrLVxcdTAwM2V0eF9ydW4pXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXG4rXFx0dnEgPSB2c29jay1cXHUwMDNldnFzW1ZTT0NLX1ZRX1RYXTtcXG4rXFxuIFxcdGRvIHtcXG4gXFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4gXFx0XFx0dW5zaWduZWQgaW50IGxlbjtcXG5AQCAtNDUxLDEzICs0NTIsMTMgQEAgc3RhdGljIHZvaWQgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0XFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB2aXJ0aW9fdnNvY2ssIGV2ZW50X3dvcmspO1xcbiBcXHRzdHJ1Y3QgdmlydHF1ZXVlICp2cTtcXG4gXFxuLVxcdHZxID0gdnNvY2stXFx1MDAzZXZxc1tWU09DS19WUV9FVkVOVF07XFxuLVxcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZ2c29jay1cXHUwMDNlZXZlbnRfbG9jayk7XFxuIFxcbiBcXHRpZiAoIXZzb2NrLVxcdTAwM2VldmVudF9ydW4pXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXG4rXFx0dnEgPSB2c29jay1cXHUwMDNldnFzW1ZTT0NLX1ZRX0VWRU5UXTtcXG4rXFxuIFxcdGRvIHtcXG4gXFx0XFx0c3RydWN0IHZpcnRpb192c29ja19ldmVudCAqZXZlbnQ7XFxuIFxcdFxcdHVuc2lnbmVkIGludCBsZW47XFxuQEAgLTYzNCwxMyArNjM1LDEzIEBAIHN0YXRpYyB2b2lkIHZpcnRpb190cmFuc3BvcnRfcnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdFxcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdmlydGlvX3Zzb2NrLCByeF93b3JrKTtcXG4gXFx0c3RydWN0IHZpcnRxdWV1ZSAqdnE7XFxuIFxcbi1cXHR2cSA9IHZzb2NrLVxcdTAwM2V2cXNbVlNPQ0tfVlFfUlhdO1xcbi1cXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2dnNvY2stXFx1MDAzZXJ4X2xvY2spO1xcbiBcXG4gXFx0aWYgKCF2c29jay1cXHUwMDNlcnhfcnVuKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFxuK1xcdHZxID0gdnNvY2stXFx1MDAzZXZxc1tWU09DS19WUV9SWF07XFxuK1xcbiBcXHRkbyB7XFxuIFxcdFxcdHZpcnRxdWV1ZV9kaXNhYmxlX2NiKHZxKTtcXG4gXFx0XFx0Zm9yICg7Oykge1xcbkBAIC02ODksNyArNjkwLDggQEAgc3RhdGljIHZvaWQgdmlydGlvX3RyYW5zcG9ydF9yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0fSB3aGlsZSAoIXZpcnRxdWV1ZV9lbmFibGVfY2IodnEpKTtcXG4gXFxuIG91dDpcXG4tXFx0aWYgKHZzb2NrLVxcdTAwM2VyeF9idWZfbnIgXFx1MDAzYyB2c29jay1cXHUwMDNlcnhfYnVmX21heF9uciAvIDIpXFxuK1xcdGlmICh2c29jay1cXHUwMDNlcnhfcnVuIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICB2c29jay1cXHUwMDNlcnhfYnVmX25yIFxcdTAwM2MgdnNvY2stXFx1MDAzZXJ4X2J1Zl9tYXhfbnIgLyAyKVxcbiBcXHRcXHR2aXJ0aW9fdnNvY2tfcnhfZmlsbCh2c29jayk7XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2dnNvY2stXFx1MDAzZXJ4X2xvY2spO1xcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE1OjAxOjUwLjkyMDQzMjY4OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjg4NjUxOTM5Mjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZJUlRJT19WU09DS0VUU1wiLFxuICAgIFwiVlNPQ0tFVFNcIixcbiAgICBcIlZJUlRJT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZpcnRpb190cmFuc3BvcnRfdHhfd29ya1wiLFxuICAgIFwidmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrXCIsXG4gICAgXCJ2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHZpcnRpbyB2c29jayB3b3JrcXVldWUgaGFuZGxlcnMgKFRYLCBSWCwgRXZlbnQpIHdoZXJlIHZpcnRxdWV1ZXMgY291bGQgYmUgYWNjZXNzZWQgYWZ0ZXIgdGhleSBhcmUgbm8gbG9uZ2VyIHZhbGlkLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGxvZ2ljIGZvciB2aXJ0aW8tdnNvY2ssIHdoaWNoIGlzIGNvbW1vbmx5IHVzZWQgYW5kIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGUyZjk4MTAyYWYzNzBhZmVmZTBkZjZiYjBlMGI3NGZmZjc1NWYyODNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAxNTowMTo0OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jIGIvbmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmNcbmluZGV4IDU3ZjJkNmVjM2ZmYzY5Li43OWNmMTlmNTg5NDM5ZiAxMDA2NDRcbi0tLSBhL25ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jXG4rKysgYi9uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuY1xuQEAgLTM0NiwxMiArMzQ2LDEzIEBAIHN0YXRpYyB2b2lkIHZpcnRpb190cmFuc3BvcnRfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRzdHJ1Y3QgdmlydHF1ZXVlICp2cTtcbiBcdGJvb2wgYWRkZWQgPSBmYWxzZTtcbiBcbi1cdHZxID0gdnNvY2stXHUwMDNldnFzW1ZTT0NLX1ZRX1RYXTtcbiBcdG11dGV4X2xvY2soXHUwMDI2dnNvY2stXHUwMDNldHhfbG9jayk7XG4gXG4gXHRpZiAoIXZzb2NrLVx1MDAzZXR4X3J1bilcbiBcdFx0Z290byBvdXQ7XG4gXG4rXHR2cSA9IHZzb2NrLVx1MDAzZXZxc1tWU09DS19WUV9UWF07XG4rXG4gXHRkbyB7XG4gXHRcdHN0cnVjdCBza19idWZmICpza2I7XG4gXHRcdHVuc2lnbmVkIGludCBsZW47XG5AQCAtNDUxLDEzICs0NTIsMTMgQEAgc3RhdGljIHZvaWQgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB2aXJ0aW9fdnNvY2ssIGV2ZW50X3dvcmspO1xuIFx0c3RydWN0IHZpcnRxdWV1ZSAqdnE7XG4gXG4tXHR2cSA9IHZzb2NrLVx1MDAzZXZxc1tWU09DS19WUV9FVkVOVF07XG4tXG4gXHRtdXRleF9sb2NrKFx1MDAyNnZzb2NrLVx1MDAzZWV2ZW50X2xvY2spO1xuIFxuIFx0aWYgKCF2c29jay1cdTAwM2VldmVudF9ydW4pXG4gXHRcdGdvdG8gb3V0O1xuIFxuK1x0dnEgPSB2c29jay1cdTAwM2V2cXNbVlNPQ0tfVlFfRVZFTlRdO1xuK1xuIFx0ZG8ge1xuIFx0XHRzdHJ1Y3QgdmlydGlvX3Zzb2NrX2V2ZW50ICpldmVudDtcbiBcdFx0dW5zaWduZWQgaW50IGxlbjtcbkBAIC02MzQsMTMgKzYzNSwxMyBAQCBzdGF0aWMgdm9pZCB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IHZpcnRpb192c29jaywgcnhfd29yayk7XG4gXHRzdHJ1Y3QgdmlydHF1ZXVlICp2cTtcbiBcbi1cdHZxID0gdnNvY2stXHUwMDNldnFzW1ZTT0NLX1ZRX1JYXTtcbi1cbiBcdG11dGV4X2xvY2soXHUwMDI2dnNvY2stXHUwMDNlcnhfbG9jayk7XG4gXG4gXHRpZiAoIXZzb2NrLVx1MDAzZXJ4X3J1bilcbiBcdFx0Z290byBvdXQ7XG4gXG4rXHR2cSA9IHZzb2NrLVx1MDAzZXZxc1tWU09DS19WUV9SWF07XG4rXG4gXHRkbyB7XG4gXHRcdHZpcnRxdWV1ZV9kaXNhYmxlX2NiKHZxKTtcbiBcdFx0Zm9yICg7Oykge1xuQEAgLTY4OSw3ICs2OTAsOCBAQCBzdGF0aWMgdm9pZCB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0fSB3aGlsZSAoIXZpcnRxdWV1ZV9lbmFibGVfY2IodnEpKTtcbiBcbiBvdXQ6XG4tXHRpZiAodnNvY2stXHUwMDNlcnhfYnVmX25yIFx1MDAzYyB2c29jay1cdTAwM2VyeF9idWZfbWF4X25yIC8gMilcbitcdGlmICh2c29jay1cdTAwM2VyeF9ydW4gXHUwMDI2XHUwMDI2XG4rXHQgICAgdnNvY2stXHUwMDNlcnhfYnVmX25yIFx1MDAzYyB2c29jay1cdTAwM2VyeF9idWZfbWF4X25yIC8gMilcbiBcdFx0dmlydGlvX3Zzb2NrX3J4X2ZpbGwodnNvY2spO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZzb2NrLVx1MDAzZXJ4X2xvY2spO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE1OjAxOjUwLjkyMDQzNDEyOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3NzU1MzgwMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVmlydGlvLVZTb2NrIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHR3ZWFrcyBgbmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJBaCwgdGhpcyB0b3VjaGVzIHRoZSBjb3JlIHZpcnRpby12c29jayB0cmFuc3BvcnQgbGF5ZXIuXCIgVGhlIGtleSBjaGFuZ2VzIGFyZSB3aXRoaW4gYHZpcnRpb190cmFuc3BvcnRfdHhfd29ya2AsIGB2aXJ0aW9fdHJhbnNwb3J0X2V2ZW50X3dvcmtgLCBhbmQgYHZpcnRpb190cmFuc3BvcnRfcnhfd29ya2AuIFNwZWNpZmljYWxseSwgdGhlIGNvZGUgbm93IGFzc2lnbnMgdGhlIHZpcnRxdWV1ZSAoYHZxYCkgb25seSAqYWZ0ZXIqIGNoZWNraW5nIGlmIGB2c29jay1cdTAwM2V0eF9ydW5gIChhbmQgYGV2ZW50X3J1bmAsIGByeF9ydW5gKSBpcyB0cnVlLCBhbmQgdGhpcyBjaGVjayBvY2N1cnMgd2l0aGluIHRoZSBtdXRleCBsb2NrLiBBZGRpdGlvbmFsbHksIHRoZXJlJ3MgYSBuZXcgY2hlY2sgZm9yIGB2c29jay1cdTAwM2VyeF9ydW5gIGJlZm9yZSBjYWxsaW5nIGB2aXJ0aW9fdnNvY2tfcnhfZmlsbCh2c29jayk7YCBpbiBgdmlydGlvX3RyYW5zcG9ydF9yeF93b3JrYC5cblxuTXkgaW5pdGlhbCByZWFkIHN1Z2dlc3RzIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCDigJMgbGlrZWx5IGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlLiBUaGUgb3JpZ2luYWwgY29kZSBwb3RlbnRpYWxseSBhY2Nlc3NlZCB0aGUgdmlydHF1ZXVlIGFmdGVyIGB2c29jay1cdTAwM2V0eF9ydW5gIGJlY2FtZSBmYWxzZSwgbGVhZGluZyB0byBpbnZhbGlkIGFjY2Vzcy4gV2FpdCwgeWVhaCwgaWYgYHZzb2NrLVx1MDAzZXR4X3J1bmAgaXMgZmFsc2UsIGl0IGp1bXBzIHRvIGBvdXRgLCBidXQgYHZxYCB3YXMgYXNzaWduZWQgYWxyZWFkeSwgdGhhdCBhY2Nlc3MgdG8gYHZzb2NrLVx1MDAzZXZxc2AgY291bGQgYmUgYSBidWcuXG5cbk5vdywgbGV0J3MgY29uZmlybSB0aGUgc2lnbmlmaWNhbmNlLiBgdmlydGlvX3RyYW5zcG9ydF90eF93b3JrYCwgYHZpcnRpb190cmFuc3BvcnRfZXZlbnRfd29ya2AsIGFuZCBgdmlydGlvX3RyYW5zcG9ydF9yeF93b3JrYCBhcmUgZGVmaW5pdGVseSB3b3JrcXVldWUgZnVuY3Rpb25zIGNyaXRpY2FsIHRvIHZpcnRpby12c29jaydzIGZ1bmN0aW9uYWxpdHkuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdmlydGlvLXZzb2NrIGlzIHN1cHBvcnRlZCBpbiBRRU1VIGFuZCwgaW1wb3J0YW50bHksIGZyZXF1ZW50bHkgZnV6emVkLiBUaGF0IG1lYW5zIHRoZXNlIGZ1bmN0aW9ucyBhcmUgaGlnaC12YWx1ZSB0YXJnZXRzIGZvciBleHBsb2l0IGF0dGVtcHRzLlxuXG5HaXZlbiB0aGUgcG90ZW50aWFsIGZvciBhIHNlY3VyaXR5IGlzc3VlLCBpdCdzIGRlZmluaXRlbHkgd29ydGggaW52ZXN0aWdhdGluZyB0aG9yb3VnaGx5LiBUaGUgbmV4dCBzdGVwIGlzIHRvIGxvY2F0ZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB2aXJ0aW8tdnNvY2ssIGxpa2VseSBpbiBgbmV0L3Ztd192c29jay9LY29uZmlnYCBvciBwb3NzaWJseSBldmVuIGBkcml2ZXJzL3Zob3N0L0tjb25maWdgLiBMZXQncyBjb25maXJtIHRoYXQgYnkgZ3JlcHBpbmcgZm9yIGB2aXJ0aW9fdHJhbnNwb3J0LmNgIGluIGBuZXQvdm13X3Zzb2NrL01ha2VmaWxlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4MCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE1OjAxOjU4LjY5NTk3NjQyM1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDg5ODg3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2aXJ0aW9fdHJhbnNwb3J0Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Ztd192c29jay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3Ztd192c29jay9NYWtlZmlsZT00PW9iai0kKENPTkZJR19WTVdBUkVfVk1DSV9WU09DS0VUUykgKz0gdm13X3Zzb2NrX3ZtY2lfdHJhbnNwb3J0Lm9cXG5uZXQvdm13X3Zzb2NrL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX1ZJUlRJT19WU09DS0VUUykgKz0gdm13X3Zzb2NrX3ZpcnRpb190cmFuc3BvcnQub1xcbm5ldC92bXdfdnNvY2svTWFrZWZpbGUtNi1vYmotJChDT05GSUdfVklSVElPX1ZTT0NLRVRTX0NPTU1PTikgKz0gdm13X3Zzb2NrX3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLm9cXG4tLVxcbm5ldC92bXdfdnNvY2svTWFrZWZpbGU9MTU9dm13X3Zzb2NrX3ZtY2lfdHJhbnNwb3J0LXkgKz0gdm1jaV90cmFuc3BvcnQubyB2bWNpX3RyYW5zcG9ydF9ub3RpZnkubyBcXFxcXFxuLS1cXG5uZXQvdm13X3Zzb2NrL01ha2VmaWxlLTE3LVxcbm5ldC92bXdfdnNvY2svTWFrZWZpbGU6MTg6dm13X3Zzb2NrX3ZpcnRpb190cmFuc3BvcnQteSArPSB2aXJ0aW9fdHJhbnNwb3J0Lm9cXG5uZXQvdm13X3Zzb2NrL01ha2VmaWxlLTE5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNTowMTo1OC43NzA4ODY1MDFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTE3Njc1MTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFZpcnRpby1WU09DSyBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIGBDT05GSUdfVklSVElPX1ZTT0NLRVRTYCBpcyB0aGUga2V5LiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGBuZXQvdm13X3Zzb2NrL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgdGhlIGRlZmluaXRpb24gYW5kIGRlcGVuZGVuY2llcyBmb3IgYFZJUlRJT19WU09DS0VUU2Agc2hvdWxkIGxpdmUuIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHN5bWJvbCBpcyBwcm9wZXJseSBkZWZpbmVkIGFuZCB0aGF0IGl0cyBkZXBlbmRlbmNpZXMsIGlmIGFueSwgYXJlIHdoYXQgSSBleHBlY3QuIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2Ugd2hldGhlciBpdCdzIHRpZWQgdG8gdGhlIGBWSVJUSU9gIGZhbWlseSBnZW5lcmFsbHksIG9yIHBlcmhhcHMgc3BlY2lmaWMgaGFyZHdhcmUgdmlydHVhbGl6YXRpb24gcGxhdGZvcm1zLiBJJ2xsIGFsc28gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBvcHRpb25zIG9yIGRlZmF1bHQgc2V0dGluZ3MgdGhhdCBhcmUgcmVsZXZhbnQgdG8gbXkgY3VycmVudCBpbnZlc3RpZ2F0aW9uLiBLbm93aW5nIHRoZSBjb250ZXh0IG9mIHRoZSBLY29uZmlnIGZpbGUgd2lsbCBnaXZlIG1lIGEgc29saWQgZm91bmRhdGlvbiBmb3IgZXZhbHVhdGluZyBpdHMgaW1wbGljYXRpb25zIGluIHRoZSBidWlsZCBwcm9jZXNzIGFuZCBydW50aW1lIGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzE5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTU6MDI6MDMuODg4NTY0NTk5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyNTMzMTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWSVJUSU9fVlNPQ0tFVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Ztd192c29jay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3Ztd192c29jay9LY29uZmlnPTQxPWNvbmZpZyBWTVdBUkVfVk1DSV9WU09DS0VUU1xcbi0tXFxubmV0L3Ztd192c29jay9LY29uZmlnLTUyLVxcbm5ldC92bXdfdnNvY2svS2NvbmZpZzo1Mzpjb25maWcgVklSVElPX1ZTT0NLRVRTXFxubmV0L3Ztd192c29jay9LY29uZmlnLTU0LVxcdHRyaXN0YXRlIFxcXCJ2aXJ0aW8gdHJhbnNwb3J0IGZvciBWaXJ0dWFsIFNvY2tldHNcXFwiXFxuLS1cXG5uZXQvdm13X3Zzb2NrL0tjb25maWctNjUtXFxubmV0L3Ztd192c29jay9LY29uZmlnOjY2OmNvbmZpZyBWSVJUSU9fVlNPQ0tFVFNfQ09NTU9OXFxubmV0L3Ztd192c29jay9LY29uZmlnLTY3LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE1OjAyOjAzLjk2MTEwODExOFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NjYyOTIzMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBWSVJUSU9fVlNPQ0tFVFMgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBvYmplY3RpdmUgaXMgY2xlYXI6IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YgYFZJUlRJT19WU09DS0VUU2AuIFRoaXMgaXNuJ3QganVzdCBhYm91dCBpZGVudGlmeWluZyB0aGUgaW1tZWRpYXRlIHBhcmVudCwgdGhvdWdoIHRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byB0aGluayBhYm91dCB0aGlzIGluIGEgbGF5ZXJlZCBmYXNoaW9uLiBXaGF0IGRvZXMgYFZJUlRJT19WU09DS0VUU2AgcmVseSBvbiBhdCB0aGUgaGFyZHdhcmUgbGV2ZWw/IElzIGl0IGEgc3BlY2lmaWMgVklSVElPIHRyYW5zcG9ydD8gSXMgdGhlcmUgYW55dGhpbmcgcGxhdGZvcm0gc3BlY2lmaWMgdGhhdCB0aGlzIGlzIGdvaW5nIHRvIGJlIHNpdHRpbmcgb24gdG9wIG9mPyBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgd2hpY2ggVklSVElPIHNwZWMgdmVyc2lvbiBpcyByZWxldmFudC4gQXJlIHRoZXJlIGFueSBmZWF0dXJlcyBJIHdvdWxkIGV4cGVjdCB0byBmaW5kIGluIGl0cyBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgYWxzbyBnb2luZyB0byBhZmZlY3QgdGhlIGRlcGVuZGVuY3kgY2hhaW4/IEknbGwgcHJvYmFibHkgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIGJ1aWxkIHN5c3RlbSBkZWZpbml0aW9ucywgYW5kIHRoZSBtb2R1bGUgYnVpbGQgY29uZmlnLiBUaG9zZSBzaG91bGQgYmUgdGhlIHByaW1hcnkgc291cmNlcyBvZiB0cnV0aCB0byBzZWUgdGhlIG90aGVyIGtlcm5lbCBtb2R1bGVzLCBhbmQgZHJpdmVycyB0aGF0IGBWSVJUSU9fVlNPQ0tFVFNgIHB1bGxzIGluLCBvciBpZiBpdCBoYXMgYW55IG1vZHVsZSBvcHRpb25zLiBUaGVuIEkgbmVlZCB0byBmb2xsb3cgdGhlIHRyYWlsLiBJZiBpdCByZWZlcmVuY2VzIG90aGVyIFZJUlRJTyBkcml2ZXJzLCBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciBpbnRlcmFjdGlvbnMuIERvZXMgaXQgaW50ZXJhY3Qgd2l0aCBhIGNvcmUgVklSVElPIGxheWVyPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGZvciBJL08gYW5kIGludGVycnVwdCBoYW5kbGluZz8gVGhpcyBhbHNvIG1lYW5zIHBvdGVudGlhbGx5IGNvbnNpZGVyaW5nIHRoZSB1c2Vyc3BhY2Ugc2lkZSwgZXNwZWNpYWxseSBpZiB0aGlzIHV0aWxpemVzIGEgZGVkaWNhdGVkIHRyYW5zcG9ydCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgYXNzb2NpYXRlZCBsaWJyYXJpZXMuIFVsdGltYXRlbHksIEkgbmVlZCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIGFyY2hpdGVjdHVyYWwgY29udGV4dCBvZiBgVklSVElPX1ZTT0NLRVRTYCBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciB2aXJ0dWFsaXphdGlvbiBsYW5kc2NhcGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGFsbCB0aGUgcGllY2VzIGl0IHRvdWNoZXMgdG8gbWFrZSBpdCB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTUxLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTU6MDI6MDguNDI3NDAzNTI4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE2NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3Ztd192c29jay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDUwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAgNTE6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCB2bXdfdnNvY2tfdm1jaV90cmFuc3BvcnQuIElmIHVuc3VyZSwgc2F5IE4uXFxuICA1MjpcXHRcXG4gIDUzOlxcdGNvbmZpZyBWSVJUSU9fVlNPQ0tFVFNcXG4gIDU0OlxcdFxcdHRyaXN0YXRlIFxcXCJ2aXJ0aW8gdHJhbnNwb3J0IGZvciBWaXJ0dWFsIFNvY2tldHNcXFwiXFxuICA1NTpcXHRcXHRkZXBlbmRzIG9uIFZTT0NLRVRTIFxcdTAwMjZcXHUwMDI2IFZJUlRJT1xcbiAgNTY6XFx0XFx0c2VsZWN0IFZJUlRJT19WU09DS0VUU19DT01NT05cXG4gIDU3OlxcdFxcdGhlbHBcXG4gIDU4OlxcdFxcdCAgVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBhIHZpcnRpbyB0cmFuc3BvcnQgZm9yIFZpcnR1YWwgU29ja2V0cy5cXG4gIDU5OlxcdFxcbiAgNjA6XFx0XFx0ICBFbmFibGUgdGhpcyB0cmFuc3BvcnQgaWYgeW91ciBWaXJ0dWFsIE1hY2hpbmUgaG9zdCBzdXBwb3J0cyBWaXJ0dWFsXFxuICA2MTpcXHRcXHQgIFNvY2tldHMgb3ZlciB2aXJ0aW8uXFxuICA2MjpcXHRcXG4gIDYzOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXFxuICA2NDpcXHRcXHQgIGNhbGxlZCB2bXdfdnNvY2tfdmlydGlvX3RyYW5zcG9ydC4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDY1OlxcdFxcbiAgNjY6XFx0Y29uZmlnIFZJUlRJT19WU09DS0VUU19DT01NT05cXG4gIDY3OlxcdFxcdHRyaXN0YXRlXFxuICA2ODpcXHRcXHRoZWxwXFxuICA2OTpcXHRcXHQgIFRoaXMgb3B0aW9uIGlzIHNlbGVjdGVkIGJ5IGFueSBkcml2ZXIgd2hpY2ggbmVlZHMgdG8gYWNjZXNzXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE1OjAyOjA4LjQyNzQ3NzA3OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NDQ4MjY2NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBleHBlcnQgcGVyc3BlY3RpdmU6XG5cbioqRGVlcCBEaXZlIGludG8gVlNPQ0sgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMuIFRoZSBjb3JlIGRlcGVuZGVuY2llcywgZnJvbSB3aGF0IEknbSBzZWVpbmcsIGFyZSBgVlNPQ0tFVFNgIGFuZCBgVklSVElPYC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQncyB0aGUgdmlydHVhbCBzb2NrZXQgaW1wbGVtZW50YXRpb24sIGxpa2VseSBvdmVyIHRoZSBWaXJ0SU8gdHJhbnNwb3J0IGxheWVyLiBNYWtlcyBpdCB0aGUgb2J2aW91cyBjaG9pY2UgZm9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIGBWU09DS0VUU2AgY29uZmlndXJhdGlvbiBkaXJlY3RseSB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2UuIFdoZXJlIGVsc2Ugd291bGQgaXQgYmUgZGVmaW5lZCBidXQgaW4gYG5ldC92bXdfdnNvY2svS2NvbmZpZ2A/IEl0J3MgdGhlIHN0YW5kYXJkIGxvY2F0aW9uIGZvciB0aGlzIGtpbmQgb2YgZGV2aWNlLiBMZXQncyBzZWUgd2hhdCBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkLCB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgYW5kIG1vc3QgaW1wb3J0YW50bHksIHdoYXQgb3RoZXIgZGVwZW5kZW5jaWVzIGFuZCBjb25kaXRpb25hbHMgbWlnaHQgYmUgbHVya2luZy4gVGltZSB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIGRldGFpbHMgb2YgdGhlIEtjb25maWcgZmlsZSB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBpbXBsZW1lbnRhdGlvbiBpbnNpZGUgYW5kIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg1OCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTU6MDI6MTMuMTcyMzA3MTc0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4NDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC92bXdfdnNvY2svS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBWc29jayBwcm90b2NvbFxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgVlNPQ0tFVFNcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIFNvY2tldCBwcm90b2NvbFxcXCJcXG4gICA4OlxcdFxcdGhlbHBcXG4gICA5OlxcdFxcdCAgVmlydHVhbCBTb2NrZXQgUHJvdG9jb2wgaXMgYSBzb2NrZXQgcHJvdG9jb2wgc2ltaWxhciB0byBUQ1AvSVBcXG4gIDEwOlxcdFxcdCAgYWxsb3dpbmcgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIFZpcnR1YWwgTWFjaGluZXMgYW5kIGh5cGVydmlzb3JcXG4gIDExOlxcdFxcdCAgb3IgaG9zdC5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0XFx0ICBZb3Ugc2hvdWxkIGFsc28gc2VsZWN0IG9uZSBvciBtb3JlIGh5cGVydmlzb3Itc3BlY2lmaWMgdHJhbnNwb3J0c1xcbiAgMTQ6XFx0XFx0ICBiZWxvdy5cXG4gIDE1OlxcdFxcbiAgMTY6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuICAxNzpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHZzb2NrLiBJZiB1bnN1cmUsIHNheSBOLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgVlNPQ0tFVFNfRElBR1xcbiAgMjA6XFx0XFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgU29ja2V0cyBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTU6MDI6MTMuMTcyMzc5NzM0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MjAwMjAwNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBWaXJ0aW8gdnNvY2sgVHJhbnNwb3J0IEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYFZTT0NLRVRTYCwgYFZJUlRJT2AsIGFuZCBgVklSVElPX1ZTT0NLRVRTYC4gUmlnaHQsIGBWSVJUSU9gIGlzIGEgY29yZSBjb25maWcsIHNvIHRoYXQncyBleHBlY3RlZC4gTGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzIGF0IHBsYXkgaGVyZS4gVGhlIHBhdGNoIHNlZW1zIHRvIGJlIG1vZGlmeWluZyBgdmlydGlvX3RyYW5zcG9ydF90eF93b3JrYCwgYHZpcnRpb190cmFuc3BvcnRfZXZlbnRfd29ya2AsIGFuZCBgdmlydGlvX3RyYW5zcG9ydF9yeF93b3JrYC4gVGhvc2UgbG9vayBsaWtlIHdvcmtxdWV1ZSBmdW5jdGlvbnMsIHRyaWdnZXJlZCBwcm9iYWJseSBieSB2aXJ0cXVldWUgY2FsbGJhY2tzIG9yIG90aGVyIGV2ZW50cy5cblxuV2hhdCBhcmUgdGhlIGltcG9ydGFudCBzeW1ib2xzIEkgc2hvdWxkIGJlIGZvY3VzaW5nIG9uPyBMZXQgbWUgbm90ZSB0aG9zZSBmdW5jdGlvbnMgZG93bjogYHZpcnRpb190cmFuc3BvcnRfdHhfd29ya2AsIGB2aXJ0aW9fdHJhbnNwb3J0X2V2ZW50X3dvcmtgLCBhbmQgYHZpcnRpb190cmFuc3BvcnRfcnhfd29ya2AuXG5cbldhaXQsIHRoZXNlIGxvb2sgbGlrZSBzdGF0aWMgZnVuY3Rpb25zLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2suIFl1cCwgYHN0YXRpYyB2b2lkIHZpcnRpb190cmFuc3BvcnRfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspYCwgZXRjLiBTaW5jZSB0aGV5J3JlIHN0YXRpYywgdGhleSAqbWlnaHQqIG5vdCBiZSB0aGUgYmVzdCBmb2N1cyBzeW1ib2xzIGlmIHRoZXkncmUgaW5saW5lZC4gQnV0IHdhaXQsIHdvcmtxdWV1ZSBmdW5jdGlvbnMgY2FuJ3QgYmUgaW5saW5lZCBiZWNhdXNlIHRoZWlyIGFkZHJlc3NlcyBhcmUgcGFzc2VkIHRvIGBJTklUX1dPUktgLiBFeGFjdGx5LiBUaGUgaW5zdHJ1Y3Rpb25zIHNwZWNpZnkgYSBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIEhvd2V2ZXIsIHRoZXNlICphcmUqIHBhc3NlZCBhcyBmdW5jdGlvbiBwb2ludGVycyB0byBgSU5JVF9XT1JLYCwgc28gdGhleSBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuXG5cbk9rYXksIHRoZXNlIHNob3VsZCBiZSBmaW5lLCBidXQgbWF5YmUgSSBzaG91bGQgYWxzbyBpbmNsdWRlIHRoZSBmdW5jdGlvbnMgdGhhdCBzY2hlZHVsZSB0aGVtLCBvciB0aGUgdmlydGlvIHZzb2NrIGVudHJ5IHBvaW50cywganVzdCB0byBiZSB0aG9yb3VnaC4gSSBzaG91bGQgY2hlY2sgYHZpcnRpb190cmFuc3BvcnQuY2AgdG8gc2VlIHdoZXJlIHRoZXNlIHdvcmtxdWV1ZSBmdW5jdGlvbnMgYXJlIGJlaW5nIGNhbGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM3NSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE1OjAyOjE5Ljc5MjQwMzIwMVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgyNzg2NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSU5JVF9XT1JLLip2aXJ0aW9fdHJhbnNwb3J0Xy4qX3dvcmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Ztd192c29jay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM9ODAwPXN0YXRpYyBpbnQgdmlydGlvX3Zzb2NrX3Byb2JlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtODI5LVxcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXFx1MDAyNnZzb2NrLVxcdTAwM2VzZW5kX3BrdF9xdWV1ZSk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6ODMwOlxcdElOSVRfV09SSyhcXHUwMDI2dnNvY2stXFx1MDAzZXJ4X3dvcmssIHZpcnRpb190cmFuc3BvcnRfcnhfd29yayk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6ODMxOlxcdElOSVRfV09SSyhcXHUwMDI2dnNvY2stXFx1MDAzZXR4X3dvcmssIHZpcnRpb190cmFuc3BvcnRfdHhfd29yayk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6ODMyOlxcdElOSVRfV09SSyhcXHUwMDI2dnNvY2stXFx1MDAzZWV2ZW50X3dvcmssIHZpcnRpb190cmFuc3BvcnRfZXZlbnRfd29yayk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6ODMzOlxcdElOSVRfV09SSyhcXHUwMDI2dnNvY2stXFx1MDAzZXNlbmRfcGt0X3dvcmssIHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3Rfd29yayk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtODM0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNTowMjoxOS44NjA2ODk5MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjI2MTY4NTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHVuZGVyc3RhbmRpbmcsIGZyYW1lZCBhcyBteSBvd24gdGhvdWdodHM6XG5cbioqVmlydGlvLVZTb2NrIEluaXRpYWxpemF0aW9uIGFuZCBUcmlnZ2VyaW5nKipcblxuT2theSwgc28gSSdtIHRyYWNraW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgdmlydGlvLXZzb2NrIGRyaXZlciBhbmQgaXRzIHRob3VnaHQgcHJvY2Vzc2VzLiBJdCBhbGwgc3RhcnRzIGluIGB2aXJ0aW9fdnNvY2tfcHJvYmVgLCB3aGljaCBtYWtlcyBzZW5zZSBhcyB0aGUgZW50cnkgcG9pbnQuIEJ1dCB3aGF0IHJlYWxseSBzZXRzIHRoZSB3aG9sZSB0aGluZyBpbiBtb3Rpb24/IEFoLCByaWdodCwgaXQncyB0aGUgdmlydHF1ZXVlIGNhbGxiYWNrcy4gVGhvc2UgYXJlIHRoZSBrZXkuIFRoZXnigJlyZSBsaWtlIHRoZSBldmVudCBoYW5kbGVycywgdGhlIHRyaWdnZXJzLiBXaGVuIGRhdGEgaXMgYXZhaWxhYmxlLCBhIHJlcXVlc3QgY29tcGxldGVzLCBvciBzb21lIG90aGVyIHZpcnRxdWV1ZS1yZWxhdGVkIGV2ZW50IG9jY3VycywgdGhlIGRyaXZlcidzIGludGVybmFsIGxvZ2ljIHdha2VzIHVwIGFuZCBzcHJpbmdzIHRvIGFjdGlvbi4gVGhhdCdzIHRoZSBwcmltYXJ5IG1lY2hhbmlzbSBkcml2aW5nIHRoZSBzdGF0ZSBjaGFuZ2VzIGFuZCByZWFjdGlvbnMgb2YgdGhpcyB3aG9sZSBwcm9jZXNzLiBNYWtlcyBwZXJmZWN0IHNlbnNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDI0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTU6MDI6MjMuNDg2ODYxNDA3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODE5ODc2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxdWV1ZV93b3JrLipfd29ya1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdm13X3Zzb2NrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz0xNTg9dmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTIxMC1cXHRpZiAocmVzdGFydF9yeClcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzoyMTE6XFx0XFx0cXVldWVfd29yayh2aXJ0aW9fdnNvY2tfd29ya3F1ZXVlLCBcXHUwMDI2dnNvY2stXFx1MDAzZXJ4X3dvcmspO1xcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTIxMi19XFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz0yMzc9dmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy0yNzAtXFx0XFx0dmlydGlvX3Zzb2NrX3NrYl9xdWV1ZV90YWlsKFxcdTAwMjZ2c29jay1cXHUwMDNlc2VuZF9wa3RfcXVldWUsIHNrYik7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6MjcxOlxcdFxcdHF1ZXVlX3dvcmsodmlydGlvX3Zzb2NrX3dvcmtxdWV1ZSwgXFx1MDAyNnZzb2NrLVxcdTAwM2VzZW5kX3BrdF93b3JrKTtcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy0yNzItXFx0fVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM9MjgwPXZpcnRpb190cmFuc3BvcnRfY2FuY2VsX3BrdChzdHJ1Y3QgdnNvY2tfc29jayAqdnNrKVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtMzAwLVxcdFxcdCAgICBuZXdfY250IFxcdTAwM2MgdmlydHF1ZXVlX2dldF92cmluZ19zaXplKHJ4X3ZxKSlcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzozMDE6XFx0XFx0XFx0cXVldWVfd29yayh2aXJ0aW9fdnNvY2tfd29ya3F1ZXVlLCBcXHUwMDI2dnNvY2stXFx1MDAzZXJ4X3dvcmspO1xcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTMwMi1cXHR9XFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz0zNDI9c3RhdGljIHZvaWQgdmlydGlvX3RyYW5zcG9ydF90eF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTM3MC1cXHRpZiAoYWRkZWQpXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6MzcxOlxcdFxcdHF1ZXVlX3dvcmsodmlydGlvX3Zzb2NrX3dvcmtxdWV1ZSwgXFx1MDAyNnZzb2NrLVxcdTAwM2VzZW5kX3BrdF93b3JrKTtcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy0zNzItfVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM9NDgwPXN0YXRpYyB2b2lkIHZpcnRpb192c29ja19ldmVudF9kb25lKHN0cnVjdCB2aXJ0cXVldWUgKnZxKVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNDg1LVxcdFxcdHJldHVybjtcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzo0ODY6XFx0cXVldWVfd29yayh2aXJ0aW9fdnNvY2tfd29ya3F1ZXVlLCBcXHUwMDI2dnNvY2stXFx1MDAzZWV2ZW50X3dvcmspO1xcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTQ4Ny19XFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz00ODk9c3RhdGljIHZvaWQgdmlydGlvX3Zzb2NrX3R4X2RvbmUoc3RydWN0IHZpcnRxdWV1ZSAqdnEpXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy00OTQtXFx0XFx0cmV0dXJuO1xcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjQ5NTpcXHRxdWV1ZV93b3JrKHZpcnRpb192c29ja193b3JrcXVldWUsIFxcdTAwMjZ2c29jay1cXHUwMDNldHhfd29yayk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNDk2LX1cXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTQ5OD1zdGF0aWMgdm9pZCB2aXJ0aW9fdnNvY2tfcnhfZG9uZShzdHJ1Y3QgdmlydHF1ZXVlICp2cSlcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTUwMy1cXHRcXHRyZXR1cm47XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6NTA0OlxcdHF1ZXVlX3dvcmsodmlydGlvX3Zzb2NrX3dvcmtxdWV1ZSwgXFx1MDAyNnZzb2NrLVxcdTAwM2VyeF93b3JrKTtcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy01MDUtfVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM9NzI3PXN0YXRpYyB2b2lkIHZpcnRpb192c29ja192cXNfc3RhcnQoc3RydWN0IHZpcnRpb192c29jayAqdnNvY2spXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy03NTEtXFx0ICovXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6NzUyOlxcdHF1ZXVlX3dvcmsodmlydGlvX3Zzb2NrX3dvcmtxdWV1ZSwgXFx1MDAyNnZzb2NrLVxcdTAwM2VzZW5kX3BrdF93b3JrKTtcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy03NTMtfVxcbi0tXFxubmV0L3Ztd192c29jay92c29ja19sb29wYmFjay5jPTI5PXN0YXRpYyBpbnQgdnNvY2tfbG9vcGJhY2tfc2VuZF9wa3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxubmV0L3Ztd192c29jay92c29ja19sb29wYmFjay5jLTM0LVxcdHZpcnRpb192c29ja19za2JfcXVldWVfdGFpbChcXHUwMDI2dnNvY2stXFx1MDAzZXBrdF9xdWV1ZSwgc2tiKTtcXG5uZXQvdm13X3Zzb2NrL3Zzb2NrX2xvb3BiYWNrLmM6MzU6XFx0cXVldWVfd29yayh2c29jay1cXHUwMDNld29ya3F1ZXVlLCBcXHUwMDI2dnNvY2stXFx1MDAzZXBrdF93b3JrKTtcXG5uZXQvdm13X3Zzb2NrL3Zzb2NrX2xvb3BiYWNrLmMtMzYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE1OjAyOjIzLjU1NTA2Nzc5NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTM0OTE0MzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKklkZW50aWZ5aW5nIEtleSB2c29jayBGdW5jdGlvbmFsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIHZpcnRxdWV1ZSBjYWxsYmFja3Mg4oCTIHRob3NlIGFyZSB0aGUgY29yZSBvZiBob3cgdGhlIHZzb2NrIGltcGxlbWVudGF0aW9uIGhhbmRsZXMgZGF0YSBmbG93LCBzbyB0aGV5J3JlIGRlZmluaXRlbHkgaW1wb3J0YW50LiBJIHNlZSB0aGVtIGFzIGB2aXJ0aW9fdnNvY2tfZXZlbnRfZG9uZWAsIGB2aXJ0aW9fdnNvY2tfdHhfZG9uZWAsIGFuZCBgdmlydGlvX3Zzb2NrX3J4X2RvbmVgLiBUaG9zZSBhcmUgdGhlIG9idmlvdXMgZm9jdXMgcG9pbnRzIGFzIGZhciBhcyB0aGUgY2FsbGJhY2sgZnVuY3Rpb25zIGFyZSBjb25jZXJuZWQuXG5cbkJleW9uZCB0aG9zZSwgSSBuZWVkIHRvIGNvbnNpZGVyIHdoZXJlIHRoZSBwcm9jZXNzaW5nIGRyaXZlbiBieSB0aG9zZSBjYWxsYmFja3MgYWN0dWFsbHkgaGFwcGVucywgYW5kIGluIHRoaXMgY29udGV4dCwgdGhhdCBzZWVtcyB0byBiZSBpbnNpZGUgYHZpcnRpb190cmFuc3BvcnRfdHhfd29ya2AsIGB2aXJ0aW9fdHJhbnNwb3J0X2V2ZW50X3dvcmtgLCBhbmQgYHZpcnRpb190cmFuc3BvcnRfcnhfd29ya2AuIFRoZXNlIHNlZW0gdG8gYmUgdGhlIGNvcmUgdHJhbnNwb3J0IGZ1bmN0aW9ucy5cblxuTm93LCBsZXQncyBzZWUgaWYgd2UndmUgbWlzc2VkIGFueXRoaW5nLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpZiBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyBtaWdodCBiZSBzaWduaWZpY2FudC4gSSdtIG5vdGluZyB0aGF0IGB2aXJ0aW9fdnNvY2tfZXZlbnRfZG9uZWAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBJbnRlcmVzdGluZy4gSSBuZWVkIHRvIGtub3cgaWYgYW55IG90aGVyIGZ1bmN0aW9ucywgbGlrZSBgdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdGAsIGFyZSBhY2Nlc3NpYmxlIGZyb20gb3V0c2lkZSB0aGUgc3BlY2lmaWMgdnNvY2sgbW9kdWxlLiBJZiBgdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdGAgaXMgbm90IHN0YXRpYywgdGhhdCdzIGEga2V5IGZ1bmN0aW9uIGZvciBteSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzg4NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNTowMjoyOC40ODk5ODUwMjhaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNjIyMTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Ztd192c29jay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM9MzA9c3RydWN0IHZpcnRpb192c29jayB7XFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy02MS1cXHQvKiBUaGVzZSBmaWVsZHMgYXJlIHVzZWQgb25seSBpbiB0eCBwYXRoIGluIGZ1bmN0aW9uXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6NjI6XFx0ICogJ3ZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3Rfd29yaygpJywgc28gdG8gc2F2ZVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTYzLVxcdCAqIHN0YWNrIHNwYWNlIGluIGl0LCBwbGFjZSBib3RoIG9mIHRoZW0gaGVyZS4gRWFjaFxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM9MTU3PXN0YXRpYyB2b2lkXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6MTU4OnZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3Rfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtMTU5LXtcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTIzNj1zdGF0aWMgaW50XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6MjM3OnZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldCAqbmV0KVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTIzOC17XFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz01NTc9c3RhdGljIHN0cnVjdCB2aXJ0aW9fdHJhbnNwb3J0IHZpcnRpb190cmFuc3BvcnQgPSB7XFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy02MDgtXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6NjA5OlxcdC5zZW5kX3BrdCA9IHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3QsXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNjEwLVxcdC5jYW5fbXNnemVyb2NvcHkgPSB2aXJ0aW9fdHJhbnNwb3J0X2Nhbl9tc2d6ZXJvY29weSxcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTcyNz1zdGF0aWMgdm9pZCB2aXJ0aW9fdnNvY2tfdnFzX3N0YXJ0KHN0cnVjdCB2aXJ0aW9fdnNvY2sgKnZzb2NrKVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNzQyLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjc0MzpcXHQvKiB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0KCkgY2FuIHF1ZXVlIHBhY2tldHMgb25jZVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTc0NC1cXHQgKiB0aGVfdmlydGlvX3Zzb2NrIGlzIHNldCwgYnV0IHRoZXkgd29uJ3QgYmUgcHJvY2Vzc2VkIHVudGlsXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz04MDA9c3RhdGljIGludCB2aXJ0aW9fdnNvY2tfcHJvYmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy04MzItXFx0SU5JVF9XT1JLKFxcdTAwMjZ2c29jay1cXHUwMDNlZXZlbnRfd29yaywgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrKTtcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzo4MzM6XFx0SU5JVF9XT1JLKFxcdTAwMjZ2c29jay1cXHUwMDNlc2VuZF9wa3Rfd29yaywgdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF93b3JrKTtcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy04MzQtXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM9MjEyPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdmlydGlvX3RyYW5zcG9ydF9hbGxvY19za2Ioc3RydWN0IHZpcnRpb192c29ja19wa3RfaW5mbyAqaW5mbyxcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0yOTgtICovXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jOjI5OTpzdGF0aWMgaW50IHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RfaW5mbyhzdHJ1Y3QgdnNvY2tfc29jayAqdnNrLFxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0zMDAtXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgdmlydGlvX3Zzb2NrX3BrdF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTY1NT1zdGF0aWMgaW50IHZpcnRpb190cmFuc3BvcnRfc2VuZF9jcmVkaXRfdXBkYXRlKHN0cnVjdCB2c29ja19zb2NrICp2c2spXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtNjYyLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzo2NjM6XFx0cmV0dXJuIHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RfaW5mbyh2c2ssIFxcdTAwMjZpbmZvKTtcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtNjY0LX1cXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz0xMjAyPWludCB2aXJ0aW9fdHJhbnNwb3J0X2Nvbm5lY3Qoc3RydWN0IHZzb2NrX3NvY2sgKnZzaylcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMjA5LVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoxMjEwOlxcdHJldHVybiB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X2luZm8odnNrLCBcXHUwMDI2aW5mbyk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTEyMTEtfVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTEyMTQ9aW50IHZpcnRpb190cmFuc3BvcnRfc2h1dGRvd24oc3RydWN0IHZzb2NrX3NvY2sgKnZzaywgaW50IG1vZGUpXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTIyNS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6MTIyNjpcXHRyZXR1cm4gdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF9pbmZvKHZzaywgXFx1MDAyNmluZm8pO1xcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMjI3LX1cXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz0xMjQxPXZpcnRpb190cmFuc3BvcnRfc3RyZWFtX2VucXVldWUoc3RydWN0IHZzb2NrX3NvY2sgKnZzayxcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMjUyLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoxMjUzOlxcdHJldHVybiB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X2luZm8odnNrLCBcXHUwMDI2aW5mbyk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTEyNTQtfVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTEyODE9c3RhdGljIGludCB2aXJ0aW9fdHJhbnNwb3J0X3Jlc2V0KHN0cnVjdCB2c29ja19zb2NrICp2c2ssXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTI5NC1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6MTI5NTpcXHRyZXR1cm4gdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF9pbmZvKHZzaywgXFx1MDAyNmluZm8pO1xcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMjk2LX1cXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz0xMzA1PXN0YXRpYyBpbnQgdmlydGlvX3RyYW5zcG9ydF9yZXNldF9ub19zb2NrKGNvbnN0IHN0cnVjdCB2aXJ0aW9fdHJhbnNwb3J0ICp0LFxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTEzMjEtXFx0XFx0ICogdC1cXHUwMDNlc2VuZF9wa3QoKSwgaW5zdGVhZCBvZiByZWx5aW5nIG9uXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jOjEzMjI6XFx0XFx0ICogdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF9pbmZvKCkgdG8gcGFzcyBpdC4gSXQgaXMgbm90IG5lZWRlZFxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMzIzLVxcdFxcdCAqIGJ5IHZpcnRpb190cmFuc3BvcnRfYWxsb2Nfc2tiKCkuXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM9MTY0OD12aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcmVzcG9uc2Uoc3RydWN0IHZzb2NrX3NvY2sgKnZzayxcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xNjYwLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoxNjYxOlxcdHJldHVybiB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X2luZm8odnNrLCBcXHUwMDI2aW5mbyk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTE2NjItfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNTowMjoyOC41NTM2MTI2NzZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA2ODc4Nzk0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZpcnRpby1WU09DSyBXb3JrcXVldWUgUmFjZSBDb25kaXRpb24gRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBjb3JlIG9mIGl0IHJldm9sdmVzIGFyb3VuZCB0aG9zZSB0aHJlZSBmdW5jdGlvbnM6IGB2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmtgLCBgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrYCwgYW5kIGB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmtgLiBUaGV5J3JlIGJlaW5nIGZlZCBpbnRvIGBJTklUX1dPUktgLCB3aGljaCBtZWFucyB0aGV5J3JlIHNjaGVkdWxlZCB0byBydW4gYXN5bmNocm9ub3VzbHkgaW4gYSB3b3JrcXVldWUuIFRoYXQncyBzdGFuZGFyZCBwcmFjdGljZSwgYnV0IGl0J3Mgd2hlcmUgdGhlIHByb2JsZW0gbGllcy5cblxuVGhlIHBhdGNoIHRhcmdldHMgYSByYWNlIGNvbmRpdGlvbi4gSXQgc2VlbXMgd2UncmUgYWNjZXNzaW5nIGB2c29jay1cdTAwM2V2cXNbVlNPQ0tfVlFfVFhdYCAqYmVmb3JlKiBjaGVja2luZyBgdnNvY2stXHUwMDNldHhfcnVuYC4gVGhhdCdzIGEgY2xhc3NpYyBjb25jdXJyZW5jeSBidWcsIGFuZCBpdCBtYWtlcyBwZXJmZWN0IHNlbnNlIHRoYXQgaXQgbmVlZHMgdG8gYmUgZml4ZWQuIElmIGB2c29jay1cdTAwM2V0eF9ydW5gIGlzIGZhbHNlLCBpdCdzIGEgaHVnZSByZWQgZmxhZyBiZWNhdXNlIGl0IG1lYW5zIHRob3NlIHZpcnRxdWV1ZXMsIHdoaWNoIGFyZSB2aXRhbCBmb3IgY29tbXVuaWNhdGlvbiwgY291bGQgYmUgZ29uZSDigJMgZnJlZWQsIGludmFsaWQsIHdoYXRldmVyLiBUaGlzIHdob2xlIG1lc3MgY291bGQgYmUgdHJpZ2dlcmVkIGJ5IGRldmljZSByZW1vdmFsIG9yIGEgc3VzcGVuZC9yZXN1bWUgY3ljbGUuIFRob3NlIGV2ZW50cyBhcmUgdXN1YWxseSBoYW5kbGVkIGJ5IHNvbWUgY2xlYW51cCBvciB0ZWFyZG93biBmdW5jdGlvbnMuXG5cblNvLCB0aGUgb2J2aW91cyBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBgdmlydGlvX3Zzb2NrX3JlbW92ZWAgYW5kIGl0cyBzdXJyb3VuZGluZyBjb250ZXh0LiBXZSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB2c29jayBkZXZpY2UgaXMgcmVtb3ZlZCBvciBzdXNwZW5kZWQsIGFuZCBob3cgdGhhdCByZWxhdGVzIHRvIGB2c29jay1cdTAwM2V0eF9ydW5gIGFuZCB0aGUgc3RhdGUgb2YgdGhvc2UgdmlydHF1ZXVlcy4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIGB2aXJ0aW9fdnNvY2tfcmVtb3ZlYCB0byBzZWUgd2hhdCBpdCdzIGRvaW5nIHdpdGggdGhlIHZpcnRxdWV1ZXMgd2hlbiB0aGUgZGV2aWNlIGlzIGJlaW5nIHVucGx1Z2dlZCBvciBzdXNwZW5kZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMjMwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE1OjAyOjMzLjYyMjQwMzA5NVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMxMDYzMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmlydGlvX3Zzb2NrX3JlbW92ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdm13X3Zzb2NrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz04MDA9c3RhdGljIGludCB2aXJ0aW9fdnNvY2tfcHJvYmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy04NTktXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6ODYwOnN0YXRpYyB2b2lkIHZpcnRpb192c29ja19yZW1vdmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtODYxLXtcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTkzOD1zdGF0aWMgc3RydWN0IHZpcnRpb19kcml2ZXIgdmlydGlvX3Zzb2NrX2RyaXZlciA9IHtcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTk0My1cXHQucHJvYmUgPSB2aXJ0aW9fdnNvY2tfcHJvYmUsXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6OTQ0OlxcdC5yZW1vdmUgPSB2aXJ0aW9fdnNvY2tfcmVtb3ZlLFxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTk0NS0jaWZkZWYgQ09ORklHX1BNX1NMRUVQXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE1OjAyOjMzLjY4NTUyMDM5M1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MzQ0MzI3NDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBEZWNpc2lvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGluc3RydWN0aW9ucyBhcmUgcHJldHR5IGNsZWFyOiBgUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZWAgaWYgaXQncyAqanVzdCogZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyBsaWtlIGAucmVtb3ZlYCwgYC5zaHV0ZG93bmAsIG9yIGBwY2lfdW5yZWdpc3Rlcl9kcml2ZXJgIHRoYXQgb25seSBydW4gZHVyaW5nIGhvdC11bnBsdWcgb3Igc3lzZnMgdW5iaW5kLiBCdXQgaG9sZCBvbiwgdGhlIHBhdGNoIHRvdWNoZXMgYHZpcnRpb190cmFuc3BvcnRfdHhfd29ya2AsIGB2aXJ0aW9fdHJhbnNwb3J0X2V2ZW50X3dvcmtgLCBhbmQgYHZpcnRpb190cmFuc3BvcnRfcnhfd29ya2AuIFRoZXNlIGFyZSBOT1QgdGVhcmRvd24gZnVuY3Rpb25zOyB0aGV5J3JlIHRoZSBwcmltYXJ5IHdvcmtxdWV1ZSBoYW5kbGVycyBmb3IgUlgvVFgvRXZlbnQuIFRoZSBidWcgKm1pZ2h0KiBtYW5pZmVzdCBkdXJpbmcgdGVhcmRvd24sIHN1c3BlbmQvcmVzdW1lLCBvciByZXNldCwgYnV0IHRoZSBhY3R1YWwgY29kZSBiZWluZyBtb2RpZmllZCBpcyBpbiB0aGUgY29yZSBkYXRhIHBhdGgg4oCTIFJYIGFuZCBUWCB3b3JrLiBUaGF0IG1ha2VzIHRoaXMgcGF0Y2ggcHJpbWUgZm9yIGZ1enppbmcuXG5cbk5vdywgbGV0J3MgZGlnIGEgYml0IGRlZXBlci4gU3BlY2lmaWNhbGx5LCBpdCB0b3VjaGVzIGB2aXJ0aW9fdnNvY2tfcnhfZmlsbGAsIHdoaWNoIGdldHMgY2FsbGVkIHdpdGhpbiBgdmlydGlvX3RyYW5zcG9ydF9yeF93b3JrYC4gVGhlIHBhdGNoIGFkZHMgYHZzb2NrLVx1MDAzZXJ4X3J1biBcdTAwMjZcdTAwMjZgIGFzIGEgY29uZGl0aW9uIGJlZm9yZSBjYWxsaW5nIGB2aXJ0aW9fdnNvY2tfcnhfZmlsbCh2c29jaylgLiBUaGlzIGlzIGludGVyZXN0aW5nOyB3ZSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGF0IGNvbmRpdGlvbiBzaWduaWZpZXMuXG5cblRvIGVuc3VyZSBJIGhhdmUgYWxsIHRoZSByZWxldmFudCBzeW1ib2xzLCBJIG5lZWQgdG8gZm9jdXMgb246XG4qICAgYHZpcnRpb190cmFuc3BvcnRfdHhfd29ya2BcbiogICBgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrYFxuKiAgIGB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmtgXG4qICAgYHZpcnRpb192c29ja19yeF9maWxsYFxuKiAgIGB2aXJ0aW9fdnNvY2tfZXZlbnRfZG9uZWBcbiogICBgdmlydGlvX3Zzb2NrX3R4X2RvbmVgXG4qICAgYHZpcnRpb192c29ja19yeF9kb25lYFxuXG5Ob3csIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIGB2aXJ0aW9fdnNvY2tfcnhfZmlsbGAgaXMgc3RhdGljLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTAyMSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNTowMjo0Mi4wMjk4NTE4ODZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4OTM1NjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZpcnRpb192c29ja19yeF9maWxsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC92bXdfdnNvY2svXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTI4MD12aXJ0aW9fdHJhbnNwb3J0X2NhbmNlbF9wa3Qoc3RydWN0IHZzb2NrX3NvY2sgKnZzaylcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTMxMC1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzozMTE6c3RhdGljIHZvaWQgdmlydGlvX3Zzb2NrX3J4X2ZpbGwoc3RydWN0IHZpcnRpb192c29jayAqdnNvY2spXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtMzEyLXtcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTYzMj1zdGF0aWMgdm9pZCB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNjk0LVxcdCAgICB2c29jay1cXHUwMDNlcnhfYnVmX25yIFxcdTAwM2MgdnNvY2stXFx1MDAzZXJ4X2J1Zl9tYXhfbnIgLyAyKVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjY5NTpcXHRcXHR2aXJ0aW9fdnNvY2tfcnhfZmlsbCh2c29jayk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNjk2LVxcdG11dGV4X3VubG9jayhcXHUwMDI2dnNvY2stXFx1MDAzZXJ4X2xvY2spO1xcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM9NzI3PXN0YXRpYyB2b2lkIHZpcnRpb192c29ja192cXNfc3RhcnQoc3RydWN0IHZpcnRpb192c29jayAqdnNvY2spXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy03MzMtXFx0bXV0ZXhfbG9jayhcXHUwMDI2dnNvY2stXFx1MDAzZXJ4X2xvY2spO1xcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjczNDpcXHR2aXJ0aW9fdnNvY2tfcnhfZmlsbCh2c29jayk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNzM1LVxcdHZzb2NrLVxcdTAwM2VyeF9ydW4gPSB0cnVlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNTowMjo0Mi4xMDg3OTMxMDVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzYzMjA3NDIwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRhcmdldCBGdW5jdGlvbnMgYW5kIENvbmZpZ3VyYXRpb25zKipcblxuT2theSwgc28gdGhpcyBpcyBzdGF0aWMsIHdoaWNoIG1lYW5zIEkgc2hvdWxkIGhvbmUgaW4gb24gdGhlIGNvcmUgc3ltYm9sczogdGhlIHdvcmsgZnVuY3Rpb25zIGFuZCB0aGUgdmlydHF1ZXVlIGNhbGxiYWNrcy4gU2luY2UgdGhlIHdvcmsgZnVuY3Rpb25zIGFyZSBwYXNzZWQgdG8gYElOSVRfV09SS2AsIHRoZXkgaGF2ZSBkaXN0aW5jdCBhZGRyZXNzZXMgYW5kIGFyZW4ndCBpbmxpbmVkLCB3aGljaCBtYWtlcyB0aGVtIHByaW1lIHRhcmdldHMuIFNwZWNpZmljYWxseSwgSSdtIGxvb2tpbmcgYXQgYHZpcnRpb190cmFuc3BvcnRfdHhfd29ya2AsIGB2aXJ0aW9fdHJhbnNwb3J0X2V2ZW50X3dvcmtgLCBhbmQgYHZpcnRpb190cmFuc3BvcnRfcnhfd29ya2AuXG5cbk5vdywgbGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgdGhhdCBtaWdodCBhbHNvIGJlIHJlbGV2YW50LCBqdXN0IHRvIGJlIHRob3JvdWdoLiBJJ20gdGhpbmtpbmcgb2YgYHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RgLCBgdmlydGlvX3RyYW5zcG9ydF9jYW5jZWxfcGt0YCwgYHZpcnRpb190cmFuc3BvcnRfY29ubmVjdGAsIGB2aXJ0aW9fdHJhbnNwb3J0X3NodXRkb3duYCwgYHZpcnRpb190cmFuc3BvcnRfc3RyZWFtX2VucXVldWVgLCBgdmlydGlvX3RyYW5zcG9ydF9yZXNldGAsIGFuZCBgdmlydGlvX3RyYW5zcG9ydF9zZW5kX3Jlc3BvbnNlYC5cblxuSG93ZXZlciwgdGhlIHBhdGNoICpzcGVjaWZpY2FsbHkqIG1vZGlmaWVzIHRoZSB3b3JrcXVldWUgaGFuZGxlcnMsIHNvIEknbGwgcHJpb3JpdGl6ZSBpbmNsdWRpbmcgdGhlIHdvcmtxdWV1ZSBoYW5kbGVycyBhcyBteSBmb2N1cyBzeW1ib2xzLlxuXG5Nb3Zpbmcgb24gdG8gdGhlIGNvbmZpZ3VyYXRpb25zLCBJIG5lZWQgdG8gbGlzdCB0aGUgcmVsZXZhbnQgb25lcy4gSSdtIHNlZWluZyBgVklSVElPX1ZTT0NLRVRTYCwgYFZTT0NLRVRTYCwgYW5kIGBWSVJUSU9gLiBXYWl0IGEgbWludXRlLCBgVklSVElPX1ZTT0NLRVRTYCAqZGVwZW5kcyogb24gYm90aCBgVlNPQ0tFVFNgIGFuZCBgVklSVElPYC4gU28gSSBzaG91bGQgbGlzdCB0aGVtIGluIHRoYXQgb3JkZXIgb2YgZGVwZW5kZW5jeS4gSSBzaG91bGQgYWxzbyBjaGVjayBpZiBgVklSVElPX1ZTT0NLRVRTX0NPTU1PTmAgaXMgbmVjZXNzYXJ5LiBTaW5jZSBpdCdzIHNlbGVjdGVkIGJ5IGBWSVJUSU9fVlNPQ0tFVFNgLCBpdCBjb3VsZCBiZSB1c2VmdWwgdG8gaW5jbHVkZSBhcyB3ZWxsLlxuXG5UbyBiZSBzdXJlLCBJJ2xsIGRvdWJsZS1jaGVjayBgVklSVElPX1ZTT0NLRVRTYCBpbiBgbmV0L3Ztd192c29jay9LY29uZmlnYC4gUmlnaHQsIGl0IGRlcGVuZHMgb24gYFZTT0NLRVRTYCBhbmQgYFZJUlRJT2AgYW5kIHNlbGVjdHMgYFZJUlRJT19WU09DS0VUU19DT01NT05gLiBUaGF0IGNvbmZpcm1zIHRoYXQgYFZJUlRJT19WU09DS0VUU2AgaXMgdGhlIHByaW1hcnkgY29uZmlnLiBOb3cgSSdsbCBxdWlja2x5IGNoZWNrIGlmIGBWU09DS0VUU2AgaXRzZWxmIGhhcyBhbnkgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjIyMSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNTowMjo0OS43NDA4NzEwNjNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3ODY5MTE5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVlNPQ0tFVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Ztd192c29jay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3Ztd192c29jay9LY29uZmlnLTUtXFxubmV0L3Ztd192c29jay9LY29uZmlnOjY6Y29uZmlnIFZTT0NLRVRTXFxubmV0L3Ztd192c29jay9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgU29ja2V0IHByb3RvY29sXFxcIlxcbi0tXFxubmV0L3Ztd192c29jay9LY29uZmlnLTE4LVxcbm5ldC92bXdfdnNvY2svS2NvbmZpZzoxOTpjb25maWcgVlNPQ0tFVFNfRElBR1xcbm5ldC92bXdfdnNvY2svS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBTb2NrZXRzIG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L3Ztd192c29jay9LY29uZmlnLTI4LVxcbm5ldC92bXdfdnNvY2svS2NvbmZpZzoyOTpjb25maWcgVlNPQ0tFVFNfTE9PUEJBQ0tcXG5uZXQvdm13X3Zzb2NrL0tjb25maWctMzAtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgU29ja2V0cyBsb29wYmFjayB0cmFuc3BvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE1OjAyOjUwLjExOTU2OTczNVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTIxODAyMDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZvciBhbiBleHBlcnQgbGlrZSBteXNlbGY6XG5cbioqRGVwZW5kZW5jeSBBbmFseXNpczogVlNPQ0tFVFMgYW5kIFZJUlRJTyoqXG5cblJpZ2h0LCBzbywgZmlyc3QgdGhpbmdzIGZpcnN0LCBgVlNPQ0tFVFNgIGlzIGJlYXV0aWZ1bGx5IHNlbGYtY29udGFpbmVkLiBObyBleHRlcm5hbCBsaWJyYXJpZXMsIG5vIHVuZGVybHlpbmcgZnJhbWV3b3JrcyBJIG5lZWQgdG8gd29ycnkgYWJvdXQg4oCTIGl0J3MgY2xlYW4gYW5kIGVmZmljaWVudCBmcm9tIGEgZGVwZW5kZW5jeSBwZXJzcGVjdGl2ZSwgd2hpY2ggaXMgYWx3YXlzIGEgd2luIGluIHRoaXMgZ2FtZS5cblxuTm93LCB0aGF0IGJyaW5ncyBtZSB0byBgVklSVElPYC4gR290dGEgcXVpY2tseSByZWZyZXNoIG15IG1lbnRhbCBtYXAgb2YgaXRzIGVjb3N5c3RlbS4gSSBuZWVkIHRvIHJ1biBhIHF1aWNrIG1lbnRhbCBjaGVja2xpc3QgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nOiBBcmUgdGhlcmUgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMgbHVya2luZyB3aXRoaW4gdGhlIGBWSVJUSU9gIGFyY2hpdGVjdHVyZT8gSXMgaXQgc3RhbmRpbmcgb24gaXRzIG93biwgb3IgZG9lcyBpdCByZWx5IG9uIHN1cHBvcnRpbmcgbGlicmFyaWVzIG9yIHVuZGVybHlpbmcgaGFyZHdhcmUgZmVhdHVyZXMgdG8gZnVuY3Rpb24/IE5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbC4gR290dGEgYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMzMzLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTU6MDI6NTQuMDQxMzc1MDk3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDU3MDMzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVklSVElPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlydGlvL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZpcnRpby9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZzoyOmNvbmZpZyBWSVJUSU9fQU5DSE9SXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0zLVxcdGJvb2xcXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTQtXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZzo1OmNvbmZpZyBWSVJUSU9cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTYtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWctMTItXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZzoxMzpjb25maWcgVklSVElPX1BDSV9MSUJcXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTE0LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTIwLVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWc6MjE6Y29uZmlnIFZJUlRJT19QQ0lfTElCX0xFR0FDWVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWctMjItXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWctMjktXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZzozMDptZW51Y29uZmlnIFZJUlRJT19NRU5VXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0zMS1cXHRib29sIFxcXCJWaXJ0aW8gZHJpdmVyc1xcXCJcXG4tLVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWc9MzQ9aWYgVklSVElPX01FTlVcXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTM1LVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWc6MzY6Y29uZmlnIFZJUlRJT19IQVJERU5fTk9USUZJQ0FUSU9OXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0zNy0gICAgICAgIGJvb2wgXFxcIkhhcmRlbiB2aXJ0aW8gbm90aWZpY2F0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy00OS1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjUwOmNvbmZpZyBWSVJUSU9fUENJXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy01MS1cXHR0cmlzdGF0ZSBcXFwiUENJIGRyaXZlciBmb3IgdmlydGlvIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTYyLVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWc6NjM6Y29uZmlnIFZJUlRJT19QQ0lfQURNSU5fTEVHQUNZXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy02NC1cXHRib29sXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTY3LVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWc6Njg6Y29uZmlnIFZJUlRJT19QQ0lfTEVHQUNZXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy02OS1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBsZWdhY3kgdmlydGlvIGRyYWZ0IDAuOS5YIGFuZCBvbGRlciBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy04Ny1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjg4OmNvbmZpZyBWSVJUSU9fVkRQQVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWctODktXFx0dHJpc3RhdGUgXFxcInZEUEEgZHJpdmVyIGZvciB2aXJ0aW8gZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWctMTAwLVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWc6MTAxOmNvbmZpZyBWSVJUSU9fUE1FTVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWctMTAyLVxcdHRyaXN0YXRlIFxcXCJTdXBwb3J0IGZvciB2aXJ0aW8gcG1lbSBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTExMS1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjExMjpjb25maWcgVklSVElPX0JBTExPT05cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTExMy1cXHR0cmlzdGF0ZSBcXFwiVmlydGlvIGJhbGxvb24gZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0xMjItXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZzoxMjM6Y29uZmlnIFZJUlRJT19NRU1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTEyNC1cXHR0cmlzdGF0ZSBcXFwiVmlydGlvIG1lbSBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTE0Mi1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjE0Mzpjb25maWcgVklSVElPX0lOUFVUXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0xNDQtXFx0dHJpc3RhdGUgXFxcIlZpcnRpbyBpbnB1dCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTE1Mi1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjE1Mzpjb25maWcgVklSVElPX01NSU9cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTE1NC1cXHR0cmlzdGF0ZSBcXFwiUGxhdGZvcm0gYnVzIGRyaXZlciBmb3IgbWVtb3J5IG1hcHBlZCB2aXJ0aW8gZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWctMTYyLVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWc6MTYzOmNvbmZpZyBWSVJUSU9fTU1JT19DTURMSU5FX0RFVklDRVNcXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTE2NC1cXHRib29sIFxcXCJNZW1vcnkgbWFwcGVkIHZpcnRpbyBkZXZpY2VzIHBhcmFtZXRlciBwYXJzaW5nXFxcIlxcbi0tXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0xNzMtXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZzoxNzQ6Y29uZmlnIFZJUlRJT19ETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMvdmlydGlvL0tjb25maWctMTc1LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTE4MC1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjE4MTpjb25maWcgVklSVElPX0RFQlVHXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0xODItXFx0Ym9vbCBcXFwiRGVidWcgZmFjaWxpdGllc1xcXCJcXG4tLVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWctMTkwLVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWc6MTkxOmNvbmZpZyBWSVJUSU9fUlRDXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0xOTItXFx0dHJpc3RhdGUgXFxcIlZpcnRpbyBSVEMgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZz0yMTE9Y29tbWVudCBcXFwiRW5hYmxlIFBUUF8xNTg4X0NMT0NLIGluIG9yZGVyIHRvIGVuYWJsZSBWSVJUSU9fUlRDX1BUUC5cXFwiXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTIxMy1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjIxNDpjb25maWcgVklSVElPX1JUQ19QVFBcXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTIxNS1cXHRib29sIFxcXCJWaXJ0aW8gUlRDIFBUUCBjbG9ja3NcXFwiXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTIyNC1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjIyNTpjb25maWcgVklSVElPX1JUQ19BUk1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTIyNi1cXHRib29sIFxcXCJWaXJ0aW8gUlRDIGNyb3NzLXRpbWVzdGFtcGluZyB1c2luZyBBcm0gR2VuZXJpYyBUaW1lclxcXCJcXG4tLVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWc9MjM4PWNvbW1lbnQgXFxcIkVuYWJsZSBSVENfQ0xBU1MgaW4gb3JkZXIgdG8gZW5hYmxlIFZJUlRJT19SVENfQ0xBU1MuXFxcIlxcbi0tXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0yNDAtXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZzoyNDE6Y29uZmlnIFZJUlRJT19SVENfQ0xBU1NcXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTI0Mi1cXHRib29sIFxcXCJSZWFsIFRpbWUgQ2xvY2sgZHJpdmVyIGZvciBWaXJ0aW8gUlRDXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNTowMjo1NC4xMTE5NTE2MDVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTY5NDAzOTA1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBWSVJUSU8gYW5kIFJlbGV2YW50IFN5bWJvbHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBWSVJUSU9gIGNvbmZpZ3VyYXRpb24uIEl0J3MgYSB0cmlzdGF0ZSwgYW5kIGNydWNpYWxseSwgaXQgaGFzICpubyogZGVwZW5kZW5jaWVzIG90aGVyIHRoYW4gaXRzZWxmLCB3aGljaCBtZWFucyBpdCBleGlzdHMgb24gaXRzIG93biBwbGFuZSBpbiB0aGUgY29uZmlndXJhdGlvbiB0cmVlLiBUaGF0J3MgZ29vZCB0byBrbm93LiBUaGUgaW1wbGljYXRpb24gaGVyZSBpcyB0aGF0IHdlIGhhdmUgdGhyZWUgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgVklSVElPX1ZTT0NLRVRTYCwgYFZTT0NLRVRTYCwgYW5kIGBWSVJUSU9gIGl0c2VsZi5cblxuV2FpdCwgSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgYFZJUlRJT19NRU5VYCBjb250cm9scyB2aXNpYmlsaXR5IG9mIHRoZSBtZW51LiBBbHRob3VnaCB0aGUgdGV4dCBzZWVtcyB0byBpbXBseSBgVklSVElPX01FTlVgIG11c3QgYmUgc2V0IGZvciB0aGUgbWVudSB0byBiZSB2aXNpYmxlLCBgVklSVElPYCBpcyBpbmRlcGVuZGVudCBvZiB0aGlzLCBvciBhbnkgb3RoZXIgb3B0aW9uIG90aGVyIHRoYW4gaXRzZWxmLCBhcyBpdCdzIGEgdHJpc3RhdGUuIEkgYW0gcHJldHR5IHN1cmUgYFZJUlRJT19WU09DS0VUU2AgaXMgdGhlIGtleSwgYXMgaXQgc2VsZWN0cyBgVklSVElPX1ZTT0NLRVRTX0NPTU1PTmAgYW5kIGRlcGVuZHMgb24gKmJvdGgqIGBWU09DS0VUU2AgYW5kIGBWSVJUSU9gLiBTbyBteSBwcmltYXJ5IGZvY3VzIHdpbGwgYmUgb24gdGhlIGNvbWJpbmF0aW9uLiBUaGVyZWZvcmUsIEkgd2lsbCBsaXN0IHRoZXNlOiBgVklSVElPX1ZTT0NLRVRTYCwgYFZTT0NLRVRTYCwgYW5kIGBWSVJUSU9gLlxuXG5Ob3csIG1vdmluZyBvbiB0byB0aGUgY29kZSBpdHNlbGYsIEknbSBub3Rpbmcgc3BlY2lmaWMgZnVuY3Rpb25zIHRvIGtlZXAgYW4gZXllIG9uLiBJIG5lZWQgdG8gZm9jdXMgb246IGB2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmtgLCBgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrYCwgYHZpcnRpb190cmFuc3BvcnRfcnhfd29ya2AsIGFuZCBhbHNvIGB2aXJ0aW9fdnNvY2tfcnhfZmlsbGAuIEkgd2lsbCBuZWVkIHRvIGNvbnNpZGVyIHRoZSBjb250ZXh0IG9mIHRoZXNlIGZ1bmN0aW9ucyBhbmQgaG93IHRoZXkncmUgdXNlZC5cblxuVGhlIHBhdGNoIG1vZGlmaWVzIGB2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmtgLCBgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrYCwgYW5kIGB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmtgLiBUaGF0IG1ha2VzIHNlbnNlLiBJIHdpbGwgc3RhcnQgYnkgbGlzdGluZyB0aGVzZS5cblxuSGFuZyBvbi4gVGhlcmUncyBhIGd1aWRlbGluZSBhYm91dCBwcmVmZXJyaW5nIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBUaGlzIGlzIGltcG9ydGFudC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBzdGF0aWM7IG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgdGhleSBtaWdodCBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlci4gSG93ZXZlciwgdGhlIGZ1bmN0aW9ucyBhcmUgcGFzc2VkIHRvIGBJTklUX1dPUktgLiBTaW5jZSB0aGUgY29tcGlsZXIgbmVlZHMgdG8gdGFrZSB0aGVpciBhZGRyZXNzZXMgdG8gdXNlIHRoZW0gaW4gdGhpcyBtYW5uZXIsIHRoZXkgKmNhbm5vdCogYmUgZnVsbHkgaW5saW5lZC4gVGhlIGNvbXBpbGVyIGhhcyB0byBlbWl0IHRoZWlyIGJvZHkgc29tZXdoZXJlLiBJIHNob3VsZCB0aGVyZWZvcmUgYWxzbyBsaXN0IGZ1bmN0aW9ucyB0aGF0IHF1ZXVlIHRoZSB3b3JrLiBJJ2xsIGluY2x1ZGUgYHZpcnRpb192c29ja190eF9kb25lYCwgYHZpcnRpb192c29ja19ldmVudF9kb25lYCwgYW5kIGB2aXJ0aW9fdnNvY2tfcnhfZG9uZWAuXG5cbkFoLCBhbmQgSSBzaG91bGQgYWRkIGB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0YCBhcyB3ZWxsLCBzaW5jZSB0aGF0J3MgYSBub24tc3RhdGljIGVudHJ5IHBvaW50LlxuXG5JJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIGB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0YCwgYW5kIG1ha2Ugc3VyZSBpdCBpcyBpbiBsaW5lIHdpdGggdGhlIGluc3RydWN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ5MTIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTU6MDM6MDMuODA1OTk0NjgxWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjkxMzQwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC92bXdfdnNvY2svXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTMwPXN0cnVjdCB2aXJ0aW9fdnNvY2sge1xcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNjEtXFx0LyogVGhlc2UgZmllbGRzIGFyZSB1c2VkIG9ubHkgaW4gdHggcGF0aCBpbiBmdW5jdGlvblxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjYyOlxcdCAqICd2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X3dvcmsoKScsIHNvIHRvIHNhdmVcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy02My1cXHQgKiBzdGFjayBzcGFjZSBpbiBpdCwgcGxhY2UgYm90aCBvZiB0aGVtIGhlcmUuIEVhY2hcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTE1Nz1zdGF0aWMgdm9pZFxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjE1ODp2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTE1OS17XFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz0yMzY9c3RhdGljIGludFxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjIzNzp2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy0yMzgte1xcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM9NTU3PXN0YXRpYyBzdHJ1Y3QgdmlydGlvX3RyYW5zcG9ydCB2aXJ0aW9fdHJhbnNwb3J0ID0ge1xcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNjA4LVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjYwOTpcXHQuc2VuZF9wa3QgPSB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0LFxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTYxMC1cXHQuY2FuX21zZ3plcm9jb3B5ID0gdmlydGlvX3RyYW5zcG9ydF9jYW5fbXNnemVyb2NvcHksXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz03Mjc9c3RhdGljIHZvaWQgdmlydGlvX3Zzb2NrX3Zxc19zdGFydChzdHJ1Y3QgdmlydGlvX3Zzb2NrICp2c29jaylcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTc0Mi1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzo3NDM6XFx0LyogdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdCgpIGNhbiBxdWV1ZSBwYWNrZXRzIG9uY2VcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy03NDQtXFx0ICogdGhlX3ZpcnRpb192c29jayBpcyBzZXQsIGJ1dCB0aGV5IHdvbid0IGJlIHByb2Nlc3NlZCB1bnRpbFxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM9ODAwPXN0YXRpYyBpbnQgdmlydGlvX3Zzb2NrX3Byb2JlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtODMyLVxcdElOSVRfV09SSyhcXHUwMDI2dnNvY2stXFx1MDAzZWV2ZW50X3dvcmssIHZpcnRpb190cmFuc3BvcnRfZXZlbnRfd29yayk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6ODMzOlxcdElOSVRfV09SSyhcXHUwMDI2dnNvY2stXFx1MDAzZXNlbmRfcGt0X3dvcmssIHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3Rfd29yayk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtODM0LVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTIxMj1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZpcnRpb190cmFuc3BvcnRfYWxsb2Nfc2tiKHN0cnVjdCB2aXJ0aW9fdnNvY2tfcGt0X2luZm8gKmluZm8sXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMjk4LSAqL1xcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoyOTk6c3RhdGljIGludCB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X2luZm8oc3RydWN0IHZzb2NrX3NvY2sgKnZzayxcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMzAwLVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHZpcnRpb192c29ja19wa3RfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz02NTU9c3RhdGljIGludCB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfY3JlZGl0X3VwZGF0ZShzdHJ1Y3QgdnNvY2tfc29jayAqdnNrKVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTY2Mi1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6NjYzOlxcdHJldHVybiB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X2luZm8odnNrLCBcXHUwMDI2aW5mbyk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTY2NC19XFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM9MTIwMj1pbnQgdmlydGlvX3RyYW5zcG9ydF9jb25uZWN0KHN0cnVjdCB2c29ja19zb2NrICp2c2spXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTIwOS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6MTIxMDpcXHRyZXR1cm4gdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF9pbmZvKHZzaywgXFx1MDAyNmluZm8pO1xcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMjExLX1cXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz0xMjE0PWludCB2aXJ0aW9fdHJhbnNwb3J0X3NodXRkb3duKHN0cnVjdCB2c29ja19zb2NrICp2c2ssIGludCBtb2RlKVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTEyMjUtXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jOjEyMjY6XFx0cmV0dXJuIHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RfaW5mbyh2c2ssIFxcdTAwMjZpbmZvKTtcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTIyNy19XFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM9MTI0MT12aXJ0aW9fdHJhbnNwb3J0X3N0cmVhbV9lbnF1ZXVlKHN0cnVjdCB2c29ja19zb2NrICp2c2ssXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTI1Mi1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6MTI1MzpcXHRyZXR1cm4gdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF9pbmZvKHZzaywgXFx1MDAyNmluZm8pO1xcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMjU0LX1cXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz0xMjgxPXN0YXRpYyBpbnQgdmlydGlvX3RyYW5zcG9ydF9yZXNldChzdHJ1Y3QgdnNvY2tfc29jayAqdnNrLFxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTEyOTQtXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jOjEyOTU6XFx0cmV0dXJuIHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RfaW5mbyh2c2ssIFxcdTAwMjZpbmZvKTtcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTI5Ni19XFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM9MTMwNT1zdGF0aWMgaW50IHZpcnRpb190cmFuc3BvcnRfcmVzZXRfbm9fc29jayhjb25zdCBzdHJ1Y3QgdmlydGlvX3RyYW5zcG9ydCAqdCxcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMzIxLVxcdFxcdCAqIHQtXFx1MDAzZXNlbmRfcGt0KCksIGluc3RlYWQgb2YgcmVseWluZyBvblxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoxMzIyOlxcdFxcdCAqIHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RfaW5mbygpIHRvIHBhc3MgaXQuIEl0IGlzIG5vdCBuZWVkZWRcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTMyMy1cXHRcXHQgKiBieSB2aXJ0aW9fdHJhbnNwb3J0X2FsbG9jX3NrYigpLlxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTE2NDg9dmlydGlvX3RyYW5zcG9ydF9zZW5kX3Jlc3BvbnNlKHN0cnVjdCB2c29ja19zb2NrICp2c2ssXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTY2MC1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6MTY2MTpcXHRyZXR1cm4gdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF9pbmZvKHZzaywgXFx1MDAyNmluZm8pO1xcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xNjYyLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTU6MDM6MDMuODk4OTE3MjA5WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDU4OTQzNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgYHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RgIEZ1bmN0aW9uKipcblxuSG1tLCBgdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdGAuIFRoYXQgZnVuY3Rpb24gbmFtZSByaW5ncyBhIGJlbGwuIE5vdywgaXNuJ3QgdGhhdCBzdGF0aWMgaW4gYHZpcnRpb190cmFuc3BvcnQuY2A/IEFoLCB5ZXMsIGl0IHNlZW1zIHRvIGJlIGRlY2xhcmVkIGFzIHN0YXRpYy4gTGV0IG1lIGp1c3QgY29uZmlybSB0aGF0Li4uIE9rYXksIGxldCBtZSBqdXN0IGRvdWJsZSBjaGVjayBgdmlydGlvX3RyYW5zcG9ydC5jYCBiZWNhdXNlIEkgY291bGQgc3dlYXIgaXQgd2FzLiBMaW5lIDIzNi4uLiBHb3QgaXQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3ODE1LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTU6MDM6MDcuNjQ0ODE1MjE0WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDAzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMzA6XFx0XFxuIDIzMTpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnZzb2NrLVxcdTAwM2V0eF9sb2NrKTtcXG4gMjMyOlxcdFxcbiAyMzM6XFx0XFx0cmV0dXJuIHJldDtcXG4gMjM0OlxcdH1cXG4gMjM1OlxcdFxcbiAyMzY6XFx0c3RhdGljIGludFxcbiAyMzc6XFx0dmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0ICpuZXQpXFxuIDIzODpcXHR7XFxuIDIzOTpcXHRcXHRzdHJ1Y3QgdmlydGlvX3Zzb2NrX2hkciAqaGRyO1xcbiAyNDA6XFx0XFx0c3RydWN0IHZpcnRpb192c29jayAqdnNvY2s7XFxuIDI0MTpcXHRcXHRpbnQgbGVuID0gc2tiLVxcdTAwM2VsZW47XFxuIDI0MjpcXHRcXG4gMjQzOlxcdFxcdGhkciA9IHZpcnRpb192c29ja19oZHIoc2tiKTtcXG4gMjQ0OlxcdFxcbiAyNDU6XFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbiAyNDY6XFx0XFx0dnNvY2sgPSByY3VfZGVyZWZlcmVuY2UodGhlX3ZpcnRpb192c29jayk7XFxuIDI0NzpcXHRcXHRpZiAoIXZzb2NrKSB7XFxuIDI0ODpcXHRcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gMjQ5OlxcdFxcdFxcdGxlbiA9IC1FTk9ERVY7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE1OjAzOjA3LjY0NDkyMTM2NVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTgzNDE2MjMxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgVmlydGlvLVZTb2NrIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIHBhdGNoLiBUaGUga2V5IGhlcmUgaXMgdGhhdCBpdCdzIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgbnVsbC1wb2ludGVyIGRlcmVmZXJlbmNlIHdpdGhpbiB0aGUgdmlydGlvIHZzb2NrIHdvcmtxdWV1ZSBoYW5kbGVycy4gSSBzZWUgdGhlIG1haW4gZm9jdXMgaXMgb24gYHZpcnRpb190cmFuc3BvcnRfdHhfd29ya2AsIGB2aXJ0aW9fdHJhbnNwb3J0X2V2ZW50X3dvcmtgLCBhbmQgYHZpcnRpb190cmFuc3BvcnRfcnhfd29ya2AuIFRoZXNlIGFyZSB0aGUgaGFuZGxlcnMgdGhhdCBwcm9jZXNzIHRoZSBpbmNvbWluZyBhbmQgb3V0Z29pbmcgZGF0YSwgYW5kIGV2ZW50cywgYW5kIHRoZXkncmUgdGhlIGNyaXRpY2FsIHBhdGhzIHRvIGZ1enouIFllcywgSSB1bmRlcnN0YW5kIHRoZXkncmUgc3RhdGljIGZ1bmN0aW9ucy4gQnV0IGNydWNpYWxseSwgdGhlaXIgYWRkcmVzc2VzIGFyZSB0YWtlbiBmb3IgYElOSVRfV09SS2AsIG1lYW5pbmcgdGhleSAqd29uJ3QqIGJlIGlubGluZWQgYW5kIHRoZXknbGwgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLCB3aGljaCBpcyB3aGF0IEkgbmVlZC5cblxuTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyAqZGVmaW5pdGVseSogc29tZXRoaW5nIHdlIHNob3VsZCBiZSBmdXp6aW5nIChgV29ydGhGdXp6aW5nOiB0cnVlYCkuIFRoZSBwYXRjaCBhaW1zIHRvIHN5bmNocm9uaXplIGFjY2VzcyB0byB0aGUgdmlydHF1ZXVlcyB3aXRoaW4gdGhlc2UgaGFuZGxlcnMsIHNwZWNpZmljYWxseSBlbnN1cmluZyB0aGF0IHRoZXkncmUgb25seSBhY2Nlc3NlZCB3aGVuIHRoZSByZWxldmFudCBcInJ1blwiIGZsYWcgaXMgdHJ1ZSAqaW5zaWRlIHRoZSBsb2NrKi4gVGhpcyBkaXJlY3RseSBhZGRyZXNzZXMgdGhlIHJhY2UgY29uZGl0aW9uLiBHaXZlbiB0aGF0IHZpcnRpby12c29jayBpcyBhIGNvcmUgY29tcG9uZW50IG9mdGVuIHVzZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgdGhlIGV4cG9zdXJlIGlzIGhpZ2gsIGFuZCB0aGlzIGlzIGEgZ29vZCB0YXJnZXQuXG5cbkZvciBmdXp6aW5nIGNvbmZpZ3VyYXRpb24sIEknbGwgbmVlZCB0byBlbmFibGUgYSBmZXcga2V5IG9wdGlvbnMuIEkndmUgY29uZmlybWVkIGBWSVJUSU9fVlNPQ0tFVFNgLCB3aGljaCB0aGVuIGFsc28gZW5hYmxlcyBgVlNPQ0tFVFNgIGFuZCBgVklSVElPYC4gVGhlIHVzZSBvZiBgc2VsZWN0YCBtZWFucyBJIGRvbid0IG5lZWQgdG8gZXhwbGljaXRseSBlbmFibGUgYFZJUlRJT19WU09DS0VUU19DT01NT05gLCBidXQgaXQgd29uJ3QgaHVydCB0byBhZGQgaXQgZWl0aGVyLCBzbyBJJ20gb21pdHRpbmcgaXQuXG5cbkxvb2tpbmcgYXQgdGhlIGNvZGUgbW9yZSBjbG9zZWx5LCBgdmlydGlvX3Zzb2NrX3J4X2ZpbGxgIGlzIGFsc28gbW9kaWZpZWQsIHdpdGggYSBjaGVjayBhZGRlZC4gU28sIEkgd2lsbCBpbmNsdWRlIHRoYXQgaW4gdGhlIHRhcmdldC4gSSdsbCBpbmNsdWRlIGB2aXJ0aW9fdnNvY2tfcnhfZmlsbGAgaW4gYEZvY3VzU3ltYm9sc2AuXG5cblRoZXJlZm9yZSwgbXkgZmluYWxpemVkIHN1bW1hcnkgZm9yIHRoaXMgZnV6emluZyBlZmZvcnQgaXM6XG5cbmBgYGpzb25cbntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmlydGlvX3RyYW5zcG9ydF90eF93b3JrXCIsXG4gICAgXCJ2aXJ0aW9fdHJhbnNwb3J0X2V2ZW50X3dvcmtcIixcbiAgICBcInZpcnRpb190cmFuc3BvcnRfcnhfd29ya1wiLFxuICAgIFwidmlydGlvX3Zzb2NrX3J4X2ZpbGxcIlxuICBdLFxuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVklSVElPX1ZTT0NLRVRTXCIsXG4gICAgXCJWU09DS0VUU1wiLFxuICAgIFwiVklSVElPXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB2aXJ0aW8gdnNvY2sgd29ya3F1ZXVlIGhhbmRsZXJzIChUWCwgUlgsIEV2ZW50KSBhbmQgcngtZmlsbCwgd2hlcmUgdmlydHF1ZXVlcyBjb3VsZCBiZSBhY2Nlc3NlZCBhZnRlciB0aGV5IGFyZSBubyBsb25nZXIgdmFsaWQuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUgbG9naWMgZm9yIHZpcnRpby12c29jaywgd2hpY2ggaXMgY29tbW9ubHkgdXNlZCBhbmQgZnV6emVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIlxufVxuYGBgXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MzE0LCJPdXRwdXRUb2tlbnMiOjE0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE1OjAzOjE5LjQ3OTA4NjQ1OFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzMjgwNTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSVJUSU9fVlNPQ0tFVFNcIixcbiAgICBcIlZTT0NLRVRTXCIsXG4gICAgXCJWSVJUSU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmtcIixcbiAgICBcInZpcnRpb190cmFuc3BvcnRfZXZlbnRfd29ya1wiLFxuICAgIFwidmlydGlvX3RyYW5zcG9ydF9yeF93b3JrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB2aXJ0aW8gdnNvY2sgd29ya3F1ZXVlIGhhbmRsZXJzIChUWCwgUlgsIEV2ZW50KSB3aGVyZSB2aXJ0cXVldWVzIGNvdWxkIGJlIGFjY2Vzc2VkIGFmdGVyIHRoZXkgYXJlIG5vIGxvbmdlciB2YWxpZC4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBsb2dpYyBmb3IgdmlydGlvLXZzb2NrLCB3aGljaCBpcyBjb21tb25seSB1c2VkIGFuZCBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZJUlRJT19WU09DS0VUU1wiLFxuICAgIFwiVlNPQ0tFVFNcIixcbiAgICBcIlZJUlRJT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZpcnRpb190cmFuc3BvcnRfdHhfd29ya1wiLFxuICAgIFwidmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrXCIsXG4gICAgXCJ2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHZpcnRpbyB2c29jayB3b3JrcXVldWUgaGFuZGxlcnMgKFRYLCBSWCwgRXZlbnQpIHdoZXJlIHZpcnRxdWV1ZXMgY291bGQgYmUgYWNjZXNzZWQgYWZ0ZXIgdGhleSBhcmUgbm8gbG9uZ2VyIHZhbGlkLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGxvZ2ljIGZvciB2aXJ0aW8tdnNvY2ssIHdoaWNoIGlzIGNvbW1vbmx5IHVzZWQgYW5kIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6wkd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-27 14:33:57 +0000 UTC FinishedAt: 2026-07-27 15:03:21 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "04026c998c24ac47eb76886b9790c5710b603eb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIRTIO_VSOCKETS", "VSOCKETS", "VIRTIO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "04026c998c24ac47eb76886b9790c5710b603eb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIRTIO_VSOCKETS", "VSOCKETS", "VIRTIO" ], "series_id": "f89370a8-640f-423d-9a80-36627d7f307e" }, "track": "KASAN", "fuzz": { "focus": [ "kvm", "net" ], "focus_symbols": [ "virtio_transport_tx_work", "virtio_transport_event_work", "virtio_transport_rx_work" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE1OjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJUlRJT19WU09DS0VUUyYjMzQ7LAogICAgJiMzNDtWU09DS0VUUyYjMzQ7LAogICAgJiMzNDtWSVJUSU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmsmIzM0OywKICAgICYjMzQ7dmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrJiMzNDssCiAgICAmIzM0O3ZpcnRpb190cmFuc3BvcnRfcnhfd29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHZpcnRpbyB2c29jayB3b3JrcXVldWUgaGFuZGxlcnMgKFRYLCBSWCwgRXZlbnQpIHdoZXJlIHZpcnRxdWV1ZXMgY291bGQgYmUgYWNjZXNzZWQgYWZ0ZXIgdGhleSBhcmUgbm8gbG9uZ2VyIHZhbGlkLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGxvZ2ljIGZvciB2aXJ0aW8tdnNvY2ssIHdoaWNoIGlzIGNvbW1vbmx5IHVzZWQgYW5kIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTU6MDE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlMmY5ODEwMmFmMzcwYWZlZmUwZGY2YmIwZTBiNzRmZmY3NTVmMjgzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjcgMTU6MDE6NDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMgYi9uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuY1xuaW5kZXggNTdmMmQ2ZWMzZmZjNjkuLjc5Y2YxOWY1ODk0MzlmIDEwMDY0NFxuLS0tIGEvbmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jXG5AQCAtMzQ2LDEyICYjNDM7MzQ2LDEzIEBAIHN0YXRpYyB2b2lkIHZpcnRpb190cmFuc3BvcnRfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRzdHJ1Y3QgdmlydHF1ZXVlICp2cTtcbiBcdGJvb2wgYWRkZWQgPSBmYWxzZTtcbiBcbi1cdHZxID0gdnNvY2stXHUwMDNldnFzW1ZTT0NLX1ZRX1RYXTtcbiBcdG11dGV4X2xvY2soXHUwMDI2dnNvY2stXHUwMDNldHhfbG9jayk7XG4gXG4gXHRpZiAoIXZzb2NrLVx1MDAzZXR4X3J1bilcbiBcdFx0Z290byBvdXQ7XG4gXG4mIzQzO1x0dnEgPSB2c29jay1cdTAwM2V2cXNbVlNPQ0tfVlFfVFhdO1xuJiM0MztcbiBcdGRvIHtcbiBcdFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbiBcdFx0dW5zaWduZWQgaW50IGxlbjtcbkBAIC00NTEsMTMgJiM0Mzs0NTIsMTMgQEAgc3RhdGljIHZvaWQgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB2aXJ0aW9fdnNvY2ssIGV2ZW50X3dvcmspO1xuIFx0c3RydWN0IHZpcnRxdWV1ZSAqdnE7XG4gXG4tXHR2cSA9IHZzb2NrLVx1MDAzZXZxc1tWU09DS19WUV9FVkVOVF07XG4tXG4gXHRtdXRleF9sb2NrKFx1MDAyNnZzb2NrLVx1MDAzZWV2ZW50X2xvY2spO1xuIFxuIFx0aWYgKCF2c29jay1cdTAwM2VldmVudF9ydW4pXG4gXHRcdGdvdG8gb3V0O1xuIFxuJiM0MztcdHZxID0gdnNvY2stXHUwMDNldnFzW1ZTT0NLX1ZRX0VWRU5UXTtcbiYjNDM7XG4gXHRkbyB7XG4gXHRcdHN0cnVjdCB2aXJ0aW9fdnNvY2tfZXZlbnQgKmV2ZW50O1xuIFx0XHR1bnNpZ25lZCBpbnQgbGVuO1xuQEAgLTYzNCwxMyAmIzQzOzYzNSwxMyBAQCBzdGF0aWMgdm9pZCB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IHZpcnRpb192c29jaywgcnhfd29yayk7XG4gXHRzdHJ1Y3QgdmlydHF1ZXVlICp2cTtcbiBcbi1cdHZxID0gdnNvY2stXHUwMDNldnFzW1ZTT0NLX1ZRX1JYXTtcbi1cbiBcdG11dGV4X2xvY2soXHUwMDI2dnNvY2stXHUwMDNlcnhfbG9jayk7XG4gXG4gXHRpZiAoIXZzb2NrLVx1MDAzZXJ4X3J1bilcbiBcdFx0Z290byBvdXQ7XG4gXG4mIzQzO1x0dnEgPSB2c29jay1cdTAwM2V2cXNbVlNPQ0tfVlFfUlhdO1xuJiM0MztcbiBcdGRvIHtcbiBcdFx0dmlydHF1ZXVlX2Rpc2FibGVfY2IodnEpO1xuIFx0XHRmb3IgKDs7KSB7XG5AQCAtNjg5LDcgJiM0Mzs2OTAsOCBAQCBzdGF0aWMgdm9pZCB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0fSB3aGlsZSAoIXZpcnRxdWV1ZV9lbmFibGVfY2IodnEpKTtcbiBcbiBvdXQ6XG4tXHRpZiAodnNvY2stXHUwMDNlcnhfYnVmX25yIFx1MDAzYyB2c29jay1cdTAwM2VyeF9idWZfbWF4X25yIC8gMilcbiYjNDM7XHRpZiAodnNvY2stXHUwMDNlcnhfcnVuIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICB2c29jay1cdTAwM2VyeF9idWZfbnIgXHUwMDNjIHZzb2NrLVx1MDAzZXJ4X2J1Zl9tYXhfbnIgLyAyKVxuIFx0XHR2aXJ0aW9fdnNvY2tfcnhfZmlsbCh2c29jayk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2dnNvY2stXHUwMDNlcnhfbG9jayk7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE1OjAxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSVJUSU9fVlNPQ0tFVFMmIzM0OywKICAgICYjMzQ7VlNPQ0tFVFMmIzM0OywKICAgICYjMzQ7VklSVElPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmlydGlvX3RyYW5zcG9ydF90eF93b3JrJiMzNDssCiAgICAmIzM0O3ZpcnRpb190cmFuc3BvcnRfZXZlbnRfd29yayYjMzQ7LAogICAgJiMzNDt2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB2aXJ0aW8gdnNvY2sgd29ya3F1ZXVlIGhhbmRsZXJzIChUWCwgUlgsIEV2ZW50KSB3aGVyZSB2aXJ0cXVldWVzIGNvdWxkIGJlIGFjY2Vzc2VkIGFmdGVyIHRoZXkgYXJlIG5vIGxvbmdlciB2YWxpZC4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBsb2dpYyBmb3IgdmlydGlvLXZzb2NrLCB3aGljaCBpcyBjb21tb25seSB1c2VkIGFuZCBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTJmOTgxMDJhZjM3MGFmZWZlMGRmNmJiMGUwYjc0ZmZmNzU1ZjI4MwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDI3IDE1OjAxOjQ4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMgYi9uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYwppbmRleCA1N2YyZDZlYzNmZmM2OS4uNzljZjE5ZjU4OTQzOWYgMTAwNjQ0Ci0tLSBhL25ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jCkBAIC0zNDYsMTIgJiM0MzszNDYsMTMgQEAgc3RhdGljIHZvaWQgdmlydGlvX3RyYW5zcG9ydF90eF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAlzdHJ1Y3QgdmlydHF1ZXVlICp2cTsKIAlib29sIGFkZGVkID0gZmFsc2U7CiAKLQl2cSA9IHZzb2NrLSZndDt2cXNbVlNPQ0tfVlFfVFhdOwogCW11dGV4X2xvY2soJmFtcDt2c29jay0mZ3Q7dHhfbG9jayk7CiAKIAlpZiAoIXZzb2NrLSZndDt0eF9ydW4pCiAJCWdvdG8gb3V0OwogCiYjNDM7CXZxID0gdnNvY2stJmd0O3Zxc1tWU09DS19WUV9UWF07CiYjNDM7CiAJZG8gewogCQlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwogCQl1bnNpZ25lZCBpbnQgbGVuOwpAQCAtNDUxLDEzICYjNDM7NDUyLDEzIEBAIHN0YXRpYyB2b2lkIHZpcnRpb190cmFuc3BvcnRfZXZlbnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJCWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdmlydGlvX3Zzb2NrLCBldmVudF93b3JrKTsKIAlzdHJ1Y3QgdmlydHF1ZXVlICp2cTsKIAotCXZxID0gdnNvY2stJmd0O3Zxc1tWU09DS19WUV9FVkVOVF07Ci0KIAltdXRleF9sb2NrKCZhbXA7dnNvY2stJmd0O2V2ZW50X2xvY2spOwogCiAJaWYgKCF2c29jay0mZ3Q7ZXZlbnRfcnVuKQogCQlnb3RvIG91dDsKIAomIzQzOwl2cSA9IHZzb2NrLSZndDt2cXNbVlNPQ0tfVlFfRVZFTlRdOwomIzQzOwogCWRvIHsKIAkJc3RydWN0IHZpcnRpb192c29ja19ldmVudCAqZXZlbnQ7CiAJCXVuc2lnbmVkIGludCBsZW47CkBAIC02MzQsMTMgJiM0Mzs2MzUsMTMgQEAgc3RhdGljIHZvaWQgdmlydGlvX3RyYW5zcG9ydF9yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB2aXJ0aW9fdnNvY2ssIHJ4X3dvcmspOwogCXN0cnVjdCB2aXJ0cXVldWUgKnZxOwogCi0JdnEgPSB2c29jay0mZ3Q7dnFzW1ZTT0NLX1ZRX1JYXTsKLQogCW11dGV4X2xvY2soJmFtcDt2c29jay0mZ3Q7cnhfbG9jayk7CiAKIAlpZiAoIXZzb2NrLSZndDtyeF9ydW4pCiAJCWdvdG8gb3V0OwogCiYjNDM7CXZxID0gdnNvY2stJmd0O3Zxc1tWU09DS19WUV9SWF07CiYjNDM7CiAJZG8gewogCQl2aXJ0cXVldWVfZGlzYWJsZV9jYih2cSk7CiAJCWZvciAoOzspIHsKQEAgLTY4OSw3ICYjNDM7NjkwLDggQEAgc3RhdGljIHZvaWQgdmlydGlvX3RyYW5zcG9ydF9yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAl9IHdoaWxlICghdmlydHF1ZXVlX2VuYWJsZV9jYih2cSkpOwogCiBvdXQ6Ci0JaWYgKHZzb2NrLSZndDtyeF9idWZfbnIgJmx0OyB2c29jay0mZ3Q7cnhfYnVmX21heF9uciAvIDIpCiYjNDM7CWlmICh2c29jay0mZ3Q7cnhfcnVuICZhbXA7JmFtcDsKJiM0MzsJICAgIHZzb2NrLSZndDtyeF9idWZfbnIgJmx0OyB2c29jay0mZ3Q7cnhfYnVmX21heF9uciAvIDIpCiAJCXZpcnRpb192c29ja19yeF9maWxsKHZzb2NrKTsKIAltdXRleF91bmxvY2soJmFtcDt2c29jay0mZ3Q7cnhfbG9jayk7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE1OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVmlydGlvLVZTb2NrIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdHdlYWtzIGBuZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0FoLCB0aGlzIHRvdWNoZXMgdGhlIGNvcmUgdmlydGlvLXZzb2NrIHRyYW5zcG9ydCBsYXllci4mIzM0OyBUaGUga2V5IGNoYW5nZXMgYXJlIHdpdGhpbiBgdmlydGlvX3RyYW5zcG9ydF90eF93b3JrYCwgYHZpcnRpb190cmFuc3BvcnRfZXZlbnRfd29ya2AsIGFuZCBgdmlydGlvX3RyYW5zcG9ydF9yeF93b3JrYC4gU3BlY2lmaWNhbGx5LCB0aGUgY29kZSBub3cgYXNzaWducyB0aGUgdmlydHF1ZXVlIChgdnFgKSBvbmx5ICphZnRlciogY2hlY2tpbmcgaWYgYHZzb2NrLSZndDt0eF9ydW5gIChhbmQgYGV2ZW50X3J1bmAsIGByeF9ydW5gKSBpcyB0cnVlLCBhbmQgdGhpcyBjaGVjayBvY2N1cnMgd2l0aGluIHRoZSBtdXRleCBsb2NrLiBBZGRpdGlvbmFsbHksIHRoZXJlJiMzOTtzIGEgbmV3IGNoZWNrIGZvciBgdnNvY2stJmd0O3J4X3J1bmAgYmVmb3JlIGNhbGxpbmcgYHZpcnRpb192c29ja19yeF9maWxsKHZzb2NrKTtgIGluIGB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmtgLgoKTXkgaW5pdGlhbCByZWFkIHN1Z2dlc3RzIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCDigJMgbGlrZWx5IGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlLiBUaGUgb3JpZ2luYWwgY29kZSBwb3RlbnRpYWxseSBhY2Nlc3NlZCB0aGUgdmlydHF1ZXVlIGFmdGVyIGB2c29jay0mZ3Q7dHhfcnVuYCBiZWNhbWUgZmFsc2UsIGxlYWRpbmcgdG8gaW52YWxpZCBhY2Nlc3MuIFdhaXQsIHllYWgsIGlmIGB2c29jay0mZ3Q7dHhfcnVuYCBpcyBmYWxzZSwgaXQganVtcHMgdG8gYG91dGAsIGJ1dCBgdnFgIHdhcyBhc3NpZ25lZCBhbHJlYWR5LCB0aGF0IGFjY2VzcyB0byBgdnNvY2stJmd0O3Zxc2AgY291bGQgYmUgYSBidWcuCgpOb3csIGxldCYjMzk7cyBjb25maXJtIHRoZSBzaWduaWZpY2FuY2UuIGB2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmtgLCBgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrYCwgYW5kIGB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmtgIGFyZSBkZWZpbml0ZWx5IHdvcmtxdWV1ZSBmdW5jdGlvbnMgY3JpdGljYWwgdG8gdmlydGlvLXZzb2NrJiMzOTtzIGZ1bmN0aW9uYWxpdHkuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdmlydGlvLXZzb2NrIGlzIHN1cHBvcnRlZCBpbiBRRU1VIGFuZCwgaW1wb3J0YW50bHksIGZyZXF1ZW50bHkgZnV6emVkLiBUaGF0IG1lYW5zIHRoZXNlIGZ1bmN0aW9ucyBhcmUgaGlnaC12YWx1ZSB0YXJnZXRzIGZvciBleHBsb2l0IGF0dGVtcHRzLgoKR2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgYSBzZWN1cml0eSBpc3N1ZSwgaXQmIzM5O3MgZGVmaW5pdGVseSB3b3J0aCBpbnZlc3RpZ2F0aW5nIHRob3JvdWdobHkuIFRoZSBuZXh0IHN0ZXAgaXMgdG8gbG9jYXRlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHZpcnRpby12c29jaywgbGlrZWx5IGluIGBuZXQvdm13X3Zzb2NrL0tjb25maWdgIG9yIHBvc3NpYmx5IGV2ZW4gYGRyaXZlcnMvdmhvc3QvS2NvbmZpZ2AuIExldCYjMzk7cyBjb25maXJtIHRoYXQgYnkgZ3JlcHBpbmcgZm9yIGB2aXJ0aW9fdHJhbnNwb3J0LmNgIGluIGBuZXQvdm13X3Zzb2NrL01ha2VmaWxlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aXJ0aW9fdHJhbnNwb3J0Lm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrL01ha2VmaWxlPTQ9b2JqLSQoQ09ORklHX1ZNV0FSRV9WTUNJX1ZTT0NLRVRTKSAmIzQzOz0gdm13X3Zzb2NrX3ZtY2lfdHJhbnNwb3J0Lm9cbm5ldC92bXdfdnNvY2svTWFrZWZpbGU6NTpvYmotJChDT05GSUdfVklSVElPX1ZTT0NLRVRTKSAmIzQzOz0gdm13X3Zzb2NrX3ZpcnRpb190cmFuc3BvcnQub1xubmV0L3Ztd192c29jay9NYWtlZmlsZS02LW9iai0kKENPTkZJR19WSVJUSU9fVlNPQ0tFVFNfQ09NTU9OKSAmIzQzOz0gdm13X3Zzb2NrX3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLm9cbi0tXG5uZXQvdm13X3Zzb2NrL01ha2VmaWxlPTE1PXZtd192c29ja192bWNpX3RyYW5zcG9ydC15ICYjNDM7PSB2bWNpX3RyYW5zcG9ydC5vIHZtY2lfdHJhbnNwb3J0X25vdGlmeS5vIFxcXG4tLVxubmV0L3Ztd192c29jay9NYWtlZmlsZS0xNy1cbm5ldC92bXdfdnNvY2svTWFrZWZpbGU6MTg6dm13X3Zzb2NrX3ZpcnRpb190cmFuc3BvcnQteSAmIzQzOz0gdmlydGlvX3RyYW5zcG9ydC5vXG5uZXQvdm13X3Zzb2NrL01ha2VmaWxlLTE5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE1OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MTkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIFZpcnRpby1WU09DSyBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBgQ09ORklHX1ZJUlRJT19WU09DS0VUU2AgaXMgdGhlIGtleS4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBgbmV0L3Ztd192c29jay9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgZGVmaW5pdGlvbiBhbmQgZGVwZW5kZW5jaWVzIGZvciBgVklSVElPX1ZTT0NLRVRTYCBzaG91bGQgbGl2ZS4gSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gc3ltYm9sIGlzIHByb3Blcmx5IGRlZmluZWQgYW5kIHRoYXQgaXRzIGRlcGVuZGVuY2llcywgaWYgYW55LCBhcmUgd2hhdCBJIGV4cGVjdC4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2Ugd2hldGhlciBpdCYjMzk7cyB0aWVkIHRvIHRoZSBgVklSVElPYCBmYW1pbHkgZ2VuZXJhbGx5LCBvciBwZXJoYXBzIHNwZWNpZmljIGhhcmR3YXJlIHZpcnR1YWxpemF0aW9uIHBsYXRmb3Jtcy4gSSYjMzk7bGwgYWxzbyBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIG9wdGlvbnMgb3IgZGVmYXVsdCBzZXR0aW5ncyB0aGF0IGFyZSByZWxldmFudCB0byBteSBjdXJyZW50IGludmVzdGlnYXRpb24uIEtub3dpbmcgdGhlIGNvbnRleHQgb2YgdGhlIEtjb25maWcgZmlsZSB3aWxsIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciBldmFsdWF0aW5nIGl0cyBpbXBsaWNhdGlvbnMgaW4gdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIHJ1bnRpbWUgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTU6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZJUlRJT19WU09DS0VUUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svS2NvbmZpZz00MT1jb25maWcgVk1XQVJFX1ZNQ0lfVlNPQ0tFVFNcbi0tXG5uZXQvdm13X3Zzb2NrL0tjb25maWctNTItXG5uZXQvdm13X3Zzb2NrL0tjb25maWc6NTM6Y29uZmlnIFZJUlRJT19WU09DS0VUU1xubmV0L3Ztd192c29jay9LY29uZmlnLTU0LVx0dHJpc3RhdGUgXCYjMzQ7dmlydGlvIHRyYW5zcG9ydCBmb3IgVmlydHVhbCBTb2NrZXRzXCYjMzQ7XG4tLVxubmV0L3Ztd192c29jay9LY29uZmlnLTY1LVxubmV0L3Ztd192c29jay9LY29uZmlnOjY2OmNvbmZpZyBWSVJUSU9fVlNPQ0tFVFNfQ09NTU9OXG5uZXQvdm13X3Zzb2NrL0tjb25maWctNjctXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE1OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNTEKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgVklSVElPX1ZTT0NLRVRTIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBvYmplY3RpdmUgaXMgY2xlYXI6IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YgYFZJUlRJT19WU09DS0VUU2AuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYWJvdXQgaWRlbnRpZnlpbmcgdGhlIGltbWVkaWF0ZSBwYXJlbnQsIHRob3VnaCB0aGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHRoaW5rIGFib3V0IHRoaXMgaW4gYSBsYXllcmVkIGZhc2hpb24uIFdoYXQgZG9lcyBgVklSVElPX1ZTT0NLRVRTYCByZWx5IG9uIGF0IHRoZSBoYXJkd2FyZSBsZXZlbD8gSXMgaXQgYSBzcGVjaWZpYyBWSVJUSU8gdHJhbnNwb3J0PyBJcyB0aGVyZSBhbnl0aGluZyBwbGF0Zm9ybSBzcGVjaWZpYyB0aGF0IHRoaXMgaXMgZ29pbmcgdG8gYmUgc2l0dGluZyBvbiB0b3Agb2Y/IEkgbmVlZCB0byB0aGluayBhYm91dCB3aGljaCBWSVJUSU8gc3BlYyB2ZXJzaW9uIGlzIHJlbGV2YW50LiBBcmUgdGhlcmUgYW55IGZlYXR1cmVzIEkgd291bGQgZXhwZWN0IHRvIGZpbmQgaW4gaXRzIGltcGxlbWVudGF0aW9uLCB3aGljaCBpcyBhbHNvIGdvaW5nIHRvIGFmZmVjdCB0aGUgZGVwZW5kZW5jeSBjaGFpbj8gSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIGJ1aWxkIHN5c3RlbSBkZWZpbml0aW9ucywgYW5kIHRoZSBtb2R1bGUgYnVpbGQgY29uZmlnLiBUaG9zZSBzaG91bGQgYmUgdGhlIHByaW1hcnkgc291cmNlcyBvZiB0cnV0aCB0byBzZWUgdGhlIG90aGVyIGtlcm5lbCBtb2R1bGVzLCBhbmQgZHJpdmVycyB0aGF0IGBWSVJUSU9fVlNPQ0tFVFNgIHB1bGxzIGluLCBvciBpZiBpdCBoYXMgYW55IG1vZHVsZSBvcHRpb25zLiBUaGVuIEkgbmVlZCB0byBmb2xsb3cgdGhlIHRyYWlsLiBJZiBpdCByZWZlcmVuY2VzIG90aGVyIFZJUlRJTyBkcml2ZXJzLCBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgaW50ZXJhY3Rpb25zLiBEb2VzIGl0IGludGVyYWN0IHdpdGggYSBjb3JlIFZJUlRJTyBsYXllcj8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBmb3IgSS9PIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmc/IFRoaXMgYWxzbyBtZWFucyBwb3RlbnRpYWxseSBjb25zaWRlcmluZyB0aGUgdXNlcnNwYWNlIHNpZGUsIGVzcGVjaWFsbHkgaWYgdGhpcyB1dGlsaXplcyBhIGRlZGljYXRlZCB0cmFuc3BvcnQsIGFuZCBpZiB0aGVyZSBhcmUgYW55IGFzc29jaWF0ZWQgbGlicmFyaWVzLiBVbHRpbWF0ZWx5LCBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBhcmNoaXRlY3R1cmFsIGNvbnRleHQgb2YgYFZJUlRJT19WU09DS0VUU2AgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgdmlydHVhbGl6YXRpb24gbGFuZHNjYXBlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBhbGwgdGhlIHBpZWNlcyBpdCB0b3VjaGVzIHRvIG1ha2UgaXQgd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNTA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuICA1MTpcdFx0ICB3aWxsIGJlIGNhbGxlZCB2bXdfdnNvY2tfdm1jaV90cmFuc3BvcnQuIElmIHVuc3VyZSwgc2F5IE4uXG4gIDUyOlx0XG4gIDUzOlx0Y29uZmlnIFZJUlRJT19WU09DS0VUU1xuICA1NDpcdFx0dHJpc3RhdGUgXCYjMzQ7dmlydGlvIHRyYW5zcG9ydCBmb3IgVmlydHVhbCBTb2NrZXRzXCYjMzQ7XG4gIDU1Olx0XHRkZXBlbmRzIG9uIFZTT0NLRVRTIFx1MDAyNlx1MDAyNiBWSVJUSU9cbiAgNTY6XHRcdHNlbGVjdCBWSVJUSU9fVlNPQ0tFVFNfQ09NTU9OXG4gIDU3Olx0XHRoZWxwXG4gIDU4Olx0XHQgIFRoaXMgbW9kdWxlIGltcGxlbWVudHMgYSB2aXJ0aW8gdHJhbnNwb3J0IGZvciBWaXJ0dWFsIFNvY2tldHMuXG4gIDU5Olx0XG4gIDYwOlx0XHQgIEVuYWJsZSB0aGlzIHRyYW5zcG9ydCBpZiB5b3VyIFZpcnR1YWwgTWFjaGluZSBob3N0IHN1cHBvcnRzIFZpcnR1YWxcbiAgNjE6XHRcdCAgU29ja2V0cyBvdmVyIHZpcnRpby5cbiAgNjI6XHRcbiAgNjM6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXG4gIDY0Olx0XHQgIGNhbGxlZCB2bXdfdnNvY2tfdmlydGlvX3RyYW5zcG9ydC4gSWYgdW5zdXJlLCBzYXkgTi5cbiAgNjU6XHRcbiAgNjY6XHRjb25maWcgVklSVElPX1ZTT0NLRVRTX0NPTU1PTlxuICA2NzpcdFx0dHJpc3RhdGVcbiAgNjg6XHRcdGhlbHBcbiAgNjk6XHRcdCAgVGhpcyBvcHRpb24gaXMgc2VsZWN0ZWQgYnkgYW55IGRyaXZlciB3aGljaCBuZWVkcyB0byBhY2Nlc3NcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODU4CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipEZWVwIERpdmUgaW50byBWU09DSyBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMuIFRoZSBjb3JlIGRlcGVuZGVuY2llcywgZnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBhcmUgYFZTT0NLRVRTYCBhbmQgYFZJUlRJT2AuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0JiMzOTtzIHRoZSB2aXJ0dWFsIHNvY2tldCBpbXBsZW1lbnRhdGlvbiwgbGlrZWx5IG92ZXIgdGhlIFZpcnRJTyB0cmFuc3BvcnQgbGF5ZXIuIE1ha2VzIGl0IHRoZSBvYnZpb3VzIGNob2ljZSBmb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIGBWU09DS0VUU2AgY29uZmlndXJhdGlvbiBkaXJlY3RseSB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2UuIFdoZXJlIGVsc2Ugd291bGQgaXQgYmUgZGVmaW5lZCBidXQgaW4gYG5ldC92bXdfdnNvY2svS2NvbmZpZ2A/IEl0JiMzOTtzIHRoZSBzdGFuZGFyZCBsb2NhdGlvbiBmb3IgdGhpcyBraW5kIG9mIGRldmljZS4gTGV0JiMzOTtzIHNlZSB3aGF0IGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQsIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLCBhbmQgbW9zdCBpbXBvcnRhbnRseSwgd2hhdCBvdGhlciBkZXBlbmRlbmNpZXMgYW5kIGNvbmRpdGlvbmFscyBtaWdodCBiZSBsdXJraW5nLiBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgZGV0YWlscyBvZiB0aGUgS2NvbmZpZyBmaWxlIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGltcGxlbWVudGF0aW9uIGluc2lkZSBhbmQgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFZzb2NrIHByb3RvY29sXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBWU09DS0VUU1xuICAgNzpcdFx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBTb2NrZXQgcHJvdG9jb2xcJiMzNDtcbiAgIDg6XHRcdGhlbHBcbiAgIDk6XHRcdCAgVmlydHVhbCBTb2NrZXQgUHJvdG9jb2wgaXMgYSBzb2NrZXQgcHJvdG9jb2wgc2ltaWxhciB0byBUQ1AvSVBcbiAgMTA6XHRcdCAgYWxsb3dpbmcgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIFZpcnR1YWwgTWFjaGluZXMgYW5kIGh5cGVydmlzb3JcbiAgMTE6XHRcdCAgb3IgaG9zdC5cbiAgMTI6XHRcbiAgMTM6XHRcdCAgWW91IHNob3VsZCBhbHNvIHNlbGVjdCBvbmUgb3IgbW9yZSBoeXBlcnZpc29yLXNwZWNpZmljIHRyYW5zcG9ydHNcbiAgMTQ6XHRcdCAgYmVsb3cuXG4gIDE1Olx0XG4gIDE2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAgMTc6XHRcdCAgd2lsbCBiZSBjYWxsZWQgdnNvY2suIElmIHVuc3VyZSwgc2F5IE4uXG4gIDE4Olx0XG4gIDE5Olx0Y29uZmlnIFZTT0NLRVRTX0RJQUdcbiAgMjA6XHRcdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgU29ja2V0cyBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Mzc1CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVmlydGlvIHZzb2NrIFRyYW5zcG9ydCBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYFZTT0NLRVRTYCwgYFZJUlRJT2AsIGFuZCBgVklSVElPX1ZTT0NLRVRTYC4gUmlnaHQsIGBWSVJUSU9gIGlzIGEgY29yZSBjb25maWcsIHNvIHRoYXQmIzM5O3MgZXhwZWN0ZWQuIExldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBkZXBlbmRlbmNpZXMgYXQgcGxheSBoZXJlLiBUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgbW9kaWZ5aW5nIGB2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmtgLCBgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrYCwgYW5kIGB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmtgLiBUaG9zZSBsb29rIGxpa2Ugd29ya3F1ZXVlIGZ1bmN0aW9ucywgdHJpZ2dlcmVkIHByb2JhYmx5IGJ5IHZpcnRxdWV1ZSBjYWxsYmFja3Mgb3Igb3RoZXIgZXZlbnRzLgoKV2hhdCBhcmUgdGhlIGltcG9ydGFudCBzeW1ib2xzIEkgc2hvdWxkIGJlIGZvY3VzaW5nIG9uPyBMZXQgbWUgbm90ZSB0aG9zZSBmdW5jdGlvbnMgZG93bjogYHZpcnRpb190cmFuc3BvcnRfdHhfd29ya2AsIGB2aXJ0aW9fdHJhbnNwb3J0X2V2ZW50X3dvcmtgLCBhbmQgYHZpcnRpb190cmFuc3BvcnRfcnhfd29ya2AuCgpXYWl0LCB0aGVzZSBsb29rIGxpa2Ugc3RhdGljIGZ1bmN0aW9ucy4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrLiBZdXAsIGBzdGF0aWMgdm9pZCB2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKWAsIGV0Yy4gU2luY2UgdGhleSYjMzk7cmUgc3RhdGljLCB0aGV5ICptaWdodCogbm90IGJlIHRoZSBiZXN0IGZvY3VzIHN5bWJvbHMgaWYgdGhleSYjMzk7cmUgaW5saW5lZC4gQnV0IHdhaXQsIHdvcmtxdWV1ZSBmdW5jdGlvbnMgY2FuJiMzOTt0IGJlIGlubGluZWQgYmVjYXVzZSB0aGVpciBhZGRyZXNzZXMgYXJlIHBhc3NlZCB0byBgSU5JVF9XT1JLYC4gRXhhY3RseS4gVGhlIGluc3RydWN0aW9ucyBzcGVjaWZ5IGEgcHJlZmVyZW5jZSBmb3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBIb3dldmVyLCB0aGVzZSAqYXJlKiBwYXNzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMgdG8gYElOSVRfV09SS2AsIHNvIHRoZXkgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLgoKT2theSwgdGhlc2Ugc2hvdWxkIGJlIGZpbmUsIGJ1dCBtYXliZSBJIHNob3VsZCBhbHNvIGluY2x1ZGUgdGhlIGZ1bmN0aW9ucyB0aGF0IHNjaGVkdWxlIHRoZW0sIG9yIHRoZSB2aXJ0aW8gdnNvY2sgZW50cnkgcG9pbnRzLCBqdXN0IHRvIGJlIHRob3JvdWdoLiBJIHNob3VsZCBjaGVjayBgdmlydGlvX3RyYW5zcG9ydC5jYCB0byBzZWUgd2hlcmUgdGhlc2Ugd29ya3F1ZXVlIGZ1bmN0aW9ucyBhcmUgYmVpbmcgY2FsbGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJTklUX1dPUksuKnZpcnRpb190cmFuc3BvcnRfLipfd29yayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTgwMD1zdGF0aWMgaW50IHZpcnRpb192c29ja19wcm9iZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy04MjktXHRza2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNnZzb2NrLVx1MDAzZXNlbmRfcGt0X3F1ZXVlKTtcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjgzMDpcdElOSVRfV09SSyhcdTAwMjZ2c29jay1cdTAwM2VyeF93b3JrLCB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmspO1xubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6ODMxOlx0SU5JVF9XT1JLKFx1MDAyNnZzb2NrLVx1MDAzZXR4X3dvcmssIHZpcnRpb190cmFuc3BvcnRfdHhfd29yayk7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzo4MzI6XHRJTklUX1dPUksoXHUwMDI2dnNvY2stXHUwMDNlZXZlbnRfd29yaywgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrKTtcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjgzMzpcdElOSVRfV09SSyhcdTAwMjZ2c29jay1cdTAwM2VzZW5kX3BrdF93b3JrLCB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X3dvcmspO1xubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtODM0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDI0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHVuZGVyc3RhbmRpbmcsIGZyYW1lZCBhcyBteSBvd24gdGhvdWdodHM6CgoqKlZpcnRpby1WU29jayBJbml0aWFsaXphdGlvbiBhbmQgVHJpZ2dlcmluZyoqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNraW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgdmlydGlvLXZzb2NrIGRyaXZlciBhbmQgaXRzIHRob3VnaHQgcHJvY2Vzc2VzLiBJdCBhbGwgc3RhcnRzIGluIGB2aXJ0aW9fdnNvY2tfcHJvYmVgLCB3aGljaCBtYWtlcyBzZW5zZSBhcyB0aGUgZW50cnkgcG9pbnQuIEJ1dCB3aGF0IHJlYWxseSBzZXRzIHRoZSB3aG9sZSB0aGluZyBpbiBtb3Rpb24/IEFoLCByaWdodCwgaXQmIzM5O3MgdGhlIHZpcnRxdWV1ZSBjYWxsYmFja3MuIFRob3NlIGFyZSB0aGUga2V5LiBUaGV54oCZcmUgbGlrZSB0aGUgZXZlbnQgaGFuZGxlcnMsIHRoZSB0cmlnZ2Vycy4gV2hlbiBkYXRhIGlzIGF2YWlsYWJsZSwgYSByZXF1ZXN0IGNvbXBsZXRlcywgb3Igc29tZSBvdGhlciB2aXJ0cXVldWUtcmVsYXRlZCBldmVudCBvY2N1cnMsIHRoZSBkcml2ZXImIzM5O3MgaW50ZXJuYWwgbG9naWMgd2FrZXMgdXAgYW5kIHNwcmluZ3MgdG8gYWN0aW9uLiBUaGF0JiMzOTtzIHRoZSBwcmltYXJ5IG1lY2hhbmlzbSBkcml2aW5nIHRoZSBzdGF0ZSBjaGFuZ2VzIGFuZCByZWFjdGlvbnMgb2YgdGhpcyB3aG9sZSBwcm9jZXNzLiBNYWtlcyBwZXJmZWN0IHNlbnNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtxdWV1ZV93b3JrLipfd29yayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTE1OD12aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTIxMC1cdGlmIChyZXN0YXJ0X3J4KVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6MjExOlx0XHRxdWV1ZV93b3JrKHZpcnRpb192c29ja193b3JrcXVldWUsIFx1MDAyNnZzb2NrLVx1MDAzZXJ4X3dvcmspO1xubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtMjEyLX1cbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz0yMzc9dmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtMjcwLVx0XHR2aXJ0aW9fdnNvY2tfc2tiX3F1ZXVlX3RhaWwoXHUwMDI2dnNvY2stXHUwMDNlc2VuZF9wa3RfcXVldWUsIHNrYik7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzoyNzE6XHRcdHF1ZXVlX3dvcmsodmlydGlvX3Zzb2NrX3dvcmtxdWV1ZSwgXHUwMDI2dnNvY2stXHUwMDNlc2VuZF9wa3Rfd29yayk7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy0yNzItXHR9XG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM9MjgwPXZpcnRpb190cmFuc3BvcnRfY2FuY2VsX3BrdChzdHJ1Y3QgdnNvY2tfc29jayAqdnNrKVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTMwMC1cdFx0ICAgIG5ld19jbnQgXHUwMDNjIHZpcnRxdWV1ZV9nZXRfdnJpbmdfc2l6ZShyeF92cSkpXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzozMDE6XHRcdFx0cXVldWVfd29yayh2aXJ0aW9fdnNvY2tfd29ya3F1ZXVlLCBcdTAwMjZ2c29jay1cdTAwM2VyeF93b3JrKTtcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTMwMi1cdH1cbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz0zNDI9c3RhdGljIHZvaWQgdmlydGlvX3RyYW5zcG9ydF90eF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy0zNzAtXHRpZiAoYWRkZWQpXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzozNzE6XHRcdHF1ZXVlX3dvcmsodmlydGlvX3Zzb2NrX3dvcmtxdWV1ZSwgXHUwMDI2dnNvY2stXHUwMDNlc2VuZF9wa3Rfd29yayk7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy0zNzItfVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTQ4MD1zdGF0aWMgdm9pZCB2aXJ0aW9fdnNvY2tfZXZlbnRfZG9uZShzdHJ1Y3QgdmlydHF1ZXVlICp2cSlcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy00ODUtXHRcdHJldHVybjtcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjQ4NjpcdHF1ZXVlX3dvcmsodmlydGlvX3Zzb2NrX3dvcmtxdWV1ZSwgXHUwMDI2dnNvY2stXHUwMDNlZXZlbnRfd29yayk7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy00ODctfVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTQ4OT1zdGF0aWMgdm9pZCB2aXJ0aW9fdnNvY2tfdHhfZG9uZShzdHJ1Y3QgdmlydHF1ZXVlICp2cSlcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy00OTQtXHRcdHJldHVybjtcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjQ5NTpcdHF1ZXVlX3dvcmsodmlydGlvX3Zzb2NrX3dvcmtxdWV1ZSwgXHUwMDI2dnNvY2stXHUwMDNldHhfd29yayk7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy00OTYtfVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTQ5OD1zdGF0aWMgdm9pZCB2aXJ0aW9fdnNvY2tfcnhfZG9uZShzdHJ1Y3QgdmlydHF1ZXVlICp2cSlcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy01MDMtXHRcdHJldHVybjtcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjUwNDpcdHF1ZXVlX3dvcmsodmlydGlvX3Zzb2NrX3dvcmtxdWV1ZSwgXHUwMDI2dnNvY2stXHUwMDNlcnhfd29yayk7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy01MDUtfVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTcyNz1zdGF0aWMgdm9pZCB2aXJ0aW9fdnNvY2tfdnFzX3N0YXJ0KHN0cnVjdCB2aXJ0aW9fdnNvY2sgKnZzb2NrKVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTc1MS1cdCAqL1xubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6NzUyOlx0cXVldWVfd29yayh2aXJ0aW9fdnNvY2tfd29ya3F1ZXVlLCBcdTAwMjZ2c29jay1cdTAwM2VzZW5kX3BrdF93b3JrKTtcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTc1My19XG4tLVxubmV0L3Ztd192c29jay92c29ja19sb29wYmFjay5jPTI5PXN0YXRpYyBpbnQgdnNvY2tfbG9vcGJhY2tfc2VuZF9wa3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldCAqbmV0KVxuLS1cbm5ldC92bXdfdnNvY2svdnNvY2tfbG9vcGJhY2suYy0zNC1cdHZpcnRpb192c29ja19za2JfcXVldWVfdGFpbChcdTAwMjZ2c29jay1cdTAwM2Vwa3RfcXVldWUsIHNrYik7XG5uZXQvdm13X3Zzb2NrL3Zzb2NrX2xvb3BiYWNrLmM6MzU6XHRxdWV1ZV93b3JrKHZzb2NrLVx1MDAzZXdvcmtxdWV1ZSwgXHUwMDI2dnNvY2stXHUwMDNlcGt0X3dvcmspO1xubmV0L3Ztd192c29jay92c29ja19sb29wYmFjay5jLTM2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODg2CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKklkZW50aWZ5aW5nIEtleSB2c29jayBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgdmlydHF1ZXVlIGNhbGxiYWNrcyDigJMgdGhvc2UgYXJlIHRoZSBjb3JlIG9mIGhvdyB0aGUgdnNvY2sgaW1wbGVtZW50YXRpb24gaGFuZGxlcyBkYXRhIGZsb3csIHNvIHRoZXkmIzM5O3JlIGRlZmluaXRlbHkgaW1wb3J0YW50LiBJIHNlZSB0aGVtIGFzIGB2aXJ0aW9fdnNvY2tfZXZlbnRfZG9uZWAsIGB2aXJ0aW9fdnNvY2tfdHhfZG9uZWAsIGFuZCBgdmlydGlvX3Zzb2NrX3J4X2RvbmVgLiBUaG9zZSBhcmUgdGhlIG9idmlvdXMgZm9jdXMgcG9pbnRzIGFzIGZhciBhcyB0aGUgY2FsbGJhY2sgZnVuY3Rpb25zIGFyZSBjb25jZXJuZWQuCgpCZXlvbmQgdGhvc2UsIEkgbmVlZCB0byBjb25zaWRlciB3aGVyZSB0aGUgcHJvY2Vzc2luZyBkcml2ZW4gYnkgdGhvc2UgY2FsbGJhY2tzIGFjdHVhbGx5IGhhcHBlbnMsIGFuZCBpbiB0aGlzIGNvbnRleHQsIHRoYXQgc2VlbXMgdG8gYmUgaW5zaWRlIGB2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmtgLCBgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrYCwgYW5kIGB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmtgLiBUaGVzZSBzZWVtIHRvIGJlIHRoZSBjb3JlIHRyYW5zcG9ydCBmdW5jdGlvbnMuCgpOb3csIGxldCYjMzk7cyBzZWUgaWYgd2UmIzM5O3ZlIG1pc3NlZCBhbnl0aGluZy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIG1pZ2h0IGJlIHNpZ25pZmljYW50LiBJJiMzOTttIG5vdGluZyB0aGF0IGB2aXJ0aW9fdnNvY2tfZXZlbnRfZG9uZWAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBJbnRlcmVzdGluZy4gSSBuZWVkIHRvIGtub3cgaWYgYW55IG90aGVyIGZ1bmN0aW9ucywgbGlrZSBgdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdGAsIGFyZSBhY2Nlc3NpYmxlIGZyb20gb3V0c2lkZSB0aGUgc3BlY2lmaWMgdnNvY2sgbW9kdWxlLiBJZiBgdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdGAgaXMgbm90IHN0YXRpYywgdGhhdCYjMzk7cyBhIGtleSBmdW5jdGlvbiBmb3IgbXkgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE1OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz0zMD1zdHJ1Y3QgdmlydGlvX3Zzb2NrIHtcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy02MS1cdC8qIFRoZXNlIGZpZWxkcyBhcmUgdXNlZCBvbmx5IGluIHR4IHBhdGggaW4gZnVuY3Rpb25cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjYyOlx0ICogJiMzOTt2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X3dvcmsoKSYjMzk7LCBzbyB0byBzYXZlXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy02My1cdCAqIHN0YWNrIHNwYWNlIGluIGl0LCBwbGFjZSBib3RoIG9mIHRoZW0gaGVyZS4gRWFjaFxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTE1Nz1zdGF0aWMgdm9pZFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6MTU4OnZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3Rfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy0xNTkte1xuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTIzNj1zdGF0aWMgaW50XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzoyMzc6dmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy0yMzgte1xuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTU1Nz1zdGF0aWMgc3RydWN0IHZpcnRpb190cmFuc3BvcnQgdmlydGlvX3RyYW5zcG9ydCA9IHtcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy02MDgtXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzo2MDk6XHQuc2VuZF9wa3QgPSB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0LFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNjEwLVx0LmNhbl9tc2d6ZXJvY29weSA9IHZpcnRpb190cmFuc3BvcnRfY2FuX21zZ3plcm9jb3B5LFxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTcyNz1zdGF0aWMgdm9pZCB2aXJ0aW9fdnNvY2tfdnFzX3N0YXJ0KHN0cnVjdCB2aXJ0aW9fdnNvY2sgKnZzb2NrKVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTc0Mi1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjc0MzpcdC8qIHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3QoKSBjYW4gcXVldWUgcGFja2V0cyBvbmNlXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy03NDQtXHQgKiB0aGVfdmlydGlvX3Zzb2NrIGlzIHNldCwgYnV0IHRoZXkgd29uJiMzOTt0IGJlIHByb2Nlc3NlZCB1bnRpbFxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTgwMD1zdGF0aWMgaW50IHZpcnRpb192c29ja19wcm9iZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy04MzItXHRJTklUX1dPUksoXHUwMDI2dnNvY2stXHUwMDNlZXZlbnRfd29yaywgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrKTtcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjgzMzpcdElOSVRfV09SSyhcdTAwMjZ2c29jay1cdTAwM2VzZW5kX3BrdF93b3JrLCB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X3dvcmspO1xubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtODM0LVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz0yMTI9c3RhdGljIHN0cnVjdCBza19idWZmICp2aXJ0aW9fdHJhbnNwb3J0X2FsbG9jX3NrYihzdHJ1Y3QgdmlydGlvX3Zzb2NrX3BrdF9pbmZvICppbmZvLFxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0yOTgtICovXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6Mjk5OnN0YXRpYyBpbnQgdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF9pbmZvKHN0cnVjdCB2c29ja19zb2NrICp2c2ssXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMzAwLVx0XHRcdFx0XHQgIHN0cnVjdCB2aXJ0aW9fdnNvY2tfcGt0X2luZm8gKmluZm8pXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTY1NT1zdGF0aWMgaW50IHZpcnRpb190cmFuc3BvcnRfc2VuZF9jcmVkaXRfdXBkYXRlKHN0cnVjdCB2c29ja19zb2NrICp2c2spXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTY2Mi1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzo2NjM6XHRyZXR1cm4gdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF9pbmZvKHZzaywgXHUwMDI2aW5mbyk7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtNjY0LX1cbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM9MTIwMj1pbnQgdmlydGlvX3RyYW5zcG9ydF9jb25uZWN0KHN0cnVjdCB2c29ja19zb2NrICp2c2spXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTEyMDktXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6MTIxMDpcdHJldHVybiB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X2luZm8odnNrLCBcdTAwMjZpbmZvKTtcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMjExLX1cbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM9MTIxND1pbnQgdmlydGlvX3RyYW5zcG9ydF9zaHV0ZG93bihzdHJ1Y3QgdnNvY2tfc29jayAqdnNrLCBpbnQgbW9kZSlcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTIyNS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoxMjI2Olx0cmV0dXJuIHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RfaW5mbyh2c2ssIFx1MDAyNmluZm8pO1xubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTEyMjctfVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz0xMjQxPXZpcnRpb190cmFuc3BvcnRfc3RyZWFtX2VucXVldWUoc3RydWN0IHZzb2NrX3NvY2sgKnZzayxcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTI1Mi1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoxMjUzOlx0cmV0dXJuIHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RfaW5mbyh2c2ssIFx1MDAyNmluZm8pO1xubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTEyNTQtfVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz0xMjgxPXN0YXRpYyBpbnQgdmlydGlvX3RyYW5zcG9ydF9yZXNldChzdHJ1Y3QgdnNvY2tfc29jayAqdnNrLFxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMjk0LVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jOjEyOTU6XHRyZXR1cm4gdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF9pbmZvKHZzaywgXHUwMDI2aW5mbyk7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTI5Ni19XG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTEzMDU9c3RhdGljIGludCB2aXJ0aW9fdHJhbnNwb3J0X3Jlc2V0X25vX3NvY2soY29uc3Qgc3RydWN0IHZpcnRpb190cmFuc3BvcnQgKnQsXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTEzMjEtXHRcdCAqIHQtXHUwMDNlc2VuZF9wa3QoKSwgaW5zdGVhZCBvZiByZWx5aW5nIG9uXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6MTMyMjpcdFx0ICogdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF9pbmZvKCkgdG8gcGFzcyBpdC4gSXQgaXMgbm90IG5lZWRlZFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTEzMjMtXHRcdCAqIGJ5IHZpcnRpb190cmFuc3BvcnRfYWxsb2Nfc2tiKCkuXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTE2NDg9dmlydGlvX3RyYW5zcG9ydF9zZW5kX3Jlc3BvbnNlKHN0cnVjdCB2c29ja19zb2NrICp2c2ssXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTE2NjAtXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6MTY2MTpcdHJldHVybiB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X2luZm8odnNrLCBcdTAwMjZpbmZvKTtcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xNjYyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTU6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyMzAKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBWaXJ0aW8tVlNPQ0sgV29ya3F1ZXVlIFJhY2UgQ29uZGl0aW9uIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBjb3JlIG9mIGl0IHJldm9sdmVzIGFyb3VuZCB0aG9zZSB0aHJlZSBmdW5jdGlvbnM6IGB2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmtgLCBgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrYCwgYW5kIGB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmtgLiBUaGV5JiMzOTtyZSBiZWluZyBmZWQgaW50byBgSU5JVF9XT1JLYCwgd2hpY2ggbWVhbnMgdGhleSYjMzk7cmUgc2NoZWR1bGVkIHRvIHJ1biBhc3luY2hyb25vdXNseSBpbiBhIHdvcmtxdWV1ZS4gVGhhdCYjMzk7cyBzdGFuZGFyZCBwcmFjdGljZSwgYnV0IGl0JiMzOTtzIHdoZXJlIHRoZSBwcm9ibGVtIGxpZXMuCgpUaGUgcGF0Y2ggdGFyZ2V0cyBhIHJhY2UgY29uZGl0aW9uLiBJdCBzZWVtcyB3ZSYjMzk7cmUgYWNjZXNzaW5nIGB2c29jay0mZ3Q7dnFzW1ZTT0NLX1ZRX1RYXWAgKmJlZm9yZSogY2hlY2tpbmcgYHZzb2NrLSZndDt0eF9ydW5gLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBjb25jdXJyZW5jeSBidWcsIGFuZCBpdCBtYWtlcyBwZXJmZWN0IHNlbnNlIHRoYXQgaXQgbmVlZHMgdG8gYmUgZml4ZWQuIElmIGB2c29jay0mZ3Q7dHhfcnVuYCBpcyBmYWxzZSwgaXQmIzM5O3MgYSBodWdlIHJlZCBmbGFnIGJlY2F1c2UgaXQgbWVhbnMgdGhvc2UgdmlydHF1ZXVlcywgd2hpY2ggYXJlIHZpdGFsIGZvciBjb21tdW5pY2F0aW9uLCBjb3VsZCBiZSBnb25lIOKAkyBmcmVlZCwgaW52YWxpZCwgd2hhdGV2ZXIuIFRoaXMgd2hvbGUgbWVzcyBjb3VsZCBiZSB0cmlnZ2VyZWQgYnkgZGV2aWNlIHJlbW92YWwgb3IgYSBzdXNwZW5kL3Jlc3VtZSBjeWNsZS4gVGhvc2UgZXZlbnRzIGFyZSB1c3VhbGx5IGhhbmRsZWQgYnkgc29tZSBjbGVhbnVwIG9yIHRlYXJkb3duIGZ1bmN0aW9ucy4KClNvLCB0aGUgb2J2aW91cyBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBgdmlydGlvX3Zzb2NrX3JlbW92ZWAgYW5kIGl0cyBzdXJyb3VuZGluZyBjb250ZXh0LiBXZSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB2c29jayBkZXZpY2UgaXMgcmVtb3ZlZCBvciBzdXNwZW5kZWQsIGFuZCBob3cgdGhhdCByZWxhdGVzIHRvIGB2c29jay0mZ3Q7dHhfcnVuYCBhbmQgdGhlIHN0YXRlIG9mIHRob3NlIHZpcnRxdWV1ZXMuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYHZpcnRpb192c29ja19yZW1vdmVgIHRvIHNlZSB3aGF0IGl0JiMzOTtzIGRvaW5nIHdpdGggdGhlIHZpcnRxdWV1ZXMgd2hlbiB0aGUgZGV2aWNlIGlzIGJlaW5nIHVucGx1Z2dlZCBvciBzdXNwZW5kZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE1OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZpcnRpb192c29ja19yZW1vdmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz04MDA9c3RhdGljIGludCB2aXJ0aW9fdnNvY2tfcHJvYmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtODU5LVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6ODYwOnN0YXRpYyB2b2lkIHZpcnRpb192c29ja19yZW1vdmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy04NjEte1xuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTkzOD1zdGF0aWMgc3RydWN0IHZpcnRpb19kcml2ZXIgdmlydGlvX3Zzb2NrX2RyaXZlciA9IHtcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy05NDMtXHQucHJvYmUgPSB2aXJ0aW9fdnNvY2tfcHJvYmUsXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzo5NDQ6XHQucmVtb3ZlID0gdmlydGlvX3Zzb2NrX3JlbW92ZSxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTk0NS0jaWZkZWYgQ09ORklHX1BNX1NMRUVQXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE1OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDIxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBEZWNpc2lvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBwcmV0dHkgY2xlYXI6IGBSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdCYjMzk7cyAqanVzdCogZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyBsaWtlIGAucmVtb3ZlYCwgYC5zaHV0ZG93bmAsIG9yIGBwY2lfdW5yZWdpc3Rlcl9kcml2ZXJgIHRoYXQgb25seSBydW4gZHVyaW5nIGhvdC11bnBsdWcgb3Igc3lzZnMgdW5iaW5kLiBCdXQgaG9sZCBvbiwgdGhlIHBhdGNoIHRvdWNoZXMgYHZpcnRpb190cmFuc3BvcnRfdHhfd29ya2AsIGB2aXJ0aW9fdHJhbnNwb3J0X2V2ZW50X3dvcmtgLCBhbmQgYHZpcnRpb190cmFuc3BvcnRfcnhfd29ya2AuIFRoZXNlIGFyZSBOT1QgdGVhcmRvd24gZnVuY3Rpb25zOyB0aGV5JiMzOTtyZSB0aGUgcHJpbWFyeSB3b3JrcXVldWUgaGFuZGxlcnMgZm9yIFJYL1RYL0V2ZW50LiBUaGUgYnVnICptaWdodCogbWFuaWZlc3QgZHVyaW5nIHRlYXJkb3duLCBzdXNwZW5kL3Jlc3VtZSwgb3IgcmVzZXQsIGJ1dCB0aGUgYWN0dWFsIGNvZGUgYmVpbmcgbW9kaWZpZWQgaXMgaW4gdGhlIGNvcmUgZGF0YSBwYXRoIOKAkyBSWCBhbmQgVFggd29yay4gVGhhdCBtYWtlcyB0aGlzIHBhdGNoIHByaW1lIGZvciBmdXp6aW5nLgoKTm93LCBsZXQmIzM5O3MgZGlnIGEgYml0IGRlZXBlci4gU3BlY2lmaWNhbGx5LCBpdCB0b3VjaGVzIGB2aXJ0aW9fdnNvY2tfcnhfZmlsbGAsIHdoaWNoIGdldHMgY2FsbGVkIHdpdGhpbiBgdmlydGlvX3RyYW5zcG9ydF9yeF93b3JrYC4gVGhlIHBhdGNoIGFkZHMgYHZzb2NrLSZndDtyeF9ydW4gJmFtcDsmYW1wO2AgYXMgYSBjb25kaXRpb24gYmVmb3JlIGNhbGxpbmcgYHZpcnRpb192c29ja19yeF9maWxsKHZzb2NrKWAuIFRoaXMgaXMgaW50ZXJlc3Rpbmc7IHdlIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoYXQgY29uZGl0aW9uIHNpZ25pZmllcy4KClRvIGVuc3VyZSBJIGhhdmUgYWxsIHRoZSByZWxldmFudCBzeW1ib2xzLCBJIG5lZWQgdG8gZm9jdXMgb246CiogICBgdmlydGlvX3RyYW5zcG9ydF90eF93b3JrYAoqICAgYHZpcnRpb190cmFuc3BvcnRfZXZlbnRfd29ya2AKKiAgIGB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmtgCiogICBgdmlydGlvX3Zzb2NrX3J4X2ZpbGxgCiogICBgdmlydGlvX3Zzb2NrX2V2ZW50X2RvbmVgCiogICBgdmlydGlvX3Zzb2NrX3R4X2RvbmVgCiogICBgdmlydGlvX3Zzb2NrX3J4X2RvbmVgCgpOb3csIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpZiBgdmlydGlvX3Zzb2NrX3J4X2ZpbGxgIGlzIHN0YXRpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTU6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmlydGlvX3Zzb2NrX3J4X2ZpbGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz0yODA9dmlydGlvX3RyYW5zcG9ydF9jYW5jZWxfcGt0KHN0cnVjdCB2c29ja19zb2NrICp2c2spXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtMzEwLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6MzExOnN0YXRpYyB2b2lkIHZpcnRpb192c29ja19yeF9maWxsKHN0cnVjdCB2aXJ0aW9fdnNvY2sgKnZzb2NrKVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtMzEyLXtcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz02MzI9c3RhdGljIHZvaWQgdmlydGlvX3RyYW5zcG9ydF9yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy02OTQtXHQgICAgdnNvY2stXHUwMDNlcnhfYnVmX25yIFx1MDAzYyB2c29jay1cdTAwM2VyeF9idWZfbWF4X25yIC8gMilcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjY5NTpcdFx0dmlydGlvX3Zzb2NrX3J4X2ZpbGwodnNvY2spO1xubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNjk2LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZzb2NrLVx1MDAzZXJ4X2xvY2spO1xuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTcyNz1zdGF0aWMgdm9pZCB2aXJ0aW9fdnNvY2tfdnFzX3N0YXJ0KHN0cnVjdCB2aXJ0aW9fdnNvY2sgKnZzb2NrKVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTczMy1cdG11dGV4X2xvY2soXHUwMDI2dnNvY2stXHUwMDNlcnhfbG9jayk7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzo3MzQ6XHR2aXJ0aW9fdnNvY2tfcnhfZmlsbCh2c29jayk7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy03MzUtXHR2c29jay1cdTAwM2VyeF9ydW4gPSB0cnVlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjIyMQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRhcmdldCBGdW5jdGlvbnMgYW5kIENvbmZpZ3VyYXRpb25zKioKCk9rYXksIHNvIHRoaXMgaXMgc3RhdGljLCB3aGljaCBtZWFucyBJIHNob3VsZCBob25lIGluIG9uIHRoZSBjb3JlIHN5bWJvbHM6IHRoZSB3b3JrIGZ1bmN0aW9ucyBhbmQgdGhlIHZpcnRxdWV1ZSBjYWxsYmFja3MuIFNpbmNlIHRoZSB3b3JrIGZ1bmN0aW9ucyBhcmUgcGFzc2VkIHRvIGBJTklUX1dPUktgLCB0aGV5IGhhdmUgZGlzdGluY3QgYWRkcmVzc2VzIGFuZCBhcmVuJiMzOTt0IGlubGluZWQsIHdoaWNoIG1ha2VzIHRoZW0gcHJpbWUgdGFyZ2V0cy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGxvb2tpbmcgYXQgYHZpcnRpb190cmFuc3BvcnRfdHhfd29ya2AsIGB2aXJ0aW9fdHJhbnNwb3J0X2V2ZW50X3dvcmtgLCBhbmQgYHZpcnRpb190cmFuc3BvcnRfcnhfd29ya2AuCgpOb3csIGxldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGFsc28gYmUgcmVsZXZhbnQsIGp1c3QgdG8gYmUgdGhvcm91Z2guIEkmIzM5O20gdGhpbmtpbmcgb2YgYHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RgLCBgdmlydGlvX3RyYW5zcG9ydF9jYW5jZWxfcGt0YCwgYHZpcnRpb190cmFuc3BvcnRfY29ubmVjdGAsIGB2aXJ0aW9fdHJhbnNwb3J0X3NodXRkb3duYCwgYHZpcnRpb190cmFuc3BvcnRfc3RyZWFtX2VucXVldWVgLCBgdmlydGlvX3RyYW5zcG9ydF9yZXNldGAsIGFuZCBgdmlydGlvX3RyYW5zcG9ydF9zZW5kX3Jlc3BvbnNlYC4KCkhvd2V2ZXIsIHRoZSBwYXRjaCAqc3BlY2lmaWNhbGx5KiBtb2RpZmllcyB0aGUgd29ya3F1ZXVlIGhhbmRsZXJzLCBzbyBJJiMzOTtsbCBwcmlvcml0aXplIGluY2x1ZGluZyB0aGUgd29ya3F1ZXVlIGhhbmRsZXJzIGFzIG15IGZvY3VzIHN5bWJvbHMuCgpNb3Zpbmcgb24gdG8gdGhlIGNvbmZpZ3VyYXRpb25zLCBJIG5lZWQgdG8gbGlzdCB0aGUgcmVsZXZhbnQgb25lcy4gSSYjMzk7bSBzZWVpbmcgYFZJUlRJT19WU09DS0VUU2AsIGBWU09DS0VUU2AsIGFuZCBgVklSVElPYC4gV2FpdCBhIG1pbnV0ZSwgYFZJUlRJT19WU09DS0VUU2AgKmRlcGVuZHMqIG9uIGJvdGggYFZTT0NLRVRTYCBhbmQgYFZJUlRJT2AuIFNvIEkgc2hvdWxkIGxpc3QgdGhlbSBpbiB0aGF0IG9yZGVyIG9mIGRlcGVuZGVuY3kuIEkgc2hvdWxkIGFsc28gY2hlY2sgaWYgYFZJUlRJT19WU09DS0VUU19DT01NT05gIGlzIG5lY2Vzc2FyeS4gU2luY2UgaXQmIzM5O3Mgc2VsZWN0ZWQgYnkgYFZJUlRJT19WU09DS0VUU2AsIGl0IGNvdWxkIGJlIHVzZWZ1bCB0byBpbmNsdWRlIGFzIHdlbGwuCgpUbyBiZSBzdXJlLCBJJiMzOTtsbCBkb3VibGUtY2hlY2sgYFZJUlRJT19WU09DS0VUU2AgaW4gYG5ldC92bXdfdnNvY2svS2NvbmZpZ2AuIFJpZ2h0LCBpdCBkZXBlbmRzIG9uIGBWU09DS0VUU2AgYW5kIGBWSVJUSU9gIGFuZCBzZWxlY3RzIGBWSVJUSU9fVlNPQ0tFVFNfQ09NTU9OYC4gVGhhdCBjb25maXJtcyB0aGF0IGBWSVJUSU9fVlNPQ0tFVFNgIGlzIHRoZSBwcmltYXJ5IGNvbmZpZy4gTm93IEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgaWYgYFZTT0NLRVRTYCBpdHNlbGYgaGFzIGFueSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE1OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWU09DS0VUUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svS2NvbmZpZy01LVxubmV0L3Ztd192c29jay9LY29uZmlnOjY6Y29uZmlnIFZTT0NLRVRTXG5uZXQvdm13X3Zzb2NrL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgU29ja2V0IHByb3RvY29sXCYjMzQ7XG4tLVxubmV0L3Ztd192c29jay9LY29uZmlnLTE4LVxubmV0L3Ztd192c29jay9LY29uZmlnOjE5OmNvbmZpZyBWU09DS0VUU19ESUFHXG5uZXQvdm13X3Zzb2NrL0tjb25maWctMjAtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIFNvY2tldHMgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQvdm13X3Zzb2NrL0tjb25maWctMjgtXG5uZXQvdm13X3Zzb2NrL0tjb25maWc6Mjk6Y29uZmlnIFZTT0NLRVRTX0xPT1BCQUNLXG5uZXQvdm13X3Zzb2NrL0tjb25maWctMzAtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIFNvY2tldHMgbG9vcGJhY2sgdHJhbnNwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE1OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMzMzCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZvciBhbiBleHBlcnQgbGlrZSBteXNlbGY6CgoqKkRlcGVuZGVuY3kgQW5hbHlzaXM6IFZTT0NLRVRTIGFuZCBWSVJUSU8qKgoKUmlnaHQsIHNvLCBmaXJzdCB0aGluZ3MgZmlyc3QsIGBWU09DS0VUU2AgaXMgYmVhdXRpZnVsbHkgc2VsZi1jb250YWluZWQuIE5vIGV4dGVybmFsIGxpYnJhcmllcywgbm8gdW5kZXJseWluZyBmcmFtZXdvcmtzIEkgbmVlZCB0byB3b3JyeSBhYm91dCDigJMgaXQmIzM5O3MgY2xlYW4gYW5kIGVmZmljaWVudCBmcm9tIGEgZGVwZW5kZW5jeSBwZXJzcGVjdGl2ZSwgd2hpY2ggaXMgYWx3YXlzIGEgd2luIGluIHRoaXMgZ2FtZS4KCk5vdywgdGhhdCBicmluZ3MgbWUgdG8gYFZJUlRJT2AuIEdvdHRhIHF1aWNrbHkgcmVmcmVzaCBteSBtZW50YWwgbWFwIG9mIGl0cyBlY29zeXN0ZW0uIEkgbmVlZCB0byBydW4gYSBxdWljayBtZW50YWwgY2hlY2tsaXN0IHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZzogQXJlIHRoZXJlIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzIGx1cmtpbmcgd2l0aGluIHRoZSBgVklSVElPYCBhcmNoaXRlY3R1cmU/IElzIGl0IHN0YW5kaW5nIG9uIGl0cyBvd24sIG9yIGRvZXMgaXQgcmVseSBvbiBzdXBwb3J0aW5nIGxpYnJhcmllcyBvciB1bmRlcmx5aW5nIGhhcmR3YXJlIGZlYXR1cmVzIHRvIGZ1bmN0aW9uPyBOZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTU6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZJUlRJTyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlydGlvLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZpcnRpby9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjI6Y29uZmlnIFZJUlRJT19BTkNIT1JcbmRyaXZlcnMvdmlydGlvL0tjb25maWctMy1cdGJvb2xcbmRyaXZlcnMvdmlydGlvL0tjb25maWctNC1cbmRyaXZlcnMvdmlydGlvL0tjb25maWc6NTpjb25maWcgVklSVElPXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTYtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvdmlydGlvL0tjb25maWctMTItXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjEzOmNvbmZpZyBWSVJUSU9fUENJX0xJQlxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0xNC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0yMC1cbmRyaXZlcnMvdmlydGlvL0tjb25maWc6MjE6Y29uZmlnIFZJUlRJT19QQ0lfTElCX0xFR0FDWVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0yMi1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0yOS1cbmRyaXZlcnMvdmlydGlvL0tjb25maWc6MzA6bWVudWNvbmZpZyBWSVJUSU9fTUVOVVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7VmlydGlvIGRyaXZlcnNcJiMzNDtcbi0tXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnPTM0PWlmIFZJUlRJT19NRU5VXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTM1LVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZzozNjpjb25maWcgVklSVElPX0hBUkRFTl9OT1RJRklDQVRJT05cbmRyaXZlcnMvdmlydGlvL0tjb25maWctMzctICAgICAgICBib29sIFwmIzM0O0hhcmRlbiB2aXJ0aW8gbm90aWZpY2F0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy00OS1cbmRyaXZlcnMvdmlydGlvL0tjb25maWc6NTA6Y29uZmlnIFZJUlRJT19QQ0lcbmRyaXZlcnMvdmlydGlvL0tjb25maWctNTEtXHR0cmlzdGF0ZSBcJiMzNDtQQ0kgZHJpdmVyIGZvciB2aXJ0aW8gZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvdmlydGlvL0tjb25maWctNjItXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjYzOmNvbmZpZyBWSVJUSU9fUENJX0FETUlOX0xFR0FDWVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy02NC1cdGJvb2xcbi0tXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTY3LVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZzo2ODpjb25maWcgVklSVElPX1BDSV9MRUdBQ1lcbmRyaXZlcnMvdmlydGlvL0tjb25maWctNjktXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIGxlZ2FjeSB2aXJ0aW8gZHJhZnQgMC45LlggYW5kIG9sZGVyIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTg3LVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZzo4ODpjb25maWcgVklSVElPX1ZEUEFcbmRyaXZlcnMvdmlydGlvL0tjb25maWctODktXHR0cmlzdGF0ZSBcJiMzNDt2RFBBIGRyaXZlciBmb3IgdmlydGlvIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTEwMC1cbmRyaXZlcnMvdmlydGlvL0tjb25maWc6MTAxOmNvbmZpZyBWSVJUSU9fUE1FTVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0xMDItXHR0cmlzdGF0ZSBcJiMzNDtTdXBwb3J0IGZvciB2aXJ0aW8gcG1lbSBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTExMS1cbmRyaXZlcnMvdmlydGlvL0tjb25maWc6MTEyOmNvbmZpZyBWSVJUSU9fQkFMTE9PTlxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0xMTMtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0aW8gYmFsbG9vbiBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTEyMi1cbmRyaXZlcnMvdmlydGlvL0tjb25maWc6MTIzOmNvbmZpZyBWSVJUSU9fTUVNXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTEyNC1cdHRyaXN0YXRlIFwmIzM0O1ZpcnRpbyBtZW0gZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0xNDItXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjE0Mzpjb25maWcgVklSVElPX0lOUFVUXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTE0NC1cdHRyaXN0YXRlIFwmIzM0O1ZpcnRpbyBpbnB1dCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTE1Mi1cbmRyaXZlcnMvdmlydGlvL0tjb25maWc6MTUzOmNvbmZpZyBWSVJUSU9fTU1JT1xuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0xNTQtXHR0cmlzdGF0ZSBcJiMzNDtQbGF0Zm9ybSBidXMgZHJpdmVyIGZvciBtZW1vcnkgbWFwcGVkIHZpcnRpbyBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0xNjItXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjE2Mzpjb25maWcgVklSVElPX01NSU9fQ01ETElORV9ERVZJQ0VTXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTE2NC1cdGJvb2wgXCYjMzQ7TWVtb3J5IG1hcHBlZCB2aXJ0aW8gZGV2aWNlcyBwYXJhbWV0ZXIgcGFyc2luZ1wmIzM0O1xuLS1cbmRyaXZlcnMvdmlydGlvL0tjb25maWctMTczLVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZzoxNzQ6Y29uZmlnIFZJUlRJT19ETUFfU0hBUkVEX0JVRkZFUlxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0xNzUtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvdmlydGlvL0tjb25maWctMTgwLVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZzoxODE6Y29uZmlnIFZJUlRJT19ERUJVR1xuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0xODItXHRib29sIFwmIzM0O0RlYnVnIGZhY2lsaXRpZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTE5MC1cbmRyaXZlcnMvdmlydGlvL0tjb25maWc6MTkxOmNvbmZpZyBWSVJUSU9fUlRDXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTE5Mi1cdHRyaXN0YXRlIFwmIzM0O1ZpcnRpbyBSVEMgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZz0yMTE9Y29tbWVudCBcJiMzNDtFbmFibGUgUFRQXzE1ODhfQ0xPQ0sgaW4gb3JkZXIgdG8gZW5hYmxlIFZJUlRJT19SVENfUFRQLlwmIzM0O1xuLS1cbmRyaXZlcnMvdmlydGlvL0tjb25maWctMjEzLVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZzoyMTQ6Y29uZmlnIFZJUlRJT19SVENfUFRQXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTIxNS1cdGJvb2wgXCYjMzQ7VmlydGlvIFJUQyBQVFAgY2xvY2tzXCYjMzQ7XG4tLVxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0yMjQtXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjIyNTpjb25maWcgVklSVElPX1JUQ19BUk1cbmRyaXZlcnMvdmlydGlvL0tjb25maWctMjI2LVx0Ym9vbCBcJiMzNDtWaXJ0aW8gUlRDIGNyb3NzLXRpbWVzdGFtcGluZyB1c2luZyBBcm0gR2VuZXJpYyBUaW1lclwmIzM0O1xuLS1cbmRyaXZlcnMvdmlydGlvL0tjb25maWc9MjM4PWNvbW1lbnQgXCYjMzQ7RW5hYmxlIFJUQ19DTEFTUyBpbiBvcmRlciB0byBlbmFibGUgVklSVElPX1JUQ19DTEFTUy5cJiMzNDtcbi0tXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTI0MC1cbmRyaXZlcnMvdmlydGlvL0tjb25maWc6MjQxOmNvbmZpZyBWSVJUSU9fUlRDX0NMQVNTXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTI0Mi1cdGJvb2wgXCYjMzQ7UmVhbCBUaW1lIENsb2NrIGRyaXZlciBmb3IgVmlydGlvIFJUQ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDkxMgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBWSVJUSU8gYW5kIFJlbGV2YW50IFN5bWJvbHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYFZJUlRJT2AgY29uZmlndXJhdGlvbi4gSXQmIzM5O3MgYSB0cmlzdGF0ZSwgYW5kIGNydWNpYWxseSwgaXQgaGFzICpubyogZGVwZW5kZW5jaWVzIG90aGVyIHRoYW4gaXRzZWxmLCB3aGljaCBtZWFucyBpdCBleGlzdHMgb24gaXRzIG93biBwbGFuZSBpbiB0aGUgY29uZmlndXJhdGlvbiB0cmVlLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdy4gVGhlIGltcGxpY2F0aW9uIGhlcmUgaXMgdGhhdCB3ZSBoYXZlIHRocmVlIGNvbmZpZ3VyYXRpb24gb3B0aW9uczogYFZJUlRJT19WU09DS0VUU2AsIGBWU09DS0VUU2AsIGFuZCBgVklSVElPYCBpdHNlbGYuCgpXYWl0LCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBgVklSVElPX01FTlVgIGNvbnRyb2xzIHZpc2liaWxpdHkgb2YgdGhlIG1lbnUuIEFsdGhvdWdoIHRoZSB0ZXh0IHNlZW1zIHRvIGltcGx5IGBWSVJUSU9fTUVOVWAgbXVzdCBiZSBzZXQgZm9yIHRoZSBtZW51IHRvIGJlIHZpc2libGUsIGBWSVJUSU9gIGlzIGluZGVwZW5kZW50IG9mIHRoaXMsIG9yIGFueSBvdGhlciBvcHRpb24gb3RoZXIgdGhhbiBpdHNlbGYsIGFzIGl0JiMzOTtzIGEgdHJpc3RhdGUuIEkgYW0gcHJldHR5IHN1cmUgYFZJUlRJT19WU09DS0VUU2AgaXMgdGhlIGtleSwgYXMgaXQgc2VsZWN0cyBgVklSVElPX1ZTT0NLRVRTX0NPTU1PTmAgYW5kIGRlcGVuZHMgb24gKmJvdGgqIGBWU09DS0VUU2AgYW5kIGBWSVJUSU9gLiBTbyBteSBwcmltYXJ5IGZvY3VzIHdpbGwgYmUgb24gdGhlIGNvbWJpbmF0aW9uLiBUaGVyZWZvcmUsIEkgd2lsbCBsaXN0IHRoZXNlOiBgVklSVElPX1ZTT0NLRVRTYCwgYFZTT0NLRVRTYCwgYW5kIGBWSVJUSU9gLgoKTm93LCBtb3Zpbmcgb24gdG8gdGhlIGNvZGUgaXRzZWxmLCBJJiMzOTttIG5vdGluZyBzcGVjaWZpYyBmdW5jdGlvbnMgdG8ga2VlcCBhbiBleWUgb24uIEkgbmVlZCB0byBmb2N1cyBvbjogYHZpcnRpb190cmFuc3BvcnRfdHhfd29ya2AsIGB2aXJ0aW9fdHJhbnNwb3J0X2V2ZW50X3dvcmtgLCBgdmlydGlvX3RyYW5zcG9ydF9yeF93b3JrYCwgYW5kIGFsc28gYHZpcnRpb192c29ja19yeF9maWxsYC4gSSB3aWxsIG5lZWQgdG8gY29uc2lkZXIgdGhlIGNvbnRleHQgb2YgdGhlc2UgZnVuY3Rpb25zIGFuZCBob3cgdGhleSYjMzk7cmUgdXNlZC4KClRoZSBwYXRjaCBtb2RpZmllcyBgdmlydGlvX3RyYW5zcG9ydF90eF93b3JrYCwgYHZpcnRpb190cmFuc3BvcnRfZXZlbnRfd29ya2AsIGFuZCBgdmlydGlvX3RyYW5zcG9ydF9yeF93b3JrYC4gVGhhdCBtYWtlcyBzZW5zZS4gSSB3aWxsIHN0YXJ0IGJ5IGxpc3RpbmcgdGhlc2UuCgpIYW5nIG9uLiBUaGVyZSYjMzk7cyBhIGd1aWRlbGluZSBhYm91dCBwcmVmZXJyaW5nIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBUaGlzIGlzIGltcG9ydGFudC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBzdGF0aWM7IG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgdGhleSBtaWdodCBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlci4gSG93ZXZlciwgdGhlIGZ1bmN0aW9ucyBhcmUgcGFzc2VkIHRvIGBJTklUX1dPUktgLiBTaW5jZSB0aGUgY29tcGlsZXIgbmVlZHMgdG8gdGFrZSB0aGVpciBhZGRyZXNzZXMgdG8gdXNlIHRoZW0gaW4gdGhpcyBtYW5uZXIsIHRoZXkgKmNhbm5vdCogYmUgZnVsbHkgaW5saW5lZC4gVGhlIGNvbXBpbGVyIGhhcyB0byBlbWl0IHRoZWlyIGJvZHkgc29tZXdoZXJlLiBJIHNob3VsZCB0aGVyZWZvcmUgYWxzbyBsaXN0IGZ1bmN0aW9ucyB0aGF0IHF1ZXVlIHRoZSB3b3JrLiBJJiMzOTtsbCBpbmNsdWRlIGB2aXJ0aW9fdnNvY2tfdHhfZG9uZWAsIGB2aXJ0aW9fdnNvY2tfZXZlbnRfZG9uZWAsIGFuZCBgdmlydGlvX3Zzb2NrX3J4X2RvbmVgLgoKQWgsIGFuZCBJIHNob3VsZCBhZGQgYHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RgIGFzIHdlbGwsIHNpbmNlIHRoYXQmIzM5O3MgYSBub24tc3RhdGljIGVudHJ5IHBvaW50LgoKSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgYHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RgLCBhbmQgbWFrZSBzdXJlIGl0IGlzIGluIGxpbmUgd2l0aCB0aGUgaW5zdHJ1Y3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3Ztd192c29jay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM9MzA9c3RydWN0IHZpcnRpb192c29jayB7XG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNjEtXHQvKiBUaGVzZSBmaWVsZHMgYXJlIHVzZWQgb25seSBpbiB0eCBwYXRoIGluIGZ1bmN0aW9uXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzo2MjpcdCAqICYjMzk7dmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF93b3JrKCkmIzM5Oywgc28gdG8gc2F2ZVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNjMtXHQgKiBzdGFjayBzcGFjZSBpbiBpdCwgcGxhY2UgYm90aCBvZiB0aGVtIGhlcmUuIEVhY2hcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz0xNTc9c3RhdGljIHZvaWRcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjE1ODp2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtMTU5LXtcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz0yMzY9c3RhdGljIGludFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6MjM3OnZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldCAqbmV0KVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtMjM4LXtcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz01NTc9c3RhdGljIHN0cnVjdCB2aXJ0aW9fdHJhbnNwb3J0IHZpcnRpb190cmFuc3BvcnQgPSB7XG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNjA4LVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6NjA5Olx0LnNlbmRfcGt0ID0gdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdCxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTYxMC1cdC5jYW5fbXNnemVyb2NvcHkgPSB2aXJ0aW9fdHJhbnNwb3J0X2Nhbl9tc2d6ZXJvY29weSxcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz03Mjc9c3RhdGljIHZvaWQgdmlydGlvX3Zzb2NrX3Zxc19zdGFydChzdHJ1Y3QgdmlydGlvX3Zzb2NrICp2c29jaylcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy03NDItXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzo3NDM6XHQvKiB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0KCkgY2FuIHF1ZXVlIHBhY2tldHMgb25jZVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNzQ0LVx0ICogdGhlX3ZpcnRpb192c29jayBpcyBzZXQsIGJ1dCB0aGV5IHdvbiYjMzk7dCBiZSBwcm9jZXNzZWQgdW50aWxcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz04MDA9c3RhdGljIGludCB2aXJ0aW9fdnNvY2tfcHJvYmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtODMyLVx0SU5JVF9XT1JLKFx1MDAyNnZzb2NrLVx1MDAzZWV2ZW50X3dvcmssIHZpcnRpb190cmFuc3BvcnRfZXZlbnRfd29yayk7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzo4MzM6XHRJTklUX1dPUksoXHUwMDI2dnNvY2stXHUwMDNlc2VuZF9wa3Rfd29yaywgdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF93b3JrKTtcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTgzNC1cbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM9MjEyPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdmlydGlvX3RyYW5zcG9ydF9hbGxvY19za2Ioc3RydWN0IHZpcnRpb192c29ja19wa3RfaW5mbyAqaW5mbyxcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMjk4LSAqL1xubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jOjI5OTpzdGF0aWMgaW50IHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RfaW5mbyhzdHJ1Y3QgdnNvY2tfc29jayAqdnNrLFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTMwMC1cdFx0XHRcdFx0ICBzdHJ1Y3QgdmlydGlvX3Zzb2NrX3BrdF9pbmZvICppbmZvKVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz02NTU9c3RhdGljIGludCB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfY3JlZGl0X3VwZGF0ZShzdHJ1Y3QgdnNvY2tfc29jayAqdnNrKVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy02NjItXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6NjYzOlx0cmV0dXJuIHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RfaW5mbyh2c2ssIFx1MDAyNmluZm8pO1xubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTY2NC19XG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTEyMDI9aW50IHZpcnRpb190cmFuc3BvcnRfY29ubmVjdChzdHJ1Y3QgdnNvY2tfc29jayAqdnNrKVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMjA5LVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jOjEyMTA6XHRyZXR1cm4gdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF9pbmZvKHZzaywgXHUwMDI2aW5mbyk7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTIxMS19XG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTEyMTQ9aW50IHZpcnRpb190cmFuc3BvcnRfc2h1dGRvd24oc3RydWN0IHZzb2NrX3NvY2sgKnZzaywgaW50IG1vZGUpXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTEyMjUtXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6MTIyNjpcdHJldHVybiB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X2luZm8odnNrLCBcdTAwMjZpbmZvKTtcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMjI3LX1cbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM9MTI0MT12aXJ0aW9fdHJhbnNwb3J0X3N0cmVhbV9lbnF1ZXVlKHN0cnVjdCB2c29ja19zb2NrICp2c2ssXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTEyNTItXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6MTI1MzpcdHJldHVybiB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X2luZm8odnNrLCBcdTAwMjZpbmZvKTtcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMjU0LX1cbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM9MTI4MT1zdGF0aWMgaW50IHZpcnRpb190cmFuc3BvcnRfcmVzZXQoc3RydWN0IHZzb2NrX3NvY2sgKnZzayxcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTI5NC1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoxMjk1Olx0cmV0dXJuIHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RfaW5mbyh2c2ssIFx1MDAyNmluZm8pO1xubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTEyOTYtfVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz0xMzA1PXN0YXRpYyBpbnQgdmlydGlvX3RyYW5zcG9ydF9yZXNldF9ub19zb2NrKGNvbnN0IHN0cnVjdCB2aXJ0aW9fdHJhbnNwb3J0ICp0LFxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMzIxLVx0XHQgKiB0LVx1MDAzZXNlbmRfcGt0KCksIGluc3RlYWQgb2YgcmVseWluZyBvblxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jOjEzMjI6XHRcdCAqIHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RfaW5mbygpIHRvIHBhc3MgaXQuIEl0IGlzIG5vdCBuZWVkZWRcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMzIzLVx0XHQgKiBieSB2aXJ0aW9fdHJhbnNwb3J0X2FsbG9jX3NrYigpLlxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz0xNjQ4PXZpcnRpb190cmFuc3BvcnRfc2VuZF9yZXNwb25zZShzdHJ1Y3QgdnNvY2tfc29jayAqdnNrLFxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xNjYwLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jOjE2NjE6XHRyZXR1cm4gdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF9pbmZvKHZzaywgXHUwMDI2aW5mbyk7XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTY2Mi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE1OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3ODE1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBgdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdGAgRnVuY3Rpb24qKgoKSG1tLCBgdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdGAuIFRoYXQgZnVuY3Rpb24gbmFtZSByaW5ncyBhIGJlbGwuIE5vdywgaXNuJiMzOTt0IHRoYXQgc3RhdGljIGluIGB2aXJ0aW9fdHJhbnNwb3J0LmNgPyBBaCwgeWVzLCBpdCBzZWVtcyB0byBiZSBkZWNsYXJlZCBhcyBzdGF0aWMuIExldCBtZSBqdXN0IGNvbmZpcm0gdGhhdC4uLiBPa2F5LCBsZXQgbWUganVzdCBkb3VibGUgY2hlY2sgYHZpcnRpb190cmFuc3BvcnQuY2AgYmVjYXVzZSBJIGNvdWxkIHN3ZWFyIGl0IHdhcy4gTGluZSAyMzYuLi4gR290IGl0IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMzA6XHRcbiAyMzE6XHRcdG11dGV4X3VubG9jayhcdTAwMjZ2c29jay1cdTAwM2V0eF9sb2NrKTtcbiAyMzI6XHRcbiAyMzM6XHRcdHJldHVybiByZXQ7XG4gMjM0Olx0fVxuIDIzNTpcdFxuIDIzNjpcdHN0YXRpYyBpbnRcbiAyMzc6XHR2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldClcbiAyMzg6XHR7XG4gMjM5Olx0XHRzdHJ1Y3QgdmlydGlvX3Zzb2NrX2hkciAqaGRyO1xuIDI0MDpcdFx0c3RydWN0IHZpcnRpb192c29jayAqdnNvY2s7XG4gMjQxOlx0XHRpbnQgbGVuID0gc2tiLVx1MDAzZWxlbjtcbiAyNDI6XHRcbiAyNDM6XHRcdGhkciA9IHZpcnRpb192c29ja19oZHIoc2tiKTtcbiAyNDQ6XHRcbiAyNDU6XHRcdHJjdV9yZWFkX2xvY2soKTtcbiAyNDY6XHRcdHZzb2NrID0gcmN1X2RlcmVmZXJlbmNlKHRoZV92aXJ0aW9fdnNvY2spO1xuIDI0NzpcdFx0aWYgKCF2c29jaykge1xuIDI0ODpcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiAyNDk6XHRcdFx0bGVuID0gLUVOT0RFVjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTU6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgzMTQKCQkJCQkJCW91dHB1dDogMTQ0CgkJCQkJCQl0aG91Z2h0czogNjI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBWaXJ0aW8tVlNvY2sgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBkaWdnaW5nIGludG8gdGhpcyBwYXRjaC4gVGhlIGtleSBoZXJlIGlzIHRoYXQgaXQmIzM5O3MgYWRkcmVzc2luZyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBudWxsLXBvaW50ZXIgZGVyZWZlcmVuY2Ugd2l0aGluIHRoZSB2aXJ0aW8gdnNvY2sgd29ya3F1ZXVlIGhhbmRsZXJzLiBJIHNlZSB0aGUgbWFpbiBmb2N1cyBpcyBvbiBgdmlydGlvX3RyYW5zcG9ydF90eF93b3JrYCwgYHZpcnRpb190cmFuc3BvcnRfZXZlbnRfd29ya2AsIGFuZCBgdmlydGlvX3RyYW5zcG9ydF9yeF93b3JrYC4gVGhlc2UgYXJlIHRoZSBoYW5kbGVycyB0aGF0IHByb2Nlc3MgdGhlIGluY29taW5nIGFuZCBvdXRnb2luZyBkYXRhLCBhbmQgZXZlbnRzLCBhbmQgdGhleSYjMzk7cmUgdGhlIGNyaXRpY2FsIHBhdGhzIHRvIGZ1enouIFllcywgSSB1bmRlcnN0YW5kIHRoZXkmIzM5O3JlIHN0YXRpYyBmdW5jdGlvbnMuIEJ1dCBjcnVjaWFsbHksIHRoZWlyIGFkZHJlc3NlcyBhcmUgdGFrZW4gZm9yIGBJTklUX1dPUktgLCBtZWFuaW5nIHRoZXkgKndvbiYjMzk7dCogYmUgaW5saW5lZCBhbmQgdGhleSYjMzk7bGwgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLCB3aGljaCBpcyB3aGF0IEkgbmVlZC4KCk15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgKmRlZmluaXRlbHkqIHNvbWV0aGluZyB3ZSBzaG91bGQgYmUgZnV6emluZyAoYFdvcnRoRnV6emluZzogdHJ1ZWApLiBUaGUgcGF0Y2ggYWltcyB0byBzeW5jaHJvbml6ZSBhY2Nlc3MgdG8gdGhlIHZpcnRxdWV1ZXMgd2l0aGluIHRoZXNlIGhhbmRsZXJzLCBzcGVjaWZpY2FsbHkgZW5zdXJpbmcgdGhhdCB0aGV5JiMzOTtyZSBvbmx5IGFjY2Vzc2VkIHdoZW4gdGhlIHJlbGV2YW50ICYjMzQ7cnVuJiMzNDsgZmxhZyBpcyB0cnVlICppbnNpZGUgdGhlIGxvY2sqLiBUaGlzIGRpcmVjdGx5IGFkZHJlc3NlcyB0aGUgcmFjZSBjb25kaXRpb24uIEdpdmVuIHRoYXQgdmlydGlvLXZzb2NrIGlzIGEgY29yZSBjb21wb25lbnQgb2Z0ZW4gdXNlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCB0aGUgZXhwb3N1cmUgaXMgaGlnaCwgYW5kIHRoaXMgaXMgYSBnb29kIHRhcmdldC4KCkZvciBmdXp6aW5nIGNvbmZpZ3VyYXRpb24sIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGEgZmV3IGtleSBvcHRpb25zLiBJJiMzOTt2ZSBjb25maXJtZWQgYFZJUlRJT19WU09DS0VUU2AsIHdoaWNoIHRoZW4gYWxzbyBlbmFibGVzIGBWU09DS0VUU2AgYW5kIGBWSVJUSU9gLiBUaGUgdXNlIG9mIGBzZWxlY3RgIG1lYW5zIEkgZG9uJiMzOTt0IG5lZWQgdG8gZXhwbGljaXRseSBlbmFibGUgYFZJUlRJT19WU09DS0VUU19DT01NT05gLCBidXQgaXQgd29uJiMzOTt0IGh1cnQgdG8gYWRkIGl0IGVpdGhlciwgc28gSSYjMzk7bSBvbWl0dGluZyBpdC4KCkxvb2tpbmcgYXQgdGhlIGNvZGUgbW9yZSBjbG9zZWx5LCBgdmlydGlvX3Zzb2NrX3J4X2ZpbGxgIGlzIGFsc28gbW9kaWZpZWQsIHdpdGggYSBjaGVjayBhZGRlZC4gU28sIEkgd2lsbCBpbmNsdWRlIHRoYXQgaW4gdGhlIHRhcmdldC4gSSYjMzk7bGwgaW5jbHVkZSBgdmlydGlvX3Zzb2NrX3J4X2ZpbGxgIGluIGBGb2N1c1N5bWJvbHNgLgoKVGhlcmVmb3JlLCBteSBmaW5hbGl6ZWQgc3VtbWFyeSBmb3IgdGhpcyBmdXp6aW5nIGVmZm9ydCBpczoKCmBgYGpzb24KewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmsmIzM0OywKICAgICYjMzQ7dmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrJiMzNDssCiAgICAmIzM0O3ZpcnRpb190cmFuc3BvcnRfcnhfd29yayYjMzQ7LAogICAgJiMzNDt2aXJ0aW9fdnNvY2tfcnhfZmlsbCYjMzQ7CiAgXSwKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSVJUSU9fVlNPQ0tFVFMmIzM0OywKICAgICYjMzQ7VlNPQ0tFVFMmIzM0OywKICAgICYjMzQ7VklSVElPJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdmlydGlvIHZzb2NrIHdvcmtxdWV1ZSBoYW5kbGVycyAoVFgsIFJYLCBFdmVudCkgYW5kIHJ4LWZpbGwsIHdoZXJlIHZpcnRxdWV1ZXMgY291bGQgYmUgYWNjZXNzZWQgYWZ0ZXIgdGhleSBhcmUgbm8gbG9uZ2VyIHZhbGlkLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGxvZ2ljIGZvciB2aXJ0aW8tdnNvY2ssIHdoaWNoIGlzIGNvbW1vbmx5IHVzZWQgYW5kIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDsKfQpgYGAKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTU6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJUlRJT19WU09DS0VUUyYjMzQ7LAogICAgJiMzNDtWU09DS0VUUyYjMzQ7LAogICAgJiMzNDtWSVJUSU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmsmIzM0OywKICAgICYjMzQ7dmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrJiMzNDssCiAgICAmIzM0O3ZpcnRpb190cmFuc3BvcnRfcnhfd29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHZpcnRpbyB2c29jayB3b3JrcXVldWUgaGFuZGxlcnMgKFRYLCBSWCwgRXZlbnQpIHdoZXJlIHZpcnRxdWV1ZXMgY291bGQgYmUgYWNjZXNzZWQgYWZ0ZXIgdGhleSBhcmUgbm8gbG9uZ2VyIHZhbGlkLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGxvZ2ljIGZvciB2aXJ0aW8tdnNvY2ssIHdoaWNoIGlzIGNvbW1vbmx5IHVzZWQgYW5kIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJUlRJT19WU09DS0VUUyYjMzQ7LAogICAgJiMzNDtWU09DS0VUUyYjMzQ7LAogICAgJiMzNDtWSVJUSU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmsmIzM0OywKICAgICYjMzQ7dmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrJiMzNDssCiAgICAmIzM0O3ZpcnRpb190cmFuc3BvcnRfcnhfd29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHZpcnRpbyB2c29jayB3b3JrcXVldWUgaGFuZGxlcnMgKFRYLCBSWCwgRXZlbnQpIHdoZXJlIHZpcnRxdWV1ZXMgY291bGQgYmUgYWNjZXNzZWQgYWZ0ZXIgdGhleSBhcmUgbm8gbG9uZ2VyIHZhbGlkLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGxvZ2ljIGZvciB2aXJ0aW8tdnNvY2ssIHdoaWNoIGlzIGNvbW1vbmx5IHVzZWQgYW5kIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNTowMTo1MC40MjYzODAxNjhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTE0NjAwNTkwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSVJUSU9fVlNPQ0tFVFNcIixcbiAgICBcIlZTT0NLRVRTXCIsXG4gICAgXCJWSVJUSU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmtcIixcbiAgICBcInZpcnRpb190cmFuc3BvcnRfZXZlbnRfd29ya1wiLFxuICAgIFwidmlydGlvX3RyYW5zcG9ydF9yeF93b3JrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB2aXJ0aW8gdnNvY2sgd29ya3F1ZXVlIGhhbmRsZXJzIChUWCwgUlgsIEV2ZW50KSB3aGVyZSB2aXJ0cXVldWVzIGNvdWxkIGJlIGFjY2Vzc2VkIGFmdGVyIHRoZXkgYXJlIG5vIGxvbmdlciB2YWxpZC4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBsb2dpYyBmb3IgdmlydGlvLXZzb2NrLCB3aGljaCBpcyBjb21tb25seSB1c2VkIGFuZCBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNTowMTo1MC40MjYzOTA5MjhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MzEwNzk0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGUyZjk4MTAyYWYzNzBhZmVmZTBkZjZiYjBlMGI3NGZmZjc1NWYyODNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgMjcgMTU6MDE6NDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMgYi9uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuY1xcbmluZGV4IDU3ZjJkNmVjM2ZmYzY5Li43OWNmMTlmNTg5NDM5ZiAxMDA2NDRcXG4tLS0gYS9uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuY1xcbisrKyBiL25ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jXFxuQEAgLTM0NiwxMiArMzQ2LDEzIEBAIHN0YXRpYyB2b2lkIHZpcnRpb190cmFuc3BvcnRfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdHN0cnVjdCB2aXJ0cXVldWUgKnZxO1xcbiBcXHRib29sIGFkZGVkID0gZmFsc2U7XFxuIFxcbi1cXHR2cSA9IHZzb2NrLVxcdTAwM2V2cXNbVlNPQ0tfVlFfVFhdO1xcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZ2c29jay1cXHUwMDNldHhfbG9jayk7XFxuIFxcbiBcXHRpZiAoIXZzb2NrLVxcdTAwM2V0eF9ydW4pXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXG4rXFx0dnEgPSB2c29jay1cXHUwMDNldnFzW1ZTT0NLX1ZRX1RYXTtcXG4rXFxuIFxcdGRvIHtcXG4gXFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4gXFx0XFx0dW5zaWduZWQgaW50IGxlbjtcXG5AQCAtNDUxLDEzICs0NTIsMTMgQEAgc3RhdGljIHZvaWQgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0XFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB2aXJ0aW9fdnNvY2ssIGV2ZW50X3dvcmspO1xcbiBcXHRzdHJ1Y3QgdmlydHF1ZXVlICp2cTtcXG4gXFxuLVxcdHZxID0gdnNvY2stXFx1MDAzZXZxc1tWU09DS19WUV9FVkVOVF07XFxuLVxcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZ2c29jay1cXHUwMDNlZXZlbnRfbG9jayk7XFxuIFxcbiBcXHRpZiAoIXZzb2NrLVxcdTAwM2VldmVudF9ydW4pXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXG4rXFx0dnEgPSB2c29jay1cXHUwMDNldnFzW1ZTT0NLX1ZRX0VWRU5UXTtcXG4rXFxuIFxcdGRvIHtcXG4gXFx0XFx0c3RydWN0IHZpcnRpb192c29ja19ldmVudCAqZXZlbnQ7XFxuIFxcdFxcdHVuc2lnbmVkIGludCBsZW47XFxuQEAgLTYzNCwxMyArNjM1LDEzIEBAIHN0YXRpYyB2b2lkIHZpcnRpb190cmFuc3BvcnRfcnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdFxcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdmlydGlvX3Zzb2NrLCByeF93b3JrKTtcXG4gXFx0c3RydWN0IHZpcnRxdWV1ZSAqdnE7XFxuIFxcbi1cXHR2cSA9IHZzb2NrLVxcdTAwM2V2cXNbVlNPQ0tfVlFfUlhdO1xcbi1cXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2dnNvY2stXFx1MDAzZXJ4X2xvY2spO1xcbiBcXG4gXFx0aWYgKCF2c29jay1cXHUwMDNlcnhfcnVuKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFxuK1xcdHZxID0gdnNvY2stXFx1MDAzZXZxc1tWU09DS19WUV9SWF07XFxuK1xcbiBcXHRkbyB7XFxuIFxcdFxcdHZpcnRxdWV1ZV9kaXNhYmxlX2NiKHZxKTtcXG4gXFx0XFx0Zm9yICg7Oykge1xcbkBAIC02ODksNyArNjkwLDggQEAgc3RhdGljIHZvaWQgdmlydGlvX3RyYW5zcG9ydF9yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0fSB3aGlsZSAoIXZpcnRxdWV1ZV9lbmFibGVfY2IodnEpKTtcXG4gXFxuIG91dDpcXG4tXFx0aWYgKHZzb2NrLVxcdTAwM2VyeF9idWZfbnIgXFx1MDAzYyB2c29jay1cXHUwMDNlcnhfYnVmX21heF9uciAvIDIpXFxuK1xcdGlmICh2c29jay1cXHUwMDNlcnhfcnVuIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICB2c29jay1cXHUwMDNlcnhfYnVmX25yIFxcdTAwM2MgdnNvY2stXFx1MDAzZXJ4X2J1Zl9tYXhfbnIgLyAyKVxcbiBcXHRcXHR2aXJ0aW9fdnNvY2tfcnhfZmlsbCh2c29jayk7XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2dnNvY2stXFx1MDAzZXJ4X2xvY2spO1xcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE1OjAxOjUwLjkyMDQzMjY4OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjg4NjUxOTM5Mjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZJUlRJT19WU09DS0VUU1wiLFxuICAgIFwiVlNPQ0tFVFNcIixcbiAgICBcIlZJUlRJT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZpcnRpb190cmFuc3BvcnRfdHhfd29ya1wiLFxuICAgIFwidmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrXCIsXG4gICAgXCJ2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHZpcnRpbyB2c29jayB3b3JrcXVldWUgaGFuZGxlcnMgKFRYLCBSWCwgRXZlbnQpIHdoZXJlIHZpcnRxdWV1ZXMgY291bGQgYmUgYWNjZXNzZWQgYWZ0ZXIgdGhleSBhcmUgbm8gbG9uZ2VyIHZhbGlkLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGxvZ2ljIGZvciB2aXJ0aW8tdnNvY2ssIHdoaWNoIGlzIGNvbW1vbmx5IHVzZWQgYW5kIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGUyZjk4MTAyYWYzNzBhZmVmZTBkZjZiYjBlMGI3NGZmZjc1NWYyODNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAxNTowMTo0OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jIGIvbmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmNcbmluZGV4IDU3ZjJkNmVjM2ZmYzY5Li43OWNmMTlmNTg5NDM5ZiAxMDA2NDRcbi0tLSBhL25ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jXG4rKysgYi9uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuY1xuQEAgLTM0NiwxMiArMzQ2LDEzIEBAIHN0YXRpYyB2b2lkIHZpcnRpb190cmFuc3BvcnRfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRzdHJ1Y3QgdmlydHF1ZXVlICp2cTtcbiBcdGJvb2wgYWRkZWQgPSBmYWxzZTtcbiBcbi1cdHZxID0gdnNvY2stXHUwMDNldnFzW1ZTT0NLX1ZRX1RYXTtcbiBcdG11dGV4X2xvY2soXHUwMDI2dnNvY2stXHUwMDNldHhfbG9jayk7XG4gXG4gXHRpZiAoIXZzb2NrLVx1MDAzZXR4X3J1bilcbiBcdFx0Z290byBvdXQ7XG4gXG4rXHR2cSA9IHZzb2NrLVx1MDAzZXZxc1tWU09DS19WUV9UWF07XG4rXG4gXHRkbyB7XG4gXHRcdHN0cnVjdCBza19idWZmICpza2I7XG4gXHRcdHVuc2lnbmVkIGludCBsZW47XG5AQCAtNDUxLDEzICs0NTIsMTMgQEAgc3RhdGljIHZvaWQgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB2aXJ0aW9fdnNvY2ssIGV2ZW50X3dvcmspO1xuIFx0c3RydWN0IHZpcnRxdWV1ZSAqdnE7XG4gXG4tXHR2cSA9IHZzb2NrLVx1MDAzZXZxc1tWU09DS19WUV9FVkVOVF07XG4tXG4gXHRtdXRleF9sb2NrKFx1MDAyNnZzb2NrLVx1MDAzZWV2ZW50X2xvY2spO1xuIFxuIFx0aWYgKCF2c29jay1cdTAwM2VldmVudF9ydW4pXG4gXHRcdGdvdG8gb3V0O1xuIFxuK1x0dnEgPSB2c29jay1cdTAwM2V2cXNbVlNPQ0tfVlFfRVZFTlRdO1xuK1xuIFx0ZG8ge1xuIFx0XHRzdHJ1Y3QgdmlydGlvX3Zzb2NrX2V2ZW50ICpldmVudDtcbiBcdFx0dW5zaWduZWQgaW50IGxlbjtcbkBAIC02MzQsMTMgKzYzNSwxMyBAQCBzdGF0aWMgdm9pZCB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IHZpcnRpb192c29jaywgcnhfd29yayk7XG4gXHRzdHJ1Y3QgdmlydHF1ZXVlICp2cTtcbiBcbi1cdHZxID0gdnNvY2stXHUwMDNldnFzW1ZTT0NLX1ZRX1JYXTtcbi1cbiBcdG11dGV4X2xvY2soXHUwMDI2dnNvY2stXHUwMDNlcnhfbG9jayk7XG4gXG4gXHRpZiAoIXZzb2NrLVx1MDAzZXJ4X3J1bilcbiBcdFx0Z290byBvdXQ7XG4gXG4rXHR2cSA9IHZzb2NrLVx1MDAzZXZxc1tWU09DS19WUV9SWF07XG4rXG4gXHRkbyB7XG4gXHRcdHZpcnRxdWV1ZV9kaXNhYmxlX2NiKHZxKTtcbiBcdFx0Zm9yICg7Oykge1xuQEAgLTY4OSw3ICs2OTAsOCBAQCBzdGF0aWMgdm9pZCB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0fSB3aGlsZSAoIXZpcnRxdWV1ZV9lbmFibGVfY2IodnEpKTtcbiBcbiBvdXQ6XG4tXHRpZiAodnNvY2stXHUwMDNlcnhfYnVmX25yIFx1MDAzYyB2c29jay1cdTAwM2VyeF9idWZfbWF4X25yIC8gMilcbitcdGlmICh2c29jay1cdTAwM2VyeF9ydW4gXHUwMDI2XHUwMDI2XG4rXHQgICAgdnNvY2stXHUwMDNlcnhfYnVmX25yIFx1MDAzYyB2c29jay1cdTAwM2VyeF9idWZfbWF4X25yIC8gMilcbiBcdFx0dmlydGlvX3Zzb2NrX3J4X2ZpbGwodnNvY2spO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZzb2NrLVx1MDAzZXJ4X2xvY2spO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE1OjAxOjUwLjkyMDQzNDEyOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3NzU1MzgwMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVmlydGlvLVZTb2NrIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHR3ZWFrcyBgbmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJBaCwgdGhpcyB0b3VjaGVzIHRoZSBjb3JlIHZpcnRpby12c29jayB0cmFuc3BvcnQgbGF5ZXIuXCIgVGhlIGtleSBjaGFuZ2VzIGFyZSB3aXRoaW4gYHZpcnRpb190cmFuc3BvcnRfdHhfd29ya2AsIGB2aXJ0aW9fdHJhbnNwb3J0X2V2ZW50X3dvcmtgLCBhbmQgYHZpcnRpb190cmFuc3BvcnRfcnhfd29ya2AuIFNwZWNpZmljYWxseSwgdGhlIGNvZGUgbm93IGFzc2lnbnMgdGhlIHZpcnRxdWV1ZSAoYHZxYCkgb25seSAqYWZ0ZXIqIGNoZWNraW5nIGlmIGB2c29jay1cdTAwM2V0eF9ydW5gIChhbmQgYGV2ZW50X3J1bmAsIGByeF9ydW5gKSBpcyB0cnVlLCBhbmQgdGhpcyBjaGVjayBvY2N1cnMgd2l0aGluIHRoZSBtdXRleCBsb2NrLiBBZGRpdGlvbmFsbHksIHRoZXJlJ3MgYSBuZXcgY2hlY2sgZm9yIGB2c29jay1cdTAwM2VyeF9ydW5gIGJlZm9yZSBjYWxsaW5nIGB2aXJ0aW9fdnNvY2tfcnhfZmlsbCh2c29jayk7YCBpbiBgdmlydGlvX3RyYW5zcG9ydF9yeF93b3JrYC5cblxuTXkgaW5pdGlhbCByZWFkIHN1Z2dlc3RzIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCDigJMgbGlrZWx5IGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlLiBUaGUgb3JpZ2luYWwgY29kZSBwb3RlbnRpYWxseSBhY2Nlc3NlZCB0aGUgdmlydHF1ZXVlIGFmdGVyIGB2c29jay1cdTAwM2V0eF9ydW5gIGJlY2FtZSBmYWxzZSwgbGVhZGluZyB0byBpbnZhbGlkIGFjY2Vzcy4gV2FpdCwgeWVhaCwgaWYgYHZzb2NrLVx1MDAzZXR4X3J1bmAgaXMgZmFsc2UsIGl0IGp1bXBzIHRvIGBvdXRgLCBidXQgYHZxYCB3YXMgYXNzaWduZWQgYWxyZWFkeSwgdGhhdCBhY2Nlc3MgdG8gYHZzb2NrLVx1MDAzZXZxc2AgY291bGQgYmUgYSBidWcuXG5cbk5vdywgbGV0J3MgY29uZmlybSB0aGUgc2lnbmlmaWNhbmNlLiBgdmlydGlvX3RyYW5zcG9ydF90eF93b3JrYCwgYHZpcnRpb190cmFuc3BvcnRfZXZlbnRfd29ya2AsIGFuZCBgdmlydGlvX3RyYW5zcG9ydF9yeF93b3JrYCBhcmUgZGVmaW5pdGVseSB3b3JrcXVldWUgZnVuY3Rpb25zIGNyaXRpY2FsIHRvIHZpcnRpby12c29jaydzIGZ1bmN0aW9uYWxpdHkuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdmlydGlvLXZzb2NrIGlzIHN1cHBvcnRlZCBpbiBRRU1VIGFuZCwgaW1wb3J0YW50bHksIGZyZXF1ZW50bHkgZnV6emVkLiBUaGF0IG1lYW5zIHRoZXNlIGZ1bmN0aW9ucyBhcmUgaGlnaC12YWx1ZSB0YXJnZXRzIGZvciBleHBsb2l0IGF0dGVtcHRzLlxuXG5HaXZlbiB0aGUgcG90ZW50aWFsIGZvciBhIHNlY3VyaXR5IGlzc3VlLCBpdCdzIGRlZmluaXRlbHkgd29ydGggaW52ZXN0aWdhdGluZyB0aG9yb3VnaGx5LiBUaGUgbmV4dCBzdGVwIGlzIHRvIGxvY2F0ZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB2aXJ0aW8tdnNvY2ssIGxpa2VseSBpbiBgbmV0L3Ztd192c29jay9LY29uZmlnYCBvciBwb3NzaWJseSBldmVuIGBkcml2ZXJzL3Zob3N0L0tjb25maWdgLiBMZXQncyBjb25maXJtIHRoYXQgYnkgZ3JlcHBpbmcgZm9yIGB2aXJ0aW9fdHJhbnNwb3J0LmNgIGluIGBuZXQvdm13X3Zzb2NrL01ha2VmaWxlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4MCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE1OjAxOjU4LjY5NTk3NjQyM1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDg5ODg3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2aXJ0aW9fdHJhbnNwb3J0Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Ztd192c29jay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3Ztd192c29jay9NYWtlZmlsZT00PW9iai0kKENPTkZJR19WTVdBUkVfVk1DSV9WU09DS0VUUykgKz0gdm13X3Zzb2NrX3ZtY2lfdHJhbnNwb3J0Lm9cXG5uZXQvdm13X3Zzb2NrL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX1ZJUlRJT19WU09DS0VUUykgKz0gdm13X3Zzb2NrX3ZpcnRpb190cmFuc3BvcnQub1xcbm5ldC92bXdfdnNvY2svTWFrZWZpbGUtNi1vYmotJChDT05GSUdfVklSVElPX1ZTT0NLRVRTX0NPTU1PTikgKz0gdm13X3Zzb2NrX3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLm9cXG4tLVxcbm5ldC92bXdfdnNvY2svTWFrZWZpbGU9MTU9dm13X3Zzb2NrX3ZtY2lfdHJhbnNwb3J0LXkgKz0gdm1jaV90cmFuc3BvcnQubyB2bWNpX3RyYW5zcG9ydF9ub3RpZnkubyBcXFxcXFxuLS1cXG5uZXQvdm13X3Zzb2NrL01ha2VmaWxlLTE3LVxcbm5ldC92bXdfdnNvY2svTWFrZWZpbGU6MTg6dm13X3Zzb2NrX3ZpcnRpb190cmFuc3BvcnQteSArPSB2aXJ0aW9fdHJhbnNwb3J0Lm9cXG5uZXQvdm13X3Zzb2NrL01ha2VmaWxlLTE5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNTowMTo1OC43NzA4ODY1MDFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTE3Njc1MTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFZpcnRpby1WU09DSyBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIGBDT05GSUdfVklSVElPX1ZTT0NLRVRTYCBpcyB0aGUga2V5LiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGBuZXQvdm13X3Zzb2NrL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgdGhlIGRlZmluaXRpb24gYW5kIGRlcGVuZGVuY2llcyBmb3IgYFZJUlRJT19WU09DS0VUU2Agc2hvdWxkIGxpdmUuIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHN5bWJvbCBpcyBwcm9wZXJseSBkZWZpbmVkIGFuZCB0aGF0IGl0cyBkZXBlbmRlbmNpZXMsIGlmIGFueSwgYXJlIHdoYXQgSSBleHBlY3QuIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2Ugd2hldGhlciBpdCdzIHRpZWQgdG8gdGhlIGBWSVJUSU9gIGZhbWlseSBnZW5lcmFsbHksIG9yIHBlcmhhcHMgc3BlY2lmaWMgaGFyZHdhcmUgdmlydHVhbGl6YXRpb24gcGxhdGZvcm1zLiBJJ2xsIGFsc28gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBvcHRpb25zIG9yIGRlZmF1bHQgc2V0dGluZ3MgdGhhdCBhcmUgcmVsZXZhbnQgdG8gbXkgY3VycmVudCBpbnZlc3RpZ2F0aW9uLiBLbm93aW5nIHRoZSBjb250ZXh0IG9mIHRoZSBLY29uZmlnIGZpbGUgd2lsbCBnaXZlIG1lIGEgc29saWQgZm91bmRhdGlvbiBmb3IgZXZhbHVhdGluZyBpdHMgaW1wbGljYXRpb25zIGluIHRoZSBidWlsZCBwcm9jZXNzIGFuZCBydW50aW1lIGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzE5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTU6MDI6MDMuODg4NTY0NTk5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyNTMzMTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWSVJUSU9fVlNPQ0tFVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Ztd192c29jay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3Ztd192c29jay9LY29uZmlnPTQxPWNvbmZpZyBWTVdBUkVfVk1DSV9WU09DS0VUU1xcbi0tXFxubmV0L3Ztd192c29jay9LY29uZmlnLTUyLVxcbm5ldC92bXdfdnNvY2svS2NvbmZpZzo1Mzpjb25maWcgVklSVElPX1ZTT0NLRVRTXFxubmV0L3Ztd192c29jay9LY29uZmlnLTU0LVxcdHRyaXN0YXRlIFxcXCJ2aXJ0aW8gdHJhbnNwb3J0IGZvciBWaXJ0dWFsIFNvY2tldHNcXFwiXFxuLS1cXG5uZXQvdm13X3Zzb2NrL0tjb25maWctNjUtXFxubmV0L3Ztd192c29jay9LY29uZmlnOjY2OmNvbmZpZyBWSVJUSU9fVlNPQ0tFVFNfQ09NTU9OXFxubmV0L3Ztd192c29jay9LY29uZmlnLTY3LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE1OjAyOjAzLjk2MTEwODExOFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NjYyOTIzMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBWSVJUSU9fVlNPQ0tFVFMgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBvYmplY3RpdmUgaXMgY2xlYXI6IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YgYFZJUlRJT19WU09DS0VUU2AuIFRoaXMgaXNuJ3QganVzdCBhYm91dCBpZGVudGlmeWluZyB0aGUgaW1tZWRpYXRlIHBhcmVudCwgdGhvdWdoIHRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byB0aGluayBhYm91dCB0aGlzIGluIGEgbGF5ZXJlZCBmYXNoaW9uLiBXaGF0IGRvZXMgYFZJUlRJT19WU09DS0VUU2AgcmVseSBvbiBhdCB0aGUgaGFyZHdhcmUgbGV2ZWw/IElzIGl0IGEgc3BlY2lmaWMgVklSVElPIHRyYW5zcG9ydD8gSXMgdGhlcmUgYW55dGhpbmcgcGxhdGZvcm0gc3BlY2lmaWMgdGhhdCB0aGlzIGlzIGdvaW5nIHRvIGJlIHNpdHRpbmcgb24gdG9wIG9mPyBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgd2hpY2ggVklSVElPIHNwZWMgdmVyc2lvbiBpcyByZWxldmFudC4gQXJlIHRoZXJlIGFueSBmZWF0dXJlcyBJIHdvdWxkIGV4cGVjdCB0byBmaW5kIGluIGl0cyBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgYWxzbyBnb2luZyB0byBhZmZlY3QgdGhlIGRlcGVuZGVuY3kgY2hhaW4/IEknbGwgcHJvYmFibHkgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIGJ1aWxkIHN5c3RlbSBkZWZpbml0aW9ucywgYW5kIHRoZSBtb2R1bGUgYnVpbGQgY29uZmlnLiBUaG9zZSBzaG91bGQgYmUgdGhlIHByaW1hcnkgc291cmNlcyBvZiB0cnV0aCB0byBzZWUgdGhlIG90aGVyIGtlcm5lbCBtb2R1bGVzLCBhbmQgZHJpdmVycyB0aGF0IGBWSVJUSU9fVlNPQ0tFVFNgIHB1bGxzIGluLCBvciBpZiBpdCBoYXMgYW55IG1vZHVsZSBvcHRpb25zLiBUaGVuIEkgbmVlZCB0byBmb2xsb3cgdGhlIHRyYWlsLiBJZiBpdCByZWZlcmVuY2VzIG90aGVyIFZJUlRJTyBkcml2ZXJzLCBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciBpbnRlcmFjdGlvbnMuIERvZXMgaXQgaW50ZXJhY3Qgd2l0aCBhIGNvcmUgVklSVElPIGxheWVyPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGZvciBJL08gYW5kIGludGVycnVwdCBoYW5kbGluZz8gVGhpcyBhbHNvIG1lYW5zIHBvdGVudGlhbGx5IGNvbnNpZGVyaW5nIHRoZSB1c2Vyc3BhY2Ugc2lkZSwgZXNwZWNpYWxseSBpZiB0aGlzIHV0aWxpemVzIGEgZGVkaWNhdGVkIHRyYW5zcG9ydCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgYXNzb2NpYXRlZCBsaWJyYXJpZXMuIFVsdGltYXRlbHksIEkgbmVlZCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIGFyY2hpdGVjdHVyYWwgY29udGV4dCBvZiBgVklSVElPX1ZTT0NLRVRTYCBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciB2aXJ0dWFsaXphdGlvbiBsYW5kc2NhcGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGFsbCB0aGUgcGllY2VzIGl0IHRvdWNoZXMgdG8gbWFrZSBpdCB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTUxLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTU6MDI6MDguNDI3NDAzNTI4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE2NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3Ztd192c29jay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDUwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAgNTE6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCB2bXdfdnNvY2tfdm1jaV90cmFuc3BvcnQuIElmIHVuc3VyZSwgc2F5IE4uXFxuICA1MjpcXHRcXG4gIDUzOlxcdGNvbmZpZyBWSVJUSU9fVlNPQ0tFVFNcXG4gIDU0OlxcdFxcdHRyaXN0YXRlIFxcXCJ2aXJ0aW8gdHJhbnNwb3J0IGZvciBWaXJ0dWFsIFNvY2tldHNcXFwiXFxuICA1NTpcXHRcXHRkZXBlbmRzIG9uIFZTT0NLRVRTIFxcdTAwMjZcXHUwMDI2IFZJUlRJT1xcbiAgNTY6XFx0XFx0c2VsZWN0IFZJUlRJT19WU09DS0VUU19DT01NT05cXG4gIDU3OlxcdFxcdGhlbHBcXG4gIDU4OlxcdFxcdCAgVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBhIHZpcnRpbyB0cmFuc3BvcnQgZm9yIFZpcnR1YWwgU29ja2V0cy5cXG4gIDU5OlxcdFxcbiAgNjA6XFx0XFx0ICBFbmFibGUgdGhpcyB0cmFuc3BvcnQgaWYgeW91ciBWaXJ0dWFsIE1hY2hpbmUgaG9zdCBzdXBwb3J0cyBWaXJ0dWFsXFxuICA2MTpcXHRcXHQgIFNvY2tldHMgb3ZlciB2aXJ0aW8uXFxuICA2MjpcXHRcXG4gIDYzOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXFxuICA2NDpcXHRcXHQgIGNhbGxlZCB2bXdfdnNvY2tfdmlydGlvX3RyYW5zcG9ydC4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDY1OlxcdFxcbiAgNjY6XFx0Y29uZmlnIFZJUlRJT19WU09DS0VUU19DT01NT05cXG4gIDY3OlxcdFxcdHRyaXN0YXRlXFxuICA2ODpcXHRcXHRoZWxwXFxuICA2OTpcXHRcXHQgIFRoaXMgb3B0aW9uIGlzIHNlbGVjdGVkIGJ5IGFueSBkcml2ZXIgd2hpY2ggbmVlZHMgdG8gYWNjZXNzXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE1OjAyOjA4LjQyNzQ3NzA3OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NDQ4MjY2NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBleHBlcnQgcGVyc3BlY3RpdmU6XG5cbioqRGVlcCBEaXZlIGludG8gVlNPQ0sgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMuIFRoZSBjb3JlIGRlcGVuZGVuY2llcywgZnJvbSB3aGF0IEknbSBzZWVpbmcsIGFyZSBgVlNPQ0tFVFNgIGFuZCBgVklSVElPYC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQncyB0aGUgdmlydHVhbCBzb2NrZXQgaW1wbGVtZW50YXRpb24sIGxpa2VseSBvdmVyIHRoZSBWaXJ0SU8gdHJhbnNwb3J0IGxheWVyLiBNYWtlcyBpdCB0aGUgb2J2aW91cyBjaG9pY2UgZm9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIGBWU09DS0VUU2AgY29uZmlndXJhdGlvbiBkaXJlY3RseSB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2UuIFdoZXJlIGVsc2Ugd291bGQgaXQgYmUgZGVmaW5lZCBidXQgaW4gYG5ldC92bXdfdnNvY2svS2NvbmZpZ2A/IEl0J3MgdGhlIHN0YW5kYXJkIGxvY2F0aW9uIGZvciB0aGlzIGtpbmQgb2YgZGV2aWNlLiBMZXQncyBzZWUgd2hhdCBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkLCB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgYW5kIG1vc3QgaW1wb3J0YW50bHksIHdoYXQgb3RoZXIgZGVwZW5kZW5jaWVzIGFuZCBjb25kaXRpb25hbHMgbWlnaHQgYmUgbHVya2luZy4gVGltZSB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIGRldGFpbHMgb2YgdGhlIEtjb25maWcgZmlsZSB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBpbXBsZW1lbnRhdGlvbiBpbnNpZGUgYW5kIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg1OCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTU6MDI6MTMuMTcyMzA3MTc0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4NDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC92bXdfdnNvY2svS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBWc29jayBwcm90b2NvbFxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgVlNPQ0tFVFNcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIFNvY2tldCBwcm90b2NvbFxcXCJcXG4gICA4OlxcdFxcdGhlbHBcXG4gICA5OlxcdFxcdCAgVmlydHVhbCBTb2NrZXQgUHJvdG9jb2wgaXMgYSBzb2NrZXQgcHJvdG9jb2wgc2ltaWxhciB0byBUQ1AvSVBcXG4gIDEwOlxcdFxcdCAgYWxsb3dpbmcgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIFZpcnR1YWwgTWFjaGluZXMgYW5kIGh5cGVydmlzb3JcXG4gIDExOlxcdFxcdCAgb3IgaG9zdC5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0XFx0ICBZb3Ugc2hvdWxkIGFsc28gc2VsZWN0IG9uZSBvciBtb3JlIGh5cGVydmlzb3Itc3BlY2lmaWMgdHJhbnNwb3J0c1xcbiAgMTQ6XFx0XFx0ICBiZWxvdy5cXG4gIDE1OlxcdFxcbiAgMTY6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuICAxNzpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHZzb2NrLiBJZiB1bnN1cmUsIHNheSBOLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgVlNPQ0tFVFNfRElBR1xcbiAgMjA6XFx0XFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgU29ja2V0cyBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTU6MDI6MTMuMTcyMzc5NzM0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MjAwMjAwNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBWaXJ0aW8gdnNvY2sgVHJhbnNwb3J0IEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYFZTT0NLRVRTYCwgYFZJUlRJT2AsIGFuZCBgVklSVElPX1ZTT0NLRVRTYC4gUmlnaHQsIGBWSVJUSU9gIGlzIGEgY29yZSBjb25maWcsIHNvIHRoYXQncyBleHBlY3RlZC4gTGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzIGF0IHBsYXkgaGVyZS4gVGhlIHBhdGNoIHNlZW1zIHRvIGJlIG1vZGlmeWluZyBgdmlydGlvX3RyYW5zcG9ydF90eF93b3JrYCwgYHZpcnRpb190cmFuc3BvcnRfZXZlbnRfd29ya2AsIGFuZCBgdmlydGlvX3RyYW5zcG9ydF9yeF93b3JrYC4gVGhvc2UgbG9vayBsaWtlIHdvcmtxdWV1ZSBmdW5jdGlvbnMsIHRyaWdnZXJlZCBwcm9iYWJseSBieSB2aXJ0cXVldWUgY2FsbGJhY2tzIG9yIG90aGVyIGV2ZW50cy5cblxuV2hhdCBhcmUgdGhlIGltcG9ydGFudCBzeW1ib2xzIEkgc2hvdWxkIGJlIGZvY3VzaW5nIG9uPyBMZXQgbWUgbm90ZSB0aG9zZSBmdW5jdGlvbnMgZG93bjogYHZpcnRpb190cmFuc3BvcnRfdHhfd29ya2AsIGB2aXJ0aW9fdHJhbnNwb3J0X2V2ZW50X3dvcmtgLCBhbmQgYHZpcnRpb190cmFuc3BvcnRfcnhfd29ya2AuXG5cbldhaXQsIHRoZXNlIGxvb2sgbGlrZSBzdGF0aWMgZnVuY3Rpb25zLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2suIFl1cCwgYHN0YXRpYyB2b2lkIHZpcnRpb190cmFuc3BvcnRfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspYCwgZXRjLiBTaW5jZSB0aGV5J3JlIHN0YXRpYywgdGhleSAqbWlnaHQqIG5vdCBiZSB0aGUgYmVzdCBmb2N1cyBzeW1ib2xzIGlmIHRoZXkncmUgaW5saW5lZC4gQnV0IHdhaXQsIHdvcmtxdWV1ZSBmdW5jdGlvbnMgY2FuJ3QgYmUgaW5saW5lZCBiZWNhdXNlIHRoZWlyIGFkZHJlc3NlcyBhcmUgcGFzc2VkIHRvIGBJTklUX1dPUktgLiBFeGFjdGx5LiBUaGUgaW5zdHJ1Y3Rpb25zIHNwZWNpZnkgYSBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIEhvd2V2ZXIsIHRoZXNlICphcmUqIHBhc3NlZCBhcyBmdW5jdGlvbiBwb2ludGVycyB0byBgSU5JVF9XT1JLYCwgc28gdGhleSBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuXG5cbk9rYXksIHRoZXNlIHNob3VsZCBiZSBmaW5lLCBidXQgbWF5YmUgSSBzaG91bGQgYWxzbyBpbmNsdWRlIHRoZSBmdW5jdGlvbnMgdGhhdCBzY2hlZHVsZSB0aGVtLCBvciB0aGUgdmlydGlvIHZzb2NrIGVudHJ5IHBvaW50cywganVzdCB0byBiZSB0aG9yb3VnaC4gSSBzaG91bGQgY2hlY2sgYHZpcnRpb190cmFuc3BvcnQuY2AgdG8gc2VlIHdoZXJlIHRoZXNlIHdvcmtxdWV1ZSBmdW5jdGlvbnMgYXJlIGJlaW5nIGNhbGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM3NSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE1OjAyOjE5Ljc5MjQwMzIwMVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgyNzg2NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSU5JVF9XT1JLLip2aXJ0aW9fdHJhbnNwb3J0Xy4qX3dvcmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Ztd192c29jay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM9ODAwPXN0YXRpYyBpbnQgdmlydGlvX3Zzb2NrX3Byb2JlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtODI5LVxcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXFx1MDAyNnZzb2NrLVxcdTAwM2VzZW5kX3BrdF9xdWV1ZSk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6ODMwOlxcdElOSVRfV09SSyhcXHUwMDI2dnNvY2stXFx1MDAzZXJ4X3dvcmssIHZpcnRpb190cmFuc3BvcnRfcnhfd29yayk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6ODMxOlxcdElOSVRfV09SSyhcXHUwMDI2dnNvY2stXFx1MDAzZXR4X3dvcmssIHZpcnRpb190cmFuc3BvcnRfdHhfd29yayk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6ODMyOlxcdElOSVRfV09SSyhcXHUwMDI2dnNvY2stXFx1MDAzZWV2ZW50X3dvcmssIHZpcnRpb190cmFuc3BvcnRfZXZlbnRfd29yayk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6ODMzOlxcdElOSVRfV09SSyhcXHUwMDI2dnNvY2stXFx1MDAzZXNlbmRfcGt0X3dvcmssIHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3Rfd29yayk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtODM0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNTowMjoxOS44NjA2ODk5MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjI2MTY4NTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHVuZGVyc3RhbmRpbmcsIGZyYW1lZCBhcyBteSBvd24gdGhvdWdodHM6XG5cbioqVmlydGlvLVZTb2NrIEluaXRpYWxpemF0aW9uIGFuZCBUcmlnZ2VyaW5nKipcblxuT2theSwgc28gSSdtIHRyYWNraW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgdmlydGlvLXZzb2NrIGRyaXZlciBhbmQgaXRzIHRob3VnaHQgcHJvY2Vzc2VzLiBJdCBhbGwgc3RhcnRzIGluIGB2aXJ0aW9fdnNvY2tfcHJvYmVgLCB3aGljaCBtYWtlcyBzZW5zZSBhcyB0aGUgZW50cnkgcG9pbnQuIEJ1dCB3aGF0IHJlYWxseSBzZXRzIHRoZSB3aG9sZSB0aGluZyBpbiBtb3Rpb24/IEFoLCByaWdodCwgaXQncyB0aGUgdmlydHF1ZXVlIGNhbGxiYWNrcy4gVGhvc2UgYXJlIHRoZSBrZXkuIFRoZXnigJlyZSBsaWtlIHRoZSBldmVudCBoYW5kbGVycywgdGhlIHRyaWdnZXJzLiBXaGVuIGRhdGEgaXMgYXZhaWxhYmxlLCBhIHJlcXVlc3QgY29tcGxldGVzLCBvciBzb21lIG90aGVyIHZpcnRxdWV1ZS1yZWxhdGVkIGV2ZW50IG9jY3VycywgdGhlIGRyaXZlcidzIGludGVybmFsIGxvZ2ljIHdha2VzIHVwIGFuZCBzcHJpbmdzIHRvIGFjdGlvbi4gVGhhdCdzIHRoZSBwcmltYXJ5IG1lY2hhbmlzbSBkcml2aW5nIHRoZSBzdGF0ZSBjaGFuZ2VzIGFuZCByZWFjdGlvbnMgb2YgdGhpcyB3aG9sZSBwcm9jZXNzLiBNYWtlcyBwZXJmZWN0IHNlbnNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDI0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTU6MDI6MjMuNDg2ODYxNDA3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODE5ODc2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxdWV1ZV93b3JrLipfd29ya1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdm13X3Zzb2NrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz0xNTg9dmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTIxMC1cXHRpZiAocmVzdGFydF9yeClcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzoyMTE6XFx0XFx0cXVldWVfd29yayh2aXJ0aW9fdnNvY2tfd29ya3F1ZXVlLCBcXHUwMDI2dnNvY2stXFx1MDAzZXJ4X3dvcmspO1xcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTIxMi19XFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz0yMzc9dmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy0yNzAtXFx0XFx0dmlydGlvX3Zzb2NrX3NrYl9xdWV1ZV90YWlsKFxcdTAwMjZ2c29jay1cXHUwMDNlc2VuZF9wa3RfcXVldWUsIHNrYik7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6MjcxOlxcdFxcdHF1ZXVlX3dvcmsodmlydGlvX3Zzb2NrX3dvcmtxdWV1ZSwgXFx1MDAyNnZzb2NrLVxcdTAwM2VzZW5kX3BrdF93b3JrKTtcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy0yNzItXFx0fVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM9MjgwPXZpcnRpb190cmFuc3BvcnRfY2FuY2VsX3BrdChzdHJ1Y3QgdnNvY2tfc29jayAqdnNrKVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtMzAwLVxcdFxcdCAgICBuZXdfY250IFxcdTAwM2MgdmlydHF1ZXVlX2dldF92cmluZ19zaXplKHJ4X3ZxKSlcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzozMDE6XFx0XFx0XFx0cXVldWVfd29yayh2aXJ0aW9fdnNvY2tfd29ya3F1ZXVlLCBcXHUwMDI2dnNvY2stXFx1MDAzZXJ4X3dvcmspO1xcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTMwMi1cXHR9XFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz0zNDI9c3RhdGljIHZvaWQgdmlydGlvX3RyYW5zcG9ydF90eF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTM3MC1cXHRpZiAoYWRkZWQpXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6MzcxOlxcdFxcdHF1ZXVlX3dvcmsodmlydGlvX3Zzb2NrX3dvcmtxdWV1ZSwgXFx1MDAyNnZzb2NrLVxcdTAwM2VzZW5kX3BrdF93b3JrKTtcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy0zNzItfVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM9NDgwPXN0YXRpYyB2b2lkIHZpcnRpb192c29ja19ldmVudF9kb25lKHN0cnVjdCB2aXJ0cXVldWUgKnZxKVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNDg1LVxcdFxcdHJldHVybjtcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzo0ODY6XFx0cXVldWVfd29yayh2aXJ0aW9fdnNvY2tfd29ya3F1ZXVlLCBcXHUwMDI2dnNvY2stXFx1MDAzZWV2ZW50X3dvcmspO1xcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTQ4Ny19XFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz00ODk9c3RhdGljIHZvaWQgdmlydGlvX3Zzb2NrX3R4X2RvbmUoc3RydWN0IHZpcnRxdWV1ZSAqdnEpXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy00OTQtXFx0XFx0cmV0dXJuO1xcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjQ5NTpcXHRxdWV1ZV93b3JrKHZpcnRpb192c29ja193b3JrcXVldWUsIFxcdTAwMjZ2c29jay1cXHUwMDNldHhfd29yayk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNDk2LX1cXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTQ5OD1zdGF0aWMgdm9pZCB2aXJ0aW9fdnNvY2tfcnhfZG9uZShzdHJ1Y3QgdmlydHF1ZXVlICp2cSlcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTUwMy1cXHRcXHRyZXR1cm47XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6NTA0OlxcdHF1ZXVlX3dvcmsodmlydGlvX3Zzb2NrX3dvcmtxdWV1ZSwgXFx1MDAyNnZzb2NrLVxcdTAwM2VyeF93b3JrKTtcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy01MDUtfVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM9NzI3PXN0YXRpYyB2b2lkIHZpcnRpb192c29ja192cXNfc3RhcnQoc3RydWN0IHZpcnRpb192c29jayAqdnNvY2spXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy03NTEtXFx0ICovXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6NzUyOlxcdHF1ZXVlX3dvcmsodmlydGlvX3Zzb2NrX3dvcmtxdWV1ZSwgXFx1MDAyNnZzb2NrLVxcdTAwM2VzZW5kX3BrdF93b3JrKTtcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy03NTMtfVxcbi0tXFxubmV0L3Ztd192c29jay92c29ja19sb29wYmFjay5jPTI5PXN0YXRpYyBpbnQgdnNvY2tfbG9vcGJhY2tfc2VuZF9wa3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxubmV0L3Ztd192c29jay92c29ja19sb29wYmFjay5jLTM0LVxcdHZpcnRpb192c29ja19za2JfcXVldWVfdGFpbChcXHUwMDI2dnNvY2stXFx1MDAzZXBrdF9xdWV1ZSwgc2tiKTtcXG5uZXQvdm13X3Zzb2NrL3Zzb2NrX2xvb3BiYWNrLmM6MzU6XFx0cXVldWVfd29yayh2c29jay1cXHUwMDNld29ya3F1ZXVlLCBcXHUwMDI2dnNvY2stXFx1MDAzZXBrdF93b3JrKTtcXG5uZXQvdm13X3Zzb2NrL3Zzb2NrX2xvb3BiYWNrLmMtMzYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE1OjAyOjIzLjU1NTA2Nzc5NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTM0OTE0MzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKklkZW50aWZ5aW5nIEtleSB2c29jayBGdW5jdGlvbmFsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIHZpcnRxdWV1ZSBjYWxsYmFja3Mg4oCTIHRob3NlIGFyZSB0aGUgY29yZSBvZiBob3cgdGhlIHZzb2NrIGltcGxlbWVudGF0aW9uIGhhbmRsZXMgZGF0YSBmbG93LCBzbyB0aGV5J3JlIGRlZmluaXRlbHkgaW1wb3J0YW50LiBJIHNlZSB0aGVtIGFzIGB2aXJ0aW9fdnNvY2tfZXZlbnRfZG9uZWAsIGB2aXJ0aW9fdnNvY2tfdHhfZG9uZWAsIGFuZCBgdmlydGlvX3Zzb2NrX3J4X2RvbmVgLiBUaG9zZSBhcmUgdGhlIG9idmlvdXMgZm9jdXMgcG9pbnRzIGFzIGZhciBhcyB0aGUgY2FsbGJhY2sgZnVuY3Rpb25zIGFyZSBjb25jZXJuZWQuXG5cbkJleW9uZCB0aG9zZSwgSSBuZWVkIHRvIGNvbnNpZGVyIHdoZXJlIHRoZSBwcm9jZXNzaW5nIGRyaXZlbiBieSB0aG9zZSBjYWxsYmFja3MgYWN0dWFsbHkgaGFwcGVucywgYW5kIGluIHRoaXMgY29udGV4dCwgdGhhdCBzZWVtcyB0byBiZSBpbnNpZGUgYHZpcnRpb190cmFuc3BvcnRfdHhfd29ya2AsIGB2aXJ0aW9fdHJhbnNwb3J0X2V2ZW50X3dvcmtgLCBhbmQgYHZpcnRpb190cmFuc3BvcnRfcnhfd29ya2AuIFRoZXNlIHNlZW0gdG8gYmUgdGhlIGNvcmUgdHJhbnNwb3J0IGZ1bmN0aW9ucy5cblxuTm93LCBsZXQncyBzZWUgaWYgd2UndmUgbWlzc2VkIGFueXRoaW5nLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpZiBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyBtaWdodCBiZSBzaWduaWZpY2FudC4gSSdtIG5vdGluZyB0aGF0IGB2aXJ0aW9fdnNvY2tfZXZlbnRfZG9uZWAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBJbnRlcmVzdGluZy4gSSBuZWVkIHRvIGtub3cgaWYgYW55IG90aGVyIGZ1bmN0aW9ucywgbGlrZSBgdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdGAsIGFyZSBhY2Nlc3NpYmxlIGZyb20gb3V0c2lkZSB0aGUgc3BlY2lmaWMgdnNvY2sgbW9kdWxlLiBJZiBgdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdGAgaXMgbm90IHN0YXRpYywgdGhhdCdzIGEga2V5IGZ1bmN0aW9uIGZvciBteSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzg4NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNTowMjoyOC40ODk5ODUwMjhaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNjIyMTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Ztd192c29jay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM9MzA9c3RydWN0IHZpcnRpb192c29jayB7XFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy02MS1cXHQvKiBUaGVzZSBmaWVsZHMgYXJlIHVzZWQgb25seSBpbiB0eCBwYXRoIGluIGZ1bmN0aW9uXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6NjI6XFx0ICogJ3ZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3Rfd29yaygpJywgc28gdG8gc2F2ZVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTYzLVxcdCAqIHN0YWNrIHNwYWNlIGluIGl0LCBwbGFjZSBib3RoIG9mIHRoZW0gaGVyZS4gRWFjaFxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM9MTU3PXN0YXRpYyB2b2lkXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6MTU4OnZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3Rfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtMTU5LXtcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTIzNj1zdGF0aWMgaW50XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6MjM3OnZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldCAqbmV0KVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTIzOC17XFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz01NTc9c3RhdGljIHN0cnVjdCB2aXJ0aW9fdHJhbnNwb3J0IHZpcnRpb190cmFuc3BvcnQgPSB7XFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy02MDgtXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6NjA5OlxcdC5zZW5kX3BrdCA9IHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3QsXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNjEwLVxcdC5jYW5fbXNnemVyb2NvcHkgPSB2aXJ0aW9fdHJhbnNwb3J0X2Nhbl9tc2d6ZXJvY29weSxcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTcyNz1zdGF0aWMgdm9pZCB2aXJ0aW9fdnNvY2tfdnFzX3N0YXJ0KHN0cnVjdCB2aXJ0aW9fdnNvY2sgKnZzb2NrKVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNzQyLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjc0MzpcXHQvKiB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0KCkgY2FuIHF1ZXVlIHBhY2tldHMgb25jZVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTc0NC1cXHQgKiB0aGVfdmlydGlvX3Zzb2NrIGlzIHNldCwgYnV0IHRoZXkgd29uJ3QgYmUgcHJvY2Vzc2VkIHVudGlsXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz04MDA9c3RhdGljIGludCB2aXJ0aW9fdnNvY2tfcHJvYmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy04MzItXFx0SU5JVF9XT1JLKFxcdTAwMjZ2c29jay1cXHUwMDNlZXZlbnRfd29yaywgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrKTtcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzo4MzM6XFx0SU5JVF9XT1JLKFxcdTAwMjZ2c29jay1cXHUwMDNlc2VuZF9wa3Rfd29yaywgdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF93b3JrKTtcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy04MzQtXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM9MjEyPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdmlydGlvX3RyYW5zcG9ydF9hbGxvY19za2Ioc3RydWN0IHZpcnRpb192c29ja19wa3RfaW5mbyAqaW5mbyxcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0yOTgtICovXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jOjI5OTpzdGF0aWMgaW50IHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RfaW5mbyhzdHJ1Y3QgdnNvY2tfc29jayAqdnNrLFxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0zMDAtXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgdmlydGlvX3Zzb2NrX3BrdF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTY1NT1zdGF0aWMgaW50IHZpcnRpb190cmFuc3BvcnRfc2VuZF9jcmVkaXRfdXBkYXRlKHN0cnVjdCB2c29ja19zb2NrICp2c2spXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtNjYyLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzo2NjM6XFx0cmV0dXJuIHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RfaW5mbyh2c2ssIFxcdTAwMjZpbmZvKTtcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtNjY0LX1cXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz0xMjAyPWludCB2aXJ0aW9fdHJhbnNwb3J0X2Nvbm5lY3Qoc3RydWN0IHZzb2NrX3NvY2sgKnZzaylcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMjA5LVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoxMjEwOlxcdHJldHVybiB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X2luZm8odnNrLCBcXHUwMDI2aW5mbyk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTEyMTEtfVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTEyMTQ9aW50IHZpcnRpb190cmFuc3BvcnRfc2h1dGRvd24oc3RydWN0IHZzb2NrX3NvY2sgKnZzaywgaW50IG1vZGUpXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTIyNS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6MTIyNjpcXHRyZXR1cm4gdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF9pbmZvKHZzaywgXFx1MDAyNmluZm8pO1xcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMjI3LX1cXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz0xMjQxPXZpcnRpb190cmFuc3BvcnRfc3RyZWFtX2VucXVldWUoc3RydWN0IHZzb2NrX3NvY2sgKnZzayxcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMjUyLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoxMjUzOlxcdHJldHVybiB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X2luZm8odnNrLCBcXHUwMDI2aW5mbyk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTEyNTQtfVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTEyODE9c3RhdGljIGludCB2aXJ0aW9fdHJhbnNwb3J0X3Jlc2V0KHN0cnVjdCB2c29ja19zb2NrICp2c2ssXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTI5NC1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6MTI5NTpcXHRyZXR1cm4gdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF9pbmZvKHZzaywgXFx1MDAyNmluZm8pO1xcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMjk2LX1cXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz0xMzA1PXN0YXRpYyBpbnQgdmlydGlvX3RyYW5zcG9ydF9yZXNldF9ub19zb2NrKGNvbnN0IHN0cnVjdCB2aXJ0aW9fdHJhbnNwb3J0ICp0LFxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTEzMjEtXFx0XFx0ICogdC1cXHUwMDNlc2VuZF9wa3QoKSwgaW5zdGVhZCBvZiByZWx5aW5nIG9uXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jOjEzMjI6XFx0XFx0ICogdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF9pbmZvKCkgdG8gcGFzcyBpdC4gSXQgaXMgbm90IG5lZWRlZFxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMzIzLVxcdFxcdCAqIGJ5IHZpcnRpb190cmFuc3BvcnRfYWxsb2Nfc2tiKCkuXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM9MTY0OD12aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcmVzcG9uc2Uoc3RydWN0IHZzb2NrX3NvY2sgKnZzayxcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xNjYwLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoxNjYxOlxcdHJldHVybiB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X2luZm8odnNrLCBcXHUwMDI2aW5mbyk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTE2NjItfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNTowMjoyOC41NTM2MTI2NzZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA2ODc4Nzk0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZpcnRpby1WU09DSyBXb3JrcXVldWUgUmFjZSBDb25kaXRpb24gRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBjb3JlIG9mIGl0IHJldm9sdmVzIGFyb3VuZCB0aG9zZSB0aHJlZSBmdW5jdGlvbnM6IGB2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmtgLCBgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrYCwgYW5kIGB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmtgLiBUaGV5J3JlIGJlaW5nIGZlZCBpbnRvIGBJTklUX1dPUktgLCB3aGljaCBtZWFucyB0aGV5J3JlIHNjaGVkdWxlZCB0byBydW4gYXN5bmNocm9ub3VzbHkgaW4gYSB3b3JrcXVldWUuIFRoYXQncyBzdGFuZGFyZCBwcmFjdGljZSwgYnV0IGl0J3Mgd2hlcmUgdGhlIHByb2JsZW0gbGllcy5cblxuVGhlIHBhdGNoIHRhcmdldHMgYSByYWNlIGNvbmRpdGlvbi4gSXQgc2VlbXMgd2UncmUgYWNjZXNzaW5nIGB2c29jay1cdTAwM2V2cXNbVlNPQ0tfVlFfVFhdYCAqYmVmb3JlKiBjaGVja2luZyBgdnNvY2stXHUwMDNldHhfcnVuYC4gVGhhdCdzIGEgY2xhc3NpYyBjb25jdXJyZW5jeSBidWcsIGFuZCBpdCBtYWtlcyBwZXJmZWN0IHNlbnNlIHRoYXQgaXQgbmVlZHMgdG8gYmUgZml4ZWQuIElmIGB2c29jay1cdTAwM2V0eF9ydW5gIGlzIGZhbHNlLCBpdCdzIGEgaHVnZSByZWQgZmxhZyBiZWNhdXNlIGl0IG1lYW5zIHRob3NlIHZpcnRxdWV1ZXMsIHdoaWNoIGFyZSB2aXRhbCBmb3IgY29tbXVuaWNhdGlvbiwgY291bGQgYmUgZ29uZSDigJMgZnJlZWQsIGludmFsaWQsIHdoYXRldmVyLiBUaGlzIHdob2xlIG1lc3MgY291bGQgYmUgdHJpZ2dlcmVkIGJ5IGRldmljZSByZW1vdmFsIG9yIGEgc3VzcGVuZC9yZXN1bWUgY3ljbGUuIFRob3NlIGV2ZW50cyBhcmUgdXN1YWxseSBoYW5kbGVkIGJ5IHNvbWUgY2xlYW51cCBvciB0ZWFyZG93biBmdW5jdGlvbnMuXG5cblNvLCB0aGUgb2J2aW91cyBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBgdmlydGlvX3Zzb2NrX3JlbW92ZWAgYW5kIGl0cyBzdXJyb3VuZGluZyBjb250ZXh0LiBXZSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB2c29jayBkZXZpY2UgaXMgcmVtb3ZlZCBvciBzdXNwZW5kZWQsIGFuZCBob3cgdGhhdCByZWxhdGVzIHRvIGB2c29jay1cdTAwM2V0eF9ydW5gIGFuZCB0aGUgc3RhdGUgb2YgdGhvc2UgdmlydHF1ZXVlcy4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIGB2aXJ0aW9fdnNvY2tfcmVtb3ZlYCB0byBzZWUgd2hhdCBpdCdzIGRvaW5nIHdpdGggdGhlIHZpcnRxdWV1ZXMgd2hlbiB0aGUgZGV2aWNlIGlzIGJlaW5nIHVucGx1Z2dlZCBvciBzdXNwZW5kZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMjMwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE1OjAyOjMzLjYyMjQwMzA5NVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMxMDYzMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmlydGlvX3Zzb2NrX3JlbW92ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdm13X3Zzb2NrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz04MDA9c3RhdGljIGludCB2aXJ0aW9fdnNvY2tfcHJvYmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy04NTktXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6ODYwOnN0YXRpYyB2b2lkIHZpcnRpb192c29ja19yZW1vdmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtODYxLXtcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTkzOD1zdGF0aWMgc3RydWN0IHZpcnRpb19kcml2ZXIgdmlydGlvX3Zzb2NrX2RyaXZlciA9IHtcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTk0My1cXHQucHJvYmUgPSB2aXJ0aW9fdnNvY2tfcHJvYmUsXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6OTQ0OlxcdC5yZW1vdmUgPSB2aXJ0aW9fdnNvY2tfcmVtb3ZlLFxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTk0NS0jaWZkZWYgQ09ORklHX1BNX1NMRUVQXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE1OjAyOjMzLjY4NTUyMDM5M1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MzQ0MzI3NDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBEZWNpc2lvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGluc3RydWN0aW9ucyBhcmUgcHJldHR5IGNsZWFyOiBgUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZWAgaWYgaXQncyAqanVzdCogZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyBsaWtlIGAucmVtb3ZlYCwgYC5zaHV0ZG93bmAsIG9yIGBwY2lfdW5yZWdpc3Rlcl9kcml2ZXJgIHRoYXQgb25seSBydW4gZHVyaW5nIGhvdC11bnBsdWcgb3Igc3lzZnMgdW5iaW5kLiBCdXQgaG9sZCBvbiwgdGhlIHBhdGNoIHRvdWNoZXMgYHZpcnRpb190cmFuc3BvcnRfdHhfd29ya2AsIGB2aXJ0aW9fdHJhbnNwb3J0X2V2ZW50X3dvcmtgLCBhbmQgYHZpcnRpb190cmFuc3BvcnRfcnhfd29ya2AuIFRoZXNlIGFyZSBOT1QgdGVhcmRvd24gZnVuY3Rpb25zOyB0aGV5J3JlIHRoZSBwcmltYXJ5IHdvcmtxdWV1ZSBoYW5kbGVycyBmb3IgUlgvVFgvRXZlbnQuIFRoZSBidWcgKm1pZ2h0KiBtYW5pZmVzdCBkdXJpbmcgdGVhcmRvd24sIHN1c3BlbmQvcmVzdW1lLCBvciByZXNldCwgYnV0IHRoZSBhY3R1YWwgY29kZSBiZWluZyBtb2RpZmllZCBpcyBpbiB0aGUgY29yZSBkYXRhIHBhdGgg4oCTIFJYIGFuZCBUWCB3b3JrLiBUaGF0IG1ha2VzIHRoaXMgcGF0Y2ggcHJpbWUgZm9yIGZ1enppbmcuXG5cbk5vdywgbGV0J3MgZGlnIGEgYml0IGRlZXBlci4gU3BlY2lmaWNhbGx5LCBpdCB0b3VjaGVzIGB2aXJ0aW9fdnNvY2tfcnhfZmlsbGAsIHdoaWNoIGdldHMgY2FsbGVkIHdpdGhpbiBgdmlydGlvX3RyYW5zcG9ydF9yeF93b3JrYC4gVGhlIHBhdGNoIGFkZHMgYHZzb2NrLVx1MDAzZXJ4X3J1biBcdTAwMjZcdTAwMjZgIGFzIGEgY29uZGl0aW9uIGJlZm9yZSBjYWxsaW5nIGB2aXJ0aW9fdnNvY2tfcnhfZmlsbCh2c29jaylgLiBUaGlzIGlzIGludGVyZXN0aW5nOyB3ZSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGF0IGNvbmRpdGlvbiBzaWduaWZpZXMuXG5cblRvIGVuc3VyZSBJIGhhdmUgYWxsIHRoZSByZWxldmFudCBzeW1ib2xzLCBJIG5lZWQgdG8gZm9jdXMgb246XG4qICAgYHZpcnRpb190cmFuc3BvcnRfdHhfd29ya2BcbiogICBgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrYFxuKiAgIGB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmtgXG4qICAgYHZpcnRpb192c29ja19yeF9maWxsYFxuKiAgIGB2aXJ0aW9fdnNvY2tfZXZlbnRfZG9uZWBcbiogICBgdmlydGlvX3Zzb2NrX3R4X2RvbmVgXG4qICAgYHZpcnRpb192c29ja19yeF9kb25lYFxuXG5Ob3csIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIGB2aXJ0aW9fdnNvY2tfcnhfZmlsbGAgaXMgc3RhdGljLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTAyMSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNTowMjo0Mi4wMjk4NTE4ODZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4OTM1NjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZpcnRpb192c29ja19yeF9maWxsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC92bXdfdnNvY2svXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTI4MD12aXJ0aW9fdHJhbnNwb3J0X2NhbmNlbF9wa3Qoc3RydWN0IHZzb2NrX3NvY2sgKnZzaylcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTMxMC1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzozMTE6c3RhdGljIHZvaWQgdmlydGlvX3Zzb2NrX3J4X2ZpbGwoc3RydWN0IHZpcnRpb192c29jayAqdnNvY2spXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtMzEyLXtcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTYzMj1zdGF0aWMgdm9pZCB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNjk0LVxcdCAgICB2c29jay1cXHUwMDNlcnhfYnVmX25yIFxcdTAwM2MgdnNvY2stXFx1MDAzZXJ4X2J1Zl9tYXhfbnIgLyAyKVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjY5NTpcXHRcXHR2aXJ0aW9fdnNvY2tfcnhfZmlsbCh2c29jayk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNjk2LVxcdG11dGV4X3VubG9jayhcXHUwMDI2dnNvY2stXFx1MDAzZXJ4X2xvY2spO1xcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM9NzI3PXN0YXRpYyB2b2lkIHZpcnRpb192c29ja192cXNfc3RhcnQoc3RydWN0IHZpcnRpb192c29jayAqdnNvY2spXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy03MzMtXFx0bXV0ZXhfbG9jayhcXHUwMDI2dnNvY2stXFx1MDAzZXJ4X2xvY2spO1xcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjczNDpcXHR2aXJ0aW9fdnNvY2tfcnhfZmlsbCh2c29jayk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNzM1LVxcdHZzb2NrLVxcdTAwM2VyeF9ydW4gPSB0cnVlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNTowMjo0Mi4xMDg3OTMxMDVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzYzMjA3NDIwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRhcmdldCBGdW5jdGlvbnMgYW5kIENvbmZpZ3VyYXRpb25zKipcblxuT2theSwgc28gdGhpcyBpcyBzdGF0aWMsIHdoaWNoIG1lYW5zIEkgc2hvdWxkIGhvbmUgaW4gb24gdGhlIGNvcmUgc3ltYm9sczogdGhlIHdvcmsgZnVuY3Rpb25zIGFuZCB0aGUgdmlydHF1ZXVlIGNhbGxiYWNrcy4gU2luY2UgdGhlIHdvcmsgZnVuY3Rpb25zIGFyZSBwYXNzZWQgdG8gYElOSVRfV09SS2AsIHRoZXkgaGF2ZSBkaXN0aW5jdCBhZGRyZXNzZXMgYW5kIGFyZW4ndCBpbmxpbmVkLCB3aGljaCBtYWtlcyB0aGVtIHByaW1lIHRhcmdldHMuIFNwZWNpZmljYWxseSwgSSdtIGxvb2tpbmcgYXQgYHZpcnRpb190cmFuc3BvcnRfdHhfd29ya2AsIGB2aXJ0aW9fdHJhbnNwb3J0X2V2ZW50X3dvcmtgLCBhbmQgYHZpcnRpb190cmFuc3BvcnRfcnhfd29ya2AuXG5cbk5vdywgbGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgdGhhdCBtaWdodCBhbHNvIGJlIHJlbGV2YW50LCBqdXN0IHRvIGJlIHRob3JvdWdoLiBJJ20gdGhpbmtpbmcgb2YgYHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RgLCBgdmlydGlvX3RyYW5zcG9ydF9jYW5jZWxfcGt0YCwgYHZpcnRpb190cmFuc3BvcnRfY29ubmVjdGAsIGB2aXJ0aW9fdHJhbnNwb3J0X3NodXRkb3duYCwgYHZpcnRpb190cmFuc3BvcnRfc3RyZWFtX2VucXVldWVgLCBgdmlydGlvX3RyYW5zcG9ydF9yZXNldGAsIGFuZCBgdmlydGlvX3RyYW5zcG9ydF9zZW5kX3Jlc3BvbnNlYC5cblxuSG93ZXZlciwgdGhlIHBhdGNoICpzcGVjaWZpY2FsbHkqIG1vZGlmaWVzIHRoZSB3b3JrcXVldWUgaGFuZGxlcnMsIHNvIEknbGwgcHJpb3JpdGl6ZSBpbmNsdWRpbmcgdGhlIHdvcmtxdWV1ZSBoYW5kbGVycyBhcyBteSBmb2N1cyBzeW1ib2xzLlxuXG5Nb3Zpbmcgb24gdG8gdGhlIGNvbmZpZ3VyYXRpb25zLCBJIG5lZWQgdG8gbGlzdCB0aGUgcmVsZXZhbnQgb25lcy4gSSdtIHNlZWluZyBgVklSVElPX1ZTT0NLRVRTYCwgYFZTT0NLRVRTYCwgYW5kIGBWSVJUSU9gLiBXYWl0IGEgbWludXRlLCBgVklSVElPX1ZTT0NLRVRTYCAqZGVwZW5kcyogb24gYm90aCBgVlNPQ0tFVFNgIGFuZCBgVklSVElPYC4gU28gSSBzaG91bGQgbGlzdCB0aGVtIGluIHRoYXQgb3JkZXIgb2YgZGVwZW5kZW5jeS4gSSBzaG91bGQgYWxzbyBjaGVjayBpZiBgVklSVElPX1ZTT0NLRVRTX0NPTU1PTmAgaXMgbmVjZXNzYXJ5LiBTaW5jZSBpdCdzIHNlbGVjdGVkIGJ5IGBWSVJUSU9fVlNPQ0tFVFNgLCBpdCBjb3VsZCBiZSB1c2VmdWwgdG8gaW5jbHVkZSBhcyB3ZWxsLlxuXG5UbyBiZSBzdXJlLCBJJ2xsIGRvdWJsZS1jaGVjayBgVklSVElPX1ZTT0NLRVRTYCBpbiBgbmV0L3Ztd192c29jay9LY29uZmlnYC4gUmlnaHQsIGl0IGRlcGVuZHMgb24gYFZTT0NLRVRTYCBhbmQgYFZJUlRJT2AgYW5kIHNlbGVjdHMgYFZJUlRJT19WU09DS0VUU19DT01NT05gLiBUaGF0IGNvbmZpcm1zIHRoYXQgYFZJUlRJT19WU09DS0VUU2AgaXMgdGhlIHByaW1hcnkgY29uZmlnLiBOb3cgSSdsbCBxdWlja2x5IGNoZWNrIGlmIGBWU09DS0VUU2AgaXRzZWxmIGhhcyBhbnkgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjIyMSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNTowMjo0OS43NDA4NzEwNjNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3ODY5MTE5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVlNPQ0tFVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Ztd192c29jay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3Ztd192c29jay9LY29uZmlnLTUtXFxubmV0L3Ztd192c29jay9LY29uZmlnOjY6Y29uZmlnIFZTT0NLRVRTXFxubmV0L3Ztd192c29jay9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgU29ja2V0IHByb3RvY29sXFxcIlxcbi0tXFxubmV0L3Ztd192c29jay9LY29uZmlnLTE4LVxcbm5ldC92bXdfdnNvY2svS2NvbmZpZzoxOTpjb25maWcgVlNPQ0tFVFNfRElBR1xcbm5ldC92bXdfdnNvY2svS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBTb2NrZXRzIG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L3Ztd192c29jay9LY29uZmlnLTI4LVxcbm5ldC92bXdfdnNvY2svS2NvbmZpZzoyOTpjb25maWcgVlNPQ0tFVFNfTE9PUEJBQ0tcXG5uZXQvdm13X3Zzb2NrL0tjb25maWctMzAtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgU29ja2V0cyBsb29wYmFjayB0cmFuc3BvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE1OjAyOjUwLjExOTU2OTczNVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTIxODAyMDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZvciBhbiBleHBlcnQgbGlrZSBteXNlbGY6XG5cbioqRGVwZW5kZW5jeSBBbmFseXNpczogVlNPQ0tFVFMgYW5kIFZJUlRJTyoqXG5cblJpZ2h0LCBzbywgZmlyc3QgdGhpbmdzIGZpcnN0LCBgVlNPQ0tFVFNgIGlzIGJlYXV0aWZ1bGx5IHNlbGYtY29udGFpbmVkLiBObyBleHRlcm5hbCBsaWJyYXJpZXMsIG5vIHVuZGVybHlpbmcgZnJhbWV3b3JrcyBJIG5lZWQgdG8gd29ycnkgYWJvdXQg4oCTIGl0J3MgY2xlYW4gYW5kIGVmZmljaWVudCBmcm9tIGEgZGVwZW5kZW5jeSBwZXJzcGVjdGl2ZSwgd2hpY2ggaXMgYWx3YXlzIGEgd2luIGluIHRoaXMgZ2FtZS5cblxuTm93LCB0aGF0IGJyaW5ncyBtZSB0byBgVklSVElPYC4gR290dGEgcXVpY2tseSByZWZyZXNoIG15IG1lbnRhbCBtYXAgb2YgaXRzIGVjb3N5c3RlbS4gSSBuZWVkIHRvIHJ1biBhIHF1aWNrIG1lbnRhbCBjaGVja2xpc3QgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nOiBBcmUgdGhlcmUgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMgbHVya2luZyB3aXRoaW4gdGhlIGBWSVJUSU9gIGFyY2hpdGVjdHVyZT8gSXMgaXQgc3RhbmRpbmcgb24gaXRzIG93biwgb3IgZG9lcyBpdCByZWx5IG9uIHN1cHBvcnRpbmcgbGlicmFyaWVzIG9yIHVuZGVybHlpbmcgaGFyZHdhcmUgZmVhdHVyZXMgdG8gZnVuY3Rpb24/IE5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbC4gR290dGEgYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMzMzLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTU6MDI6NTQuMDQxMzc1MDk3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDU3MDMzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVklSVElPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlydGlvL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZpcnRpby9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZzoyOmNvbmZpZyBWSVJUSU9fQU5DSE9SXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0zLVxcdGJvb2xcXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTQtXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZzo1OmNvbmZpZyBWSVJUSU9cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTYtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWctMTItXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZzoxMzpjb25maWcgVklSVElPX1BDSV9MSUJcXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTE0LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTIwLVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWc6MjE6Y29uZmlnIFZJUlRJT19QQ0lfTElCX0xFR0FDWVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWctMjItXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWctMjktXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZzozMDptZW51Y29uZmlnIFZJUlRJT19NRU5VXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0zMS1cXHRib29sIFxcXCJWaXJ0aW8gZHJpdmVyc1xcXCJcXG4tLVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWc9MzQ9aWYgVklSVElPX01FTlVcXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTM1LVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWc6MzY6Y29uZmlnIFZJUlRJT19IQVJERU5fTk9USUZJQ0FUSU9OXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0zNy0gICAgICAgIGJvb2wgXFxcIkhhcmRlbiB2aXJ0aW8gbm90aWZpY2F0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy00OS1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjUwOmNvbmZpZyBWSVJUSU9fUENJXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy01MS1cXHR0cmlzdGF0ZSBcXFwiUENJIGRyaXZlciBmb3IgdmlydGlvIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTYyLVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWc6NjM6Y29uZmlnIFZJUlRJT19QQ0lfQURNSU5fTEVHQUNZXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy02NC1cXHRib29sXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTY3LVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWc6Njg6Y29uZmlnIFZJUlRJT19QQ0lfTEVHQUNZXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy02OS1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBsZWdhY3kgdmlydGlvIGRyYWZ0IDAuOS5YIGFuZCBvbGRlciBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy04Ny1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjg4OmNvbmZpZyBWSVJUSU9fVkRQQVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWctODktXFx0dHJpc3RhdGUgXFxcInZEUEEgZHJpdmVyIGZvciB2aXJ0aW8gZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWctMTAwLVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWc6MTAxOmNvbmZpZyBWSVJUSU9fUE1FTVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWctMTAyLVxcdHRyaXN0YXRlIFxcXCJTdXBwb3J0IGZvciB2aXJ0aW8gcG1lbSBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTExMS1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjExMjpjb25maWcgVklSVElPX0JBTExPT05cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTExMy1cXHR0cmlzdGF0ZSBcXFwiVmlydGlvIGJhbGxvb24gZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0xMjItXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZzoxMjM6Y29uZmlnIFZJUlRJT19NRU1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTEyNC1cXHR0cmlzdGF0ZSBcXFwiVmlydGlvIG1lbSBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTE0Mi1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjE0Mzpjb25maWcgVklSVElPX0lOUFVUXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0xNDQtXFx0dHJpc3RhdGUgXFxcIlZpcnRpbyBpbnB1dCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTE1Mi1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjE1Mzpjb25maWcgVklSVElPX01NSU9cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTE1NC1cXHR0cmlzdGF0ZSBcXFwiUGxhdGZvcm0gYnVzIGRyaXZlciBmb3IgbWVtb3J5IG1hcHBlZCB2aXJ0aW8gZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWctMTYyLVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWc6MTYzOmNvbmZpZyBWSVJUSU9fTU1JT19DTURMSU5FX0RFVklDRVNcXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTE2NC1cXHRib29sIFxcXCJNZW1vcnkgbWFwcGVkIHZpcnRpbyBkZXZpY2VzIHBhcmFtZXRlciBwYXJzaW5nXFxcIlxcbi0tXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0xNzMtXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZzoxNzQ6Y29uZmlnIFZJUlRJT19ETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMvdmlydGlvL0tjb25maWctMTc1LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTE4MC1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjE4MTpjb25maWcgVklSVElPX0RFQlVHXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0xODItXFx0Ym9vbCBcXFwiRGVidWcgZmFjaWxpdGllc1xcXCJcXG4tLVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWctMTkwLVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWc6MTkxOmNvbmZpZyBWSVJUSU9fUlRDXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0xOTItXFx0dHJpc3RhdGUgXFxcIlZpcnRpbyBSVEMgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZz0yMTE9Y29tbWVudCBcXFwiRW5hYmxlIFBUUF8xNTg4X0NMT0NLIGluIG9yZGVyIHRvIGVuYWJsZSBWSVJUSU9fUlRDX1BUUC5cXFwiXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTIxMy1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjIxNDpjb25maWcgVklSVElPX1JUQ19QVFBcXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTIxNS1cXHRib29sIFxcXCJWaXJ0aW8gUlRDIFBUUCBjbG9ja3NcXFwiXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTIyNC1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnOjIyNTpjb25maWcgVklSVElPX1JUQ19BUk1cXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTIyNi1cXHRib29sIFxcXCJWaXJ0aW8gUlRDIGNyb3NzLXRpbWVzdGFtcGluZyB1c2luZyBBcm0gR2VuZXJpYyBUaW1lclxcXCJcXG4tLVxcbmRyaXZlcnMvdmlydGlvL0tjb25maWc9MjM4PWNvbW1lbnQgXFxcIkVuYWJsZSBSVENfQ0xBU1MgaW4gb3JkZXIgdG8gZW5hYmxlIFZJUlRJT19SVENfQ0xBU1MuXFxcIlxcbi0tXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZy0yNDAtXFxuZHJpdmVycy92aXJ0aW8vS2NvbmZpZzoyNDE6Y29uZmlnIFZJUlRJT19SVENfQ0xBU1NcXG5kcml2ZXJzL3ZpcnRpby9LY29uZmlnLTI0Mi1cXHRib29sIFxcXCJSZWFsIFRpbWUgQ2xvY2sgZHJpdmVyIGZvciBWaXJ0aW8gUlRDXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNTowMjo1NC4xMTE5NTE2MDVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTY5NDAzOTA1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBWSVJUSU8gYW5kIFJlbGV2YW50IFN5bWJvbHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBWSVJUSU9gIGNvbmZpZ3VyYXRpb24uIEl0J3MgYSB0cmlzdGF0ZSwgYW5kIGNydWNpYWxseSwgaXQgaGFzICpubyogZGVwZW5kZW5jaWVzIG90aGVyIHRoYW4gaXRzZWxmLCB3aGljaCBtZWFucyBpdCBleGlzdHMgb24gaXRzIG93biBwbGFuZSBpbiB0aGUgY29uZmlndXJhdGlvbiB0cmVlLiBUaGF0J3MgZ29vZCB0byBrbm93LiBUaGUgaW1wbGljYXRpb24gaGVyZSBpcyB0aGF0IHdlIGhhdmUgdGhyZWUgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgVklSVElPX1ZTT0NLRVRTYCwgYFZTT0NLRVRTYCwgYW5kIGBWSVJUSU9gIGl0c2VsZi5cblxuV2FpdCwgSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgYFZJUlRJT19NRU5VYCBjb250cm9scyB2aXNpYmlsaXR5IG9mIHRoZSBtZW51LiBBbHRob3VnaCB0aGUgdGV4dCBzZWVtcyB0byBpbXBseSBgVklSVElPX01FTlVgIG11c3QgYmUgc2V0IGZvciB0aGUgbWVudSB0byBiZSB2aXNpYmxlLCBgVklSVElPYCBpcyBpbmRlcGVuZGVudCBvZiB0aGlzLCBvciBhbnkgb3RoZXIgb3B0aW9uIG90aGVyIHRoYW4gaXRzZWxmLCBhcyBpdCdzIGEgdHJpc3RhdGUuIEkgYW0gcHJldHR5IHN1cmUgYFZJUlRJT19WU09DS0VUU2AgaXMgdGhlIGtleSwgYXMgaXQgc2VsZWN0cyBgVklSVElPX1ZTT0NLRVRTX0NPTU1PTmAgYW5kIGRlcGVuZHMgb24gKmJvdGgqIGBWU09DS0VUU2AgYW5kIGBWSVJUSU9gLiBTbyBteSBwcmltYXJ5IGZvY3VzIHdpbGwgYmUgb24gdGhlIGNvbWJpbmF0aW9uLiBUaGVyZWZvcmUsIEkgd2lsbCBsaXN0IHRoZXNlOiBgVklSVElPX1ZTT0NLRVRTYCwgYFZTT0NLRVRTYCwgYW5kIGBWSVJUSU9gLlxuXG5Ob3csIG1vdmluZyBvbiB0byB0aGUgY29kZSBpdHNlbGYsIEknbSBub3Rpbmcgc3BlY2lmaWMgZnVuY3Rpb25zIHRvIGtlZXAgYW4gZXllIG9uLiBJIG5lZWQgdG8gZm9jdXMgb246IGB2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmtgLCBgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrYCwgYHZpcnRpb190cmFuc3BvcnRfcnhfd29ya2AsIGFuZCBhbHNvIGB2aXJ0aW9fdnNvY2tfcnhfZmlsbGAuIEkgd2lsbCBuZWVkIHRvIGNvbnNpZGVyIHRoZSBjb250ZXh0IG9mIHRoZXNlIGZ1bmN0aW9ucyBhbmQgaG93IHRoZXkncmUgdXNlZC5cblxuVGhlIHBhdGNoIG1vZGlmaWVzIGB2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmtgLCBgdmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrYCwgYW5kIGB2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmtgLiBUaGF0IG1ha2VzIHNlbnNlLiBJIHdpbGwgc3RhcnQgYnkgbGlzdGluZyB0aGVzZS5cblxuSGFuZyBvbi4gVGhlcmUncyBhIGd1aWRlbGluZSBhYm91dCBwcmVmZXJyaW5nIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBUaGlzIGlzIGltcG9ydGFudC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBzdGF0aWM7IG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgdGhleSBtaWdodCBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlci4gSG93ZXZlciwgdGhlIGZ1bmN0aW9ucyBhcmUgcGFzc2VkIHRvIGBJTklUX1dPUktgLiBTaW5jZSB0aGUgY29tcGlsZXIgbmVlZHMgdG8gdGFrZSB0aGVpciBhZGRyZXNzZXMgdG8gdXNlIHRoZW0gaW4gdGhpcyBtYW5uZXIsIHRoZXkgKmNhbm5vdCogYmUgZnVsbHkgaW5saW5lZC4gVGhlIGNvbXBpbGVyIGhhcyB0byBlbWl0IHRoZWlyIGJvZHkgc29tZXdoZXJlLiBJIHNob3VsZCB0aGVyZWZvcmUgYWxzbyBsaXN0IGZ1bmN0aW9ucyB0aGF0IHF1ZXVlIHRoZSB3b3JrLiBJJ2xsIGluY2x1ZGUgYHZpcnRpb192c29ja190eF9kb25lYCwgYHZpcnRpb192c29ja19ldmVudF9kb25lYCwgYW5kIGB2aXJ0aW9fdnNvY2tfcnhfZG9uZWAuXG5cbkFoLCBhbmQgSSBzaG91bGQgYWRkIGB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0YCBhcyB3ZWxsLCBzaW5jZSB0aGF0J3MgYSBub24tc3RhdGljIGVudHJ5IHBvaW50LlxuXG5JJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIGB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0YCwgYW5kIG1ha2Ugc3VyZSBpdCBpcyBpbiBsaW5lIHdpdGggdGhlIGluc3RydWN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ5MTIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTU6MDM6MDMuODA1OTk0NjgxWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjkxMzQwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC92bXdfdnNvY2svXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTMwPXN0cnVjdCB2aXJ0aW9fdnNvY2sge1xcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNjEtXFx0LyogVGhlc2UgZmllbGRzIGFyZSB1c2VkIG9ubHkgaW4gdHggcGF0aCBpbiBmdW5jdGlvblxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjYyOlxcdCAqICd2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X3dvcmsoKScsIHNvIHRvIHNhdmVcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy02My1cXHQgKiBzdGFjayBzcGFjZSBpbiBpdCwgcGxhY2UgYm90aCBvZiB0aGVtIGhlcmUuIEVhY2hcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jPTE1Nz1zdGF0aWMgdm9pZFxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjE1ODp2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTE1OS17XFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz0yMzY9c3RhdGljIGludFxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjIzNzp2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy0yMzgte1xcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM9NTU3PXN0YXRpYyBzdHJ1Y3QgdmlydGlvX3RyYW5zcG9ydCB2aXJ0aW9fdHJhbnNwb3J0ID0ge1xcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtNjA4LVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jOjYwOTpcXHQuc2VuZF9wa3QgPSB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0LFxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTYxMC1cXHQuY2FuX21zZ3plcm9jb3B5ID0gdmlydGlvX3RyYW5zcG9ydF9jYW5fbXNnemVyb2NvcHksXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYz03Mjc9c3RhdGljIHZvaWQgdmlydGlvX3Zzb2NrX3Zxc19zdGFydChzdHJ1Y3QgdmlydGlvX3Zzb2NrICp2c29jaylcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydC5jLTc0Mi1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYzo3NDM6XFx0LyogdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdCgpIGNhbiBxdWV1ZSBwYWNrZXRzIG9uY2VcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYy03NDQtXFx0ICogdGhlX3ZpcnRpb192c29jayBpcyBzZXQsIGJ1dCB0aGV5IHdvbid0IGJlIHByb2Nlc3NlZCB1bnRpbFxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM9ODAwPXN0YXRpYyBpbnQgdmlydGlvX3Zzb2NrX3Byb2JlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtODMyLVxcdElOSVRfV09SSyhcXHUwMDI2dnNvY2stXFx1MDAzZWV2ZW50X3dvcmssIHZpcnRpb190cmFuc3BvcnRfZXZlbnRfd29yayk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmM6ODMzOlxcdElOSVRfV09SSyhcXHUwMDI2dnNvY2stXFx1MDAzZXNlbmRfcGt0X3dvcmssIHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3Rfd29yayk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0LmMtODM0LVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTIxMj1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZpcnRpb190cmFuc3BvcnRfYWxsb2Nfc2tiKHN0cnVjdCB2aXJ0aW9fdnNvY2tfcGt0X2luZm8gKmluZm8sXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMjk4LSAqL1xcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoyOTk6c3RhdGljIGludCB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X2luZm8oc3RydWN0IHZzb2NrX3NvY2sgKnZzayxcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMzAwLVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHZpcnRpb192c29ja19wa3RfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz02NTU9c3RhdGljIGludCB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfY3JlZGl0X3VwZGF0ZShzdHJ1Y3QgdnNvY2tfc29jayAqdnNrKVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTY2Mi1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6NjYzOlxcdHJldHVybiB2aXJ0aW9fdHJhbnNwb3J0X3NlbmRfcGt0X2luZm8odnNrLCBcXHUwMDI2aW5mbyk7XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTY2NC19XFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM9MTIwMj1pbnQgdmlydGlvX3RyYW5zcG9ydF9jb25uZWN0KHN0cnVjdCB2c29ja19zb2NrICp2c2spXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTIwOS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6MTIxMDpcXHRyZXR1cm4gdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF9pbmZvKHZzaywgXFx1MDAyNmluZm8pO1xcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMjExLX1cXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz0xMjE0PWludCB2aXJ0aW9fdHJhbnNwb3J0X3NodXRkb3duKHN0cnVjdCB2c29ja19zb2NrICp2c2ssIGludCBtb2RlKVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTEyMjUtXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jOjEyMjY6XFx0cmV0dXJuIHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RfaW5mbyh2c2ssIFxcdTAwMjZpbmZvKTtcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTIyNy19XFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM9MTI0MT12aXJ0aW9fdHJhbnNwb3J0X3N0cmVhbV9lbnF1ZXVlKHN0cnVjdCB2c29ja19zb2NrICp2c2ssXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTI1Mi1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6MTI1MzpcXHRyZXR1cm4gdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF9pbmZvKHZzaywgXFx1MDAyNmluZm8pO1xcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMjU0LX1cXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz0xMjgxPXN0YXRpYyBpbnQgdmlydGlvX3RyYW5zcG9ydF9yZXNldChzdHJ1Y3QgdnNvY2tfc29jayAqdnNrLFxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTEyOTQtXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jOjEyOTU6XFx0cmV0dXJuIHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RfaW5mbyh2c2ssIFxcdTAwMjZpbmZvKTtcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTI5Ni19XFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM9MTMwNT1zdGF0aWMgaW50IHZpcnRpb190cmFuc3BvcnRfcmVzZXRfbm9fc29jayhjb25zdCBzdHJ1Y3QgdmlydGlvX3RyYW5zcG9ydCAqdCxcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xMzIxLVxcdFxcdCAqIHQtXFx1MDAzZXNlbmRfcGt0KCksIGluc3RlYWQgb2YgcmVseWluZyBvblxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoxMzIyOlxcdFxcdCAqIHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RfaW5mbygpIHRvIHBhc3MgaXQuIEl0IGlzIG5vdCBuZWVkZWRcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTMyMy1cXHRcXHQgKiBieSB2aXJ0aW9fdHJhbnNwb3J0X2FsbG9jX3NrYigpLlxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTE2NDg9dmlydGlvX3RyYW5zcG9ydF9zZW5kX3Jlc3BvbnNlKHN0cnVjdCB2c29ja19zb2NrICp2c2ssXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMTY2MC1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6MTY2MTpcXHRyZXR1cm4gdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF9pbmZvKHZzaywgXFx1MDAyNmluZm8pO1xcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0xNjYyLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTU6MDM6MDMuODk4OTE3MjA5WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDU4OTQzNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgYHZpcnRpb190cmFuc3BvcnRfc2VuZF9wa3RgIEZ1bmN0aW9uKipcblxuSG1tLCBgdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdGAuIFRoYXQgZnVuY3Rpb24gbmFtZSByaW5ncyBhIGJlbGwuIE5vdywgaXNuJ3QgdGhhdCBzdGF0aWMgaW4gYHZpcnRpb190cmFuc3BvcnQuY2A/IEFoLCB5ZXMsIGl0IHNlZW1zIHRvIGJlIGRlY2xhcmVkIGFzIHN0YXRpYy4gTGV0IG1lIGp1c3QgY29uZmlybSB0aGF0Li4uIE9rYXksIGxldCBtZSBqdXN0IGRvdWJsZSBjaGVjayBgdmlydGlvX3RyYW5zcG9ydC5jYCBiZWNhdXNlIEkgY291bGQgc3dlYXIgaXQgd2FzLiBMaW5lIDIzNi4uLiBHb3QgaXQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3ODE1LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTU6MDM6MDcuNjQ0ODE1MjE0WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDAzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMzA6XFx0XFxuIDIzMTpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnZzb2NrLVxcdTAwM2V0eF9sb2NrKTtcXG4gMjMyOlxcdFxcbiAyMzM6XFx0XFx0cmV0dXJuIHJldDtcXG4gMjM0OlxcdH1cXG4gMjM1OlxcdFxcbiAyMzY6XFx0c3RhdGljIGludFxcbiAyMzc6XFx0dmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0ICpuZXQpXFxuIDIzODpcXHR7XFxuIDIzOTpcXHRcXHRzdHJ1Y3QgdmlydGlvX3Zzb2NrX2hkciAqaGRyO1xcbiAyNDA6XFx0XFx0c3RydWN0IHZpcnRpb192c29jayAqdnNvY2s7XFxuIDI0MTpcXHRcXHRpbnQgbGVuID0gc2tiLVxcdTAwM2VsZW47XFxuIDI0MjpcXHRcXG4gMjQzOlxcdFxcdGhkciA9IHZpcnRpb192c29ja19oZHIoc2tiKTtcXG4gMjQ0OlxcdFxcbiAyNDU6XFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbiAyNDY6XFx0XFx0dnNvY2sgPSByY3VfZGVyZWZlcmVuY2UodGhlX3ZpcnRpb192c29jayk7XFxuIDI0NzpcXHRcXHRpZiAoIXZzb2NrKSB7XFxuIDI0ODpcXHRcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gMjQ5OlxcdFxcdFxcdGxlbiA9IC1FTk9ERVY7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE1OjAzOjA3LjY0NDkyMTM2NVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTgzNDE2MjMxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgVmlydGlvLVZTb2NrIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIHBhdGNoLiBUaGUga2V5IGhlcmUgaXMgdGhhdCBpdCdzIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgbnVsbC1wb2ludGVyIGRlcmVmZXJlbmNlIHdpdGhpbiB0aGUgdmlydGlvIHZzb2NrIHdvcmtxdWV1ZSBoYW5kbGVycy4gSSBzZWUgdGhlIG1haW4gZm9jdXMgaXMgb24gYHZpcnRpb190cmFuc3BvcnRfdHhfd29ya2AsIGB2aXJ0aW9fdHJhbnNwb3J0X2V2ZW50X3dvcmtgLCBhbmQgYHZpcnRpb190cmFuc3BvcnRfcnhfd29ya2AuIFRoZXNlIGFyZSB0aGUgaGFuZGxlcnMgdGhhdCBwcm9jZXNzIHRoZSBpbmNvbWluZyBhbmQgb3V0Z29pbmcgZGF0YSwgYW5kIGV2ZW50cywgYW5kIHRoZXkncmUgdGhlIGNyaXRpY2FsIHBhdGhzIHRvIGZ1enouIFllcywgSSB1bmRlcnN0YW5kIHRoZXkncmUgc3RhdGljIGZ1bmN0aW9ucy4gQnV0IGNydWNpYWxseSwgdGhlaXIgYWRkcmVzc2VzIGFyZSB0YWtlbiBmb3IgYElOSVRfV09SS2AsIG1lYW5pbmcgdGhleSAqd29uJ3QqIGJlIGlubGluZWQgYW5kIHRoZXknbGwgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLCB3aGljaCBpcyB3aGF0IEkgbmVlZC5cblxuTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyAqZGVmaW5pdGVseSogc29tZXRoaW5nIHdlIHNob3VsZCBiZSBmdXp6aW5nIChgV29ydGhGdXp6aW5nOiB0cnVlYCkuIFRoZSBwYXRjaCBhaW1zIHRvIHN5bmNocm9uaXplIGFjY2VzcyB0byB0aGUgdmlydHF1ZXVlcyB3aXRoaW4gdGhlc2UgaGFuZGxlcnMsIHNwZWNpZmljYWxseSBlbnN1cmluZyB0aGF0IHRoZXkncmUgb25seSBhY2Nlc3NlZCB3aGVuIHRoZSByZWxldmFudCBcInJ1blwiIGZsYWcgaXMgdHJ1ZSAqaW5zaWRlIHRoZSBsb2NrKi4gVGhpcyBkaXJlY3RseSBhZGRyZXNzZXMgdGhlIHJhY2UgY29uZGl0aW9uLiBHaXZlbiB0aGF0IHZpcnRpby12c29jayBpcyBhIGNvcmUgY29tcG9uZW50IG9mdGVuIHVzZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgdGhlIGV4cG9zdXJlIGlzIGhpZ2gsIGFuZCB0aGlzIGlzIGEgZ29vZCB0YXJnZXQuXG5cbkZvciBmdXp6aW5nIGNvbmZpZ3VyYXRpb24sIEknbGwgbmVlZCB0byBlbmFibGUgYSBmZXcga2V5IG9wdGlvbnMuIEkndmUgY29uZmlybWVkIGBWSVJUSU9fVlNPQ0tFVFNgLCB3aGljaCB0aGVuIGFsc28gZW5hYmxlcyBgVlNPQ0tFVFNgIGFuZCBgVklSVElPYC4gVGhlIHVzZSBvZiBgc2VsZWN0YCBtZWFucyBJIGRvbid0IG5lZWQgdG8gZXhwbGljaXRseSBlbmFibGUgYFZJUlRJT19WU09DS0VUU19DT01NT05gLCBidXQgaXQgd29uJ3QgaHVydCB0byBhZGQgaXQgZWl0aGVyLCBzbyBJJ20gb21pdHRpbmcgaXQuXG5cbkxvb2tpbmcgYXQgdGhlIGNvZGUgbW9yZSBjbG9zZWx5LCBgdmlydGlvX3Zzb2NrX3J4X2ZpbGxgIGlzIGFsc28gbW9kaWZpZWQsIHdpdGggYSBjaGVjayBhZGRlZC4gU28sIEkgd2lsbCBpbmNsdWRlIHRoYXQgaW4gdGhlIHRhcmdldC4gSSdsbCBpbmNsdWRlIGB2aXJ0aW9fdnNvY2tfcnhfZmlsbGAgaW4gYEZvY3VzU3ltYm9sc2AuXG5cblRoZXJlZm9yZSwgbXkgZmluYWxpemVkIHN1bW1hcnkgZm9yIHRoaXMgZnV6emluZyBlZmZvcnQgaXM6XG5cbmBgYGpzb25cbntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmlydGlvX3RyYW5zcG9ydF90eF93b3JrXCIsXG4gICAgXCJ2aXJ0aW9fdHJhbnNwb3J0X2V2ZW50X3dvcmtcIixcbiAgICBcInZpcnRpb190cmFuc3BvcnRfcnhfd29ya1wiLFxuICAgIFwidmlydGlvX3Zzb2NrX3J4X2ZpbGxcIlxuICBdLFxuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVklSVElPX1ZTT0NLRVRTXCIsXG4gICAgXCJWU09DS0VUU1wiLFxuICAgIFwiVklSVElPXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB2aXJ0aW8gdnNvY2sgd29ya3F1ZXVlIGhhbmRsZXJzIChUWCwgUlgsIEV2ZW50KSBhbmQgcngtZmlsbCwgd2hlcmUgdmlydHF1ZXVlcyBjb3VsZCBiZSBhY2Nlc3NlZCBhZnRlciB0aGV5IGFyZSBubyBsb25nZXIgdmFsaWQuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUgbG9naWMgZm9yIHZpcnRpby12c29jaywgd2hpY2ggaXMgY29tbW9ubHkgdXNlZCBhbmQgZnV6emVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIlxufVxuYGBgXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MzE0LCJPdXRwdXRUb2tlbnMiOjE0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE1OjAzOjE5LjQ3OTA4NjQ1OFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzMjgwNTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSVJUSU9fVlNPQ0tFVFNcIixcbiAgICBcIlZTT0NLRVRTXCIsXG4gICAgXCJWSVJUSU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2aXJ0aW9fdHJhbnNwb3J0X3R4X3dvcmtcIixcbiAgICBcInZpcnRpb190cmFuc3BvcnRfZXZlbnRfd29ya1wiLFxuICAgIFwidmlydGlvX3RyYW5zcG9ydF9yeF93b3JrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB2aXJ0aW8gdnNvY2sgd29ya3F1ZXVlIGhhbmRsZXJzIChUWCwgUlgsIEV2ZW50KSB3aGVyZSB2aXJ0cXVldWVzIGNvdWxkIGJlIGFjY2Vzc2VkIGFmdGVyIHRoZXkgYXJlIG5vIGxvbmdlciB2YWxpZC4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBsb2dpYyBmb3IgdmlydGlvLXZzb2NrLCB3aGljaCBpcyBjb21tb25seSB1c2VkIGFuZCBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZJUlRJT19WU09DS0VUU1wiLFxuICAgIFwiVlNPQ0tFVFNcIixcbiAgICBcIlZJUlRJT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZpcnRpb190cmFuc3BvcnRfdHhfd29ya1wiLFxuICAgIFwidmlydGlvX3RyYW5zcG9ydF9ldmVudF93b3JrXCIsXG4gICAgXCJ2aXJ0aW9fdHJhbnNwb3J0X3J4X3dvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHZpcnRpbyB2c29jayB3b3JrcXVldWUgaGFuZGxlcnMgKFRYLCBSWCwgRXZlbnQpIHdoZXJlIHZpcnRxdWV1ZXMgY291bGQgYmUgYWNjZXNzZWQgYWZ0ZXIgdGhleSBhcmUgbm8gbG9uZ2VyIHZhbGlkLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGxvZ2ljIGZvciB2aXJ0aW8tdnNvY2ssIHdoaWNoIGlzIGNvbW1vbmx5IHVzZWQgYW5kIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6wkd[1] Phase: Succeeded StartedAt: 2026-07-27 15:03:32 +0000 UTC FinishedAt: 2026-07-27 15:03:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6wkd[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-27 15:03:32 +0000 UTC FinishedAt: 2026-07-27 15:03:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6wkd[2] Phase: Succeeded StartedAt: 2026-07-27 15:03:32 +0000 UTC FinishedAt: 2026-07-27 19:18:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-27 15:03:32 +0000 UTC FinishedAt: 2026-07-27 19:18:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-27 15:03:32 +0000 UTC FinishedAt: 2026-07-27 15:03:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-27 15:03:32 +0000 UTC FinishedAt: 2026-07-27 15:03:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf6wkd/series-workflowf6wkd-convert-artifact-4005136130/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-27 15:03:52 +0000 UTC FinishedAt: 2026-07-27 15:28:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-27 15:03:52 +0000 UTC FinishedAt: 2026-07-27 15:28:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a508c21d-de1c-41fb-86b4-00ad2e849b3d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf6wkd/series-workflowf6wkd-convert-artifact-4005136130/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "e76bcc75-78d7-45be-9846-92ab90d066cf", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf6wkd/series-workflowf6wkd-build-action-1385764288/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-27 15:03:52 +0000 UTC FinishedAt: 2026-07-27 15:27:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a508c21d-de1c-41fb-86b4-00ad2e849b3d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf6wkd/series-workflowf6wkd-convert-artifact-4005136130/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "e76bcc75-78d7-45be-9846-92ab90d066cf", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf6wkd/series-workflowf6wkd-build-action-1385764288/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-27 15:28:05 +0000 UTC FinishedAt: 2026-07-27 15:28:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-27 15:28:05 +0000 UTC FinishedAt: 2026-07-27 15:28:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-27 15:28:05 +0000 UTC FinishedAt: 2026-07-27 15:28:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-27 15:28:05 +0000 UTC FinishedAt: 2026-07-27 15:28:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf6wkd/series-workflowf6wkd-convert-artifact-758478173/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-27 15:28:15 +0000 UTC FinishedAt: 2026-07-27 15:30:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-27 15:28:15 +0000 UTC FinishedAt: 2026-07-27 15:30:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e76bcc75-78d7-45be-9846-92ab90d066cf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf6wkd/series-workflowf6wkd-build-action-1385764288/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-27 15:30:20 +0000 UTC FinishedAt: 2026-07-27 15:30:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-27 15:30:20 +0000 UTC FinishedAt: 2026-07-27 15:30:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-27 15:30:20 +0000 UTC FinishedAt: 2026-07-27 16:10:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-27 15:30:20 +0000 UTC FinishedAt: 2026-07-27 16:10:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a508c21d-de1c-41fb-86b4-00ad2e849b3d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf6wkd/series-workflowf6wkd-convert-artifact-758478173/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "f2ab1c85-3373-4b3e-8e2a-af0c9a2f2882", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf6wkd/series-workflowf6wkd-build-action-1485485625/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-27 15:30:20 +0000 UTC FinishedAt: 2026-07-27 16:10:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a508c21d-de1c-41fb-86b4-00ad2e849b3d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf6wkd/series-workflowf6wkd-convert-artifact-758478173/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "f2ab1c85-3373-4b3e-8e2a-af0c9a2f2882", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf6wkd/series-workflowf6wkd-build-action-1485485625/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-27 16:10:40 +0000 UTC FinishedAt: 2026-07-27 16:10:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-27 16:10:40 +0000 UTC FinishedAt: 2026-07-27 16:10:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-27 16:10:40 +0000 UTC FinishedAt: 2026-07-27 16:12:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-27 16:10:40 +0000 UTC FinishedAt: 2026-07-27 16:12:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f2ab1c85-3373-4b3e-8e2a-af0c9a2f2882,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf6wkd/series-workflowf6wkd-build-action-1485485625/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-27 16:12:50 +0000 UTC FinishedAt: 2026-07-27 19:18:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-27 16:12:50 +0000 UTC FinishedAt: 2026-07-27 19:18:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*e76bcc75-78d7-45be-9846-92ab90d066cf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f2ab1c85-3373-4b3e-8e2a-af0c9a2f2882,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf6wkd/series-workflowf6wkd-build-action-1385764288/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf6wkd/series-workflowf6wkd-build-action-1485485625/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-27 16:12:50 +0000 UTC FinishedAt: 2026-07-27 16:13:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-27 16:12:50 +0000 UTC FinishedAt: 2026-07-27 16:12:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf6wkd/series-workflowf6wkd-convert-artifact-1075813858/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-27 16:12:50 +0000 UTC FinishedAt: 2026-07-27 16:12:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-27 16:12:50 +0000 UTC FinishedAt: 2026-07-27 16:12:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-27 16:12:50 +0000 UTC FinishedAt: 2026-07-27 16:12:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-27 16:13:00 +0000 UTC FinishedAt: 2026-07-27 19:18:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6wkd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["virtio_transport_tx_work","virtio_transport_event_work","virtio_transport_rx_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_VSOCKETS","VSOCKETS","VIRTIO"],"series_id":"f89370a8-640f-423d-9a80-36627d7f307e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-27 16:13:00 +0000 UTC FinishedAt: 2026-07-27 19:18:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e76bcc75-78d7-45be-9846-92ab90d066cf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f2ab1c85-3373-4b3e-8e2a-af0c9a2f2882,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf6wkd/series-workflowf6wkd-build-action-1385764288/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf6wkd/series-workflowf6wkd-build-action-1485485625/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf6wkd/series-workflowf6wkd-convert-artifact-1075813858/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}