diff --git a/04_givewell_review.Rmd b/04_givewell_review.Rmd index 649aaef..7d6ef16 100644 --- a/04_givewell_review.Rmd +++ b/04_givewell_review.Rmd @@ -291,7 +291,7 @@ F_{15} = \frac{\sum_{r \in G_{10}} F^{r}_{16} F^{r}_{17}}{\sum_{r} F^{r}_{17}} \tag{17} \end{equation} -- $F^{r}_{16}$: DtW weight for worm intensity by location, adjusted (`F3, 1, X14`) +- $F^{r}_{16}$: DtW weight for worm intensity by location, adjusted (windorinzation) (`F3, 1, X14`) - $F^{r}_{17}$: DtW weight for worm intensity by location, unadjusted (`F3, 1, C14` --> `F3, 10, K26`) @@ -310,7 +310,8 @@ F_{15} = \frac{\sum_{r \in G_{10}} F^{r}_{16} F^{r}_{17}}{\sum_{r} F^{r}_{17}} - $\widetilde{F}^{r}_{16}$: Weight before winzorizing (`F3, 1, U14`) - $F_{18}$: Intensity adjustment to account for S. haem (`F3, 1, K14`) -- $F_{19}$: Average intermediate intensity adjustment across regions and charities (`F3, 1, G50`) - $F^{r}_{21}$: Average Goblal Burden of Decease adjustment across regions and charities (`F3, 1, L50`) +- $F_{19}$: Average intermediate intensity adjustment across regions and charities (`F3, 1, G50`) +- $F^{r}_{21}$: Average Goblal Burden of Decease adjustment across regions and charities (`F3, 1, L50`) - $F_{21}$: Goblal Burden of Decease (GBD) adjustment for DtW in specific region (`F3, 1, L14`) \begin{equation} @@ -346,14 +347,13 @@ F^{r}_{29} = \frac{F_{30}}{F_{31}} - $F^{r}_{28}$: Infection weight (`F3, 4, B:E2`). -- $F^{r}_{29}$: Prevalence rates of each infection by location (`F3, 4, BE:27`). +- $F^{r}_{29}$: Prevalence rates of each infection by location (`F3, 4, B:E27`). - $F^{r}_{30}$: Eggs per gram in [location] and [condition] (`F3, 3, E18`). - $F^{r}_{31}$: Eggs per gram in original study by [condition] (`F3, 3, E4`). - $F^{r}_{32}$: Intensity adjustment from GBD (`F3, 7, F18`). \begin{equation} -F^{r}_{31} = F_{21}\\ F^{r}_{32} = \frac{Q^{dr}_{9}}{Q^{d}_{10}}\\ Q^{dr}_{9} = Q_{11,1}(F^{dr}_{33})^3 + Q_{11,2}(F^{dr}_{33})^2 + Q_{11,3}F^{dr}_{33}\\ F^{r}_{33} = F_{34,1} + F_{34,2} diff --git a/04_givewell_review.html b/04_givewell_review.html index 2242134..3f40966 100644 --- a/04_givewell_review.html +++ b/04_givewell_review.html @@ -1890,7 +1890,7 @@

