<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>8958</bug_id>
          
          <creation_ts>2006-05-17 12:11:01 -0700</creation_ts>
          <short_desc>Should be able to have custom implementations for JS methods</short_desc>
          <delta_ts>2006-05-17 14:06:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>42725</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2006-05-17 12:11:01 -0700</bug_when>
    <thetext>...currently we do this by adding an extra object in the prototype chain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42727</commentid>
    <comment_count>1</comment_count>
      <attachid>8368</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2006-05-17 12:16:50 -0700</bug_when>
    <thetext>Created attachment 8368
Add [Custom] keyword and port JSCanvasRenderingContext2D over to it

There are two things I&apos;m unsure about with this patch:

* The custom functions in CanvasRenderingContext2D are vararg functions, and I&apos;ve indicated this by adding /* ... */ as arguments to them. The problem with this is that the length property of the function won&apos;t be correct.

* I don&apos;t like the &quot;custom&quot; type that&apos;s used for properties. Perhaps &quot;object&quot; or &quot;any&quot; is a better choice?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42741</commentid>
    <comment_count>2</comment_count>
      <attachid>8368</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-05-17 13:54:15 -0700</bug_when>
    <thetext>Comment on attachment 8368
Add [Custom] keyword and port JSCanvasRenderingContext2D over to it

