Third Call for Papers: PACMPL issue ICFP 2019
"'Sam Tobin-Hochstadt' via MLton-user" <[email protected]> Wed, 13 Feb 2019 13:15:08 -0500
| Newsgroups | gmane.comp.lang.ml.mlton.user |
|---|---|
| Message-ID | <[email protected]> |
ICAgICAgICAgICAgICAgIFBBQ01QTCBWb2x1bWUgMywgSXNzdWUgSUNGUCAyMDE5CgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgQ2FsbCBmb3IgUGFwZXJzCgoKCiAgICAgICAgICAgIGFjY2Vw dGVkIHBhcGVycyB0byBiZSBpbnZpdGVkIGZvciBwcmVzZW50YXRpb24gYXQKCiBUaGUgMjR0aCBB Q00gU0lHUExBTiBJbnRlcm5hdGlvbmFsIENvbmZlcmVuY2Ugb24gRnVuY3Rpb25hbCBQcm9ncmFt bWluZwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZXJsaW4sIEdlcm1hbnkKCiAgICAg ICAgICAgICAgICAgICAgICAgaHR0cDovL2ljZnAxOS5zaWdwbGFuLm9yZy8KCgoKIyMjIEltcG9y dGFudCBkYXRlcwoKCgpTdWJtaXNzaW9ucyBkdWU6ICAgIDEgTWFyY2ggMjAxOSAoRnJpZGF5KSBB bnl3aGVyZSBvbiBFYXJ0aAoKICAgICAgICAgICAgICAgICAgICBodHRwczovL2ljZnAxOS5ob3Rj cnAuY29tCgpBdXRob3IgcmVzcG9uc2U6ICAgIDE2IEFwcmlsIChUdWVzZGF5KSAtIDE4IEFwcmkg KEZyaWRheSkgMTQ6MDAgVVRDCgpOb3RpZmljYXRpb246ICAgICAgIDMgTWF5IChGcmlkYXkpCgpG aW5hbCBjb3B5IGR1ZTogICAgIDIyIEp1bmUgKFNhdHVyZGF5KQoKQ29uZmVyZW5jZTogICAgICAg ICAxOCBBdWd1c3QgKFN1bmRheSkgLSAyMyBBdWd1c3QgKEZyaWRheSkKCgoKIyMjIEFib3V0IFBB Q01QTAoKCgpQcm9jZWVkaW5ncyBvZiB0aGUgQUNNIG9uIFByb2dyYW1taW5nIExhbmd1YWdlcyAo UEFDTVBMCgo8aHR0cHM6Ly9wYWNtcGwuYWNtLm9yZy8+KSBpcyBhIEdvbGQgT3BlbiBBY2Nlc3Mg am91cm5hbCBwdWJsaXNoaW5nCgpyZXNlYXJjaCBvbiBhbGwgYXNwZWN0cyBvZiBwcm9ncmFtbWlu ZyBsYW5ndWFnZXMsIGZyb20gZGVzaWduIHRvCgppbXBsZW1lbnRhdGlvbiBhbmQgZnJvbSBtYXRo ZW1hdGljYWwgZm9ybWFsaXNtcyB0byBlbXBpcmljYWwKCnN0dWRpZXMuIEVhY2ggaXNzdWUgb2Yg dGhlIGpvdXJuYWwgaXMgZGV2b3RlZCB0byBhIHBhcnRpY3VsYXIgc3ViamVjdAoKYXJlYSB3aXRo aW4gcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIGFuZCB3aWxsIGJlIGFubm91bmNlZCB0aHJvdWdoCgpw dWJsaWNpemVkIENhbGxzIGZvciBQYXBlcnMsIGxpa2UgdGhpcyBvbmUuCgoKCiMjIyBTY29wZQoK CgpbUEFDTVBMXShodHRwczovL3BhY21wbC5hY20ub3JnLykgaXNzdWUgSUNGUCAyMDE5IHNlZWtz IG9yaWdpbmFsCgpwYXBlcnMgb24gdGhlIGFydCBhbmQgc2NpZW5jZSBvZiBmdW5jdGlvbmFsIHBy b2dyYW1taW5nLiBTdWJtaXNzaW9ucwoKYXJlIGludml0ZWQgb24gYWxsIHRvcGljcyBmcm9tIHBy aW5jaXBsZXMgdG8gcHJhY3RpY2UsIGZyb20KCmZvdW5kYXRpb25zIHRvIGZlYXR1cmVzLCBhbmQg ZnJvbSBhYnN0cmFjdGlvbiB0byBhcHBsaWNhdGlvbi4gVGhlCgpzY29wZSBpbmNsdWRlcyBhbGwg bGFuZ3VhZ2VzIHRoYXQgZW5jb3VyYWdlIGZ1bmN0aW9uYWwgcHJvZ3JhbW1pbmcsCgppbmNsdWRp bmcgYm90aCBwdXJlbHkgYXBwbGljYXRpdmUgYW5kIGltcGVyYXRpdmUgbGFuZ3VhZ2VzLCBhcyB3 ZWxsIGFzCgpsYW5ndWFnZXMgd2l0aCBvYmplY3RzLCBjb25jdXJyZW5jeSwgb3IgcGFyYWxsZWxp c20uIFRvcGljcyBvZgoKaW50ZXJlc3QgaW5jbHVkZSAoYnV0IGFyZSBub3QgbGltaXRlZCB0byk6 CgoKCiAgKiAqTGFuZ3VhZ2UgRGVzaWduKjogY29uY3VycmVuY3ksIHBhcmFsbGVsaXNtLCBhbmQg ZGlzdHJpYnV0aW9uOwoKICAgICBtb2R1bGVzOyBjb21wb25lbnRzIGFuZCBjb21wb3NpdGlvbjsg bWV0YXByb2dyYW1taW5nOyB0eXBlCgogICAgIHN5c3RlbXM7IGludGVyb3BlcmFiaWxpdHk7IGRv bWFpbi1zcGVjaWZpYyBsYW5ndWFnZXM7IGFuZAoKICAgICByZWxhdGlvbnMgdG8gaW1wZXJhdGl2 ZSwgb2JqZWN0LW9yaWVudGVkLCBvciBsb2dpYyBwcm9ncmFtbWluZy4KCgoKICAqICpJbXBsZW1l bnRhdGlvbio6IGFic3RyYWN0IG1hY2hpbmVzOyB2aXJ0dWFsIG1hY2hpbmVzOwoKICAgICBpbnRl cnByZXRhdGlvbjsgY29tcGlsYXRpb247IGNvbXBpbGUtdGltZSBhbmQgcnVuLXRpbWUKCiAgICAg b3B0aW1pemF0aW9uOyBnYXJiYWdlIGNvbGxlY3Rpb24gYW5kIG1lbW9yeSBtYW5hZ2VtZW50OwoK ICAgICBtdWx0aS10aHJlYWRpbmc7IGV4cGxvaXRpbmcgcGFyYWxsZWwgaGFyZHdhcmU7IGludGVy ZmFjZXMgdG8KCiAgICAgZm9yZWlnbiBmdW5jdGlvbnMsIHNlcnZpY2VzLCBjb21wb25lbnRzLCBv ciBsb3ctbGV2ZWwgbWFjaGluZQoKICAgICByZXNvdXJjZXMuCgoKCiAgKiAqU29mdHdhcmUtRGV2 ZWxvcG1lbnQgVGVjaG5pcXVlcyo6IGFsZ29yaXRobXMgYW5kIGRhdGEgc3RydWN0dXJlczsKCiAg ICAgZGVzaWduIHBhdHRlcm5zOyBzcGVjaWZpY2F0aW9uOyB2ZXJpZmljYXRpb247IHZhbGlkYXRp b247IHByb29mCgogICAgIGFzc2lzdGFudHM7IGRlYnVnZ2luZzsgdGVzdGluZzsgdHJhY2luZzsg cHJvZmlsaW5nLgoKCgogICogKkZvdW5kYXRpb25zKjogZm9ybWFsIHNlbWFudGljczsgbGFtYmRh IGNhbGN1bHVzOyByZXdyaXRpbmc7IHR5cGUKCiAgICAgdGhlb3J5OyBtb25hZHM7IGNvbnRpbnVh dGlvbnM7IGNvbnRyb2w7IHN0YXRlOyBlZmZlY3RzOyBwcm9ncmFtCgogICAgIHZlcmlmaWNhdGlv bjsgZGVwZW5kZW50IHR5cGVzLgoKCgogICogKkFuYWx5c2lzIGFuZCBUcmFuc2Zvcm1hdGlvbio6 IGNvbnRyb2wtZmxvdzsgZGF0YS1mbG93OyBhYnN0cmFjdAoKICAgICBpbnRlcnByZXRhdGlvbjsg cGFydGlhbCBldmFsdWF0aW9uOyBwcm9ncmFtIGNhbGN1bGF0aW9uLgoKCgogICogKkFwcGxpY2F0 aW9ucyo6IHN5bWJvbGljIGNvbXB1dGluZzsgZm9ybWFsLW1ldGhvZHMgdG9vbHM7CgogICAgIGFy dGlmaWNpYWwgaW50ZWxsaWdlbmNlOyBzeXN0ZW1zIHByb2dyYW1taW5nOyBkaXN0cmlidXRlZC1z eXN0ZW1zCgogICAgIGFuZCB3ZWIgcHJvZ3JhbW1pbmc7IGhhcmR3YXJlIGRlc2lnbjsgZGF0YWJh c2VzOyBYTUwgcHJvY2Vzc2luZzsKCiAgICAgc2NpZW50aWZpYyBhbmQgbnVtZXJpY2FsIGNvbXB1 dGluZzsgZ3JhcGhpY2FsIHVzZXIgaW50ZXJmYWNlczsKCiAgICAgbXVsdGltZWRpYSBhbmQgM0Qg Z3JhcGhpY3MgcHJvZ3JhbW1pbmc7IHNjcmlwdGluZzsgc3lzdGVtCgogICAgIGFkbWluaXN0cmF0 aW9uOyBzZWN1cml0eS4KCgoKICAqICpFZHVjYXRpb24qOiB0ZWFjaGluZyBpbnRyb2R1Y3Rvcnkg cHJvZ3JhbW1pbmc7IHBhcmFsbGVsCgogICAgIHByb2dyYW1taW5nOyBtYXRoZW1hdGljYWwgcHJv b2Y7IGFsZ2VicmEuCgoKClN1Ym1pc3Npb25zIHdpbGwgYmUgZXZhbHVhdGVkIGFjY29yZGluZyB0 byB0aGVpciByZWxldmFuY2UsCgpjb3JyZWN0bmVzcywgc2lnbmlmaWNhbmNlLCBvcmlnaW5hbGl0 eSwgYW5kIGNsYXJpdHkuIEVhY2ggc3VibWlzc2lvbgoKc2hvdWxkIGV4cGxhaW4gaXRzIGNvbnRy aWJ1dGlvbnMgaW4gYm90aCBnZW5lcmFsIGFuZCB0ZWNobmljYWwgdGVybXMsCgpjbGVhcmx5IGlk ZW50aWZ5aW5nIHdoYXQgaGFzIGJlZW4gYWNjb21wbGlzaGVkLCBleHBsYWluaW5nIHdoeSBpdCBp cwoKc2lnbmlmaWNhbnQsIGFuZCBjb21wYXJpbmcgaXQgd2l0aCBwcmV2aW91cyB3b3JrLiBUaGUg dGVjaG5pY2FsCgpjb250ZW50IHNob3VsZCBiZSBhY2Nlc3NpYmxlIHRvIGEgYnJvYWQgYXVkaWVu Y2UuCgoKClBBQ01QTCBpc3N1ZSBJQ0ZQIDIwMTkgYWxzbyB3ZWxjb21lcyBzdWJtaXNzaW9ucyBp biB0d28gc2VwYXJhdGUKCmNhdGVnb3JpZXMgJm1kYXNoOyBGdW5jdGlvbmFsIFBlYXJscyBhbmQg RXhwZXJpZW5jZSBSZXBvcnRzICZtZGFzaDsKCnRoYXQgbXVzdCBiZSBtYXJrZWQgYXMgc3VjaCBh dCB0aGUgdGltZSBvZiBzdWJtaXNzaW9uIGFuZCB0aGF0IG5lZWQKCm5vdCByZXBvcnQgb3JpZ2lu YWwgcmVzZWFyY2ggcmVzdWx0cy4gIERldGFpbGVkIGd1aWRlbGluZXMgb24gYm90aAoKY2F0ZWdv cmllcyBhcmUgZ2l2ZW4gYXQgdGhlIGVuZCBvZiB0aGlzIGNhbGwuCgoKClBsZWFzZSBjb250YWN0 IHRoZSBwcmluY2lwYWwgZWRpdG9yIGlmIHlvdSBoYXZlIHF1ZXN0aW9ucyBvciBhcmUKCmNvbmNl cm5lZCBhYm91dCB0aGUgYXBwcm9wcmlhdGVuZXNzIG9mIGEgdG9waWMuCgoKCiMjIyBQcmVwYXJh dGlvbiBvZiBzdWJtaXNzaW9ucwoKCgoqKkRlYWRsaW5lKio6IFRoZSBkZWFkbGluZSBmb3Igc3Vi bWlzc2lvbnMgaXMgKipGcmlkYXksIE1hcmNoIDEsIDIwMTkqKiwKCkFueXdoZXJlIG9uIEVhcnRo ICg8aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW55d2hlcmVfb25fRWFydGg+KS4KClRo aXMgZGVhZGxpbmUgd2lsbCBiZSBzdHJpY3RseSBlbmZvcmNlZC4KCgoKKipGb3JtYXR0aW5nKio6 IFN1Ym1pc3Npb25zIG11c3QgYmUgaW4gUERGIGZvcm1hdCwgcHJpbnRhYmxlIGluIGJsYWNrCgph bmQgd2hpdGUgb24gVVMgTGV0dGVyIHNpemVkIHBhcGVyLCBhbmQgaW50ZXJwcmV0YWJsZSBieSBj b21tb24gUERGCgp0b29scy4gQWxsIHN1Ym1pc3Npb25zIG11c3QgYWRoZXJlIHRvIHRoZSAiQUNN IFNtYWxsIiB0ZW1wbGF0ZSB0aGF0IGlzCgphdmFpbGFibGUgKGluIGJvdGggTGFUZVggYW5kIFdv cmQgZm9ybWF0cykgZnJvbQoKPGh0dHBzOi8vd3d3LmFjbS5vcmcvcHVibGljYXRpb25zL2F1dGhv cnMvc3VibWlzc2lvbnM+LiAgRm9yIGF1dGhvcnMKCnVzaW5nIExhVGVYLCBhIGxpZ2h0ZXItd2Vp Z2h0IHBhY2thZ2UsIGluY2x1ZGluZyBvbmx5IHRoZSBlc3NlbnRpYWwKCmZpbGVzLCBpcyBhdmFp bGFibGUgZnJvbQoKPGh0dHA6Ly9zaWdwbGFuLm9yZy9SZXNvdXJjZXMvQXV0aG9yLyNhY21hcnQt Zm9ybWF0Pi4KCgoKVGhlcmUgaXMgYSBsaW1pdCBvZiAqKjI1IHBhZ2VzIGZvciBhIGZ1bGwgcGFw ZXIgb3IgRnVuY3Rpb25hbCBQZWFybCoqCgphbmQgKioxMiBwYWdlcyBmb3IgYW4gRXhwZXJpZW5j ZSBSZXBvcnQqKjsgaW4gZWl0aGVyIGNhc2UsIHRoZQoKYmlibGlvZ3JhcGh5IHdpbGwgbm90IGJl IGNvdW50ZWQgYWdhaW5zdCB0aGVzZSBsaW1pdHMuIFN1Ym1pc3Npb25zCgp0aGF0IGV4Y2VlZCB0 aGUgcGFnZSBsaW1pdHMgb3IsIGZvciBvdGhlciByZWFzb25zLCBkbyBub3QgbWVldCB0aGUKCnJl cXVpcmVtZW50cyBmb3IgZm9ybWF0dGluZywgd2lsbCBiZSBzdW1tYXJpbHkgcmVqZWN0ZWQuIFN1 cHBsZW1lbnRhcnkKCm1hdGVyaWFsIGNhbiBhbmQgc2hvdWxkIGJlICoqc2VwYXJhdGVseSoqIHN1 Ym1pdHRlZCAoc2VlIGJlbG93KS4KCgoKU2VlIGFsc28gUEFDTVBMJ3MgSW5mb3JtYXRpb24gYW5k IEd1aWRlbGluZXMgZm9yIEF1dGhvcnMgYXQKCjxodHRwczovL3BhY21wbC5hY20ub3JnL2F1dGhv cnMuY2ZtPi4KCgoKKipTdWJtaXNzaW9uKio6IFN1Ym1pc3Npb25zIHdpbGwgYmUgYWNjZXB0ZWQg YXQgPGh0dHBzOi8vaWNmcDE5LmhvdGNycC5jb20vPgoKCgpJbXByb3ZlZCB2ZXJzaW9ucyBvZiBh IHBhcGVyIG1heSBiZSBzdWJtaXR0ZWQgYXQgYW55IHBvaW50IGJlZm9yZSB0aGUKCnN1Ym1pc3Np b24gZGVhZGxpbmUgdXNpbmcgdGhlIHNhbWUgd2ViIGludGVyZmFjZS4KCgoKKipBdXRob3IgUmVz cG9uc2UgUGVyaW9kKio6IEF1dGhvcnMgd2lsbCBoYXZlIGEgNzItaG91ciBwZXJpb2QsCgpzdGFy dGluZyBhdCAxNDowMCBVVEMgb24gKipUdWVzZGF5LCBBcHJpbCAxNiwgMjAxOSoqLCB0byByZWFk IHJldmlld3MKCmFuZCByZXNwb25kIHRvIHRoZW0uCgoKCioqU3VwcGxlbWVudGFyeSBNYXRlcmlh bCoqOiBBdXRob3JzIGhhdmUgdGhlIG9wdGlvbiB0byBhdHRhY2gKCnN1cHBsZW1lbnRhcnkgbWF0 ZXJpYWwgdG8gYSBzdWJtaXNzaW9uLCBvbiB0aGUgdW5kZXJzdGFuZGluZyB0aGF0CgpyZXZpZXdl cnMgbWF5IGNob29zZSBub3QgdG8gbG9vayBhdCBpdC4gVGhpcyBzdXBwbGVtZW50YXJ5IG1hdGVy aWFsCgpzaG91bGQgKipub3QqKiBiZSBzdWJtaXR0ZWQgYXMgcGFydCBvZiB0aGUgbWFpbiBkb2N1 bWVudDsgaW5zdGVhZCwgaXQKCnNob3VsZCBiZSB1cGxvYWRlZCBhcyBhICoqc2VwYXJhdGUqKiBQ REYgZG9jdW1lbnQgb3IgdGFyYmFsbC4KCgoKU3VwcGxlbWVudGFyeSBtYXRlcmlhbCBzaG91bGQg YmUgdXBsb2FkZWQgKiphdCBzdWJtaXNzaW9uIHRpbWUqKiwgbm90CgpieSBwcm92aWRpbmcgYSBV UkwgaW4gdGhlIHBhcGVyIHRoYXQgcG9pbnRzIHRvIGFuIGV4dGVybmFsIHJlcG9zaXRvcnkuCgoK CkF1dGhvcnMgYXJlIGZyZWUgdG8gdXBsb2FkIGJvdGggYW5vbnltaXplZCBhbmQgbm9uLWFub255 bWl6ZWQKCnN1cHBsZW1lbnRhcnkgbWF0ZXJpYWwuIEFub255bWl6ZWQgc3VwcGxlbWVudGFyeSBt YXRlcmlhbCB3aWxsIGJlCgp2aXNpYmxlIHRvIHJldmlld2VycyBpbW1lZGlhdGVseTsgbm9uLWFu b255bWl6ZWQgc3VwcGxlbWVudGFyeQoKbWF0ZXJpYWwgd2lsbCBiZSByZXZlYWxlZCB0byByZXZp ZXdlcnMgb25seSBhZnRlciB0aGV5IGhhdmUgc3VibWl0dGVkCgp0aGVpciByZXZpZXcgb2YgdGhl IHBhcGVyIGFuZCBsZWFybmVkIHRoZSBpZGVudGl0eSBvZiB0aGUgYXV0aG9yKHMpLgoKCgoqKkF1 dGhvcnNoaXAgUG9saWNpZXMqKjogQWxsIHN1Ym1pc3Npb25zIGFyZSBleHBlY3RlZCB0byBjb21w bHkgd2l0aAoKdGhlIEFDTSBQb2xpY2llcyBmb3IgQXV0aG9yc2hpcCB0aGF0IGFyZSBkZXRhaWxl ZCBhdAoKPGh0dHBzOi8vd3d3LmFjbS5vcmcvcHVibGljYXRpb25zL2F1dGhvcnMvaW5mb3JtYXRp b24tZm9yLWF1dGhvcnM+LgoKCgoqKlJlcHVibGljYXRpb24gUG9saWNpZXMqKjogRWFjaCBzdWJt aXNzaW9uIG11c3QgYWRoZXJlIHRvIFNJR1BMQU4ncwoKcmVwdWJsaWNhdGlvbiBwb2xpY3ksIGFz IGV4cGxhaW5lZCBvbiB0aGUgd2ViIGF0Cgo8aHR0cDovL3d3dy5zaWdwbGFuLm9yZy9SZXNvdXJj ZXMvUG9saWNpZXMvUmVwdWJsaWNhdGlvbj4uCgoKCioqUmVzdWJtaXR0ZWQgUGFwZXJzKio6IEF1 dGhvcnMgd2hvIHN1Ym1pdCBhIHJldmlzZWQgdmVyc2lvbiBvZiBhCgpwYXBlciB0aGF0IGhhcyBw cmV2aW91c2x5IGJlZW4gcmVqZWN0ZWQgYnkgYW5vdGhlciBjb25mZXJlbmNlIGhhdmUgdGhlCgpv cHRpb24gdG8gYXR0YWNoIGFuIGFubm90YXRlZCBjb3B5IG9mIHRoZSByZXZpZXdzIG9mIHRoZWly IHByZXZpb3VzCgpzdWJtaXNzaW9uKHMpLCBleHBsYWluaW5nIGhvdyB0aGV5IGhhdmUgYWRkcmVz c2VkIHRoZXNlIHByZXZpb3VzCgpyZXZpZXdzIGluIHRoZSBwcmVzZW50IHN1Ym1pc3Npb24uIElm IGEgcmV2aWV3ZXIgaWRlbnRpZmllcwoKaGltL2hlcnNlbGYgYXMgYSByZXZpZXdlciBvZiB0aGlz IHByZXZpb3VzIHN1Ym1pc3Npb24gYW5kIHdpc2hlcyB0bwoKc2VlIGhvdyBoaXMvaGVyIGNvbW1l bnRzIGhhdmUgYmVlbiBhZGRyZXNzZWQsIHRoZSBwcmluY2lwYWwgZWRpdG9yCgp3aWxsIGNvbW11 bmljYXRlIHRvIHRoaXMgcmV2aWV3ZXIgdGhlIGFubm90YXRlZCBjb3B5IG9mIGhpcy9oZXIKCnBy ZXZpb3VzIHJldmlldy4gT3RoZXJ3aXNlLCBubyByZXZpZXdlciB3aWxsIHJlYWQgdGhlIGFubm90 YXRlZCBjb3BpZXMKCm9mIHRoZSBwcmV2aW91cyByZXZpZXdzLgoKCgojIyMgUmV2aWV3IFByb2Nl c3MKCgoKVGhpcyBzZWN0aW9uIG91dGxpbmVzIHRoZSB0d28tc3RhZ2UgcHJvY2VzcyB3aXRoIGxp Z2h0d2VpZ2h0Cgpkb3VibGUtYmxpbmQgcmV2aWV3aW5nIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHNl bGVjdCBwYXBlcnMgZm9yIFBBQ01QTAoKaXNzdWUgSUNGUCAyMDE5LiAgV2UgYW50aWNpcGF0ZSB0 aGF0IHRoZXJlIHdpbGwgYmUgYSBuZWVkIHRvIGNsYXJpZnkKCmFuZCBleHBhbmQgb24gdGhpcyBw cm9jZXNzLCBhbmQgd2Ugd2lsbCBtYWludGFpbiBhIGxpc3Qgb2YgZnJlcXVlbnRseQoKYXNrZWQg cXVlc3Rpb25zIGFuZCBhbnN3ZXJzIG9uIHRoZSBjb25mZXJlbmNlIHdlYnNpdGUgdG8gYWRkcmVz cwoKY29tbW9uIGNvbmNlcm5zLgoKCgoqKlBBQ01QTCBpc3N1ZSBJQ0ZQIDIwMTkgd2lsbCBlbXBs b3kgYSB0d28tc3RhZ2UgcmV2aWV3IHByb2Nlc3MuKiogVGhlCgogIGZpcnN0IHN0YWdlIGluIHRo ZSByZXZpZXcgcHJvY2VzcyB3aWxsIGFzc2VzcyBzdWJtaXR0ZWQgcGFwZXJzIHVzaW5nCgogIHRo ZSBjcml0ZXJpYSBzdGF0ZWQgYWJvdmUgYW5kIHdpbGwgYWxsb3cgZm9yIGZlZWRiYWNrIGFuZCBp bnB1dCBvbgoKICBpbml0aWFsIHJldmlld3MgdGhyb3VnaCB0aGUgYXV0aG9yIHJlc3BvbnNlIHBl cmlvZCBtZW50aW9uZWQKCiAgcHJldmlvdXNseS4gQXQgdGhlIHJldmlldyBtZWV0aW5nLCBhIHNl dCBvZiBwYXBlcnMgd2lsbCBiZQoKICBjb25kaXRpb25hbGx5IGFjY2VwdGVkIGFuZCBhbGwgb3Ro ZXIgcGFwZXJzIHdpbGwgYmUgcmVqZWN0ZWQuCgogIEF1dGhvcnMgd2lsbCBiZSBub3RpZmllZCBv ZiB0aGVzZSBkZWNpc2lvbnMgb24gKipNYXkgMywgMjAxOSoqLgoKCgpBdXRob3JzIG9mIGNvbmRp dGlvbmFsbHkgYWNjZXB0ZWQgcGFwZXJzIHdpbGwgYmUgcHJvdmlkZWQgd2l0aAoKY29tbWl0dGVl IHJldmlld3MgKGp1c3QgYXMgaW4gcHJldmlvdXMgY29uZmVyZW5jZXMpIGFsb25nIHdpdGggYSBz ZXQKCm9mIG1hbmRhdG9yeSByZXZpc2lvbnMuIEFmdGVyIGZvdXIgd2Vla3MgKE1heSAzMSwgMjAx OSksIHRoZSBhdXRob3JzCgp3aWxsIHByb3ZpZGUgYSBzZWNvbmQgc3VibWlzc2lvbi4gVGhlIHNl Y29uZCBhbmQgZmluYWwgcmV2aWV3aW5nIHBoYXNlCgphc3Nlc3NlcyB3aGV0aGVyIHRoZSBtYW5k YXRvcnkgcmV2aXNpb25zIGhhdmUgYmVlbiBhZGVxdWF0ZWx5CgphZGRyZXNzZWQgYnkgdGhlIGF1 dGhvcnMgYW5kIHRoZXJlYnkgZGV0ZXJtaW5lcyB0aGUgZmluYWwKCmFjY2VwdC9yZWplY3Qgc3Rh dHVzIG9mIHRoZSBwYXBlci4gVGhlIGludGVudCBhbmQgZXhwZWN0YXRpb24gaXMgdGhhdAoKdGhl IG1hbmRhdG9yeSByZXZpc2lvbnMgY2FuIGJlIGFkZHJlc3NlZCB3aXRoaW4gZm91ciB3ZWVrcyBh bmQgaGVuY2UKCnRoYXQgY29uZGl0aW9uYWxseSBhY2NlcHRlZCBwYXBlcnMgd2lsbCBpbiBnZW5l cmFsIGJlIGFjY2VwdGVkIGluIHRoZQoKc2Vjb25kIHBoYXNlLgoKCgpUaGUgc2Vjb25kIHN1Ym1p c3Npb24gc2hvdWxkIGNsZWFybHkgaWRlbnRpZnkgaG93IHRoZSBtYW5kYXRvcnkKCnJldmlzaW9u cyB3ZXJlIGFkZHJlc3NlZC4gVG8gdGhhdCBlbmQsIHRoZSBzZWNvbmQgc3VibWlzc2lvbiBtdXN0 IGJlCgphY2NvbXBhbmllZCBieSBhIGNvdmVyIGxldHRlciBtYXBwaW5nIGVhY2ggbWFuZGF0b3J5 IHJldmlzaW9uIHJlcXVlc3QKCnRvIHNwZWNpZmljIHBhcnRzIG9mIHRoZSBwYXBlci4gVGhlIGNv dmVyIGxldHRlciB3aWxsIGZhY2lsaXRhdGUgYQoKcXVpY2sgc2Vjb25kIHJldmlldywgYWxsb3dp bmcgZm9yIGNvbmZpcm1hdGlvbiBvZiBmaW5hbCBhY2NlcHRhbmNlCgp3aXRoaW4gdHdvIHdlZWtz LiBDb252ZXJzZWx5LCB0aGUgYWJzZW5jZSBvZiBhIGNvdmVyIGxldHRlciB3aWxsIGJlCgpncm91 bmRzIGZvciB0aGUgcGFwZXLigJlzIHJlamVjdGlvbi4KCgoKKipQQUNNUEwgaXNzdWUgSUNGUCAy MDE5IHdpbGwgZW1wbG95IGEgbGlnaHR3ZWlnaHQgZG91YmxlLWJsaW5kCgogIHJldmlld2luZyBw cm9jZXNzLioqIFRvIGZhY2lsaXRhdGUgdGhpcywgc3VibWl0dGVkIHBhcGVycyBtdXN0CgogIGFk aGVyZSB0byB0d28gcnVsZXM6CgoKCiAgMS4gKiphdXRob3IgbmFtZXMgYW5kIGluc3RpdHV0aW9u cyBtdXN0IGJlIG9taXR0ZWQqKiwgYW5kCgogIDIuICoqcmVmZXJlbmNlcyB0byBhdXRob3JzJyBv d24gcmVsYXRlZCB3b3JrIHNob3VsZCBiZSBpbiB0aGUgdGhpcmQKCiAgcGVyc29uKiogKGUuZy4s IG5vdCAiV2UgYnVpbGQgb24gb3VyIHByZXZpb3VzIHdvcmsgLi4uIiBidXQgcmF0aGVyCgogICJX ZSBidWlsZCBvbiB0aGUgd29yayBvZiAuLi4iKS4KCgoKVGhlIHB1cnBvc2Ugb2YgdGhpcyBwcm9j ZXNzIGlzIHRvIGhlbHAgdGhlIHJldmlld2VycyBjb21lIHRvIGFuCgppbml0aWFsIGp1ZGdlbWVu dCBhYm91dCB0aGUgcGFwZXIgd2l0aG91dCBiaWFzLCBub3QgdG8gbWFrZSBpdAoKaW1wb3NzaWJs ZSBmb3IgdGhlbSB0byBkaXNjb3ZlciB0aGUgYXV0aG9ycyBpZiB0aGV5IHdlcmUgdG8KCnRyeS4g Tm90aGluZyBzaG91bGQgYmUgZG9uZSBpbiB0aGUgbmFtZSBvZiBhbm9ueW1pdHkgdGhhdCB3ZWFr ZW5zIHRoZQoKc3VibWlzc2lvbiBvciBtYWtlcyB0aGUgam9iIG9mIHJldmlld2luZyB0aGUgcGFw ZXIgbW9yZSBkaWZmaWN1bHQKCihlLmcuLCBpbXBvcnRhbnQgYmFja2dyb3VuZCByZWZlcmVuY2Vz IHNob3VsZCBub3QgYmUgb21pdHRlZCBvcgoKYW5vbnltaXplZCkuIEluIGFkZGl0aW9uLCBhdXRo b3JzIHNob3VsZCBmZWVsIGZyZWUgdG8gZGlzc2VtaW5hdGUKCnRoZWlyIGlkZWFzIG9yIGRyYWZ0 IHZlcnNpb25zIG9mIHRoZWlyIHBhcGVyIGFzIHRoZXkgbm9ybWFsbHkKCndvdWxkLiBGb3IgaW5z dGFuY2UsIGF1dGhvcnMgbWF5IHBvc3QgZHJhZnRzIG9mIHRoZWlyIHBhcGVycyBvbiB0aGUKCndl YiBvciBnaXZlIHRhbGtzIG9uIHRoZWlyIHJlc2VhcmNoIGlkZWFzLgoKCgojIyMgSW5mb3JtYXRp b24gZm9yIEF1dGhvcnMgb2YgQWNjZXB0ZWQgUGFwZXJzCgoKCiogQXMgYSBjb25kaXRpb24gb2Yg YWNjZXB0YW5jZSwgZmluYWwgdmVyc2lvbnMgb2YgYWxsIHBhcGVycyBtdXN0CgogIGFkaGVyZSB0 byB0aGUgbmV3IEFDTSBTbWFsbCBmb3JtYXQuIFRoZSBwYWdlIGxpbWl0IGZvciB0aGUgZmluYWwK CiAgdmVyc2lvbnMgb2YgcGFwZXJzIHdpbGwgYmUgaW5jcmVhc2VkIGJ5IHR3byBwYWdlcyB0byBo ZWxwIGF1dGhvcnMKCiAgcmVzcG9uZCB0byByZXZpZXdlciBjb21tZW50cyBhbmQgbWFuZGF0b3J5 IHJldmlzaW9uczogKioyNyBwYWdlcwoKICBwbHVzIGJpYmxpb2dyYXBoeSBmb3IgYSByZWd1bGFy IHBhcGVyIG9yIEZ1bmN0aW9uYWwgUGVhcmwsIDE0IHBhZ2VzCgogIHBsdXMgYmlibGlvZ3JhcGh5 IGZvciBhbiBFeHBlcmllbmNlIFJlcG9ydCoqLgoKCgoqIEF1dGhvcnMgb2YgYWNjZXB0ZWQgc3Vi bWlzc2lvbnMgd2lsbCBiZSByZXF1aXJlZCB0byBhZ3JlZSB0byBvbmUgb2YKCiAgdGhlIHRocmVl IEFDTSBsaWNlbnNpbmcgb3B0aW9uczogb3BlbiBhY2Nlc3Mgb24gcGF5bWVudCBvZiBhIGZlZQoK ICAoKipyZWNvbW1lbmRlZCoqLCBhbmQgU0lHUExBTiBjYW4gY292ZXIgdGhlIGNvc3QgYXMgZGVz Y3JpYmVkIG5leHQpOwoKICBjb3B5cmlnaHQgdHJhbnNmZXIgdG8gQUNNOyBvciByZXRhaW5pbmcg Y29weXJpZ2h0IGJ1dCBncmFudGluZyBBQ00KCiAgZXhjbHVzaXZlIHB1YmxpY2F0aW9uIHJpZ2h0 cy4gIEZ1cnRoZXIgaW5mb3JtYXRpb24gYWJvdXQgQUNNIGF1dGhvcgoKICByaWdodHMgaXMgYXZh aWxhYmxlIGZyb20gPGh0dHA6Ly9hdXRob3JzLmFjbS5vcmc+LgoKCgoqIFBBQ01QTCBpcyBhIEdv bGQgT3BlbiBBY2Nlc3Mgam91cm5hbC4gSXQgd2lsbCBiZSBhcmNoaXZlZCBpbiBBQ03igJlzCgog IERpZ2l0YWwgTGlicmFyeSwgYnV0IG5vIG1lbWJlcnNoaXAgb3IgZmVlIGlzIHJlcXVpcmVkIGZv cgoKICBhY2Nlc3MuIEdvbGQgT3BlbiBBY2Nlc3MgaGFzIGJlZW4gbWFkZSBwb3NzaWJsZSBieSBn ZW5lcm91cyBmdW5kaW5nCgogIHRocm91Z2ggQUNNIFNJR1BMQU4sIHdoaWNoIHdpbGwgY292ZXIg YWxsIG9wZW4gYWNjZXNzIGNvc3RzIGluIHRoZQoKICBldmVudCBhdXRob3JzIGNhbm5vdC4gQXV0 aG9ycyB3aG8gY2FuIGNvdmVyIHRoZSBjb3N0cyBtYXkgZG8gc28gYnkKCiAgcGF5aW5nIGFuIEFy dGljbGUgUHJvY2Vzc2luZyBDaGFyZ2UgKEFQQykuIFBBQ01QTCwgU0lHUExBTiwgYW5kIEFDTQoK ICBIZWFkcXVhcnRlcnMgYXJlIGNvbW1pdHRlZCB0byBleHBsb3Jpbmcgcm91dGVzIHRvIG1ha2lu ZyBHb2xkIE9wZW4KCiAgQWNjZXNzIHB1YmxpY2F0aW9uIGJvdGggYWZmb3JkYWJsZSBhbmQgc3Vz dGFpbmFibGUuCgoKCiogQUNNIG9mZmVycyBhdXRob3JzIGEgcmFuZ2Ugb2YgY29weXJpZ2h0IG9w dGlvbnMsIG9uZSBvZiB3aGljaCBpcwoKICBDcmVhdGl2ZSBDb21tb25zIENDLUJZIHB1YmxpY2F0 aW9uOyB0aGlzIGlzIHRoZSBvcHRpb24gcmVjb21tZW5kZWQKCiAgYnkgdGhlIFBBQ01QTCBlZGl0 b3JpYWwgYm9hcmQuIEEgcmVhc29uZWQgYXJndW1lbnQgaW4gZmF2b3VyIG9mIHRoaXMKCiAgb3B0 aW9uIGNhbiBiZSBmb3VuZCBpbiB0aGUgYXJ0aWNsZSBbV2h5CgogIENDLUJZP10oaHR0cHM6Ly9v YXNwYS5vcmcvd2h5LWNjLWJ5LykgcHVibGlzaGVkIGJ5IE9BU1BBLCB0aGUgT3BlbgoKICBBY2Nl c3MgU2Nob2xhcmx5IFB1Ymxpc2hlcnMgQXNzb2NpYXRpb24uCgoKCiogV2UgaW50ZW5kIHRoYXQg dGhlIHBhcGVycyB3aWxsIGJlIGZyZWVseSBhdmFpbGFibGUgZm9yIGRvd25sb2FkIGZyb20KCiAg dGhlIEFDTSBEaWdpdGFsIExpYnJhcnkgaW4gcGVycGV0dWl0eSB2aWEgdGhlIE9wZW5UT0MgbWVj aGFuaXNtLgoKCgoqIEFDTSBBdXRob3ItSXplciBpcyBhIHVuaXF1ZSBzZXJ2aWNlIHRoYXQgZW5h YmxlcyBBQ00gYXV0aG9ycyB0bwoKICBnZW5lcmF0ZSBhbmQgcG9zdCBsaW5rcyBvbiBlaXRoZXIg dGhlaXIgaG9tZSBwYWdlIG9yIGluc3RpdHV0aW9uYWwKCiAgcmVwb3NpdG9yeSBmb3IgdmlzaXRv cnMgdG8gZG93bmxvYWQgdGhlIGRlZmluaXRpdmUgdmVyc2lvbiBvZiB0aGVpcgoKICBhcnRpY2xl cyBmcm9tIHRoZSBBQ00gRGlnaXRhbCBMaWJyYXJ5IGF0IG5vIGNoYXJnZS4gRG93bmxvYWRzCgog IHRocm91Z2ggQXV0aG9yLUl6ZXIgbGlua3MgYXJlIGNhcHR1cmVkIGluIG9mZmljaWFsIEFDTSBz dGF0aXN0aWNzLAoKICBpbXByb3ZpbmcgdGhlIGFjY3VyYWN5IG9mIHVzYWdlIGFuZCBpbXBhY3QK CiAgbWVhc3VyZW1lbnRzLiBDb25zaXN0ZW50bHkgbGlua2luZyB0byB0aGUgZGVmaW5pdGl2ZSB2 ZXJzaW9uIG9mIGFuCgogIEFDTSBhcnRpY2xlIHNob3VsZCByZWR1Y2UgdXNlciBjb25mdXNpb24g b3ZlciBhcnRpY2xlCgogIHZlcnNpb25pbmcuIEFmdGVyIGFuIGFydGljbGUgaGFzIGJlZW4gcHVi bGlzaGVkIGFuZCBhc3NpZ25lZCB0byB0aGUKCiAgYXBwcm9wcmlhdGUgQUNNIEF1dGhvciBQcm9m aWxlIHBhZ2VzLCBhdXRob3JzIHNob3VsZCB2aXNpdAoKICA8aHR0cDovL3d3dy5hY20ub3JnL3B1 YmxpY2F0aW9ucy9hY20tYXV0aG9yLWl6ZXItc2VydmljZT4gdG8gbGVhcm4KCiAgaG93IHRvIGNy ZWF0ZSBsaW5rcyBmb3IgZnJlZSBkb3dubG9hZHMgZnJvbSB0aGUgQUNNIERMLgoKCgoqIEF0IGxl YXN0IG9uZSBhdXRob3Igb2YgZWFjaCBhY2NlcHRlZCBzdWJtaXNzaW9ucyB3aWxsIGJlIGV4cGVj dGVkIHRvCgogIGF0dGVuZCBhbmQgcHJlc2VudCB0aGVpciBwYXBlciBhdCB0aGUgY29uZmVyZW5j ZS4gIFRoZSBzY2hlZHVsZSBmb3IKCiAgcHJlc2VudGF0aW9ucyB3aWxsIGJlIGRldGVybWluZWQg YW5kIHNoYXJlZCB3aXRoIGF1dGhvcnMgYWZ0ZXIgdGhlCgogIGZ1bGwgcHJvZ3JhbSBoYXMgYmVl biBzZWxlY3RlZC4gIFByZXNlbnRhdGlvbnMgd2lsbCBiZSB2aWRlb3RhcGVkCgogIGFuZCByZWxl YXNlZCBvbmxpbmUgaWYgdGhlIHByZXNlbnRlciBjb25zZW50cy4KCgoKKiBUaGUgb2ZmaWNpYWwg cHVibGljYXRpb24gZGF0ZSBpcyB0aGUgZGF0ZSB0aGUgcGFwZXJzIGFyZSBtYWRlCgogIGF2YWls YWJsZSBpbiB0aGUgQUNNIERpZ2l0YWwgTGlicmFyeS4gVGhpcyBkYXRlIG1heSBiZSB1cCB0byAq dHdvCgogIHdlZWtzIHByaW9yKiB0byB0aGUgZmlyc3QgZGF5IG9mIHRoZSBjb25mZXJlbmNlLiBU aGUgb2ZmaWNpYWwKCiAgcHVibGljYXRpb24gZGF0ZSBhZmZlY3RzIHRoZSBkZWFkbGluZSBmb3Ig YW55IHBhdGVudCBmaWxpbmdzIHJlbGF0ZWQKCiAgdG8gcHVibGlzaGVkIHdvcmsuCgoKCiMjIyBB cnRpZmFjdCBFdmFsdWF0aW9uCgoKCkF1dGhvcnMgb2YgcGFwZXJzIHRoYXQgYXJlIGNvbmRpdGlv bmFsbHkgYWNjZXB0ZWQgaW4gdGhlIGZpcnN0IHBoYXNlCgpvZiB0aGUgcmV2aWV3IHByb2Nlc3Mg d2lsbCBiZSBlbmNvdXJhZ2VkIChidXQgbm90IHJlcXVpcmVkKSB0byBzdWJtaXQKCnN1cHBvcnRp bmcgbWF0ZXJpYWxzIGZvciBBcnRpZmFjdCBFdmFsdWF0aW9uLiBUaGVzZSBpdGVtcyB3aWxsIHRo ZW4gYmUKCnJldmlld2VkIGJ5IGFuIEFydGlmYWN0IEV2YWx1YXRpb24gQ29tbWl0dGVlLCBzZXBh cmF0ZSBmcm9tIHRoZSBwYXBlcgoKUmV2aWV3IENvbW1pdHRlZSwgd2hvc2UgdGFzayBpcyB0byBh c3Nlc3MgaG93IHRoZSBhcnRpZmFjdHMgc3VwcG9ydAoKdGhlIHdvcmsgZGVzY3JpYmVkIGluIHRo ZSBhc3NvY2lhdGVkIHBhcGVyLiBQYXBlcnMgdGhhdCBnbyB0aHJvdWdoIHRoZQoKQXJ0aWZhY3Qg RXZhbHVhdGlvbiBwcm9jZXNzIHN1Y2Nlc3NmdWxseSB3aWxsIHJlY2VpdmUgYSBzZWFsIG9mCgph cHByb3ZhbCBwcmludGVkIG9uIHRoZSBwYXBlcnMgdGhlbXNlbHZlcy4gQXV0aG9ycyBvZiBhY2Nl cHRlZCBwYXBlcnMKCndpbGwgYmUgZW5jb3VyYWdlZCB0byBtYWtlIHRoZSBzdXBwb3J0aW5nIG1h dGVyaWFscyBwdWJsaWNseSBhdmFpbGFibGUKCnVwb24gcHVibGljYXRpb24gb2YgdGhlIHBhcGVy cywgZm9yIGV4YW1wbGUsIGJ5IGluY2x1ZGluZyB0aGVtIGFzCgoic291cmNlIG1hdGVyaWFscyIg aW4gdGhlIEFDTSBEaWdpdGFsIExpYnJhcnkuICBBbiBhZGRpdGlvbmFsIHNlYWwKCndpbGwgbWFy ayBwYXBlcnMgd2hvc2UgYXJ0aWZhY3RzIGFyZSBtYWRlIGF2YWlsYWJsZSwgYXMgb3V0bGluZWQg aW4KCnRoZSBBQ00gZ3VpZGVsaW5lcyBmb3IgYXJ0aWZhY3QgYmFkZ2luZy4KCgoKUGFydGljaXBh dGlvbiBpbiBBcnRpZmFjdCBFdmFsdWF0aW9uIGlzIHZvbHVudGFyeSBhbmQgd2lsbCBub3QKCmlu Zmx1ZW5jZSB0aGUgZmluYWwgZGVjaXNpb24gcmVnYXJkaW5nIHBhcGVyIGFjY2VwdGFuY2UuCgoK CiMjIyBTcGVjaWFsIGNhdGVnb3JpZXMgb2YgcGFwZXJzCgoKCkluIGFkZGl0aW9uIHRvIHJlc2Vh cmNoIHBhcGVycywgUEFDTVBMIGlzc3VlIElDRlAgc29saWNpdHMgdHdvIGtpbmRzCgpvZiBwYXBl cnMgdGhhdCBkbyBub3QgcmVxdWlyZSBvcmlnaW5hbCByZXNlYXJjaCBjb250cmlidXRpb25zOgoK RnVuY3Rpb25hbCBQZWFybHMsIHdoaWNoIGFyZSBmdWxsIHBhcGVycywgYW5kIEV4cGVyaWVuY2Ug UmVwb3J0cywKCndoaWNoIGFyZSBsaW1pdGVkIHRvIGhhbGYgdGhlIGxlbmd0aCBvZiBhIGZ1bGwg cGFwZXIuIEF1dGhvcnMKCnN1Ym1pdHRpbmcgc3VjaCBwYXBlcnMgc2hvdWxkIGNvbnNpZGVyIHRo ZSBmb2xsb3dpbmcgZ3VpZGVsaW5lcy4KCgoKIyMjIyBGdW5jdGlvbmFsIFBlYXJscwoKCgpBIEZ1 bmN0aW9uYWwgUGVhcmwgaXMgYW4gZWxlZ2FudCBlc3NheSBhYm91dCBzb21ldGhpbmcgcmVsYXRl ZCB0bwoKZnVuY3Rpb25hbCBwcm9ncmFtbWluZy4gRXhhbXBsZXMgaW5jbHVkZSwgYnV0IGFyZSBu b3QgbGltaXRlZCB0bzoKCgoKICAqIGEgbmV3IGFuZCB0aG91Z2h0LXByb3Zva2luZyB3YXkgb2Yg bG9va2luZyBhdCBhbiBvbGQgaWRlYQoKCgogICogYW4gaW5zdHJ1Y3RpdmUgZXhhbXBsZSBvZiBw cm9ncmFtIGNhbGN1bGF0aW9uIG9yIHByb29mCgoKCiAgKiBhIG5pZnR5IHByZXNlbnRhdGlvbiBv ZiBhbiBvbGQgb3IgbmV3IGRhdGEgc3RydWN0dXJlCgoKCiAgKiBhbiBpbnRlcmVzdGluZyBhcHBs aWNhdGlvbiBvZiBmdW5jdGlvbmFsIHByb2dyYW1taW5nIHRlY2huaXF1ZXMKCgoKICAqIGEgbm92 ZWwgdXNlIG9yIGV4cG9zaXRpb24gb2YgZnVuY3Rpb25hbCBwcm9ncmFtbWluZyBpbiB0aGUgY2xh c3Nyb29tCgoKCldoaWxlIHBlYXJscyBvZnRlbiBkZW1vbnN0cmF0ZSBhbiBpZGVhIHRocm91Z2gg dGhlIGRldmVsb3BtZW50IG9mIGEKCnNob3J0IHByb2dyYW0sIHRoZXJlIGlzIG5vIHJlcXVpcmVt ZW50IG9yIGV4cGVjdGF0aW9uIHRoYXQgdGhleSBkbwoKc28uIFRodXMsIHRoZXkgZW5jb21wYXNz IHRoZSBub3Rpb25zIG9mIHRoZW9yZXRpY2FsIGFuZCBlZHVjYXRpb25hbAoKcGVhcmxzLgoKCgpG dW5jdGlvbmFsIFBlYXJscyBhcmUgdmFsdWVkIGFzIGhpZ2hseSBhbmQganVkZ2VkIGFzIHJpZ29y b3VzbHkgYXMKCm9yZGluYXJ5IHBhcGVycywgYnV0IHVzaW5nIHNvbWV3aGF0IGRpZmZlcmVudCBj cml0ZXJpYS4gSW4gcGFydGljdWxhciwKCmEgcGVhcmwgaXMgbm90IHJlcXVpcmVkIHRvIHJlcG9y dCBvcmlnaW5hbCByZXNlYXJjaCwgYnV0LCBpdCBzaG91bGQgYmUKCmNvbmNpc2UsIGluc3RydWN0 aXZlLCBhbmQgZW50ZXJ0YWluaW5nLiBBIHBlYXJsIGlzIGxpa2VseSB0byBiZQoKcmVqZWN0ZWQg aWYgaXRzIHJlYWRlcnMgZ2V0IGJvcmVkLCBpZiB0aGUgbWF0ZXJpYWwgZ2V0cyB0b28KCmNvbXBs aWNhdGVkLCBpZiB0b28gbXVjaCBzcGVjaWFsaXplZCBrbm93bGVkZ2UgaXMgbmVlZGVkLCBvciBp ZiB0aGUKCndyaXRpbmcgaXMgaW5lbGVnYW50LiBUaGUga2V5IHRvIHdyaXRpbmcgYSBnb29kIHBl YXJsIGlzIHBvbGlzaGluZy4KCgoKQSBzdWJtaXNzaW9uIHRoYXQgaXMgaW50ZW5kZWQgdG8gYmUg dHJlYXRlZCBhcyBhIHBlYXJsIG11c3QgYmUgbWFya2VkCgphcyBzdWNoIG9uIHRoZSBzdWJtaXNz aW9uIHdlYiBwYWdlLCBhbmQgc2hvdWxkIGNvbnRhaW4gdGhlIHdvcmRzCgoiRnVuY3Rpb25hbCBQ ZWFybCIgc29tZXdoZXJlIGluIGl0cyB0aXRsZSBvciBzdWJ0aXRsZS4gVGhlc2Ugc3RlcHMKCndp bGwgYWxlcnQgcmV2aWV3ZXJzIHRvIHVzZSB0aGUgYXBwcm9wcmlhdGUgZXZhbHVhdGlvbgoKY3Jp dGVyaWEuIFBlYXJscyB3aWxsIGJlIGNvbWJpbmVkIHdpdGggb3JkaW5hcnkgcGFwZXJzLCBob3dl dmVyLCBmb3IKCnRoZSBwdXJwb3NlIG9mIGNvbXB1dGluZyB0aGUgY29uZmVyZW5jZSdzIGFjY2Vw dGFuY2UgcmF0ZS4KCgoKIyMjIyBFeHBlcmllbmNlIFJlcG9ydHMKCgoKVGhlIHB1cnBvc2Ugb2Yg YW4gRXhwZXJpZW5jZSBSZXBvcnQgaXMgdG8gaGVscCBjcmVhdGUgYSBib2R5IG9mCgpwdWJsaXNo ZWQsIHJlZmVyZWVkLCBjaXRhYmxlIGV2aWRlbmNlIHRoYXQgZnVuY3Rpb25hbCBwcm9ncmFtbWlu ZwoKcmVhbGx5IHdvcmtzICZtZGFzaDsgb3IgdG8gZGVzY3JpYmUgd2hhdCBvYnN0YWNsZXMgcHJl dmVudCBpdCBmcm9tCgp3b3JraW5nLgoKCgpQb3NzaWJsZSB0b3BpY3MgZm9yIGFuIEV4cGVyaWVu Y2UgUmVwb3J0IGluY2x1ZGUsIGJ1dCBhcmUgbm90IGxpbWl0ZWQgdG86CgoKCiAgKiBpbnNpZ2h0 cyBnYWluZWQgZnJvbSByZWFsLXdvcmxkIHByb2plY3RzIHVzaW5nIGZ1bmN0aW9uYWwgcHJvZ3Jh bW1pbmcKCgoKICAqIGNvbXBhcmlzb24gb2YgZnVuY3Rpb25hbCBwcm9ncmFtbWluZyB3aXRoIGNv bnZlbnRpb25hbCBwcm9ncmFtbWluZwoKICAgIGluIHRoZSBjb250ZXh0IG9mIGFuIGluZHVzdHJp YWwgcHJvamVjdCBvciBhIHVuaXZlcnNpdHkgY3VycmljdWx1bQoKCgogICogcHJvamVjdC1tYW5h Z2VtZW50LCBidXNpbmVzcywgb3IgbGVnYWwgaXNzdWVzIGVuY291bnRlcmVkIHdoZW4KCiAgICB1 c2luZyBmdW5jdGlvbmFsIHByb2dyYW1taW5nIGluIGEgcmVhbC13b3JsZCBwcm9qZWN0CgoKCiAg KiBjdXJyaWN1bGFyIGlzc3VlcyBlbmNvdW50ZXJlZCB3aGVuIHVzaW5nIGZ1bmN0aW9uYWwgcHJv Z3JhbW1pbmcgaW4gZWR1Y2F0aW9uCgoKCiAgKiByZWFsLXdvcmxkIGNvbnN0cmFpbnRzIHRoYXQg Y3JlYXRlZCBzcGVjaWFsIGNoYWxsZW5nZXMgZm9yIGFuCgogICAgaW1wbGVtZW50YXRpb24gb2Yg YSBmdW5jdGlvbmFsIGxhbmd1YWdlIG9yIGZvciBmdW5jdGlvbmFsCgogICAgcHJvZ3JhbW1pbmcg aW4gZ2VuZXJhbAoKCgpBbiBFeHBlcmllbmNlIFJlcG9ydCBpcyBkaXN0aW5ndWlzaGVkIGZyb20g YSBub3JtYWwgUEFDTVBMIGlzc3VlIElDRlAKCnBhcGVyIGJ5IGl0cyB0aXRsZSwgYnkgaXRzIGxl bmd0aCwgYW5kIGJ5IHRoZSBjcml0ZXJpYSB1c2VkIHRvCgpldmFsdWF0ZSBpdC4KCgoKICAqIEJv dGggaW4gdGhlIHBhcGVycyBhbmQgaW4gYW55IGNpdGF0aW9ucywgdGhlIHRpdGxlIG9mIGVhY2gK CiAgICBhY2NlcHRlZCBFeHBlcmllbmNlIFJlcG9ydCBtdXN0IGVuZCB3aXRoIHRoZSB3b3JkcyAi KEV4cGVyaWVuY2UKCiAgICBSZXBvcnQpIiBpbiBwYXJlbnRoZXNlcy4gVGhlIGFjY2VwdGFuY2Ug cmF0ZSBmb3IgRXhwZXJpZW5jZQoKICAgIFJlcG9ydHMgd2lsbCBiZSBjb21wdXRlZCBhbmQgcmVw b3J0ZWQgc2VwYXJhdGVseSBmcm9tIHRoZSByYXRlIGZvcgoKICAgIG9yZGluYXJ5IHBhcGVycy4K CgoKICAqIEV4cGVyaWVuY2UgUmVwb3J0IHN1Ym1pc3Npb25zIGNhbiBiZSBhdCBtb3N0IDEyIHBh Z2VzIGxvbmcsCgogICAgZXhjbHVkaW5nIGJpYmxpb2dyYXBoeS4KCgoKICAqIEVhY2ggYWNjZXB0 ZWQgRXhwZXJpZW5jZSBSZXBvcnQgd2lsbCBiZSBwcmVzZW50ZWQgYXQgdGhlCgogICAgY29uZmVy ZW5jZSwgYnV0IGRlcGVuZGluZyBvbiB0aGUgbnVtYmVyIG9mIEV4cGVyaWVuY2UgUmVwb3J0cyBh bmQKCiAgICByZWd1bGFyIHBhcGVycyBhY2NlcHRlZCwgYXV0aG9ycyBvZiBFeHBlcmllbmNlIHJl cG9ydHMgbWF5IGJlCgogICAgYXNrZWQgdG8gZ2l2ZSBzaG9ydGVyIHRhbGtzLgoKCgogICogQmVj YXVzZSB0aGUgcHVycG9zZSBvZiBFeHBlcmllbmNlIFJlcG9ydHMgaXMgdG8gZW5hYmxlIG91cgoK ICAgIGNvbW11bml0eSB0byBhY2N1bXVsYXRlIGEgYm9keSBvZiBldmlkZW5jZSBhYm91dCB0aGUg ZWZmaWNhY3kgb2YKCiAgICBmdW5jdGlvbmFsIHByb2dyYW1taW5nLCBhbiBhY2NlcHRhYmxlIEV4 cGVyaWVuY2UgUmVwb3J0IG5lZWQgbm90CgogICAgYWRkIHRvIHRoZSBib2R5IG9mIGtub3dsZWRn ZSBvZiB0aGUgZnVuY3Rpb25hbC1wcm9ncmFtbWluZwoKICAgIGNvbW11bml0eSBieSBwcmVzZW50 aW5nIG5vdmVsIHJlc3VsdHMgb3IgY29uY2x1c2lvbnMuIEl0IGlzCgogICAgc3VmZmljaWVudCBp ZiB0aGUgUmVwb3J0IHN0YXRlcyBhIGNsZWFyIHRoZXNpcyBhbmQgcHJvdmlkZXMKCiAgICBzdXBw b3J0aW5nIGV2aWRlbmNlLiBUaGUgdGhlc2lzIG11c3QgYmUgcmVsZXZhbnQgdG8gSUNGUCwgYnV0 IGl0CgogICAgbmVlZCBub3QgYmUgbm92ZWwuCgoKClRoZSByZXZpZXcgY29tbWl0dGVlIHdpbGwg YWNjZXB0IG9yIHJlamVjdCBFeHBlcmllbmNlIFJlcG9ydHMgYmFzZWQgb24KCndoZXRoZXIgdGhl eSBqdWRnZSB0aGUgZXZpZGVuY2UgdG8gYmUgY29udmluY2luZy4gQW5lY2RvdGFsIGV2aWRlbmNl Cgp3aWxsIGJlIGFjY2VwdGFibGUgcHJvdmlkZWQgaXQgaXMgd2VsbCBhcmd1ZWQgYW5kIHRoZSBh dXRob3IgZXhwbGFpbnMKCndoYXQgZWZmb3J0cyB3ZXJlIG1hZGUgdG8gZ2F0aGVyIGFzIG11Y2gg ZXZpZGVuY2UgYXMKCnBvc3NpYmxlLiBUeXBpY2FsbHksIG1vcmUgY29udmluY2luZyBldmlkZW5j ZSBpcyBvYnRhaW5lZCBmcm9tIHBhcGVycwoKd2hpY2ggc2hvdyBob3cgZnVuY3Rpb25hbCBwcm9n cmFtbWluZyB3YXMgdXNlZCB0aGFuIGZyb20gcGFwZXJzIHdoaWNoCgpvbmx5IHNheSB0aGF0IGZ1 bmN0aW9uYWwgcHJvZ3JhbW1pbmcgd2FzIHVzZWQuIFRoZSBtb3N0IGNvbnZpbmNpbmcKCmV2aWRl bmNlIG9mdGVuIGluY2x1ZGVzIGNvbXBhcmlzb25zIG9mIHNpdHVhdGlvbnMgYmVmb3JlIGFuZCBh ZnRlciB0aGUKCmludHJvZHVjdGlvbiBvciBkaXNjb250aW51YXRpb24gb2YgZnVuY3Rpb25hbCBw cm9ncmFtbWluZy4gRXZpZGVuY2UKCmRyYXduIGZyb20gYSBzaW5nbGUgcGVyc29uJ3MgZXhwZXJp ZW5jZSBtYXkgYmUgc3VmZmljaWVudCwgYnV0IG1vcmUKCndlaWdodCB3aWxsIGJlIGdpdmVuIHRv IGV2aWRlbmNlIGRyYXduIGZyb20gdGhlIGV4cGVyaWVuY2Ugb2YgZ3JvdXBzCgpvZiBwZW9wbGUu CgoKCkFuIEV4cGVyaWVuY2UgUmVwb3J0IHNob3VsZCBiZSBzaG9ydCBhbmQgdG8gdGhlIHBvaW50 OiBpdCBzaG91bGQgbWFrZQoKYSBjbGFpbSBhYm91dCBob3cgd2VsbCBmdW5jdGlvbmFsIHByb2dy YW1taW5nIHdvcmtlZCBvbiBhIHBhcnRpY3VsYXIKCnByb2plY3QgYW5kIHdoeSwgYW5kIHByb2R1 Y2UgZXZpZGVuY2UgdG8gc3Vic3RhbnRpYXRlIHRoaXMgY2xhaW0uIElmCgpmdW5jdGlvbmFsIHBy b2dyYW1taW5nIHdvcmtlZCBpbiB0aGlzIGNhc2UgaW4gdGhlIHNhbWUgd2F5cyBpdCBoYXMKCndv cmtlZCBmb3Igb3RoZXJzLCB0aGUgcGFwZXIgbmVlZCBvbmx5IHN1bW1hcml6ZSB0aGUgcmVzdWx0 cyAmbWRhc2g7Cgp0aGUgbWFpbiBwYXJ0IG9mIHRoZSBwYXBlciBzaG91bGQgZGlzY3VzcyBob3cg d2VsbCBpdCB3b3JrZWQgYW5kIGluCgp3aGF0IGNvbnRleHQuIE1vc3QgcmVhZGVycyB3aWxsIG5v dCB3YW50IHRvIGtub3cgYWxsIHRoZSBkZXRhaWxzIG9mCgp0aGUgcHJvamVjdCBhbmQgaXRzIGlt cGxlbWVudGF0aW9uLCBidXQgdGhlIHBhcGVyIHNob3VsZCBjaGFyYWN0ZXJpemUKCnRoZSBwcm9q ZWN0IGFuZCBpdHMgY29udGV4dCB3ZWxsIGVub3VnaCBzbyB0aGF0IHJlYWRlcnMgY2FuIGp1ZGdl IHRvCgp3aGF0IGRlZ3JlZSB0aGlzIGV4cGVyaWVuY2UgaXMgcmVsZXZhbnQgdG8gdGhlaXIgb3du IHByb2plY3RzLiBUaGUKCnBhcGVyIHNob3VsZCB0YWtlIGNhcmUgdG8gaGlnaGxpZ2h0IGFueSB1 bnVzdWFsIGFzcGVjdHMgb2YgdGhlCgpwcm9qZWN0LiBTcGVjaWZpY3MgYWJvdXQgdGhlIHByb2pl Y3QgYXJlIG1vcmUgdmFsdWFibGUgdGhhbgoKZ2VuZXJhbGl0aWVzIGFib3V0IGZ1bmN0aW9uYWwg cHJvZ3JhbW1pbmc7IGZvciBleGFtcGxlLCBpdCBpcyBtb3JlCgp2YWx1YWJsZSB0byBzYXkgdGhh dCB0aGUgdGVhbSBkZWxpdmVyZWQgaXRzIHNvZnR3YXJlIGEgbW9udGggYWhlYWQgb2YKCnNjaGVk dWxlIHRoYW4gaXQgaXMgdG8gc2F5IHRoYXQgZnVuY3Rpb25hbCBwcm9ncmFtbWluZyBtYWRlIHRo ZSB0ZWFtCgptb3JlIHByb2R1Y3RpdmUuCgoKCklmIHRoZSBwYXBlciBub3Qgb25seSBkZXNjcmli ZXMgZXhwZXJpZW5jZSBidXQgYWxzbyBwcmVzZW50cyBuZXcKCnRlY2huaWNhbCByZXN1bHRzLCBv ciBpZiB0aGUgZXhwZXJpZW5jZSByZWZ1dGVzIGNoZXJpc2hlZCBiZWxpZWZzIG9mCgp0aGUgZnVu Y3Rpb25hbC1wcm9ncmFtbWluZyBjb21tdW5pdHksIGl0IG1heSBiZSBiZXR0ZXIgdG8gc3VibWl0 IGl0IGFzCgphIGZ1bGwgcGFwZXIsIHdoaWNoIHdpbGwgYmUganVkZ2VkIGJ5IHRoZSB1c3VhbCBj cml0ZXJpYSBvZiBub3ZlbHR5LAoKb3JpZ2luYWxpdHksIGFuZCByZWxldmFuY2UuIFRoZSBwcmlu Y2lwYWwgZWRpdG9yIHdpbGwgYmUgaGFwcHkgdG8KCmFkdmlzZSBvbiBhbnkgY29uY2VybnMgYWJv dXQgd2hpY2ggY2F0ZWdvcnkgdG8gc3VibWl0IHRvLgoKCgoKCgoKIyMjIElDRlAgT3JnYW5pemVy cwoKCgpHZW5lcmFsIENoYWlyOiBEZXJlayBEcmV5ZXIgKE1QSS1TV1MsIEdlcm1hbnkpCgoKCkFy dGlmYWN0IEV2YWx1YXRpb24gQ28tQ2hhaXJzOiBTaW1vbiBNYXJsb3cgKEZhY2Vib29rLCBVSykK CkluZHVzdHJpYWwgUmVsYXRpb25zIENoYWlyOiBBbGFuIEplZmZyZXkgKE1vemlsbGEgUmVzZWFy Y2gsIFVTQSkKClByb2dyYW1taW5nIENvbnRlc3QgT3JnYW5pc2VyOiBJbHlhIFNlcmdleSAoWWFs ZS1OVVMgQ29sbGVnZSwgU2luZ2Fwb3JlKQoKUHVibGljaXR5IGFuZCBXZWIgQ2hhaXI6IFNhbSBU b2Jpbi1Ib2Noc3RhZHQgKEluZGlhbmEgVW5pdmVyc2l0eSwgVVNBKQoKU3R1ZGVudCBSZXNlYXJj aCBDb21wZXRpdGlvbiBDaGFpcjogV2lsbGlhbSBKLiBCb3dtYW4gKFVuaXZlcnNpdHkgb2YgQnJp dGlzaCBDb2x1bWJpYSwgQ2FuYWRhKQoKV29ya3Nob3BzIENvLUNoYWlyOiBDaHJpc3RvcGhlIFNj aG9sbGllcnMgKFVuaXZlcnNpdGVpdCBHZW50LCBCZWxnaXVtKQoKICAgICAgICAgICAgICAgICAg ICBKZW5uaWZlciBIYWNrZXR0IChVbml2ZXJzaXR5IG9mIE5vdHRpbmdoYW0sIFVLKQoKQ29uZmVy ZW5jZSBNYW5hZ2VyOiBBbm5hYmVsIFNhdGluIChQLkMuSy4pICAgICAgICAgICAgICAgICAgICAK CgoKCgojIyMgUEFDTVBMIFZvbHVtZSAzLCBJc3N1ZSBJQ0ZQIDIwMTkKCgoKUHJpbmNpcGFsIEVk aXRvcjogRnJhbsOnb2lzIFBvdHRpZXIgKElucmlhLCBGcmFuY2UpCgoKClJldmlldyBDb21taXR0 ZWU6CgoKCkxlbm5hcnQgQmVyaW5nZXIgKFByaW5jZXRvbiBVbml2ZXJzaXR5LCBVbml0ZWQgU3Rh dGVzKQoKSm9hY2hpbSBCcmVpdG5lciAoREZJTklUWSBGb3VuZGF0aW9uLCBHZXJtYW55KQoKTGF1 cmEgTS4gQ2FzdHJvIChVbml2ZXJzaXR5IG9mIEEgQ29ydcOxYSwgU3BhaW4pCgpFemdpIMOHacOn ZWsgKEZhY2Vib29rIExvbmRvbiwgVW5pdGVkIEtpbmdkb20pCgpQaWVycmUtRXZhcmlzdGUgRGFn YW5kIChMSVA2L0NOUlMsIEZyYW5jZSkKCkNocmlzdG9zIERpbW91bGFzIChOb3J0aHdlc3Rlcm4g VW5pdmVyc2l0eSwgVW5pdGVkIFN0YXRlcykKCkphY3F1ZXMtSGVucmkgSm91cmRhbiAoQ05SUywg TFJJLCBVbml2ZXJzaXTDqSBQYXJpcy1TdWQsIEZyYW5jZSkKCkFuZHJldyBLZW5uZWR5IChGYWNl Ym9vayBMb25kb24sIFVuaXRlZCBLaW5nZG9tKQoKRGFhbiBMZWlqZW4gKE1pY3Jvc29mdCBSZXNl YXJjaCwgVW5pdGVkIFN0YXRlcykKCkthenV0YWthIE1hdHN1ZGEgKFRvaG9rdSBVbml2ZXJzaXR5 LCBKYXBhbikKCkJydW5vIEMuIGQuIFMuIE9saXZlaXJhIChVbml2ZXJzaXR5IG9mIEhvbmcgS29u ZywgQ2hpbmEpCgpLbGF1cyBPc3Rlcm1hbm4gKFVuaXZlcnNpdHkgb2YgVMO8YmluZ2VuLCBHZXJt YW55KQoKSmVubmlmZXIgUGF5a2luIChHYWxvaXMsIFVuaXRlZCBTdGF0ZXMpCgpGcmFuayBQZmVu bmluZyAoQ2FybmVnaWUgTWVsbG9uIFVuaXZlcnNpdHksIFVTQSkKCk1pa2UgUmFpbmV5IChJbmRp YW5hIFVuaXZlcnNpdHksIFVTQSkKCkNodW5nLWNoaWVoIFNoYW4gKEluZGlhbmEgVW5pdmVyc2l0 eSwgVVNBKQoKU2FtIFN0YXRvbiAoVW5pdmVyc2l0eSBvZiBPeGZvcmQsIFVLKQoKUGllcnJlLVl2 ZXMgU3RydWIgKEVjb2xlIFBvbHl0ZWNobmlxdWUsIEZyYW5jZSkKCkdlcm1hbiBWaWRhbCAoVW5p dmVyc2l0YXQgUG9saXRlY25pY2EgZGUgVmFsZW5jaWEsIFNwYWluKQoKCgpFeHRlcm5hbCBSZXZp ZXcgQ29tbWl0dGVlOgoKCgpNaWNoYWVsIEQuIEFkYW1zICAoVW5pdmVyc2l0eSBvZiBVdGFoLCBV U0EpCgpSb2JlcnQgQXRrZXkgIChVbml2ZXJzaXR5IG9mIFN0cmF0aGNseWRlLCBJSykKClNoZW5n IENoZW4gIChVbml2ZXJzaXR5IG9mIExvdWlzaWFuYSBhdCBMYWZheWV0dGUsIFVTQSkKCkphbWVz IENoZW5leSAgKFVuaXZlcnNpdHkgb2YgRWRpbmJ1cmdoLCBVSykKCkFkYW0gQ2hsaXBhbGEgIChN YXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBVU0EpCgpFdmVseW5lIENvbnRl amVhbiAoTFJJLCBVbml2ZXJzaXTDqSBQYXJpcy1TdWQsIEZyYW5jZSkgCgpHZXJtw6FuIEFuZHLD qXMgRGVsYmlhbmNvICAoSVJJRiwgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdCwgRnJhbmNlKQoK RG9taW5pcXVlIERldnJpZXNlICAoVnJpamUgVW5pdmVyc2l0ZWl0IEJydXNzZWwsIEJlbGdpdW0p CgpSaWNoYXJkIEEuIEVpc2VuYmVyZyAgKEJyeW4gTWF3ciBDb2xsZWdlLCBVU0EpCgpDb25hbCBF bGxpb3R0ICAoVGFyZ2V0LCBVU0EpCgpTZWJhc3RpYW4gRXJkd2VnICAoRGVsZnQgVW5pdmVyc2l0 eSBvZiBUZWNobm9sb2d5LCBOZXRoZXJsYW5kcykKCk1pY2hhZWwgR3JlZW5iZXJnICAoUG9tb25h IENvbGxlZ2UsIFVTQSkKCkFkcmllbiBHdWF0dG8gIChJUklGLCBVbml2ZXJzaXTDqSBQYXJpcyBE aWRlcm90LCBGcmFuY2UpCgpKZW5uaWZlciBIYWNrZXR0ICAoVW5pdmVyc2l0eSBvZiBOb3R0aW5n aGFtLCBVSykKClRyb2VscyBIZW5yaWtzZW4gIChVbml2ZXJzaXR5IG9mIENvcGVuaGFnZW4sIERl bm1hcmspCgpDaHVuZy1LaWwgSHVyICAoU2VvdWwgTmF0aW9uYWwgVW5pdmVyc2l0eSwgUmVwdWJs aWMgb2YgS29yZWEpCgpSb2JlcnRvIEllcnVzYWxpbXNjaHkgIChQVUMtUmlvLCBCcmF6aWwpCgpS YW5qaXQgSmhhbGEgIChVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEsIFNhbiBEaWVnbywgVVNBKQoK UmFsZiBKdW5nICAoTVBJLVNXUywgR2VybWFueSkKCk9oYWQgS2FtbWFyICAoVW5pdmVyc2l0eSBv ZiBPeGZvcmQsIFVLKQoKT2xlZyBLaXNlbHlvdiAoVG9ob2t1IFVuaXZlcnNpdHksIEphcGFuKQoK SHNpYW5nLVNoYW5nIOKAmEpvc2jigJkgS28gIChOYXRpb25hbCBJbnN0aXR1dGUgb2YgSW5mb3Jt YXRpY3MsIEphcGFuKQoKT25kxZllaiBMaG90w6FrICAoVW5pdmVyc2l0eSBvZiBXYXRlcmxvbywg Q2FuYWRhKQoKRGFuIExpY2F0YSAgKFdlc2xleWFuIFVuaXZlcnNpdHksIFVTQSkKCkdlb2ZmcmV5 IE1haW5sYW5kICAoRHJleGVsIFVuaXZlcnNpdHksIFVTQSkKClNpbW9uIE1hcmxvdyAgKEZhY2Vi b29rLCBVSykKCkFraW1hc2EgTW9yaWhhdGEgIChVbml2ZXJzaXR5IG9mIFRva3lvLCBKYXBhbikK ClNoaW4tQ2hlbmcgTXUgIChBY2FkZW1pYSBTaW5pY2EsIFRhaXdhbikKCkd1aWxsYXVtZSBNdW5j aC1NYWNjYWdub25pICAoSW5yaWEsIEZyYW5jZSkKCktpbSBOZ3V54buFbiAgKFVuaXZlcnNpdHkg b2YgUGFyaXMtU3VkLCBGcmFuY2UpCgpVbGYgTm9yZWxsICAoR290aGVuYnVyZyBVbml2ZXJzaXR5 LCBTd2VkZW4pCgpBdHN1c2hpIE9ob3JpICAoVG9ob2t1IFVuaXZlcnNpdHksIEphcGFuKQoKUmV4 IFBhZ2UgIChVbml2ZXJzaXR5IG9mIE9rbGFob21hLCBVU0EpCgpab2UgUGFyYXNrZXZvcG91bG91 ICAoUHJpbmNldG9uIFVuaXZlcnNpdHksIFVTQSkKCk5hZGlhIFBvbGlrYXJwb3ZhICAoVW5pdmVy c2l0eSBvZiBDYWxpZm9ybmlhLCBTYW4gRGllZ28sIFVTQSkKCkpvbmF0aGFuIFByb3R6ZW5rbyAg KE1pY3Jvc29mdCBSZXNlYXJjaCwgVVNBKQoKVGlhcmsgUm9tcGYgIChQdXJkdWUgVW5pdmVyc2l0 eSwgVVNBKQoKQW5kcmVhcyBSb3NzYmVyZyAgKERmaW5pdHksIEdlcm1hbnkpCgpLQyBTaXZhcmFt YWtyaXNobmFuICAoVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UsIFVJKQoKTmljaG9sYXMgU21hbGxi b25lICAoQ2hhbG1lcnMgVW5pdmVyc2l0eSBvZiBUZWNobm9sb2d5LCBTd2VkZW4pCgpNYXR0aGll dSBTb3plYXUgIChJbnJpYSwgRnJhbmNlKQoKU2FuZHJvIFN0dWNraSAgKENoYWxtZXJzIHwgVW5p dmVyc2l0eSBvZiBHb3RoZW5idXJnLCBTd2VkZW4pCgpEb24gU3ltZSAgKE1pY3Jvc29mdCwgVUsp CgpaYWNoYXJ5IFRhdGxvY2sgIChVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24sIFVTQSkKClNhbSBU b2Jpbi1Ib2Noc3RhZHQgIChJbmRpYW5hIFVuaXZlcnNpdHksIFVTQSkKClRha2VzaGkgVHN1a2Fk YSAgKFVuaXZlcnNpdHkgb2YgVG9reW8sIEphcGFuKQoKVGFybW8gVXVzdGFsdSAgKFJleWtqYXZp ayBVbml2ZXJzaXR5LCBJY2VsYW5kKQoKQmVub2l0IFZhbGlyb24gIChMUkksIENlbnRyYWxlU3Vw ZWxlYywgVW5pdi4gUGFyaXMgU2FjbGF5LCBGcmFuY2UpCgpEYW5pZWwgV2lub2dyYWQtQ29ydCAg KFVuaXZlcnNpdHkgb2YgUGVubnN5bHZhbmlhLCBVU0EpCgpOaWNvbGFzIFd1ICAoVW5pdmVyc2l0 eSBvZiBCcmlzdG9sLCBVSykKCi0tIApZb3UgcmVjZWl2ZWQgdGhpcyBtZXNzYWdlIGJlY2F1c2Ug eW91IGFyZSBzdWJzY3JpYmVkIHRvIHRoZSBHb29nbGUgR3JvdXBzICJNTHRvbi11c2VyIiBncm91 cC4KVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGdyb3VwIGFuZCBzdG9wIHJlY2VpdmluZyBlbWFp bHMgZnJvbSBpdCwgc2VuZCBhbiBlbWFpbCB0byBtbHRvbi11c2VyK3Vuc3Vic2NyaWJlQG1sdG9u Lm9yZy4KCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K TUx0b24tdXNlciBtYWlsaW5nIGxpc3QKTUx0b24tdXNlckBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ7 IG1sdG9uLXVzZXJAbWx0b24ub3JnCmh0dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3Rz L2xpc3RpbmZvL21sdG9uLXVzZXIK