2.2.2 Benefits (“\(F^{r}_{16}\): DtW weight for worm intensity by location, adjusted (F3, 1, X14)
+
  • \(F^{r}_{16}\): DtW weight for worm intensity by location, adjusted (windorinzation) (F3, 1, X14)
  • \(F^{r}_{17}\): DtW weight for worm intensity by location, unadjusted (F3, 1, C14 –> F3, 10, K26)
  • @@ -1911,7 +1911,9 @@

    2.2.2 Benefits (“\(F_{18}\): Intensity adjustment to account for S. haem (F3, 1, K14)
    -
  • \(F_{19}\): Average intermediate intensity adjustment across regions and charities (F3, 1, G50) - \(F^{r}_{21}\): Average Goblal Burden of Decease adjustment across regions and charities (F3, 1, L50)
    +
  • \(F_{19}\): Average intermediate intensity adjustment across regions and charities (F3, 1, G50)
    +
  • +
  • \(F^{r}_{21}\): Average Goblal Burden of Decease adjustment across regions and charities (F3, 1, L50)
  • \(F_{21}\): Goblal Burden of Decease (GBD) adjustment for DtW in specific region (F3, 1, L14)
  • @@ -1951,7 +1953,7 @@

    2.2.2 Benefits (“\(F^{r}_{28}\): Infection weight (F3, 4, B:E2).
    -
  • \(F^{r}_{29}\): Prevalence rates of each infection by location (F3, 4, BE:27).
    +
  • \(F^{r}_{29}\): Prevalence rates of each infection by location (F3, 4, B:E27).
  • \(F^{r}_{30}\): Eggs per gram in [location] and [condition] (F3, 3, E18).
  • @@ -1960,7 +1962,6 @@

    2.2.2 Benefits (“\(F^{r}_{32}\): Intensity adjustment from GBD (F3, 7, F18).

    \[\begin{equation} -F^{r}_{31} = F_{21}\\ F^{r}_{32} = \frac{Q^{dr}_{9}}{Q^{d}_{10}}\\ Q^{dr}_{9} = Q_{11,1}(F^{dr}_{33})^3 + Q_{11,2}(F^{dr}_{33})^2 + Q_{11,3}F^{dr}_{33}\\ F^{r}_{33} = F_{34,1} + F_{34,2} @@ -2065,7 +2066,7 @@

    5 Sensitivity Analysis

    -
    LS0tCnRpdGxlOiAiTm90ZXMgb24gR2l2ZXdlbGwncyBDb3N0IEVmZmVjdGl2ZW5lc3MgQW5hbHlzaXMgb24gRGV3b3JtaW5nICIKZGF0ZTogImByIGZvcm1hdChTeXMudGltZSgpLCAnJWQgJUIsICVZJylgIgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIGNvZGVfZm9sZGluZzogaGlkZQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQogICAgY29sbGFwc2VkOiB5ZXMKICAgIGtlZXBfbWQ6IHllcwogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMKICAgIHNtb290aF9zY3JvbGw6IG5vCiAgICB0b2M6IHllcwogICAgdG9jX2RlcHRoOiAyCiAgICB0b2NfZmxvYXQ6IHllcwogIHBkZl9kb2N1bWVudDogZGVmYXVsdAogIHdvcmRfZG9jdW1lbnQ6IGRlZmF1bHQKZWRpdG9yX29wdGlvbnM6CiAgY2h1bmtfb3V0cHV0X3R5cGU6IGNvbnNvbGUKLS0tClxkZWZcYmx1ZXtcY29sb3J7Ymx1ZX19CgoKCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KIyBMb2FkaW5nIHJlcXVpcmVkIGxpYnJhcmllcwpsaXN0Lm9mLnBhY2thZ2VzIDwtIGMoInRpZHl2ZXJzZSIsICJoYXZlbiIsICJoZXJlIiwgImthYmxlRXh0cmEiKQoKbmV3LnBhY2thZ2VzIDwtIGxpc3Qub2YucGFja2FnZXNbIShsaXN0Lm9mLnBhY2thZ2VzICVpbiUgaW5zdGFsbGVkLnBhY2thZ2VzKClbLCJQYWNrYWdlIl0pXQppZihsZW5ndGgobmV3LnBhY2thZ2VzKSkgaW5zdGFsbC5wYWNrYWdlcyhuZXcucGFja2FnZXMsIHJlcG9zPSAiaHR0cDovL2NyYW4uY25yLmJlcmtlbGV5LmVkdS8iKQoKbGFwcGx5KGxpc3Qub2YucGFja2FnZXMsIGxpYnJhcnksIGNoYXJhY3Rlci5vbmx5ID0gVFJVRSkKCmtuaXRyOjpvcHRzX2tuaXQkc2V0KHJvb3QuZGlyID0gaGVyZSgpKQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpCgpwcmludF9jb2RlIDwtIFRSVUUKYGBgCgoKYGBge3IgcGFyYW1ldGVycywgZWNobz1wcmludF9jb2RlfQojIERvIG5vdCBydW4gZGF0YSBzZXQgb24gZ2l0L2dpdGh1YiB1bnRpbCBwcml2YWN5IGhhcyBiZWVuIGNsZWFyZWQKIyMjIyMjIyMjIyMjIyMjIwojIyMjIyBEYXRhICAKIyMjIyMjIyMjIyMjIyMjIwojIyMjIyMjIyMjIyMjIyMjCiMjIyMjIFJlc2VhcmNoCiMjIyMjIyMjIyMjIyMjIyMKIyMjIyMjIyMjIyMjIyMjIwojIyMjIyBHdWVzcyB3b3JrICAgCiMjIyMjIyMjIyMjIyMjIyMKIyMjIyMjIyMjIyMjIyMjIwojIyMjIyAgTm90ZXM6CiMjIyMjIyMjIyMjIyMjIyMKIyMjIFNvdXJjZSAtLS0tPiAgSW5wdXQgLS0tLT4gTW9kZWwgLS0tLT4gUG9saWN5IEVzdGltYXRlcyAob3V0cHV0KQojIyMgIChfc28pICAgICAgICAoX2luKSAgICAgICAoX21vKSAgICAgICAgKF9wZSkKIyMjIHZhbHVlcyAgICAgIGZ1bmN0aW9ucyAgIGZ1bmN0aW9ucyAgICAgIHZhbHVlcwojIyMgICAgICAgICAgICAgJiB2YWx1ZXMgICAgJiB2YWx1ZXMKIyMjIGFyZ3VtZW50cyBpbiBmdW5jdGlvbnMgc2hvdWxkIHVzZWQgIl92YXIiIGFuZCBmdW5jdGlvbnMgc2hvdWxkICJfZiIKI2ludmlzaWJsZSggbGlzdDJlbnYoY2FsbF9wYXJhbXNfZigpLC5HbG9iYWxFbnYpICkKYGBgCgoKIyBLZXkgcG9saWN5IGVzdGltYXRlcyBmb3IgcG9saWN5IG1ha2VycyAgCgpgYGB7ciBmaW5hbC1vdXRwdXR9CmBgYAoKIyBNZXRob2RvbG9neQoKIyMgTWFpbiBFcXVhdGlvbiAodGhlIG1vZGVsKQoKXGJlZ2lue2VxdWF0aW9ufQpDRUEgPSBcZnJhY3tCICgxICsgRl97MH0pfXtDfQpcbGFiZWx7ZXE6MX0KXHRhZ3sxfQpcZW5ke2VxdWF0aW9ufQoKIC0gJEMkIGlzIHRoZSBjb3N0cyBwZXIgcGVyc29uIGRld29ybWVkLiAgIAogLSAkQiQgaXMgdGhlIGJlbmVmaXRzIHBlciBwZXJzb24gZGV3b3JtZWQgLgogLSAkRl97MH0kIGlzIGEgZmFjdG9yIHRvIGFjY291bnQgZm9yIGxldmVyYWdlL2Z1ZGdpbmcgW25vdCByZXZpZXdlZCBpbiB0aGlzIGV4Y2VyY2lzZV1bXjEyXQoKCiMjIFN1YiBjb21wb25lbnRzOgoKV2UgYmVnaW4gYnkgZGVzY3JpYmluZyB0aGUgdW5kZXJseWluZyBhbmFseXNpcyBiZWhpbmQgdGhlIGNvc3RzLiBUaHJvdWdoIHRoaXMgZXhjZXJjaXNlIHdlIHVzZSB0aGUgZm9sbG93aW5nIG5vdGF0aW9uIHRoZSBsZXR0ZXJzICRGLCBQLCBRJCBkZW5vdGUgY29tcG9uZW50cwppbiBwZXJjZW50YWdlcywgbW9uZXRhcnkgdW5pdHMgKFVTIGRvbGxhcnMgYW5kIGxvY2FsIGN1cnJlbmN5KSBhbmQgcXVhbnRpdGllcyByZXNwZWN0aXZlbHkuIEVhY2ggbmV3IGVsZW1lbnQgd2lsbCBiZSB0cmFja2VkIHVzaW5nIGEgc3ViLWluZGV4LCBhbmQgc3VwcmEtaW5kZWNpcyB3aWxsIGJlCnVzZWQgdG8gdHJhY2sgZ3JvdXBzLCBsaWtlIGdlb2dyYXBoaWVzLCB0aW1lLCBhbmQgb3RoZXIgY2F0ZXJnb3JpZXMuIEZvciBleGFtcGxlICRRXntpfV97Mn0kIHJlcHJlc2VudHMgdGhlIHNlY29uZCBxdWFudGl0eSBkZXNjcmliZWQgaW4gdGhpcyBhbmFseXNpcyAodG90YWwgYWRqdXN0ZWQgbnVtYmVyIGNoaWxkcmVkIGRld29ybWVkIHBlciB5ZWFyKSBpbiBsb2NhdGlvbiAkaSQuIEF0IHRoZSBlbmQgb2YgZWFjaCBkZXNjcmlwdGlvbiB3ZSB3aWxsIHNob3cgaW4gcGFyZW50aGVzaXMgdGhlIG9yaWdpbmFsIGxvY2F0aW9uIG9mIHRoZSBwYXJhbWV0ZXIgaW4gR2l2ZVdlbGwncyBzcHJlYWRzaGVldHMgKHVzaW5nIHRoZSBub3RhdGlvbiBgZmlsZSwgc2hlZXQgbnVtYmVyLCBjZWxsYFteMV0pLgoKIyMjIENvc3RzICgiJEMkIikKCmBgYHtyIGNvbXAxfQojIC0gaW5wdXRzOiB0YXhfcmV2X2luaXRfbW8sIHRvcF90YXhfYmFzZV9pbgojIC0gb3V0cHV0czogdG90YWxfcmV2X3BlCmBgYAoKXGJlZ2lue2VxdWF0aW9ufQpDID0gXHN1bV97aSBcaW4gR197MX0gKGNvdW50cmllcykgfSBGXntpfV97MX0gUF57aX1fezF9ClxsYWJlbHtlcToyfQpcdGFnezJ9ClxlbmR7ZXF1YXRpb259CgotICRGXntpfV97MX0kOiBXZWlnaHQgZm9yIHRoZSB3ZWlnaHRlZCBhdmVyYWdlIChgRjEsIDIsIEgxNmApLiAgCi0gJFBee2l9X3sxfSQ6IFRvdGFsIGNvc3QgcGVyIGNoaWxkLCBwZXIgeWVhciBpbiByZWdpb24gJGkkIChgRjEsIDIsIEM6RzE2YCkuICAKCgpcYmVnaW57ZXF1YXRpb259CkZee2l9X3sxfSA9IFxmcmFje0Zee2l9X3syfSBRXntpfV97MX19e1xzdW1fe2ogXGluIEdfezF9fSBGXntqfV97Mn0gUV57an1fezF9fQpcbGFiZWx7ZXE6M30KXHRhZ3szfQpcZW5ke2VxdWF0aW9ufQoKLSAkRl57aX1fezJ9JDogaXMgdGhlIHByb3BvcnRpb24gb2YgdGhlIGNvc3RzIHRoYXQgYXJlIHBhaWQgYnkgdGhlIERld29ybSB0aGUgV29ybGQgaW5pdGlhdGl2ZSAoRHRXIGZyb20gbm93IG9uKSAoYEYxLCAyLCBDOkc2YCkuICAKLSAkUV57aX1fezF9JDogZXN0aW1hdGVkIG51bWJlciBvZiB0cmVhdG1lbnRzIGRlbGl2ZXJlZCBhbmQgY29tbWl0ZWQgKGBGMSwgMiwgQzpHN2ApLiAgCgpcYmVnaW57ZXF1YXRpb259ClBee2l9X3sxfSA9IFxsZWZ0KFBee2l9X3szfSArIFBee2l9X3s0fSArIFBee2l9X3s1fSArIFBee2l9X3s2fSArIFBee2l9X3s3fSAgXHJpZ2h0KVxmcmFjezF9e1Fee2l9X3syfX0KXGxhYmVse2VxOjR9Clx0YWd7NH0KXGVuZHtlcXVhdGlvbn0KCi0gJFBee2l9X3szfSQ6IFRvdGFsIGNvc3Qgb2YgRHRXIGFjcm9zcyBhbGwgeWVhcnMgKGBGMSwgMSwgWjM5YCkuICAKLSAkUF57aX1fezR9JDogQ29zdCBvZiBkb25hdGVkIGRydWdzIHBlciB5ZWFyIChgRjEsIDEsIFoxM2ApLiAgCi0gJFBee2l9X3s1fSQ6IEFkZGl0aW9uYWwgcGFydG5lciBjb3N0cyAob3RoZXIgdGhhbiBkcnVncykgKGBGMSwgMSwgWjUwYCkuICAKLSAkUF57aX1fezZ9JDogR292ZXJtZW50IGZpbmFuY2lhbCBjb3N0cyBwZXIgeWVhciAoYEYxLCAxLCBYNDFgKS4gIAotICRQXntpfV97N30kOiBHb3Zlcm1lbnQgc3RhZmYgdmFsdWUgdGltZSAoYEYxLCAyLCBONDJgKS4gIAoKLSAkUV57aX1fezJ9JDogdG90YWwgYWRqdXN0ZWQgY2hpbGRyZW4gZGV3b3JtZWQgcGVyIHllYXIgKGBGMSwgMSwgWjE1YCkuICAKCiRQXntpfV97Mn0kIGFuZCAkRl57aX1fezJ9JCBhcmUgZGVmaW5lZCBpbiB0ZXJtcyBvZiBzb21lIG9mIHRoZSBwcmV2aW91cyBlbGVtZW50cy4KClxiZWdpbntlcXVhdGlvbn0KRl57aX1fezJ9ID0gXGZyYWN7UF57aX1fezJ9fXtQXntpfV97MX19XFwKUF57aX1fezJ9ID0gXGZyYWN7UF57aX1fezN9fXtRXntpfV97Mn19ClxsYWJlbHtlcTo1fQpcdGFnezV9ClxlbmR7ZXF1YXRpb259CgotICRQXntpfV97Mn0kOiBEdFcgY29zdHMgcGVyIGNoaWxkcmVuIHBlciB5ZWFyIChgRjEsIDIsIEM6RzE0YCkuICAKClRoZSB0b3RhbCBjb3N0cyBvZiBEdFcgYWNyb3NzIGFsbCB5ZWFycyAoJFBee2l9X3szfSQpIGlzIGFnZ3JlZ2F0ZWQgYWNyb3NzIHllYXJzLCByZWdpb25zICh3aXRoaW4gY291bnRyeSksIHR5cGUgb2YgY29zdCBhY3Rpdml0eSAocG9saWN5ICYgYWR2b2NhY3ksIHByZXZhbGVuY2Ugc3VydmV5cywgZHJ1ZyBwcm9jdXJlbWVudCAmIG1hbmFnZW1lbnQsIHRyYWluaW5nICYgZGlzdHJpYnV0aW9uLCBwdWJsaWMgbW9iaWxpemF0aW9uICYgY29tbXVuaXR5IHNlbnNpdGl6YXRpb24sIG1vbml0b3JpbmcgJiBldmFsdWF0aW9uLCBwcm9ncmFtIG1hbmFnZW1lbnQsIGdpdmVXZWxsIGFkZGVkIGNvc3RzW14yXSkgYW5kIG1vbnRoIChGZWJydWFyeSBvciBBdWd1c3QpCgpcYmVnaW57ZXF1YXRpb259ClBee2l9X3szfSA9IFxzdW1fe3QgXGluIHllYXJzIChHX3syfSl9ClxzdW1fe3IgXGluIHJlZ2lvbiAoR197M30pfQpcc3VtX3thIFxpbiBhY3RpdiAoR197NH0pfQpcc3VtX3ttIFxpbiBtb250aCAoR197NX0pfSBQXntpdHJhbX1fezN9ClxsYWJlbHtlcTo2fQpcdGFnezZ9ClxlbmR7ZXF1YXRpb259CgoKLSAkUF57aXRyYW19X3szfSQ6IGNvc3RzIGJ5IHllYXIsIGxvY2F0aW9uLCByZWdpb24sIGFjdGl2aXR5LCBhbmQgbW9udGguIChgRjEsIFtyK20reV0sIEUxNToyMWApCgpUb3RhbCBudW1iZXIgb2YgYWRqdXN0ZWQgY2hpbGRyZW4gKCRRXntpfV97Mn0kKSBpcyBjb21wdXRlZCBhcyBmb2xsb3dzOgoKXGJlZ2lue2VxdWF0aW9ufQpRXntpfV97Mn0gPSBcc3VtX3t0IFxpbiBHX3syfX0KXHN1bV97ciBcaW4gR197M319CiBRXntpdHJ9X3syfSBcXAogUV57aXRyfV97Mn0gPSBcZnJhY3tcd2lkZXRpbGRle1F9XntpdHIsIEZlYn1fezJ9IC0gXHdpZGV0aWxkZXtRfV57aXRyLCBBdWd9X3syfX17UV57aXRyfV97M319XFwKIFx3aWRldGlsZGV7UX1ee2l0ciwgbX1fezJ9ID0gXHN1bV97cyBcaW4gc2NoLmFnZSAoR197Nn0pfSBcbGVmdCgKXHN1bV97ZSBcaW4gZW5yLnN0KEdfezd9KX0gXHdpZGV0aWxkZXtRfV57aXRybXNlfV97Mn1ccmlnaHQpIFFfezR9XntpdHJtfQpcbGFiZWx7ZXE6N30KXHRhZ3s3fQpcZW5ke2VxdWF0aW9ufQoKCgotICRRXntpdHJ9X3syfSQsIGFuZCAkUV57aXRybX1fezJ9JCAoYEYxLCA0LCBCMTlgIGFuZCBgRjEsIFtjb3VudHJ5XSBudW0gb2YgY2hpbGRyZW4gKEMpLCBBQjpBQzM0YCkKLSAkUV57aXRyfV97M30kOiBBY3R1YWwgdHJlYXRtZW50IHJvdW5kcyBwZXIgeWVhciAoYEYxLCA0LCBEW2NydF1gKQotICRRXntpdHJtfV97NH0kOiBBZGp1c3RtZW50IGZhY3RvciAoYEYxLCBDLCBbcm10XTI1YCkKCgpcYmVnaW57ZXF1YXRpb259ClFee2l0cm19X3s0fSA9IDEgLSBcbGVmdC5cbGVmdCggXGZyYWN7UV57aXRybXMsZW59X3syfX17UV57aXRybXMsZW59X3s1fX0gLSBGXntpdHJtfV97M30gRl57aXRybX1fezR9IEZee2l0cm19X3s1fSBccmlnaHQpICBcbWlkZGxlLyBcbGVmdCggXGZyYWN7UV57aXRybXMsZW59X3syfX17UV57aXRybXMsZW59X3s1fX0gXHJpZ2h0KSBccmlnaHQuClxsYWJlbHtlcTo4fQpcdGFnezh9ClxlbmR7ZXF1YXRpb259CgoKLSAkUV57aXRybXMsIGVufV97NX0kOiBUb3RhbCBlbnJvbGxlZCBzY2hvb2wtYWdlZCBjaGlsZHJlbiB0YXJnZXRlZCAoYEYxLCBDLCBbcnRtXTEzYCkKLSAkRl57aXRybX1fezN9JDogUGVyY2VudGFnZSBvZiBzY2hvb2xzIHZpc2l0ZWQgZHVyaW5nIGNvdmVyYWdlIHZhbGlkYXRpb24gKGFuZC9vciBkdXJpbmcgcHJvY2VzcyBtb25pdG9yaW5nKSB0aGF0IGRpc3RyaWJ1dGVkIGRld29ybWluZyB0YWJsZXRzIG9uIGRld29ybWluZyBkYXkgYW5kL29yIG1vcC11cCBkYXkgKGBGMSwgQywgW3J0bV0yMiBgKS4gICAKLSAkRl57aXRybX1fezR9JDogUGVyY2VudGFnZSBvZiBlbnJvbGxlZCBzY2hvb2wtYWdlZCBjaGlsZHJlbiBhdHRlbmRpbmcgc2Nob29sIG9uIGRld29ybWluZyBkYXkgb3IgbW9wLXVwIGRheSwgYWNjb3JkaW5nIHRvIGF0dGVuZGFuY2UgcmVnaXN0ZXJzIHZpZXdlZCBpbiBzY2hvb2xzIHZpc2l0ZWQgZHVyaW5nIGNvdmVyYWdlIHZhbGlkYXRpb24gKGFuZC9vciBkdXJpbmcgcHJvY2VzcyBtb25pdG9yaW5nKSAoYEYxLCBDLCBbcnRtXTIzIGApLiAgIAotICRGXntpdHJtfV97NX0kOiBPZiBjaGlsZHJlbiBlbnJvbGxlZCBpbiBhIHNjaG9vbCB0aGF0IGRpc3RyaWJ1dGVkIGRld29ybWluZyB0YWJsZXRzIG9uIGRld29ybWluZyBkYXkgYW5kL29yIG1vcC11cCBkYXkgYW5kIHdobyBhdHRlbmRlZCBzY2hvb2wgb24gZGV3b3JtaW5nIGRheSBhbmQvb3IgbW9wLXVwIGRheSwgcGVyY2VudGFnZSB3aG8gcmVwb3J0ZWQgY29uc3VtaW5nIGRld29ybWluZyB0YWJsZXRzIChhY2NvcmRpbmcgdG8gc3R1ZGVudCBpbnRlcnZpZXdzIGR1cmluZyBjb3ZlcmFnZSB2YWxpZGF0aW9uIGFuZC9vciBwcm9jZXNzIG1vbml0b3JpbmcpIChgRjEsIEMsIFtydG1dMjQgYCkuICAKCgpcYmVnaW57ZXF1YXRpb259ClBee2l9X3s0fSA9IFxzdW1fe3R9ClxzdW1fe3J9ClxzdW1fe219IFBee2l0cm19X3s0fQpcbGFiZWx7ZXE6OX0KXHRhZ3s5fQpcZW5ke2VxdWF0aW9ufQoKCi0gJFBee2l0cm19X3s0fSQ6IENvc3Qgb2YgZG9uYXRlZCBkcnVncyBpbiBjb3VudHJ5LCBsb2NhdGlvbiwgeWVhciwgbW9udGggKGBGMSwgW2NydG1dLCBFMThgKS4gIAoKClxiZWdpbntlcXVhdGlvbn0KUF57aX1fezV9ID0gXHN1bV97dH0KXHN1bV97cn0KXHN1bV97bX0gXHdpZGV0aWxkZXtQfV57aXRybX1fezV9ICAtIFBee2l9X3s0fSBcXApcd2lkZXRpbGRle1B9XntpdHJ9X3s1fSA9IFxzdW1fe219Clx3aWRldGlsZGV7UH1ee2l0cm19X3s1fQpcbGFiZWx7ZXE6MTB9Clx0YWd7MTB9ClxlbmR7ZXF1YXRpb259CgoKCi0gJFBee2l0cm19X3s0fSQ6IENvc3Qgb2YgZG9uYXRlZCBkcnVncyBpbiBjb3VudHJ5LCBsb2NhdGlvbiwgeWVhciwgbW9udGggKGBGMSwgW2NydG1dLCBFMThgKS4gIAotICRcd2lkZXRpbGRle1B9XntpdHJtfV97NX0kOiBUb3RhbCBwYXJ0bmVyIGNvc3RzIChpbmNsLiBkcnVncykgKGBGMSwgW2NydG1dLCBFMjNgKS4KCgpcYmVnaW57ZXF1YXRpb259ClBee2l9X3s2fSA9IFxzdW1fe3R9ClxzdW1fe3J9IFx3aWRldGlsZGV7UH1ee2l0cn1fezZ9ICBcXApcd2lkZXRpbGRle1B9XntpdHJ9X3s2fSA9IFBee2l0cn1fezh9IC0gKCBcd2lkZXRpbGRle1B9XntpdHJ9X3s1fSArIFBee2l0cn1fezN9KQpcbGFiZWx7ZXE6MTF9Clx0YWd7MTF9ClxlbmR7ZXF1YXRpb259CgotICRQXntpdHJ9X3s4fSQ6IFRvdGFsIGNvc3RzIGFjcm9zcyBhY3Rpdml0aWVzLCBpbmNsdWRpbmcgR2l2ZVdlbGwgKGBGMSwgMSwgW3J0Y10xMWApLiAgCgpcYmVnaW57ZXF1YXRpb259ClBee2l0cn1fezh9ID0gXHdpZGV0aWxkZXtQfV57aXRyfV97OH0gKyBQXntpdHJ9X3s5fVxcClx3aWRldGlsZGV7UH1ee2l0cn1fezh9ID0gXHN1bV97bX0KXHN1bV97YX0gXHdpZGV0aWxkZXtQfV57aXRybWF9X3s4fSAgXFwKXHdpZGV0aWxkZXtQfV57aXRyfV97OX0gPSBcd2lkZXRpbGRle1B9XntpdHJ9X3s4fSBcZnJhY3tGX3s2fX17MSAtIEZfezZ9fQpcbGFiZWx7ZXE6MTJ9Clx0YWd7MTJ9ClxlbmR7ZXF1YXRpb259CgotICRQXntpdHJ9X3s5fSQ6IFRvdGFsIGNvc3RzIGFjcm9zcyBhY3Rpdml0aWVzLCBpbmNsdWRpbmcgR2l2ZVdlbGwgKGBGMSwgMSwgW3J0Y10xMGApLiAgCi0gJEZfezZ9JDogUGVyY2VudGFnZSBvZiBjb3N0cyB0aGF0IGdvIGludG8gaGlnaC1sZXZlbCBhY3Rpdml0aWVzIChgRjEsIDEsIEU2MmApIAoKXGJlZ2lue2VxdWF0aW9ufQpQXntpfV97N30gPSBcc3VtX3t0fSBcc3VtX3tyfSBcbGVmdCggIFxzdW1fe2ogXGluIEdfOH0gXGxlZnQoIFxzdW1fe2sgXGluIEdfOX1cd2lkZXRpbGRle1B9XntpdHJqa31fezd9LzIgIFxyaWdodCkgXHJpZ2h0KQpcbGFiZWx7ZXE6MTN9Clx0YWd7MTN9ClxlbmR7ZXF1YXRpb259CgotICRcd2lkZXRpbGRle1B9XntpdHJqa31fezd9JDogIENvc3QgcGVyIHRyZWF0bWVudCBpbXB1dGVkIHRvIHRyYWlubmluZyBhbmQgZGV3b3JtaW5nIGRheSAoYEYxLCAzLCBLMjNgKS4gIAoKXGJlZ2lue2VxdWF0aW9ufQpcd2lkZXRpbGRle1B9XntpfV97N30gPSBcZnJhY3tQX3sxMH0vUF97MTF9fXtRX3s2fX0KXGxhYmVse2VxOjE0fQpcdGFnezE0fQpcZW5ke2VxdWF0aW9ufQoKLSAkUF57aXRyfV97MTB9JDogQ29zdCBvZiB0cmFpbm5pbmcgYW5kIEREIGluIGxvY2FsIGN1cnJlbmN5IChgRjEsIDMsIEgyM2ApLiAgCi0gJFBee2l0cn1fezExfSQ6IEV4Y2hhbmdlIHJhdGUgKDEgVVNEID0gIFggbG9jYWwgY3VycmVuY3kpIChgRjEsIDMsIEoxNmApLiAgCi0gJFFfezZ9JDogIFRvdGFsIG51bWJlciBvZiBjaGlsZHJlbiB0cmVhdGVkIGluIGxvY2F0aW9uIHIgKGBGMSwgMywgSjE3YCkgCgpcYmVnaW57ZXF1YXRpb259ClFee2l9X3sxfSA9IFxsZWZ0LiBcbGVmdCggXHN1bV97dFxpbiAxNiwgMTd9IFBfezN9XntpdH0gIFBfezEyfV57aX1ccmlnaHQpIFxtaWRkbGUvIFBfezJ9XntpfVxyaWdodC4KXGxhYmVse2VxOjE1fQpcdGFnezE1fQpcZW5ke2VxdWF0aW9ufQoKLSAkUF57aXRyfV97MTJ9JDogRHRXIHNwZW5kaW5nIGNvbW1pdG1lbnRzIGZvciB0aGUgZnV0dXJlICgyMDE4LTIwMjApIChgRjEsIDIsIEM6RzRgKS4gIAoKIyMjIEJlbmVmaXRzICgiJEIkIikKCgpcYmVnaW57ZXF1YXRpb259CkIgPSBcbGVmdCggXGZyYWN7MX17MSArIEZfezd9fSBccmlnaHQpXntRX3s3fX0gXHN1bV97dCA9IDB9XntRX3s4fSAtIDF9ClxmcmFje2xuKCAxICsgRl97OH0pfXsoMSArIEZfezd9KX1GX3s5fUZfezEwfUZfezExfUZfezEyfUZfezEzfVxmcmFje0ZfezE1fX17Rl97MTR9fVcKXGxhYmVse2VxOjE2fQpcdGFnezE2fQpcZW5ke2VxdWF0aW9ufQoKCi0gJEZfezd9JDogRGlzY291bnQgcmF0ZVteM10gKGBGMiwgMiwgQjNgKS4gIAotICRGX3s4fSQ6IFRyZWF0bWVudCBlZmZlY3Qgb2YgZGV3b3JtaW5nIG9uIGVhcm5pbmdzICgxNS40JSlbXjRdIChgRjIsIDIsIEIzYCkuICAKLSAkRl97OX0kOiBNdWx0aXBsaWVyIGZvciByZXNvdXJjZSBzaGFyaW5nIHdpdGhpbiBob3VzZWhvbGRzW141XSAoYEYyLCAyLCBCOWApLiAgIAotICRGX3sxMH0kOiBBZGp1c3RtZW50IGZvciBFbCBOacOxb1teNl0gKGBGMiwgNCwgQjEwYCkuICAKLSAkRl97MTF9JDogQWRqdXN0bWVudCBmb3IgeWVhcnMgb2YgdHJlYXRtZW50IGluIE1pZ3VlbCBhbmQgS3JlbWVyIHZzLiB5ZWFycyBvZiB0cmVhdG1lbnQgaW4gY2hhcml0aWVzJyBwcm9ncmFtc1teN10gKGBGMiwgNCwgQjExYCkuICAKLSAkRl97MTJ9JDogUmVwbGljYWJpbGl0eSBhZGp1c3RtZW50W144XSAoYEYyLCA0LCBCMTJgKS4gIAotICRGX3sxM30kOiBBZGRpdGlvbmFsIHllYXJzIG9mIHRyZWF0bWVudCBhc3NpZ25lZCB0byB0aGUgdHJlYXRtZW50IGdyb3VwIGZyb20gTWlndWVsIGFuZCBLcmVtZXJbXjldIChJVFQgdG8gVE9UPykgKGBGMiwgNCwgQjEzYCkuICAKLSAkRl97MTR9JDogUHJvcG9ydGlvbiBvZiBkZXdvcm1pbmcgZ29pbmcgdG8gY2hpbGRyZW4g4oCUIER0VyAoYEYyLCA0LCBCMThgKS4gIAotICRGX3sxNX0kOiBXb3JtIGludGVuc2l0eSBhZGp1c3RtZW50IChgRjMsIDEsIEk1MmApLiAgCi0gJFFfezd9JDogVGltZSB0byBsYWJvciBtYXJrZXRbXjEwXSAgKGBGMiwgNCwgQjVgKS4gIAotICRRX3s4fSQ6IFRpbWUgaW4gdGhlIGxhYm9yIG1hcmtldCAoYEYyLCA0LCBCN2ApLiAgCi0gJFckOiBNb3JhbCB3ZWlnaHRzIChjb252ZXJzaW9uIGZyb20gaW5jcmVhc2UgaW4gZWFybmluZ3MgdG8gdXRpbHMpIFteMTFdIChgRjIsIDMsIEIyMWApLiAgCgpcYmVnaW57ZXF1YXRpb259CkZfezE1fSA9IFxmcmFje1xzdW1fe3IgXGluIEdfezEwfX0gRl57cn1fezE2fSBGXntyfV97MTd9fXtcc3VtX3tyfSAgRl57cn1fezE3fX0KXGxhYmVse2VxOjE3fQpcdGFnezE3fQpcZW5ke2VxdWF0aW9ufQoKLSAkRl57cn1fezE2fSQ6IER0VyB3ZWlnaHQgZm9yIHdvcm0gaW50ZW5zaXR5IGJ5IGxvY2F0aW9uLCBhZGp1c3RlZCAoYEYzLCAxLCBYMTRgKSAgCi0gJEZee3J9X3sxN30kOiBEdFcgd2VpZ2h0IGZvciB3b3JtIGludGVuc2l0eSBieSBsb2NhdGlvbiwgdW5hZGp1c3RlZCAoYEYzLCAxLCBDMTRgIC0tPiBgRjMsIDEwLCBLMjZgKSAgCgoKXGJlZ2lue2FsaWdufQogIEZee3J9X3sxNn0gJj0gXGxlZnRcewogIFxiZWdpbnthcnJheX17bHJ9CiAgICAgICAgXHdpZGV0aWxkZXtGfV57cn1fezE2fSwgJiBcdGV4dHtpZiB9IHEoXHdpZGV0aWxkZXtGfV57cn1fezE2fSkgXGluICgxMFwlLCA5MFwlKVxcCiAgICAgICAgcShcd2lkZXRpbGRle0Z9XntyfV97MTZ9KV97MTB9JiBcdGV4dHtpZiB9IHEoXHdpZGV0aWxkZXtGfV57cn1fezE2fSlcbGVxIHEoXHdpZGV0aWxkZXtGfV57cn1fezE2fSlfezEwfVxcCiAgICAgICAgcShcd2lkZXRpbGRle0Z9XntyfV97MTZ9KV97OTB9ICYgXHRleHR7by93IH0gCiAgXGVuZHthcnJheX0KICAgICAgICBccmlnaHQuXFwKICBcd2lkZXRpbGRle0Z9XntyfV97MTZ9ICY9IDAuOEZfezE4fSArIDAuMlxmcmFje0ZfezE5fX17Rl97MjB9fUZee3J9X3syMX0KICAgICAgICBcbGFiZWx7ZXE6MTh9Clx0YWd7MTh9ClxlbmR7YWxpZ259CgotICRcd2lkZXRpbGRle0Z9XntyfV97MTZ9JDogV2VpZ2h0IGJlZm9yZSB3aW56b3JpemluZyAoYEYzLCAxLCBVMTRgKSAgCi0gJEZfezE4fSQ6IEludGVuc2l0eSBhZGp1c3RtZW50IHRvIGFjY291bnQgZm9yIFMuIGhhZW0gKGBGMywgMSwgSzE0YCkgIAotICRGX3sxOX0kOiBBdmVyYWdlIGludGVybWVkaWF0ZSBpbnRlbnNpdHkgYWRqdXN0bWVudCBhY3Jvc3MgcmVnaW9ucyBhbmQgY2hhcml0aWVzIChgRjMsIDEsIEc1MGApIC0gJEZee3J9X3syMX0kOiBBdmVyYWdlIEdvYmxhbCBCdXJkZW4gb2YgRGVjZWFzZSBhZGp1c3RtZW50IGFjcm9zcyByZWdpb25zIGFuZCBjaGFyaXRpZXMgKGBGMywgMSwgTDUwYCkgICAgIAotICRGX3syMX0kOiBHb2JsYWwgQnVyZGVuIG9mIERlY2Vhc2UgKEdCRCkgYWRqdXN0bWVudCBmb3IgRHRXIGluIHNwZWNpZmljIHJlZ2lvbiAoYEYzLCAxLCBMMTRgKSAgCgpcYmVnaW57ZXF1YXRpb259CkZee3J9X3sxOH0gPSBGXntyfV97MjJ9ICsgIEZee3J9X3syM30KXGxhYmVse2VxOjE5fQpcdGFnezE5fQpcZW5ke2VxdWF0aW9ufQoKLSAkRl57cn1fezIyfSQ6ICBEdFcgaW50ZXJtZWRpYXRlIGludGVuc2l0eSBhZGp1c3RtZW50IGZvciBzcGVjaWZpYyByZWdpb24gKGBGMywgMSwgRzE0YCkgIAotICRGXntyfV97MjN9JDogIFByb3BvcnRpb24gb2YgUy4gSGFlbSBpbiByZWdpb24gKGBGMywgMSwgSjE0YCkgIAoKClxiZWdpbntlcXVhdGlvbn0KRl57cn1fezIyfSA9IEZee3J9X3syNH0gRl57cn1fezI1fSBGXntyfV97MjZ9XFwKRl57cn1fezIzfSA9IDAuMiBGXntyfV97Mjd9XGZyYWN7XHN1bV97YWxsfSBGXntyfV97MjJ9fXswLjh9ClxsYWJlbHtlcToyMH0KXHRhZ3syMH0KXGVuZHtlcXVhdGlvbn0KCi0gJEZee3J9X3syNH0kOiBDYWxjdWxhdGVkIFtsb2NhdGlvbl0gaW50ZW5zaXR5IGFkanVzdG1lbnQgKGBGMywgNCwgSDI3YCkuICAKLSAkRl57cn1fezI1fSQ6IEFkanVzdG1lbnQgZm9yIHJlcHJlc2VudGF0aXZlbmVzcyAoPTEwMCUpICAoYEYzLCAxLCBFMTRgKS4gICAKLSAkRl57cn1fezI2fSQ6IEFkanVzdG1lbnQgZm9yIGNvLWluZmVjdGlvbiAoPTEwMCUpICAgIChgRjMsIDEsIEVGNGApLiAgCi0gJEZee3J9X3syN30kOiBQcmV2YWxlbmNlIHJhdGUgb2Ygc2NoaXN0byBoYWVtICAoYEYzLCAxLCBJMTRgIC0tPiBgRjMsIDMsIE8xOGApICAgCgpcYmVnaW57ZXF1YXRpb259CkZee3J9X3syMX0gPSBcc3VtX3tkXGluIEdfezExfX1GXntkfV97Mjh9Rl57ZH1fezMyfVxcCkZee3J9X3syNH0gPSBcc3VtX3tkXGluIEdfezExfX1GXntkfV97Mjh9Rl57ZH1fezI5fVxcCkZee3J9X3syN30gPSBcZnJhY3tcd2lkZXRpbGRle0Z9XntyfV97Mjd9fXsgXHN1bV97YWxsfSBcd2lkZXRpbGRle0Z9XntyfV97Mjd9IH1cXApGXntyfV97Mjl9ID0gXGZyYWN7Rl97MzB9fXtGX3szMX19ClxsYWJlbHtlcToyMX0KXHRhZ3syMX0KXGVuZHtlcXVhdGlvbn0KCgotICRGXntyfV97Mjh9JDogSW5mZWN0aW9uIHdlaWdodCAoYEYzLCA0LCBCOkUyYCkuICAKLSAkRl57cn1fezI5fSQ6IFByZXZhbGVuY2UgcmF0ZXMgb2YgZWFjaCBpbmZlY3Rpb24gYnkgbG9jYXRpb24gKGBGMywgNCwgQkU6MjdgKS4gIAotICRGXntyfV97MzB9JDogRWdncyBwZXIgZ3JhbSBpbiBbbG9jYXRpb25dIGFuZCBbY29uZGl0aW9uXSAoYEYzLCAzLCBFMThgKS4gIAotICRGXntyfV97MzF9JDogRWdncyBwZXIgZ3JhbSBpbiBvcmlnaW5hbCBzdHVkeSBieSBbY29uZGl0aW9uXSAoYEYzLCAzLCBFNGApLiAgCi0gJEZee3J9X3szMn0kOiBJbnRlbnNpdHkgYWRqdXN0bWVudCBmcm9tIEdCRCAoYEYzLCA3LCBGMThgKS4gIAoKClxiZWdpbntlcXVhdGlvbn0KRl57cn1fezMxfSA9IEZfezIxfVxcCkZee3J9X3szMn0gPSBcZnJhY3tRXntkcn1fezl9fXtRXntkfV97MTB9fVxcClFee2RyfV97OX0gPSBRX3sxMSwxfShGXntkcn1fezMzfSleMyArIFFfezExLDJ9KEZee2RyfV97MzN9KV4yICsgUV97MTEsM31GXntkcn1fezMzfVxcCkZee3J9X3szM30gPSBGX3szNCwxfSArIEZfezM0LDJ9ClxsYWJlbHtlcToyMn0KXHRhZ3syMn0KXGVuZHtlcXVhdGlvbn0KCgotICRGXntyfV97MzN9JDogQXZlcmFnZSBwcmV2YWxlbmNlIGZvciB0d28gYWdlIGdyb3VwcyAoYEYzLCA3LCBKMThgKS4gIAotICRRXntkcn1fezl9JDogSW50ZW5zaXR5IChlZ2dzIHBlciBncmFtKSAoYEYzLCA2LCBWMTdgKS4gICAgCi0gJEZee3J9X3szNCwgYWdlfSQ6IFByZXZhbGVuY2UgZm9yIGVhY2ggYWdlIGdyb3VwIChgRjMsIDYsIFQ6UzE3YCkuICAKLSAkUV57ZH1fezEwfSQ6IEVnZ3MgcGVyIGdyYW0gYnkgdHlwZSBvZiBkZXNlYXNlIChgRjMsIDcsIEI6RTVgKS4gICAgCgpcYmVnaW57ZXF1YXRpb259CkZee3J9X3sxN30gPSBcZnJhY3tGXntyfV97MzV9Rl57cn1fezM2fX17XHN1bV97cn1GXntyfV97MzV9Rl57cn1fezM2fX0KXGxhYmVse2VxOjIzfQpcdGFnezIzfQpcZW5ke2VxdWF0aW9ufQoKLSAkRl57cn1fezM1fSQ6IFByb3BvcnRpb24gb2YgcHJvamVjdGVkIHRyZWF0bWVudHMgaW4gW2xvY2F0aW9uXSBmcm9tIDIwMTctMjAyMCAoYEYzLCAxMCwgSjI2YCkuICAKLSAkRl57cn1fezM2fSQ6IFByb3BvcnRpb24gb2YgYWxsIGNvc3RzIHBhaWQgYnkgRHRXIGluIDIwMTQtMjAxNSAoYEYzLCAxMCwgSDI2LT5ENDJgKS4gIAoKXGJlZ2lue2VxdWF0aW9ufQpGXntyfV97MzV9ID0gXGZyYWN7UV57cn1fezExfX17XHN1bV97cn1RXntyfV97MTF9fVxcCkZee3J9X3szNn0gPSBcZnJhY3tQXntyfV97MTN9fXtQXntyfV97MTR9fVxcClFee3J9X3sxMX0gPSBcZnJhY3tRX3sxMn0gUV57cn1fezEzfX17XHN1bV97cn1RXntyfV97MTN9fQpcbGFiZWx7ZXE6MjR9Clx0YWd7MjR9ClxlbmR7ZXF1YXRpb259CgotICRRXntyfV97MTF9JDogMjAxNy0yMDIwIHByb2plY3RlZCB0cmVhdG1lbnRzIChgRjMsIDEwLCBFMjZgKS4gIAotICRRX3sxMn0kOiAxNjgsOTk2LDMyNyAoaW4gYEYzLCAxMCwgRTI2YCkuICAKLSAkUV57cn1fezEzfSQ6IFRyZWF0bWVudHMgaW4gW2xvY2F0aW9uXSAgaW4gMjAxNS0xNiAoYEYzLCAxMCwgRDI2YCkuICAKLSAkUF57cn1fezEzfSQ6IER0V0kgY29zdHMgaW4gW2xvY2F0aW9uXSAoYEYzLCAxMCwgQjQyYCkuICAKLSAkUF57cn1fezE0fSQ6IFRvdGFsIGNvc3RzIGluIFtsb2NhdGlvbl0gKGBGMywgMTAsIEM0MmApLiAgCgoKYGBge3IgbW9kZWx9CiMgLSBpbnB1dHM6IHRheF9yZXZfaW5pdF9tbywgdG9wX3RheF9iYXNlX2luCiMgLSBvdXRwdSB0czogdG90YWxfcmV2X3BlCmBgYAoKCiMgTWFpbiByZXN1bHRzCmBgYHtyIG1haW4tcmVzdWx0c30KIyAtIGlucHV0czogdGF4X3Jldl9pbml0X21vLCB0b3BfdGF4X2Jhc2VfaW4KIyAtIG91dHB1dHM6IHRvdGFsX3Jldl9wZQpgYGAKCgojIE1vbnRlY2FybG8gc2ltdWxhdGlvbnMgIApgYGB7cn0KIyBEcmF3cwojIENvbXB1dGUgaW5wdXRzCiMgQ29tcHV0ZSBtb2RlbAojIFJ1biBzaW1zCmBgYAoKIyBTZW5zaXRpdml0eSBBbmFseXNpcyAgCgoKW14xXTogYEYxID0gR2l2ZVdlbGwncyBlc3RpbWF0ZXMgb2YgRGV3b3JtIHRoZSBXb3JsZCdzIGNvc3QgcGVyIGNoaWxkIGRld29ybWVkIHBlciB5ZWFyIFsyMDE4XWAgIApgRjIgPSAyMDE5IEdpdmVXZWxsIENvc3QtZWZmZWN0aXZlbmVzcyBBbmFseXNpcyDigJQgVmVyc2lvbiAzYCAgCmBGMyA9IDIwMTggV29ybSBJbnRlbnNpdHkgV29ya2Jvb2sg4oCUIFZlcnNpb24gMWAgU2hlZXRzIGFyZSBuYW1lZCB0aGUgZmlyc3QgdGltZSBhbmQgbnVtYmVyZWQgdGhlcmVhZnRlci4KCgpbXjJdOiB0byBhY2NvdW50IGZvciBzZXZlcmFsIGhpZ2gtbGV2ZWwgYWN0aXZpdGllcyBEZXdvcm0gdGhlIFdvcmxkIGRvZXMgbm90IGluY2x1ZGUgaW4gaXRzIGNvc3QgcGVyIHRyZWF0bWVudCBhbmFseXNlcywgYXMgdGhleSBhcmUgbm90IGRpcmVjdGx5IHJlbGF0ZWQgdG8gYW55IHBhcnRpY3VsYXIgcHJvZ3JhbQoKClteM106IGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2RvY3VtZW50L2QvMUJrUUx5TFlRbXk5TzdGSVNnZTc4UG5XeTl1ck1vMGszMVJ3STV0T2hKRTQvZWRpdAoKW140XTogIlJvdWdobHkgMTAgeWVhcnMgYWZ0ZXIgdGhlIGluaXRpYWwgZXhwZXJpbWVudCBkZXNjcmliZWQgaW4gTWlndWVsIGFuZCBLcmVtZXIgMjAwNCwgVGhlIEtlbnlhIExpZmUgUGFuZWwgU3VydmV5IDIgKEtMUFMtMikgbWVhc3VyZWQgZWFybmluZ3MgaW4gdGhlIE1pZ3VlbCBhbmQgS3JlbWVyIDIwMDQgc3R1ZHkgcG9wdWxhdGlvbi4gVGhpcyB3YXMgZm9sbG93ZWQgYnkgYSAxNSB5ZWFyIGZvbGxvdy11cCBzdXJ2ZXksIHRoZSBLTFBTLTMuICAgCiBXZSBlc3RpbWF0ZSB0aGF0IHRoZSBhdmVyYWdlIHRyZWF0bWVudCBob3VzZWhvbGQgZXhwZXJpZW5jZWQgYSAxNS40JSBpbmNyZWFzZSBpbiBlYXJuaW5ncy4gVGhpcyBjb3JyZXNwb25kcyB0byBhbiBpbmNyZWFzZSBpbiBsbihlYXJuaW5ncykgb2YgMC4xNDMuIFRoaXMgZXN0aW1hdGUgaXMgYmFzZWQgb24gYSBwcmVsaW1pbmFyeSwgY29uZmlkZW50aWFsIGFuYWx5c2lzIGJ5IFRlZCBNaWd1ZWwgYW5kIG90aGVycyB0aGF0IHBvb2xzIGVhcm5pbmdzIGRhdGEgZnJvbSB0aGUgS0xQUy0yIGFuZCBLTFBTLTMuIFRoZSBlc3RpbWF0ZSBpcyBmb3JtZWQgdXNpbmcgdGhlIHRvdGFsIGVhcm5pbmdzIGZpbmRpbmdzIGFjcm9zcyB0aGUgd2hvbGUgc2FtcGxlIChpbmNsdWRpbmcgaW5kaXZpZHVhbHMgd2l0aCB6ZXJvIGVhcm5pbmdzKSBhbmQgdHJpbW1pbmcgdGhlIHRvcCAxJSBvZiBlYXJuZXJzIGluIGJvdGggdGhlIHRyZWF0bWVudCBhbmQgY29udHJvbCBncm91cHMuIFdlIHRha2UgdGhlIGxvZyBlZmZlY3Qgb2YgZWFybmluZ3MgYXQgdGhlIHNhbXBsZSBtZWFuLiBUaGUgcC12YWx1ZSBmb3IgdGhpcyByZXN1bHQgaXMgLjAxOS4gVGhlIGF1dGhvcnMgaGF2ZSBncmFjaW91c2x5IHNoYXJlZCB0aGVpciBwcmVsaW1pbmFyeSBlc3RpbWF0ZXMgd2l0aCB1cywgYnV0IHdlIGNhbm5vdCB5ZXQgcHVibGlzaCB0aGUgZnVsbCBkZXRhaWxzLiAgIAogIE5vdGUgdGhhdCB0aGlzIGlzIGFuIGludGVudGlvbi10by10cmVhdCBlZmZlY3QuIE5vdCBhbGwgaW5kaXZpZHVhbHMgaW4gdGhlIHN0dWR5IHBvcHVsYXRpb24gcmVjZWl2ZWQgdHJlYXRtZW50LiBXZSBhZGp1c3QgdGhpcyBlc3RpbWF0ZSBmb3IgdHJlYXRtZW50IGNvbXBsaWFuY2UgbGF0ZXIgdXNpbmcgYSBwYXJhbWV0ZXIgdGhhdCBjYXB0dXJlcyB0aGUgYWRkaXRpb25hbCB5ZWFycyBvZiBkZXdvcm1pbmcgcmVjZWl2ZWQgYnkgdGhlIHRyZWF0bWVudCBncm91cC4gQSBwcml2YXRlLCBpbnRlcm5hbC1vbmx5IGRvY3VtZW50IHJlbGF0ZWQgdG8gdGhpcyBwYXJhbWV0ZXIgaXMgYXZhaWxhYmxlIHRvIEdpdmVXZWxsIHN0YWZmIGF0IGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2RvY3VtZW50L2QvMUFLMUg1a1ppNy02MHpjeFpzMXZwWk9SVlhrNk0yeTNEa2tLeW1VNTBGa1kvZWRpdCNoZWFkaW5nPWguZm0xcnB2bW8zbG8uICIKClteNV06ICJJZiBhIHBlcnNvbiB0cmVhdGVkIGZvciB3b3JtcyBlYXJucyBhZGRpdGlvbmFsIGluY29tZSBhbmQgc3VwcG9ydHMgYSBmYW1pbHksIHRoZW4gbXVsdGlwbGUgcGVvcGxlIG1heSBiZW5lZml04oCUbm90IGp1c3QgdGhlIHBlcnNvbiB3aG8gd2FzIGRld29ybWVkLiAgIAogSW4gYSBtdWx0aS1wZXJzb24gaG91c2Vob2xkIHdpdGggb25lIHdhZ2UgZWFybmVyLCBhIDEwJSBpbmNyZWFzZSBpbiB3YWdlcyBjb3VsZCBlbmFibGUgZXZlcnkgbWVtYmVyIG9mIHRoZSBob3VzZWhvbGQgdG8gY29uc3VtZSAxMCUgbW9yZS4gSG93ZXZlciwgbWFueSBob3VzZWhvbGRzIHdpbGwgaGF2ZSBtdWx0aXBsZSB3YWdlIGVhcm5lcnMsIGFuZCBob3VzZWhvbGQgc2l6ZSBtYXkgY2hhbmdlIG92ZXJ0aW1lLiAgCiBBIHJvdWdoIG1vZGVsIGZvciBlc3RpbWF0aW5nIGEgdmFsdWUgZm9yIHRoaXMgcGFyYW1ldGVyIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9zcHJlYWRzaGVldHMvZC8xMTJ1dXlZdDZRTFJadUpvand6NmZIdjRKUS1HSE5lSXBpVC1TYXVZM2ttTS9lZGl0I2dpZD0wLiBUaGUgYXBwcm9wcmlhdGUgdmFsdWUgZm9yIHRoaXMgcGFyYW1ldGVyIHdpbGwgZGVwZW5kIG9uIG1hbnkgdW5jZXJ0YWluIGZhY3RvcnMgKGUuZy4gaG91c2Vob2xkIGNvbXBvc2l0aW9uIGFuZCBob3cgaG91c2Vob2xkIGNvbXBvc2l0aW9uIGNoYW5nZXMgb3ZlcnRpbWUpLiBXZSBjdXJyZW50bHkgdXNlIGEgZGVmYXVsdCB2YWx1ZSBvZiAyLjAuIE91ciByb3VnaCBtb2RlbCBzdWdnZXN0cyB2YWx1ZXMgY2xvc2UgdG8gMiB1bmRlciBhIHJhbmdlIG9mIHJlYXNvbmFibGUgYXNzdW1wdGlvbnMuIgoKClteNl06IFVwZGF0ZWQgY2VsbCBub3RlIGZvciB0aGUgcGFyYW1ldGVyOgpCYWlyZCBldCBhbC4gMjAxNiBjb21wYXJlcyB0aGUgZmlyc3QgdHdvIGdyb3VwcyBvZiBzY2hvb2xzIHRvIHJlY2VpdmUgZGV3b3JtaW5nIChhcyB0cmVhdG1lbnQgZ3JvdXApIHRvIGdyb3VwIDMgKGNvbnRyb2wpLiAgCiBPdXIgd29ybSBpbnRlbnNpdHkgYWRqdXN0bWVudCBpcyBjYWxjdWxhdGVkIGJ5IGNvbXBhcmluZyBiYXNlbGluZSBpbnRlbnNpdHkgb2YgaW5mZWN0aW9uIGluIGdyb3VwIDEgc2Nob29scyB3aXRoIGJhc2VsaW5lIGludGVuc2l0eSBvZiBpbmZlY3Rpb24gaW4gdGhlIGFyZWFzIHdoZXJlIG91ciBjaGFyaXRpZXMgd29yay4gIAogVGhpcyBhZGp1c3RtZW50IGFjY291bnRzIGZvciBncm91cCAyIGhhdmluZyBhIHNpZ25pZmljYW50bHkgaGlnaGVyIGJhc2VsaW5lIGludGVuc2l0eSBvZiBpbmZlY3Rpb24gdGhhbiBncm91cCAxLCBsaWtlbHkgZHVlIHRvIGZsb29kaW5nIGZyb20gYW4gdW51c3VhbGx5IHN0cm9uZyBFbCBOacOxbyBldmVudC4gICAKIFRoZSBhdmVyYWdlIG9mIGJhc2VsaW5lIHdvcm0gaW50ZW5zaXR5IGluIGdyb3VwcyAxIGFuZCAyIHdhcyB+NDUlIGhpZ2hlciB0aGFuIGluIGdyb3VwIDEgb25seSAoYmFzZWQgb24gZGF0YSB3ZSBkbyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHNoYXJlKS4gVGFraW5nIHRoZSBvZGRzIHJhdGlvIGltcGxpZXMgYW4gYWRqdXN0bWVudCBvZiB+NjUlLiAgIAogKExhc3QgdXBkYXRlZCBTZXB0ZW1iZXIgMjAxOCB8IExpbmsgdG8gQmFpcmQgZXQgYWwuIDIwMTY6IGh0dHBzOi8vZG9pLm9yZy8xMC4xMDkzL3FqZS9xancwMjIgfCBMaW5rIHRvIE1pZ3VlbCBhbmQgS3JlbWVyIDIwMDQ6IGh0dHA6Ly93d3cuanN0b3Iub3JnL3N0YWJsZS8zNTk4ODUzKSBTdWdnZXN0ZWQgdmFsdWU6NjUlLiAgTW9yZSBpbmZvIGhlcmU6IGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2RvY3VtZW50L2QvMXB5R3BWWWNlcmxVU09iZGFJejdfNlRtdjFEOE8wTDRJR1F4MUh0elRWYmsvZWRpdAoKW143XTpUaGlzIGlzIGEgcmVhbGx5IGNvbXBsaWNhdGVkIGlucHV0LiBJJ20gZ29pbmcgd2l0aCBhIHZhbHVlIG9mIDc1JSBmb3Igbm93IHNpbmNlIGl0IHNlZW1zIGxpa2UgYSBsb3Qgb2YgZGV3b3JtaW5nIHByb2dyYW1zIGFyZSBpbiB0aGVpciBpbmZhbmN5IGFuZCBoZW5jZSB3aWxsIGJlIHByb3ZpZGluZyBlYXJseSB5ZWFycyBvZiB0cmVhdG1lbnRzIHRvIHRhcmdldGVkIGNoaWxkcmVuLCBidXQgSSB0aGluayB0aGF0IG15IGJlc3QgZ3Vlc3Mgd291bGQgdmFyeSBiZXR3ZWVuIDYwLTEwMCUgZGVwZW5kaW5nIG9uIHRoZSBjaGFyaXR5IGlmIEkgd2VyZSBqdXN0IHRoaW5raW5nIG9uIHRoZSBtYXJnaW4uIChJbiBwYXJ0aWN1bGFyLCBTQ0kgY2xvc2VyIHRvIDYwJSwgRHRXSSBjbG9zZXIgdG8gMTAwJS4pIFJpZ2h0IG5vdyB0aGVyZSBpc24ndCBhIGdyZWF0IHdheSB0byBjaGFuZ2UgdGhpcyBpbnB1dCBmb3IgZWFjaCBjaGFyaXR5LCBzbyBJJ20gdGFraW5nIHNvbWV0aGluZyB0b3dhcmQgdGhlIGxvd2VyIGVuZCBvZiB0aGUgcmFuZ2UgZm9yIGFsbCBjaGFyaXRpZXMuICAKIEkgdGhpbmsgaW4gdGhlIGxvbmctcnVuIHdlIHNob3VsZCBkbyBhIGJldHRlciBqb2IgYW5zd2VyaW5nIHRoZSBxdWVzdGlvbiwgIkhvdyBtYW55IHllYXJzIG9mIGRld29ybWluZyB0cmVhdG1lbnQgaGF2ZSBjaGlsZHJlbiBhbHJlYWR5IHJlY2VpdmVkIG9uIGF2ZXJhZ2UgaW4gcGxhY2VzIHdoZXJlIG91ciBjaGFyaXRpZXMgd291bGQgc3BlbmQgbWFyZ2luYWwgZnVuZHM/IiBUaGlzIHdvdWxkIGludm9sdmUgZmlndXJpbmcgb3V0IHdoZXRoZXIgTEYgcHJvZ3JhbXMgaGFkIGJlZW4gb3BlcmF0aW5nLCB3aGV0aGVyIHByZS1zY2hvb2wtYWdlZCBraWRzIHJlY2VpdmUgZGV3b3JtaW5nLCBldGMuICAgCiBBIG1ham9yIHJlYXNvbiBvbmUgbWlnaHQgd2FudCB0byB1c2UgfjcwLTEwMCU6IGZvciBhIGZldyBjaGFyaXRpZXMsIHRoZSBidWxrIG9mIHRoZWlyIG1hcmdpbmFsIGZ1bmRpbmcgc2VlbXMgdG8gYmUgZ29pbmcgdG93YXJkIHN0YXJ0aW5nIGRld29ybWluZyBwcm9ncmFtcyBpbiByZWdpb25zIHRoYXQgbWF5IG5vdCBoYXZlIHJlY2VpdmVkIGFueSBkZXdvcm1pbmcgYmVmb3JlLiBJbiB0aG9zZSBjYXNlcywgaWYgSSBsb29rIGF0IGp1c3QgdGhlIG5leHQgZmV3IHllYXJzIG9mIGRld29ybWluZyBpbXBhY3QsIEkgcHJvYmFibHkgd291bGRuJ3QgZGlzY291bnQgZm9yIHllYXJzIG9mIHRyZWF0bWVudCB2cy4gQmFpcmQgYXQgYWxsIGJlY2F1c2UgdGhlIGF2ZXJhZ2UgeWVhciBvZiBkZXdvcm1pbmcgdHJlYXRtZW50IGJlaW5nIHByb3ZpZGVkIHdpbGwgYmUgYSBraWQncyB+c2Vjb25kIHllYXIsIHNpbWlsYXIgdG8gdGhlIGRld29ybWluZyB0cmVhdG1lbnQgZWZmZWN0IHRoYXQgd2UncmUgb2JzZXJ2aW5nIGluIEJhaXJkLiBIb3dldmVyLCB0aGlua2luZyBtYXJnaW5hbGx5IGxpa2UgdGhpcyBjb21wbGljYXRlcyBvdXIgQ0VBOiB3ZSdsbCBuZWVkIHRvIGNoYW5nZSB0aGlzIGRpc2NvdW50IG92ZXIgdGltZSBhcyBjaGFyaXRpZXMnIHByb2dyYW1zIG1hdHVyZSAoYXNzdW1pbmcgdGhleSBjb250aW51ZWQgdG8gb3BlcmF0ZSkuIEknbSBub3Qgc3VyZSBhYm91dCB0aGUgYmVzdCBwaGlsb3NvcGhpY2FsIGFwcHJvYWNoIHRvIENFQXMgaGVyZSwgYnV0IGFtIGN1cnJlbnRseSB0aGlua2luZyBJJ2xsIGNoYW5nZSB0aGlzIGRpc2NvdW50IGluIHRoZSBmdXR1cmUgYXMgY2hhcml0aWVzJyBwcm9ncmFtcyBtYXR1cmUuICAKSWYgeW91IGp1c3QgbG9vayBhdCB0aGUgbG9uZyBydW4gYW5kIGFzc3VtZSB0aGF0IG9uIGF2ZXJhZ2UgY2hhcml0aWVzIHdpbGwgYmUgcHJvdmlkaW5nIGtpZHMnIH40dGggeWVhciBvZiBkZXdvcm1pbmcgdHJlYXRtZW50LCB0aGVuIEkgdGhpbmsgYSBkaXNjb3VudCBsaWtlIDY1JSBpcyBwcm9iYWJseSBtb3JlIGFwcHJvcHJpYXRlLiAgCkEgZmV3IGZhY3RvcnMgSSBjb25zaWRlcmVkIHRoYXQgcHVzaGVkIGluIG9wcG9zaXRlIGRpcmVjdGlvbnM6Ci0gSSB0aGluayB0aGF0IG9uIGF2ZXJhZ2Ugb3VyIGNoYXJpdGllcyBhcmUgdHJlYXRpbmcga2lkcyB3aG8gYXJlIHNsaWdodGx5IHlvdW5nZXIgdGhhbiB3ZXJlIHRyZWF0ZWQgaW4gTWlndWVsIGFuZCBLcmVtZXIsIHB1c2hpbmcgdGhpbmdzIHNsaWdodGx5IGluIGZhdm9yIG9mIG91ciBjaGFyaXRpZXMgc2luY2UgSSBleHBlY3QgZGV3b3JtaW5nIGVmZmVjdHMgdG8gYmUgbGFyZ2VyIGF0IHlvdW5nZXIgYWdlcy4KLSBPVE9ILCBpdCBtYXkgYmUgdGhhdCBpbiBzb21lIGNhc2VzIG91ciBjaGFyaXRpZXMgYXJlIG9wZXJhdGluZyBpbiBwbGFjZXMgd2hlcmUgY2hpbGRyZW4gcmVjZWl2ZWQgZGV3b3JtaW5nIGFzIHByZS1zY2hvb2xlcnMsIHdoaWNoIHdvdWxkIGRlY3JlYXNlIG1hcmdpbmFsIHZhbHVlIG9mIGFkZGl0aW9uYWwgeWVhcnMgb2YgdHJlYXRtZW50LiBXZSBkb24ndCBoYXZlIGdvb2QgaW5mb3JtYXRpb24geWV0IG9uIGhvdyBjb21tb24gdGhpcyBpcy4KLSBUaGUgZGV3b3JtaW5nIGNvdmVyYWdlIHJhdGVzIGluIE1pZ3VlbCBhbmQgS3JlbWVyIHdlcmUgbG93LCBzbyBpdCBtaWdodCBiZSBhcHByb3ByaWF0ZSB0byB0aGluayBvZiB0aGUgdHJlYXRtZW50cyBwcm92aWRlZCBpbiB0aGF0IHN0dWR5IGFzIHJvdWdobHkgYSBraWQncyB+Mm5kIGFuZCAzcmQgeWVhciBvZiB0cmVhdG1lbnQgcmF0aGVyIHRoYW4gfjNyZCBhbmQgNHRoLiBUaGF0IHB1c2hlcyBpbiBmYXZvciBvZiBkaXNjb3VudGluZyBjaGFyaXRpZXMnIGltcGFjdCBtb3JlLgotIEluIHRoZSBsb25nIHJ1biwgSSdtIG5vdCBzdXJlIGhvdyBtYW55IHllYXJzIG9mIHRyZWF0bWVudCBhbiBhdmVyYWdlIGNoaWxkIHdpbGwgcmVjZWl2ZSB3aG8gaXMgdGFyZ2V0ZWQgYnkgb3VyIGNoYXJpdGllcycgcHJvZ3JhbXMuIEl0IGRlcGVuZHMgb24gdGhlIGNvbXBvc2l0aW9uIG9mIGFnZXMgaW4gc2Nob29scyB3aGVyZSBvdXIgY2hhcml0aWVzIHRyZWF0LCBob3cgb2Z0ZW4ga2lkcyBkcm9wIG91dCwgaG93IG9mdGVuIGtpZHMgbWlzcyBkZXdvcm1pbmcgdHJlYXRtZW50IG92ZXIgdGhlIGNvdXJzZSBvZiB0aGVpciB0aW1lIGluIHNjaG9vbCwgZXRjLiBJIHRoaW5rIGp1c3QgbG9va2luZyBhdCB0aGUgYXZlcmFnZSBhZ2Ugb2YgY2hpbGQgdHJlYXRlZCBhbmQga25vd2luZyB3aGV0aGVyIHRoZXJlIGFyZSBwcmUtc2Nob29sIHRyZWF0bWVudHMgd291bGQgYmUgdXNlZnVsIGhlcmUuIEluIGdlbmVyYWwgSSBndWVzc2VkIHRoYXQgdGhlIGF2ZXJhZ2Uga2lkIHdpbGwgcmVjZWl2ZSB+OCB5ZWFycyBvZiB0cmVhdG1lbnQgaW4gdGhlIGxvbmctcnVuLiAgCiBBcyBhIHNlbnNpdGl2aXR5IGNoZWNrIHRvIGFjY291bnQgZm9yIHRoZSBhYm92ZSwgSSBlZGl0ZWQgSmFtZXMncyBtb2RlbCBmb3IgdGhpcyBpbnB1dCBoZXJlOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9zcHJlYWRzaGVldHMvZC8xbExGMjhDT2Y5MGVkUUZpcGs0WkM3QlBaZC1rS29qOXNORER0MW9IOF92Yy9lZGl0P3VzcD1zaGFyaW5nIC4gVGhhdCBzaGVldCBpcyB2ZXJ5IHJvdWdoIGFuZCBtYXkgYmUgZGlmZmljdWx0IHRvIGZvbGxvdy4gSXQgaW5jbHVkZXMgc29tZSBpbmZvcm1hdGlvbiBvbiBOYXRhbGllJ3MgZ3Vlc3NlcyBhYm91dCB0aGUgYXZlcmFnZSBudW1iZXIgb2YgeWVhcnMgb2YgZGV3b3JtaW5nIHRoYXQga2lkcyBoYXZlIHJlY2VpdmVkIGluIGVhY2ggY2hhcml0eSdzIHByb2dyYW0uCgpbXjhdOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzEzVGIzQW5JVDd6UGdtS2NHdXdIMzY1Z1FqNmNoV2QwLWJsQmxielhqS3BBL2VkaXQ/dXNwPXNoYXJpbmcKCgpbXjldOiAiSm9zaDogSSBicm9hZGx5IGFncmVlIHdpdGggQ2hyaXMncyBhcmd1bWVudCBoZXJlLCBzbyBtb3ZpbmcgdG8gMS42OS4gTm90ZSB0aGF0IHRoaXMgbWFrZXMgYSB+MzAlIGRpZmZlcmVuY2UgdG8gdGhlIGJvdHRvbSBsaW5lLiAgCiBJbiBzdW1tYXJ5OiBvbiB0aGUgY29zdCBzaWRlIG9mIG91ciBDRUEgd2UgdXNlIGEgVE9UIGZyYW1ld29yaywgYnV0IG9uIHRoZSBiZW5lZml0cyBzaWRlIHdlIHVzZSBhbiBJVFQgZWZmZWN0LiBUaGF0J3MgY29uc2VydmF0aXZlOyBNaWd1ZWwgYW5kIEtyZW1lciBvbmx5IGFjaGlldmVkIH41MC02MCUgY292ZXJhZ2UgaW4gYW4gYXZlcmFnZSBkZXdvcm1pbmcgcm91bmQuIElmIHRoZXknZCBhY2hpZXZlZCAxMDAlIGNvdmVyYWdlIHdlIHNob3VsZCBleHBlY3QgdGhhdCB0aGUgaW1wYWN0IG9mIHRoZSBwcm9ncmFtIHdvdWxkJ3ZlIGJlZW4gbXVjaCBsYXJnZXIuIE9uZSB3YXkgdG8gY29udmVydCBJVFQgdG8gVE9UIGlzIHRvIGp1c3QgZGl2aWRlIGJ5IHRoZSBjb3ZlcmFnZSByYXRlIGFjaGlldmVkIGluIHRoZSBleHBlcmltZW50LiBUaGlzIG1ldGhvZCBpcyBpbXBlcmZlY3QgYmVjYXVzZSB0aGVyZSB3ZXJlIGxpa2VseSBzcGlsbG92ZXIgZWZmZWN0cyBvZiBkZXdvcm1pbmcsIHdoaWNoIHN1YnN0YW50aWFsbHkgY29tcGxpY2F0ZXMgdGhlIGFuYWx5c2lzLiBJIHRoaW5rIGEga2V5IHF1ZXN0aW9uIGZvciBob3cgbXVjaCB0byB1cGRhdGUgaXMgd2hhdCB5b3UgZXhwZWN0IHRoZSByZWxhdGl2ZSBtYWduaXR1ZGUgb2Ygc3BpbGxvdmVyIGJlbmVmaXRzIHBlciBwZXJzb24gZGV3b3JtZWQgdG8gYmUgaW4gTWlndWVsIGFuZCBLcmVtZXIgY29tcGFyZWQgdG8gb3VyIGNoYXJpdGllcycgcHJvZ3JhbXMuIFRoaXMgaXMgYSBjb21wbGV4IHF1ZXN0aW9uLCBidXQgSSdkIGd1ZXNzIHRoYXQgc3BpbGxvdmVyIGJlbmVmaXRzIHdlcmUgc2xpZ2h0bHkgbGFyZ2VyIGluIE1pZ3VlbCBhbmQgS3JlbWVyLiBBcyB3aXRoIENocmlzLCByb3VnaCBlc3RpbWF0ZXMgb2Ygb2Zmc2V0dGluZyBlZmZlY3RzIGxlYWQgbWUgdG8gd2FudCB0byBtYWtlIGEgfjcwJSBhZGp1c3RtZW50IGhlcmUuIChJJ2QgZGVjcmVhc2UgdGhpcyBhZGp1c3RtZW50IGJ5IH4xMC0yMCUgc2luY2UgSSdkIGd1ZXNzIHRoYXQgc3BpbGxvdmVyIGJlbmVmaXRzIHdlcmUgfjEwLTIwJSBsYXJnZXIgaW4gTSZLLCBidXQgdGhhdCdzIG9mZnNldCBieSBhIH4xMC0yMCUgYWRqdXN0bWVudCBmb3IgbG93ZXIgY292ZXJhZ2UgaW4gdGhlIGF2ZXJhZ2Ugcm91bmQgb2YgdGhlIGV4cGVyaW1lbnQuKSAgIApNb3JlIGRldGFpbHMgYmVsb3cuICAKTW9yZSBkZXRhaWxlZCBiYWNrZ3JvdW5kOgotIE91ciBDRUEgdXNlcyBhIHRyZWF0bWVudC1vbi10aGUtdHJlYXRlZCAoVE9UKSBmcmFtZXdvcmsgb24gdGhlIGNvc3Qgc2lkZTogaS5lLiwgd2UgZXN0aW1hdGUgdGhlIGNvc3QgcGVyIGNoaWxkIGFjdHVhbGx5IGRld29ybWVkIGJ5IG91ciByZWNvbW1lbmRlZCBjaGFyaXRpZXMuIEhvd2V2ZXIsIHdlJ3ZlIGJlZW4gdXNpbmcgYW4gaW50ZW50aW9uLXRvLXRyZWF0IChJVFQpIGZyYW1ld29yayBvbiB0aGUgYmVuZWZpdHMgc2lkZTogV2UgaW1wbGljaXRseSBhc3N1bWVkIHRoYXQgTWlndWVsIGFuZCBLcmVtZXIgMjAwNCBhY2hpZXZlZCAxMDAlIGNvdmVyYWdlIChpLmUuLCB0aGUgdHJlYXRtZW50IGdyb3VwIHJlY2VpdmVkIHRoZSBmdWxsIGFkZGl0aW9uYWwgMi40MSB5ZWFycyBvZiBkZXdvcm1pbmcgdGhhdCB3ZXJlIGFzc2lnbmVkIHRvIGl0KSwgd2hlbiB0aGUgYWN0dWFsIGRpZmZlcmVuY2UgaW4gY292ZXJhZ2UgYmV0d2VlbiB0cmVhdG1lbnQgYW5kIGNvbnRyb2wgd2FzIG11Y2ggc21hbGxlciwgbW9yZSBsaWtlIDUwLTYwJS4gW0l0IHNlZW1zIHRoZSBhdmVyYWdlIGNvdmVyYWdlIHJhdGUgZm9yIGVhY2ggcm91bmQgd2FzIHJvdWdobHkgaW4gdGhlIDUwLTYwJSByYW5nZSBpbiB0aGUgdHJlYXRtZW50IGdyb3VwIGFuZCB+MSUgaW4gdGhlIGNvbnRyb2wgZ3JvdXAuIFNlZSBUYWJsZSBJSUksIFBnLiAxNzAsIE1pZ3VlbCBhbmQgS3JlbWVyIDIwMDQuIE5vdGUgdGhhdCBpbiB0aGUgdGV4dCBpdCBzYXlzLCAiVGFrZS11cCByYXRlcyB3ZXJlIGFwcHJveGltYXRlbHkgNzUlIGluIHRoZSB0cmVhdG1lbnQgZ3JvdXAgYW5kIDUlIGluIHRoZSBjb250cm9sIGdyb3VwLiIgKHAuIDgpLCBpbXBseWluZyBhIHJlbGF0aXZlIGRpZmZlcmVuY2Ugb2YgfjcwJSBjb3ZlcmFnZS4gSXQgc2VlbXMgbGlrZSB0aGF0IHdhcyBtZWFudCB0byBlc3RpbWF0ZSB3aGF0IHBvcnRpb24gb2YgdGhlIHRyZWF0bWVudCBhbmQgY29udHJvbCBncm91cHMgZXZlciByZWNlaXZlZCBhbnkgdHJlYXRtZW50LCB3aGljaCBpcyBsZXNzIGRpcmVjdGx5IGNvbXBhcmFibGUgdG8gdGhlIGNvdmVyYWdlIHJhdGVzIHdlIGVzdGltYXRlIGZvciBvdXIgY2hhcml0aWVzJyBwcm9ncmFtcy5dCi0gQSBzaW1wbGUgd2F5IHRvIGluZmxhdGUgdGhlIElUVCBlZmZlY3QgdG8gYSBUT1QgZWZmZWN0IGlzIHRvIGRpdmlkZSB0aGUgSVRUIGVmZmVjdCBieSB0aGUgZGlmZmVyZW5jZSBpbiBjb3ZlcmFnZSByYXRlcyBiZXR3ZWVuIHRyZWF0bWVudCBhbmQgY29udHJvbC4gCi0gSG93ZXZlciwgdGhlcmUgYXJlIHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBkb2luZyB0aGlzOiBhIG1ham9yIG9uZSBpcyB0aGF0IG90aGVyIG1lbWJlcnMgb2YgdGhlIHRyZWF0bWVudCBncm91cCBtYXkgaGF2ZSBzdWJzdGFudGlhbGx5IGJlbmVmaXR0ZWQgZnJvbSBzcGlsbG92ZXJzIG9mIGRld29ybWluZyB0cmVhdG1lbnQgKGkuZS4sIGxlc3MgdHJhbnNtaXNzaW9uIG9mIHdvcm1zIHNpbmNlIG5lYXJieSBjaGlsZHJlbiBoYWQgYmVlbiB0cmVhdGVkKS4gV2hlbiB3ZSBlc3RpbWF0ZSB0aGUgdHJlYXRtZW50IGVmZmVjdCB1bmRlciBJVFQsIHdlJ3JlIHBhcnRpYWxseSBjb3VudGluZyB0aGUgZGlyZWN0IGJlbmVmaXRzIG9mIHRyZWF0bWVudCBidXQgYWxzbyBjb3VudGluZyBzcGlsbG92ZXIgYmVuZWZpdHMuIFNvIGl0IGV4YWdnZXJhdGVzIHRoZSBiZW5lZml0cyB0byBqdXN0IGRpdmlkZSBieSB0aGUgY292ZXJhZ2UgcmF0ZTsgeW91J3JlIGF0dHJpYnV0aW5nIGEgYmlnZ2VyIGVmZmVjdCBmb3IgdGhlIGZ1bGwgc2FtcGxlIHRoYW4gd2UnZCBhY3R1YWxseSBleHBlY3QgdG8gZXhpc3QgaWYgZXZlcnlvbmUgd2VyZSB0cmVhdGVkLiAgCkkgdGhpbmsgdGhlIGtleSBxdWVzdGlvbiBmb3IgZGVjaWRpbmcgd2hldGhlciB0byBzaW1wbHkgaW5mbGF0ZSB0aGUgSVRUIGVmZmVjdCBpczogSG93IGRvIHdlIGV4cGVjdCB0aGUgbWFnbml0dWRlIG9mIHNwaWxsb3ZlciBiZW5lZml0cyBwZXIgcGVyc29uIGRld29ybWVkIGluIE1pZ3VlbCBhbmQgS3JlbWVyIHRvIGNvbXBhcmUgdG8gdGhlIG1hZ25pdHVkZSBvZiBzcGlsbG92ZXIgYmVuZWZpdHMgaW4gY2hhcml0aWVzJyBwcm9ncmFtcz8gSWYgdGhlIHNwaWxsb3ZlciBiZW5lZml0cyBwZXIgcGVyc29uIGRld29ybWVkIGluIE1pZ3VlbCBhbmQgS3JlbWVyIHdlcmUgZXF1YWwgdG8gb3Igc21hbGxlciB0aGFuIGluIG91ciBjaGFyaXRpZXMnIHByb2dyYW1zLCB0aGVuIEkgdGhpbmsgd2Ugd291bGQgbm90IGJlIG92ZXJlc3RpbWF0aW5nIHRoZSBiZW5lZml0cyBvZiBkZXdvcm1pbmcgYnkgdXNpbmcgdGhpcyBzaW1wbGUgaW5mbGF0b3IuIE90aGVyd2lzZSwgd2UgYXJlLiAgCiBNeSBjdXJyZW50IGJlc3QgZ3Vlc3MgaXMgdGhhdCB0aGUgc3BpbGxvdmVyIGJlbmVmaXRzIHdlcmUgcHJvYmFibHkgc29tZXdoYXQgbGFyZ2VyIGluIHRoZSBNaWd1ZWwgYW5kIEtyZW1lciBzdHVkeSB0aGFuIGluIG91ciBjaGFyaXRpZXMnIHByb2dyYW1zLiBCdXQsIEkgaGF2ZSBodWdlIHVuY2VydGFpbnR5IGFib3V0IHRoZSByZWxhdGl2ZSBtYWduaXR1ZGVzOyBJJ2QgbGlrZWx5IG5lZWQgdG8gZG8gbW9yZSByZXNlYXJjaCBhbmQgZm9ybWFsIG1vZGVsaW5nIHRvIGFuc3dlciBpdCB3ZWxsLiAgCiBTZXZlcmFsIGNvbXBsaWNhdGlvbnMgd2l0aCB0aGlua2luZyBhYm91dCB0aGUgbWFnbml0dWRlIG9mIHNwaWxsb3ZlciBiZW5lZml0cyBhcmU6CmEpIFdlIGFsc28gZXhwZWN0IHRoYXQgdGhlIGNvbnRyb2wgZ3JvdXAgbWF5IGhhdmUgYmVuZWZpdHRlZCBmcm9tIHNwaWxsb3ZlcnMgZnJvbSB0aGUgdHJlYXRtZW50IGdyb3VwLiBUaGlzIHdvdWxkIGxlYWQgdGhlIGltcGFjdCBvZiBkZXdvcm1pbmcgYXMgbWVhc3VyZWQgaW4gTSZLIHJlbGF0aXZlIHRvIHRoZSB0cnVlIGNvdW50ZXJmYWN0dWFsIG9mIGRld29ybWluZyB0cmVhdG1lbnQgdG8gYmUgdW5kZXJlc3RpbWF0ZWQuIEJlY2F1c2UgdGhpcyB3YXMgYSBjbHVzdGVyIFJDVCBhbmQgd29ybSB0cmFuc21pc3Npb24gaXMgZ2VvZ3JhcGhpY2FsbHkgZGV0ZXJtaW5lZCwgaXQgc2VlbXMgbGlrZWx5IHRoYXQgdGhlIHNwaWxsb3ZlciBiZW5lZml0cyBpbiBjb250cm9sIGNsdXN0ZXJzIHdlcmUgc21hbGxlciB0aGFuIGluIHVudHJlYXRlZCBjaGlsZHJlbiBpbiB0cmVhdG1lbnQgY2x1c3RlcnMsIGJ1dCBzdGlsbCBtYXkgaGF2ZSBiZWVuIG1lYW5pbmdmdWwuCmIpIENoaWxkcmVuIHdobyBhcmUgdHJlYXRlZCBtYXkgYWxzbyBiZW5lZml0IGZyb20gc3BpbGxvdmVycyB0byBzb21lIGV4dGVudDogaWYgYSBoaWdoZXIgcG9ydGlvbiBvZiBvbmUncyBjb21tdW5pdHkgaXMgdHJlYXRlZCwgdGhlbiB3b3JtIHRyYW5zbWlzc2lvbiBtYXkgYmUgbW9yZSBlZmZlY3RpdmVseSByZWR1Y2VkLCBsZWFkaW5nIHRvIGxvd2VyIHJlaW5mZWN0aW9uIHJhdGVzLiBUaGlzIGtpbmQgb2YgYmVuZWZpdCB3b3VsZCBhbHNvIG9jY3VyIGluIGNoYXJpdGllcycgcHJvZ3JhbXMuCmMpIFRoZSByZWxhdGl2ZSBpbXBhY3Qgb2Ygc3BpbGxvdmVycyBzZWVtcyBsaWtlIGl0IHdvdWxkIGRlcGVuZCBzdWJzdGFudGlhbGx5IG9uOiAxKSBjb3ZlcmFnZSByYXRlcyBvZiBkZXdvcm1pbmcgcHJvZ3JhbXMsIDIpIGJhc2VsaW5lIGludGVuc2l0eSBvZiB3b3JtIGluZmVjdGlvbnMuIAotIFJlIGNvdmVyYWdlLCBvdXIgY2hhcml0aWVzIGFpbSB0byB0cmVhdCBldmVyeW9uZSBpbiB0aGVpciB0YXJnZXQgcmVnaW9ucyBhbmQgYWNjb3JkaW5nIHRvIG91ciByZXZpZXdzIG9mIFNDSSBhbmQgRGV3b3JtIHRoZSBXb3JsZCBJbml0aWF0aXZlIG1heSBhY2hpZXZlIGNvdmVyYWdlIHJhdGVzIG9mIH44MC05NSUsIGEgaGlnaGVyIGNvdmVyYWdlIHJhdGUgdGhhbiB3YXMgYWNoaWV2ZWQgaW4gTWlndWVsIGFuZCBLcmVtZXIuIFRoaXMgbWVhbnMgdGhhdCB0aGVyZSBpcyBhIHNtYWxsZXIgdW50cmVhdGVkIHBvcnRpb24gb2YgdGhlIHBvcHVsYXRpb24gdGhhdCBjb3VsZCByZWNlaXZlIHNwaWxsb3ZlciBiZW5lZml0cy4gT24gdGhlIG90aGVyIGhhbmQsIHBlcmhhcHMgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGNvdmVyYWdlIGFuZCBzcGlsbG92ZXJzIGlzIG5vbmxpbmVhcjogbWF5YmUgaWYgbmVhcmx5IGFsbCBwZW9wbGUgaW4gdGhlIGNvbW11bml0eSBhcmUgdHJlYXRlZCB0aGVuIHJlaW5mZWN0aW9uIHJhdGVzIGRyb3AgYnkgYSBub25saW5lYXIgYW1vdW50LgotIFJlIGludGVuc2l0eSwgYXMgQ2hyaXMgbWVudGlvbmVkLCBwZXJoYXBzIHNwaWxsb3ZlciBlZmZlY3RzIGFyZSBsYXJnZXIgd2hlbiB0aGUgd29ybSBidXJkZW4gaXMgZXNwZWNpYWxseSBiYWQsIGluIGEgbm9ubGluZWFyIHdheS4gKFdlJ3JlIGN1cnJlbnRseSBhZGp1c3RpbmcgbGluZWFybHkgZm9yIHdvcm0gaW50ZW5zaXR5IGluIG91ciBDRUEuKSBPVE9ILCBJIGNvdWxkIHNlZSBhbiBhcmd1bWVudCB0aGF0IHNwaWxsb3ZlcnMgYXJlIGVzcGVjaWFsbHkgZ29vZCBhdCBsb3dlciBpbnRlbnNpdHkgbGV2ZWxzLCBzaW5jZSBtYXliZSB5b3UgY291bGQgZ2V0IGNsb3NlciB0byBlbGltaW5hdGluZyBhbnkgaW5mZWN0aW9ucy4KZCkgU28gZmFyIEkndmUgbWFpbmx5IGJlZW4gdGhpbmtpbmcgYWJvdXQgc3BpbGxvdmVycyBvbiBzY2hvb2wtYWdlZCBjaGlsZHJlbi4gSG93ZXZlciwgb3VyIG1vZGVsIGRvZXNuJ3QgY291bnQgYW55IHNwaWxsb3ZlciBiZW5lZml0cyB0byBwcmUtc2Nob29sLWFnZWQgY2hpbGRyZW4gZXZlbiB0aG91Z2ggdGhleSBtYXkgZXhpc3QgKHRob3VnaCBjb3VsZCBhbHNvIGRlcGVuZCBvbiB3aGV0aGVyIHByZS1zY2hvb2wtYWdlZCBjaGlsZHJlbiBhcmUgcmVjZWl2aW5nIHRyZWF0bWVudCBpbiBhcmVhcyB3aGVyZSBvdXIgY2hhcml0aWVzIHdvcmspLiBUaGlzIGlzIGFub3RoZXIgcmVhc29uIHlvdSBtaWdodCBleHBlY3QgdGhhdCBzcGlsbG92ZXJzIGluIGNoYXJpdGllcycgcHJvZ3JhbXMgYXJlIGFjdHVhbGx5IGxhcmdlciB0aGFuIHRoZSBhbW91bnQgb2Ygc3BpbGxvdmVycyB0aGF0IHdlJ3JlIGluY2x1ZGluZyBpbiBvdXIgZXN0aW1hdGUgd2hlbiBpbmZsYXRpbmcgdGhlIE0mSyBlZmZlY3QuICAKICBJIG1hZGUgYSBzdXBlciByb3VnaCBtb2RlbCB0aGF0IG9uZSBjb3VsZCBwbGF5IGFyb3VuZCB3aXRoIGhlcmU6IGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL3NwcmVhZHNoZWV0cy9kLzFvTnlpcmtwRkItSFliWFZNb3Jsb0VaWXBObThrNFhURktWOWVnalhJUEE0L2VkaXQ/dXNwPXNoYXJpbmcuIEkgdGhpbmsgdGhlcmUgYXJlIHByb2JhYmx5IG1ham9yIGlzc3VlcyB3aXRoIGl0LCBzbyBub3QgcHV0dGluZyB3ZWlnaHQgb24gaXQsIGJ1dCBpdCBkaWRuJ3QgbWFrZSBpdCBzZWVtIGxpa2Ugb2J2aW91c2x5IHdlIHNob3VsZCBleHBlY3QgbXVjaCBzbWFsbGVyIHNwaWxsb3ZlciBiZW5lZml0cyBpbiBjaGFyaXRpZXMnIHByb2dyYW1zIHRoYW4gTSZLOyBteSBjdXJyZW50IGJlc3QgZ3Vlc3Mgd2FzIG1heWJlIH4xMCUgbGVzcy4iCgpbXjEwXTogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xTnhONlNPOEdOdjFBaHBITXkxLUlHdS10U3RUN3B5MjlXOEFGVTB1X2JMdy9lZGl0P3RzPTU5OWI0ODQwCgoKW14xMV06ICJPdXIgbW9kZWwgYWNjb3VudHMgZm9yIGNoYW5nZXMgaW4gdGhlIG5hdHVyYWwgbG9nIG9mIGNvbnN1bXB0aW9uLiBUaGUgbG9nYXJpdGhtaWMgbW9kZWwgY2FwdHVyZXMgdGhlIGlkZWEgdGhhdCBtb25leSBoYXMgZGltaW5pc2hpbmcgdmFsdWUgYXMgeW91IGdldCBtb3JlIGFuZCBtb3JlIG9mIGl0LiAgIAogRm9yIGV4YW1wbGUsIG91ciBtb2RlbCBjb25zaWRlcnMgYSA1MCUgaW5jcmVhc2UgaW4gaW5jb21lIGFzIGEgbGl0dGxlIGJldHRlciB0aGFuIDUwJSBhcyBnb29kIGFzIGFuIDEwMCUgaW5jcmVhc2UgaW4gaW5jb21lLiIgaHR0cHM6Ly93d3cuZ2l2ZXdlbGwub3JnL2hvdy13ZS13b3JrL291ci1jcml0ZXJpYS9jb3N0LWVmZmVjdGl2ZW5lc3MvY29tcGFyaW5nLW1vcmFsLXdlaWdodHMKIAogCiBbXjEyXTogKGBGMiwgNCwgRDI1OWAp
    +
    LS0tCnRpdGxlOiAiTm90ZXMgb24gR2l2ZXdlbGwncyBDb3N0IEVmZmVjdGl2ZW5lc3MgQW5hbHlzaXMgb24gRGV3b3JtaW5nICIKZGF0ZTogImByIGZvcm1hdChTeXMudGltZSgpLCAnJWQgJUIsICVZJylgIgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIGNvZGVfZm9sZGluZzogaGlkZQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQogICAgY29sbGFwc2VkOiB5ZXMKICAgIGtlZXBfbWQ6IHllcwogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMKICAgIHNtb290aF9zY3JvbGw6IG5vCiAgICB0b2M6IHllcwogICAgdG9jX2RlcHRoOiAyCiAgICB0b2NfZmxvYXQ6IHllcwogIHBkZl9kb2N1bWVudDogZGVmYXVsdAogIHdvcmRfZG9jdW1lbnQ6IGRlZmF1bHQKZWRpdG9yX29wdGlvbnM6CiAgY2h1bmtfb3V0cHV0X3R5cGU6IGNvbnNvbGUKLS0tClxkZWZcYmx1ZXtcY29sb3J7Ymx1ZX19CgoKCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KIyBMb2FkaW5nIHJlcXVpcmVkIGxpYnJhcmllcwpsaXN0Lm9mLnBhY2thZ2VzIDwtIGMoInRpZHl2ZXJzZSIsICJoYXZlbiIsICJoZXJlIiwgImthYmxlRXh0cmEiKQoKbmV3LnBhY2thZ2VzIDwtIGxpc3Qub2YucGFja2FnZXNbIShsaXN0Lm9mLnBhY2thZ2VzICVpbiUgaW5zdGFsbGVkLnBhY2thZ2VzKClbLCJQYWNrYWdlIl0pXQppZihsZW5ndGgobmV3LnBhY2thZ2VzKSkgaW5zdGFsbC5wYWNrYWdlcyhuZXcucGFja2FnZXMsIHJlcG9zPSAiaHR0cDovL2NyYW4uY25yLmJlcmtlbGV5LmVkdS8iKQoKbGFwcGx5KGxpc3Qub2YucGFja2FnZXMsIGxpYnJhcnksIGNoYXJhY3Rlci5vbmx5ID0gVFJVRSkKCmtuaXRyOjpvcHRzX2tuaXQkc2V0KHJvb3QuZGlyID0gaGVyZSgpKQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpCgpwcmludF9jb2RlIDwtIFRSVUUKYGBgCgoKYGBge3IgcGFyYW1ldGVycywgZWNobz1wcmludF9jb2RlfQojIERvIG5vdCBydW4gZGF0YSBzZXQgb24gZ2l0L2dpdGh1YiB1bnRpbCBwcml2YWN5IGhhcyBiZWVuIGNsZWFyZWQKIyMjIyMjIyMjIyMjIyMjIwojIyMjIyBEYXRhICAKIyMjIyMjIyMjIyMjIyMjIwojIyMjIyMjIyMjIyMjIyMjCiMjIyMjIFJlc2VhcmNoCiMjIyMjIyMjIyMjIyMjIyMKIyMjIyMjIyMjIyMjIyMjIwojIyMjIyBHdWVzcyB3b3JrICAgCiMjIyMjIyMjIyMjIyMjIyMKIyMjIyMjIyMjIyMjIyMjIwojIyMjIyAgTm90ZXM6CiMjIyMjIyMjIyMjIyMjIyMKIyMjIFNvdXJjZSAtLS0tPiAgSW5wdXQgLS0tLT4gTW9kZWwgLS0tLT4gUG9saWN5IEVzdGltYXRlcyAob3V0cHV0KQojIyMgIChfc28pICAgICAgICAoX2luKSAgICAgICAoX21vKSAgICAgICAgKF9wZSkKIyMjIHZhbHVlcyAgICAgIGZ1bmN0aW9ucyAgIGZ1bmN0aW9ucyAgICAgIHZhbHVlcwojIyMgICAgICAgICAgICAgJiB2YWx1ZXMgICAgJiB2YWx1ZXMKIyMjIGFyZ3VtZW50cyBpbiBmdW5jdGlvbnMgc2hvdWxkIHVzZWQgIl92YXIiIGFuZCBmdW5jdGlvbnMgc2hvdWxkICJfZiIKI2ludmlzaWJsZSggbGlzdDJlbnYoY2FsbF9wYXJhbXNfZigpLC5HbG9iYWxFbnYpICkKYGBgCgoKIyBLZXkgcG9saWN5IGVzdGltYXRlcyBmb3IgcG9saWN5IG1ha2VycyAgCgpgYGB7ciBmaW5hbC1vdXRwdXR9CmBgYAoKIyBNZXRob2RvbG9neQoKIyMgTWFpbiBFcXVhdGlvbiAodGhlIG1vZGVsKQoKXGJlZ2lue2VxdWF0aW9ufQpDRUEgPSBcZnJhY3tCICgxICsgRl97MH0pfXtDfQpcbGFiZWx7ZXE6MX0KXHRhZ3sxfQpcZW5ke2VxdWF0aW9ufQoKIC0gJEMkIGlzIHRoZSBjb3N0cyBwZXIgcGVyc29uIGRld29ybWVkLiAgIAogLSAkQiQgaXMgdGhlIGJlbmVmaXRzIHBlciBwZXJzb24gZGV3b3JtZWQgLgogLSAkRl97MH0kIGlzIGEgZmFjdG9yIHRvIGFjY291bnQgZm9yIGxldmVyYWdlL2Z1ZGdpbmcgW25vdCByZXZpZXdlZCBpbiB0aGlzIGV4Y2VyY2lzZV1bXjEyXQoKCiMjIFN1YiBjb21wb25lbnRzOgoKV2UgYmVnaW4gYnkgZGVzY3JpYmluZyB0aGUgdW5kZXJseWluZyBhbmFseXNpcyBiZWhpbmQgdGhlIGNvc3RzLiBUaHJvdWdoIHRoaXMgZXhjZXJjaXNlIHdlIHVzZSB0aGUgZm9sbG93aW5nIG5vdGF0aW9uIHRoZSBsZXR0ZXJzICRGLCBQLCBRJCBkZW5vdGUgY29tcG9uZW50cwppbiBwZXJjZW50YWdlcywgbW9uZXRhcnkgdW5pdHMgKFVTIGRvbGxhcnMgYW5kIGxvY2FsIGN1cnJlbmN5KSBhbmQgcXVhbnRpdGllcyByZXNwZWN0aXZlbHkuIEVhY2ggbmV3IGVsZW1lbnQgd2lsbCBiZSB0cmFja2VkIHVzaW5nIGEgc3ViLWluZGV4LCBhbmQgc3VwcmEtaW5kZWNpcyB3aWxsIGJlCnVzZWQgdG8gdHJhY2sgZ3JvdXBzLCBsaWtlIGdlb2dyYXBoaWVzLCB0aW1lLCBhbmQgb3RoZXIgY2F0ZXJnb3JpZXMuIEZvciBleGFtcGxlICRRXntpfV97Mn0kIHJlcHJlc2VudHMgdGhlIHNlY29uZCBxdWFudGl0eSBkZXNjcmliZWQgaW4gdGhpcyBhbmFseXNpcyAodG90YWwgYWRqdXN0ZWQgbnVtYmVyIGNoaWxkcmVkIGRld29ybWVkIHBlciB5ZWFyKSBpbiBsb2NhdGlvbiAkaSQuIEF0IHRoZSBlbmQgb2YgZWFjaCBkZXNjcmlwdGlvbiB3ZSB3aWxsIHNob3cgaW4gcGFyZW50aGVzaXMgdGhlIG9yaWdpbmFsIGxvY2F0aW9uIG9mIHRoZSBwYXJhbWV0ZXIgaW4gR2l2ZVdlbGwncyBzcHJlYWRzaGVldHMgKHVzaW5nIHRoZSBub3RhdGlvbiBgZmlsZSwgc2hlZXQgbnVtYmVyLCBjZWxsYFteMV0pLgoKIyMjIENvc3RzICgiJEMkIikKCmBgYHtyIGNvbXAxfQojIC0gaW5wdXRzOiB0YXhfcmV2X2luaXRfbW8sIHRvcF90YXhfYmFzZV9pbgojIC0gb3V0cHV0czogdG90YWxfcmV2X3BlCmBgYAoKXGJlZ2lue2VxdWF0aW9ufQpDID0gXHN1bV97aSBcaW4gR197MX0gKGNvdW50cmllcykgfSBGXntpfV97MX0gUF57aX1fezF9ClxsYWJlbHtlcToyfQpcdGFnezJ9ClxlbmR7ZXF1YXRpb259CgotICRGXntpfV97MX0kOiBXZWlnaHQgZm9yIHRoZSB3ZWlnaHRlZCBhdmVyYWdlIChgRjEsIDIsIEgxNmApLiAgCi0gJFBee2l9X3sxfSQ6IFRvdGFsIGNvc3QgcGVyIGNoaWxkLCBwZXIgeWVhciBpbiByZWdpb24gJGkkIChgRjEsIDIsIEM6RzE2YCkuICAKCgpcYmVnaW57ZXF1YXRpb259CkZee2l9X3sxfSA9IFxmcmFje0Zee2l9X3syfSBRXntpfV97MX19e1xzdW1fe2ogXGluIEdfezF9fSBGXntqfV97Mn0gUV57an1fezF9fQpcbGFiZWx7ZXE6M30KXHRhZ3szfQpcZW5ke2VxdWF0aW9ufQoKLSAkRl57aX1fezJ9JDogaXMgdGhlIHByb3BvcnRpb24gb2YgdGhlIGNvc3RzIHRoYXQgYXJlIHBhaWQgYnkgdGhlIERld29ybSB0aGUgV29ybGQgaW5pdGlhdGl2ZSAoRHRXIGZyb20gbm93IG9uKSAoYEYxLCAyLCBDOkc2YCkuICAKLSAkUV57aX1fezF9JDogZXN0aW1hdGVkIG51bWJlciBvZiB0cmVhdG1lbnRzIGRlbGl2ZXJlZCBhbmQgY29tbWl0ZWQgKGBGMSwgMiwgQzpHN2ApLiAgCgpcYmVnaW57ZXF1YXRpb259ClBee2l9X3sxfSA9IFxsZWZ0KFBee2l9X3szfSArIFBee2l9X3s0fSArIFBee2l9X3s1fSArIFBee2l9X3s2fSArIFBee2l9X3s3fSAgXHJpZ2h0KVxmcmFjezF9e1Fee2l9X3syfX0KXGxhYmVse2VxOjR9Clx0YWd7NH0KXGVuZHtlcXVhdGlvbn0KCi0gJFBee2l9X3szfSQ6IFRvdGFsIGNvc3Qgb2YgRHRXIGFjcm9zcyBhbGwgeWVhcnMgKGBGMSwgMSwgWjM5YCkuICAKLSAkUF57aX1fezR9JDogQ29zdCBvZiBkb25hdGVkIGRydWdzIHBlciB5ZWFyIChgRjEsIDEsIFoxM2ApLiAgCi0gJFBee2l9X3s1fSQ6IEFkZGl0aW9uYWwgcGFydG5lciBjb3N0cyAob3RoZXIgdGhhbiBkcnVncykgKGBGMSwgMSwgWjUwYCkuICAKLSAkUF57aX1fezZ9JDogR292ZXJtZW50IGZpbmFuY2lhbCBjb3N0cyBwZXIgeWVhciAoYEYxLCAxLCBYNDFgKS4gIAotICRQXntpfV97N30kOiBHb3Zlcm1lbnQgc3RhZmYgdmFsdWUgdGltZSAoYEYxLCAyLCBONDJgKS4gIAoKLSAkUV57aX1fezJ9JDogdG90YWwgYWRqdXN0ZWQgY2hpbGRyZW4gZGV3b3JtZWQgcGVyIHllYXIgKGBGMSwgMSwgWjE1YCkuICAKCiRQXntpfV97Mn0kIGFuZCAkRl57aX1fezJ9JCBhcmUgZGVmaW5lZCBpbiB0ZXJtcyBvZiBzb21lIG9mIHRoZSBwcmV2aW91cyBlbGVtZW50cy4KClxiZWdpbntlcXVhdGlvbn0KRl57aX1fezJ9ID0gXGZyYWN7UF57aX1fezJ9fXtQXntpfV97MX19XFwKUF57aX1fezJ9ID0gXGZyYWN7UF57aX1fezN9fXtRXntpfV97Mn19ClxsYWJlbHtlcTo1fQpcdGFnezV9ClxlbmR7ZXF1YXRpb259CgotICRQXntpfV97Mn0kOiBEdFcgY29zdHMgcGVyIGNoaWxkcmVuIHBlciB5ZWFyIChgRjEsIDIsIEM6RzE0YCkuICAKClRoZSB0b3RhbCBjb3N0cyBvZiBEdFcgYWNyb3NzIGFsbCB5ZWFycyAoJFBee2l9X3szfSQpIGlzIGFnZ3JlZ2F0ZWQgYWNyb3NzIHllYXJzLCByZWdpb25zICh3aXRoaW4gY291bnRyeSksIHR5cGUgb2YgY29zdCBhY3Rpdml0eSAocG9saWN5ICYgYWR2b2NhY3ksIHByZXZhbGVuY2Ugc3VydmV5cywgZHJ1ZyBwcm9jdXJlbWVudCAmIG1hbmFnZW1lbnQsIHRyYWluaW5nICYgZGlzdHJpYnV0aW9uLCBwdWJsaWMgbW9iaWxpemF0aW9uICYgY29tbXVuaXR5IHNlbnNpdGl6YXRpb24sIG1vbml0b3JpbmcgJiBldmFsdWF0aW9uLCBwcm9ncmFtIG1hbmFnZW1lbnQsIGdpdmVXZWxsIGFkZGVkIGNvc3RzW14yXSkgYW5kIG1vbnRoIChGZWJydWFyeSBvciBBdWd1c3QpCgpcYmVnaW57ZXF1YXRpb259ClBee2l9X3szfSA9IFxzdW1fe3QgXGluIHllYXJzIChHX3syfSl9ClxzdW1fe3IgXGluIHJlZ2lvbiAoR197M30pfQpcc3VtX3thIFxpbiBhY3RpdiAoR197NH0pfQpcc3VtX3ttIFxpbiBtb250aCAoR197NX0pfSBQXntpdHJhbX1fezN9ClxsYWJlbHtlcTo2fQpcdGFnezZ9ClxlbmR7ZXF1YXRpb259CgoKLSAkUF57aXRyYW19X3szfSQ6IGNvc3RzIGJ5IHllYXIsIGxvY2F0aW9uLCByZWdpb24sIGFjdGl2aXR5LCBhbmQgbW9udGguIChgRjEsIFtyK20reV0sIEUxNToyMWApCgpUb3RhbCBudW1iZXIgb2YgYWRqdXN0ZWQgY2hpbGRyZW4gKCRRXntpfV97Mn0kKSBpcyBjb21wdXRlZCBhcyBmb2xsb3dzOgoKXGJlZ2lue2VxdWF0aW9ufQpRXntpfV97Mn0gPSBcc3VtX3t0IFxpbiBHX3syfX0KXHN1bV97ciBcaW4gR197M319CiBRXntpdHJ9X3syfSBcXAogUV57aXRyfV97Mn0gPSBcZnJhY3tcd2lkZXRpbGRle1F9XntpdHIsIEZlYn1fezJ9IC0gXHdpZGV0aWxkZXtRfV57aXRyLCBBdWd9X3syfX17UV57aXRyfV97M319XFwKIFx3aWRldGlsZGV7UX1ee2l0ciwgbX1fezJ9ID0gXHN1bV97cyBcaW4gc2NoLmFnZSAoR197Nn0pfSBcbGVmdCgKXHN1bV97ZSBcaW4gZW5yLnN0KEdfezd9KX0gXHdpZGV0aWxkZXtRfV57aXRybXNlfV97Mn1ccmlnaHQpIFFfezR9XntpdHJtfQpcbGFiZWx7ZXE6N30KXHRhZ3s3fQpcZW5ke2VxdWF0aW9ufQoKCgotICRRXntpdHJ9X3syfSQsIGFuZCAkUV57aXRybX1fezJ9JCAoYEYxLCA0LCBCMTlgIGFuZCBgRjEsIFtjb3VudHJ5XSBudW0gb2YgY2hpbGRyZW4gKEMpLCBBQjpBQzM0YCkKLSAkUV57aXRyfV97M30kOiBBY3R1YWwgdHJlYXRtZW50IHJvdW5kcyBwZXIgeWVhciAoYEYxLCA0LCBEW2NydF1gKQotICRRXntpdHJtfV97NH0kOiBBZGp1c3RtZW50IGZhY3RvciAoYEYxLCBDLCBbcm10XTI1YCkKCgpcYmVnaW57ZXF1YXRpb259ClFee2l0cm19X3s0fSA9IDEgLSBcbGVmdC5cbGVmdCggXGZyYWN7UV57aXRybXMsZW59X3syfX17UV57aXRybXMsZW59X3s1fX0gLSBGXntpdHJtfV97M30gRl57aXRybX1fezR9IEZee2l0cm19X3s1fSBccmlnaHQpICBcbWlkZGxlLyBcbGVmdCggXGZyYWN7UV57aXRybXMsZW59X3syfX17UV57aXRybXMsZW59X3s1fX0gXHJpZ2h0KSBccmlnaHQuClxsYWJlbHtlcTo4fQpcdGFnezh9ClxlbmR7ZXF1YXRpb259CgoKLSAkUV57aXRybXMsIGVufV97NX0kOiBUb3RhbCBlbnJvbGxlZCBzY2hvb2wtYWdlZCBjaGlsZHJlbiB0YXJnZXRlZCAoYEYxLCBDLCBbcnRtXTEzYCkKLSAkRl57aXRybX1fezN9JDogUGVyY2VudGFnZSBvZiBzY2hvb2xzIHZpc2l0ZWQgZHVyaW5nIGNvdmVyYWdlIHZhbGlkYXRpb24gKGFuZC9vciBkdXJpbmcgcHJvY2VzcyBtb25pdG9yaW5nKSB0aGF0IGRpc3RyaWJ1dGVkIGRld29ybWluZyB0YWJsZXRzIG9uIGRld29ybWluZyBkYXkgYW5kL29yIG1vcC11cCBkYXkgKGBGMSwgQywgW3J0bV0yMiBgKS4gICAKLSAkRl57aXRybX1fezR9JDogUGVyY2VudGFnZSBvZiBlbnJvbGxlZCBzY2hvb2wtYWdlZCBjaGlsZHJlbiBhdHRlbmRpbmcgc2Nob29sIG9uIGRld29ybWluZyBkYXkgb3IgbW9wLXVwIGRheSwgYWNjb3JkaW5nIHRvIGF0dGVuZGFuY2UgcmVnaXN0ZXJzIHZpZXdlZCBpbiBzY2hvb2xzIHZpc2l0ZWQgZHVyaW5nIGNvdmVyYWdlIHZhbGlkYXRpb24gKGFuZC9vciBkdXJpbmcgcHJvY2VzcyBtb25pdG9yaW5nKSAoYEYxLCBDLCBbcnRtXTIzIGApLiAgIAotICRGXntpdHJtfV97NX0kOiBPZiBjaGlsZHJlbiBlbnJvbGxlZCBpbiBhIHNjaG9vbCB0aGF0IGRpc3RyaWJ1dGVkIGRld29ybWluZyB0YWJsZXRzIG9uIGRld29ybWluZyBkYXkgYW5kL29yIG1vcC11cCBkYXkgYW5kIHdobyBhdHRlbmRlZCBzY2hvb2wgb24gZGV3b3JtaW5nIGRheSBhbmQvb3IgbW9wLXVwIGRheSwgcGVyY2VudGFnZSB3aG8gcmVwb3J0ZWQgY29uc3VtaW5nIGRld29ybWluZyB0YWJsZXRzIChhY2NvcmRpbmcgdG8gc3R1ZGVudCBpbnRlcnZpZXdzIGR1cmluZyBjb3ZlcmFnZSB2YWxpZGF0aW9uIGFuZC9vciBwcm9jZXNzIG1vbml0b3JpbmcpIChgRjEsIEMsIFtydG1dMjQgYCkuICAKCgpcYmVnaW57ZXF1YXRpb259ClBee2l9X3s0fSA9IFxzdW1fe3R9ClxzdW1fe3J9ClxzdW1fe219IFBee2l0cm19X3s0fQpcbGFiZWx7ZXE6OX0KXHRhZ3s5fQpcZW5ke2VxdWF0aW9ufQoKCi0gJFBee2l0cm19X3s0fSQ6IENvc3Qgb2YgZG9uYXRlZCBkcnVncyBpbiBjb3VudHJ5LCBsb2NhdGlvbiwgeWVhciwgbW9udGggKGBGMSwgW2NydG1dLCBFMThgKS4gIAoKClxiZWdpbntlcXVhdGlvbn0KUF57aX1fezV9ID0gXHN1bV97dH0KXHN1bV97cn0KXHN1bV97bX0gXHdpZGV0aWxkZXtQfV57aXRybX1fezV9ICAtIFBee2l9X3s0fSBcXApcd2lkZXRpbGRle1B9XntpdHJ9X3s1fSA9IFxzdW1fe219Clx3aWRldGlsZGV7UH1ee2l0cm19X3s1fQpcbGFiZWx7ZXE6MTB9Clx0YWd7MTB9ClxlbmR7ZXF1YXRpb259CgoKCi0gJFBee2l0cm19X3s0fSQ6IENvc3Qgb2YgZG9uYXRlZCBkcnVncyBpbiBjb3VudHJ5LCBsb2NhdGlvbiwgeWVhciwgbW9udGggKGBGMSwgW2NydG1dLCBFMThgKS4gIAotICRcd2lkZXRpbGRle1B9XntpdHJtfV97NX0kOiBUb3RhbCBwYXJ0bmVyIGNvc3RzIChpbmNsLiBkcnVncykgKGBGMSwgW2NydG1dLCBFMjNgKS4KCgpcYmVnaW57ZXF1YXRpb259ClBee2l9X3s2fSA9IFxzdW1fe3R9ClxzdW1fe3J9IFx3aWRldGlsZGV7UH1ee2l0cn1fezZ9ICBcXApcd2lkZXRpbGRle1B9XntpdHJ9X3s2fSA9IFBee2l0cn1fezh9IC0gKCBcd2lkZXRpbGRle1B9XntpdHJ9X3s1fSArIFBee2l0cn1fezN9KQpcbGFiZWx7ZXE6MTF9Clx0YWd7MTF9ClxlbmR7ZXF1YXRpb259CgotICRQXntpdHJ9X3s4fSQ6IFRvdGFsIGNvc3RzIGFjcm9zcyBhY3Rpdml0aWVzLCBpbmNsdWRpbmcgR2l2ZVdlbGwgKGBGMSwgMSwgW3J0Y10xMWApLiAgCgpcYmVnaW57ZXF1YXRpb259ClBee2l0cn1fezh9ID0gXHdpZGV0aWxkZXtQfV57aXRyfV97OH0gKyBQXntpdHJ9X3s5fVxcClx3aWRldGlsZGV7UH1ee2l0cn1fezh9ID0gXHN1bV97bX0KXHN1bV97YX0gXHdpZGV0aWxkZXtQfV57aXRybWF9X3s4fSAgXFwKXHdpZGV0aWxkZXtQfV57aXRyfV97OX0gPSBcd2lkZXRpbGRle1B9XntpdHJ9X3s4fSBcZnJhY3tGX3s2fX17MSAtIEZfezZ9fQpcbGFiZWx7ZXE6MTJ9Clx0YWd7MTJ9ClxlbmR7ZXF1YXRpb259CgotICRQXntpdHJ9X3s5fSQ6IFRvdGFsIGNvc3RzIGFjcm9zcyBhY3Rpdml0aWVzLCBpbmNsdWRpbmcgR2l2ZVdlbGwgKGBGMSwgMSwgW3J0Y10xMGApLiAgCi0gJEZfezZ9JDogUGVyY2VudGFnZSBvZiBjb3N0cyB0aGF0IGdvIGludG8gaGlnaC1sZXZlbCBhY3Rpdml0aWVzIChgRjEsIDEsIEU2MmApIAoKXGJlZ2lue2VxdWF0aW9ufQpQXntpfV97N30gPSBcc3VtX3t0fSBcc3VtX3tyfSBcbGVmdCggIFxzdW1fe2ogXGluIEdfOH0gXGxlZnQoIFxzdW1fe2sgXGluIEdfOX1cd2lkZXRpbGRle1B9XntpdHJqa31fezd9LzIgIFxyaWdodCkgXHJpZ2h0KQpcbGFiZWx7ZXE6MTN9Clx0YWd7MTN9ClxlbmR7ZXF1YXRpb259CgotICRcd2lkZXRpbGRle1B9XntpdHJqa31fezd9JDogIENvc3QgcGVyIHRyZWF0bWVudCBpbXB1dGVkIHRvIHRyYWlubmluZyBhbmQgZGV3b3JtaW5nIGRheSAoYEYxLCAzLCBLMjNgKS4gIAoKXGJlZ2lue2VxdWF0aW9ufQpcd2lkZXRpbGRle1B9XntpfV97N30gPSBcZnJhY3tQX3sxMH0vUF97MTF9fXtRX3s2fX0KXGxhYmVse2VxOjE0fQpcdGFnezE0fQpcZW5ke2VxdWF0aW9ufQoKLSAkUF57aXRyfV97MTB9JDogQ29zdCBvZiB0cmFpbm5pbmcgYW5kIEREIGluIGxvY2FsIGN1cnJlbmN5IChgRjEsIDMsIEgyM2ApLiAgCi0gJFBee2l0cn1fezExfSQ6IEV4Y2hhbmdlIHJhdGUgKDEgVVNEID0gIFggbG9jYWwgY3VycmVuY3kpIChgRjEsIDMsIEoxNmApLiAgCi0gJFFfezZ9JDogIFRvdGFsIG51bWJlciBvZiBjaGlsZHJlbiB0cmVhdGVkIGluIGxvY2F0aW9uIHIgKGBGMSwgMywgSjE3YCkgCgpcYmVnaW57ZXF1YXRpb259ClFee2l9X3sxfSA9IFxsZWZ0LiBcbGVmdCggXHN1bV97dFxpbiAxNiwgMTd9IFBfezN9XntpdH0gIFBfezEyfV57aX1ccmlnaHQpIFxtaWRkbGUvIFBfezJ9XntpfVxyaWdodC4KXGxhYmVse2VxOjE1fQpcdGFnezE1fQpcZW5ke2VxdWF0aW9ufQoKLSAkUF57aXRyfV97MTJ9JDogRHRXIHNwZW5kaW5nIGNvbW1pdG1lbnRzIGZvciB0aGUgZnV0dXJlICgyMDE4LTIwMjApIChgRjEsIDIsIEM6RzRgKS4gIAoKIyMjIEJlbmVmaXRzICgiJEIkIikKCgpcYmVnaW57ZXF1YXRpb259CkIgPSBcbGVmdCggXGZyYWN7MX17MSArIEZfezd9fSBccmlnaHQpXntRX3s3fX0gXHN1bV97dCA9IDB9XntRX3s4fSAtIDF9ClxmcmFje2xuKCAxICsgRl97OH0pfXsoMSArIEZfezd9KX1GX3s5fUZfezEwfUZfezExfUZfezEyfUZfezEzfVxmcmFje0ZfezE1fX17Rl97MTR9fVcKXGxhYmVse2VxOjE2fQpcdGFnezE2fQpcZW5ke2VxdWF0aW9ufQoKCi0gJEZfezd9JDogRGlzY291bnQgcmF0ZVteM10gKGBGMiwgMiwgQjNgKS4gIAotICRGX3s4fSQ6IFRyZWF0bWVudCBlZmZlY3Qgb2YgZGV3b3JtaW5nIG9uIGVhcm5pbmdzICgxNS40JSlbXjRdIChgRjIsIDIsIEIzYCkuICAKLSAkRl97OX0kOiBNdWx0aXBsaWVyIGZvciByZXNvdXJjZSBzaGFyaW5nIHdpdGhpbiBob3VzZWhvbGRzW141XSAoYEYyLCAyLCBCOWApLiAgIAotICRGX3sxMH0kOiBBZGp1c3RtZW50IGZvciBFbCBOacOxb1teNl0gKGBGMiwgNCwgQjEwYCkuICAKLSAkRl97MTF9JDogQWRqdXN0bWVudCBmb3IgeWVhcnMgb2YgdHJlYXRtZW50IGluIE1pZ3VlbCBhbmQgS3JlbWVyIHZzLiB5ZWFycyBvZiB0cmVhdG1lbnQgaW4gY2hhcml0aWVzJyBwcm9ncmFtc1teN10gKGBGMiwgNCwgQjExYCkuICAKLSAkRl97MTJ9JDogUmVwbGljYWJpbGl0eSBhZGp1c3RtZW50W144XSAoYEYyLCA0LCBCMTJgKS4gIAotICRGX3sxM30kOiBBZGRpdGlvbmFsIHllYXJzIG9mIHRyZWF0bWVudCBhc3NpZ25lZCB0byB0aGUgdHJlYXRtZW50IGdyb3VwIGZyb20gTWlndWVsIGFuZCBLcmVtZXJbXjldIChJVFQgdG8gVE9UPykgKGBGMiwgNCwgQjEzYCkuICAKLSAkRl97MTR9JDogUHJvcG9ydGlvbiBvZiBkZXdvcm1pbmcgZ29pbmcgdG8gY2hpbGRyZW4g4oCUIER0VyAoYEYyLCA0LCBCMThgKS4gIAotICRGX3sxNX0kOiBXb3JtIGludGVuc2l0eSBhZGp1c3RtZW50IChgRjMsIDEsIEk1MmApLiAgCi0gJFFfezd9JDogVGltZSB0byBsYWJvciBtYXJrZXRbXjEwXSAgKGBGMiwgNCwgQjVgKS4gIAotICRRX3s4fSQ6IFRpbWUgaW4gdGhlIGxhYm9yIG1hcmtldCAoYEYyLCA0LCBCN2ApLiAgCi0gJFckOiBNb3JhbCB3ZWlnaHRzIChjb252ZXJzaW9uIGZyb20gaW5jcmVhc2UgaW4gZWFybmluZ3MgdG8gdXRpbHMpIFteMTFdIChgRjIsIDMsIEIyMWApLiAgCgpcYmVnaW57ZXF1YXRpb259CkZfezE1fSA9IFxmcmFje1xzdW1fe3IgXGluIEdfezEwfX0gRl57cn1fezE2fSBGXntyfV97MTd9fXtcc3VtX3tyfSAgRl57cn1fezE3fX0KXGxhYmVse2VxOjE3fQpcdGFnezE3fQpcZW5ke2VxdWF0aW9ufQoKLSAkRl57cn1fezE2fSQ6IER0VyB3ZWlnaHQgZm9yIHdvcm0gaW50ZW5zaXR5IGJ5IGxvY2F0aW9uLCBhZGp1c3RlZCAod2luZG9yaW56YXRpb24pIChgRjMsIDEsIFgxNGApICAKLSAkRl57cn1fezE3fSQ6IER0VyB3ZWlnaHQgZm9yIHdvcm0gaW50ZW5zaXR5IGJ5IGxvY2F0aW9uLCB1bmFkanVzdGVkIChgRjMsIDEsIEMxNGAgLS0+IGBGMywgMTAsIEsyNmApICAKCgpcYmVnaW57YWxpZ259CiAgRl57cn1fezE2fSAmPSBcbGVmdFx7CiAgXGJlZ2lue2FycmF5fXtscn0KICAgICAgICBcd2lkZXRpbGRle0Z9XntyfV97MTZ9LCAmIFx0ZXh0e2lmIH0gcShcd2lkZXRpbGRle0Z9XntyfV97MTZ9KSBcaW4gKDEwXCUsIDkwXCUpXFwKICAgICAgICBxKFx3aWRldGlsZGV7Rn1ee3J9X3sxNn0pX3sxMH0mIFx0ZXh0e2lmIH0gcShcd2lkZXRpbGRle0Z9XntyfV97MTZ9KVxsZXEgcShcd2lkZXRpbGRle0Z9XntyfV97MTZ9KV97MTB9XFwKICAgICAgICBxKFx3aWRldGlsZGV7Rn1ee3J9X3sxNn0pX3s5MH0gJiBcdGV4dHtvL3cgfSAKICBcZW5ke2FycmF5fQogICAgICAgIFxyaWdodC5cXAogIFx3aWRldGlsZGV7Rn1ee3J9X3sxNn0gJj0gMC44Rl97MTh9ICsgMC4yXGZyYWN7Rl97MTl9fXtGX3syMH19Rl57cn1fezIxfQogICAgICAgIFxsYWJlbHtlcToxOH0KXHRhZ3sxOH0KXGVuZHthbGlnbn0KCi0gJFx3aWRldGlsZGV7Rn1ee3J9X3sxNn0kOiBXZWlnaHQgYmVmb3JlIHdpbnpvcml6aW5nIChgRjMsIDEsIFUxNGApICAKLSAkRl97MTh9JDogSW50ZW5zaXR5IGFkanVzdG1lbnQgdG8gYWNjb3VudCBmb3IgUy4gaGFlbSAoYEYzLCAxLCBLMTRgKSAgCi0gJEZfezE5fSQ6IEF2ZXJhZ2UgaW50ZXJtZWRpYXRlIGludGVuc2l0eSBhZGp1c3RtZW50IGFjcm9zcyByZWdpb25zIGFuZCBjaGFyaXRpZXMgKGBGMywgMSwgRzUwYCkgICAKLSAkRl57cn1fezIxfSQ6IEF2ZXJhZ2UgR29ibGFsIEJ1cmRlbiBvZiBEZWNlYXNlIGFkanVzdG1lbnQgYWNyb3NzIHJlZ2lvbnMgYW5kIGNoYXJpdGllcyAoYEYzLCAxLCBMNTBgKSAgIAotICRGX3syMX0kOiBHb2JsYWwgQnVyZGVuIG9mIERlY2Vhc2UgKEdCRCkgYWRqdXN0bWVudCBmb3IgRHRXIGluIHNwZWNpZmljIHJlZ2lvbiAoYEYzLCAxLCBMMTRgKSAgCgpcYmVnaW57ZXF1YXRpb259CkZee3J9X3sxOH0gPSBGXntyfV97MjJ9ICsgIEZee3J9X3syM30KXGxhYmVse2VxOjE5fQpcdGFnezE5fQpcZW5ke2VxdWF0aW9ufQoKLSAkRl57cn1fezIyfSQ6ICBEdFcgaW50ZXJtZWRpYXRlIGludGVuc2l0eSBhZGp1c3RtZW50IGZvciBzcGVjaWZpYyByZWdpb24gKGBGMywgMSwgRzE0YCkgIAotICRGXntyfV97MjN9JDogIFByb3BvcnRpb24gb2YgUy4gSGFlbSBpbiByZWdpb24gKGBGMywgMSwgSjE0YCkgIAoKClxiZWdpbntlcXVhdGlvbn0KRl57cn1fezIyfSA9IEZee3J9X3syNH0gRl57cn1fezI1fSBGXntyfV97MjZ9XFwKRl57cn1fezIzfSA9IDAuMiBGXntyfV97Mjd9XGZyYWN7XHN1bV97YWxsfSBGXntyfV97MjJ9fXswLjh9ClxsYWJlbHtlcToyMH0KXHRhZ3syMH0KXGVuZHtlcXVhdGlvbn0KCi0gJEZee3J9X3syNH0kOiBDYWxjdWxhdGVkIFtsb2NhdGlvbl0gaW50ZW5zaXR5IGFkanVzdG1lbnQgKGBGMywgNCwgSDI3YCkuICAKLSAkRl57cn1fezI1fSQ6IEFkanVzdG1lbnQgZm9yIHJlcHJlc2VudGF0aXZlbmVzcyAoPTEwMCUpICAoYEYzLCAxLCBFMTRgKS4gICAKLSAkRl57cn1fezI2fSQ6IEFkanVzdG1lbnQgZm9yIGNvLWluZmVjdGlvbiAoPTEwMCUpICAgIChgRjMsIDEsIEVGNGApLiAgCi0gJEZee3J9X3syN30kOiBQcmV2YWxlbmNlIHJhdGUgb2Ygc2NoaXN0byBoYWVtICAoYEYzLCAxLCBJMTRgIC0tPiBgRjMsIDMsIE8xOGApICAgCgpcYmVnaW57ZXF1YXRpb259CkZee3J9X3syMX0gPSBcc3VtX3tkXGluIEdfezExfX1GXntkfV97Mjh9Rl57ZH1fezMyfVxcCkZee3J9X3syNH0gPSBcc3VtX3tkXGluIEdfezExfX1GXntkfV97Mjh9Rl57ZH1fezI5fVxcCkZee3J9X3syN30gPSBcZnJhY3tcd2lkZXRpbGRle0Z9XntyfV97Mjd9fXsgXHN1bV97YWxsfSBcd2lkZXRpbGRle0Z9XntyfV97Mjd9IH1cXApGXntyfV97Mjl9ID0gXGZyYWN7Rl97MzB9fXtGX3szMX19ClxsYWJlbHtlcToyMX0KXHRhZ3syMX0KXGVuZHtlcXVhdGlvbn0KCgotICRGXntyfV97Mjh9JDogSW5mZWN0aW9uIHdlaWdodCAoYEYzLCA0LCBCOkUyYCkuICAKLSAkRl57cn1fezI5fSQ6IFByZXZhbGVuY2UgcmF0ZXMgb2YgZWFjaCBpbmZlY3Rpb24gYnkgbG9jYXRpb24gKGBGMywgNCwgQjpFMjdgKS4gIAotICRGXntyfV97MzB9JDogRWdncyBwZXIgZ3JhbSBpbiBbbG9jYXRpb25dIGFuZCBbY29uZGl0aW9uXSAoYEYzLCAzLCBFMThgKS4gIAotICRGXntyfV97MzF9JDogRWdncyBwZXIgZ3JhbSBpbiBvcmlnaW5hbCBzdHVkeSBieSBbY29uZGl0aW9uXSAoYEYzLCAzLCBFNGApLiAgCi0gJEZee3J9X3szMn0kOiBJbnRlbnNpdHkgYWRqdXN0bWVudCBmcm9tIEdCRCAoYEYzLCA3LCBGMThgKS4gIAoKClxiZWdpbntlcXVhdGlvbn0KRl57cn1fezMyfSA9IFxmcmFje1Fee2RyfV97OX19e1Fee2R9X3sxMH19XFwKUV57ZHJ9X3s5fSA9IFFfezExLDF9KEZee2RyfV97MzN9KV4zICsgUV97MTEsMn0oRl57ZHJ9X3szM30pXjIgKyBRX3sxMSwzfUZee2RyfV97MzN9XFwKRl57cn1fezMzfSA9IEZfezM0LDF9ICsgRl97MzQsMn0KXGxhYmVse2VxOjIyfQpcdGFnezIyfQpcZW5ke2VxdWF0aW9ufQoKCi0gJEZee3J9X3szM30kOiBBdmVyYWdlIHByZXZhbGVuY2UgZm9yIHR3byBhZ2UgZ3JvdXBzIChgRjMsIDcsIEoxOGApLiAgCi0gJFFee2RyfV97OX0kOiBJbnRlbnNpdHkgKGVnZ3MgcGVyIGdyYW0pIChgRjMsIDYsIFYxN2ApLiAgICAKLSAkRl57cn1fezM0LCBhZ2V9JDogUHJldmFsZW5jZSBmb3IgZWFjaCBhZ2UgZ3JvdXAgKGBGMywgNiwgVDpTMTdgKS4gIAotICRRXntkfV97MTB9JDogRWdncyBwZXIgZ3JhbSBieSB0eXBlIG9mIGRlc2Vhc2UgKGBGMywgNywgQjpFNWApLiAgICAKClxiZWdpbntlcXVhdGlvbn0KRl57cn1fezE3fSA9IFxmcmFje0Zee3J9X3szNX1GXntyfV97MzZ9fXtcc3VtX3tyfUZee3J9X3szNX1GXntyfV97MzZ9fQpcbGFiZWx7ZXE6MjN9Clx0YWd7MjN9ClxlbmR7ZXF1YXRpb259CgotICRGXntyfV97MzV9JDogUHJvcG9ydGlvbiBvZiBwcm9qZWN0ZWQgdHJlYXRtZW50cyBpbiBbbG9jYXRpb25dIGZyb20gMjAxNy0yMDIwIChgRjMsIDEwLCBKMjZgKS4gIAotICRGXntyfV97MzZ9JDogUHJvcG9ydGlvbiBvZiBhbGwgY29zdHMgcGFpZCBieSBEdFcgaW4gMjAxNC0yMDE1IChgRjMsIDEwLCBIMjYtPkQ0MmApLiAgCgpcYmVnaW57ZXF1YXRpb259CkZee3J9X3szNX0gPSBcZnJhY3tRXntyfV97MTF9fXtcc3VtX3tyfVFee3J9X3sxMX19XFwKRl57cn1fezM2fSA9IFxmcmFje1Bee3J9X3sxM319e1Bee3J9X3sxNH19XFwKUV57cn1fezExfSA9IFxmcmFje1FfezEyfSBRXntyfV97MTN9fXtcc3VtX3tyfVFee3J9X3sxM319ClxsYWJlbHtlcToyNH0KXHRhZ3syNH0KXGVuZHtlcXVhdGlvbn0KCi0gJFFee3J9X3sxMX0kOiAyMDE3LTIwMjAgcHJvamVjdGVkIHRyZWF0bWVudHMgKGBGMywgMTAsIEUyNmApLiAgCi0gJFFfezEyfSQ6IDE2OCw5OTYsMzI3IChpbiBgRjMsIDEwLCBFMjZgKS4gIAotICRRXntyfV97MTN9JDogVHJlYXRtZW50cyBpbiBbbG9jYXRpb25dICBpbiAyMDE1LTE2IChgRjMsIDEwLCBEMjZgKS4gIAotICRQXntyfV97MTN9JDogRHRXSSBjb3N0cyBpbiBbbG9jYXRpb25dIChgRjMsIDEwLCBCNDJgKS4gIAotICRQXntyfV97MTR9JDogVG90YWwgY29zdHMgaW4gW2xvY2F0aW9uXSAoYEYzLCAxMCwgQzQyYCkuICAKCgpgYGB7ciBtb2RlbH0KIyAtIGlucHV0czogdGF4X3Jldl9pbml0X21vLCB0b3BfdGF4X2Jhc2VfaW4KIyAtIG91dHB1IHRzOiB0b3RhbF9yZXZfcGUKYGBgCgoKIyBNYWluIHJlc3VsdHMKYGBge3IgbWFpbi1yZXN1bHRzfQojIC0gaW5wdXRzOiB0YXhfcmV2X2luaXRfbW8sIHRvcF90YXhfYmFzZV9pbgojIC0gb3V0cHV0czogdG90YWxfcmV2X3BlCmBgYAoKCiMgTW9udGVjYXJsbyBzaW11bGF0aW9ucyAgCmBgYHtyfQojIERyYXdzCiMgQ29tcHV0ZSBpbnB1dHMKIyBDb21wdXRlIG1vZGVsCiMgUnVuIHNpbXMKYGBgCgojIFNlbnNpdGl2aXR5IEFuYWx5c2lzICAKCgpbXjFdOiBgRjEgPSBHaXZlV2VsbCdzIGVzdGltYXRlcyBvZiBEZXdvcm0gdGhlIFdvcmxkJ3MgY29zdCBwZXIgY2hpbGQgZGV3b3JtZWQgcGVyIHllYXIgWzIwMThdYCAgCmBGMiA9IDIwMTkgR2l2ZVdlbGwgQ29zdC1lZmZlY3RpdmVuZXNzIEFuYWx5c2lzIOKAlCBWZXJzaW9uIDNgICAKYEYzID0gMjAxOCBXb3JtIEludGVuc2l0eSBXb3JrYm9vayDigJQgVmVyc2lvbiAxYCBTaGVldHMgYXJlIG5hbWVkIHRoZSBmaXJzdCB0aW1lIGFuZCBudW1iZXJlZCB0aGVyZWFmdGVyLgoKClteMl06IHRvIGFjY291bnQgZm9yIHNldmVyYWwgaGlnaC1sZXZlbCBhY3Rpdml0aWVzIERld29ybSB0aGUgV29ybGQgZG9lcyBub3QgaW5jbHVkZSBpbiBpdHMgY29zdCBwZXIgdHJlYXRtZW50IGFuYWx5c2VzLCBhcyB0aGV5IGFyZSBub3QgZGlyZWN0bHkgcmVsYXRlZCB0byBhbnkgcGFydGljdWxhciBwcm9ncmFtCgoKW14zXTogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xQmtRTHlMWVFteTlPN0ZJU2dlNzhQbld5OXVyTW8wazMxUndJNXRPaEpFNC9lZGl0CgpbXjRdOiAiUm91Z2hseSAxMCB5ZWFycyBhZnRlciB0aGUgaW5pdGlhbCBleHBlcmltZW50IGRlc2NyaWJlZCBpbiBNaWd1ZWwgYW5kIEtyZW1lciAyMDA0LCBUaGUgS2VueWEgTGlmZSBQYW5lbCBTdXJ2ZXkgMiAoS0xQUy0yKSBtZWFzdXJlZCBlYXJuaW5ncyBpbiB0aGUgTWlndWVsIGFuZCBLcmVtZXIgMjAwNCBzdHVkeSBwb3B1bGF0aW9uLiBUaGlzIHdhcyBmb2xsb3dlZCBieSBhIDE1IHllYXIgZm9sbG93LXVwIHN1cnZleSwgdGhlIEtMUFMtMy4gICAKIFdlIGVzdGltYXRlIHRoYXQgdGhlIGF2ZXJhZ2UgdHJlYXRtZW50IGhvdXNlaG9sZCBleHBlcmllbmNlZCBhIDE1LjQlIGluY3JlYXNlIGluIGVhcm5pbmdzLiBUaGlzIGNvcnJlc3BvbmRzIHRvIGFuIGluY3JlYXNlIGluIGxuKGVhcm5pbmdzKSBvZiAwLjE0My4gVGhpcyBlc3RpbWF0ZSBpcyBiYXNlZCBvbiBhIHByZWxpbWluYXJ5LCBjb25maWRlbnRpYWwgYW5hbHlzaXMgYnkgVGVkIE1pZ3VlbCBhbmQgb3RoZXJzIHRoYXQgcG9vbHMgZWFybmluZ3MgZGF0YSBmcm9tIHRoZSBLTFBTLTIgYW5kIEtMUFMtMy4gVGhlIGVzdGltYXRlIGlzIGZvcm1lZCB1c2luZyB0aGUgdG90YWwgZWFybmluZ3MgZmluZGluZ3MgYWNyb3NzIHRoZSB3aG9sZSBzYW1wbGUgKGluY2x1ZGluZyBpbmRpdmlkdWFscyB3aXRoIHplcm8gZWFybmluZ3MpIGFuZCB0cmltbWluZyB0aGUgdG9wIDElIG9mIGVhcm5lcnMgaW4gYm90aCB0aGUgdHJlYXRtZW50IGFuZCBjb250cm9sIGdyb3Vwcy4gV2UgdGFrZSB0aGUgbG9nIGVmZmVjdCBvZiBlYXJuaW5ncyBhdCB0aGUgc2FtcGxlIG1lYW4uIFRoZSBwLXZhbHVlIGZvciB0aGlzIHJlc3VsdCBpcyAuMDE5LiBUaGUgYXV0aG9ycyBoYXZlIGdyYWNpb3VzbHkgc2hhcmVkIHRoZWlyIHByZWxpbWluYXJ5IGVzdGltYXRlcyB3aXRoIHVzLCBidXQgd2UgY2Fubm90IHlldCBwdWJsaXNoIHRoZSBmdWxsIGRldGFpbHMuICAgCiAgTm90ZSB0aGF0IHRoaXMgaXMgYW4gaW50ZW50aW9uLXRvLXRyZWF0IGVmZmVjdC4gTm90IGFsbCBpbmRpdmlkdWFscyBpbiB0aGUgc3R1ZHkgcG9wdWxhdGlvbiByZWNlaXZlZCB0cmVhdG1lbnQuIFdlIGFkanVzdCB0aGlzIGVzdGltYXRlIGZvciB0cmVhdG1lbnQgY29tcGxpYW5jZSBsYXRlciB1c2luZyBhIHBhcmFtZXRlciB0aGF0IGNhcHR1cmVzIHRoZSBhZGRpdGlvbmFsIHllYXJzIG9mIGRld29ybWluZyByZWNlaXZlZCBieSB0aGUgdHJlYXRtZW50IGdyb3VwLiBBIHByaXZhdGUsIGludGVybmFsLW9ubHkgZG9jdW1lbnQgcmVsYXRlZCB0byB0aGlzIHBhcmFtZXRlciBpcyBhdmFpbGFibGUgdG8gR2l2ZVdlbGwgc3RhZmYgYXQgaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xQUsxSDVrWmk3LTYwemN4WnMxdnBaT1JWWGs2TTJ5M0Rra0t5bVU1MEZrWS9lZGl0I2hlYWRpbmc9aC5mbTFycHZtbzNsby4gIgoKW141XTogIklmIGEgcGVyc29uIHRyZWF0ZWQgZm9yIHdvcm1zIGVhcm5zIGFkZGl0aW9uYWwgaW5jb21lIGFuZCBzdXBwb3J0cyBhIGZhbWlseSwgdGhlbiBtdWx0aXBsZSBwZW9wbGUgbWF5IGJlbmVmaXTigJRub3QganVzdCB0aGUgcGVyc29uIHdobyB3YXMgZGV3b3JtZWQuICAgCiBJbiBhIG11bHRpLXBlcnNvbiBob3VzZWhvbGQgd2l0aCBvbmUgd2FnZSBlYXJuZXIsIGEgMTAlIGluY3JlYXNlIGluIHdhZ2VzIGNvdWxkIGVuYWJsZSBldmVyeSBtZW1iZXIgb2YgdGhlIGhvdXNlaG9sZCB0byBjb25zdW1lIDEwJSBtb3JlLiBIb3dldmVyLCBtYW55IGhvdXNlaG9sZHMgd2lsbCBoYXZlIG11bHRpcGxlIHdhZ2UgZWFybmVycywgYW5kIGhvdXNlaG9sZCBzaXplIG1heSBjaGFuZ2Ugb3ZlcnRpbWUuICAKIEEgcm91Z2ggbW9kZWwgZm9yIGVzdGltYXRpbmcgYSB2YWx1ZSBmb3IgdGhpcyBwYXJhbWV0ZXIgaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL3NwcmVhZHNoZWV0cy9kLzExMnV1eVl0NlFMUlp1Sm9qd3o2Zkh2NEpRLUdITmVJcGlULVNhdVkza21NL2VkaXQjZ2lkPTAuIFRoZSBhcHByb3ByaWF0ZSB2YWx1ZSBmb3IgdGhpcyBwYXJhbWV0ZXIgd2lsbCBkZXBlbmQgb24gbWFueSB1bmNlcnRhaW4gZmFjdG9ycyAoZS5nLiBob3VzZWhvbGQgY29tcG9zaXRpb24gYW5kIGhvdyBob3VzZWhvbGQgY29tcG9zaXRpb24gY2hhbmdlcyBvdmVydGltZSkuIFdlIGN1cnJlbnRseSB1c2UgYSBkZWZhdWx0IHZhbHVlIG9mIDIuMC4gT3VyIHJvdWdoIG1vZGVsIHN1Z2dlc3RzIHZhbHVlcyBjbG9zZSB0byAyIHVuZGVyIGEgcmFuZ2Ugb2YgcmVhc29uYWJsZSBhc3N1bXB0aW9ucy4iCgoKW142XTogVXBkYXRlZCBjZWxsIG5vdGUgZm9yIHRoZSBwYXJhbWV0ZXI6CkJhaXJkIGV0IGFsLiAyMDE2IGNvbXBhcmVzIHRoZSBmaXJzdCB0d28gZ3JvdXBzIG9mIHNjaG9vbHMgdG8gcmVjZWl2ZSBkZXdvcm1pbmcgKGFzIHRyZWF0bWVudCBncm91cCkgdG8gZ3JvdXAgMyAoY29udHJvbCkuICAKIE91ciB3b3JtIGludGVuc2l0eSBhZGp1c3RtZW50IGlzIGNhbGN1bGF0ZWQgYnkgY29tcGFyaW5nIGJhc2VsaW5lIGludGVuc2l0eSBvZiBpbmZlY3Rpb24gaW4gZ3JvdXAgMSBzY2hvb2xzIHdpdGggYmFzZWxpbmUgaW50ZW5zaXR5IG9mIGluZmVjdGlvbiBpbiB0aGUgYXJlYXMgd2hlcmUgb3VyIGNoYXJpdGllcyB3b3JrLiAgCiBUaGlzIGFkanVzdG1lbnQgYWNjb3VudHMgZm9yIGdyb3VwIDIgaGF2aW5nIGEgc2lnbmlmaWNhbnRseSBoaWdoZXIgYmFzZWxpbmUgaW50ZW5zaXR5IG9mIGluZmVjdGlvbiB0aGFuIGdyb3VwIDEsIGxpa2VseSBkdWUgdG8gZmxvb2RpbmcgZnJvbSBhbiB1bnVzdWFsbHkgc3Ryb25nIEVsIE5pw7FvIGV2ZW50LiAgIAogVGhlIGF2ZXJhZ2Ugb2YgYmFzZWxpbmUgd29ybSBpbnRlbnNpdHkgaW4gZ3JvdXBzIDEgYW5kIDIgd2FzIH40NSUgaGlnaGVyIHRoYW4gaW4gZ3JvdXAgMSBvbmx5IChiYXNlZCBvbiBkYXRhIHdlIGRvIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gc2hhcmUpLiBUYWtpbmcgdGhlIG9kZHMgcmF0aW8gaW1wbGllcyBhbiBhZGp1c3RtZW50IG9mIH42NSUuICAgCiAoTGFzdCB1cGRhdGVkIFNlcHRlbWJlciAyMDE4IHwgTGluayB0byBCYWlyZCBldCBhbC4gMjAxNjogaHR0cHM6Ly9kb2kub3JnLzEwLjEwOTMvcWplL3FqdzAyMiB8IExpbmsgdG8gTWlndWVsIGFuZCBLcmVtZXIgMjAwNDogaHR0cDovL3d3dy5qc3Rvci5vcmcvc3RhYmxlLzM1OTg4NTMpIFN1Z2dlc3RlZCB2YWx1ZTo2NSUuICBNb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xcHlHcFZZY2VybFVTT2JkYUl6N182VG12MUQ4TzBMNElHUXgxSHR6VFZiay9lZGl0CgpbXjddOlRoaXMgaXMgYSByZWFsbHkgY29tcGxpY2F0ZWQgaW5wdXQuIEknbSBnb2luZyB3aXRoIGEgdmFsdWUgb2YgNzUlIGZvciBub3cgc2luY2UgaXQgc2VlbXMgbGlrZSBhIGxvdCBvZiBkZXdvcm1pbmcgcHJvZ3JhbXMgYXJlIGluIHRoZWlyIGluZmFuY3kgYW5kIGhlbmNlIHdpbGwgYmUgcHJvdmlkaW5nIGVhcmx5IHllYXJzIG9mIHRyZWF0bWVudHMgdG8gdGFyZ2V0ZWQgY2hpbGRyZW4sIGJ1dCBJIHRoaW5rIHRoYXQgbXkgYmVzdCBndWVzcyB3b3VsZCB2YXJ5IGJldHdlZW4gNjAtMTAwJSBkZXBlbmRpbmcgb24gdGhlIGNoYXJpdHkgaWYgSSB3ZXJlIGp1c3QgdGhpbmtpbmcgb24gdGhlIG1hcmdpbi4gKEluIHBhcnRpY3VsYXIsIFNDSSBjbG9zZXIgdG8gNjAlLCBEdFdJIGNsb3NlciB0byAxMDAlLikgUmlnaHQgbm93IHRoZXJlIGlzbid0IGEgZ3JlYXQgd2F5IHRvIGNoYW5nZSB0aGlzIGlucHV0IGZvciBlYWNoIGNoYXJpdHksIHNvIEknbSB0YWtpbmcgc29tZXRoaW5nIHRvd2FyZCB0aGUgbG93ZXIgZW5kIG9mIHRoZSByYW5nZSBmb3IgYWxsIGNoYXJpdGllcy4gIAogSSB0aGluayBpbiB0aGUgbG9uZy1ydW4gd2Ugc2hvdWxkIGRvIGEgYmV0dGVyIGpvYiBhbnN3ZXJpbmcgdGhlIHF1ZXN0aW9uLCAiSG93IG1hbnkgeWVhcnMgb2YgZGV3b3JtaW5nIHRyZWF0bWVudCBoYXZlIGNoaWxkcmVuIGFscmVhZHkgcmVjZWl2ZWQgb24gYXZlcmFnZSBpbiBwbGFjZXMgd2hlcmUgb3VyIGNoYXJpdGllcyB3b3VsZCBzcGVuZCBtYXJnaW5hbCBmdW5kcz8iIFRoaXMgd291bGQgaW52b2x2ZSBmaWd1cmluZyBvdXQgd2hldGhlciBMRiBwcm9ncmFtcyBoYWQgYmVlbiBvcGVyYXRpbmcsIHdoZXRoZXIgcHJlLXNjaG9vbC1hZ2VkIGtpZHMgcmVjZWl2ZSBkZXdvcm1pbmcsIGV0Yy4gICAKIEEgbWFqb3IgcmVhc29uIG9uZSBtaWdodCB3YW50IHRvIHVzZSB+NzAtMTAwJTogZm9yIGEgZmV3IGNoYXJpdGllcywgdGhlIGJ1bGsgb2YgdGhlaXIgbWFyZ2luYWwgZnVuZGluZyBzZWVtcyB0byBiZSBnb2luZyB0b3dhcmQgc3RhcnRpbmcgZGV3b3JtaW5nIHByb2dyYW1zIGluIHJlZ2lvbnMgdGhhdCBtYXkgbm90IGhhdmUgcmVjZWl2ZWQgYW55IGRld29ybWluZyBiZWZvcmUuIEluIHRob3NlIGNhc2VzLCBpZiBJIGxvb2sgYXQganVzdCB0aGUgbmV4dCBmZXcgeWVhcnMgb2YgZGV3b3JtaW5nIGltcGFjdCwgSSBwcm9iYWJseSB3b3VsZG4ndCBkaXNjb3VudCBmb3IgeWVhcnMgb2YgdHJlYXRtZW50IHZzLiBCYWlyZCBhdCBhbGwgYmVjYXVzZSB0aGUgYXZlcmFnZSB5ZWFyIG9mIGRld29ybWluZyB0cmVhdG1lbnQgYmVpbmcgcHJvdmlkZWQgd2lsbCBiZSBhIGtpZCdzIH5zZWNvbmQgeWVhciwgc2ltaWxhciB0byB0aGUgZGV3b3JtaW5nIHRyZWF0bWVudCBlZmZlY3QgdGhhdCB3ZSdyZSBvYnNlcnZpbmcgaW4gQmFpcmQuIEhvd2V2ZXIsIHRoaW5raW5nIG1hcmdpbmFsbHkgbGlrZSB0aGlzIGNvbXBsaWNhdGVzIG91ciBDRUE6IHdlJ2xsIG5lZWQgdG8gY2hhbmdlIHRoaXMgZGlzY291bnQgb3ZlciB0aW1lIGFzIGNoYXJpdGllcycgcHJvZ3JhbXMgbWF0dXJlIChhc3N1bWluZyB0aGV5IGNvbnRpbnVlZCB0byBvcGVyYXRlKS4gSSdtIG5vdCBzdXJlIGFib3V0IHRoZSBiZXN0IHBoaWxvc29waGljYWwgYXBwcm9hY2ggdG8gQ0VBcyBoZXJlLCBidXQgYW0gY3VycmVudGx5IHRoaW5raW5nIEknbGwgY2hhbmdlIHRoaXMgZGlzY291bnQgaW4gdGhlIGZ1dHVyZSBhcyBjaGFyaXRpZXMnIHByb2dyYW1zIG1hdHVyZS4gIApJZiB5b3UganVzdCBsb29rIGF0IHRoZSBsb25nIHJ1biBhbmQgYXNzdW1lIHRoYXQgb24gYXZlcmFnZSBjaGFyaXRpZXMgd2lsbCBiZSBwcm92aWRpbmcga2lkcycgfjR0aCB5ZWFyIG9mIGRld29ybWluZyB0cmVhdG1lbnQsIHRoZW4gSSB0aGluayBhIGRpc2NvdW50IGxpa2UgNjUlIGlzIHByb2JhYmx5IG1vcmUgYXBwcm9wcmlhdGUuICAKQSBmZXcgZmFjdG9ycyBJIGNvbnNpZGVyZWQgdGhhdCBwdXNoZWQgaW4gb3Bwb3NpdGUgZGlyZWN0aW9uczoKLSBJIHRoaW5rIHRoYXQgb24gYXZlcmFnZSBvdXIgY2hhcml0aWVzIGFyZSB0cmVhdGluZyBraWRzIHdobyBhcmUgc2xpZ2h0bHkgeW91bmdlciB0aGFuIHdlcmUgdHJlYXRlZCBpbiBNaWd1ZWwgYW5kIEtyZW1lciwgcHVzaGluZyB0aGluZ3Mgc2xpZ2h0bHkgaW4gZmF2b3Igb2Ygb3VyIGNoYXJpdGllcyBzaW5jZSBJIGV4cGVjdCBkZXdvcm1pbmcgZWZmZWN0cyB0byBiZSBsYXJnZXIgYXQgeW91bmdlciBhZ2VzLgotIE9UT0gsIGl0IG1heSBiZSB0aGF0IGluIHNvbWUgY2FzZXMgb3VyIGNoYXJpdGllcyBhcmUgb3BlcmF0aW5nIGluIHBsYWNlcyB3aGVyZSBjaGlsZHJlbiByZWNlaXZlZCBkZXdvcm1pbmcgYXMgcHJlLXNjaG9vbGVycywgd2hpY2ggd291bGQgZGVjcmVhc2UgbWFyZ2luYWwgdmFsdWUgb2YgYWRkaXRpb25hbCB5ZWFycyBvZiB0cmVhdG1lbnQuIFdlIGRvbid0IGhhdmUgZ29vZCBpbmZvcm1hdGlvbiB5ZXQgb24gaG93IGNvbW1vbiB0aGlzIGlzLgotIFRoZSBkZXdvcm1pbmcgY292ZXJhZ2UgcmF0ZXMgaW4gTWlndWVsIGFuZCBLcmVtZXIgd2VyZSBsb3csIHNvIGl0IG1pZ2h0IGJlIGFwcHJvcHJpYXRlIHRvIHRoaW5rIG9mIHRoZSB0cmVhdG1lbnRzIHByb3ZpZGVkIGluIHRoYXQgc3R1ZHkgYXMgcm91Z2hseSBhIGtpZCdzIH4ybmQgYW5kIDNyZCB5ZWFyIG9mIHRyZWF0bWVudCByYXRoZXIgdGhhbiB+M3JkIGFuZCA0dGguIFRoYXQgcHVzaGVzIGluIGZhdm9yIG9mIGRpc2NvdW50aW5nIGNoYXJpdGllcycgaW1wYWN0IG1vcmUuCi0gSW4gdGhlIGxvbmcgcnVuLCBJJ20gbm90IHN1cmUgaG93IG1hbnkgeWVhcnMgb2YgdHJlYXRtZW50IGFuIGF2ZXJhZ2UgY2hpbGQgd2lsbCByZWNlaXZlIHdobyBpcyB0YXJnZXRlZCBieSBvdXIgY2hhcml0aWVzJyBwcm9ncmFtcy4gSXQgZGVwZW5kcyBvbiB0aGUgY29tcG9zaXRpb24gb2YgYWdlcyBpbiBzY2hvb2xzIHdoZXJlIG91ciBjaGFyaXRpZXMgdHJlYXQsIGhvdyBvZnRlbiBraWRzIGRyb3Agb3V0LCBob3cgb2Z0ZW4ga2lkcyBtaXNzIGRld29ybWluZyB0cmVhdG1lbnQgb3ZlciB0aGUgY291cnNlIG9mIHRoZWlyIHRpbWUgaW4gc2Nob29sLCBldGMuIEkgdGhpbmsganVzdCBsb29raW5nIGF0IHRoZSBhdmVyYWdlIGFnZSBvZiBjaGlsZCB0cmVhdGVkIGFuZCBrbm93aW5nIHdoZXRoZXIgdGhlcmUgYXJlIHByZS1zY2hvb2wgdHJlYXRtZW50cyB3b3VsZCBiZSB1c2VmdWwgaGVyZS4gSW4gZ2VuZXJhbCBJIGd1ZXNzZWQgdGhhdCB0aGUgYXZlcmFnZSBraWQgd2lsbCByZWNlaXZlIH44IHllYXJzIG9mIHRyZWF0bWVudCBpbiB0aGUgbG9uZy1ydW4uICAKIEFzIGEgc2Vuc2l0aXZpdHkgY2hlY2sgdG8gYWNjb3VudCBmb3IgdGhlIGFib3ZlLCBJIGVkaXRlZCBKYW1lcydzIG1vZGVsIGZvciB0aGlzIGlucHV0IGhlcmU6IGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL3NwcmVhZHNoZWV0cy9kLzFsTEYyOENPZjkwZWRRRmlwazRaQzdCUFpkLWtLb2o5c05ERHQxb0g4X3ZjL2VkaXQ/dXNwPXNoYXJpbmcgLiBUaGF0IHNoZWV0IGlzIHZlcnkgcm91Z2ggYW5kIG1heSBiZSBkaWZmaWN1bHQgdG8gZm9sbG93LiBJdCBpbmNsdWRlcyBzb21lIGluZm9ybWF0aW9uIG9uIE5hdGFsaWUncyBndWVzc2VzIGFib3V0IHRoZSBhdmVyYWdlIG51bWJlciBvZiB5ZWFycyBvZiBkZXdvcm1pbmcgdGhhdCBraWRzIGhhdmUgcmVjZWl2ZWQgaW4gZWFjaCBjaGFyaXR5J3MgcHJvZ3JhbS4KClteOF06IGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2RvY3VtZW50L2QvMTNUYjNBbklUN3pQZ21LY0d1d0gzNjVnUWo2Y2hXZDAtYmxCbGJ6WGpLcEEvZWRpdD91c3A9c2hhcmluZwoKClteOV06ICJKb3NoOiBJIGJyb2FkbHkgYWdyZWUgd2l0aCBDaHJpcydzIGFyZ3VtZW50IGhlcmUsIHNvIG1vdmluZyB0byAxLjY5LiBOb3RlIHRoYXQgdGhpcyBtYWtlcyBhIH4zMCUgZGlmZmVyZW5jZSB0byB0aGUgYm90dG9tIGxpbmUuICAKIEluIHN1bW1hcnk6IG9uIHRoZSBjb3N0IHNpZGUgb2Ygb3VyIENFQSB3ZSB1c2UgYSBUT1QgZnJhbWV3b3JrLCBidXQgb24gdGhlIGJlbmVmaXRzIHNpZGUgd2UgdXNlIGFuIElUVCBlZmZlY3QuIFRoYXQncyBjb25zZXJ2YXRpdmU7IE1pZ3VlbCBhbmQgS3JlbWVyIG9ubHkgYWNoaWV2ZWQgfjUwLTYwJSBjb3ZlcmFnZSBpbiBhbiBhdmVyYWdlIGRld29ybWluZyByb3VuZC4gSWYgdGhleSdkIGFjaGlldmVkIDEwMCUgY292ZXJhZ2Ugd2Ugc2hvdWxkIGV4cGVjdCB0aGF0IHRoZSBpbXBhY3Qgb2YgdGhlIHByb2dyYW0gd291bGQndmUgYmVlbiBtdWNoIGxhcmdlci4gT25lIHdheSB0byBjb252ZXJ0IElUVCB0byBUT1QgaXMgdG8ganVzdCBkaXZpZGUgYnkgdGhlIGNvdmVyYWdlIHJhdGUgYWNoaWV2ZWQgaW4gdGhlIGV4cGVyaW1lbnQuIFRoaXMgbWV0aG9kIGlzIGltcGVyZmVjdCBiZWNhdXNlIHRoZXJlIHdlcmUgbGlrZWx5IHNwaWxsb3ZlciBlZmZlY3RzIG9mIGRld29ybWluZywgd2hpY2ggc3Vic3RhbnRpYWxseSBjb21wbGljYXRlcyB0aGUgYW5hbHlzaXMuIEkgdGhpbmsgYSBrZXkgcXVlc3Rpb24gZm9yIGhvdyBtdWNoIHRvIHVwZGF0ZSBpcyB3aGF0IHlvdSBleHBlY3QgdGhlIHJlbGF0aXZlIG1hZ25pdHVkZSBvZiBzcGlsbG92ZXIgYmVuZWZpdHMgcGVyIHBlcnNvbiBkZXdvcm1lZCB0byBiZSBpbiBNaWd1ZWwgYW5kIEtyZW1lciBjb21wYXJlZCB0byBvdXIgY2hhcml0aWVzJyBwcm9ncmFtcy4gVGhpcyBpcyBhIGNvbXBsZXggcXVlc3Rpb24sIGJ1dCBJJ2QgZ3Vlc3MgdGhhdCBzcGlsbG92ZXIgYmVuZWZpdHMgd2VyZSBzbGlnaHRseSBsYXJnZXIgaW4gTWlndWVsIGFuZCBLcmVtZXIuIEFzIHdpdGggQ2hyaXMsIHJvdWdoIGVzdGltYXRlcyBvZiBvZmZzZXR0aW5nIGVmZmVjdHMgbGVhZCBtZSB0byB3YW50IHRvIG1ha2UgYSB+NzAlIGFkanVzdG1lbnQgaGVyZS4gKEknZCBkZWNyZWFzZSB0aGlzIGFkanVzdG1lbnQgYnkgfjEwLTIwJSBzaW5jZSBJJ2QgZ3Vlc3MgdGhhdCBzcGlsbG92ZXIgYmVuZWZpdHMgd2VyZSB+MTAtMjAlIGxhcmdlciBpbiBNJkssIGJ1dCB0aGF0J3Mgb2Zmc2V0IGJ5IGEgfjEwLTIwJSBhZGp1c3RtZW50IGZvciBsb3dlciBjb3ZlcmFnZSBpbiB0aGUgYXZlcmFnZSByb3VuZCBvZiB0aGUgZXhwZXJpbWVudC4pICAgCk1vcmUgZGV0YWlscyBiZWxvdy4gIApNb3JlIGRldGFpbGVkIGJhY2tncm91bmQ6Ci0gT3VyIENFQSB1c2VzIGEgdHJlYXRtZW50LW9uLXRoZS10cmVhdGVkIChUT1QpIGZyYW1ld29yayBvbiB0aGUgY29zdCBzaWRlOiBpLmUuLCB3ZSBlc3RpbWF0ZSB0aGUgY29zdCBwZXIgY2hpbGQgYWN0dWFsbHkgZGV3b3JtZWQgYnkgb3VyIHJlY29tbWVuZGVkIGNoYXJpdGllcy4gSG93ZXZlciwgd2UndmUgYmVlbiB1c2luZyBhbiBpbnRlbnRpb24tdG8tdHJlYXQgKElUVCkgZnJhbWV3b3JrIG9uIHRoZSBiZW5lZml0cyBzaWRlOiBXZSBpbXBsaWNpdGx5IGFzc3VtZWQgdGhhdCBNaWd1ZWwgYW5kIEtyZW1lciAyMDA0IGFjaGlldmVkIDEwMCUgY292ZXJhZ2UgKGkuZS4sIHRoZSB0cmVhdG1lbnQgZ3JvdXAgcmVjZWl2ZWQgdGhlIGZ1bGwgYWRkaXRpb25hbCAyLjQxIHllYXJzIG9mIGRld29ybWluZyB0aGF0IHdlcmUgYXNzaWduZWQgdG8gaXQpLCB3aGVuIHRoZSBhY3R1YWwgZGlmZmVyZW5jZSBpbiBjb3ZlcmFnZSBiZXR3ZWVuIHRyZWF0bWVudCBhbmQgY29udHJvbCB3YXMgbXVjaCBzbWFsbGVyLCBtb3JlIGxpa2UgNTAtNjAlLiBbSXQgc2VlbXMgdGhlIGF2ZXJhZ2UgY292ZXJhZ2UgcmF0ZSBmb3IgZWFjaCByb3VuZCB3YXMgcm91Z2hseSBpbiB0aGUgNTAtNjAlIHJhbmdlIGluIHRoZSB0cmVhdG1lbnQgZ3JvdXAgYW5kIH4xJSBpbiB0aGUgY29udHJvbCBncm91cC4gU2VlIFRhYmxlIElJSSwgUGcuIDE3MCwgTWlndWVsIGFuZCBLcmVtZXIgMjAwNC4gTm90ZSB0aGF0IGluIHRoZSB0ZXh0IGl0IHNheXMsICJUYWtlLXVwIHJhdGVzIHdlcmUgYXBwcm94aW1hdGVseSA3NSUgaW4gdGhlIHRyZWF0bWVudCBncm91cCBhbmQgNSUgaW4gdGhlIGNvbnRyb2wgZ3JvdXAuIiAocC4gOCksIGltcGx5aW5nIGEgcmVsYXRpdmUgZGlmZmVyZW5jZSBvZiB+NzAlIGNvdmVyYWdlLiBJdCBzZWVtcyBsaWtlIHRoYXQgd2FzIG1lYW50IHRvIGVzdGltYXRlIHdoYXQgcG9ydGlvbiBvZiB0aGUgdHJlYXRtZW50IGFuZCBjb250cm9sIGdyb3VwcyBldmVyIHJlY2VpdmVkIGFueSB0cmVhdG1lbnQsIHdoaWNoIGlzIGxlc3MgZGlyZWN0bHkgY29tcGFyYWJsZSB0byB0aGUgY292ZXJhZ2UgcmF0ZXMgd2UgZXN0aW1hdGUgZm9yIG91ciBjaGFyaXRpZXMnIHByb2dyYW1zLl0KLSBBIHNpbXBsZSB3YXkgdG8gaW5mbGF0ZSB0aGUgSVRUIGVmZmVjdCB0byBhIFRPVCBlZmZlY3QgaXMgdG8gZGl2aWRlIHRoZSBJVFQgZWZmZWN0IGJ5IHRoZSBkaWZmZXJlbmNlIGluIGNvdmVyYWdlIHJhdGVzIGJldHdlZW4gdHJlYXRtZW50IGFuZCBjb250cm9sLiAKLSBIb3dldmVyLCB0aGVyZSBhcmUgcG90ZW50aWFsIGlzc3VlcyB3aXRoIGRvaW5nIHRoaXM6IGEgbWFqb3Igb25lIGlzIHRoYXQgb3RoZXIgbWVtYmVycyBvZiB0aGUgdHJlYXRtZW50IGdyb3VwIG1heSBoYXZlIHN1YnN0YW50aWFsbHkgYmVuZWZpdHRlZCBmcm9tIHNwaWxsb3ZlcnMgb2YgZGV3b3JtaW5nIHRyZWF0bWVudCAoaS5lLiwgbGVzcyB0cmFuc21pc3Npb24gb2Ygd29ybXMgc2luY2UgbmVhcmJ5IGNoaWxkcmVuIGhhZCBiZWVuIHRyZWF0ZWQpLiBXaGVuIHdlIGVzdGltYXRlIHRoZSB0cmVhdG1lbnQgZWZmZWN0IHVuZGVyIElUVCwgd2UncmUgcGFydGlhbGx5IGNvdW50aW5nIHRoZSBkaXJlY3QgYmVuZWZpdHMgb2YgdHJlYXRtZW50IGJ1dCBhbHNvIGNvdW50aW5nIHNwaWxsb3ZlciBiZW5lZml0cy4gU28gaXQgZXhhZ2dlcmF0ZXMgdGhlIGJlbmVmaXRzIHRvIGp1c3QgZGl2aWRlIGJ5IHRoZSBjb3ZlcmFnZSByYXRlOyB5b3UncmUgYXR0cmlidXRpbmcgYSBiaWdnZXIgZWZmZWN0IGZvciB0aGUgZnVsbCBzYW1wbGUgdGhhbiB3ZSdkIGFjdHVhbGx5IGV4cGVjdCB0byBleGlzdCBpZiBldmVyeW9uZSB3ZXJlIHRyZWF0ZWQuICAKSSB0aGluayB0aGUga2V5IHF1ZXN0aW9uIGZvciBkZWNpZGluZyB3aGV0aGVyIHRvIHNpbXBseSBpbmZsYXRlIHRoZSBJVFQgZWZmZWN0IGlzOiBIb3cgZG8gd2UgZXhwZWN0IHRoZSBtYWduaXR1ZGUgb2Ygc3BpbGxvdmVyIGJlbmVmaXRzIHBlciBwZXJzb24gZGV3b3JtZWQgaW4gTWlndWVsIGFuZCBLcmVtZXIgdG8gY29tcGFyZSB0byB0aGUgbWFnbml0dWRlIG9mIHNwaWxsb3ZlciBiZW5lZml0cyBpbiBjaGFyaXRpZXMnIHByb2dyYW1zPyBJZiB0aGUgc3BpbGxvdmVyIGJlbmVmaXRzIHBlciBwZXJzb24gZGV3b3JtZWQgaW4gTWlndWVsIGFuZCBLcmVtZXIgd2VyZSBlcXVhbCB0byBvciBzbWFsbGVyIHRoYW4gaW4gb3VyIGNoYXJpdGllcycgcHJvZ3JhbXMsIHRoZW4gSSB0aGluayB3ZSB3b3VsZCBub3QgYmUgb3ZlcmVzdGltYXRpbmcgdGhlIGJlbmVmaXRzIG9mIGRld29ybWluZyBieSB1c2luZyB0aGlzIHNpbXBsZSBpbmZsYXRvci4gT3RoZXJ3aXNlLCB3ZSBhcmUuICAKIE15IGN1cnJlbnQgYmVzdCBndWVzcyBpcyB0aGF0IHRoZSBzcGlsbG92ZXIgYmVuZWZpdHMgd2VyZSBwcm9iYWJseSBzb21ld2hhdCBsYXJnZXIgaW4gdGhlIE1pZ3VlbCBhbmQgS3JlbWVyIHN0dWR5IHRoYW4gaW4gb3VyIGNoYXJpdGllcycgcHJvZ3JhbXMuIEJ1dCwgSSBoYXZlIGh1Z2UgdW5jZXJ0YWludHkgYWJvdXQgdGhlIHJlbGF0aXZlIG1hZ25pdHVkZXM7IEknZCBsaWtlbHkgbmVlZCB0byBkbyBtb3JlIHJlc2VhcmNoIGFuZCBmb3JtYWwgbW9kZWxpbmcgdG8gYW5zd2VyIGl0IHdlbGwuICAKIFNldmVyYWwgY29tcGxpY2F0aW9ucyB3aXRoIHRoaW5raW5nIGFib3V0IHRoZSBtYWduaXR1ZGUgb2Ygc3BpbGxvdmVyIGJlbmVmaXRzIGFyZToKYSkgV2UgYWxzbyBleHBlY3QgdGhhdCB0aGUgY29udHJvbCBncm91cCBtYXkgaGF2ZSBiZW5lZml0dGVkIGZyb20gc3BpbGxvdmVycyBmcm9tIHRoZSB0cmVhdG1lbnQgZ3JvdXAuIFRoaXMgd291bGQgbGVhZCB0aGUgaW1wYWN0IG9mIGRld29ybWluZyBhcyBtZWFzdXJlZCBpbiBNJksgcmVsYXRpdmUgdG8gdGhlIHRydWUgY291bnRlcmZhY3R1YWwgb2YgZGV3b3JtaW5nIHRyZWF0bWVudCB0byBiZSB1bmRlcmVzdGltYXRlZC4gQmVjYXVzZSB0aGlzIHdhcyBhIGNsdXN0ZXIgUkNUIGFuZCB3b3JtIHRyYW5zbWlzc2lvbiBpcyBnZW9ncmFwaGljYWxseSBkZXRlcm1pbmVkLCBpdCBzZWVtcyBsaWtlbHkgdGhhdCB0aGUgc3BpbGxvdmVyIGJlbmVmaXRzIGluIGNvbnRyb2wgY2x1c3RlcnMgd2VyZSBzbWFsbGVyIHRoYW4gaW4gdW50cmVhdGVkIGNoaWxkcmVuIGluIHRyZWF0bWVudCBjbHVzdGVycywgYnV0IHN0aWxsIG1heSBoYXZlIGJlZW4gbWVhbmluZ2Z1bC4KYikgQ2hpbGRyZW4gd2hvIGFyZSB0cmVhdGVkIG1heSBhbHNvIGJlbmVmaXQgZnJvbSBzcGlsbG92ZXJzIHRvIHNvbWUgZXh0ZW50OiBpZiBhIGhpZ2hlciBwb3J0aW9uIG9mIG9uZSdzIGNvbW11bml0eSBpcyB0cmVhdGVkLCB0aGVuIHdvcm0gdHJhbnNtaXNzaW9uIG1heSBiZSBtb3JlIGVmZmVjdGl2ZWx5IHJlZHVjZWQsIGxlYWRpbmcgdG8gbG93ZXIgcmVpbmZlY3Rpb24gcmF0ZXMuIFRoaXMga2luZCBvZiBiZW5lZml0IHdvdWxkIGFsc28gb2NjdXIgaW4gY2hhcml0aWVzJyBwcm9ncmFtcy4KYykgVGhlIHJlbGF0aXZlIGltcGFjdCBvZiBzcGlsbG92ZXJzIHNlZW1zIGxpa2UgaXQgd291bGQgZGVwZW5kIHN1YnN0YW50aWFsbHkgb246IDEpIGNvdmVyYWdlIHJhdGVzIG9mIGRld29ybWluZyBwcm9ncmFtcywgMikgYmFzZWxpbmUgaW50ZW5zaXR5IG9mIHdvcm0gaW5mZWN0aW9ucy4gCi0gUmUgY292ZXJhZ2UsIG91ciBjaGFyaXRpZXMgYWltIHRvIHRyZWF0IGV2ZXJ5b25lIGluIHRoZWlyIHRhcmdldCByZWdpb25zIGFuZCBhY2NvcmRpbmcgdG8gb3VyIHJldmlld3Mgb2YgU0NJIGFuZCBEZXdvcm0gdGhlIFdvcmxkIEluaXRpYXRpdmUgbWF5IGFjaGlldmUgY292ZXJhZ2UgcmF0ZXMgb2YgfjgwLTk1JSwgYSBoaWdoZXIgY292ZXJhZ2UgcmF0ZSB0aGFuIHdhcyBhY2hpZXZlZCBpbiBNaWd1ZWwgYW5kIEtyZW1lci4gVGhpcyBtZWFucyB0aGF0IHRoZXJlIGlzIGEgc21hbGxlciB1bnRyZWF0ZWQgcG9ydGlvbiBvZiB0aGUgcG9wdWxhdGlvbiB0aGF0IGNvdWxkIHJlY2VpdmUgc3BpbGxvdmVyIGJlbmVmaXRzLiBPbiB0aGUgb3RoZXIgaGFuZCwgcGVyaGFwcyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gY292ZXJhZ2UgYW5kIHNwaWxsb3ZlcnMgaXMgbm9ubGluZWFyOiBtYXliZSBpZiBuZWFybHkgYWxsIHBlb3BsZSBpbiB0aGUgY29tbXVuaXR5IGFyZSB0cmVhdGVkIHRoZW4gcmVpbmZlY3Rpb24gcmF0ZXMgZHJvcCBieSBhIG5vbmxpbmVhciBhbW91bnQuCi0gUmUgaW50ZW5zaXR5LCBhcyBDaHJpcyBtZW50aW9uZWQsIHBlcmhhcHMgc3BpbGxvdmVyIGVmZmVjdHMgYXJlIGxhcmdlciB3aGVuIHRoZSB3b3JtIGJ1cmRlbiBpcyBlc3BlY2lhbGx5IGJhZCwgaW4gYSBub25saW5lYXIgd2F5LiAoV2UncmUgY3VycmVudGx5IGFkanVzdGluZyBsaW5lYXJseSBmb3Igd29ybSBpbnRlbnNpdHkgaW4gb3VyIENFQS4pIE9UT0gsIEkgY291bGQgc2VlIGFuIGFyZ3VtZW50IHRoYXQgc3BpbGxvdmVycyBhcmUgZXNwZWNpYWxseSBnb29kIGF0IGxvd2VyIGludGVuc2l0eSBsZXZlbHMsIHNpbmNlIG1heWJlIHlvdSBjb3VsZCBnZXQgY2xvc2VyIHRvIGVsaW1pbmF0aW5nIGFueSBpbmZlY3Rpb25zLgpkKSBTbyBmYXIgSSd2ZSBtYWlubHkgYmVlbiB0aGlua2luZyBhYm91dCBzcGlsbG92ZXJzIG9uIHNjaG9vbC1hZ2VkIGNoaWxkcmVuLiBIb3dldmVyLCBvdXIgbW9kZWwgZG9lc24ndCBjb3VudCBhbnkgc3BpbGxvdmVyIGJlbmVmaXRzIHRvIHByZS1zY2hvb2wtYWdlZCBjaGlsZHJlbiBldmVuIHRob3VnaCB0aGV5IG1heSBleGlzdCAodGhvdWdoIGNvdWxkIGFsc28gZGVwZW5kIG9uIHdoZXRoZXIgcHJlLXNjaG9vbC1hZ2VkIGNoaWxkcmVuIGFyZSByZWNlaXZpbmcgdHJlYXRtZW50IGluIGFyZWFzIHdoZXJlIG91ciBjaGFyaXRpZXMgd29yaykuIFRoaXMgaXMgYW5vdGhlciByZWFzb24geW91IG1pZ2h0IGV4cGVjdCB0aGF0IHNwaWxsb3ZlcnMgaW4gY2hhcml0aWVzJyBwcm9ncmFtcyBhcmUgYWN0dWFsbHkgbGFyZ2VyIHRoYW4gdGhlIGFtb3VudCBvZiBzcGlsbG92ZXJzIHRoYXQgd2UncmUgaW5jbHVkaW5nIGluIG91ciBlc3RpbWF0ZSB3aGVuIGluZmxhdGluZyB0aGUgTSZLIGVmZmVjdC4gIAogIEkgbWFkZSBhIHN1cGVyIHJvdWdoIG1vZGVsIHRoYXQgb25lIGNvdWxkIHBsYXkgYXJvdW5kIHdpdGggaGVyZTogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vc3ByZWFkc2hlZXRzL2QvMW9OeWlya3BGQi1IWWJYVk1vcmxvRVpZcE5tOGs0WFRGS1Y5ZWdqWElQQTQvZWRpdD91c3A9c2hhcmluZy4gSSB0aGluayB0aGVyZSBhcmUgcHJvYmFibHkgbWFqb3IgaXNzdWVzIHdpdGggaXQsIHNvIG5vdCBwdXR0aW5nIHdlaWdodCBvbiBpdCwgYnV0IGl0IGRpZG4ndCBtYWtlIGl0IHNlZW0gbGlrZSBvYnZpb3VzbHkgd2Ugc2hvdWxkIGV4cGVjdCBtdWNoIHNtYWxsZXIgc3BpbGxvdmVyIGJlbmVmaXRzIGluIGNoYXJpdGllcycgcHJvZ3JhbXMgdGhhbiBNJks7IG15IGN1cnJlbnQgYmVzdCBndWVzcyB3YXMgbWF5YmUgfjEwJSBsZXNzLiIKClteMTBdOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFOeE42U084R052MUFocEhNeTEtSUd1LXRTdFQ3cHkyOVc4QUZVMHVfYkx3L2VkaXQ/dHM9NTk5YjQ4NDAKCgpbXjExXTogIk91ciBtb2RlbCBhY2NvdW50cyBmb3IgY2hhbmdlcyBpbiB0aGUgbmF0dXJhbCBsb2cgb2YgY29uc3VtcHRpb24uIFRoZSBsb2dhcml0aG1pYyBtb2RlbCBjYXB0dXJlcyB0aGUgaWRlYSB0aGF0IG1vbmV5IGhhcyBkaW1pbmlzaGluZyB2YWx1ZSBhcyB5b3UgZ2V0IG1vcmUgYW5kIG1vcmUgb2YgaXQuICAgCiBGb3IgZXhhbXBsZSwgb3VyIG1vZGVsIGNvbnNpZGVycyBhIDUwJSBpbmNyZWFzZSBpbiBpbmNvbWUgYXMgYSBsaXR0bGUgYmV0dGVyIHRoYW4gNTAlIGFzIGdvb2QgYXMgYW4gMTAwJSBpbmNyZWFzZSBpbiBpbmNvbWUuIiBodHRwczovL3d3dy5naXZld2VsbC5vcmcvaG93LXdlLXdvcmsvb3VyLWNyaXRlcmlhL2Nvc3QtZWZmZWN0aXZlbmVzcy9jb21wYXJpbmctbW9yYWwtd2VpZ2h0cwogCiAKIFteMTJdOiAoYEYyLCA0LCBEMjU5YCk=
    diff --git a/04_givewell_review.md b/04_givewell_review.md index bc945ae..8708b67 100644 --- a/04_givewell_review.md +++ b/04_givewell_review.md @@ -279,7 +279,7 @@ F_{15} = \frac{\sum_{r \in G_{10}} F^{r}_{16} F^{r}_{17}}{\sum_{r} F^{r}_{17}} \tag{17} \end{equation} -- $F^{r}_{16}$: DtW weight for worm intensity by location, adjusted (`F3, 1, X14`) +- $F^{r}_{16}$: DtW weight for worm intensity by location, adjusted (windorinzation) (`F3, 1, X14`) - $F^{r}_{17}$: DtW weight for worm intensity by location, unadjusted (`F3, 1, C14` --> `F3, 10, K26`) @@ -298,7 +298,8 @@ F_{15} = \frac{\sum_{r \in G_{10}} F^{r}_{16} F^{r}_{17}}{\sum_{r} F^{r}_{17}} - $\widetilde{F}^{r}_{16}$: Weight before winzorizing (`F3, 1, U14`) - $F_{18}$: Intensity adjustment to account for S. haem (`F3, 1, K14`) -- $F_{19}$: Average intermediate intensity adjustment across regions and charities (`F3, 1, G50`) - $F^{r}_{21}$: Average Goblal Burden of Decease adjustment across regions and charities (`F3, 1, L50`) +- $F_{19}$: Average intermediate intensity adjustment across regions and charities (`F3, 1, G50`) +- $F^{r}_{21}$: Average Goblal Burden of Decease adjustment across regions and charities (`F3, 1, L50`) - $F_{21}$: Goblal Burden of Decease (GBD) adjustment for DtW in specific region (`F3, 1, L14`) \begin{equation} @@ -334,14 +335,13 @@ F^{r}_{29} = \frac{F_{30}}{F_{31}} - $F^{r}_{28}$: Infection weight (`F3, 4, B:E2`). -- $F^{r}_{29}$: Prevalence rates of each infection by location (`F3, 4, BE:27`). +- $F^{r}_{29}$: Prevalence rates of each infection by location (`F3, 4, B:E27`). - $F^{r}_{30}$: Eggs per gram in [location] and [condition] (`F3, 3, E18`). - $F^{r}_{31}$: Eggs per gram in original study by [condition] (`F3, 3, E4`). - $F^{r}_{32}$: Intensity adjustment from GBD (`F3, 7, F18`). \begin{equation} -F^{r}_{31} = F_{21}\\ F^{r}_{32} = \frac{Q^{dr}_{9}}{Q^{d}_{10}}\\ Q^{dr}_{9} = Q_{11,1}(F^{dr}_{33})^3 + Q_{11,2}(F^{dr}_{33})^2 + Q_{11,3}F^{dr}_{33}\\ F^{r}_{33} = F_{34,1} + F_{34,2}