r=me</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8368</attachid>
            <date>2006-05-17 12:16:50 -0700</date>
            <delta_ts>2006-05-17 13:54:15 -0700</delta_ts>
            <desc>Add [Custom] keyword and port JSCanvasRenderingContext2D over to it</desc>
            <filename>custom-attributes-and-functions.txt</filename>
            <type>text/plain</type>
            <size>51385</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAxNDQzNCkKKysr
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShhcmJldHNrb3BpYSkKQEAgLTEx
OCw5ICsxMTgsNyBAQCBzdWIgR2V0UGFyZW50Q2xhc3NOYW1lCiBzdWIgR2V0TGVnYWN5SGVhZGVy
SW5jbHVkZXMKIHsKICAgbXkgJGxlZ2FjeVBhcmVudCA9IHNoaWZ0OwotICBpZiAoJGxlZ2FjeVBh
cmVudCBlcSAiSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlIikgewotICAgIHJldHVybiAi
I2luY2x1ZGUgXCJKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaFwiXG5cbiI7Ci0gIH0g
ZWxzaWYgKCRsZWdhY3lQYXJlbnQgZXEgIktKUzo6V2luZG93IikgeworICBpZiAoJGxlZ2FjeVBh
cmVudCBlcSAiS0pTOjpXaW5kb3ciKSB7CiAgICAgICByZXR1cm4gIiNpbmNsdWRlIFwia2pzX3dp
bmRvdy5oXCJcblxuIjsKICAgfSBlbHNpZiAoJGxlZ2FjeVBhcmVudCBlcSAiS0pTOjpET01Ob2Rl
IikgewogICAgICAgcmV0dXJuICIjaW5jbHVkZSBcImtqc19kb21ub2RlLmhcIlxuXG4iOwpAQCAt
MjY2LDYgKzI2NCw5IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgc3RhdGljIEtKUzo6SlNWYWx1ZSogZ2V0Q29uc3RydWN0b3IoS0pTOjpFeGVjU3Rh
dGUqKTtcbiIpCiAgIH0KIAorICBteSAkbnVtQ3VzdG9tRnVuY3Rpb25zID0gMDsKKyAgbXkgJG51
bUN1c3RvbUF0dHJpYnV0ZXMgPSAwOworICAKICAgIyBBdHRyaWJ1dGUgYW5kIGZ1bmN0aW9uIGVu
dW1zCiAgIGlmICgkbnVtQXR0cmlidXRlcyArICRudW1GdW5jdGlvbnMgPiAwKSB7CiAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICBlbnVtIHtcbiIpCkBAIC0yNzgsNiArMjc5LDggQEAgc3Vi
IEdlbmVyYXRlSGVhZGVyCiAgICAgZm9yZWFjaChAeyRkYXRhTm9kZS0+YXR0cmlidXRlc30pIHsK
ICAgICAgIG15ICRhdHRyaWJ1dGUgPSAkXzsKIAorICAgICAgJG51bUN1c3RvbUF0dHJpYnV0ZXMr
KyBpZiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b20i
fTsKKwogICAgICAgJGkrKzsKICAgICAgIGlmKCgoJGkgJSA0KSBlcSAwKSBhbmQgKCRpIG5lIDAp
KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbiAgICAgICAgIik7CkBAIC0zMDcs
NiArMzEwLDggQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICJcbiAgICAgICAgIik7CiAgICAgICB9CiAKKyAgICAgICRudW1DdXN0b21GdW5jdGlvbnMr
KyBpZiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9
OworICAgICAgCiAgICAgICBteSAkdmFsdWUgPSB1Y2ZpcnN0KCRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5uYW1lKSAuICJGdW5jTnVtIjsKICAgICAgICR2YWx1ZSAuPSAiLCAiIGlmICgkaSA8ICRudW1G
dW5jdGlvbnMgLSAxKTsKICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICR2YWx1ZSk7CkBAIC0z
MTcsNiArMzIyLDMyIEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICJcbiAgICB9O1xuIik7CiAgIH0KIAorICBpZiAoJG51bUN1c3RvbUF0dHJpYnV0ZXMgPiAw
KSB7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuICAgIC8vIEN1c3RvbSBhdHRyaWJ1dGVz
XG4iKTsKKyAgICAKKyAgICBmb3JlYWNoKEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSkgeworICAg
ICAgbXkgJGF0dHJpYnV0ZSA9ICRfOworICAgICAgICAgIAorICAgICAgaWYgKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9KSB7CisgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgS0pTOjpKU1ZhbHVlKiAiIC4gJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5uYW1lIC4gIihLSlM6OkV4ZWNTdGF0ZSopIGNvbnN0O1xuIik7CisgICAgICAgIGlm
ICgkYXR0cmlidXRlLT50eXBlICF+IC9ecmVhZG9ubHkvKSB7CisgICAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICB2b2lkIHNldCIgLiB1Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+bmFtZSkgLiAiKEtKUzo6RXhlY1N0YXRlKiwgS0pTOjpKU1ZhbHVlKik7XG4iKTsgICAgICAg
IAorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisgIAorICBpZiAoJG51bUN1c3RvbUZ1
bmN0aW9ucyA+IDApIHsgICAgICAKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4gICAgLy8g
Q3VzdG9tIGZ1bmN0aW9uc1xuIik7CisgICAgZm9yZWFjaChAeyRkYXRhTm9kZS0+ZnVuY3Rpb25z
fSkgeworICAgICAgbXkgJGZ1bmN0aW9uID0gJF87CisgICAgICAgICAgCisgICAgICBpZiAoJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b20ifSkgeworICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIEtKUzo6SlNWYWx1ZSogIiAuICRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5uYW1lIC4gIihLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6TGlzdCYp
O1xuIik7CisgICAgICB9CisgICAgfQorICB9ICAgICAgICAgICAgCisgIAogICBpZiAoISRoYXNQ
YXJlbnQpIHsKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRpbXBsQ2xhc3NOYW1lKiBp
bXBsKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLmdldCgpOyB9XG4iKTsKICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAicHJpdmF0ZTpcbiIpOwpAQCAtMzYwLDYgKzM5MSw3IEBAIHN1YiBHZW5lcmF0
ZUhlYWRlcgogICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIDogS0pTOjpK
U09iamVjdChleGVjLT5sZXhpY2FsSW50ZXJwcmV0ZXIoKS0+YnVpbHRpbk9iamVjdFByb3RvdHlw
ZSgpKSB7IH1cbiIpOwogICAgICAgfQogICB9CisgIAogICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
fTtcblxuIik7CiAgIAogICBwdXNoKEBoZWFkZXJDb250ZW50LCAifVxuXG4iKTsKQEAgLTYxMSw3
ICs2NDMsMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBmb3JlYWNoIG15ICRh
dHRyaWJ1dGUgKEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSkgewogICAgICAgbXkgJG5hbWUgPSAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CiAgICAgICAgIAotICAgICAgaWYgKCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLykgeworICAgICAgaWYgKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9KSB7CisgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc2UgIiAuIHVjZmlyc3QoJG5hbWUpIC4gIkF0
dHJOdW06XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiAk
bmFtZShleGVjKTtcbiIpOworICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50
eXBlID1+IC9Db25zdHJ1Y3RvciQvKSB7CiAgICAgICAgIG15ICRjb25zdHJ1Y3RvclR5cGUgPSAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CiAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4g
cy9Db25zdHJ1Y3RvciQvLzsKIApAQCAtNjUwLDcgKzY4NSwxMSBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRkYXRhTm9kZS0+YXR0
cmlidXRlc30pIHsKICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnR5cGUgIX4gL15yZWFkb25seS8p
IHsKICAgICAgICAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKLSAg
ICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQv
KSB7CisgCisgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkN1c3RvbSJ9KSB7CisgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGNhc2UgIiAuIHVjZmlyc3QoJG5hbWUpIC4gIkF0dHJOdW06IHtcbiIpOworICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc2V0IiAuIHVjZmlyc3QoJG5hbWUpIC4g
IihleGVjLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKICAgICAgICAgICAgICAgbXkgJGNvbnN0
cnVjdG9yVHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKICAgICAgICAgICAgICAg
JGNvbnN0cnVjdG9yVHlwZSA9fiBzL0NvbnN0cnVjdG9yJC8vOwogCkBAIC03MDIsNiArNzQxLDEx
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24g
KEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7ICAgICAgCiAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBjYXNlICR7Y2xhc3NOYW1lfTo6IiAuIHVjZmlyc3QoJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPm5hbWUpIC4gIkZ1bmNOdW06IHtcbiIpOwogICAgICAgCisgICAgICBpZiAoJGZ1bmN0aW9u
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b20ifSkgeworICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PCR7Y2xhc3NOYW1l
fSo+KHRoaXNPYmopLT4iIC4gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgLiAiKGV4ZWMsIGFy
Z3MpO1xuICAgIH1cbiIpOworICAgICAgICBuZXh0OworICAgICAgfQorICAgICAgCiAgICAgICBB
ZGRJbmNsdWRlc0ZvclR5cGUoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUpOwogICAgICAgCiAg
ICAgICBteSAkcGFyYW1JbmRleCA9IDA7CkBAIC0xMDEwLDcgKzEwNTQsNyBAQCBzdWIgTmF0aXZl
VG9KU1ZhbHVlCiAgICAgJGltcGxJbmNsdWRlc3sia2pzX3dpbmRvdy5oIn0gPSAxOwogICAgIHJl
dHVybiAidG9KUyhleGVjLCAkdmFsdWUpIjsKICAgfSBlbHNpZiAoJHR5cGUgZXEgIkRPTU9iamVj
dCIpIHsKLSAgICAkaW1wbEluY2x1ZGVzeyJKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2Uu
aCJ9ID0gMTsKKyAgICAkaW1wbEluY2x1ZGVzeyJKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5o
In0gPSAxOwogICAgIHJldHVybiAidG9KUyhleGVjLCAkdmFsdWUpIjsKICAgfSBlbHNlIHsKICAg
ICAkaW1wbEluY2x1ZGVzeyJKUyR0eXBlLmgifSA9IDE7CkluZGV4OiBiaW5kaW5ncy9qcy9KU0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9qcy9K
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaAkocmV2aXNpb24gMTQ0MzQpCisrKyBiaW5k
aW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaAkoYXJiZXRza29waWEpCkBA
IC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIs
IEluYy4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUg
UGxhY2UgLSBTdWl0ZSAzMzAsCi0gKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSAqLwot
Ci0jaWZuZGVmIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZV9oCi0jZGVmaW5lIEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZV9oCi0KLSNpbmNsdWRlICJranNfYmluZGluZy5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ7Ci0KLSAgICBLSlNfREVGSU5FX1BST1RPVFlQRShKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2VQcm90bykKLQotICAgIGNsYXNzIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZSA6
IHB1YmxpYyBLSlM6OkRPTU9iamVjdCB7Ci0gICAgcHVibGljOgotICAgICAgICBKU0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UoS0pTOjpFeGVjU3RhdGUqLCBQYXNzUmVmUHRyPENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRD4pOwotICAgICAgICB2aXJ0dWFsIH5KU0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UoKTsKLSAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChL
SlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6SWRlbnRpZmllciYsIEtKUzo6UHJvcGVydHlTbG90
Jik7Ci0gICAgICAgIEtKUzo6SlNWYWx1ZSogZ2V0VmFsdWVQcm9wZXJ0eShLSlM6OkV4ZWNTdGF0
ZSosIGludCB0b2tlbikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoS0pTOjpFeGVj
U3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXImLCBLSlM6OkpTVmFsdWUqLCBpbnQgYXR0ciA9
IEtKUzo6Tm9uZSk7Ci0gICAgICAgIHZvaWQgcHV0VmFsdWVQcm9wZXJ0eShLSlM6OkV4ZWNTdGF0
ZSosIGludCB0b2tlbiwgS0pTOjpKU1ZhbHVlKiwgaW50IGF0dHIpOwotICAgICAgICB2aXJ0dWFs
IGNvbnN0IEtKUzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmaW5mbzsg
fQotICAgICAgICBzdGF0aWMgY29uc3QgS0pTOjpDbGFzc0luZm8gaW5mbzsKLSAgICAgICAgZW51
bSB7IFN0cm9rZVN0eWxlLCBGaWxsU3R5bGUgfTsKLSAgICAgICAgZW51bSB7IFNldFN0cm9rZUNv
bG9yLCBTZXRGaWxsQ29sb3IsIFN0cm9rZVJlY3QsIERyYXdJbWFnZSwgRHJhd0ltYWdlRnJvbVJl
Y3QsIFNldFNoYWRvdywgQ3JlYXRlUGF0dGVybiB9OwotICAgICAgICBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7IH0KLSAgICBwcml2
YXRlOgotICAgICAgICBSZWZQdHI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPiBtX2ltcGw7Ci0g
ICAgfTsKLQotICAgIEtKUzo6SlNWYWx1ZSogdG9KUyhLSlM6OkV4ZWNTdGF0ZSosIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRCopOwotCi19Ci0KLSNlbmRpZgpJbmRleDogYmluZGluZ3MvanMvSlND
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9q
cy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCShyZXZpc2lvbiAxNDQzNCkKKysr
IGJpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAJKGFyYmV0c2tv
cGlhKQpAQCAtMSwzNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBD
b21wdXRlciwgSW5jLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAq
Ci0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5
IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNB
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UuaCIKLQotI2luY2x1ZGUgIkNhbnZhc0dyYWRpZW50LmgiCi0jaW5jbHVk
ZSAiQ2FudmFzUGF0dGVybi5oIgotI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5o
IgotI2luY2x1ZGUgIkNhbnZhc1N0eWxlLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgot
I2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVu
dC5oIgotI2luY2x1ZGUgIkpTQ2FudmFzR3JhZGllbnQuaCIKLSNpbmNsdWRlICJKU0NhbnZhc1Bh
dHRlcm4uaCIKLSNpbmNsdWRlICJKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIgotI2luY2x1
ZGUgIkpTSFRNTENhbnZhc0VsZW1lbnQuaCIKLQotI2luY2x1ZGUgImtqc19odG1sLmgiCi0KLSNp
bmNsdWRlICJKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2VUYWJsZS5jcHAiCi0KLXVzaW5n
IG5hbWVzcGFjZSBLSlM7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLyoKLUBiZWdpbiBKU0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2VQcm90b1RhYmxlIDcKLSAgc2V0U3Ryb2tlQ29sb3Ig
ICAgICAgICAgIFdlYkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6U2V0U3Ry
b2tlQ29sb3IgICAgICAgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQotICBzZXRGaWxsQ29s
b3IgICAgICAgICAgICAgV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpT
ZXRGaWxsQ29sb3IgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIHN0cm9r
ZVJlY3QgICAgICAgICAgICAgICBXZWJDb3JlOjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OlN0cm9rZVJlY3QgICAgICAgICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDQKLSAg
ZHJhd0ltYWdlICAgICAgICAgICAgICAgIFdlYkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZTo6RHJhd0ltYWdlICAgICAgICAgICAgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24g
MwotICBkcmF3SW1hZ2VGcm9tUmVjdCAgICAgICAgV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlOjpEcmF3SW1hZ2VGcm9tUmVjdCAgICAgICAgICAgRG9udERlbGV0ZXxGdW5j
dGlvbiAxMAotICBzZXRTaGFkb3cgICAgICAgICAgICAgICAgV2ViQ29yZTo6SlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlOjpTZXRTaGFkb3cgICAgICAgICAgICAgICAgICAgRG9udERlbGV0
ZXxGdW5jdGlvbiAzCi0gIGNyZWF0ZVBhdHRlcm4gICAgICAgICAgICBXZWJDb3JlOjpKU0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OkNyZWF0ZVBhdHRlcm4gICAgICAgICAgICAgICBEb250
RGVsZXRlfEZ1bmN0aW9uIDIKLUBlbmQKLUBiZWdpbiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2VUYWJsZSAyCi0gIHN0cm9rZVN0eWxlICAgICAgICAgICAgICBXZWJDb3JlOjpKU0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OlN0cm9rZVN0eWxlICAgICAgICAgICAgICAgICBEb250
RGVsZXRlCi0gIGZpbGxTdHlsZSAgICAgICAgICAgICAgICBXZWJDb3JlOjpKU0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2U6OkZpbGxTdHlsZSAgICAgICAgICAgICAgICAgICBEb250RGVsZXRl
Ci1AZW5kCi0qLwotCi1LSlNfSU1QTEVNRU5UX1BST1RPRlVOQyhKU0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2VQcm90b0Z1bmMpCi1LSlNfSU1QTEVNRU5UX1BST1RPVFlQRSgiQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZSIsIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZVByb3Rv
LCBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2VQcm90b0Z1bmMpCi0KLUpTVmFsdWUqIEpT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZVByb3RvRnVuYzo6Y2FsbEFzRnVuY3Rpb24oRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgTGlzdCYgYXJncykKLXsKLSAg
ICBpZiAoIXRoaXNPYmotPmluaGVyaXRzKCZKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6
OmluZm8pKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwotCi0g
ICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8SlNDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlKj4odGhpc09iaiktPmltcGwoKTsKLSAgICAKLSAgICBz
d2l0Y2ggKGlkKSB7Ci0gICAgICAgIGNhc2UgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
OjpTZXRTdHJva2VDb2xvcjoKLSAgICAgICAgICAgIC8vIHN0cmluZyBhcmcgPSBuYW1lZCBjb2xv
cgotICAgICAgICAgICAgLy8gbnVtYmVyIGFyZyA9IGdyYXkgY29sb3IKLSAgICAgICAgICAgIC8v
IHN0cmluZyBhcmcsIG51bWJlciBhcmcgPSBuYW1lZCBjb2xvciwgYWxwaGEKLSAgICAgICAgICAg
IC8vIG51bWJlciBhcmcsIG51bWJlciBhcmcgPSBncmF5IGNvbG9yLCBhbHBoYQotICAgICAgICAg
ICAgLy8gNCBhcmdzID0gciwgZywgYiwgYQotICAgICAgICAgICAgLy8gNSBhcmdzID0gYywgbSwg
eSwgaywgYQotICAgICAgICAgICAgc3dpdGNoIChhcmdzLnNpemUoKSkgewotICAgICAgICAgICAg
ICAgIGNhc2UgMToKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3NbMF0tPmlzU3RyaW5nKCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihhcmdzWzBd
LT50b1N0cmluZyhleGVjKSk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGFyZ3NbMF0tPnRvTnVtYmVyKGV4
ZWMpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAy
OgotICAgICAgICAgICAgICAgICAgICBpZiAoYXJnc1swXS0+aXNTdHJpbmcoKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGFyZ3NbMF0tPnRvU3RyaW5n
KGV4ZWMpLCBhcmdzWzFdLT50b051bWJlcihleGVjKSk7Ci0gICAgICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGFyZ3Nb
MF0tPnRvTnVtYmVyKGV4ZWMpLCBhcmdzWzFdLT50b051bWJlcihleGVjKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoYXJnc1swXS0+dG9OdW1iZXIoZXhlYyksIGFy
Z3NbMV0tPnRvTnVtYmVyKGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1syXS0+
dG9OdW1iZXIoZXhlYyksIGFyZ3NbM10tPnRvTnVtYmVyKGV4ZWMpKTsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA1OgotICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihhcmdzWzBdLT50b051bWJlcihleGVjKSwgYXJnc1sx
XS0+dG9OdW1iZXIoZXhlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzJdLT50b051
bWJlcihleGVjKSwgYXJnc1szXS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbNF0tPnRvTnVtYmVyKGV4
ZWMpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJy
b3IpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSlND
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpTZXRGaWxsQ29sb3I6Ci0gICAgICAgICAgICAv
LyBzdHJpbmcgYXJnID0gbmFtZWQgY29sb3IKLSAgICAgICAgICAgIC8vIG51bWJlciBhcmcgPSBn
cmF5IGNvbG9yCi0gICAgICAgICAgICAvLyBzdHJpbmcgYXJnLCBudW1iZXIgYXJnID0gbmFtZWQg
Y29sb3IsIGFscGhhCi0gICAgICAgICAgICAvLyBudW1iZXIgYXJnLCBudW1iZXIgYXJnID0gZ3Jh
eSBjb2xvciwgYWxwaGEKLSAgICAgICAgICAgIC8vIDQgYXJncyA9IHIsIGcsIGIsIGEKLSAgICAg
ICAgICAgIC8vIDUgYXJncyA9IGMsIG0sIHksIGssIGEKLSAgICAgICAgICAgIHN3aXRjaCAoYXJn
cy5zaXplKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChhcmdzWzBdLT5pc1N0cmluZygpKQotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4
dC0+c2V0RmlsbENvbG9yKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpKTsKLSAgICAgICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9y
KGFyZ3NbMF0tPnRvTnVtYmVyKGV4ZWMpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgICAgICAgICBpZiAoYXJnc1swXS0+
aXNTdHJpbmcoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xv
cihhcmdzWzBdLT50b1N0cmluZyhleGVjKSwgYXJnc1sxXS0+dG9OdW1iZXIoZXhlYykpOwotICAg
ICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5z
ZXRGaWxsQ29sb3IoYXJnc1swXS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbMV0tPnRvTnVtYmVyKGV4
ZWMpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA0
OgotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoYXJnc1swXS0+dG9O
dW1iZXIoZXhlYyksIGFyZ3NbMV0tPnRvTnVtYmVyKGV4ZWMpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgYXJnc1syXS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbM10tPnRvTnVtYmVyKGV4ZWMpKTsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA1OgotICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoYXJnc1swXS0+dG9OdW1iZXIo
ZXhlYyksIGFyZ3NbMV0tPnRvTnVtYmVyKGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAg
YXJnc1syXS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbM10tPnRvTnVtYmVyKGV4ZWMpLCBhcmdzWzRd
LT50b051bWJlcihleGVjKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4
ZWMsIFN5bnRheEVycm9yKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6U3Ryb2tlUmVjdDogewot
ICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAgICAgICAgIGlmIChhcmdzLnNpemUo
KSA8PSA0KQotICAgICAgICAgICAgICAgIGNvbnRleHQtPnN0cm9rZVJlY3QoYXJnc1swXS0+dG9O
dW1iZXIoZXhlYyksIGFyZ3NbMV0tPnRvTnVtYmVyKGV4ZWMpLAotICAgICAgICAgICAgICAgICAg
ICBhcmdzWzJdLT50b051bWJlcihleGVjKSwgYXJnc1szXS0+dG9OdW1iZXIoZXhlYyksIGVjKTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zdHJva2VSZWN0KGFy
Z3NbMF0tPnRvTnVtYmVyKGV4ZWMpLCBhcmdzWzFdLT50b051bWJlcihleGVjKSwKLSAgICAgICAg
ICAgICAgICAgICAgYXJnc1syXS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbM10tPnRvTnVtYmVyKGV4
ZWMpLCBhcmdzWzRdLT50b051bWJlcihleGVjKSwgZWMpOwotICAgICAgICAgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpTZXRTaGFkb3c6Ci0gICAgICAg
ICAgICBzd2l0Y2ggKGFyZ3Muc2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAzOgotICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coYXJnc1swXS0+dG9OdW1iZXIoZXhl
YyksIGFyZ3NbMV0tPnRvTnVtYmVyKGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgYXJn
c1syXS0+dG9OdW1iZXIoZXhlYykpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcmdzWzNdLT5pc1N0
cmluZygpKQotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KGFyZ3Nb
MF0tPnRvTnVtYmVyKGV4ZWMpLCBhcmdzWzFdLT50b051bWJlcihleGVjKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhcmdzWzJdLT50b051bWJlcihleGVjKSwgYXJnc1szXS0+dG9TdHJp
bmcoZXhlYykpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5zZXRTaGFkb3coYXJnc1swXS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbMV0t
PnRvTnVtYmVyKGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbMl0tPnRv
TnVtYmVyKGV4ZWMpLCBhcmdzWzNdLT50b051bWJlcihleGVjKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgNToKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGFyZ3NbM10tPmlzU3RyaW5nKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5zZXRTaGFkb3coYXJnc1swXS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbMV0tPnRvTnVtYmVyKGV4
ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbMl0tPnRvTnVtYmVyKGV4ZWMp
LCBhcmdzWzNdLT50b1N0cmluZyhleGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
cmdzWzRdLT50b051bWJlcihleGVjKSk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhhcmdzWzBdLT50b051bWJlcihl
eGVjKSwgYXJnc1sxXS0+dG9OdW1iZXIoZXhlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXJnc1syXS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbM10tPnRvTnVtYmVyKGV4ZWMpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbNF0tPnRvTnVtYmVyKGV4ZWMpKTsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA3OgotICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coYXJnc1swXS0+dG9OdW1iZXIoZXhlYyksIGFy
Z3NbMV0tPnRvTnVtYmVyKGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1syXS0+
dG9OdW1iZXIoZXhlYyksIGFyZ3NbM10tPnRvTnVtYmVyKGV4ZWMpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgYXJnc1s0XS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbNV0tPnRvTnVtYmVyKGV4ZWMp
LAotICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1s2XS0+dG9OdW1iZXIoZXhlYykpOwotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDg6Ci0gICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhhcmdzWzBdLT50b051bWJlcihleGVjKSwg
YXJnc1sxXS0+dG9OdW1iZXIoZXhlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzJd
LT50b051bWJlcihleGVjKSwgYXJnc1szXS0+dG9OdW1iZXIoZXhlYyksCi0gICAgICAgICAgICAg
ICAgICAgICAgICBhcmdzWzRdLT50b051bWJlcihleGVjKSwgYXJnc1s1XS0+dG9OdW1iZXIoZXhl
YyksCi0gICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzZdLT50b051bWJlcihleGVjKSwgYXJn
c1s3XS0+dG9OdW1iZXIoZXhlYykpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJv
cihleGVjLCBTeW50YXhFcnJvcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OkRyYXdJbWFnZTog
ewotICAgICAgICAgICAgLy8gRHJhd0ltYWdlIGhhcyB0aHJlZSB2YXJpYW50czoKLSAgICAgICAg
ICAgIC8vICAgICBkcmF3SW1hZ2UoaW1nLCBkeCwgZHkpCi0gICAgICAgICAgICAvLyAgICAgZHJh
d0ltYWdlKGltZywgZHgsIGR5LCBkdywgZGgpCi0gICAgICAgICAgICAvLyAgICAgZHJhd0ltYWdl
KGltZywgc3gsIHN5LCBzdywgc2gsIGR4LCBkeSwgZHcsIGRoKQotICAgICAgICAgICAgLy8gQ29t
cG9zaXRlIG9wZXJhdGlvbiBpcyBzcGVjaWZpZWQgd2l0aCBnbG9iYWxDb21wb3NpdGVPcGVyYXRp
b24uCi0gICAgICAgICAgICAvLyBUaGUgaW1nIHBhcmFtZXRlciBjYW4gYmUgYSA8aW1nPiBvciA8
Y2FudmFzPiBlbGVtZW50LgotICAgICAgICAgICAgSlNPYmplY3QqIG8gPSBzdGF0aWNfY2FzdDxK
U09iamVjdCo+KGFyZ3NbMF0pOwotICAgICAgICAgICAgaWYgKCFvLT5pc09iamVjdCgpKQotICAg
ICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7Ci0gICAgICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAgICAgICAgaWYgKG8tPmluaGVyaXRzKCZLSlM6
OkpTSFRNTEVsZW1lbnQ6OmltZ19pbmZvKSkgewotICAgICAgICAgICAgICAgIEhUTUxJbWFnZUVs
ZW1lbnQqIGltZ0VsdCA9IHN0YXRpY19jYXN0PEhUTUxJbWFnZUVsZW1lbnQqPihzdGF0aWNfY2Fz
dDxKU0hUTUxFbGVtZW50Kj4oYXJnc1swXSktPmltcGwoKSk7Ci0gICAgICAgICAgICAgICAgc3dp
dGNoIChhcmdzLnNpemUoKSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIDM6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1nRWx0LCBhcmdzWzFdLT50b051
bWJlcihleGVjKSwgYXJnc1syXS0+dG9OdW1iZXIoZXhlYykpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNToKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWdFbHQsIGFyZ3NbMV0tPnRvTnVtYmVyKGV4
ZWMpLCBhcmdzWzJdLT50b051bWJlcihleGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhcmdzWzNdLT50b051bWJlcihleGVjKSwgYXJnc1s0XS0+dG9OdW1iZXIoZXhlYyksIGVjKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA5Ogot
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltZ0VsdCwgYXJnc1sx
XS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbMl0tPnRvTnVtYmVyKGV4ZWMpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFyZ3NbM10tPnRvTnVtYmVyKGV4ZWMpLCBhcmdzWzRdLT50b051bWJl
cihleGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzVdLT50b051bWJlcihl
eGVjKSwgYXJnc1s2XS0+dG9OdW1iZXIoZXhlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXJnc1s3XS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbOF0tPnRvTnVtYmVyKGV4ZWMpLCBlYyk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhF
cnJvcik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgaWYgKG8tPmluaGVyaXRzKCZKU0hUTUxDYW52YXNFbGVtZW50
OjppbmZvKSkgewotICAgICAgICAgICAgICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMgPSBz
dGF0aWNfY2FzdDxIVE1MQ2FudmFzRWxlbWVudCo+KHN0YXRpY19jYXN0PEpTSFRNTEVsZW1lbnQq
PihhcmdzWzBdKS0+aW1wbCgpKTsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKGFyZ3Muc2l6ZSgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQtPmRyYXdJbWFnZShjYW52YXMsIGFyZ3NbMV0tPnRvTnVtYmVyKGV4ZWMpLCBhcmdz
WzJdLT50b051bWJlcihleGVjKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSA1OgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4
dC0+ZHJhd0ltYWdlKGNhbnZhcywgYXJnc1sxXS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbMl0tPnRv
TnVtYmVyKGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbM10tPnRvTnVt
YmVyKGV4ZWMpLCBhcmdzWzRdLT50b051bWJlcihleGVjKSwgZWMpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDk6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoY2FudmFzLCBhcmdzWzFdLT50b051bWJlcihleGVj
KSwgYXJnc1syXS0+dG9OdW1iZXIoZXhlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXJnc1szXS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbNF0tPnRvTnVtYmVyKGV4ZWMpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbNV0tPnRvTnVtYmVyKGV4ZWMpLCBhcmdzWzZdLT50
b051bWJlcihleGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzddLT50b051
bWJlcihleGVjKSwgYXJnc1s4XS0+dG9OdW1iZXIoZXhlYyksIGVjKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVycm9yKTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOwotICAgICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBKU0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OkRyYXdJbWFnZUZyb21SZWN0OiB7Ci0gICAgICAgICAgICBKU09iamVjdCog
byA9IHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4oYXJnc1swXSk7Ci0gICAgICAgICAgICBpZiAoIW8t
PmlzT2JqZWN0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlw
ZUVycm9yKTsKLSAgICAgICAgICAgIGlmICghby0+aW5oZXJpdHMoJktKUzo6SlNIVE1MRWxlbWVu
dDo6aW1nX2luZm8pKQotICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5
cGVFcnJvcik7Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VGcm9tUmVjdChzdGF0aWNf
Y2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4oc3RhdGljX2Nhc3Q8SlNIVE1MRWxlbWVudCo+KGFyZ3Nb
MF0pLT5pbXBsKCkpLAotICAgICAgICAgICAgICAgIGFyZ3NbMV0tPnRvTnVtYmVyKGV4ZWMpLCBh
cmdzWzJdLT50b051bWJlcihleGVjKSwKLSAgICAgICAgICAgICAgICBhcmdzWzNdLT50b051bWJl
cihleGVjKSwgYXJnc1s0XS0+dG9OdW1iZXIoZXhlYyksCi0gICAgICAgICAgICAgICAgYXJnc1s1
XS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbNl0tPnRvTnVtYmVyKGV4ZWMpLAotICAgICAgICAgICAg
ICAgIGFyZ3NbN10tPnRvTnVtYmVyKGV4ZWMpLCBhcmdzWzhdLT50b051bWJlcihleGVjKSwKLSAg
ICAgICAgICAgICAgICBhcmdzWzldLT50b1N0cmluZyhleGVjKSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6Q3JlYXRlUGF0dGVybjoKLSAgICAgICAgICAgIEpTT2JqZWN0KiBvID0gc3RhdGljX2Nhc3Q8
SlNPYmplY3QqPihhcmdzWzBdKTsKLSAgICAgICAgICAgIGlmICghby0+aXNPYmplY3QoKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwotICAgICAg
ICAgICAgaWYgKG8tPmluaGVyaXRzKCZLSlM6OkpTSFRNTEVsZW1lbnQ6OmltZ19pbmZvKSkgewot
ICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgICAgICAgICAgICAgSlNWYWx1
ZSogcGF0dGVybiA9IHRvSlMoZXhlYywKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+Y3Jl
YXRlUGF0dGVybihzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4oc3RhdGljX2Nhc3Q8SlNI
VE1MRWxlbWVudCo+KGFyZ3NbMF0pLT5pbXBsKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAg
YXJnc1sxXS0+dG9TdHJpbmcoZXhlYyksIGVjKS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgc2V0
RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gcGF0dGVybjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChvLT5pbmhlcml0cygmSlNIVE1MQ2FudmFz
RWxlbWVudDo6aW5mbykpIHsKLSAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAg
ICAgICAgICAgICAgIEpTVmFsdWUqIHBhdHRlcm4gPSB0b0pTKGV4ZWMsCi0gICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmNyZWF0ZVBhdHRlcm4oc3RhdGljX2Nhc3Q8SFRNTENhbnZhc0VsZW1l
bnQqPihzdGF0aWNfY2FzdDxKU0hUTUxFbGVtZW50Kj4oYXJnc1swXSktPmltcGwoKSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICBhcmdzWzFdLT50b1N0cmluZyhleGVjKSwgZWMpLmdldCgpKTsK
LSAgICAgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBwYXR0ZXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKLSAgICAgICAgICAgIHJldHVybiAwOwot
ICAgIH0KLQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi1jb25zdCBDbGFzc0luZm8g
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjppbmZvID0geyAiQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZSIsIDAsICZKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2VUYWJsZSwg
MCB9OwotCi1ib29sIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Z2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UsIERPTU9iamVjdD4KLSAgICAgICAgKGV4ZWMsICZK
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2VUYWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBz
bG90KTsKLX0KLQotc3RhdGljIEpTVmFsdWUqIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBDYW52YXNT
dHlsZSogc3R5bGUpCi17Ci0gICAgaWYgKHN0eWxlLT5ncmFkaWVudCgpKQotICAgICAgICByZXR1
cm4gdG9KUyhleGVjLCBzdHlsZS0+Z3JhZGllbnQoKSk7Ci0gICAgaWYgKHN0eWxlLT5wYXR0ZXJu
KCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIHN0eWxlLT5wYXR0ZXJuKCkpOwotICAgIHJl
dHVybiBqc1N0cmluZyhzdHlsZS0+Y29sb3IoKSk7Ci19Ci0KLXN0YXRpYyBQYXNzUmVmUHRyPENh
bnZhc1N0eWxlPiB0b0hUTUxDYW52YXNTdHlsZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUqIHZh
bHVlKQotewotICAgIGlmICh2YWx1ZS0+aXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIG5ldyBD
YW52YXNTdHlsZSh2YWx1ZS0+dG9TdHJpbmcoZXhlYykpOwotICAgIGlmICghdmFsdWUtPmlzT2Jq
ZWN0KCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBzdGF0aWNf
Y2FzdDxKU09iamVjdCo+KHZhbHVlKTsKLSAgICBpZiAob2JqZWN0LT5pbmhlcml0cygmSlNDYW52
YXNHcmFkaWVudDo6aW5mbykpCi0gICAgICAgIHJldHVybiBuZXcgQ2FudmFzU3R5bGUoc3RhdGlj
X2Nhc3Q8SlNDYW52YXNHcmFkaWVudCo+KG9iamVjdCktPmltcGwoKSk7Ci0gICAgaWYgKG9iamVj
dC0+aW5oZXJpdHMoJkpTQ2FudmFzUGF0dGVybjo6aW5mbykpCi0gICAgICAgIHJldHVybiBuZXcg
Q2FudmFzU3R5bGUoc3RhdGljX2Nhc3Q8SlNDYW52YXNQYXR0ZXJuKj4ob2JqZWN0KS0+aW1wbCgp
KTsKLSAgICByZXR1cm4gMDsKLX0KLQotSlNWYWx1ZSogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlOjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgaW50IHRva2VuKSBjb25z
dAotewotICAgIHN3aXRjaCAodG9rZW4pIHsKLSAgICAgICAgY2FzZSBTdHJva2VTdHlsZToKLSAg
ICAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIG1faW1wbC0+c3Ryb2tlU3R5bGUoKSk7ICAgICAg
ICAKLSAgICAgICAgY2FzZSBGaWxsU3R5bGU6Ci0gICAgICAgICAgICByZXR1cm4gdG9KUyhleGVj
LCBtX2ltcGwtPmZpbGxTdHlsZSgpKTsgICAgICAgIAotICAgIH0KLSAgICByZXR1cm4gMDsKLX0K
LQotdm9pZCBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnB1dChFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSogdmFsdWUsIGludCBh
dHRyKQotewotICAgIGxvb2t1cFB1dDxKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UsIERP
TU9iamVjdD4oZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0ciwgJkpTQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZVRhYmxlLCB0aGlzKTsKLX0KLQotdm9pZCBKU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2U6OnB1dFZhbHVlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBpbnQgdG9r
ZW4sIEpTVmFsdWUqIHZhbHVlLCBpbnQgLyphdHRyKi8pCi17Ci0gICAgc3dpdGNoICh0b2tlbikg
ewotICAgICAgICBjYXNlIFN0cm9rZVN0eWxlOgotICAgICAgICAgICAgaW1wbCgpLT5zZXRTdHJv
a2VTdHlsZSh0b0hUTUxDYW52YXNTdHlsZShleGVjLCB2YWx1ZSkpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgRmlsbFN0eWxlOgotICAgICAgICAgICAgaW1wbCgpLT5zZXRGaWxs
U3R5bGUodG9IVE1MQ2FudmFzU3R5bGUoZXhlYywgdmFsdWUpKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgIH0KLX0KLQotSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpKU0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UoRXhlY1N0YXRlKiwgUGFzc1JlZlB0cjxDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ+IGltcGwpCi0gICAgOiBtX2ltcGwoaW1wbCkKLXsKLX0KLQotSlNDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp+SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlKCkK
LXsKLSAgICBTY3JpcHRJbnRlcnByZXRlcjo6Zm9yZ2V0RE9NT2JqZWN0KG1faW1wbC5nZXQoKSk7
Ci19Ci0KLUpTVmFsdWUqIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQqIGNvbnRleHQpCi17Ci0gICAgcmV0dXJuIGNhY2hlRE9NT2JqZWN0PENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRCwgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KGV4ZWMsIGNvbnRleHQp
OwotfQotCi19CkluZGV4OiBiaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgYmluZGluZ3MvanMvSlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMyNyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMz
MCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICovCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpbmNsdWRlICJDYW52YXNHcmFkaWVudC5oIgorI2luY2x1ZGUgIkNhbnZhc1BhdHRl
cm4uaCIKKyNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCIKKyNpbmNsdWRlICJD
YW52YXNTdHlsZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJIVE1M
Q2FudmFzRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJKU0NhbnZhc0dyYWRpZW50LmgiCisjaW5jbHVkZSAiSlNDYW52YXNQYXR0ZXJuLmgiCisjaW5j
bHVkZSAiSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCIKKyNpbmNsdWRlICJKU0hUTUxDYW52
YXNFbGVtZW50LmgiCisjaW5jbHVkZSAia2pzX2h0bWwuaCIKKwordXNpbmcgbmFtZXNwYWNlIEtK
UzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgSlNWYWx1ZSogdG9KUyhFeGVjU3Rh
dGUqIGV4ZWMsIENhbnZhc1N0eWxlKiBzdHlsZSkKK3sKKyAgICBpZiAoc3R5bGUtPmdyYWRpZW50
KCkpCisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIHN0eWxlLT5ncmFkaWVudCgpKTsKKyAgICBp
ZiAoc3R5bGUtPnBhdHRlcm4oKSkKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgc3R5bGUtPnBh
dHRlcm4oKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nKHN0eWxlLT5jb2xvcigpKTsKK30KKworc3Rh
dGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IHRvSFRNTENhbnZhc1N0eWxlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSogdmFsdWUpCit7CisgICAgaWYgKHZhbHVlLT5pc1N0cmluZygpKQorICAg
ICAgICByZXR1cm4gbmV3IENhbnZhc1N0eWxlKHZhbHVlLT50b1N0cmluZyhleGVjKSk7CisgICAg
aWYgKCF2YWx1ZS0+aXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgSlNPYmplY3Qq
IG9iamVjdCA9IHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4odmFsdWUpOworICAgIGlmIChvYmplY3Qt
PmluaGVyaXRzKCZKU0NhbnZhc0dyYWRpZW50OjppbmZvKSkKKyAgICAgICAgcmV0dXJuIG5ldyBD
YW52YXNTdHlsZShzdGF0aWNfY2FzdDxKU0NhbnZhc0dyYWRpZW50Kj4ob2JqZWN0KS0+aW1wbCgp
KTsKKyAgICBpZiAob2JqZWN0LT5pbmhlcml0cygmSlNDYW52YXNQYXR0ZXJuOjppbmZvKSkKKyAg
ICAgICAgcmV0dXJuIG5ldyBDYW52YXNTdHlsZShzdGF0aWNfY2FzdDxKU0NhbnZhc1BhdHRlcm4q
PihvYmplY3QpLT5pbXBsKCkpOworICAgIHJldHVybiAwOworfQorCitKU1ZhbHVlKiBKU0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlU3R5bGUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAor
eworICAgIHJldHVybiB0b0pTKGV4ZWMsIGltcGwoKS0+c3Ryb2tlU3R5bGUoKSk7ICAgICAgICAK
K30KKwordm9pZCBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlU3R5bGUoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpbXBsKCktPnNldFN0cm9rZVN0
eWxlKHRvSFRNTENhbnZhc1N0eWxlKGV4ZWMsIHZhbHVlKSk7Cit9CisKK0pTVmFsdWUqIEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsU3R5bGUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAor
eworICAgIHJldHVybiB0b0pTKGV4ZWMsIGltcGwoKS0+ZmlsbFN0eWxlKCkpOworfQorCit2b2lk
IEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsU3R5bGUoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpbXBsKCktPnNldEZpbGxTdHlsZSh0b0hUTUxDYW52
YXNTdHlsZShleGVjLCB2YWx1ZSkpOworfQorCitKU1ZhbHVlKiBKU0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6c2V0RmlsbENvbG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJncykK
K3sKKyAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRleHQgPSBpbXBsKCk7CisKKyAg
ICAvLyBzdHJpbmcgYXJnID0gbmFtZWQgY29sb3IKKyAgICAvLyBudW1iZXIgYXJnID0gZ3JheSBj
b2xvcgorICAgIC8vIHN0cmluZyBhcmcsIG51bWJlciBhcmcgPSBuYW1lZCBjb2xvciwgYWxwaGEK
KyAgICAvLyBudW1iZXIgYXJnLCBudW1iZXIgYXJnID0gZ3JheSBjb2xvciwgYWxwaGEKKyAgICAv
LyA0IGFyZ3MgPSByLCBnLCBiLCBhCisgICAgLy8gNSBhcmdzID0gYywgbSwgeSwgaywgYQorICAg
IHN3aXRjaCAoYXJncy5zaXplKCkpIHsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgaWYg
KGFyZ3NbMF0tPmlzU3RyaW5nKCkpCisgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbENv
bG9yKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoYXJnc1swXS0+dG9OdW1iZXIoZXhlYykpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGlmIChhcmdz
WzBdLT5pc1N0cmluZygpKQorICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihh
cmdzWzBdLT50b1N0cmluZyhleGVjKSwgYXJnc1sxXS0+dG9OdW1iZXIoZXhlYykpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihhcmdzWzBd
LT50b051bWJlcihleGVjKSwgYXJnc1sxXS0+dG9OdW1iZXIoZXhlYykpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xv
cihhcmdzWzBdLT50b051bWJlcihleGVjKSwgYXJnc1sxXS0+dG9OdW1iZXIoZXhlYyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1syXS0+dG9OdW1iZXIoZXhlYyksIGFy
Z3NbM10tPnRvTnVtYmVyKGV4ZWMpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IDU6CisgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoYXJnc1swXS0+dG9OdW1iZXIo
ZXhlYyksIGFyZ3NbMV0tPnRvTnVtYmVyKGV4ZWMpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFyZ3NbMl0tPnRvTnVtYmVyKGV4ZWMpLCBhcmdzWzNdLT50b051bWJlcihleGVj
KSwgYXJnc1s0XS0+dG9OdW1iZXIoZXhlYykpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhFcnJv
cik7CisgICAgfQorICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfSAgICAKKworSlNWYWx1ZSog
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZUNvbG9yKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgTGlzdCYgYXJncykKK3sgCisgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBj
b250ZXh0ID0gaW1wbCgpOworCisgICAgLy8gc3RyaW5nIGFyZyA9IG5hbWVkIGNvbG9yCisgICAg
Ly8gbnVtYmVyIGFyZyA9IGdyYXkgY29sb3IKKyAgICAvLyBzdHJpbmcgYXJnLCBudW1iZXIgYXJn
ID0gbmFtZWQgY29sb3IsIGFscGhhCisgICAgLy8gbnVtYmVyIGFyZywgbnVtYmVyIGFyZyA9IGdy
YXkgY29sb3IsIGFscGhhCisgICAgLy8gNCBhcmdzID0gciwgZywgYiwgYQorICAgIC8vIDUgYXJn
cyA9IGMsIG0sIHksIGssIGEKKyAgICBzd2l0Y2ggKGFyZ3Muc2l6ZSgpKSB7CisgICAgICAgIGNh
c2UgMToKKyAgICAgICAgICAgIGlmIChhcmdzWzBdLT5pc1N0cmluZygpKQorICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihh
cmdzWzBdLT50b051bWJlcihleGVjKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSAyOgorICAgICAgICAgICAgaWYgKGFyZ3NbMF0tPmlzU3RyaW5nKCkpCisgICAgICAgICAgICAg
ICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoYXJnc1swXS0+dG9TdHJpbmcoZXhlYyksIGFyZ3Nb
MV0tPnRvTnVtYmVyKGV4ZWMpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBj
b250ZXh0LT5zZXRTdHJva2VDb2xvcihhcmdzWzBdLT50b051bWJlcihleGVjKSwgYXJnc1sxXS0+
dG9OdW1iZXIoZXhlYykpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgNDoKKyAg
ICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGFyZ3NbMF0tPnRvTnVtYmVyKGV4ZWMp
LCBhcmdzWzFdLT50b051bWJlcihleGVjKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFyZ3NbMl0tPnRvTnVtYmVyKGV4ZWMpLCBhcmdzWzNdLT50b051bWJlcihleGVjKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA1OgorICAgICAgICAgICAgY29udGV4
dC0+c2V0U3Ryb2tlQ29sb3IoYXJnc1swXS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbMV0tPnRvTnVt
YmVyKGV4ZWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1syXS0+
dG9OdW1iZXIoZXhlYyksIGFyZ3NbM10tPnRvTnVtYmVyKGV4ZWMpLCBhcmdzWzRdLT50b051bWJl
cihleGVjKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVycm9yKTsKKyAgICB9CisgICAgCisg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUqIEpTQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpzdHJva2VSZWN0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJncykK
K3sgCisgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBjb250ZXh0ID0gaW1wbCgpOyAgICAK
KyAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIAorICAgIGlmIChhcmdzLnNpemUoKSA8PSA0KQor
ICAgICAgICBjb250ZXh0LT5zdHJva2VSZWN0KGFyZ3NbMF0tPnRvTnVtYmVyKGV4ZWMpLCBhcmdz
WzFdLT50b051bWJlcihleGVjKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzJd
LT50b051bWJlcihleGVjKSwgYXJnc1szXS0+dG9OdW1iZXIoZXhlYyksIGVjKTsKKyAgICBlbHNl
CisgICAgICAgIGNvbnRleHQtPnN0cm9rZVJlY3QoYXJnc1swXS0+dG9OdW1iZXIoZXhlYyksIGFy
Z3NbMV0tPnRvTnVtYmVyKGV4ZWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Nb
Ml0tPnRvTnVtYmVyKGV4ZWMpLCBhcmdzWzNdLT50b051bWJlcihleGVjKSwgYXJnc1s0XS0+dG9O
dW1iZXIoZXhlYyksIGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgIAor
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOyAgICAKK30KKworSlNWYWx1ZSogSlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IExpc3QmIGFy
Z3MpCit7IAorICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCogY29udGV4dCA9IGltcGwoKTsK
KworICAgIC8vIERyYXdJbWFnZSBoYXMgdGhyZWUgdmFyaWFudHM6CisgICAgLy8gICAgIGRyYXdJ
bWFnZShpbWcsIGR4LCBkeSkKKyAgICAvLyAgICAgZHJhd0ltYWdlKGltZywgZHgsIGR5LCBkdywg
ZGgpCisgICAgLy8gICAgIGRyYXdJbWFnZShpbWcsIHN4LCBzeSwgc3csIHNoLCBkeCwgZHksIGR3
LCBkaCkKKyAgICAvLyBDb21wb3NpdGUgb3BlcmF0aW9uIGlzIHNwZWNpZmllZCB3aXRoIGdsb2Jh
bENvbXBvc2l0ZU9wZXJhdGlvbi4KKyAgICAvLyBUaGUgaW1nIHBhcmFtZXRlciBjYW4gYmUgYSA8
aW1nPiBvciA8Y2FudmFzPiBlbGVtZW50LgorICAgIEpTT2JqZWN0KiBvID0gc3RhdGljX2Nhc3Q8
SlNPYmplY3QqPihhcmdzWzBdKTsKKyAgICBpZiAoIW8tPmlzT2JqZWN0KCkpCisgICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7CisgICAgRXhjZXB0aW9uQ29kZSBlYzsK
KyAgICBpZiAoby0+aW5oZXJpdHMoJktKUzo6SlNIVE1MRWxlbWVudDo6aW1nX2luZm8pKSB7Cisg
ICAgICAgIEhUTUxJbWFnZUVsZW1lbnQqIGltZ0VsdCA9IHN0YXRpY19jYXN0PEhUTUxJbWFnZUVs
ZW1lbnQqPihzdGF0aWNfY2FzdDxKU0hUTUxFbGVtZW50Kj4oYXJnc1swXSktPmltcGwoKSk7Cisg
ICAgICAgIHN3aXRjaCAoYXJncy5zaXplKCkpIHsKKyAgICAgICAgICAgIGNhc2UgMzoKKyAgICAg
ICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1nRWx0LCBhcmdzWzFdLT50b051bWJlcihl
eGVjKSwgYXJnc1syXS0+dG9OdW1iZXIoZXhlYykpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSA1OgorICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShp
bWdFbHQsIGFyZ3NbMV0tPnRvTnVtYmVyKGV4ZWMpLCBhcmdzWzJdLT50b051bWJlcihleGVjKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1szXS0+dG9OdW1iZXIoZXhl
YyksIGFyZ3NbNF0tPnRvTnVtYmVyKGV4ZWMpLCBlYyk7CisgICAgICAgICAgICAgICAgc2V0RE9N
RXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgOToKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1nRWx0LCBhcmdz
WzFdLT50b051bWJlcihleGVjKSwgYXJnc1syXS0+dG9OdW1iZXIoZXhlYyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbM10tPnRvTnVtYmVyKGV4ZWMpLCBhcmdzWzRd
LT50b051bWJlcihleGVjKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJn
c1s1XS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbNl0tPnRvTnVtYmVyKGV4ZWMpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzddLT50b051bWJlcihleGVjKSwgYXJnc1s4
XS0+dG9OdW1iZXIoZXhlYyksIGVjKTsKKyAgICAgICAgICAgICAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgZWMpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhFcnJvcik7Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG8tPmluaGVyaXRzKCZKU0hUTUxDYW52YXNFbGVtZW50
OjppbmZvKSkgeworICAgICAgICBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gc3RhdGljX2Nh
c3Q8SFRNTENhbnZhc0VsZW1lbnQqPihzdGF0aWNfY2FzdDxKU0hUTUxFbGVtZW50Kj4oYXJnc1sw
XSktPmltcGwoKSk7CisgICAgICAgIHN3aXRjaCAoYXJncy5zaXplKCkpIHsKKyAgICAgICAgICAg
IGNhc2UgMzoKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoY2FudmFzLCBhcmdz
WzFdLT50b051bWJlcihleGVjKSwgYXJnc1syXS0+dG9OdW1iZXIoZXhlYykpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSA1OgorICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmRyYXdJbWFnZShjYW52YXMsIGFyZ3NbMV0tPnRvTnVtYmVyKGV4ZWMpLCBhcmdzWzJdLT50
b051bWJlcihleGVjKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1sz
XS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbNF0tPnRvTnVtYmVyKGV4ZWMpLCBlYyk7CisgICAgICAg
ICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgOToKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1h
Z2UoY2FudmFzLCBhcmdzWzFdLT50b051bWJlcihleGVjKSwgYXJnc1syXS0+dG9OdW1iZXIoZXhl
YyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbM10tPnRvTnVtYmVy
KGV4ZWMpLCBhcmdzWzRdLT50b051bWJlcihleGVjKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXJnc1s1XS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbNl0tPnRvTnVtYmVyKGV4
ZWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzddLT50b051bWJl
cihleGVjKSwgYXJnc1s4XS0+dG9OdW1iZXIoZXhlYyksIGVjKTsKKyAgICAgICAgICAgICAgICBz
ZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBT
eW50YXhFcnJvcik7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBzZXRET01FeGNl
cHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisgICAgCisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7ICAgIAorfQorCitKU1ZhbHVlKiBKU0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlRnJvbVJlY3QoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBMaXN0JiBhcmdzKQoreyAKKyAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNv
bnRleHQgPSBpbXBsKCk7CisKKyAgICBKU09iamVjdCogbyA9IHN0YXRpY19jYXN0PEpTT2JqZWN0
Kj4oYXJnc1swXSk7CisgICAgaWYgKCFvLT5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdGhy
b3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOworICAgIGlmICghby0+aW5oZXJpdHMoJktKUzo6SlNI
VE1MRWxlbWVudDo6aW1nX2luZm8pKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBU
eXBlRXJyb3IpOworICAgIGNvbnRleHQtPmRyYXdJbWFnZUZyb21SZWN0KHN0YXRpY19jYXN0PEhU
TUxJbWFnZUVsZW1lbnQqPihzdGF0aWNfY2FzdDxKU0hUTUxFbGVtZW50Kj4oYXJnc1swXSktPmlt
cGwoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1sxXS0+dG9OdW1iZXIo
ZXhlYyksIGFyZ3NbMl0tPnRvTnVtYmVyKGV4ZWMpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFyZ3NbM10tPnRvTnVtYmVyKGV4ZWMpLCBhcmdzWzRdLT50b051bWJlcihleGVjKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzVdLT50b051bWJlcihleGVjKSwg
YXJnc1s2XS0+dG9OdW1iZXIoZXhlYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXJnc1s3XS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbOF0tPnRvTnVtYmVyKGV4ZWMpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbOV0tPnRvU3RyaW5nKGV4ZWMpKTsgICAgCisg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7ICAgIAorfQorCitKU1ZhbHVlKiBKU0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJn
cykKK3sgCisgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBjb250ZXh0ID0gaW1wbCgpOwor
CisgICAgc3dpdGNoIChhcmdzLnNpemUoKSkgeworICAgICAgICBjYXNlIDM6CisgICAgICAgICAg
ICBjb250ZXh0LT5zZXRTaGFkb3coYXJnc1swXS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbMV0tPnRv
TnVtYmVyKGV4ZWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbMl0tPnRv
TnVtYmVyKGV4ZWMpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDQ6CisgICAg
ICAgICAgICBpZiAoYXJnc1szXS0+aXNTdHJpbmcoKSkKKyAgICAgICAgICAgICAgICBjb250ZXh0
LT5zZXRTaGFkb3coYXJnc1swXS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbMV0tPnRvTnVtYmVyKGV4
ZWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzJdLT50b051bWJl
cihleGVjKSwgYXJnc1szXS0+dG9TdHJpbmcoZXhlYykpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhhcmdzWzBdLT50b051bWJlcihleGVjKSwg
YXJnc1sxXS0+dG9OdW1iZXIoZXhlYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFyZ3NbMl0tPnRvTnVtYmVyKGV4ZWMpLCBhcmdzWzNdLT50b051bWJlcihleGVjKSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA1OgorICAgICAgICAgICAgaWYgKGFyZ3Nb
M10tPmlzU3RyaW5nKCkpCisgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KGFyZ3Nb
MF0tPnRvTnVtYmVyKGV4ZWMpLCBhcmdzWzFdLT50b051bWJlcihleGVjKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1syXS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbM10t
PnRvU3RyaW5nKGV4ZWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdz
WzRdLT50b051bWJlcihleGVjKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
Y29udGV4dC0+c2V0U2hhZG93KGFyZ3NbMF0tPnRvTnVtYmVyKGV4ZWMpLCBhcmdzWzFdLT50b051
bWJlcihleGVjKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1syXS0+
dG9OdW1iZXIoZXhlYyksIGFyZ3NbM10tPnRvTnVtYmVyKGV4ZWMpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhcmdzWzRdLT50b051bWJlcihleGVjKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSA3OgorICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93
KGFyZ3NbMF0tPnRvTnVtYmVyKGV4ZWMpLCBhcmdzWzFdLT50b051bWJlcihleGVjKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzJdLT50b051bWJlcihleGVjKSwgYXJnc1sz
XS0+dG9OdW1iZXIoZXhlYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1s0
XS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbNV0tPnRvTnVtYmVyKGV4ZWMpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFyZ3NbNl0tPnRvTnVtYmVyKGV4ZWMpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIDg6CisgICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3co
YXJnc1swXS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbMV0tPnRvTnVtYmVyKGV4ZWMpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbMl0tPnRvTnVtYmVyKGV4ZWMpLCBhcmdzWzNd
LT50b051bWJlcihleGVjKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzRd
LT50b051bWJlcihleGVjKSwgYXJnc1s1XS0+dG9OdW1iZXIoZXhlYyksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXJnc1s2XS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbN10tPnRvTnVt
YmVyKGV4ZWMpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJyb3IpOworICAgIH0KKyAgICAK
KyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsgICAgCit9CisKK0pTVmFsdWUqIEpTQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVQYXR0ZXJuKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlz
dCYgYXJncykKK3sgCisgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBjb250ZXh0ID0gaW1w
bCgpOworCisgICAgSlNPYmplY3QqIG8gPSBzdGF0aWNfY2FzdDxKU09iamVjdCo+KGFyZ3NbMF0p
OworICAgIGlmICghby0+aXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhl
YywgVHlwZUVycm9yKTsKKyAgICBpZiAoby0+aW5oZXJpdHMoJktKUzo6SlNIVE1MRWxlbWVudDo6
aW1nX2luZm8pKSB7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgICAgIEpTVmFsdWUq
IHBhdHRlcm4gPSB0b0pTKGV4ZWMsCisgICAgICAgICAgICBjb250ZXh0LT5jcmVhdGVQYXR0ZXJu
KHN0YXRpY19jYXN0PEhUTUxJbWFnZUVsZW1lbnQqPihzdGF0aWNfY2FzdDxKU0hUTUxFbGVtZW50
Kj4oYXJnc1swXSktPmltcGwoKSksCisgICAgICAgICAgICAgICAgYXJnc1sxXS0+dG9TdHJpbmco
ZXhlYyksIGVjKS5nZXQoKSk7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Cisg
ICAgICAgIHJldHVybiBwYXR0ZXJuOworICAgIH0KKyAgICBpZiAoby0+aW5oZXJpdHMoJkpTSFRN
TENhbnZhc0VsZW1lbnQ6OmluZm8pKSB7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAg
ICAgIEpTVmFsdWUqIHBhdHRlcm4gPSB0b0pTKGV4ZWMsCisgICAgICAgICAgICBjb250ZXh0LT5j
cmVhdGVQYXR0ZXJuKHN0YXRpY19jYXN0PEhUTUxDYW52YXNFbGVtZW50Kj4oc3RhdGljX2Nhc3Q8
SlNIVE1MRWxlbWVudCo+KGFyZ3NbMF0pLT5pbXBsKCkpLAorICAgICAgICAgICAgICAgIGFyZ3Nb
MV0tPnRvU3RyaW5nKGV4ZWMpLCBlYykuZ2V0KCkpOworICAgICAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgZWMpOworICAgICAgICByZXR1cm4gcGF0dGVybjsKKyAgICB9CisgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICByZXR1cm4gMDsKK30KKworfQpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IERlcml2ZWRTb3VyY2VzLm1ha2UKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMTQ0MzQpCisrKyBEZXJp
dmVkU291cmNlcy5tYWtlCShhcmJldHNrb3BpYSkKQEAgLTUwLDcgKzUwLDYgQEAgYWxsIDogXAog
ICAgIEpTQ2FudmFzR3JhZGllbnQuaCBcCiAgICAgSlNDYW52YXNQYXR0ZXJuLmggXAogICAgIEpT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggXAotICAgIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZVRhYmxlLmNwcCBcCiAgICAgSlNDaGFyYWN0ZXJEYXRhLmggXAogICAgIEpTQ291bnRl
ci5oIFwKICAgICBKU0NTU1N0eWxlRGVjbGFyYXRpb24uaCBcCkluZGV4OiBodG1sL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaHRtbC9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuaWRsCShyZXZpc2lvbiAxNDQzNCkKKysrIGh0bWwvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmlkbAkoYXJiZXRza29waWEpCkBAIC0xOSw3ICsxOSw3IEBACiAKIG1vZHVsZSBodG1s
IHsKIAotICAgIGludGVyZmFjZSBbTGVnYWN5UGFyZW50PUpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZV0gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHsKKyAgICBpbnRlcmZhY2UgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEIHsKIAogICAgICAgICAvLyBXZWIgQXBwbGljYXRpb25zIDEuMCBk
cmFmdAogCkBAIC04MSw2ICs4MSwxNiBAQCBtb2R1bGUgaHRtbCB7CiAKICAgICAgICAgdm9pZCBj
bGVhclNoYWRvdygpOwogCisgICAgICAgIFtDdXN0b21dIHZvaWQgc2V0U3Ryb2tlQ29sb3IoLyog
MSAgKi8pOworICAgICAgICBbQ3VzdG9tXSB2b2lkIHNldEZpbGxDb2xvcigvKiAxICovKTsKKyAg
ICAgICAgW0N1c3RvbV0gdm9pZCBzdHJva2VSZWN0KC8qIDQgKi8pOworICAgICAgICBbQ3VzdG9t
XSB2b2lkIGRyYXdJbWFnZSgvKiAzICovKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBkcmF3SW1h
Z2VGcm9tUmVjdCgvKiAxMCAqLyk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgc2V0U2hhZG93KC8q
IDMgKi8pOworICAgICAgICBbQ3VzdG9tXSB2b2lkIGNyZWF0ZVBhdHRlcm4oLyogMiAqLyk7Cisg
ICAgICAgIAorICAgICAgICBhdHRyaWJ1dGUgW0N1c3RvbV0gY3VzdG9tIHN0cm9rZVN0eWxlOwor
ICAgICAgICBhdHRyaWJ1dGUgW0N1c3RvbV0gY3VzdG9tIGZpbGxTdHlsZTsgICAgICAgIAogICAg
IH07CiAKIH0KSW5kZXg6IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE0NDM0
KQorKysgV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShhcmJldHNrb3BpYSkKQEAg
LTEwMiw2ICsxMDIsNyBAQAogCQkxQTc2MkM3QTBBMDc0RjI2MDA5ODlGNUIgLyogSlNYUGF0aFJl
c3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE3
NjJDNzIwQTA3NEYyNjAwOTg5RjVCIC8qIEpTWFBhdGhSZXN1bHQuaCAqLzsgfTsKIAkJMUE4MjBE
OTEwQTEzRUJBNjAwQUY4NDNDIC8qIEltYWdlRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4MjBEOEYwQTEzRUJBNjAwQUY4NDNDIC8q
IEltYWdlRG9jdW1lbnQuY3BwICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICIteG9i
amVjdGl2ZS1jKysiOyB9OyB9OwogCQkxQTgyMEQ5MjBBMTNFQkE2MDBBRjg0M0MgLyogSW1hZ2VE
b2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUE4MjBEOTAwQTEzRUJBNjAwQUY4NDNDIC8qIEltYWdlRG9jdW1lbnQuaCAqLzsgfTsKKwkJMUE5
RUY0NTcwQTFCOTU3RDAwMzMyQjYzIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOUVG
NDU2MEExQjk1N0QwMDMzMkI2MyAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5j
cHAgKi87IH07CiAJCTU1MEEwQkM5MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM3
MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLzsgfTsKIAkJNTUwQTBCQ0Ew
ODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFs
aWZpZWROYW1lLmggKi87IH07CiAJCTU1MEEwQkNEMDg1RjYwNEQwMDczNTNENiAvKiBIVE1MTmFt
ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUw
QTBCQ0IwODVGNjA0RDAwNzM1M0Q2IC8qIEhUTUxOYW1lcy5jcHAgKi87IH07CkBAIC0yNDEsOCAr
MjQyLDYgQEAKIAkJOTMwNzA1REEwOUUwQzlCRjAwQjE3RkU0IC8qIEpTQ291bnRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMwNzA1RDkwOUUwQzlC
RjAwQjE3RkU0IC8qIEpTQ291bnRlci5oICovOyB9OwogCQk5MzA3MDVFOTA5RTBDOUYwMDBCMTdG
RTQgLyogSlNDU1NQcmltaXRpdmVWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA3MDVFODA5RTBDOUYwMDBCMTdGRTQgLyogSlNDU1NQcmlt
aXRpdmVWYWx1ZS5jcHAgKi87IH07CiAJCTkzMDcwNUVCMDlFMEM5RjYwMEIxN0ZFNCAvKiBKU0NT
U1ByaW1pdGl2ZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzA3MDVFQTA5RTBDOUY2MDBCMTdGRTQgLyogSlNDU1NQcmltaXRpdmVWYWx1ZS5o
ICovOyB9OwotCQk5MzBDQUQxNTA5QzRGM0MzMDAyMjlDMDQgLyogSlNDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzBDQUQxNDA5QzRGM0MzMDAyMjlDMDQgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmggKi87IH07Ci0JCTkzMENBRDI2MDlDNEY0OTEwMDIyOUMwNCAvKiBKU0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTMwQ0FEMjUwOUM0RjQ5MTAwMjI5QzA0IC8qIEpTQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAgKi87IH07CiAJCTkzMTI2RjYxMDlEN0E3MzYwMDhEOTYyNiAv
KiBTdHJpbmdIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzEyNkY2MDA5RDdBNzM2MDA4RDk2MjYgLyogU3RyaW5nSGFzaC5oICovOyB9OwogCQk5
MzI2REMwQjA5REFENUJFMDBBRkM4NDcgLyogQ2hhcnNldERhdGEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMjZEQzBBMDlEQUQ1QkUwMEFGQzg0NyAv
KiBDaGFyc2V0RGF0YS5oICovOyB9OwogCQk5MzI2REMwQzA5REFENUQ2MDBBRkM4NDcgLyogQ2hh
cnNldERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjU2NTgxQUMwOUQxNEVFNjAwMEU2MUQ3IC8qIENoYXJzZXREYXRhLmNwcCAqLzsgfTsKQEAg
LTE1NjAsNiArMTU1OSw3IEBACiAJCTFBNzYyQzcyMEEwNzRGMjYwMDk4OUY1QiAvKiBKU1hQYXRo
UmVzdWx0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1hQYXRoUmVzdWx0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBODIwRDhGMEExM0VCQTYwMEFGODQz
QyAvKiBJbWFnZURvY3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbWFnZURvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE4
MjBEOTAwQTEzRUJBNjAwQUY4NDNDIC8qIEltYWdlRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUE5RUY0NTYwQTFCOTU3RDAwMzMyQjYzIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkQ5MDY2MEIwNjY1RDkzNzAwNkI2RjFBIC8qIENsaXBib2FyZE1hYy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGlwYm9hcmRN
YWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7
IH07CiAJCTJEOTA2NjBDMDY2NUQ5MzcwMDZCNkYxQSAvKiBDbGlwYm9hcmRNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDbGlw
Ym9hcmRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQk0NzU4QzQ0MzA4QzVGMjE3MDA5QkFGMDUgLyogS0NhbnZhc1BhdGguY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBL
Q2FudmFzUGF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNl
c1RhYnMgPSAwOyB9OwpAQCAtMTYxNiw3ICsxNjE2LDYgQEAKIAkJNjU2NTgxQUQwOUQxNEVFNjAw
MEU2MUQ3IC8qIENvbG9yRGF0YS5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBwYXRoID0g
Q29sb3JEYXRhLmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NjU4MUFFMDlEMTRF
RTYwMDBFNjFENyAvKiBVc2VyQWdlbnRTdHlsZVNoZWV0cy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVXNlckFnZW50U3R5bGVTaGVldHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNjU2NTgxQUYwOUQxNEVFNjAwMEU2MUQ3IC8qIFVzZXJBZ2VudFN0eWxlU2hl
ZXRzRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlckFn
ZW50U3R5bGVTaGVldHNEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjU2
NTgxRDUwOUQxNTA4RDAwMEU2MUQ3IC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZVRh
YmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2VUYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTY1NjU4MUQ2MDlEMTUwOEQwMDBFNjFENyAvKiBKU0RPTVBhcnNlci5sdXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NUGFyc2VyLmx1dC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2NTY1ODFENzA5RDE1MDhEMDAwRTYxRDcgLyogSlNYTUxIdHRw
UmVxdWVzdC5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTWE1MSHR0
cFJlcXVlc3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NjU4MUQ4MDlE
MTUwOEQwMDBFNjFENyAvKiBKU1hNTFNlcmlhbGl6ZXIubHV0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1hNTFNlcmlhbGl6ZXIubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNzU4LDggKzE3NTcsNiBAQAogCQk5MzBDQUI4ODA5QzQ5RUZBMDAyMjlD
MDQgLyogQ2FudmFzR3JhZGllbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENhbnZhc0dy
YWRpZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwQ0FCOEYwOUM0OUYx
QjAwMjI5QzA0IC8qIENhbnZhc1BhdHRlcm4uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENh
bnZhc1BhdHRlcm4uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzBDQUI5NjA5
QzQ5RkFBMDAyMjlDMDQgLyogQ29kZUdlbmVyYXRvckpTLnBtICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3Jp
cHQucGVybDsgbmFtZSA9IENvZGVHZW5lcmF0b3JKUy5wbTsgcGF0aCA9IC4uL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5MzBDQUQxNDA5
QzRGM0MzMDAyMjlDMDQgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5MzBDQUQyNTA5QzRGNDkxMDAyMjlD
MDQgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMTI2RjYwMDlEN0E3MzYwMDhEOTYyNiAv
KiBTdHJpbmdIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0hh
c2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMyNkRDMEEwOURBRDVCRTAwQUZD
ODQ3IC8qIENoYXJzZXREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENo
YXJzZXREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMjdBOTQxMDk5NjhE
MUEwMDY4QTU0NiAvKiBIVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMyNDgsNyArMzI0NSw2IEBACiAJCQkJNjVERjMyMzYwOUQx
REU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzUGF0dGVybi5oICovLAogCQkJCTY1REYzMjM3MDlEMURF
NjUwMDBCRTMyNSAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgKi8sCiAJCQkJNjVE
RjMyMzgwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggKi8s
Ci0JCQkJNjU2NTgxRDUwOUQxNTA4RDAwMEU2MUQ3IC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZVRhYmxlLmNwcCAqLywKIAkJCQk2NURGMzFERjA5RDFDQzYwMDAwQkUzMjUgLyogSlND
aGFyYWN0ZXJEYXRhLmNwcCAqLywKIAkJCQk2NURGMzFFMDA5RDFDQzYwMDAwQkUzMjUgLyogSlND
aGFyYWN0ZXJEYXRhLmggKi8sCiAJCQkJOTMwNzA1RDcwOUUwQzlCNzAwQjE3RkU0IC8qIEpTQ291
bnRlci5jcHAgKi8sCkBAIC00NDA3LDggKzQ0MDMsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKIAkJCQk5MzBDQUI5NjA5QzQ5RkFBMDAyMjlDMDQgLyogQ29kZUdlbmVy
YXRvckpTLnBtICovLAotCQkJCTkzMENBRDI1MDlDNEY0OTEwMDIyOUMwNCAvKiBKU0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwICovLAotCQkJCTkzMENBRDE0MDlDNEYzQzMwMDIyOUMw
NCAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaCAqLywKKwkJCQkxQTlFRjQ1NjBB
MUI5NTdEMDAzMzJCNjMgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwICov
LAogCQkJCTkzQjcwRDNGMDlFQjBDN0MwMDlEODQ2OCAvKiBKU0RPTVBhcnNlci5jcHAgKi8sCiAJ
CQkJOTNCNzBENDAwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NUGFyc2VyLmggKi8sCiAJCQkJOTM4
RTY1RjYwOUYwOTg1RDAwOEE0OEVDIC8qIEpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAg
Ki8sCkBAIC01NTA3LDcgKzU1MDIsNiBAQAogCQkJCTkzRUVDMjAxMDlDMjg3NzcwMEM1MTVEMSAv
KiBDYW52YXNTdHlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNFRUMyMDMwOUMyODc3NzAwQzUx
NUQxIC8qIENhbnZhc0dyYWRpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0VFQzIwNDA5QzI4
Nzc3MDBDNTE1RDEgLyogQ2FudmFzUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTMwQ0FE
MTUwOUM0RjNDMzAwMjI5QzA0IC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRDBCMDU1NjgwOUM2NzAwMTAwMzA3RTQzIC8qIENyZWF0ZUxpbmtD
b21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTIyQkNERjA5QzlEQUE4MDBDOUJBN0EgLyog
UmVzb3VyY2VSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0M4NDFGODA5Q0U4NTVDMDBE
RkY1RTUgLyogRE9NSW1wbGVtZW50YXRpb25Gcm9udC5oIGluIEhlYWRlcnMgKi8sCkBAIC02Mzc5
LDcgKzYzNzMsNiBAQAogCQkJCTkzRUVDMjAyMDlDMjg3NzcwMEM1MTVEMSAvKiBDYW52YXNHcmFk
aWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0VFQzI2RjA5QzMyMTgwMDBDNTE1RDEgLyog
Q2FudmFzUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0VFQzI3MTA5QzMyMTg4MDBD
NTE1RDEgLyogQ2FudmFzU3R5bGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOTMwQ0FEMjYwOUM0
RjQ5MTAwMjI5QzA0IC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlEMEIwNTU2OTA5QzY3MDAxMDAzMDdFNDMgLyogQ3JlYXRlTGlua0NvbW1h
bmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNDODQxRkYwOUNFODU4MzAwREZGNUU1IC8qIERP
TUltcGxlbWVudGF0aW9uRnJvbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjUwRjUzREQwOUQx
NURERjAwQzlCMEM4IC8qIENTU0dyYW1tYXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC02NTg0LDYg
KzY1NzcsNyBAQAogCQkJCUE4MEU3QjEyMEExOUQ2MDYwMDdGQjhDNSAvKiBKU0hUTUxCYXNlRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBFN0IxMzBBMTlENjA2MDA3RkI4QzUgLyog
SlNIVE1MVGl0bGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU3QjE0MEExOUQ2
MDYwMDdGQjhDNSAvKiBKU0hUTUxIZWFkRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkx
QTlFRjQ1NzBBMUI5NTdEMDAzMzJCNjMgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBDaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNDQzNikKKysrIENoYW5nZUxvZwkoYXJiZXRza29waWEpCkBAIC0x
LDMgKzEsNDAgQEAKKzIwMDYtMDUtMTcgIEFuZGVycyBDYXJsc3NvbiAgPGFjYXJsc3NvbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V0FSTklORzogTk8gVEVTVCBDQVNFUyBBRERFRCBPUiBDSEFOR0VECisKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIFJlbW92ZSBKU0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UgYW5kIGFkZCAKKyAgICAgICAgSlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRDdXN0b20gd2l0aCBjdXN0b20gaW1wbGVtZW50YXRpb25zLgorICAgICAg
ICAKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6dG9IVE1MQ2Fu
dmFzU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRTdHJva2VTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6ZmlsbFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpzZXRGaWxsU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpKU0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlRnJvbVJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyk6
CisgICAgICAgIChXZWJDb3JlOjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlUGF0
dGVybik6CisgICAgICAgIE1vdmUgaW1wbGVtZW50YXRpb25zIGZyb20gSlNDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlLgorICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgQWRkIG5ldyAiQ3VzdG9tIiBleHRlbmRlZCBhdHRy
aWJ1dGUgZm9yIGZ1bmN0aW9ucyBhbmQgYXR0cmlidXRlcy4gV2hlbiBhIGZ1bmN0aW9uIG9yIAor
ICAgICAgICBhdHRyaWJ1dGUgaGFzIHRoaXMgYXR0cmlidXRlLCBhIGN1c3RvbSBpbXBsZW1lbnRh
dGlvbiBpcyBjYWxsZWQgaW5zdGVhZCBvZiBjYWxsaW5nIGRvd24gdG8KKyAgICAgICAgdGhlIERP
TSBvYmplY3QuCisgICAgICAgIAorICAgICAgICAqIGh0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmlkbDoKKyAgICAgICAgQWRkIGJ1bmNoIG9mIGN1c3RvbSBhdHRyaWJ1dGVzIGFuZCBmdW5j
dGlvbnMuCisKIDIwMDYtMDUtMTcgIEFkZWxlIFBldGVyc29uICA8YWRlbGVAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEJldGguCg==
</data>
<flag name="review"
          id="2369"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>