PGh0bWw+CiAgICA8aGVhZD4KICAgICAgICA8dGl0bGU+TmV0QmVhbnMgQ29tbXVuaXR5IEhvbm9ycyBDb250cmlidXRvcnM8L3RpdGxlPgogICAgPC9oZWFkPgoKICAgIDxib2R5PgogICAgICAgIDxoMT5OZXRCZWFucyBDb21tdW5pdHkgSG9ub3JzIENvbnRyaWJ1dG9yczwvaDE+CgogICAgICAgIDxwPkF0IHRoaXMgeWVhcidzIE5ldEJlYW5zIFNvZnR3YXJlIERheSwgZml2ZSBtZW1iZXJzIG9mIHRoZSBJREUncwogICAgICAgIGdsb2JhbCBkZXZlbG9wbWVudCBjb21tdW5pdHkgd2VyZSBob25vcmVkIGZvciB0aGVpciB2YWx1YWJsZQogICAgICAgIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIE5ldEJlYW5zIHBsYXRmb3JtLiBFYWNoIHdpbm5lciByZWNlaXZlZCBhIGZyYW1lZAogICAgICAgIHBsYXF1ZSAoZGVzaWduZWQgYnkgSmFtZXMgR29zbGluZykgYW5kIGEgbmV3IFN1biAiZGV2ZWxvcGVyIG1hY2hpbmUiIC0KICAgICAgICBhbiBVbHRyYSAyMCBPcHRlcm9uIHdvcmtzdGF0aW9uIHRoYXQgY29tZXMgd2l0aCB0aGUgSmF2YSBEZXNrdG9wIFN5c3RlbQogICAgICAgIGFuZCBhIHN1aXRlIG9mIEphdmEgdGVjaG5vbG9neSBkZXZlbG9wZXIgdG9vbHMgcHJlaW5zdGFsbGVkLgoKICAgICAgICA8cD5Nb3N0IG9mIHRoZSB3aW5uZXJzIGhhdmUgYmVlbiBpbnZvbHZlZCB3aXRoIHRoZSBOZXRCZWFucyBjb21tdW5pdHkKICAgICAgICBmb3IgbWFueSB5ZWFycy4gT25seSBvbmUgb2YgZml2ZSB3b3JrcyBmb3IgYSBjb21wYW55IHdoaWNoIGNyZWF0ZXMKICAgICAgICBzb2Z0d2FyZSB0aGF0IGludGVyb3BlcmF0ZXMgd2l0aCBOZXRCZWFucy4gVGhlc2UgaW5kaXZpZHVhbHMgYmVjYW1lCiAgICAgICAgaW52b2x2ZWQgd2l0aCBOZXRCZWFucyBiZWNhdXNlIHRoZXkgc3VwcG9ydCBvcGVuIHNvdXJjZSBzb2Z0d2FyZQogICAgICAgIGRldmVsb3BtZW50IGFuZCB3YW50ZWQgdG8gbWFrZSBhIGRpZmZlcmVuY2UuCgogICAgICAgIDxjZW50ZXI+CiAgICAgICAgICAgIDxpbWcgc3JjPSIuLi8uLi8uLi8uLi9pbWFnZXNfd3d3L2phdmFvbmUvY3Jvd2RBdE5ldEJlYW5zU29mdHdhcmVEYXkuanBnIiB3aWR0aD0iNjAwIiBoZWlnaHQ9IjQwMCIKICAgICAgICAgICAgICAgICBhbHQ9IkEgcGFja2VkIGNyb3dkIGF0IE5ldEJlYW5zIFNvZnR3YXJlIERheSAocGhvdG86IEouIENoYWx1cGEpIi8+CiAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgPGk+QSBwYWNrZWQgY3Jvd2QgYXQgTmV0QmVhbnMgRGF5PC9pPgogICAgICAgIDwvY2VudGVyPgogICAgICAgIDxwPgoKICAgICAgICA8cD5VbmZvcnR1bmF0ZWx5LCBub3QgYWxsIG9mIHRoZSB3aW5uZXJzIGNvdWxkIGJlIGF0IHRoZSBldmVudCBpbgogICAgICAgIHBlcnNvbi4gIFRoZSBOZXRCZWFucyBkZXZlbG9wbWVudCBjb21tdW5pdHkgdGFrZXMgdGhpcyBvcHBvcnR1bml0eSB0bwogICAgICAgIGNvbmdyYXR1bGF0ZSB0aGlzIHllYXIncyB3aW5uZXJzIGFuZCB0aGFuayB0aGVtIGZvciB0aGVpciBjb250aW51ZWQKICAgICAgICBzdXBwb3J0OgoKICAgICAgICA8cD4KICAgICAgICA8Y2VudGVyPgogICAgICAgICAgICA8aW1nIHNyYz0iLi4vLi4vLi4vLi4vaW1hZ2VzX3d3dy9qYXZhb25lL3JpY2hKYW1lc0FuZFRpbS5qcGciIHdpZHRoPSI2MDAiIGhlaWdodD0iNDAwIgogICAgICAgICAgICAgICAgIGFsdD0iUmljaCBVbmdlciBhY2NlcHRzIGhpcyBhd2FyZAogICAgICAgICAgICAgICAgICAgICAgZnJvbSBKYW1lcyBHb3NsaW5nIGFuZCBUaW0gQ3JhbWVyIChwaG90bzogSi4gQ2hhbHVwYSkiLz4KICAgICAgICAgICAgPGJyPgogICAgICAgICAgICA8aT5SaWNoIFVuZ2VyIGFjY2VwdHMgaGlzIGF3YXJkIGZyb20gSmFtZXMgR29zbGluZyBhbmQgVGltIENyYW1lcjwvaT4KICAgICAgICA8L2NlbnRlcj4KCiAgICAgICAgPHA+CiAgICAgICAgPHVsPgogICAgICAgIDxsaT48aT48YSBocmVmPSJodHRwOi8vdG9kYXkuamF2YS5uZXQvcHViL2F1LzExNyI+VmluY2VudCBCcmFiYW50PC9hPjwvaT4KICAgICAgICAtIFZpbmNlbnQgd29ya3MgZm9yIGEgdGVsZWNvbSBjb21wYW55IGluIEJydXNzZWxzLCBCZWxnaXVtLiBIZSBmaXJzdAogICAgICAgIHVzZWQgTmV0QmVhbnMgMy4wIHdoZW4gdGFraW5nIGEgSmF2YSB0ZWNobm9sb2d5IGNvdXJzZSBpbiAyMDAyLiBWaW5jZW50CiAgICAgICAgbGF1bmNoZWQgdGhlIFRyYW5zbGF0ZWRGaWxlcyBwcm9qZWN0IGFzIGEgY29tbXVuaXR5IGNlbnRlciBmb3IgcGVvcGxlCiAgICAgICAgZG9pbmcgdHJhbnNsYXRpb25zIG9mIE5ldEJlYW5zIGFuZCBoYXMgbG9jYWxpemVkIHRoZSBJREUsIGRvY3VtZW50YXRpb24KICAgICAgICBhbmQgcGFydHMgb2YgTmV0QmVhbnMub3JnIGluIEZyZW5jaC4gSGUgd2FzIGEgcGFzdCBtZW1iZXIgb2YgdGhlCiAgICAgICAgTmV0QmVhbnMgZ292ZXJuYW5jZSBib2FyZC4KCiAgICAgICAgPHA+PGxpPgogICAgICAgIDxpPjxhIGhyZWY9Imh0dHA6Ly90b2RheS5qYXZhLm5ldC9wdWIvYXUvMTE2Ij5NYXh5bSBNeWtoYWxjaHVrPC9hPjwvaT4KICAgICAgICAgLSBNYXh5bSBsaXZlcyBpbiB0aGUgVWtyYWluZSBhbmQgaXMgd29ya2luZyBvbiBoaXMgUGguRC4KICAgICAgICAgaW52b2x2aW5nY29tcHV0ZXItYXNzaXN0ZWQgdHJhbnNsYXRpb24uIEluIDIwMDIsIGhlIHN0YXJ0ZWQgYSBwcm9qZWN0CiAgICAgICAgIHRvIGxvY2FsaXplIE5ldEJlYW5zIGluIFJ1c3NpYW4gYW5kIGN1cnJlbnRseSBtYW5hZ2VzIHRoZSBSdXNzaWFuLQogICAgICAgICBsYW5ndWFnZSBtYWlsaW5nIGxpc3QuICIuLi5JdCdzIG5pY2UgdG8ga25vdyB0aGF0IHRoZXJlIGFyZSBwZW9wbGUgaGVyZQogICAgICAgICBvbiBFYXJ0aCB5b3UndmUgbmV2ZXIgc2VlbiBpbiBwZXJzb24sIGJ1dCB0aGF0IHlvdSBoZWxwZWQgYW5kIHRoZXkKICAgICAgICAgaGVscGVkIHlvdS4uLiIgc2F5cyBNYXh5bS4gSGUgd2FzIGFsc28gYSBwYXN0IG1lbWJlciBvZiB0aGUgTmV0QmVhbnMKICAgICAgICAgZ292ZXJuYW5jZSBib2FyZC4KCiAgICAgICAgPHA+PGxpPgogICAgICAgIDxpPjxhIGhyZWY9Imh0dHA6Ly93d3cubWFub3Jyb2NrLmNvbS9hYm91dC5odG1sIj5NYW5mcmVkIFJpZW08L2E+PC9pPgogICAgICAgIC0gTWFuZnJlZCBpcyBhIGxvbmctdGltZSBtZW1iZXIgb2YgdGhlIE5ldEJlYW5zIGRldmVsb3BtZW50IGNvbW11bml0eS4KICAgICAgICBIZSBmaXJzdCBzdGFydGVkIHVzaW5nIE5ldEJlYW5zIGluIDE5OTksIHdoZW4gaXQgd2FzIGEgY29tbWVyY2lhbAogICAgICAgIHByb2R1Y3QgeWV0IHRvIGJlIGFjcXVpcmVkIGJ5IFN1biBNaWNyb3N5c3RlbXMuIEhlIGhhcyB3b3JrZWQgb24gdGhlCiAgICAgICAgRHV0Y2ggdHJhbnNsYXRpb24gb2YgdGhlIElERSBhbmQgTmV0QmVhbnMub3JnIGNvbnRlbnQuICJJIGRpZG4ndCBleHBlY3QKICAgICAgICB0byB3aW4gYW4gYXdhcmQsIiBzYXlzIE1hbmZyZWQsICIuLi5iZWluZyBpbnZvbHZlZCB3aXRoIE5ldEJlYW5zIHdhcyBhbmQKICAgICAgICBpcyBmb3IgbWUgc29tZXRoaW5nIEkgbGlrZSBiZWNhdXNlIGl0IHdpbGwgYmVuZWZpdCBhIGxvdCBvZiBwZW9wbGUuIgoKICAgICAgICA8cD48bGk+CiAgICAgICAgPGk+PGEgaHJlZj0iaHR0cDovL3RvZGF5LmphdmEubmV0L3B1Yi9hdS84OCI+QnJ1bm8gU291emE8L2E+PC9pPgogICAgICAgIC0gQnJ1bm8gY2FuIGVhc2lseSBiZSByZWNvZ25pemVkIGF0IHRoZSBKYXZhT25lIGRldmVsb3BlciBjb25mZXJlbmNlIGFzCiAgICAgICAgdGhlIGd1eSB3ZWFyaW5nIHRoZSBCcmF6aWxpYW4gZmxhZyBvbiBoaXMgYmFjay4gSGUgaGFzIGJlZW4gdHJlbWVuZG91c2x5CiAgICAgICAgYWN0aXZlIGluIHBvcHVsYXJpemluZyBOZXRCZWFucyBpbiBoaXMgbmF0aXZlIEJyYXppbCwgd2hlcmUgaGUgd29ya3MgYXMKICAgICAgICBhIGNvbnN1bHRhbnQuCgogICAgICAgIDxwPjxsaT4KICAgICAgICA8aT48YSBocmVmPSJodHRwOi8vd2VibG9ncy5qYXZhLm5ldC9ibG9nL3JpY2h1bmdlci8iPlJpY2ggVW5nZXI8L2E+PC9pPgogICAgICAgIC0gUmljaCB3b3JrcyBmb3IgTnVhbmNlIENvbW11bmljYXRpb25zIGFzIG9uZSBvZiB0aGUgbGVhZCBkZXZlbG9wZXJzIG9mCiAgICAgICAgVi1CdWlsZGVyLCBhIGRldmVsb3BtZW50IGVudmlyb25tZW50IGZvciBWb2ljZS1YTUwgKGEgdG9vbCBmb3IgY3JlYXRpbmcKICAgICAgICB2b2ljZS1iYXNlZCBtZW51cykuIFYtQnVpbGRlciBpcyBidWlsdCBvbiB0aGUgTmV0QmVhbnMgcGxhdGZvcm0gYW5kIHJlLQogICAgICAgIHVzZXMgYSBudW1iZXIgb2YgcGx1Zy1pbnMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIE5ldEJlYW5zIElERS4gIkkgbGlrZQogICAgICAgIGl0IHdoZW4gcGVvcGxlIHdyaXRlIG1lIG9yIHRoZSBsaXN0LCBzYXlpbmcgdGhleSBhcmUgdXNpbmcgbXkgY29kZSwiIGhlCiAgICAgICAgc2F5cy4gIkknbGwgc2VlIGVtYWlsIGFkZHJlc3NlcyBmcm9tIFR1cmtleSwgQ2hpbmEsIG9yIHRoZSBKUEwgYW5kIHRoaW5rCiAgICAgICAgkUNvb2whkiBJIHN1cHBvc2UsIGluIGFueSB2aWJyYW50IG9wZW4gc291cmNlIGNvbW11bml0eSwgdGhhdCdzIGhvdyBqdXN0CiAgICAgICAgYWJvdXQgZXZlcnl0aGluZyBnZXRzIGRvbmUuIiBSaWNoIGhhcyBiZWVuIGludm9sdmVkIGluIE5ldEJlYW5zIGZvciBhCiAgICAgICAgbnVtYmVyIG9mIHllYXJzLCBhbmQgaGFzIG1hZGUgbWFueSBjb2RlIGNvbnRyaWJ1dGlvbnMgaW5jbHVkaW5nIHRoZQogICAgICAgICJjbHVzdGVyIGhhcm5lc3MiLCB3aGljaCBtYWRlIGl0IG11Y2ggZWFzaWVyIHRvIGJ1aWxkIGFwcGxpY2F0aW9ucyBvbgogICAgICAgIHRoZSBOZXRCZWFucyBwbGF0Zm9ybSwgYW5kIGFsc28gd3JvdGUgYW4gZXhjZWxsZW50IHR1dG9yaWFsIHRvIGdvIHdpdGgKICAgICAgICBpdC4gUmljaCBpcyBhIGN1cnJlbnQgbWVtYmVyIG9mIHRoZSBOZXRCZWFucyBib2FyZC4KICAgICAgICA8L3VsPgogICAgICAgIDxwPgoKICAgICAgICA8cD5UaW0gQm91ZHJlYXUKICAgIDwvYm9keT4KPC9odG1sPgo=