Final Call for Papers: PACMPL issue ICFP 2018
"'Lindsey Kuper' via MLton-user" <[email protected]> Thu, 08 Mar 2018 12:09:11 -0800
| Newsgroups | gmane.comp.lang.ml.mlton.user |
|---|---|
| Message-ID | <[email protected]> |
ICAgICAgICAgICAgICAgICAgICBQQUNNUEwgVm9sdW1lIDIsIElzc3VlIElDRlAgMjAxOAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbCBmb3IgUGFwZXJzIAoKICAgICAgICAgICAgYWNj ZXB0ZWQgcGFwZXJzIHRvIGJlIGludml0ZWQgZm9yIHByZXNlbnRhdGlvbiBhdAogVGhlIDIzcmQg QUNNIFNJR1BMQU4gSW50ZXJuYXRpb25hbCBDb25mZXJlbmNlIG9uIEZ1bmN0aW9uYWwgUHJvZ3Jh bW1pbmcgCiAgICAgICAgICAgICAgICAgICAgICAgIFN0LiBMb3VpcywgTWlzc291cmksIFVTQSAK ICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vaWNmcDE4LnNpZ3BsYW4ub3JnLwoKIyMjIElt cG9ydGFudCBkYXRlcyAKClN1Ym1pc3Npb25zIGR1ZTogICAgMTYgTWFyY2ggMjAxOCAoRnJpZGF5 KSBBbnl3aGVyZSBvbiBFYXJ0aCAKICAgICAgICAgICAgICAgICAgICBodHRwczovL2ljZnAxOC5o b3RjcnAuY29tIApBdXRob3IgcmVzcG9uc2U6ICAgIDIgTWF5IChXZWRuZXNkYXkpIC0gNCBNYXkg KEZyaWRheSkgMTQ6MDAgVVRDCk5vdGlmaWNhdGlvbjogICAgICAgMTggTWF5IChGcmlkYXkpCkZp bmFsIGNvcHkgZHVlOiAgICAgMjIgSnVuZSAoRnJpZGF5KQpDb25mZXJlbmNlOiAgICAgICAgIDI0 IFNlcHRlbWJlciAoTW9uZGF5KSAtIDI2IFNlcHRlbWJlciAoV2VkbmVzZGF5KQoKIyMjIEFib3V0 IFBBQ01QTAoKUHJvY2VlZGluZ3Mgb2YgdGhlIEFDTSBvbiBQcm9ncmFtbWluZyBMYW5ndWFnZXMg KFBBQ01QTCA8aHR0cHM6Ly9wYWNtcGwuYWNtLm9yZy8+KSBpcyBhIEdvbGQgT3BlbiBBY2Nlc3Mg am91cm5hbCBwdWJsaXNoaW5nIHJlc2VhcmNoIG9uIGFsbCBhc3BlY3RzIG9mIHByb2dyYW1taW5n IGxhbmd1YWdlcywgZnJvbSBkZXNpZ24gdG8gaW1wbGVtZW50YXRpb24gYW5kIGZyb20gbWF0aGVt YXRpY2FsIGZvcm1hbGlzbXMgdG8gZW1waXJpY2FsIHN0dWRpZXMuIEVhY2ggaXNzdWUgb2YgdGhl IGpvdXJuYWwgaXMgZGV2b3RlZCB0byBhIHBhcnRpY3VsYXIgc3ViamVjdCBhcmVhIHdpdGhpbiBw cm9ncmFtbWluZyBsYW5ndWFnZXMgYW5kIHdpbGwgYmUgYW5ub3VuY2VkIHRocm91Z2ggcHVibGlj aXplZCBDYWxscyBmb3IgUGFwZXJzLCBsaWtlIHRoaXMgb25lLgoKIyMjIFNjb3BlCgpbUEFDTVBM XShodHRwczovL3BhY21wbC5hY20ub3JnLykgaXNzdWUgSUNGUCAyMDE4IHNlZWtzIG9yaWdpbmFs IHBhcGVycyBvbiB0aGUgYXJ0IGFuZCBzY2llbmNlIG9mIGZ1bmN0aW9uYWwgcHJvZ3JhbW1pbmcu IFN1Ym1pc3Npb25zIGFyZSBpbnZpdGVkIG9uIGFsbCB0b3BpY3MgZnJvbSBwcmluY2lwbGVzIHRv IHByYWN0aWNlLCBmcm9tIGZvdW5kYXRpb25zIHRvIGZlYXR1cmVzLCBhbmQgZnJvbSBhYnN0cmFj dGlvbiB0byBhcHBsaWNhdGlvbi4gVGhlIHNjb3BlIGluY2x1ZGVzIGFsbCBsYW5ndWFnZXMgdGhh dCBlbmNvdXJhZ2UgZnVuY3Rpb25hbCBwcm9ncmFtbWluZywgaW5jbHVkaW5nIGJvdGggcHVyZWx5 IGFwcGxpY2F0aXZlIGFuZCBpbXBlcmF0aXZlIGxhbmd1YWdlcywgYXMgd2VsbCBhcyBsYW5ndWFn ZXMgd2l0aCBvYmplY3RzLCBjb25jdXJyZW5jeSwgb3IgcGFyYWxsZWxpc20uIFRvcGljcyBvZiBp bnRlcmVzdCBpbmNsdWRlIChidXQgYXJlIG5vdCBsaW1pdGVkIHRvKToKCiAgKiAqTGFuZ3VhZ2Ug RGVzaWduKjogY29uY3VycmVuY3ksIHBhcmFsbGVsaXNtLCBhbmQgZGlzdHJpYnV0aW9uOyBtb2R1 bGVzOyBjb21wb25lbnRzIGFuZCBjb21wb3NpdGlvbjsgbWV0YXByb2dyYW1taW5nOyB0eXBlIHN5 c3RlbXM7IGludGVyb3BlcmFiaWxpdHk7IGRvbWFpbi1zcGVjaWZpYyBsYW5ndWFnZXM7IGFuZCBy ZWxhdGlvbnMgdG8gaW1wZXJhdGl2ZSwgb2JqZWN0LW9yaWVudGVkLCBvciBsb2dpYyBwcm9ncmFt bWluZy4KCiAgKiAqSW1wbGVtZW50YXRpb24qOiBhYnN0cmFjdCBtYWNoaW5lczsgdmlydHVhbCBt YWNoaW5lczsgaW50ZXJwcmV0YXRpb247IGNvbXBpbGF0aW9uOyBjb21waWxlLXRpbWUgYW5kIHJ1 bi10aW1lIG9wdGltaXphdGlvbjsgZ2FyYmFnZSBjb2xsZWN0aW9uIGFuZCBtZW1vcnkgbWFuYWdl bWVudDsgbXVsdGktdGhyZWFkaW5nOyBleHBsb2l0aW5nIHBhcmFsbGVsIGhhcmR3YXJlOyBpbnRl cmZhY2VzIHRvIGZvcmVpZ24gZnVuY3Rpb25zLCBzZXJ2aWNlcywgY29tcG9uZW50cywgb3IgbG93 LWxldmVsIG1hY2hpbmUgcmVzb3VyY2VzLgoKICAqICpTb2Z0d2FyZS1EZXZlbG9wbWVudCBUZWNo bmlxdWVzKjogYWxnb3JpdGhtcyBhbmQgZGF0YSBzdHJ1Y3R1cmVzOyBkZXNpZ24gcGF0dGVybnM7 IHNwZWNpZmljYXRpb247IHZlcmlmaWNhdGlvbjsgdmFsaWRhdGlvbjsgcHJvb2YgYXNzaXN0YW50 czsgZGVidWdnaW5nOyB0ZXN0aW5nOyB0cmFjaW5nOyBwcm9maWxpbmcuCgogICogKkZvdW5kYXRp b25zKjogZm9ybWFsIHNlbWFudGljczsgbGFtYmRhIGNhbGN1bHVzOyByZXdyaXRpbmc7IHR5cGUg dGhlb3J5OyBtb25hZHM7IGNvbnRpbnVhdGlvbnM7IGNvbnRyb2w7IHN0YXRlOyBlZmZlY3RzOyBw cm9ncmFtIHZlcmlmaWNhdGlvbjsgZGVwZW5kZW50IHR5cGVzLgoKICAqICpBbmFseXNpcyBhbmQg VHJhbnNmb3JtYXRpb24qOiBjb250cm9sLWZsb3c7IGRhdGEtZmxvdzsgYWJzdHJhY3QgaW50ZXJw cmV0YXRpb247IHBhcnRpYWwgZXZhbHVhdGlvbjsgcHJvZ3JhbSBjYWxjdWxhdGlvbi4KCiAgKiAq QXBwbGljYXRpb25zKjogc3ltYm9saWMgY29tcHV0aW5nOyBmb3JtYWwtbWV0aG9kcyB0b29sczsg YXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2U7IHN5c3RlbXMgcHJvZ3JhbW1pbmc7IGRpc3RyaWJ1dGVk LXN5c3RlbXMgYW5kIHdlYiBwcm9ncmFtbWluZzsgaGFyZHdhcmUgZGVzaWduOyBkYXRhYmFzZXM7 IFhNTCBwcm9jZXNzaW5nOyBzY2llbnRpZmljIGFuZCBudW1lcmljYWwgY29tcHV0aW5nOyBncmFw aGljYWwgdXNlciBpbnRlcmZhY2VzOyBtdWx0aW1lZGlhIGFuZCAzRCBncmFwaGljcyBwcm9ncmFt bWluZzsgc2NyaXB0aW5nOyBzeXN0ZW0gYWRtaW5pc3RyYXRpb247IHNlY3VyaXR5LgoKICAqICpF ZHVjYXRpb24qOiB0ZWFjaGluZyBpbnRyb2R1Y3RvcnkgcHJvZ3JhbW1pbmc7IHBhcmFsbGVsIHBy b2dyYW1taW5nOyBtYXRoZW1hdGljYWwgcHJvb2Y7IGFsZ2VicmEuCgpTdWJtaXNzaW9ucyB3aWxs IGJlIGV2YWx1YXRlZCBhY2NvcmRpbmcgdG8gdGhlaXIgcmVsZXZhbmNlLCBjb3JyZWN0bmVzcywg c2lnbmlmaWNhbmNlLCBvcmlnaW5hbGl0eSwgYW5kIGNsYXJpdHkuIEVhY2ggc3VibWlzc2lvbiBz aG91bGQgZXhwbGFpbiBpdHMgY29udHJpYnV0aW9ucyBpbiBib3RoIGdlbmVyYWwgYW5kIHRlY2hu aWNhbCB0ZXJtcywgY2xlYXJseSBpZGVudGlmeWluZyB3aGF0IGhhcyBiZWVuIGFjY29tcGxpc2hl ZCwgZXhwbGFpbmluZyB3aHkgaXQgaXMgc2lnbmlmaWNhbnQsIGFuZCBjb21wYXJpbmcgaXQgd2l0 aCBwcmV2aW91cyB3b3JrLiBUaGUgdGVjaG5pY2FsIGNvbnRlbnQgc2hvdWxkIGJlIGFjY2Vzc2li bGUgdG8gYSBicm9hZCBhdWRpZW5jZS4KClBBQ01QTCBpc3N1ZSBJQ0ZQIDIwMTggYWxzbyB3ZWxj b21lcyBzdWJtaXNzaW9ucyBpbiB0d28gc2VwYXJhdGUgY2F0ZWdvcmllcyAmbWRhc2g7IEZ1bmN0 aW9uYWwgUGVhcmxzIGFuZCBFeHBlcmllbmNlIFJlcG9ydHMgJm1kYXNoOyB0aGF0IG11c3QgYmUg bWFya2VkIGFzIHN1Y2ggYXQgdGhlIHRpbWUgb2Ygc3VibWlzc2lvbiBhbmQgdGhhdCBuZWVkIG5v dCByZXBvcnQgb3JpZ2luYWwgcmVzZWFyY2ggcmVzdWx0cy4gIERldGFpbGVkIGd1aWRlbGluZXMg b24gYm90aCBjYXRlZ29yaWVzIGFyZSBnaXZlbiBhdCB0aGUgZW5kIG9mIHRoaXMgY2FsbC4KClBs ZWFzZSBjb250YWN0IHRoZSBwcmluY2lwYWwgZWRpdG9yIGlmIHlvdSBoYXZlIHF1ZXN0aW9ucyBv ciBhcmUgY29uY2VybmVkIGFib3V0IHRoZSBhcHByb3ByaWF0ZW5lc3Mgb2YgYSB0b3BpYy4KCiMj IyBQcmVwYXJhdGlvbiBvZiBzdWJtaXNzaW9ucwoKKipEZWFkbGluZSoqOiBUaGUgZGVhZGxpbmUg Zm9yIHN1Ym1pc3Npb25zIGlzIEZyaWRheSwgTWFyY2ggMTYsIDIwMTgsIEFueXdoZXJlIG9uIEVh cnRoICg8aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW55d2hlcmVfb25fRWFydGg+KS4g IFRoaXMgZGVhZGxpbmUgd2lsbCBiZSBzdHJpY3RseSBlbmZvcmNlZC4KCioqRm9ybWF0dGluZyoq OiBTdWJtaXNzaW9ucyBtdXN0IGJlIGluIFBERiBmb3JtYXQsIHByaW50YWJsZSBpbiBibGFjayBh bmQgd2hpdGUgb24gVVMgTGV0dGVyIHNpemVkIHBhcGVyLCBhbmQgaW50ZXJwcmV0YWJsZSBieSBj b21tb24gUERGIHRvb2xzLiBBbGwgc3VibWlzc2lvbnMgbXVzdCBhZGhlcmUgdG8gdGhlICJBQ00g U21hbGwiIHRlbXBsYXRlIHRoYXQgaXMgYXZhaWxhYmxlIChpbiBib3RoIExhVGVYIGFuZCBXb3Jk IGZvcm1hdHMpIGZyb20gPGh0dHBzOi8vd3d3LmFjbS5vcmcvcHVibGljYXRpb25zL2F1dGhvcnMv c3VibWlzc2lvbnM+LiAgRm9yIGF1dGhvcnMgdXNpbmcgTGFUZVgsIGEgbGlnaHRlci13ZWlnaHQg cGFja2FnZSwgaW5jbHVkaW5nIG9ubHkgdGhlIGVzc2VudGlhbCBmaWxlcywgaXMgYXZhaWxhYmxl IGZyb20gPGh0dHA6Ly9zaWdwbGFuLm9yZy9SZXNvdXJjZXMvQXV0aG9yLyNhY21hcnQtZm9ybWF0 Pi4KClRoZXJlIGlzIGEgbGltaXQgb2YgMjcgcGFnZXMgZm9yIGEgZnVsbCBwYXBlciBvciAxNCBw YWdlcyBmb3IgYW4gRXhwZXJpZW5jZSBSZXBvcnQ7IGluIGVpdGhlciBjYXNlLCB0aGUgYmlibGlv Z3JhcGh5IHdpbGwgbm90IGJlIGNvdW50ZWQgYWdhaW5zdCB0aGVzZSBsaW1pdHMuIFRoZXNlIHBh Z2UgbGltaXRzIGhhdmUgYmVlbiBjaG9zZW4gdG8gYWxsb3cgZXNzZW50aWFsbHkgdGhlIHNhbWUg YW1vdW50IG9mIGNvbnRlbnQgd2l0aCB0aGUgbmV3IHNpbmdsZS1jb2x1bW4gZm9ybWF0IGFzIHdh cyBwb3NzaWJsZSB3aXRoIHRoZSB0d28tY29sdW1uIGZvcm1hdCB1c2VkIGluIHBhc3QgSUNGUCBj b25mZXJlbmNlcy4gU3VibWlzc2lvbnMgdGhhdCBleGNlZWQgdGhlIHBhZ2UgbGltaXRzIG9yLCBm b3Igb3RoZXIgcmVhc29ucywgZG8gbm90IG1lZXQgdGhlIHJlcXVpcmVtZW50cyBmb3IgZm9ybWF0 dGluZywgd2lsbCBiZSBzdW1tYXJpbHkgcmVqZWN0ZWQuCgpTZWUgYWxzbyBQQUNNUEwncyBJbmZv cm1hdGlvbiBhbmQgR3VpZGVsaW5lcyBmb3IgQXV0aG9ycyBhdCA8aHR0cHM6Ly9wYWNtcGwuYWNt Lm9yZy9hdXRob3JzLmNmbT4uCgoqKlN1Ym1pc3Npb24qKjogU3VibWlzc2lvbnMgd2lsbCBiZSBh Y2NlcHRlZCBhdCA8aHR0cHM6Ly9pY2ZwMTguaG90Y3JwLmNvbS8+CgpJbXByb3ZlZCB2ZXJzaW9u cyBvZiBhIHBhcGVyIG1heSBiZSBzdWJtaXR0ZWQgYXQgYW55IHBvaW50IGJlZm9yZSB0aGUgc3Vi bWlzc2lvbiBkZWFkbGluZSB1c2luZyB0aGUgc2FtZSB3ZWIgaW50ZXJmYWNlLgoKKipBdXRob3Ig UmVzcG9uc2UgUGVyaW9kKio6IEF1dGhvcnMgd2lsbCBoYXZlIGEgNzItaG91ciBwZXJpb2QsIHN0 YXJ0aW5nIGF0IDE0OjAwIFVUQyBvbiBXZWRuZXNkYXksIE1heSAyLCAyMDE4LCB0byByZWFkIHJl dmlld3MgYW5kIHJlc3BvbmQgdG8gdGhlbS4KCioqU3VwcGxlbWVudGFyeSBNYXRlcmlhbHMqKjog QXV0aG9ycyBoYXZlIHRoZSBvcHRpb24gdG8gYXR0YWNoIHN1cHBsZW1lbnRhcnkgbWF0ZXJpYWwg dG8gYSBzdWJtaXNzaW9uLCBvbiB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IHJldmlld2VycyBtYXkg Y2hvb3NlIG5vdCB0byBsb29rIGF0IGl0LiBUaGUgbWF0ZXJpYWwgc2hvdWxkIGJlIHVwbG9hZGVk IGF0IHN1Ym1pc3Npb24gdGltZSwgYXMgYSBzaW5nbGUgcGRmIG9yIGEgdGFyYmFsbCwgbm90IHZp YSBhIFVSTC4gVGhpcyBzdXBwbGVtZW50YXJ5IG1hdGVyaWFsIG1heSBvciBtYXkgbm90IGJlIGFu b255bWl6ZWQ7IGlmIG5vdCBhbm9ueW1pemVkLCBpdCB3aWxsIG9ubHkgYmUgcmV2ZWFsZWQgdG8g cmV2aWV3ZXJzIGFmdGVyIHRoZXkgaGF2ZSBzdWJtaXR0ZWQgdGhlaXIgcmV2aWV3IG9mIHRoZSBw YXBlciBhbmQgbGVhcm5lZCB0aGUgaWRlbnRpdHkgb2YgdGhlIGF1dGhvcihzKS4KCioqQXV0aG9y c2hpcCBQb2xpY2llcyoqOiBBbGwgc3VibWlzc2lvbnMgYXJlIGV4cGVjdGVkIHRvIGNvbXBseSB3 aXRoIHRoZSBBQ00gUG9saWNpZXMgZm9yIEF1dGhvcnNoaXAgdGhhdCBhcmUgZGV0YWlsZWQgYXQg PGh0dHBzOi8vd3d3LmFjbS5vcmcvcHVibGljYXRpb25zL2F1dGhvcnMvaW5mb3JtYXRpb24tZm9y LWF1dGhvcnM+LgoKKipSZXB1YmxpY2F0aW9uIFBvbGljaWVzKio6IEVhY2ggc3VibWlzc2lvbiBt dXN0IGFkaGVyZSB0byBTSUdQTEFOJ3MgcmVwdWJsaWNhdGlvbiBwb2xpY3ksIGFzIGV4cGxhaW5l ZCBvbiB0aGUgd2ViIGF0IDxodHRwOi8vd3d3LnNpZ3BsYW4ub3JnL1Jlc291cmNlcy9Qb2xpY2ll cy9SZXB1YmxpY2F0aW9uPi4KCioqUmVzdWJtaXR0ZWQgUGFwZXJzKio6IEF1dGhvcnMgd2hvIHN1 Ym1pdCBhIHJldmlzZWQgdmVyc2lvbiBvZiBhIHBhcGVyIHRoYXQgaGFzIHByZXZpb3VzbHkgYmVl biByZWplY3RlZCBieSBhbm90aGVyIGNvbmZlcmVuY2UgaGF2ZSB0aGUgb3B0aW9uIHRvIGF0dGFj aCBhbiBhbm5vdGF0ZWQgY29weSBvZiB0aGUgcmV2aWV3cyBvZiB0aGVpciBwcmV2aW91cyBzdWJt aXNzaW9uKHMpLCBleHBsYWluaW5nIGhvdyB0aGV5IGhhdmUgYWRkcmVzc2VkIHRoZXNlIHByZXZp b3VzIHJldmlld3MgaW4gdGhlIHByZXNlbnQgc3VibWlzc2lvbi4gSWYgYSByZXZpZXdlciBpZGVu dGlmaWVzIGhpbS9oZXJzZWxmIGFzIGEgcmV2aWV3ZXIgb2YgdGhpcyBwcmV2aW91cyBzdWJtaXNz aW9uIGFuZCB3aXNoZXMgdG8gc2VlIGhvdyBoaXMvaGVyIGNvbW1lbnRzIGhhdmUgYmVlbiBhZGRy ZXNzZWQsIHRoZSBwcmluY2lwYWwgZWRpdG9yIHdpbGwgY29tbXVuaWNhdGUgdG8gdGhpcyByZXZp ZXdlciB0aGUgYW5ub3RhdGVkIGNvcHkgb2YgaGlzL2hlciBwcmV2aW91cyByZXZpZXcuIE90aGVy d2lzZSwgbm8gcmV2aWV3ZXIgd2lsbCByZWFkIHRoZSBhbm5vdGF0ZWQgY29waWVzIG9mIHRoZSBw cmV2aW91cyByZXZpZXdzLgoKIyMjIFJldmlldyBQcm9jZXNzCgpUaGlzIHNlY3Rpb24gb3V0bGlu ZXMgdGhlIHR3by1zdGFnZSBwcm9jZXNzIHdpdGggbGlnaHR3ZWlnaHQgZG91YmxlLWJsaW5kIHJl dmlld2luZyB0aGF0IHdpbGwgYmUgdXNlZCB0byBzZWxlY3QgcGFwZXJzIGZvciBQQUNNUEwgaXNz dWUgSUNGUCAyMDE4LiAgV2UgYW50aWNpcGF0ZSB0aGF0IHRoZXJlIHdpbGwgYmUgYSBuZWVkIHRv IGNsYXJpZnkgYW5kIGV4cGFuZCBvbiB0aGlzIHByb2Nlc3MsIGFuZCB3ZSB3aWxsIG1haW50YWlu IGEgbGlzdCBvZiBmcmVxdWVudGx5IGFza2VkIHF1ZXN0aW9ucyBhbmQgYW5zd2VycyBvbiB0aGUg Y29uZmVyZW5jZSB3ZWJzaXRlIHRvIGFkZHJlc3MgY29tbW9uIGNvbmNlcm5zLgogCioqUEFDTVBM IGlzc3VlIElDRlAgMjAxOCB3aWxsIGVtcGxveSBhIHR3by1zdGFnZSByZXZpZXcgcHJvY2Vzcy4q KiAgVGhlIGZpcnN0IHN0YWdlIGluIHRoZSByZXZpZXcgcHJvY2VzcyB3aWxsIGFzc2VzcyBzdWJt aXR0ZWQgcGFwZXJzIHVzaW5nIHRoZSBjcml0ZXJpYSBzdGF0ZWQgYWJvdmUgYW5kIHdpbGwgYWxs b3cgZm9yIGZlZWRiYWNrIGFuZCBpbnB1dCBvbiBpbml0aWFsIHJldmlld3MgdGhyb3VnaCB0aGUg YXV0aG9yIHJlc3BvbnNlIHBlcmlvZCBtZW50aW9uZWQgcHJldmlvdXNseS4gQXQgdGhlIHJldmll dyBtZWV0aW5nLCBhIHNldCBvZiBwYXBlcnMgd2lsbCBiZSBjb25kaXRpb25hbGx5IGFjY2VwdGVk IGFuZCBhbGwgb3RoZXIgcGFwZXJzIHdpbGwgYmUgcmVqZWN0ZWQuICBBdXRob3JzIHdpbGwgYmUg bm90aWZpZWQgb2YgdGhlc2UgZGVjaXNpb25zIG9uIE1heSAxOCwgMjAxOC4KCkF1dGhvcnMgb2Yg Y29uZGl0aW9uYWxseSBhY2NlcHRlZCBwYXBlcnMgd2lsbCBiZSBwcm92aWRlZCB3aXRoIGNvbW1p dHRlZSByZXZpZXdzIChqdXN0IGFzIGluIHByZXZpb3VzIGNvbmZlcmVuY2VzKSBhbG9uZyB3aXRo IGEgc2V0IG9mIG1hbmRhdG9yeSByZXZpc2lvbnMuIEFmdGVyIGZpdmUgd2Vla3MgKEp1bmUgMjIs IDIwMTgpLCB0aGUgYXV0aG9ycyB3aWxsIHByb3ZpZGUgYSBzZWNvbmQgc3VibWlzc2lvbi4gVGhl IHNlY29uZCBhbmQgZmluYWwgcmV2aWV3aW5nIHBoYXNlIGFzc2Vzc2VzIHdoZXRoZXIgdGhlIG1h bmRhdG9yeSByZXZpc2lvbnMgaGF2ZSBiZWVuIGFkZXF1YXRlbHkgYWRkcmVzc2VkIGJ5IHRoZSBh dXRob3JzIGFuZCB0aGVyZWJ5IGRldGVybWluZXMgdGhlIGZpbmFsIGFjY2VwdC9yZWplY3Qgc3Rh dHVzIG9mIHRoZSBwYXBlci4gVGhlIGludGVudCBhbmQgZXhwZWN0YXRpb24gaXMgdGhhdCB0aGUg bWFuZGF0b3J5IHJldmlzaW9ucyBjYW4gYmUgYWRkcmVzc2VkIHdpdGhpbiBmaXZlIHdlZWtzIGFu ZCBoZW5jZSB0aGF0IGNvbmRpdGlvbmFsbHkgYWNjZXB0ZWQgcGFwZXJzIHdpbGwgaW4gZ2VuZXJh bCBiZSBhY2NlcHRlZCBpbiB0aGUgc2Vjb25kIHBoYXNlLgoKVGhlIHNlY29uZCBzdWJtaXNzaW9u IHNob3VsZCBjbGVhcmx5IGlkZW50aWZ5IGhvdyB0aGUgbWFuZGF0b3J5IHJldmlzaW9ucyB3ZXJl IGFkZHJlc3NlZC4gVG8gdGhhdCBlbmQsIHRoZSBzZWNvbmQgc3VibWlzc2lvbiBtdXN0IGJlIGFj Y29tcGFuaWVkIGJ5IGEgY292ZXIgbGV0dGVyIG1hcHBpbmcgZWFjaCBtYW5kYXRvcnkgcmV2aXNp b24gcmVxdWVzdCB0byBzcGVjaWZpYyBwYXJ0cyBvZiB0aGUgcGFwZXIuIFRoZSBjb3ZlciBsZXR0 ZXIgd2lsbCBmYWNpbGl0YXRlIGEgcXVpY2sgc2Vjb25kIHJldmlldywgYWxsb3dpbmcgZm9yIGNv bmZpcm1hdGlvbiBvZiBmaW5hbCBhY2NlcHRhbmNlIHdpdGhpbiB0d28gd2Vla3MuIENvbnZlcnNl bHksIHRoZSBhYnNlbmNlIG9mIGEgY292ZXIgbGV0dGVyIHdpbGwgYmUgZ3JvdW5kcyBmb3IgdGhl IHBhcGVy4oCZcyByZWplY3Rpb24uCgoqKlBBQ01QTCBpc3N1ZSBJQ0ZQIDIwMTggd2lsbCBlbXBs b3kgYSBsaWdodHdlaWdodCBkb3VibGUtYmxpbmQgcmV2aWV3aW5nIHByb2Nlc3MuKiogVG8gZmFj aWxpdGF0ZSB0aGlzLCBzdWJtaXR0ZWQgcGFwZXJzIG11c3QgYWRoZXJlIHRvIHR3byBydWxlczoK CiAgMS4gKiphdXRob3IgbmFtZXMgYW5kIGluc3RpdHV0aW9ucyBtdXN0IGJlIG9taXR0ZWQqKiwg YW5kCiAgMi4gKipyZWZlcmVuY2VzIHRvIGF1dGhvcnMnIG93biByZWxhdGVkIHdvcmsgc2hvdWxk IGJlIGluIHRoZSB0aGlyZCBwZXJzb24qKiAoZS5nLiwgbm90ICJXZSBidWlsZCBvbiBvdXIgcHJl dmlvdXMgd29yayAuLi4iIGJ1dCByYXRoZXIgIldlIGJ1aWxkIG9uIHRoZSB3b3JrIG9mIC4uLiIp LgoKVGhlIHB1cnBvc2Ugb2YgdGhpcyBwcm9jZXNzIGlzIHRvIGhlbHAgdGhlIHJldmlld2VycyBj b21lIHRvIGFuIGluaXRpYWwganVkZ2VtZW50IGFib3V0IHRoZSBwYXBlciB3aXRob3V0IGJpYXMs IG5vdCB0byBtYWtlIGl0IGltcG9zc2libGUgZm9yIHRoZW0gdG8gZGlzY292ZXIgdGhlIGF1dGhv cnMgaWYgdGhleSB3ZXJlIHRvIHRyeS4gTm90aGluZyBzaG91bGQgYmUgZG9uZSBpbiB0aGUgbmFt ZSBvZiBhbm9ueW1pdHkgdGhhdCB3ZWFrZW5zIHRoZSBzdWJtaXNzaW9uIG9yIG1ha2VzIHRoZSBq b2Igb2YgcmV2aWV3aW5nIHRoZSBwYXBlciBtb3JlIGRpZmZpY3VsdCAoZS5nLiwgaW1wb3J0YW50 IGJhY2tncm91bmQgcmVmZXJlbmNlcyBzaG91bGQgbm90IGJlIG9taXR0ZWQgb3IgYW5vbnltaXpl ZCkuIEluIGFkZGl0aW9uLCBhdXRob3JzIHNob3VsZCBmZWVsIGZyZWUgdG8gZGlzc2VtaW5hdGUg dGhlaXIgaWRlYXMgb3IgZHJhZnQgdmVyc2lvbnMgb2YgdGhlaXIgcGFwZXIgYXMgdGhleSBub3Jt YWxseSB3b3VsZC4gRm9yIGluc3RhbmNlLCBhdXRob3JzIG1heSBwb3N0IGRyYWZ0cyBvZiB0aGVp ciBwYXBlcnMgb24gdGhlIHdlYiBvciBnaXZlIHRhbGtzIG9uIHRoZWlyIHJlc2VhcmNoIGlkZWFz LgoKIyMjIEluZm9ybWF0aW9uIGZvciBBdXRob3JzIG9mIEFjY2VwdGVkIFBhcGVycwoKKiBBcyBh IGNvbmRpdGlvbiBvZiBhY2NlcHRhbmNlLCBmaW5hbCB2ZXJzaW9ucyBvZiBhbGwgcGFwZXJzIG11 c3QgYWRoZXJlIHRvIHRoZSBuZXcgQUNNIFNtYWxsIGZvcm1hdC4gVGhlIHBhZ2UgbGltaXRzIGZv ciBmaW5hbCB2ZXJzaW9ucyBvZiBwYXBlcnMgd2lsbCBiZSBpbmNyZWFzZWQgdG8gZW5zdXJlIHRo YXQgYXV0aG9ycyBoYXZlIHNwYWNlIHRvIHJlc3BvbmQgdG8gcmV2aWV3ZXIgY29tbWVudHMgYW5k IG1hbmRhdG9yeSByZXZpc2lvbnMuCgoqIEF1dGhvcnMgb2YgYWNjZXB0ZWQgc3VibWlzc2lvbnMg d2lsbCBiZSByZXF1aXJlZCB0byBhZ3JlZSB0byBvbmUgb2YgdGhlIHRocmVlIEFDTSBsaWNlbnNp bmcgb3B0aW9uczogb3BlbiBhY2Nlc3Mgb24gcGF5bWVudCBvZiBhIGZlZSAoKipyZWNvbW1lbmRl ZCoqLCBhbmQgU0lHUExBTiBjYW4gY292ZXIgdGhlIGNvc3QgYXMgZGVzY3JpYmVkIG5leHQpOyBj b3B5cmlnaHQgdHJhbnNmZXIgdG8gQUNNOyBvciByZXRhaW5pbmcgY29weXJpZ2h0IGJ1dCBncmFu dGluZyBBQ00gZXhjbHVzaXZlIHB1YmxpY2F0aW9uIHJpZ2h0cy4gIEZ1cnRoZXIgaW5mb3JtYXRp b24gYWJvdXQgQUNNIGF1dGhvciByaWdodHMgaXMgYXZhaWxhYmxlIGZyb20gPGh0dHA6Ly9hdXRo b3JzLmFjbS5vcmc+LgoKKiBQQUNNUEwgaXMgYSBHb2xkIE9wZW4gQWNjZXNzIGpvdXJuYWwuIEl0 IHdpbGwgYmUgYXJjaGl2ZWQgaW4gQUNN4oCZcyBEaWdpdGFsIExpYnJhcnksIGJ1dCBubyBtZW1i ZXJzaGlwIG9yIGZlZSBpcyByZXF1aXJlZCBmb3IgYWNjZXNzLiBHb2xkIE9wZW4gQWNjZXNzIGhh cyBiZWVuIG1hZGUgcG9zc2libGUgYnkgZ2VuZXJvdXMgZnVuZGluZyB0aHJvdWdoIEFDTSBTSUdQ TEFOLCB3aGljaCB3aWxsIGNvdmVyIGFsbCBvcGVuIGFjY2VzcyBjb3N0cyBpbiB0aGUgZXZlbnQg YXV0aG9ycyBjYW5ub3QuIEF1dGhvcnMgd2hvIGNhbiBjb3ZlciB0aGUgY29zdHMgbWF5IGRvIHNv IGJ5IHBheWluZyBhbiBBcnRpY2xlIFByb2Nlc3NpbmcgQ2hhcmdlIChBUEMpLiBQQUNNUEwsIFNJ R1BMQU4sIGFuZCBBQ00gSGVhZHF1YXJ0ZXJzIGFyZSBjb21taXR0ZWQgdG8gZXhwbG9yaW5nIHJv dXRlcyB0byBtYWtpbmcgR29sZCBPcGVuIEFjY2VzcyBwdWJsaWNhdGlvbiBib3RoIGFmZm9yZGFi bGUgYW5kIHN1c3RhaW5hYmxlLgoKKiBBQ00gb2ZmZXJzIGF1dGhvcnMgYSByYW5nZSBvZiBjb3B5 cmlnaHQgb3B0aW9ucywgb25lIG9mIHdoaWNoIGlzIENyZWF0aXZlIENvbW1vbnMgQ0MtQlkgcHVi bGljYXRpb247IHRoaXMgaXMgdGhlIG9wdGlvbiByZWNvbW1lbmRlZCBieSB0aGUgUEFDTVBMIGVk aXRvcmlhbCBib2FyZC4gQSByZWFzb25lZCBhcmd1bWVudCBpbiBmYXZvdXIgb2YgdGhpcyBvcHRp b24gY2FuIGJlIGZvdW5kIGluIHRoZSBhcnRpY2xlIFtXaHkgQ0MtQlk/XShodHRwczovL29hc3Bh Lm9yZy93aHktY2MtYnkvKSBwdWJsaXNoZWQgYnkgT0FTUEEsIHRoZSBPcGVuIEFjY2VzcyBTY2hv bGFybHkgUHVibGlzaGVycyBBc3NvY2lhdGlvbi4KCiogV2UgaW50ZW5kIHRoYXQgdGhlIHBhcGVy cyB3aWxsIGJlIGZyZWVseSBhdmFpbGFibGUgZm9yIGRvd25sb2FkIGZyb20gdGhlIEFDTSBEaWdp dGFsIExpYnJhcnkgaW4gcGVycGV0dWl0eSB2aWEgdGhlIE9wZW5UT0MgbWVjaGFuaXNtLgoKKiBB Q00gQXV0aG9yLUl6ZXIgaXMgYSB1bmlxdWUgc2VydmljZSB0aGF0IGVuYWJsZXMgQUNNIGF1dGhv cnMgdG8gZ2VuZXJhdGUgYW5kIHBvc3QgbGlua3Mgb24gZWl0aGVyIHRoZWlyIGhvbWUgcGFnZSBv ciBpbnN0aXR1dGlvbmFsIHJlcG9zaXRvcnkgZm9yIHZpc2l0b3JzIHRvIGRvd25sb2FkIHRoZSBk ZWZpbml0aXZlIHZlcnNpb24gb2YgdGhlaXIgYXJ0aWNsZXMgZnJvbSB0aGUgQUNNIERpZ2l0YWwg TGlicmFyeSBhdCBubyBjaGFyZ2UuIERvd25sb2FkcyB0aHJvdWdoIEF1dGhvci1JemVyIGxpbmtz IGFyZSBjYXB0dXJlZCBpbiBvZmZpY2lhbCBBQ00gc3RhdGlzdGljcywgaW1wcm92aW5nIHRoZSBh Y2N1cmFjeSBvZiB1c2FnZSBhbmQgaW1wYWN0IG1lYXN1cmVtZW50cy4gQ29uc2lzdGVudGx5IGxp bmtpbmcgdG8gdGhlIGRlZmluaXRpdmUgdmVyc2lvbiBvZiBhbiBBQ00gYXJ0aWNsZSBzaG91bGQg cmVkdWNlIHVzZXIgY29uZnVzaW9uIG92ZXIgYXJ0aWNsZSB2ZXJzaW9uaW5nLiBBZnRlciBhbiBh cnRpY2xlIGhhcyBiZWVuIHB1Ymxpc2hlZCBhbmQgYXNzaWduZWQgdG8gdGhlIGFwcHJvcHJpYXRl IEFDTSBBdXRob3IgUHJvZmlsZSBwYWdlcywgYXV0aG9ycyBzaG91bGQgdmlzaXQgPGh0dHA6Ly93 d3cuYWNtLm9yZy9wdWJsaWNhdGlvbnMvYWNtLWF1dGhvci1pemVyLXNlcnZpY2U+IHRvIGxlYXJu IGhvdyB0byBjcmVhdGUgbGlua3MgZm9yIGZyZWUgZG93bmxvYWRzIGZyb20gdGhlIEFDTSBETC4K CiogQXQgbGVhc3Qgb25lIGF1dGhvciBvZiBlYWNoIGFjY2VwdGVkIHN1Ym1pc3Npb25zIHdpbGwg YmUgZXhwZWN0ZWQgdG8gYXR0ZW5kIGFuZCBwcmVzZW50IHRoZWlyIHBhcGVyIGF0IHRoZSBjb25m ZXJlbmNlLiAgVGhlIHNjaGVkdWxlIGZvciBwcmVzZW50YXRpb25zIHdpbGwgYmUgZGV0ZXJtaW5l ZCBhbmQgc2hhcmVkIHdpdGggYXV0aG9ycyBhZnRlciB0aGUgZnVsbCBwcm9ncmFtIGhhcyBiZWVu IHNlbGVjdGVkLiAgUHJlc2VudGF0aW9ucyB3aWxsIGJlIHZpZGVvdGFwZWQgYW5kIHJlbGVhc2Vk IG9ubGluZSBpZiB0aGUgcHJlc2VudGVyIGNvbnNlbnRzLgoKKiBUaGUgb2ZmaWNpYWwgcHVibGlj YXRpb24gZGF0ZSBpcyB0aGUgZGF0ZSB0aGUgcGFwZXJzIGFyZSBtYWRlIGF2YWlsYWJsZSBpbiB0 aGUgQUNNIERpZ2l0YWwgTGlicmFyeS4gVGhpcyBkYXRlIG1heSBiZSB1cCB0byAqdHdvIHdlZWtz IHByaW9yKiB0byB0aGUgZmlyc3QgZGF5IG9mIHRoZSBjb25mZXJlbmNlLiBUaGUgb2ZmaWNpYWwg cHVibGljYXRpb24gZGF0ZSBhZmZlY3RzIHRoZSBkZWFkbGluZSBmb3IgYW55IHBhdGVudCBmaWxp bmdzIHJlbGF0ZWQgdG8gcHVibGlzaGVkIHdvcmsuCgojIyMgQXJ0aWZhY3QgRXZhbHVhdGlvbgoK QXV0aG9ycyBvZiBwYXBlcnMgdGhhdCBhcmUgY29uZGl0aW9uYWxseSBhY2NlcHRlZCBpbiB0aGUg Zmlyc3QgcGhhc2Ugb2YgdGhlIHJldmlldyBwcm9jZXNzIHdpbGwgYmUgZW5jb3VyYWdlZCAoYnV0 IG5vdCByZXF1aXJlZCkgdG8gc3VibWl0IHN1cHBvcnRpbmcgbWF0ZXJpYWxzIGZvciBBcnRpZmFj dCBFdmFsdWF0aW9uLiBUaGVzZSBpdGVtcyB3aWxsIHRoZW4gYmUgcmV2aWV3ZWQgYnkgYW4gQXJ0 aWZhY3QgRXZhbHVhdGlvbiBDb21taXR0ZWUsIHNlcGFyYXRlIGZyb20gdGhlIHBhcGVyIFJldmll dyBDb21taXR0ZWUsIHdob3NlIHRhc2sgaXMgdG8gYXNzZXNzIGhvdyB0aGUgYXJ0aWZhY3RzIHN1 cHBvcnQgdGhlIHdvcmsgZGVzY3JpYmVkIGluIHRoZSBhc3NvY2lhdGVkIHBhcGVyLiBQYXBlcnMg dGhhdCBnbyB0aHJvdWdoIHRoZSBBcnRpZmFjdCBFdmFsdWF0aW9uIHByb2Nlc3Mgc3VjY2Vzc2Z1 bGx5IHdpbGwgcmVjZWl2ZSBhIHNlYWwgb2YgYXBwcm92YWwgcHJpbnRlZCBvbiB0aGUgcGFwZXJz IHRoZW1zZWx2ZXMuIEF1dGhvcnMgb2YgYWNjZXB0ZWQgcGFwZXJzIHdpbGwgYmUgZW5jb3VyYWdl ZCB0byBtYWtlIHRoZSBzdXBwb3J0aW5nIG1hdGVyaWFscyBwdWJsaWNseSBhdmFpbGFibGUgdXBv biBwdWJsaWNhdGlvbiBvZiB0aGUgcGFwZXJzLCBmb3IgZXhhbXBsZSwgYnkgaW5jbHVkaW5nIHRo ZW0gYXMgInNvdXJjZSBtYXRlcmlhbHMiIGluIHRoZSBBQ00gRGlnaXRhbCBMaWJyYXJ5LiAgQW4g YWRkaXRpb25hbCBzZWFsIHdpbGwgbWFyayBwYXBlcnMgd2hvc2UgYXJ0aWZhY3RzIGFyZSBtYWRl IGF2YWlsYWJsZSwgYXMgb3V0bGluZWQgaW4gdGhlIEFDTSBndWlkZWxpbmVzIGZvciBhcnRpZmFj dCBiYWRnaW5nLgoKUGFydGljaXBhdGlvbiBpbiBBcnRpZmFjdCBFdmFsdWF0aW9uIGlzIHZvbHVu dGFyeSBhbmQgd2lsbCBub3QgaW5mbHVlbmNlIHRoZSBmaW5hbCBkZWNpc2lvbiByZWdhcmRpbmcg cGFwZXIgYWNjZXB0YW5jZS4KCkZ1cnRoZXIgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG1vdGl2YXRp b25zIGFuZCBleHBlY3RhdGlvbnMgZm9yIEFydGlmYWN0IEV2YWx1YXRpb24gY2FuIGJlIGZvdW5k IGF0IDxodHRwczovL2ljZnAxOC5zaWdwbGFuLm9yZy90cmFjay9pY2ZwLTIwMTgtQXJ0aWZhY3Rz Pi4KCiMjIyBTcGVjaWFsIGNhdGVnb3JpZXMgb2YgcGFwZXJzCgpJbiBhZGRpdGlvbiB0byByZXNl YXJjaCBwYXBlcnMsIFBBQ01QTCBpc3N1ZSBJQ0ZQIHNvbGljaXRzIHR3byBraW5kcyBvZiBwYXBl cnMgdGhhdCBkbyBub3QgcmVxdWlyZSBvcmlnaW5hbCByZXNlYXJjaCBjb250cmlidXRpb25zOiBG dW5jdGlvbmFsIFBlYXJscywgd2hpY2ggYXJlIGZ1bGwgcGFwZXJzLCBhbmQgRXhwZXJpZW5jZSBS ZXBvcnRzLCB3aGljaCBhcmUgbGltaXRlZCB0byBoYWxmIHRoZSBsZW5ndGggb2YgYSBmdWxsIHBh cGVyLiBBdXRob3JzIHN1Ym1pdHRpbmcgc3VjaCBwYXBlcnMgc2hvdWxkIGNvbnNpZGVyIHRoZSBm b2xsb3dpbmcgZ3VpZGVsaW5lcy4KCiMjIyMgRnVuY3Rpb25hbCBQZWFybHMKCkEgRnVuY3Rpb25h bCBQZWFybCBpcyBhbiBlbGVnYW50IGVzc2F5IGFib3V0IHNvbWV0aGluZyByZWxhdGVkIHRvIGZ1 bmN0aW9uYWwgcHJvZ3JhbW1pbmcuIEV4YW1wbGVzIGluY2x1ZGUsIGJ1dCBhcmUgbm90IGxpbWl0 ZWQgdG86CgogICogYSBuZXcgYW5kIHRob3VnaHQtcHJvdm9raW5nIHdheSBvZiBsb29raW5nIGF0 IGFuIG9sZCBpZGVhCgogICogYW4gaW5zdHJ1Y3RpdmUgZXhhbXBsZSBvZiBwcm9ncmFtIGNhbGN1 bGF0aW9uIG9yIHByb29mCgogICogYSBuaWZ0eSBwcmVzZW50YXRpb24gb2YgYW4gb2xkIG9yIG5l dyBkYXRhIHN0cnVjdHVyZQoKICAqIGFuIGludGVyZXN0aW5nIGFwcGxpY2F0aW9uIG9mIGZ1bmN0 aW9uYWwgcHJvZ3JhbW1pbmcgdGVjaG5pcXVlcwoKICAqIGEgbm92ZWwgdXNlIG9yIGV4cG9zaXRp b24gb2YgZnVuY3Rpb25hbCBwcm9ncmFtbWluZyBpbiB0aGUgY2xhc3Nyb29tCgpXaGlsZSBwZWFy bHMgb2Z0ZW4gZGVtb25zdHJhdGUgYW4gaWRlYSB0aHJvdWdoIHRoZSBkZXZlbG9wbWVudCBvZiBh IHNob3J0IHByb2dyYW0sIHRoZXJlIGlzIG5vIHJlcXVpcmVtZW50IG9yIGV4cGVjdGF0aW9uIHRo YXQgdGhleSBkbyBzby4gVGh1cywgdGhleSBlbmNvbXBhc3MgdGhlIG5vdGlvbnMgb2YgdGhlb3Jl dGljYWwgYW5kIGVkdWNhdGlvbmFsIHBlYXJscy4KCkZ1bmN0aW9uYWwgUGVhcmxzIGFyZSB2YWx1 ZWQgYXMgaGlnaGx5IGFuZCBqdWRnZWQgYXMgcmlnb3JvdXNseSBhcyBvcmRpbmFyeSBwYXBlcnMs IGJ1dCB1c2luZyBzb21ld2hhdCBkaWZmZXJlbnQgY3JpdGVyaWEuIEluIHBhcnRpY3VsYXIsIGEg cGVhcmwgaXMgbm90IHJlcXVpcmVkIHRvIHJlcG9ydCBvcmlnaW5hbCByZXNlYXJjaCwgYnV0LCBp dCBzaG91bGQgYmUgY29uY2lzZSwgaW5zdHJ1Y3RpdmUsIGFuZCBlbnRlcnRhaW5pbmcuIEEgcGVh cmwgaXMgbGlrZWx5IHRvIGJlIHJlamVjdGVkIGlmIGl0cyByZWFkZXJzIGdldCBib3JlZCwgaWYg dGhlIG1hdGVyaWFsIGdldHMgdG9vIGNvbXBsaWNhdGVkLCBpZiB0b28gbXVjaCBzcGVjaWFsaXpl ZCBrbm93bGVkZ2UgaXMgbmVlZGVkLCBvciBpZiB0aGUgd3JpdGluZyBpcyBpbmVsZWdhbnQuIFRo ZSBrZXkgdG8gd3JpdGluZyBhIGdvb2QgcGVhcmwgaXMgcG9saXNoaW5nLgoKQSBzdWJtaXNzaW9u IHRoYXQgaXMgaW50ZW5kZWQgdG8gYmUgdHJlYXRlZCBhcyBhIHBlYXJsIG11c3QgYmUgbWFya2Vk IGFzIHN1Y2ggb24gdGhlIHN1Ym1pc3Npb24gd2ViIHBhZ2UsIGFuZCBzaG91bGQgY29udGFpbiB0 aGUgd29yZHMgIkZ1bmN0aW9uYWwgUGVhcmwiIHNvbWV3aGVyZSBpbiBpdHMgdGl0bGUgb3Igc3Vi dGl0bGUuIFRoZXNlIHN0ZXBzIHdpbGwgYWxlcnQgcmV2aWV3ZXJzIHRvIHVzZSB0aGUgYXBwcm9w cmlhdGUgZXZhbHVhdGlvbiBjcml0ZXJpYS4gUGVhcmxzIHdpbGwgYmUgY29tYmluZWQgd2l0aCBv cmRpbmFyeSBwYXBlcnMsIGhvd2V2ZXIsIGZvciB0aGUgcHVycG9zZSBvZiBjb21wdXRpbmcgdGhl IGNvbmZlcmVuY2UncyBhY2NlcHRhbmNlIHJhdGUuCgojIyMjIEV4cGVyaWVuY2UgUmVwb3J0cwoK VGhlIHB1cnBvc2Ugb2YgYW4gRXhwZXJpZW5jZSBSZXBvcnQgaXMgdG8gaGVscCBjcmVhdGUgYSBi b2R5IG9mIHB1Ymxpc2hlZCwgcmVmZXJlZWQsIGNpdGFibGUgZXZpZGVuY2UgdGhhdCBmdW5jdGlv bmFsIHByb2dyYW1taW5nIHJlYWxseSB3b3JrcyAmbWRhc2g7IG9yIHRvIGRlc2NyaWJlIHdoYXQg b2JzdGFjbGVzIHByZXZlbnQgaXQgZnJvbSB3b3JraW5nLgoKUG9zc2libGUgdG9waWNzIGZvciBh biBFeHBlcmllbmNlIFJlcG9ydCBpbmNsdWRlLCBidXQgYXJlIG5vdCBsaW1pdGVkIHRvOgoKICAq IGluc2lnaHRzIGdhaW5lZCBmcm9tIHJlYWwtd29ybGQgcHJvamVjdHMgdXNpbmcgZnVuY3Rpb25h bCBwcm9ncmFtbWluZwoKICAqIGNvbXBhcmlzb24gb2YgZnVuY3Rpb25hbCBwcm9ncmFtbWluZyB3 aXRoIGNvbnZlbnRpb25hbCBwcm9ncmFtbWluZyBpbiB0aGUgY29udGV4dCBvZiBhbiBpbmR1c3Ry aWFsIHByb2plY3Qgb3IgYSB1bml2ZXJzaXR5IGN1cnJpY3VsdW0KCiAgKiBwcm9qZWN0LW1hbmFn ZW1lbnQsIGJ1c2luZXNzLCBvciBsZWdhbCBpc3N1ZXMgZW5jb3VudGVyZWQgd2hlbiB1c2luZyBm dW5jdGlvbmFsIHByb2dyYW1taW5nIGluIGEgcmVhbC13b3JsZCBwcm9qZWN0CgogICogY3Vycmlj dWxhciBpc3N1ZXMgZW5jb3VudGVyZWQgd2hlbiB1c2luZyBmdW5jdGlvbmFsIHByb2dyYW1taW5n IGluIGVkdWNhdGlvbgoKICAqIHJlYWwtd29ybGQgY29uc3RyYWludHMgdGhhdCBjcmVhdGVkIHNw ZWNpYWwgY2hhbGxlbmdlcyBmb3IgYW4gaW1wbGVtZW50YXRpb24gb2YgYSBmdW5jdGlvbmFsIGxh bmd1YWdlIG9yIGZvciBmdW5jdGlvbmFsIHByb2dyYW1taW5nIGluIGdlbmVyYWwKCkFuIEV4cGVy aWVuY2UgUmVwb3J0IGlzIGRpc3Rpbmd1aXNoZWQgZnJvbSBhIG5vcm1hbCBQQUNNUEwgaXNzdWUg SUNGUCBwYXBlciBieSBpdHMgdGl0bGUsIGJ5IGl0cyBsZW5ndGgsIGFuZCBieSB0aGUgY3JpdGVy aWEgdXNlZCB0byBldmFsdWF0ZSBpdC4KCiAgKiBCb3RoIGluIHRoZSBwYXBlcnMgYW5kIGluIGFu eSBjaXRhdGlvbnMsIHRoZSB0aXRsZSBvZiBlYWNoIGFjY2VwdGVkIEV4cGVyaWVuY2UgUmVwb3J0 IG11c3QgYmVnaW4gd2l0aCB0aGUgd29yZHMgIkV4cGVyaWVuY2UgUmVwb3J0IiBmb2xsb3dlZCBi eSBhIGNvbG9uLiBUaGUgYWNjZXB0YW5jZSByYXRlIGZvciBFeHBlcmllbmNlIFJlcG9ydHMgd2ls bCBiZSBjb21wdXRlZCBhbmQgcmVwb3J0ZWQgc2VwYXJhdGVseSBmcm9tIHRoZSByYXRlIGZvciBv cmRpbmFyeSBwYXBlcnMuCiAgCiAgKiBFeHBlcmllbmNlIFJlcG9ydCBzdWJtaXNzaW9ucyBjYW4g YmUgYXQgbW9zdCAxMiBwYWdlcyBsb25nLCBleGNsdWRpbmcgYmlibGlvZ3JhcGh5LgoKICAqIEVh Y2ggYWNjZXB0ZWQgRXhwZXJpZW5jZSBSZXBvcnQgd2lsbCBiZSBwcmVzZW50ZWQgYXQgdGhlIGNv bmZlcmVuY2UsIGJ1dCBkZXBlbmRpbmcgb24gdGhlIG51bWJlciBvZiBFeHBlcmllbmNlIFJlcG9y dHMgYW5kIHJlZ3VsYXIgcGFwZXJzIGFjY2VwdGVkLCBhdXRob3JzIG9mIEV4cGVyaWVuY2UgcmVw b3J0cyBtYXkgYmUgYXNrZWQgdG8gZ2l2ZSBzaG9ydGVyIHRhbGtzLgogIAogICogQmVjYXVzZSB0 aGUgcHVycG9zZSBvZiBFeHBlcmllbmNlIFJlcG9ydHMgaXMgdG8gZW5hYmxlIG91ciBjb21tdW5p dHkgdG8gYWNjdW11bGF0ZSBhIGJvZHkgb2YgZXZpZGVuY2UgYWJvdXQgdGhlIGVmZmljYWN5IG9m IGZ1bmN0aW9uYWwgcHJvZ3JhbW1pbmcsIGFuIGFjY2VwdGFibGUgRXhwZXJpZW5jZSBSZXBvcnQg bmVlZCBub3QgYWRkIHRvIHRoZSBib2R5IG9mIGtub3dsZWRnZSBvZiB0aGUgZnVuY3Rpb25hbC1w cm9ncmFtbWluZyBjb21tdW5pdHkgYnkgcHJlc2VudGluZyBub3ZlbCByZXN1bHRzIG9yIGNvbmNs dXNpb25zLiBJdCBpcyBzdWZmaWNpZW50IGlmIHRoZSBSZXBvcnQgc3RhdGVzIGEgY2xlYXIgdGhl c2lzIGFuZCBwcm92aWRlcyBzdXBwb3J0aW5nIGV2aWRlbmNlLiBUaGUgdGhlc2lzIG11c3QgYmUg cmVsZXZhbnQgdG8gSUNGUCwgYnV0IGl0IG5lZWQgbm90IGJlIG5vdmVsLgoKVGhlIHJldmlldyBj b21taXR0ZWUgd2lsbCBhY2NlcHQgb3IgcmVqZWN0IEV4cGVyaWVuY2UgUmVwb3J0cyBiYXNlZCBv biB3aGV0aGVyIHRoZXkganVkZ2UgdGhlIGV2aWRlbmNlIHRvIGJlIGNvbnZpbmNpbmcuIEFuZWNk b3RhbCBldmlkZW5jZSB3aWxsIGJlIGFjY2VwdGFibGUgcHJvdmlkZWQgaXQgaXMgd2VsbCBhcmd1 ZWQgYW5kIHRoZSBhdXRob3IgZXhwbGFpbnMgd2hhdCBlZmZvcnRzIHdlcmUgbWFkZSB0byBnYXRo ZXIgYXMgbXVjaCBldmlkZW5jZSBhcyBwb3NzaWJsZS4gVHlwaWNhbGx5LCBtb3JlIGNvbnZpbmNp bmcgZXZpZGVuY2UgaXMgb2J0YWluZWQgZnJvbSBwYXBlcnMgd2hpY2ggc2hvdyBob3cgZnVuY3Rp b25hbCBwcm9ncmFtbWluZyB3YXMgdXNlZCB0aGFuIGZyb20gcGFwZXJzIHdoaWNoIG9ubHkgc2F5 IHRoYXQgZnVuY3Rpb25hbCBwcm9ncmFtbWluZyB3YXMgdXNlZC4gVGhlIG1vc3QgY29udmluY2lu ZyBldmlkZW5jZSBvZnRlbiBpbmNsdWRlcyBjb21wYXJpc29ucyBvZiBzaXR1YXRpb25zIGJlZm9y ZSBhbmQgYWZ0ZXIgdGhlIGludHJvZHVjdGlvbiBvciBkaXNjb250aW51YXRpb24gb2YgZnVuY3Rp b25hbCBwcm9ncmFtbWluZy4gRXZpZGVuY2UgZHJhd24gZnJvbSBhIHNpbmdsZSBwZXJzb24ncyBl eHBlcmllbmNlIG1heSBiZSBzdWZmaWNpZW50LCBidXQgbW9yZSB3ZWlnaHQgd2lsbCBiZSBnaXZl biB0byBldmlkZW5jZSBkcmF3biBmcm9tIHRoZSBleHBlcmllbmNlIG9mIGdyb3VwcyBvZiBwZW9w bGUuCgpBbiBFeHBlcmllbmNlIFJlcG9ydCBzaG91bGQgYmUgc2hvcnQgYW5kIHRvIHRoZSBwb2lu dDogaXQgc2hvdWxkIG1ha2UgYSBjbGFpbSBhYm91dCBob3cgd2VsbCBmdW5jdGlvbmFsIHByb2dy YW1taW5nIHdvcmtlZCBvbiBhIHBhcnRpY3VsYXIgcHJvamVjdCBhbmQgd2h5LCBhbmQgcHJvZHVj ZSBldmlkZW5jZSB0byBzdWJzdGFudGlhdGUgdGhpcyBjbGFpbS4gSWYgZnVuY3Rpb25hbCBwcm9n cmFtbWluZyB3b3JrZWQgaW4gdGhpcyBjYXNlIGluIHRoZSBzYW1lIHdheXMgaXQgaGFzIHdvcmtl ZCBmb3Igb3RoZXJzLCB0aGUgcGFwZXIgbmVlZCBvbmx5IHN1bW1hcml6ZSB0aGUgcmVzdWx0cyAm bWRhc2g7IHRoZSBtYWluIHBhcnQgb2YgdGhlIHBhcGVyIHNob3VsZCBkaXNjdXNzIGhvdyB3ZWxs IGl0IHdvcmtlZCBhbmQgaW4gd2hhdCBjb250ZXh0LiBNb3N0IHJlYWRlcnMgd2lsbCBub3Qgd2Fu dCB0byBrbm93IGFsbCB0aGUgZGV0YWlscyBvZiB0aGUgcHJvamVjdCBhbmQgaXRzIGltcGxlbWVu dGF0aW9uLCBidXQgdGhlIHBhcGVyIHNob3VsZCBjaGFyYWN0ZXJpemUgdGhlIHByb2plY3QgYW5k IGl0cyBjb250ZXh0IHdlbGwgZW5vdWdoIHNvIHRoYXQgcmVhZGVycyBjYW4ganVkZ2UgdG8gd2hh dCBkZWdyZWUgdGhpcyBleHBlcmllbmNlIGlzIHJlbGV2YW50IHRvIHRoZWlyIG93biBwcm9qZWN0 cy4gVGhlIHBhcGVyIHNob3VsZCB0YWtlIGNhcmUgdG8gaGlnaGxpZ2h0IGFueSB1bnVzdWFsIGFz cGVjdHMgb2YgdGhlIHByb2plY3QuIFNwZWNpZmljcyBhYm91dCB0aGUgcHJvamVjdCBhcmUgbW9y ZSB2YWx1YWJsZSB0aGFuIGdlbmVyYWxpdGllcyBhYm91dCBmdW5jdGlvbmFsIHByb2dyYW1taW5n OyBmb3IgZXhhbXBsZSwgaXQgaXMgbW9yZSB2YWx1YWJsZSB0byBzYXkgdGhhdCB0aGUgdGVhbSBk ZWxpdmVyZWQgaXRzIHNvZnR3YXJlIGEgbW9udGggYWhlYWQgb2Ygc2NoZWR1bGUgdGhhbiBpdCBp cyB0byBzYXkgdGhhdCBmdW5jdGlvbmFsIHByb2dyYW1taW5nIG1hZGUgdGhlIHRlYW0gbW9yZSBw cm9kdWN0aXZlLgoKSWYgdGhlIHBhcGVyIG5vdCBvbmx5IGRlc2NyaWJlcyBleHBlcmllbmNlIGJ1 dCBhbHNvIHByZXNlbnRzIG5ldyB0ZWNobmljYWwgcmVzdWx0cywgb3IgaWYgdGhlIGV4cGVyaWVu Y2UgcmVmdXRlcyBjaGVyaXNoZWQgYmVsaWVmcyBvZiB0aGUgZnVuY3Rpb25hbC1wcm9ncmFtbWlu ZyBjb21tdW5pdHksIGl0IG1heSBiZSBiZXR0ZXIgb2ZmIHN1Ym1pdHRlZCBpdCBhcyBhIGZ1bGwg cGFwZXIsIHdoaWNoIHdpbGwgYmUganVkZ2VkIGJ5IHRoZSB1c3VhbCBjcml0ZXJpYSBvZiBub3Zl bHR5LCBvcmlnaW5hbGl0eSwgYW5kIHJlbGV2YW5jZS4gVGhlIHByaW5jaXBhbCBlZGl0b3Igd2ls bCBiZSBoYXBweSB0byBhZHZpc2Ugb24gYW55IGNvbmNlcm5zIGFib3V0IHdoaWNoIGNhdGVnb3J5 IHRvIHN1Ym1pdCB0by4KCgojIyMgSUNGUCBPcmdhbml6ZXJzIAoKR2VuZXJhbCBDaGFpcjogUm9i YnkgRmluZGxlciAoTm9ydGh3ZXN0ZXJuIFVuaXZlcnNpdHksIFVTQSkKCkFydGlmYWN0IEV2YWx1 YXRpb24gQ28tQ2hhaXJzOiBTaW1vbiBNYXJsb3cgKEZhY2Vib29rLCBVSykgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBSeWFuIFIuIE5ld3RvbiAoSW5kaWFuYSBVbml2ZXJzaXR5LCBV U0EpCkluZHVzdHJpYWwgUmVsYXRpb25zIENoYWlyOiBBbGFuIEplZmZyZXkgKE1vemlsbGEgUmVz ZWFyY2gsIFVTQSkgClByb2dyYW1taW5nIENvbnRlc3QgT3JnYW5pc2VyOiBNYXR0aGV3IEZsdWV0 IChSb2NoZXN0ZXIgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIFVTQSkgClB1YmxpY2l0eSBhbmQg V2ViIENoYWlyOiBMaW5kc2V5IEt1cGVyIChJbnRlbCBMYWJzLCBVU0EpIApTdHVkZW50IFJlc2Vh cmNoIENvbXBldGl0aW9uIENoYWlyOiBJbHlhIFNlcmdleSAoVW5pdmVyc2l0eSBDb2xsZWdlIExv bmRvbiwgVUspIApWaWRlbyBDby1DaGFpcnM6IEpvc2UgQ2FsZGVyb24gKEdhbG9pcywgSW5jLiwg VVNBKQogICAgICAgICAgICAgICAgIE5pY29sYXMgV3UgKFVuaXZlcnNpdHkgb2YgQnJpc3RvbCwg VUspCldvcmtzaG9wcyBDby1DaGFpcjogRGF2aWQgQ2hyaXN0aWFuc2VuIChJbmRpYW5hIFVuaXZl cnNpdHksIFVTQSkKICAgICAgICAgICAgICAgICAgICBDaHJpc3RvcGhlIFNjaG9sbGllcnMgKFVu aXZlcnNpdGVpdCBHZW50LCBCZWxnaXVtKQoKCiMjIyBQQUNNUEwgVm9sdW1lIDIsIElzc3VlIElD RlAgMjAxOAoKUHJpbmNpcGFsIEVkaXRvcjogTWF0dGhldyBGbGF0dCAoVW5pdmVzaXR5IG9mIFV0 YWgsIFVTQSkKClJldmlldyBDb21taXR0ZWU6IAoKU2FuZHJpbmUgQmxhenkgKElSSVNBLCBVbml2 ZXJzaXR5IG9mIFJlbm5lcyAxLCBGcmFuY2UpCkRhdmlkIENocmlzdGlhbnNlbiAoSW5kaWFuYSBV bml2ZXJzaXR5LCBVU0EpCk1hcnRpbiBFbHNtYW4gKFVuaXZlcnNpdHkgb2YgQ29wZW5oYWdlbiwg RGVubWFyaykKTWFyY28gR2Fib2FyZGkgKFVuaXZlcnNpdHkgYXQgQnVmZmFsbywgQ1VOWSwgVVNB KQpTYW0gTGluZGxleSAoVW5pdmVyc2l0eSBvZiBFZGluYnVyZ2gsIFVLKQpIZWF0aGVyIE1pbGxl ciAoTm9ydGh3ZWFzdGVybiBVbml2ZXJzaXR5LCBVU0EgLyBFUEZMLCBTd2l0emVybGFuZCkKSi4g R2FycmV0dCBNb3JyaXMgKFVuaXZlcnNpdHkgb2YgS2Fuc2FzLCBVU0EpCkhlbnJpayBOaWxzc29u IChVbml2ZXJzaXR5IG9mIE5vdHRpbmdoYW0sIFVLKQpGcmFuw6dvaXMgUG90dGllciAoSW5yaWEs IEZyYW5jZSkKQWxlamFuZHJvIFJ1c3NvIChDaGFsbWVycyBVbml2ZXJzaXR5IG9mIFRlY2hub2xv Z3ksIFN3ZWRlbikKSWx5YSBTZXJnZXkgKFVuaXZlcnNpdHkgQ29sbGVnZSBMb25kb24sIFVLKQpN aWNoYWVsIFNwZXJiZXIgKEFjdGl2ZSBHcm91cCBHbWJILCBHZXJtYW55KQpXb3V0ZXIgU3dpZXJz dHJhIChVdHJlY2h0IFVuaXZlcnNpdHksIFVLKQrDiXJpYyBUYW50ZXIgKFVuaXZlcnNpdHkgb2Yg Q2hpbGUsIENoaWxlKQpLYXRzdWhpcm8gVWVubyAoVG9ob2t1IFVuaXZlcnNpdHksIEphcGFuKQpO aWtpIFZhem91IChVbml2ZXJzaXR5IG9mIE1hcnlsYW5kLCBVU0EpCkplcmVteSBZYWxsb3AgKFVu aXZlcnNpdHkgb2YgQ2FtYnJpZGdlLCBVSykKCkV4dGVybmFsIFJldmlldyBDb21taXR0ZWU6CgpN aWNoYWVsIEQuIEFkYW1zIChVbml2ZXJzaXR5IG9mIFV0YWgsIFVTQSkKQW1hbCBBaG1lZCAoTm9y dGhlYXN0ZXJuIFVuaXZlcnNpdHksIFVTQSkKTmFkYSBBbWluIChVbml2ZXJzaXR5IG9mIENhbWJy aWRnZSwgVVNBKQpaZW5hIEFyaW9sYSAoVW5pdmVyc2l0eSBvZiBPcmVnb24pCkxhcnMgQmVyZ3N0 cm9tIChNb3ppbGxhIFJlc2VhcmNoKQpMYXJzIEJpcmtlZGFsIChBYXJodXMgVW5pdmVyc2l0eSwg RGVubWFyaykKRWR3aW4gQnJhZHkgKCBVbml2ZXJzaXR5IG9mIFN0LiBBbmRyZXdzLCBVSykKV2ls bGlhbSBCeXJkIChVbml2ZXJzaXR5IG9mIEFsYWJhbWEgYXQgQmlybWluZ2hhbSwgVVNBKQpHaXVz ZXBwZSBDYXN0YWduYSAoQ1JOUyAvIFVuaXZlcnNpdHkgb2YgUGFyaXMgRGlkZXJvdCwgRnJhbmNl KQpTaGVuZyBDaGVuIChVbml2ZXJzaXR5IG9mIExvdWlzaWFuYSBhdCBMYWZheWV0dGUsIFVTQSkK S29lbiBDbGFlc3NlbiAoQ2hhbG1lcnMgVW5pdmVyc2l0eSBvdCBUZWNobm9sb2d5LCBTd2VkZW4p ClVnbyBEYWwgTGFnbyAoVW5pdmVyc2l0eSBvZiBCb2xvZ25hLCBJdGFseSAvIElucmlhLCBGcmFu Y2UpCkRhdmlkIERhcmFpcyAoVW5pdmVyc2l0eSBvZiBWZXJtb250LCBVU0EpCkpvc2h1YSBEdW5m aWVsZCAoUXVlZW7igJlzIFVuaXZlcnNpdHksIENhbmFkYSkKUmljaGFyZCBFaXNlbmJlcmcgKEJy eW4gTWF3ciBDb2xsZWdlLCBVU0EpCk1hdHRoZXcgRmx1ZXQgKFJvY2hlc3RlciBJbnN0aXR1dGUg b2YgVGVjaG5vbG9neSwgVVNBKQpOYXRlIEZvc3RlciAoQ29ybmVsbCBVbml2ZXJzaXR5LCBVU0Ep Ckp1cnJpYWFuIEhhZ2UgKFV0cmVjaHQgVW5pdmVyc2l0eSwgTmV0aGVybGFuZHMpCkRhdmlkIFZh biBIb3JuIChVbml2ZXJzaXR5IG9mIE1hcnlsYW5kLCBVU0EpClpoZW5qaWFuZyBIdSAoTmF0aW9u YWwgSW5zdGl0dXRlIG9mIEluZm9ybWF0aWNzLCBKYXBhbikKU3VyZXNoIEphZ2FubmF0aGFuIChQ dXJkdWUgVW5pdmVyc2l0eSwgVVNBKQpTaW1vbiBQZXl0b24gSm9uZXMgKE1pY3Jvc29mdCBSZXNl YXJjaCwgVUspCk5hb2tpIEtvYmF5YXNoaSAoVW5pdmVyc2l0eSBvZiBUb2t5bywgSmFwYW4pCk5l ZWxha2FudGFuIEtyaXNobmFzd2FtaSAoVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UsIFVLKQpLYXp1 dGFrYSBNYXRzdWRhIChUb2hva3UgVW5pdmVyc2l0eSwgSmFwYW4pClRyZXZvciBNY0RvbmVsbCAo VW5pdmVyc2l0eSBvZiBOZXcgU291dGggV2FsZXMsIEF1c3RyYWxpYSkKSGVybmFuIE1lbGdyYXR0 aSAoVW5pdmVyc2l0eSBvZiBCdWVub3MgQWlyZXMsIEFyZ2VudGluYSkKQWtpbWFzYSBNb3JpaGF0 YSAoVW5pdmVyc2l0eSBvZiBUb2t5bywgSmFwYW4pCkFsZWtzYW5kYXIgTmFuZXZza2kgKElNREVB IFNvZnR3YXJlIEluc3RpdHV0ZSwgU3BhaW4pCktpbSBOZ3V54buFbiAoVW5pdmVyc2l0eSBvZiBQ YXJpcy1TdWQsIEZyYW5jZSkKQ29zbWluIE9hbmNlYSAoRElLVSwgVW5pdmVyc2l0eSBvZiBDb3Bl bmhhZ2VuLCBEZW5tYXJrKQpCcnVubyBDLiBkLiBTLiBPbGl2ZWlyYSAoVW5pdmVyc2l0eSBvZiBI b25nIEtvbmcsIENoaW5hKQpUb21hcyBQZXRyaWNlayAoVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2Us IFVLKQpCZW5qYW1pbiBQaWVyY2UgKFVuaXZlcnNpdHkgb2YgUGVubnN5bHZhbmlhLCBVU0EpCkNo cmlzdGluZSBSaXprYWxsYWggKFVuaXZlcnNpdHkgb2YgUGVubnN5bHZhbmlhLCBVU0EpClRvbSBT Y2hyaWp2ZXJzIChLVSBMZXV2ZW4sIEJlbGdpdW0pCk1hbnVlbCBTZXJyYW5vIChJbnJpYSwgRnJh bmNlKQpKZXJlbXkgU2llayAoSW5kaWFuYSBVbml2ZXJzaXR5LCBVU0EpCkpvc2VmIFN2ZW5uaW5n c3NvbiAoQ2hhbG1lcnMgVW5pdmVyc2l0eSBvZiBUZWNobm9sb2d5LCBTd2VkZW4pCk5pY29sYXMg VGFiYXJlYXUgKElucmlhLCBGcmFuY2UpCkRpbWl0cmlvcyBWeXRpbmlvdGlzIChNaWNyb3NvZnQg UmVzZWFyY2gsIFVLKQpQaGlsaXAgV2FkbGVyIChVbml2ZXJzaXR5IG9mIEVkaW5idXJnaCwgVUsp Ck1lbmcgV2FuZyAoVW5pdmVyc2l0eSBvZiBLZW50LCBVSykKCi0tIApZb3UgcmVjZWl2ZWQgdGhp cyBtZXNzYWdlIGJlY2F1c2UgeW91IGFyZSBzdWJzY3JpYmVkIHRvIHRoZSBHb29nbGUgR3JvdXBz ICJNTHRvbi11c2VyIiBncm91cC4KVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGdyb3VwIGFuZCBz dG9wIHJlY2VpdmluZyBlbWFpbHMgZnJvbSBpdCwgc2VuZCBhbiBlbWFpbCB0byBtbHRvbi11c2Vy K3Vuc3Vic2NyaWJlQG1sdG9uLm9yZy4KCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQ2hlY2sgb3V0 IHRoZSB2aWJyYW50IHRlY2ggY29tbXVuaXR5IG9uIG9uZSBvZiB0aGUgd29ybGQncyBtb3N0CmVu Z2FnaW5nIHRlY2ggc2l0ZXMsIFNsYXNoZG90Lm9yZyEgaHR0cDovL3NkbS5saW5rL3NsYXNoZG90 Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1MdG9uLXVz ZXIgbWFpbGluZyBsaXN0Ck1MdG9uLXVzZXJAbGlzdHMuc291cmNlZm9yZ2UubmV0OyBtbHRvbi11 c2VyQG1sdG9uLm9yZwpodHRwczovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0aW5m by9tbHRvbi11c2VyCg==