<?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>35205</bug_id>
          
          <creation_ts>2010-02-20 22:04:14 -0800</creation_ts>
          <short_desc>[Chromium API] Disambiguate allowJavaScript from didFailToExecuteJavaScript</short_desc>
          <delta_ts>2010-02-24 16:33:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>fishd</cc>
    
    <cc>pkasting</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>192237</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-02-20 22:04:14 -0800</bug_when>
    <thetext>[Chromium API] Disambiguous allowJavaScript from didFailToExecuteJavaScript</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192238</commentid>
    <comment_count>1</comment_count>
      <attachid>49141</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-02-20 22:06:39 -0800</bug_when>
    <thetext>Created attachment 49141
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192239</commentid>
    <comment_count>2</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-02-20 22:48:10 -0800</bug_when>
    <thetext>You might want to comment more (perhaps in comments on the function declarations?) on why a piece of code would care whether it can execute script if it doesn&apos;t actually intend to execute script.  There are other possible APIs here whose usefulness probably depends on the answer.

(I&apos;m mostly worried about future code calling allowJavaScript() without calling didFailToExecuteJavaScript() when it should.  Perhaps we should create a single access point you call when you want to run script that checks if it&apos;s legal and calls this callback if not, or something.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192246</commentid>
    <comment_count>3</comment_count>
      <attachid>49141</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-02-20 23:55:00 -0800</bug_when>
    <thetext>Comment on attachment 49141
Patch

This patch is wrong because V8 cheatzors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192251</commentid>
    <comment_count>4</comment_count>
      <attachid>49146</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-02-21 01:03:06 -0800</bug_when>
    <thetext>Created attachment 49146
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192252</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-02-21 01:04:02 -0800</bug_when>
    <thetext>Done and done.  This patch got a bit bigger and probably harder to merge, but I think you&apos;re right that we should force clients to be explicit about this bit so we do the right thing in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192676</commentid>
    <comment_count>6</comment_count>
      <attachid>49146</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-02-22 15:45:18 -0800</bug_when>
    <thetext>Comment on attachment 49146
Patch

&gt; +enum ReasonForCallingCanExecuteScripts {
&gt; +    AboutToExecuteScript,
&gt; +    NotAboutToExecuteScript
&gt; +};

I wonder if there could be a better name for the second choice... &quot;NotPlanningToExecuteScript&quot;?  &quot;JustCuriousAboutCurrentSetting&quot;?  I dunno :(.  In any case it seems like rationale for this enum should be given in comments above it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193134</commentid>
    <comment_count>7</comment_count>
      <attachid>49146</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-02-23 14:38:48 -0800</bug_when>
    <thetext>Comment on attachment 49146
Patch

&gt; +        [Chromium API] Disambiguate allowJavaScript from didFailToExecuteJavaScript

As discussed elsewhere, I&apos;d still much prefer a name for didFailToExecuteJavaScript
that better indicates failure due to a policy decision as opposed to other problems
such as a syntax error.

How about renaming this method to didNotAllowScript?  That nicely corresponds with
allowScript.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193502</commentid>
    <comment_count>8</comment_count>
      <attachid>49435</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-02-24 14:17:01 -0800</bug_when>
    <thetext>Created attachment 49435
patch v3

Renamed didFailToExecuteJavaScript() to didNotAllowScript().  Updated patch to apply against current tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193511</commentid>
    <comment_count>9</comment_count>
      <attachid>49440</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-02-24 14:34:45 -0800</bug_when>
    <thetext>Created attachment 49440
patch v4

Last patch didn&apos;t fix everywhere because I didn&apos;t realize the first patch used two different function names (for no good reason)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193555</commentid>
    <comment_count>10</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-02-24 16:33:15 -0800</bug_when>
    <thetext>Landed in r55207.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49141</attachid>
            <date>2010-02-20 22:06:39 -0800</date>
            <delta_ts>2010-02-21 01:03:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-35205-20100220220638.patch</filename>
            <type>text/plain</type>
            <size>5058</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Y2RiMmM0My4uMjRiZTE2NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wMi0yMCAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFtDaHJvbWl1bSBBUEldIERpc2FtYmlndW91cyBhbGxvd0phdmFTY3JpcHQg
ZnJvbSBkaWRGYWlsVG9FeGVjdXRlSmF2YVNjcmlwdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUyMDUKKworICAgICAgICBGb3IgY2xpZW50cyB0aGF0
IHdhbnQgdG8gc2hvdyBhIHVzZXIgaW50ZXJmYWNlIGVsZW1lbnQgd2hlbiBKYXZhU2NyaXB0Cisg
ICAgICAgIHdhcyBibG9ja2VkIG9uIGEgcGFnZSwgd2UgbmVlZCB0byBkaXNhbWJpZ3VhdGUgYmV0
d2VlbiBxdWVyeWluZyB0aGUKKyAgICAgICAgY2xpZW50IGZvciB3aGV0aGVyIEphdmFTY3JpcHQg
aXMgZW5hYmxlZCBmcm9tIGFjdHVhbGx5IGZhaWxpbmcgdG8KKyAgICAgICAgZXhlY3V0ZSBzb21l
IHNjcmlwdC4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBuZXcgRnJhbWVMb2FkZXJDbGll
bnQgY2FsbGJhY2sgZm9yIHdoZW4gV2ViQ29yZSB3b3VsZAorICAgICAgICBsaWtlIHRvIGV4ZWN1
dGUgSmF2YVNjcmlwdCBidXQgZmFpbHMgdG8gYmVjYXVzZSBKYXZhU2NyaXB0IGlzIGRpc2FibGVk
LgorCisgICAgICAgICogYmluZGluZ3MvU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdCk6CisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudDo6ZGlkRmFpbFRvRXhlY3V0ZUphdmFTY3JpcHQpOgorCiAyMDEwLTAyLTE5ICBBbGV4
ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdl
b2ZmcmV5IEdhcmVuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9TY3JpcHRDb250cm9s
bGVyQmFzZS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcApp
bmRleCBhYmU5NmVlLi4zMDdmZjlmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL1Njcmlw
dENvbnRyb2xsZXJCYXNlLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL1NjcmlwdENvbnRyb2xs
ZXJCYXNlLmNwcApAQCAtNDgsNyArNDgsMTIgQEAgU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxl
cjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXIKIAog
U2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJiBzb3VyY2VDb2RlKQogewotICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoKSB8
fCBpc1BhdXNlZCgpKQorICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoKSkgeworICAgICAgICBt
X2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpZEZhaWxUb0V4ZWN1dGVKYXZhU2NyaXB0KCk7
CisgICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOworICAgIH0KKworICAgIGlmIChpc1BhdXNl
ZCgpKQogICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKIAogICAgIGJvb2wgd2FzSW5FeGVj
dXRlU2NyaXB0ID0gbV9pbkV4ZWN1dGVTY3JpcHQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aAppbmRleCAyM2QxM2JjLi43Zjk0MTg2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlckNsaWVudC5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgK
QEAgLTI2MCw2ICsyNjAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBhbGxvd0phdmFTY3JpcHQoYm9vbCBlbmFibGVkUGVyU2V0dGluZ3MpIHsgcmV0dXJuIGVu
YWJsZWRQZXJTZXR0aW5nczsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dQbHVnaW5zKGJv
b2wgZW5hYmxlZFBlclNldHRpbmdzKSB7IHJldHVybiBlbmFibGVkUGVyU2V0dGluZ3M7IH0KICAg
ICAgICAgdmlydHVhbCBib29sIGFsbG93SW1hZ2VzKGJvb2wgZW5hYmxlZFBlclNldHRpbmdzKSB7
IHJldHVybiBlbmFibGVkUGVyU2V0dGluZ3M7IH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbFRvRXhlY3V0ZUphdmFTY3JpcHQoKSB7IH0KICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAyNDVjZDllLi5kNGMxNzIyIDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOCBAQAorMjAxMC0wMi0yMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJv
bWl1bSBBUEldIERpc2FtYmlndW91cyBhbGxvd0phdmFTY3JpcHQgZnJvbSBkaWRGYWlsVG9FeGVj
dXRlSmF2YVNjcmlwdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzUyMDUKKworICAgICAgICBQbHVtYiBkaWRGYWlsVG9FeGVjdXRlSmF2YVNjcmlwdCB0
aHJvdWdoIENocm9taXVtJ3MgV2ViS2l0IEFQSS4KKworICAgICAgICAqIHB1YmxpYy9XZWJGcmFt
ZUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlkRmFpbFRvRXhl
Y3V0ZVNjcmlwdCk6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlkRmFpbFRvRXhlY3V0ZUph
dmFTY3JpcHQpOgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaDoKKwogMjAx
MC0wMi0xOSAgSmFtZXMgSGF3a2lucyAgPGpoYXdraW5zQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRnJhbWVDbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVD
bGllbnQuaAppbmRleCBhZTI1NDFhLi5mMmEyYWNiIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJGcmFtZUNsaWVudC5oCkBAIC0yNTIsNiArMjUyLDkgQEAgcHVibGljOgogICAgIC8vIENvbnRy
b2xzIHdoZXRoZXIgc2NyaXB0cyBhcmUgYWxsb3dlZCB0byBleGVjdXRlIGZvciB0aGlzIGZyYW1l
LgogICAgIHZpcnR1YWwgYm9vbCBhbGxvd1NjcmlwdChXZWJGcmFtZSosIGJvb2wgZW5hYmxlZFBl
clNldHRpbmdzKSB7IHJldHVybiBlbmFibGVkUGVyU2V0dGluZ3M7IH0KIAorICAgIC8vIE5vdGlm
aWVzIHRoZSBjbGllbnQgdGhhdCB0aGUgZnJhbWUgd291bGQgaGF2ZSBleGVjdXRlZCBzY3JpcHQg
aWYgc2NyaXB0IHdlcmUgZW5hYmxlZC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFRvRXhlY3V0
ZVNjcmlwdChXZWJGcmFtZSopIHsgfQorCiAgICAgLy8gU2NyaXB0IGluIHRoZSBwYWdlIHRyaWVk
IHRvIGFsbG9jYXRlIHRvbyBtdWNoIG1lbW9yeS4KICAgICB2aXJ0dWFsIHZvaWQgZGlkRXhoYXVz
dE1lbW9yeUF2YWlsYWJsZUZvclNjcmlwdChXZWJGcmFtZSopIHsgfQogCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKaW5kZXggOGZiMjY3ZC4uZGM5NWIw
NiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwu
Y3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcApA
QCAtMTgwLDYgKzE4MCwxMiBAQCBib29sIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6YWxsb3dJbWFn
ZXMoYm9vbCBlbmFibGVkUGVyU2V0dGluZ3MpCiAgICAgcmV0dXJuIGVuYWJsZWRQZXJTZXR0aW5n
czsKIH0KIAordm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpZEZhaWxUb0V4ZWN1dGVKYXZh
U2NyaXB0KCkKK3sKKyAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpCisgICAgICAgIG1fd2Vi
RnJhbWUtPmNsaWVudCgpLT5kaWRGYWlsVG9FeGVjdXRlU2NyaXB0KG1fd2ViRnJhbWUpOworfQor
CiBib29sIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6aGFzV2ViVmlldygpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fd2ViRnJhbWUtPnZpZXdJbXBsKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFt
ZUxvYWRlckNsaWVudEltcGwuaAppbmRleCA4YTM5MzkzLi5jNjAxYTVlIDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCisrKyBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKQEAgLTE5NSw2ICsxOTUsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIGFsbG93SmF2YVNjcmlwdChib29sIGVuYWJsZWRQZXJT
ZXR0aW5ncyk7CiAgICAgdmlydHVhbCBib29sIGFsbG93UGx1Z2lucyhib29sIGVuYWJsZWRQZXJT
ZXR0aW5ncyk7CiAgICAgdmlydHVhbCBib29sIGFsbG93SW1hZ2VzKGJvb2wgZW5hYmxlZFBlclNl
dHRpbmdzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFRvRXhlY3V0ZUphdmFTY3JpcHQoKTsK
IAogcHJpdmF0ZToKICAgICB2b2lkIG1ha2VEb2N1bWVudFZpZXcoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49146</attachid>
            <date>2010-02-21 01:03:06 -0800</date>
            <delta_ts>2010-02-24 14:17:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-35205-20100221010305.patch</filename>
            <type>text/plain</type>
            <size>30152</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDkwYzYzMi4uZmEwM2M5OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NyBAQAorMjAxMC0wMi0yMSAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFtDaHJvbWl1bSBBUEldIERpc2FtYmlndWF0ZSBhbGxvd0phdmFTY3JpcHQg
ZnJvbSBkaWRGYWlsVG9FeGVjdXRlSmF2YVNjcmlwdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUyMDUKKworICAgICAgICBGb3IgY2xpZW50cyB0aGF0
IHdhbnQgdG8gc2hvdyBhIHVzZXIgaW50ZXJmYWNlIGVsZW1lbnQgd2hlbiBKYXZhU2NyaXB0Cisg
ICAgICAgIHdhcyBibG9ja2VkIG9uIGEgcGFnZSwgd2UgbmVlZCB0byBkaXNhbWJpZ3VhdGUgYmV0
d2VlbiBxdWVyeWluZyB0aGUKKyAgICAgICAgY2xpZW50IGZvciB3aGV0aGVyIEphdmFTY3JpcHQg
aXMgZW5hYmxlZCBmcm9tIGFjdHVhbGx5IGZhaWxpbmcgdG8KKyAgICAgICAgZXhlY3V0ZSBzb21l
IHNjcmlwdC4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBuZXcgRnJhbWVMb2FkZXJDbGll
bnQgY2FsbGJhY2sgZm9yIHdoZW4gV2ViQ29yZSB3b3VsZAorICAgICAgICBsaWtlIHRvIGV4ZWN1
dGUgSmF2YVNjcmlwdCBidXQgZmFpbHMgdG8gYmVjYXVzZSBKYXZhU2NyaXB0IGlzIGRpc2FibGVk
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyB0b3VjaGVzIGV2ZXJ5IGNsaWVudCBvZiBjYW5F
eGVjdXRlU2NyaXB0cyBzbyB0aGV5IGNhbgorICAgICAgICBpbmRpY2F0ZSB3aGV0aGVyIHdlIHNo
b3VsZCBtYWtlIHRoaXMgY2FsbGJhY2suICBJIHdhcyBob3BpbmcgdGhlcmUgd2FzCisgICAgICAg
IGEgYmV0dGVyIGNob2tlIHBvaW50LCBidXQgbXkgZmlyc3QgdHdvIGF0dGVtcHRzIHdlcmUgd3Jv
bmcgaW4gc3VidGxlCisgICAgICAgIHdheXMuICBwa2FzdGluZyBwb2ludHMgb3V0IHRoYXQgdGhp
cyB3aWxsIGJlIGVhc3kgdG8gc2NyZXcgdXAgaW4gdGhlCisgICAgICAgIGZ1dHVyZSwgc28gaXQn
cyBiZXR0ZXIgdG8gbWFrZSBhbGwgdGhlIGNsaWVudHMgYmUgZXhwbGljaXQuCisKKyAgICAgICAg
KiBXZWJDb3JlLlBsdWdpbkhvc3RQcm9jZXNzLmV4cDoKKyAgICAgICAgKiBiaW5kaW5ncy9TY3Jp
cHRDb250cm9sbGVyQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVy
OjpjYW5FeGVjdXRlU2NyaXB0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVy
OjpleGVjdXRlU2NyaXB0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0xhenlFdmVudExpc3RlbmVyOjppbml0aWFsaXplSlNGdW5jdGlvbik6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpiaW5k
aW5nUm9vdE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjp3aW5k
b3dTY3JpcHROUE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpq
c09iamVjdEZvclBsdWdpbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRy
b2xsZXI6OndpbmRvd1NjcmlwdE9iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzY3JpcHRTdGF0ZUZyb21Ob2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xs
ZXI6OndpbmRvd1NjcmlwdE5QT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRy
b2xsZXI6OmNyZWF0ZVNjcmlwdE9iamVjdEZvclBsdWdpbkVsZW1lbnQpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAg
ICAgICogYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OnJldHJpZXZlKToKKyAg
ICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRF
bGVtZW50RGF0YTo6ZXZhbHVhdGVTY3JpcHQpOgorICAgICAgICAqIGRvbS9YTUxUb2tlbml6ZXJM
aWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXplcjo6c3RhcnRFbGVtZW50
TnMpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpjb250cm9scyk6CisgICAgICAgICogaHRtbC9IVE1MVG9r
ZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6ZXI6OnBhcnNlVGFnKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6ZXI6OnByb2Nlc3NUb2tlbik6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y2FuUGFzc05vZGVUb0phdmFTY3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdERlYnVnU2VydmVy
OjpzZXRKYXZhU2NyaXB0UGF1c2VkKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpvcGVuKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0c0luQWxsV29ybGRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENsZWFyV2luZG93
T2JqZWN0SW5Xb3JsZCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudDo6ZGlkRmFpbFRvRXhlY3V0ZUphdmFT
Y3JpcHQpOgorCiAyMDEwLTAyLTIwICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9XZWJDb3JlLlBsdWdpbkhvc3RQcm9jZXNzLmV4cCBiL1dlYkNvcmUvV2ViQ29yZS5Q
bHVnaW5Ib3N0UHJvY2Vzcy5leHAKaW5kZXggNGI3ODk2Ni4uZTBlNzA2ZiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9XZWJDb3JlLlBsdWdpbkhvc3RQcm9jZXNzLmV4cAorKysgYi9XZWJDb3JlL1dlYkNv
cmUuUGx1Z2luSG9zdFByb2Nlc3MuZXhwCkBAIC05LDcgKzksNyBAQCBfX1pON1dlYkNvcmUxM0lk
ZW50aWZpZXJSZXAzZ2V0RWkKIF9fWk43V2ViQ29yZTEzSWRlbnRpZmllclJlcDNnZXRFUEtjCiBf
X1pON1dlYkNvcmUxM0lkZW50aWZpZXJSZXA3aXNWYWxpZEVQUzBfCiBfX1pON1dlYkNvcmUxNlNj
cmlwdENvbnRyb2xsZXIxNmNyZWF0ZVJvb3RPYmplY3RFUHYKLV9fWk43V2ViQ29yZTE2U2NyaXB0
Q29udHJvbGxlcjE3Y2FuRXhlY3V0ZVNjcmlwdHNFdgorX19aTjdXZWJDb3JlMTZTY3JpcHRDb250
cm9sbGVyMTdjYW5FeGVjdXRlU2NyaXB0c0VOU18zM1JlYXNvbkZvckNhbGxpbmdDYW5FeGVjdXRl
U2NyaXB0c0UKIF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjI0anNPYmplY3RGb3JQbHVn
aW5FbGVtZW50RVBOU18xN0hUTUxQbHVnSW5FbGVtZW50RQogX19aTjdXZWJDb3JlNlN0cmluZzI2
ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2tFUEtjbQogX19aTjdXZWJDb3JlNlN0cmluZzhmcm9t
VVRGOEVQS2NtCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJC
YXNlLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwCmluZGV4
IGFiZTk2ZWUuLmMyOTE4MzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvU2NyaXB0Q29u
dHJvbGxlckJhc2UuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvU2NyaXB0Q29udHJvbGxlckJh
c2UuY3BwCkBAIC0zMSwxNCArMzEsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29s
IFNjcmlwdENvbnRyb2xsZXI6OmNhbkV4ZWN1dGVTY3JpcHRzKCkKK2Jvb2wgU2NyaXB0Q29udHJv
bGxlcjo6Y2FuRXhlY3V0ZVNjcmlwdHMoUmVhc29uRm9yQ2FsbGluZ0NhbkV4ZWN1dGVTY3JpcHRz
IHJlYXNvbikKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGdldCB0aGlzIGluZm9ybWF0aW9u
IGZyb20gdGhlIGRvY3VtZW50IGluc3RlYWQgb2YgdGhlIGZyYW1lLgogICAgIGlmIChtX2ZyYW1l
LT5sb2FkZXIoKS0+aXNTYW5kYm94ZWQoU2FuZGJveFNjcmlwdHMpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5zZXR0aW5ncygpOwot
ICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmFsbG93SmF2YVNjcmlwdChz
ZXR0aW5ncyAmJiBzZXR0aW5ncy0+aXNKYXZhU2NyaXB0RW5hYmxlZCgpKTsKKyAgICBjb25zdCBi
b29sIGFsbG93ZWQgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmFsbG93SmF2YVNjcmlw
dChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+aXNKYXZhU2NyaXB0RW5hYmxlZCgpKTsKKyAgICBpZiAo
IWFsbG93ZWQgJiYgcmVhc29uID09IEFib3V0VG9FeGVjdXRlU2NyaXB0KQorICAgICAgICBtX2Zy
YW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpZEZhaWxUb0V4ZWN1dGVKYXZhU2NyaXB0KCk7Cisg
ICAgcmV0dXJuIGFsbG93ZWQ7CiB9CiAKIFNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4
ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkK
QEAgLTQ4LDcgKzUxLDcgQEAgU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNj
cmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXIKIAogU2NyaXB0VmFsdWUg
U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBz
b3VyY2VDb2RlKQogewotICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoKSB8fCBpc1BhdXNlZCgp
KQorICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8IGlz
UGF1c2VkKCkpCiAgICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOwogCiAgICAgYm9vbCB3YXNJ
bkV4ZWN1dGVTY3JpcHQgPSBtX2luRXhlY3V0ZVNjcmlwdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNF
dmVudExpc3RlbmVyLmNwcAppbmRleCA2MWYyMWJlLi5jYWI3NjE3IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgSlNFdmVudExp
c3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIC8vIEZJWE1FOiBJcyB0aGlz
IGNoZWNrIG5lZWRlZCBmb3Igb3RoZXIgY29udGV4dHM/CiAgICAgICAgIFNjcmlwdENvbnRyb2xs
ZXIqIHNjcmlwdCA9IGZyYW1lLT5zY3JpcHQoKTsKLSAgICAgICAgaWYgKCFzY3JpcHQtPmNhbkV4
ZWN1dGVTY3JpcHRzKCkgfHwgc2NyaXB0LT5pc1BhdXNlZCgpKQorICAgICAgICBpZiAoIXNjcmlw
dC0+Y2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8IHNjcmlwdC0+aXNQ
YXVzZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDRmYmRhYTYuLmNkMWQyNjcgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcApAQCAtNzksNyArNzks
NyBAQCBKU09iamVjdCogSlNMYXp5RXZlbnRMaXN0ZW5lcjo6aW5pdGlhbGl6ZUpTRnVuY3Rpb24o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogZXhlYwogICAgICAgICByZXR1cm4gMDsKIAogICAgIFNj
cmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSBmcmFtZS0+c2NyaXB0KCk7Ci0gICAg
aWYgKCFzY3JpcHRDb250cm9sbGVyLT5jYW5FeGVjdXRlU2NyaXB0cygpKQorICAgIGlmICghc2Ny
aXB0Q29udHJvbGxlci0+Y2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQog
ICAgICAgICByZXR1cm4gMDsKIAogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSB0b0pTRE9NR2xvYmFsT2JqZWN0KGV4ZWN1dGlvbkNvbnRleHQsIGlzb2xhdGVkV29ybGQoKSk7
CkBAIC05Myw3ICs5Myw3IEBAIEpTT2JqZWN0KiBKU0xhenlFdmVudExpc3RlbmVyOjppbml0aWFs
aXplSlNGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBleGVjCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKICAgICAgICAgLy8gRklYTUU6IElzIHRoaXMgY2hlY2sgbmVlZGVkIGZvciBub24t
RG9jdW1lbnQgY29udGV4dHM/CiAgICAgICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCA9IGZy
YW1lLT5zY3JpcHQoKTsKLSAgICAgICAgaWYgKCFzY3JpcHQtPmNhbkV4ZWN1dGVTY3JpcHRzKCkg
fHwgc2NyaXB0LT5pc1BhdXNlZCgpKQorICAgICAgICBpZiAoIXNjcmlwdC0+Y2FuRXhlY3V0ZVNj
cmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8IHNjcmlwdC0+aXNQYXVzZWQoKSkKICAgICAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY2hlZHVsZWRBY3Rpb24uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rp
b24uY3BwCmluZGV4IGJlNjJiYjguLjZkZWE1MGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVk
dWxlZEFjdGlvbi5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6
ZXhlY3V0ZShEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0
cjxGcmFtZT4gZnJhbWUgPSB3aW5kb3ctPmltcGwoKS0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1l
IHx8ICFmcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKCkpCisgICAgaWYgKCFmcmFt
ZSB8fCAhZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNj
cmlwdCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGZyYW1lLT5zY3JpcHQoKS0+c2V0UHJvY2Vz
c2luZ1RpbWVyQ2FsbGJhY2sodHJ1ZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcAppbmRleCAxNzFkNGRkLi44ZTk1MTc1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5jcHAKQEAgLTMxNyw3ICszMTcsNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xs
ZXI6OnVwZGF0ZVNlY3VyaXR5T3JpZ2luKCkKIAogQmluZGluZ3M6OlJvb3RPYmplY3QqIFNjcmlw
dENvbnRyb2xsZXI6OmJpbmRpbmdSb290T2JqZWN0KCkKIHsKLSAgICBpZiAoIWNhbkV4ZWN1dGVT
Y3JpcHRzKCkpCisgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNj
cmlwdCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKCFtX2JpbmRpbmdSb290T2JqZWN0
KSB7CkBAIC0zNDQsNyArMzQ0LDcgQEAgUGFzc1JlZlB0cjxCaW5kaW5nczo6Um9vdE9iamVjdD4g
U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlUm9vdE9iamVjdCh2b2lkKiBuYXRpdmUKIE5QT2JqZWN0
KiBTY3JpcHRDb250cm9sbGVyOjp3aW5kb3dTY3JpcHROUE9iamVjdCgpCiB7CiAgICAgaWYgKCFt
X3dpbmRvd1NjcmlwdE5QT2JqZWN0KSB7Ci0gICAgICAgIGlmIChjYW5FeGVjdXRlU2NyaXB0cygp
KSB7CisgICAgICAgIGlmIChjYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlw
dCkpIHsKICAgICAgICAgICAgIC8vIEphdmFTY3JpcHQgaXMgZW5hYmxlZCwgc28gdGhlcmUgaXMg
YSBKYXZhU2NyaXB0IHdpbmRvdyBvYmplY3QuCiAgICAgICAgICAgICAvLyBSZXR1cm4gYW4gTlBP
YmplY3QgYm91bmQgdG8gdGhlIHdpbmRvdyBvYmplY3QuCiAgICAgICAgICAgICBKU0M6OkpTTG9j
ayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CkBAIC0zNzcsNyArMzc3LDcgQEAgTlBPYmpl
Y3QqIFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlwdE9iamVjdEZvclBsdWdpbkVsZW1lbnQo
SFRNTFBsdWdJbkVsZW1lbnQKIEpTT2JqZWN0KiBTY3JpcHRDb250cm9sbGVyOjpqc09iamVjdEZv
clBsdWdpbkVsZW1lbnQoSFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdpbikKIHsKICAgICAvLyBDYW4n
dCBjcmVhdGUgSlNPYmplY3RzIHdoZW4gSmF2YVNjcmlwdCBpcyBkaXNhYmxlZAotICAgIGlmICgh
Y2FuRXhlY3V0ZVNjcmlwdHMoKSkKKyAgICBpZiAoIWNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0
VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBDcmVhdGUgYSBK
U09iamVjdCBib3VuZCB0byB0aGlzIGVsZW1lbnQKQEAgLTQ0NCw3ICs0NDQsNyBAQCBTY3JpcHRW
YWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29y
bGQqIHdvcmxkLCBjb25zdAogewogICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZShzY3Jp
cHQsIGZvcmNlVXNlckdlc3R1cmUgPyBLVVJMKCkgOiBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkp
OwogCi0gICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cygpIHx8IGlzUGF1c2VkKCkpCisgICAgaWYg
KCFjYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkgfHwgaXNQYXVzZWQoKSkK
ICAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CiAKICAgICBib29sIHdhc0luRXhlY3V0ZVNj
cmlwdCA9IG1faW5FeGVjdXRlU2NyaXB0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuaAppbmRleCAxY2JiNTZkLi42YWYxNzM2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuaApAQCAtNjIsNiArNjIsMTEgQEAgY2xhc3MgWFNTQXVkaXRvcjsKIAogdHlwZWRl
ZiBIYXNoTWFwPHZvaWQqLCBSZWZQdHI8SlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdD4gPiBSb290
T2JqZWN0TWFwOwogCitlbnVtIFJlYXNvbkZvckNhbGxpbmdDYW5FeGVjdXRlU2NyaXB0cyB7Cisg
ICAgQWJvdXRUb0V4ZWN1dGVTY3JpcHQsCisgICAgTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQKK307
CisKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXIgewogICAgIGZyaWVuZCBjbGFzcyBTY3JpcHRDYWNo
ZWRGcmFtZURhdGE7CiAgICAgdHlwZWRlZiBXVEY6Okhhc2hNYXA8IFJlZlB0cjxET01XcmFwcGVy
V29ybGQ+LCBKU0M6OlByb3RlY3RlZFB0cjxKU0RPTVdpbmRvd1NoZWxsPiA+IFNoZWxsTWFwOwpA
QCAtMTEwLDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVy
ZShET01XcmFwcGVyV29ybGQqKSBjb25zdDsKICAgICBib29sIGFueVBhZ2VJc1Byb2Nlc3NpbmdV
c2VyR2VzdHVyZSgpIGNvbnN0OwogCi0gICAgYm9vbCBjYW5FeGVjdXRlU2NyaXB0cygpOworICAg
IGJvb2wgY2FuRXhlY3V0ZVNjcmlwdHMoUmVhc29uRm9yQ2FsbGluZ0NhbkV4ZWN1dGVTY3JpcHRz
KTsKIAogICAgIC8vIERlYnVnZ2VyIGNhbiBiZSAwIHRvIGRldGFjaCBhbnkgZXhpc3RpbmcgRGVi
dWdnZXIuCiAgICAgdm9pZCBhdHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKik7IC8vIEF0dGFj
aGVzL2RldGFjaGVzIGluIGFsbCB3b3JsZHMvd2luZG93IHNoZWxscy4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbSBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbQppbmRleCAyMDhhYWU4Li5hODk1NDg5IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0KKysrIGIv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCkBAIC0xMDcsNyArMTA3
LDcgQEAgUGFzc1NjcmlwdEluc3RhbmNlIFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlwdElu
c3RhbmNlRm9yV2lkZ2V0KFdpZGdldCogd2lkZ2UKIAogV2ViU2NyaXB0T2JqZWN0KiBTY3JpcHRD
b250cm9sbGVyOjp3aW5kb3dTY3JpcHRPYmplY3QoKQogewotICAgIGlmICghY2FuRXhlY3V0ZVNj
cmlwdHMoKSkKKyAgICBpZiAoIWNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2Ny
aXB0KSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAoIW1fd2luZG93U2NyaXB0T2JqZWN0
KSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIu
Y3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcAppbmRleCBm
ZDQ1NTQ2Li5hZmE4Nzg0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2
ZW50TGlzdGVuZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0
ZW5lci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgUGFzc1JlZlB0cjxKU0xhenlFdmVudExpc3RlbmVy
PiBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKE5vZGUqIG5vZGUsIEF0dHJpYnUKICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gcHJvdmlkZSBhY2N1cmF0ZSBzb3VyY2UgaW5m
b3JtYXRpb24gZm9yIGZyYW1lbGVzcyBkb2N1bWVudHMsIHRvbyAoZS5nLiBmb3IgaW1wb3J0aW5n
IG5vZGVzIGZyb20gWE1MSHR0cFJlcXVlc3QucmVzcG9uc2VYTUwpLgogICAgIGlmIChGcmFtZSog
ZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpKSB7CiAgICAgICAgIFNjcmlwdENvbnRy
b2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSBmcmFtZS0+c2NyaXB0KCk7Ci0gICAgICAgIGlmICgh
c2NyaXB0Q29udHJvbGxlci0+Y2FuRXhlY3V0ZVNjcmlwdHMoKSkKKyAgICAgICAgaWYgKCFzY3Jp
cHRDb250cm9sbGVyLT5jYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAg
ICAgICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXItPnhz
c0F1ZGl0b3IoKS0+Y2FuQ3JlYXRlSW5saW5lRXZlbnRMaXN0ZW5lcihhdHRyLT5sb2NhbE5hbWUo
KS5zdHJpbmcoKSwgYXR0ci0+dmFsdWUoKSkpIHsKQEAgLTk2LDcgKzk2LDcgQEAgUGFzc1JlZlB0
cjxKU0xhenlFdmVudExpc3RlbmVyPiBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKEZyYW1l
KiBmcmFtZSwgQXR0cmkKICAgICBTdHJpbmcgc291cmNlVVJMOwogICAgIAogICAgIFNjcmlwdENv
bnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSBmcmFtZS0+c2NyaXB0KCk7Ci0gICAgaWYgKCFz
Y3JpcHRDb250cm9sbGVyLT5jYW5FeGVjdXRlU2NyaXB0cygpKQorICAgIGlmICghc2NyaXB0Q29u
dHJvbGxlci0+Y2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQogICAgICAg
ICByZXR1cm4gMDsKIAogICAgIGlmICghc2NyaXB0Q29udHJvbGxlci0+eHNzQXVkaXRvcigpLT5j
YW5DcmVhdGVJbmxpbmVFdmVudExpc3RlbmVyKGF0dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBh
dHRyLT52YWx1ZSgpKSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRT
dGF0ZS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAppbmRleCBiOWYz
MzRhLi4zZWRkMWJkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRl
LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcApAQCAtNTQsNyAr
NTQsNyBAQCBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGVGcm9tTm9kZShET01XcmFwcGVyV29ybGQq
IHdvcmxkLCBOb2RlKiBub2RlKQogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgp
OwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmICghZnJhbWUtPnNj
cmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cygpKQorICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLT5j
YW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIHJldHVy
biAwOwogICAgIHJldHVybiBmcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdCh3b3JsZCktPmds
b2JhbEV4ZWMoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29u
dHJvbGxlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCmlu
ZGV4IDgzODY2OGEuLmRiMjBhM2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9s
bGVyLmNwcApAQCAtMzg5LDcgKzM4OSw3IEBAIE5QT2JqZWN0KiBTY3JpcHRDb250cm9sbGVyOjp3
aW5kb3dTY3JpcHROUE9iamVjdCgpCiAgICAgaWYgKG1fd2luZG93U2NyaXB0TlBPYmplY3QpCiAg
ICAgICAgIHJldHVybiBtX3dpbmRvd1NjcmlwdE5QT2JqZWN0OwogCi0gICAgaWYgKGNhbkV4ZWN1
dGVTY3JpcHRzKCkpIHsKKyAgICBpZiAoY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1
dGVTY3JpcHQpKSB7CiAgICAgICAgIC8vIEphdmFTY3JpcHQgaXMgZW5hYmxlZCwgc28gdGhlcmUg
aXMgYSBKYXZhU2NyaXB0IHdpbmRvdyBvYmplY3QuCiAgICAgICAgIC8vIFJldHVybiBhbiBOUE9i
amVjdCBib3VuZCB0byB0aGUgd2luZG93IG9iamVjdC4KICAgICAgICAgbV93aW5kb3dTY3JpcHRO
UE9iamVjdCA9IGNyZWF0ZVNjcmlwdE9iamVjdChtX2ZyYW1lKTsKQEAgLTQwNiw3ICs0MDYsNyBA
QCBOUE9iamVjdCogU2NyaXB0Q29udHJvbGxlcjo6d2luZG93U2NyaXB0TlBPYmplY3QoKQogTlBP
YmplY3QqIFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlwdE9iamVjdEZvclBsdWdpbkVsZW1l
bnQoSFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdpbikKIHsKICAgICAvLyBDYW4ndCBjcmVhdGUgTlBP
YmplY3RzIHdoZW4gSmF2YVNjcmlwdCBpcyBkaXNhYmxlZC4KLSAgICBpZiAoIWNhbkV4ZWN1dGVT
Y3JpcHRzKCkpCisgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNj
cmlwdCkpCiAgICAgICAgIHJldHVybiBjcmVhdGVOb1NjcmlwdE9iamVjdCgpOwogCiAgICAgdjg6
OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRDb250cm9sbGVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xs
ZXIuaAppbmRleCBiMzk5NWIyLi43ZTEzNzQwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENv
bnRyb2xsZXIuaApAQCAtNTUsNiArNTUsMTEgQEAgY2xhc3MgU3RyaW5nOwogY2xhc3MgV2lkZ2V0
OwogY2xhc3MgWFNTQXVkaXRvcjsKIAorZW51bSBSZWFzb25Gb3JDYWxsaW5nQ2FuRXhlY3V0ZVNj
cmlwdHMgeworICAgIEFib3V0VG9FeGVjdXRlU2NyaXB0LAorICAgIE5vdEFib3V0VG9FeGVjdXRl
U2NyaXB0Cit9OworCiBjbGFzcyBTY3JpcHRDb250cm9sbGVyIHsKIHB1YmxpYzoKICAgICBTY3Jp
cHRDb250cm9sbGVyKEZyYW1lKik7CkBAIC0xMTMsNyArMTE4LDcgQEAgcHVibGljOgogICAgIC8v
IENoZWNrIGlmIHRoZSBqYXZhc2NyaXB0IGVuZ2luZSBoYXMgYmVlbiBpbml0aWFsaXplZC4KICAg
ICBib29sIGhhdmVJbnRlcnByZXRlcigpIGNvbnN0OwogCi0gICAgYm9vbCBjYW5FeGVjdXRlU2Ny
aXB0cygpOworICAgIGJvb2wgY2FuRXhlY3V0ZVNjcmlwdHMoUmVhc29uRm9yQ2FsbGluZ0NhbkV4
ZWN1dGVTY3JpcHRzKTsKIAogICAgIC8vIEZJWE1FOiB2b2lkKiBpcyBhIGNvbXBpbGUgaGFjay4K
ICAgICB2b2lkIGF0dGFjaERlYnVnZ2VyKHZvaWQqKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdEV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IGIzMThkMmUuLmZkYjYwNzYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVyLmNwcApAQCAtNTYsNyArNTYsNyBAQCBQ
YXNzUmVmUHRyPFY4TGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoTm9kZSogbm9kZSwgQXR0cmlidQogCiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IG5vZGUtPmRv
Y3VtZW50KCktPmZyYW1lKCkpIHsKICAgICAgICAgU2NyaXB0Q29udHJvbGxlciogc2NyaXB0Q29u
dHJvbGxlciA9IGZyYW1lLT5zY3JpcHQoKTsKLSAgICAgICAgaWYgKCFzY3JpcHRDb250cm9sbGVy
LT5jYW5FeGVjdXRlU2NyaXB0cygpKQorICAgICAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXItPmNh
bkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgICAgIHJldHVy
biAwOwogCiAgICAgICAgIGlmICghc2NyaXB0Q29udHJvbGxlci0+eHNzQXVkaXRvcigpLT5jYW5D
cmVhdGVJbmxpbmVFdmVudExpc3RlbmVyKGF0dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBhdHRy
LT52YWx1ZSgpKSkgewpAQCAtODksNyArODksNyBAQCBQYXNzUmVmUHRyPFY4TGF6eUV2ZW50TGlz
dGVuZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoRnJhbWUqIGZyYW1lLCBBdHRyaQog
ICAgIFN0cmluZyBzb3VyY2VVUkw7CiAKICAgICBTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250
cm9sbGVyID0gZnJhbWUtPnNjcmlwdCgpOwotICAgIGlmICghc2NyaXB0Q29udHJvbGxlci0+Y2Fu
RXhlY3V0ZVNjcmlwdHMoKSkKKyAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXItPmNhbkV4ZWN1dGVT
Y3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBp
ZiAoIXNjcmlwdENvbnRyb2xsZXItPnhzc0F1ZGl0b3IoKS0+Y2FuQ3JlYXRlSW5saW5lRXZlbnRM
aXN0ZW5lcihhdHRyLT5sb2NhbE5hbWUoKS5zdHJpbmcoKSwgYXR0ci0+dmFsdWUoKSkpIHsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAgYi9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4UHJveHkuY3BwCmluZGV4IDg5YmNlNGQuLjdlZGUwNjQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFByb3h5LmNwcApAQCAtNTYwLDcgKzU2MCw3IEBAIFY4UHJveHkqIFY4UHJveHk6OnJldHJpZXZl
KEZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gMDsKLSAg
ICByZXR1cm4gZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cygpID8gZnJhbWUtPnNj
cmlwdCgpLT5wcm94eSgpIDogMDsKKyAgICByZXR1cm4gZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVj
dXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkgPyBmcmFtZS0+c2NyaXB0KCktPnBy
b3h5KCkgOiAwOwogfQogCiBWOFByb3h5KiBWOFByb3h5OjpyZXRyaWV2ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVu
dC5jcHAgYi9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAppbmRleCA5YTgwZTE2Li4wYTJl
ZmFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAorKysgYi9XZWJD
b3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgU2NyaXB0
RWxlbWVudERhdGE6OmV2YWx1YXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJj
ZUNvZGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX2VsZW1l
bnQtPmRvY3VtZW50KCktPmZyYW1lKCkpIHsKLSAgICAgICAgaWYgKCFmcmFtZS0+c2NyaXB0KCkt
PmNhbkV4ZWN1dGVTY3JpcHRzKCkpCisgICAgICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLT5jYW5F
eGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgbV9ldmFsdWF0ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
WE1MVG9rZW5pemVyTGlieG1sMi5jcHAgYi9XZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXJMaWJ4bWwy
LmNwcAppbmRleCBmY2IzNzE4Li5kZjQ3YTU2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9YTUxU
b2tlbml6ZXJMaWJ4bWwyLmNwcAorKysgYi9XZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXJMaWJ4bWwy
LmNwcApAQCAtNzg2LDcgKzc4Niw3IEBAIHZvaWQgWE1MVG9rZW5pemVyOjpzdGFydEVsZW1lbnRO
cyhjb25zdCB4bWxDaGFyKiB4bWxMb2NhbE5hbWUsIGNvbnN0IHhtbENoYXIqIHhtCiAgICAgfQog
CiAgICAgU2NyaXB0Q29udHJvbGxlcioganNQcm94eSA9IG1fZG9jLT5mcmFtZSgpID8gbV9kb2Mt
PmZyYW1lKCktPnNjcmlwdCgpIDogMDsKLSAgICBpZiAoanNQcm94eSAmJiBtX2RvYy0+ZnJhbWUo
KS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKCkpCisgICAgaWYgKGpzUHJveHkgJiYgbV9k
b2MtPmZyYW1lKCktPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0
ZVNjcmlwdCkpCiAgICAgICAgIGpzUHJveHktPnNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIobGlu
ZU51bWJlcigpKTsKIAogICAgIGhhbmRsZUVsZW1lbnRBdHRyaWJ1dGVzKG5ld0VsZW1lbnQuZ2V0
KCksIGxpYnhtbEF0dHJpYnV0ZXMsIG5iX2F0dHJpYnV0ZXMsIGVjLCBtX3NjcmlwdGluZ1Blcm1p
c3Npb24pOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDEyYjkzZWYuLmUxYjc4ZjEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTExOTQsNyArMTE5NCw3IEBAIGJvb2wg
SFRNTE1lZGlhRWxlbWVudDo6Y29udHJvbHMoKSBjb25zdAogICAgIEZyYW1lKiBmcmFtZSA9IGRv
Y3VtZW50KCktPmZyYW1lKCk7CiAKICAgICAvLyBhbHdheXMgc2hvdyBjb250cm9scyB3aGVuIHNj
cmlwdGluZyBpcyBkaXNhYmxlZAotICAgIGlmIChmcmFtZSAmJiAhZnJhbWUtPnNjcmlwdCgpLT5j
YW5FeGVjdXRlU2NyaXB0cygpKQorICAgIGlmIChmcmFtZSAmJiAhZnJhbWUtPnNjcmlwdCgpLT5j
YW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZShjb250cm9sc0F0dHIpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxU
b2tlbml6ZXIuY3BwCmluZGV4IDk0YTFjMWUuLmQwZjM5NjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aHRtbC9IVE1MVG9rZW5pemVyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5j
cHAKQEAgLTE1MTEsNyArMTUxMSw3IEBAIEhUTUxUb2tlbml6ZXI6OlN0YXRlIEhUTUxUb2tlbml6
ZXI6OnBhcnNlVGFnKFNlZ21lbnRlZFN0cmluZyYgc3JjLCBTdGF0ZSBzdGF0ZSkKICAgICAgICAg
ICAgICAgICBtX3NjcmlwdFRhZ1NyY0F0dHJWYWx1ZSA9IFN0cmluZygpOwogICAgICAgICAgICAg
ICAgIG1fc2NyaXB0VGFnQ2hhcnNldEF0dHJWYWx1ZSA9IFN0cmluZygpOwogICAgICAgICAgICAg
ICAgIGlmIChtX2N1cnJlbnRUb2tlbi5hdHRycyAmJiAhbV9mcmFnbWVudCkgewotICAgICAgICAg
ICAgICAgICAgICBpZiAobV9kb2MtPmZyYW1lKCkgJiYgbV9kb2MtPmZyYW1lKCktPnNjcmlwdCgp
LT5jYW5FeGVjdXRlU2NyaXB0cygpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX2RvYy0+
ZnJhbWUoKSAmJiBtX2RvYy0+ZnJhbWUoKS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKE5v
dEFib3V0VG9FeGVjdXRlU2NyaXB0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChh
ID0gbV9jdXJyZW50VG9rZW4uYXR0cnMtPmdldEF0dHJpYnV0ZUl0ZW0oc3JjQXR0cikpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2NyaXB0VGFnU3JjQXR0clZhbHVlID0gbV9kb2Mt
PmNvbXBsZXRlVVJMKGRlcHJlY2F0ZWRQYXJzZVVSTChhLT52YWx1ZSgpKSkuc3RyaW5nKCk7CiAg
ICAgICAgICAgICAgICAgICAgIH0KQEAgLTE5MjEsNyArMTkyMSw3IEBAIHZvaWQgSFRNTFRva2Vu
aXplcjo6ZmluaXNoKCkKIFBhc3NSZWZQdHI8Tm9kZT4gSFRNTFRva2VuaXplcjo6cHJvY2Vzc1Rv
a2VuKCkKIHsKICAgICBTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0gKCFtX2Zy
YWdtZW50ICYmIG1fZG9jLT5mcmFtZSgpKSA/IG1fZG9jLT5mcmFtZSgpLT5zY3JpcHQoKSA6IDA7
Ci0gICAgaWYgKHNjcmlwdENvbnRyb2xsZXIgJiYgc2NyaXB0Q29udHJvbGxlci0+Y2FuRXhlY3V0
ZVNjcmlwdHMoKSkKKyAgICBpZiAoc2NyaXB0Q29udHJvbGxlciAmJiBzY3JpcHRDb250cm9sbGVy
LT5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIC8v
IEZJWE1FOiBXaHkgaXNuJ3QgdGhpcyBtX2N1cnJlbnRTY3JpcHRUYWdTdGFydExpbmVOdW1iZXI/
ICBJIHN1c3BlY3QgdGhpcyBpcyB3cm9uZy4KICAgICAgICAgc2NyaXB0Q29udHJvbGxlci0+c2V0
RXZlbnRIYW5kbGVyTGluZU51bWJlcihtX2N1cnJlbnRUYWdTdGFydExpbmVOdW1iZXIgKyAxKTsg
Ly8gU2NyaXB0IGxpbmUgbnVtYmVycyBhcmUgMSBiYXNlZC4KICAgICBpZiAobV9kZXN0ID4gbV9i
dWZmZXIpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXgg
YjQ4N2FkOC4uYWEzOTA2ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKQEAgLTIzMCw3ICsyMzAsNyBAQCBzdGF0aWMgYm9vbCBjYW5QYXNzTm9kZVRvSmF2YVNj
cmlwdChOb2RlKiBub2RlKQogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIEZyYW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7Ci0gICAgcmV0dXJu
IGZyYW1lICYmIGZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoKTsKKyAgICByZXR1
cm4gZnJhbWUgJiYgZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRv
RXhlY3V0ZVNjcmlwdCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdChO
b2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVn
U2VydmVyLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAK
aW5kZXggMDNjMzU3Ny4uYmU5Yjk4YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSmF2
YVNjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBKYXZhU2NyaXB0RGVidWdT
ZXJ2ZXI6OnNldEphdmFTY3JpcHRQYXVzZWQoRnJhbWUqIGZyYW1lLCBib29sIHBhdXNlZCkKIHsK
ICAgICBBU1NFUlRfQVJHKGZyYW1lLCBmcmFtZSk7CiAKLSAgICBpZiAoIWZyYW1lLT5zY3JpcHQo
KS0+Y2FuRXhlY3V0ZVNjcmlwdHMoKSkKKyAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhl
Y3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBmcmFtZS0+c2NyaXB0KCktPnNldFBhdXNlZChwYXVzZWQpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCmluZGV4IDQ3ZjMyYzkuLmViY2ExY2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTE0
NjcsNyArMTQ2Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQo
KQogYm9vbCBGcmFtZUxvYWRlcjo6aXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKQogewogICAgIEZy
YW1lKiBmcmFtZSA9IG1fZnJhbWUtPnRyZWUoKS0+dG9wKCk7Ci0gICAgaWYgKCFmcmFtZS0+c2Ny
aXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKCkpCisgICAgaWYgKCFmcmFtZS0+c2NyaXB0KCktPmNh
bkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgcmV0dXJu
IHRydWU7IC8vIElmIEphdmFTY3JpcHQgaXMgZGlzYWJsZWQsIGEgdXNlciBnZXN0dXJlIG11c3Qg
aGF2ZSBpbml0aWF0ZWQgdGhlIG5hdmlnYXRpb24uCiAgICAgcmV0dXJuIGZyYW1lLT5zY3JpcHQo
KS0+cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsgLy8gRklY
TUU6IFVzZSBwYWdlSXNQcm9jZXNzaW5nVXNlckdlc3R1cmUuCiB9CkBAIC0yNjgwLDcgKzI2ODAs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpvcGVuKENhY2hlZFBhZ2UmIGNhY2hlZFBhZ2UpCiAgICAg
Y2xvc2VVUkwoKTsKICAgICAKICAgICAvLyBEZWxldGUgb2xkIHN0YXR1cyBiYXIgbWVzc2FnZXMg
KGlmIGl0IF93YXNfIGFjdGl2YXRlZCBvbiBsYXN0IFVSTCkuCi0gICAgaWYgKG1fZnJhbWUtPnNj
cmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cygpKSB7CisgICAgaWYgKG1fZnJhbWUtPnNjcmlwdCgp
LT5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpIHsKICAgICAgICAg
bV9mcmFtZS0+c2V0SlNTdGF0dXNCYXJUZXh0KFN0cmluZygpKTsKICAgICAgICAgbV9mcmFtZS0+
c2V0SlNEZWZhdWx0U3RhdHVzQmFyVGV4dChTdHJpbmcoKSk7CiAgICAgfQpAQCAtMzkxMCw3ICsz
OTEwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEb2N1bWVudEVsZW1lbnRBdmFpbGFi
bGUoKQogCiB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0c0lu
QWxsV29ybGRzKCkKIHsKLSAgICBpZiAoIW1fZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2Ny
aXB0cygpKQorICAgIGlmICghbV9mcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKE5v
dEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVmVjdG9yPERP
TVdyYXBwZXJXb3JsZCo+IHdvcmxkczsKQEAgLTM5MjEsNyArMzkyMSw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RzSW5BbGxXb3JsZHMoKQogCiB2b2lk
IEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFw
cGVyV29ybGQqIHdvcmxkKQogewotICAgIGlmICghbV9mcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1
dGVTY3JpcHRzKCkgfHwgIW1fZnJhbWUtPnNjcmlwdCgpLT5leGlzdGluZ1dpbmRvd1NoZWxsKHdv
cmxkKSkKKyAgICBpZiAoIW1fZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhOb3RB
Ym91dFRvRXhlY3V0ZVNjcmlwdCkgfHwgIW1fZnJhbWUtPnNjcmlwdCgpLT5leGlzdGluZ1dpbmRv
d1NoZWxsKHdvcmxkKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jbGllbnQtPmRpc3BhdGNo
RGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKHdvcmxkKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNs
aWVudC5oCmluZGV4IDIzZDEzYmMuLjYzN2M0ZjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGll
bnQuaApAQCAtMjYwLDYgKzI2MCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBhbGxvd0phdmFTY3JpcHQoYm9vbCBlbmFibGVkUGVyU2V0dGluZ3MpIHsgcmV0
dXJuIGVuYWJsZWRQZXJTZXR0aW5nczsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dQbHVn
aW5zKGJvb2wgZW5hYmxlZFBlclNldHRpbmdzKSB7IHJldHVybiBlbmFibGVkUGVyU2V0dGluZ3M7
IH0KICAgICAgICAgdmlydHVhbCBib29sIGFsbG93SW1hZ2VzKGJvb2wgZW5hYmxlZFBlclNldHRp
bmdzKSB7IHJldHVybiBlbmFibGVkUGVyU2V0dGluZ3M7IH0KKworICAgICAgICAvLyBUaGlzIGNh
bGxiYWNrIG5vdGlmaWVzIHRoZSBjbGllbnQgdGhhdCB0aGUgZnJhbWUgd2FzIGFib3V0IHRvIHJ1
bgorICAgICAgICAvLyBKYXZhU2NyaXB0IGJ1dCBkaWQgbm90IGJlY2F1c2UgYWxsb3dKYXZhU2Ny
aXB0IHJldHVybmVkIGZhbHNlLiBXZQorICAgICAgICAvLyBoYXZlIGEgc2VwYXJhdGUgY2FsbGJh
Y2sgaGVyZSBiZWNhdXNlIHRoZXJlIGFyZSBhIG51bWJlciBvZiBwbGFjZXMKKyAgICAgICAgLy8g
dGhhdCBuZWVkIHRvIGtub3cgaWYgSmF2YVNjcmlwdCBpcyBlbmFibGVkIGJ1dCBhcmUgbm90IG5l
Y2Vzc2FyaWx5CisgICAgICAgIC8vIHByZXBhcmluZyB0byBleGVjdXRlIHNjcmlwdC4KKyAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZEZhaWxUb0V4ZWN1dGVKYXZhU2NyaXB0KCkgeyB9CiAgICAgfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZDhkODlhMi4uNjFkZDU3
MyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDItMjEgIEFkYW0gQmFydGgg
IDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBbQ2hyb21pdW0gQVBJXSBEaXNhbWJpZ3VhdGUgYWxsb3dKYXZhU2NyaXB0
IGZyb20gZGlkRmFpbFRvRXhlY3V0ZUphdmFTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MjA1CisKKyAgICAgICAgUGx1bWIgZGlkRmFpbFRv
RXhlY3V0ZUphdmFTY3JpcHQgdGhyb3VnaCBDaHJvbWl1bSdzIFdlYktpdCBBUEkuCisKKyAgICAg
ICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVD
bGllbnQ6OmRpZEZhaWxUb0V4ZWN1dGVTY3JpcHQpOgorICAgICAgICAqIHNyYy9EZWJ1Z2dlckFn
ZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRlYnVnZ2VyQWdlbnRJbXBsOjpjcmVhdGVV
dGlsaXR5Q29udGV4dCk6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlkRmFpbFRvRXhlY3V0
ZUphdmFTY3JpcHQpOgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaDoKKyAg
ICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJ
bXBsOjpiaW5kVG9XaW5kb3dPYmplY3QpOgorCiAyMDEwLTAyLTE5ICBNYWNpZWogU3RhY2hvd2lh
ayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmggYi9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKaW5kZXggYWUyNTQxYS4uZjJhMmFj
YiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaApAQCAtMjUyLDYgKzI1
Miw5IEBAIHB1YmxpYzoKICAgICAvLyBDb250cm9scyB3aGV0aGVyIHNjcmlwdHMgYXJlIGFsbG93
ZWQgdG8gZXhlY3V0ZSBmb3IgdGhpcyBmcmFtZS4KICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dTY3Jp
cHQoV2ViRnJhbWUqLCBib29sIGVuYWJsZWRQZXJTZXR0aW5ncykgeyByZXR1cm4gZW5hYmxlZFBl
clNldHRpbmdzOyB9CiAKKyAgICAvLyBOb3RpZmllcyB0aGUgY2xpZW50IHRoYXQgdGhlIGZyYW1l
IHdvdWxkIGhhdmUgZXhlY3V0ZWQgc2NyaXB0IGlmIHNjcmlwdCB3ZXJlIGVuYWJsZWQuCisgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWxUb0V4ZWN1dGVTY3JpcHQoV2ViRnJhbWUqKSB7IH0KKwogICAg
IC8vIFNjcmlwdCBpbiB0aGUgcGFnZSB0cmllZCB0byBhbGxvY2F0ZSB0b28gbXVjaCBtZW1vcnku
CiAgICAgdmlydHVhbCB2b2lkIGRpZEV4aGF1c3RNZW1vcnlBdmFpbGFibGVGb3JTY3JpcHQoV2Vi
RnJhbWUqKSB7IH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9EZWJ1Z2dlckFn
ZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnRJbXBsLmNwcApp
bmRleCBkNTkyNzEwLi5kYWQ4MDRhIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Rl
YnVnZ2VyQWdlbnRJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdl
bnRJbXBsLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIERlYnVnZ2VyQWdlbnRJbXBsOjpkZWJ1
Z2dlck91dHB1dChjb25zdCBTdHJpbmcmIGNvbW1hbmQpCiB2b2lkIERlYnVnZ2VyQWdlbnRJbXBs
OjpjcmVhdGVVdGlsaXR5Q29udGV4dChGcmFtZSogZnJhbWUsIHY4OjpQZXJzaXN0ZW50PHY4OjpD
b250ZXh0PiogY29udGV4dCkKIHsKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAgYm9v
bCBjYW5FeGVjdXRlU2NyaXB0cyA9IGZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMo
KTsKKyAgICBib29sIGNhbkV4ZWN1dGVTY3JpcHRzID0gZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVj
dXRlU2NyaXB0cyhXZWJDb3JlOjpOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCk7CiAKICAgICAvLyBT
ZXQgdXAgdGhlIERPTSB3aW5kb3cgYXMgdGhlIHByb3RvdHlwZSBvZiB0aGUgbmV3IGdsb2JhbCBv
YmplY3QuCiAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gd2luZG93Q29udGV4dCA9IFY4UHJv
eHk6OmNvbnRleHQoZnJhbWUpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFt
ZUxvYWRlckNsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNs
aWVudEltcGwuY3BwCmluZGV4IDhmYjI2N2QuLmRjOTViMDYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21p
dW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKQEAgLTE4MCw2ICsxODAsMTIgQEAgYm9v
bCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmFsbG93SW1hZ2VzKGJvb2wgZW5hYmxlZFBlclNldHRp
bmdzKQogICAgIHJldHVybiBlbmFibGVkUGVyU2V0dGluZ3M7CiB9CiAKK3ZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsOjpkaWRGYWlsVG9FeGVjdXRlSmF2YVNjcmlwdCgpCit7CisgICAgaWYgKG1f
d2ViRnJhbWUtPmNsaWVudCgpKQorICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkRmFp
bFRvRXhlY3V0ZVNjcmlwdChtX3dlYkZyYW1lKTsKK30KKwogYm9vbCBGcmFtZUxvYWRlckNsaWVu
dEltcGw6Omhhc1dlYlZpZXcoKSBjb25zdAogewogICAgIHJldHVybiBtX3dlYkZyYW1lLT52aWV3
SW1wbCgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKaW5k
ZXggOGEzOTM5My4uYzYwMWE1ZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFt
ZUxvYWRlckNsaWVudEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5oCkBAIC0xOTUsNiArMTk1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBhbGxvd0phdmFTY3JpcHQoYm9vbCBlbmFibGVkUGVyU2V0dGluZ3MpOwogICAgIHZpcnR1YWwg
Ym9vbCBhbGxvd1BsdWdpbnMoYm9vbCBlbmFibGVkUGVyU2V0dGluZ3MpOwogICAgIHZpcnR1YWwg
Ym9vbCBhbGxvd0ltYWdlcyhib29sIGVuYWJsZWRQZXJTZXR0aW5ncyk7CisgICAgdmlydHVhbCB2
b2lkIGRpZEZhaWxUb0V4ZWN1dGVKYXZhU2NyaXB0KCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBt
YWtlRG9jdW1lbnRWaWV3KCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZy
YW1lSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKaW5kZXgg
NjY1ZjZhMy4uOWNjMGNiZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFt
ZUltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAt
NTk2LDcgKzU5Niw3IEBAIE5QT2JqZWN0KiBXZWJGcmFtZUltcGw6OndpbmRvd09iamVjdCgpIGNv
bnN0CiB2b2lkIFdlYkZyYW1lSW1wbDo6YmluZFRvV2luZG93T2JqZWN0KGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSwgTlBPYmplY3QqIG9iamVjdCkKIHsKICAgICBBU1NFUlQobV9mcmFtZSk7Ci0gICAg
aWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoKSkK
KyAgICBpZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0
cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmlu
ZyBrZXkgPSBuYW1lOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQv
bWFjL0NoYW5nZUxvZwppbmRleCBhMjE3NTQzLi4yODVmZGEwIDEwMDY0NAotLS0gYS9XZWJLaXQv
bWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDEwLTAyLTIxICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtIEFQSV0gRGlz
YW1iaWd1YXRlIGFsbG93SmF2YVNjcmlwdCBmcm9tIGRpZEZhaWxUb0V4ZWN1dGVKYXZhU2NyaXB0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTIwNQor
CisgICAgICAgIE1ha2UgdGhlc2UgdHdvIGNhbGxzaXRlcyBleHBsaWNpdCBhYm91dCBub3QgcnVu
bmluZyBzY3JpcHQgaW1tZWRpYXRlbHkuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eTo6Z2V0V2luZG93TlBPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpO
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmRlbWFyc2hhbFZhbHVlRnJvbUFycmF5KToKKwog
MjAxMC0wMi0xOSAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhdmlkIExldmluLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9XZWJLaXQvbWFjL1BsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCA1MTVmOWY3Li43
ZmQ2YmE3IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtNzgyLDcgKzc4Miw3IEBAIGJvb2wgTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5OjpnZXRXaW5kb3dOUE9iamVjdCh1aW50MzJfdCYgb2JqZWN0
SUQpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIGlm
ICghZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cygpKQorICAgIGlmICghZnJhbWUt
PnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAg
ICAgICAgIG9iamVjdElEID0gMDsKICAgICBlbHNlCiAgICAgICAgIG9iamVjdElEID0gbV9sb2Nh
bE9iamVjdHMuaWRGb3JPYmplY3QoZnJhbWUtPnNjcmlwdCgpLT53aW5kb3dTaGVsbChwbHVnaW5X
b3JsZCgpKS0+d2luZG93KCkpOwpAQCAtMTI4Nyw3ICsxMjg3LDcgQEAgYm9vbCBOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk6OmRlbWFyc2hhbFZhbHVlRnJvbUFycmF5KEV4ZWNTdGF0ZSogZXhl
YywgTlNBcnIKICAgICAgICAgICAgIGlmICghZnJhbWUpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS0+
Y2FuRXhlY3V0ZVNjcmlwdHMoKSkKKyAgICAgICAgICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLT5j
YW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICBSZWZQdHI8Um9vdE9iamVjdD4gcm9vdE9i
amVjdCA9IGZyYW1lLT5zY3JpcHQoKS0+Y3JlYXRlUm9vdE9iamVjdChtX3BsdWdpblZpZXcpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49435</attachid>
            <date>2010-02-24 14:17:01 -0800</date>
            <delta_ts>2010-02-24 14:34:45 -0800</delta_ts>
            <desc>patch v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>29831</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTE5OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzcgQEAKKzIwMTAtMDItMjQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hy
b21pdW0gQVBJXSBEaXNhbWJpZ3VhdGUgYWxsb3dKYXZhU2NyaXB0IGZyb20gZGlkTm90QWxsb3dT
Y3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1
MjA1CisKKyAgICAgICAgRm9yIGNsaWVudHMgdGhhdCB3YW50IHRvIHNob3cgYSB1c2VyIGludGVy
ZmFjZSBlbGVtZW50IHdoZW4gSmF2YVNjcmlwdAorICAgICAgICB3YXMgYmxvY2tlZCBvbiBhIHBh
Z2UsIHdlIG5lZWQgdG8gZGlzYW1iaWd1YXRlIGJldHdlZW4gcXVlcnlpbmcgdGhlCisgICAgICAg
IGNsaWVudCBmb3Igd2hldGhlciBKYXZhU2NyaXB0IGlzIGVuYWJsZWQgZnJvbSBhY3R1YWxseSBm
YWlsaW5nIHRvCisgICAgICAgIGV4ZWN1dGUgc29tZSBzY3JpcHQuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBhZGRzIGEgbmV3IEZyYW1lTG9hZGVyQ2xpZW50IGNhbGxiYWNrIGZvciB3aGVuIFdlYkNv
cmUgd291bGQKKyAgICAgICAgbGlrZSB0byBleGVjdXRlIEphdmFTY3JpcHQgYnV0IGZhaWxzIHRv
IGJlY2F1c2UgSmF2YVNjcmlwdCBpcyBkaXNhYmxlZC4KKworICAgICAgICBUaGlzIHBhdGNoIGFs
c28gdG91Y2hlcyBldmVyeSBjbGllbnQgb2YgY2FuRXhlY3V0ZVNjcmlwdHMgc28gdGhleSBjYW4K
KyAgICAgICAgaW5kaWNhdGUgd2hldGhlciB3ZSBzaG91bGQgbWFrZSB0aGlzIGNhbGxiYWNrLiAg
SSB3YXMgaG9waW5nIHRoZXJlIHdhcworICAgICAgICBhIGJldHRlciBjaG9rZSBwb2ludCwgYnV0
IG15IGZpcnN0IHR3byBhdHRlbXB0cyB3ZXJlIHdyb25nIGluIHN1YnRsZQorICAgICAgICB3YXlz
LiAgcGthc3RpbmcgcG9pbnRzIG91dCB0aGF0IHRoaXMgd2lsbCBiZSBlYXN5IHRvIHNjcmV3IHVw
IGluIHRoZQorICAgICAgICBmdXR1cmUsIHNvIGl0J3MgYmV0dGVyIHRvIG1ha2UgYWxsIHRoZSBj
bGllbnRzIGJlIGV4cGxpY2l0LgorCisgICAgICAgICogV2ViQ29yZS5QbHVnaW5Ib3N0UHJvY2Vz
cy5leHA6CisgICAgICAgICogYmluZGluZ3MvU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y2FuRXhlY3V0ZVNjcmlwdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTGF6
eUV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNMYXp5RXZlbnRMaXN0ZW5l
cjo6aW5pdGlhbGl6ZUpTRnVuY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxl
ZEFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6YmluZGluZ1Jvb3RPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6d2luZG93U2NyaXB0TlBPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6anNPYmplY3RGb3JQbHVnaW5FbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxk
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjopOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjp3aW5kb3dTY3JpcHRPYmplY3Qp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpzZXRKYXZhU2NyaXB0UGF1c2VkKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNjcmlwdFN0YXRlRnJvbU5vZGUp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6d2luZG93U2NyaXB0TlBPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0T2JqZWN0Rm9yUGx1Z2lu
RWxlbWVudCk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3Rl
bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhQcm94eTo6cmV0cmlldmUpOgorICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnREYXRhOjpldmFsdWF0ZVNjcmlwdCk6CisgICAg
ICAgICogZG9tL1hNTFRva2VuaXplckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1M
VG9rZW5pemVyOjpzdGFydEVsZW1lbnROcyk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNvbnRyb2xzKToK
KyAgICAgICAgKiBodG1sL0hUTUxUb2tlbml6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRva2VuaXplcjo6cGFyc2VUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6
cHJvY2Vzc1Rva2VuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5QYXNzTm9kZVRvSmF2YVNjcmlwdCk6CisgICAgICAg
ICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Ojppc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDbGVh
cldpbmRvd09iamVjdHNJbkFsbFdvcmxkcyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgorICAgICAgICAqIGxvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnQ6OmRpZE5vdEFsbG93U2NyaXB0KToKKwogMjAxMC0wMi0yNCAgUGV0ZXIgS2FzdGluZyAgPHBr
YXN0aW5nQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5k
ZXg6IFdlYkNvcmUvV2ViQ29yZS5QbHVnaW5Ib3N0UHJvY2Vzcy5leHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9XZWJDb3JlLlBsdWdpbkhvc3RQcm9jZXNzLmV4cAkocmV2aXNpb24gNTUxOTgpCisr
KyBXZWJDb3JlL1dlYkNvcmUuUGx1Z2luSG9zdFByb2Nlc3MuZXhwCSh3b3JraW5nIGNvcHkpCkBA
IC05LDcgKzksNyBAQCBfX1pON1dlYkNvcmUxM0lkZW50aWZpZXJSZXAzZ2V0RWkKIF9fWk43V2Vi
Q29yZTEzSWRlbnRpZmllclJlcDNnZXRFUEtjCiBfX1pON1dlYkNvcmUxM0lkZW50aWZpZXJSZXA3
aXNWYWxpZEVQUzBfCiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIxNmNyZWF0ZVJvb3RP
YmplY3RFUHYKLV9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjE3Y2FuRXhlY3V0ZVNjcmlw
dHNFdgorX19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMTdjYW5FeGVjdXRlU2NyaXB0c0VO
U18zM1JlYXNvbkZvckNhbGxpbmdDYW5FeGVjdXRlU2NyaXB0c0UKIF9fWk43V2ViQ29yZTE2U2Ny
aXB0Q29udHJvbGxlcjI0anNPYmplY3RGb3JQbHVnaW5FbGVtZW50RVBOU18xN0hUTUxQbHVnSW5F
bGVtZW50RQogX19aTjdXZWJDb3JlNlN0cmluZzI2ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2tF
UEtjbQogX19aTjdXZWJDb3JlNlN0cmluZzhmcm9tVVRGOEVQS2NtCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcAkocmV2aXNpb24gNTUxOTgpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsMTQgKzMxLDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBTY3JpcHRDb250
cm9sbGVyOjpjYW5FeGVjdXRlU2NyaXB0cygpCitib29sIFNjcmlwdENvbnRyb2xsZXI6OmNhbkV4
ZWN1dGVTY3JpcHRzKFJlYXNvbkZvckNhbGxpbmdDYW5FeGVjdXRlU2NyaXB0cyByZWFzb24pCiB7
CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBnZXQgdGhpcyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBk
b2N1bWVudCBpbnN0ZWFkIG9mIHRoZSBmcmFtZS4KICAgICBpZiAobV9mcmFtZS0+bG9hZGVyKCkt
PmlzU2FuZGJveGVkKFNhbmRib3hTY3JpcHRzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9mcmFtZS0+c2V0dGluZ3MoKTsKLSAgICByZXR1cm4g
bV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5hbGxvd0phdmFTY3JpcHQoc2V0dGluZ3MgJiYg
c2V0dGluZ3MtPmlzSmF2YVNjcmlwdEVuYWJsZWQoKSk7CisgICAgY29uc3QgYm9vbCBhbGxvd2Vk
ID0gbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5hbGxvd0phdmFTY3JpcHQoc2V0dGluZ3Mg
JiYgc2V0dGluZ3MtPmlzSmF2YVNjcmlwdEVuYWJsZWQoKSk7CisgICAgaWYgKCFhbGxvd2VkICYm
IHJlYXNvbiA9PSBBYm91dFRvRXhlY3V0ZVNjcmlwdCkKKyAgICAgICAgbV9mcmFtZS0+bG9hZGVy
KCktPmNsaWVudCgpLT5kaWROb3RBbGxvd1NjcmlwdCgpOworICAgIHJldHVybiBhbGxvd2VkOwog
fQogCiBTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0KGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCkBAIC00OCw3ICs1MSw3IEBAIFNj
cmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3IKIAogU2NyaXB0VmFsdWUgU2Ny
aXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3Vy
Y2VDb2RlKQogewotICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoKSB8fCBpc1BhdXNlZCgpKQor
ICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8IGlzUGF1
c2VkKCkpCiAgICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOwogCiAgICAgYm9vbCB3YXNJbkV4
ZWN1dGVTY3JpcHQgPSBtX2luRXhlY3V0ZVNjcmlwdDsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudExpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXZlbnRMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDU1MTk4KQorKysgV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBA
IHZvaWQgSlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHQKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgLy8gRklYTUU6IElzIHRoaXMgY2hlY2sgbmVlZGVkIGZvciBvdGhlciBj
b250ZXh0cz8KICAgICAgICAgU2NyaXB0Q29udHJvbGxlciogc2NyaXB0ID0gZnJhbWUtPnNjcmlw
dCgpOwotICAgICAgICBpZiAoIXNjcmlwdC0+Y2FuRXhlY3V0ZVNjcmlwdHMoKSB8fCBzY3JpcHQt
PmlzUGF1c2VkKCkpCisgICAgICAgIGlmICghc2NyaXB0LT5jYW5FeGVjdXRlU2NyaXB0cyhBYm91
dFRvRXhlY3V0ZVNjcmlwdCkgfHwgc2NyaXB0LT5pc1BhdXNlZCgpKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3Rl
bmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlz
dGVuZXIuY3BwCShyZXZpc2lvbiA1NTE5OCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5
RXZlbnRMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgSlNPYmpl
Y3QqIEpTTGF6eUV2ZW50TGlzdGVuZXI6OmluaXRpYWxpegogICAgICAgICByZXR1cm4gMDsKIAog
ICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSBmcmFtZS0+c2NyaXB0KCk7
Ci0gICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT5jYW5FeGVjdXRlU2NyaXB0cygpKQorICAgIGlm
ICghc2NyaXB0Q29udHJvbGxlci0+Y2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3Jp
cHQpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSB0b0pTRE9NR2xvYmFsT2JqZWN0KGV4ZWN1dGlvbkNvbnRleHQsIGlzb2xhdGVkV29y
bGQoKSk7CkBAIC05Myw3ICs5Myw3IEBAIEpTT2JqZWN0KiBKU0xhenlFdmVudExpc3RlbmVyOjpp
bml0aWFsaXoKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAvLyBGSVhNRTogSXMgdGhp
cyBjaGVjayBuZWVkZWQgZm9yIG5vbi1Eb2N1bWVudCBjb250ZXh0cz8KICAgICAgICAgU2NyaXB0
Q29udHJvbGxlciogc2NyaXB0ID0gZnJhbWUtPnNjcmlwdCgpOwotICAgICAgICBpZiAoIXNjcmlw
dC0+Y2FuRXhlY3V0ZVNjcmlwdHMoKSB8fCBzY3JpcHQtPmlzUGF1c2VkKCkpCisgICAgICAgIGlm
ICghc2NyaXB0LT5jYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkgfHwgc2Ny
aXB0LT5pc1BhdXNlZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCShyZXZpc2lvbiA1NTE5OCkKKysr
IFdlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKERvY3VtZW50
KiAKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IHdpbmRvdy0+
aW1wbCgpLT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5zY3JpcHQoKS0+Y2Fu
RXhlY3V0ZVNjcmlwdHMoKSkKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+c2NyaXB0KCktPmNh
bkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgZnJhbWUtPnNjcmlwdCgpLT5zZXRQcm9jZXNzaW5nVGltZXJDYWxsYmFjayh0cnVlKTsK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24g
NTUxOTgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMTcsNyArMzE3LDcgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjp1cGRh
dGVTZWN1cml0eU9yaQogCiBCaW5kaW5nczo6Um9vdE9iamVjdCogU2NyaXB0Q29udHJvbGxlcjo6
YmluZGluZ1Jvb3RPYmplY3QoKQogewotICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoKSkKKyAg
ICBpZiAoIWNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICBpZiAoIW1fYmluZGluZ1Jvb3RPYmplY3QpIHsKQEAgLTM0NCw3
ICszNDQsNyBAQCBQYXNzUmVmUHRyPEJpbmRpbmdzOjpSb290T2JqZWN0PiBTY3JpcHRDCiBOUE9i
amVjdCogU2NyaXB0Q29udHJvbGxlcjo6d2luZG93U2NyaXB0TlBPYmplY3QoKQogewogICAgIGlm
ICghbV93aW5kb3dTY3JpcHROUE9iamVjdCkgewotICAgICAgICBpZiAoY2FuRXhlY3V0ZVNjcmlw
dHMoKSkgeworICAgICAgICBpZiAoY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVT
Y3JpcHQpKSB7CiAgICAgICAgICAgICAvLyBKYXZhU2NyaXB0IGlzIGVuYWJsZWQsIHNvIHRoZXJl
IGlzIGEgSmF2YVNjcmlwdCB3aW5kb3cgb2JqZWN0LgogICAgICAgICAgICAgLy8gUmV0dXJuIGFu
IE5QT2JqZWN0IGJvdW5kIHRvIHRoZSB3aW5kb3cgb2JqZWN0LgogICAgICAgICAgICAgSlNDOjpK
U0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwpAQCAtMzc3LDcgKzM3Nyw3IEBAIE5Q
T2JqZWN0KiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVTY3JpcHQKIEpTT2JqZWN0KiBTY3JpcHRD
b250cm9sbGVyOjpqc09iamVjdEZvclBsdWdpbkVsZW1lbnQoSFRNTFBsdWdJbkVsZW1lbnQqIHBs
dWdpbikKIHsKICAgICAvLyBDYW4ndCBjcmVhdGUgSlNPYmplY3RzIHdoZW4gSmF2YVNjcmlwdCBp
cyBkaXNhYmxlZAotICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoKSkKKyAgICBpZiAoIWNhbkV4
ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICAvLyBDcmVhdGUgYSBKU09iamVjdCBib3VuZCB0byB0aGlzIGVsZW1lbnQKQEAgLTQ0
NCw3ICs0NDQsNyBAQCBTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyCiB7
CiAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlKHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVy
ZSA/IEtVUkwoKSA6IG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKSk7CiAKLSAgICBpZiAoIWNhbkV4
ZWN1dGVTY3JpcHRzKCkgfHwgaXNQYXVzZWQoKSkKKyAgICBpZiAoIWNhbkV4ZWN1dGVTY3JpcHRz
KEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQogICAgICAgICByZXR1cm4gU2Ny
aXB0VmFsdWUoKTsKIAogICAgIGJvb2wgd2FzSW5FeGVjdXRlU2NyaXB0ID0gbV9pbkV4ZWN1dGVT
Y3JpcHQ7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAkocmV2aXNp
b24gNTUxOTgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNjIsNiArNjIsMTEgQEAgY2xhc3MgWFNTQXVkaXRvcjsKIAogdHlwZWRl
ZiBIYXNoTWFwPHZvaWQqLCBSZWZQdHI8SlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdD4gPiBSb290
T2JqZWN0TWFwOwogCitlbnVtIFJlYXNvbkZvckNhbGxpbmdDYW5FeGVjdXRlU2NyaXB0cyB7Cisg
ICAgQWJvdXRUb0V4ZWN1dGVTY3JpcHQsCisgICAgTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQKK307
CisKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXIgewogICAgIGZyaWVuZCBjbGFzcyBTY3JpcHRDYWNo
ZWRGcmFtZURhdGE7CiAgICAgdHlwZWRlZiBXVEY6Okhhc2hNYXA8IFJlZlB0cjxET01XcmFwcGVy
V29ybGQ+LCBKU0M6OlByb3RlY3RlZFB0cjxKU0RPTVdpbmRvd1NoZWxsPiA+IFNoZWxsTWFwOwpA
QCAtMTEwLDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVy
ZShET01XcmFwcGVyV29ybGQqKSBjb25zdDsKICAgICBib29sIGFueVBhZ2VJc1Byb2Nlc3NpbmdV
c2VyR2VzdHVyZSgpIGNvbnN0OwogCi0gICAgYm9vbCBjYW5FeGVjdXRlU2NyaXB0cygpOworICAg
IGJvb2wgY2FuRXhlY3V0ZVNjcmlwdHMoUmVhc29uRm9yQ2FsbGluZ0NhbkV4ZWN1dGVTY3JpcHRz
KTsKIAogICAgIC8vIERlYnVnZ2VyIGNhbiBiZSAwIHRvIGRldGFjaCBhbnkgZXhpc3RpbmcgRGVi
dWdnZXIuCiAgICAgdm9pZCBhdHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKik7IC8vIEF0dGFj
aGVzL2RldGFjaGVzIGluIGFsbCB3b3JsZHMvd2luZG93IHNoZWxscy4KSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0JKHJldmlzaW9uIDU1MTk4KQorKysg
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDcsNyArMTA3LDcgQEAgUGFzc1NjcmlwdEluc3RhbmNlIFNjcmlwdENvbnRyb2xsZXI6
OmNyZQogCiBXZWJTY3JpcHRPYmplY3QqIFNjcmlwdENvbnRyb2xsZXI6OndpbmRvd1NjcmlwdE9i
amVjdCgpCiB7Ci0gICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cygpKQorICAgIGlmICghY2FuRXhl
Y3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQogICAgICAgICByZXR1cm4gMDsK
IAogICAgIGlmICghbV93aW5kb3dTY3JpcHRPYmplY3QpIHsKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCShyZXZpc2lvbiA1NTE5OCkKKysrIFdlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzgs
NyArMzc4LDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0SmF2YVNjcmlwdFBhdQogewog
ICAgIEFTU0VSVF9BUkcoZnJhbWUsIGZyYW1lKTsKIAotICAgIGlmICghZnJhbWUtPnNjcmlwdCgp
LT5jYW5FeGVjdXRlU2NyaXB0cygpKQorICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVj
dXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGZyYW1lLT5zY3JpcHQoKS0+c2V0UGF1c2VkKHBhdXNlZCk7CkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDU1MTk4KQorKysg
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjQsNyArNjQsNyBAQCBQYXNzUmVmUHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0
ZUF0CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIHByb3ZpZGUgYWNjdXJhdGUg
c291cmNlIGluZm9ybWF0aW9uIGZvciBmcmFtZWxlc3MgZG9jdW1lbnRzLCB0b28gKGUuZy4gZm9y
IGltcG9ydGluZyBub2RlcyBmcm9tIFhNTEh0dHBSZXF1ZXN0LnJlc3BvbnNlWE1MKS4KICAgICBp
ZiAoRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewogICAgICAgICBT
Y3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0gZnJhbWUtPnNjcmlwdCgpOwotICAg
ICAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXItPmNhbkV4ZWN1dGVTY3JpcHRzKCkpCisgICAgICAg
IGlmICghc2NyaXB0Q29udHJvbGxlci0+Y2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVT
Y3JpcHQpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgaWYgKCFzY3JpcHRDb250
cm9sbGVyLT54c3NBdWRpdG9yKCktPmNhbkNyZWF0ZUlubGluZUV2ZW50TGlzdGVuZXIoYXR0ci0+
bG9jYWxOYW1lKCkuc3RyaW5nKCksIGF0dHItPnZhbHVlKCkpKSB7CkBAIC05Niw3ICs5Niw3IEBA
IFBhc3NSZWZQdHI8SlNMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXQKICAgICBTdHJpbmcgc291
cmNlVVJMOwogICAgIAogICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSBm
cmFtZS0+c2NyaXB0KCk7Ci0gICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT5jYW5FeGVjdXRlU2Ny
aXB0cygpKQorICAgIGlmICghc2NyaXB0Q29udHJvbGxlci0+Y2FuRXhlY3V0ZVNjcmlwdHMoQWJv
dXRUb0V4ZWN1dGVTY3JpcHQpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmICghc2NyaXB0
Q29udHJvbGxlci0+eHNzQXVkaXRvcigpLT5jYW5DcmVhdGVJbmxpbmVFdmVudExpc3RlbmVyKGF0
dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBhdHRyLT52YWx1ZSgpKSkgewpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAJKHJldmlzaW9uIDU1MTk4KQorKysgV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAg
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlRnJvbU5vZGUoRE9NV3JhcAogICAgIEZyYW1lKiBmcmFt
ZSA9IGRvY3VtZW50LT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAw
OwotICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cygpKQorICAgIGlm
ICghZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNj
cmlwdCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBmcmFtZS0+c2NyaXB0KCktPmds
b2JhbE9iamVjdCh3b3JsZCktPmdsb2JhbEV4ZWMoKTsKIH0KSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNTUxOTgpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODksNyAr
Mzg5LDcgQEAgTlBPYmplY3QqIFNjcmlwdENvbnRyb2xsZXI6OndpbmRvd1NjcmlwdAogICAgIGlm
IChtX3dpbmRvd1NjcmlwdE5QT2JqZWN0KQogICAgICAgICByZXR1cm4gbV93aW5kb3dTY3JpcHRO
UE9iamVjdDsKIAotICAgIGlmIChjYW5FeGVjdXRlU2NyaXB0cygpKSB7CisgICAgaWYgKGNhbkV4
ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkgewogICAgICAgICAvLyBKYXZh
U2NyaXB0IGlzIGVuYWJsZWQsIHNvIHRoZXJlIGlzIGEgSmF2YVNjcmlwdCB3aW5kb3cgb2JqZWN0
LgogICAgICAgICAvLyBSZXR1cm4gYW4gTlBPYmplY3QgYm91bmQgdG8gdGhlIHdpbmRvdyBvYmpl
Y3QuCiAgICAgICAgIG1fd2luZG93U2NyaXB0TlBPYmplY3QgPSBjcmVhdGVTY3JpcHRPYmplY3Qo
bV9mcmFtZSk7CkBAIC00MDYsNyArNDA2LDcgQEAgTlBPYmplY3QqIFNjcmlwdENvbnRyb2xsZXI6
OndpbmRvd1NjcmlwdAogTlBPYmplY3QqIFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlwdE9i
amVjdEZvclBsdWdpbkVsZW1lbnQoSFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdpbikKIHsKICAgICAv
LyBDYW4ndCBjcmVhdGUgTlBPYmplY3RzIHdoZW4gSmF2YVNjcmlwdCBpcyBkaXNhYmxlZC4KLSAg
ICBpZiAoIWNhbkV4ZWN1dGVTY3JpcHRzKCkpCisgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cyhO
b3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIHJldHVybiBjcmVhdGVOb1NjcmlwdE9i
amVjdCgpOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgJKHJldmlzaW9uIDU1MTk4KQorKysgV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYg
KzU1LDExIEBAIGNsYXNzIFN0cmluZzsKIGNsYXNzIFdpZGdldDsKIGNsYXNzIFhTU0F1ZGl0b3I7
CiAKK2VudW0gUmVhc29uRm9yQ2FsbGluZ0NhbkV4ZWN1dGVTY3JpcHRzIHsKKyAgICBBYm91dFRv
RXhlY3V0ZVNjcmlwdCwKKyAgICBOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdAorfTsKKwogY2xhc3Mg
U2NyaXB0Q29udHJvbGxlciB7CiBwdWJsaWM6CiAgICAgU2NyaXB0Q29udHJvbGxlcihGcmFtZSop
OwpAQCAtMTEzLDcgKzExOCw3IEBAIHB1YmxpYzoKICAgICAvLyBDaGVjayBpZiB0aGUgamF2YXNj
cmlwdCBlbmdpbmUgaGFzIGJlZW4gaW5pdGlhbGl6ZWQuCiAgICAgYm9vbCBoYXZlSW50ZXJwcmV0
ZXIoKSBjb25zdDsKIAotICAgIGJvb2wgY2FuRXhlY3V0ZVNjcmlwdHMoKTsKKyAgICBib29sIGNh
bkV4ZWN1dGVTY3JpcHRzKFJlYXNvbkZvckNhbGxpbmdDYW5FeGVjdXRlU2NyaXB0cyk7CiAKICAg
ICAvLyBGSVhNRTogdm9pZCogaXMgYSBjb21waWxlIGhhY2suCiAgICAgdm9pZCBhdHRhY2hEZWJ1
Z2dlcih2b2lkKik7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVu
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0
ZW5lci5jcHAJKHJldmlzaW9uIDU1MTk4KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRF
dmVudExpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBQYXNzUmVm
UHRyPFY4TGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0CiAKICAgICBpZiAoRnJhbWUqIGZyYW1l
ID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewogICAgICAgICBTY3JpcHRDb250cm9sbGVy
KiBzY3JpcHRDb250cm9sbGVyID0gZnJhbWUtPnNjcmlwdCgpOwotICAgICAgICBpZiAoIXNjcmlw
dENvbnRyb2xsZXItPmNhbkV4ZWN1dGVTY3JpcHRzKCkpCisgICAgICAgIGlmICghc2NyaXB0Q29u
dHJvbGxlci0+Y2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQogICAgICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT54c3NBdWRp
dG9yKCktPmNhbkNyZWF0ZUlubGluZUV2ZW50TGlzdGVuZXIoYXR0ci0+bG9jYWxOYW1lKCkuc3Ry
aW5nKCksIGF0dHItPnZhbHVlKCkpKSB7CkBAIC04OSw3ICs4OSw3IEBAIFBhc3NSZWZQdHI8VjhM
YXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXQKICAgICBTdHJpbmcgc291cmNlVVJMOwogCiAgICAg
U2NyaXB0Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxlciA9IGZyYW1lLT5zY3JpcHQoKTsKLSAg
ICBpZiAoIXNjcmlwdENvbnRyb2xsZXItPmNhbkV4ZWN1dGVTY3JpcHRzKCkpCisgICAgaWYgKCFz
Y3JpcHRDb250cm9sbGVyLT5jYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkp
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT54c3NBdWRp
dG9yKCktPmNhbkNyZWF0ZUlubGluZUV2ZW50TGlzdGVuZXIoYXR0ci0+bG9jYWxOYW1lKCkuc3Ry
aW5nKCksIGF0dHItPnZhbHVlKCkpKSB7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJv
eHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAJKHJl
dmlzaW9uIDU1MTk4KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTYwLDcgKzU2MCw3IEBAIFY4UHJveHkqIFY4UHJveHk6OnJldHJpZXZlKEZy
YW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gMDsKLSAgICBy
ZXR1cm4gZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cygpID8gZnJhbWUtPnNjcmlw
dCgpLT5wcm94eSgpIDogMDsKKyAgICByZXR1cm4gZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRl
U2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkgPyBmcmFtZS0+c2NyaXB0KCktPnByb3h5
KCkgOiAwOwogfQogCiBWOFByb3h5KiBWOFByb3h5OjpyZXRyaWV2ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KQpJbmRleDogV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDU1MTk4
KQorKysgV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
Nyw3ICsxNzcsNyBAQCB2b2lkIFNjcmlwdEVsZW1lbnREYXRhOjpldmFsdWF0ZVNjcmlwdChjCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX2VsZW1lbnQtPmRvY3Vt
ZW50KCktPmZyYW1lKCkpIHsKLSAgICAgICAgaWYgKCFmcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1
dGVTY3JpcHRzKCkpCisgICAgICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2Ny
aXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgbV9ldmFsdWF0ZWQgPSB0cnVlOwpJbmRleDogV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyTGli
eG1sMi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyTGlieG1sMi5j
cHAJKHJldmlzaW9uIDU1MTk4KQorKysgV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyTGlieG1sMi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc4Niw3ICs3ODYsNyBAQCB2b2lkIFhNTFRva2VuaXplcjo6
c3RhcnRFbGVtZW50TnMoY29uc3QgCiAgICAgfQogCiAgICAgU2NyaXB0Q29udHJvbGxlcioganNQ
cm94eSA9IG1fZG9jLT5mcmFtZSgpID8gbV9kb2MtPmZyYW1lKCktPnNjcmlwdCgpIDogMDsKLSAg
ICBpZiAoanNQcm94eSAmJiBtX2RvYy0+ZnJhbWUoKS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3Jp
cHRzKCkpCisgICAgaWYgKGpzUHJveHkgJiYgbV9kb2MtPmZyYW1lKCktPnNjcmlwdCgpLT5jYW5F
eGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIGpzUHJveHkt
PnNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIobGluZU51bWJlcigpKTsKIAogICAgIGhhbmRsZUVs
ZW1lbnRBdHRyaWJ1dGVzKG5ld0VsZW1lbnQuZ2V0KCksIGxpYnhtbEF0dHJpYnV0ZXMsIG5iX2F0
dHJpYnV0ZXMsIGVjLCBtX3NjcmlwdGluZ1Blcm1pc3Npb24pOwpJbmRleDogV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAkocmV2aXNpb24gNTUxOTgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOTQsNyArMTE5NCw3IEBAIGJvb2wgSFRN
TE1lZGlhRWxlbWVudDo6Y29udHJvbHMoKSBjb25zdAogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3Vt
ZW50KCktPmZyYW1lKCk7CiAKICAgICAvLyBhbHdheXMgc2hvdyBjb250cm9scyB3aGVuIHNjcmlw
dGluZyBpcyBkaXNhYmxlZAotICAgIGlmIChmcmFtZSAmJiAhZnJhbWUtPnNjcmlwdCgpLT5jYW5F
eGVjdXRlU2NyaXB0cygpKQorICAgIGlmIChmcmFtZSAmJiAhZnJhbWUtPnNjcmlwdCgpLT5jYW5F
eGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZShjb250cm9sc0F0dHIpOwpJbmRleDogV2Vi
Q29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9I
VE1MVG9rZW5pemVyLmNwcAkocmV2aXNpb24gNTUxOTgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFRv
a2VuaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MTEsNyArMTUxMSw3IEBAIEhUTUxUb2tl
bml6ZXI6OlN0YXRlIEhUTUxUb2tlbml6ZXI6OnBhcnMKICAgICAgICAgICAgICAgICBtX3Njcmlw
dFRhZ1NyY0F0dHJWYWx1ZSA9IFN0cmluZygpOwogICAgICAgICAgICAgICAgIG1fc2NyaXB0VGFn
Q2hhcnNldEF0dHJWYWx1ZSA9IFN0cmluZygpOwogICAgICAgICAgICAgICAgIGlmIChtX2N1cnJl
bnRUb2tlbi5hdHRycyAmJiAhbV9mcmFnbWVudCkgewotICAgICAgICAgICAgICAgICAgICBpZiAo
bV9kb2MtPmZyYW1lKCkgJiYgbV9kb2MtPmZyYW1lKCktPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2Ny
aXB0cygpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX2RvYy0+ZnJhbWUoKSAmJiBtX2Rv
Yy0+ZnJhbWUoKS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRl
U2NyaXB0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChhID0gbV9jdXJyZW50VG9r
ZW4uYXR0cnMtPmdldEF0dHJpYnV0ZUl0ZW0oc3JjQXR0cikpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fc2NyaXB0VGFnU3JjQXR0clZhbHVlID0gbV9kb2MtPmNvbXBsZXRlVVJMKGRl
cHJlY2F0ZWRQYXJzZVVSTChhLT52YWx1ZSgpKSkuc3RyaW5nKCk7CiAgICAgICAgICAgICAgICAg
ICAgIH0KQEAgLTE5MjEsNyArMTkyMSw3IEBAIHZvaWQgSFRNTFRva2VuaXplcjo6ZmluaXNoKCkK
IFBhc3NSZWZQdHI8Tm9kZT4gSFRNTFRva2VuaXplcjo6cHJvY2Vzc1Rva2VuKCkKIHsKICAgICBT
Y3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0gKCFtX2ZyYWdtZW50ICYmIG1fZG9j
LT5mcmFtZSgpKSA/IG1fZG9jLT5mcmFtZSgpLT5zY3JpcHQoKSA6IDA7Ci0gICAgaWYgKHNjcmlw
dENvbnRyb2xsZXIgJiYgc2NyaXB0Q29udHJvbGxlci0+Y2FuRXhlY3V0ZVNjcmlwdHMoKSkKKyAg
ICBpZiAoc2NyaXB0Q29udHJvbGxlciAmJiBzY3JpcHRDb250cm9sbGVyLT5jYW5FeGVjdXRlU2Ny
aXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIC8vIEZJWE1FOiBXaHkgaXNu
J3QgdGhpcyBtX2N1cnJlbnRTY3JpcHRUYWdTdGFydExpbmVOdW1iZXI/ICBJIHN1c3BlY3QgdGhp
cyBpcyB3cm9uZy4KICAgICAgICAgc2NyaXB0Q29udHJvbGxlci0+c2V0RXZlbnRIYW5kbGVyTGlu
ZU51bWJlcihtX2N1cnJlbnRUYWdTdGFydExpbmVOdW1iZXIgKyAxKTsgLy8gU2NyaXB0IGxpbmUg
bnVtYmVycyBhcmUgMSBiYXNlZC4KICAgICBpZiAobV9kZXN0ID4gbV9idWZmZXIpIHsKSW5kZXg6
IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA1NTE5
OCkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMzAsNyArMjMwLDcgQEAgc3RhdGljIGJvb2wgY2FuUGFzc05vZGVUb0phdmFT
Y3JpcHQoTm9kZQogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEZy
YW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7Ci0gICAgcmV0dXJuIGZyYW1l
ICYmIGZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoKTsKKyAgICByZXR1cm4gZnJh
bWUgJiYgZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0
ZVNjcmlwdCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdChOb2RlKiBu
b2RlKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNTUxOTgpCisrKyBXZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NjcsNyArMTQ2
Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQKIGJvb2wgRnJh
bWVMb2FkZXI6OmlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkKIHsKICAgICBGcmFtZSogZnJhbWUg
PSBtX2ZyYW1lLT50cmVlKCktPnRvcCgpOwotICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLT5jYW5F
eGVjdXRlU2NyaXB0cygpKQorICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2Ny
aXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIHJldHVybiB0cnVlOyAvLyBJ
ZiBKYXZhU2NyaXB0IGlzIGRpc2FibGVkLCBhIHVzZXIgZ2VzdHVyZSBtdXN0IGhhdmUgaW5pdGlh
dGVkIHRoZSBuYXZpZ2F0aW9uLgogICAgIHJldHVybiBmcmFtZS0+c2NyaXB0KCktPnByb2Nlc3Np
bmdVc2VyR2VzdHVyZShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7IC8vIEZJWE1FOiBVc2UgcGFn
ZUlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlLgogfQpAQCAtMjY4MCw3ICsyNjgwLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6b3BlbihDYWNoZWRQYWdlJiBjYWNoZQogICAgIGNsb3NlVVJMKCk7CiAgICAg
CiAgICAgLy8gRGVsZXRlIG9sZCBzdGF0dXMgYmFyIG1lc3NhZ2VzIChpZiBpdCBfd2FzXyBhY3Rp
dmF0ZWQgb24gbGFzdCBVUkwpLgotICAgIGlmIChtX2ZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0
ZVNjcmlwdHMoKSkgeworICAgIGlmIChtX2ZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlw
dHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKSB7CiAgICAgICAgIG1fZnJhbWUtPnNldEpTU3Rh
dHVzQmFyVGV4dChTdHJpbmcoKSk7CiAgICAgICAgIG1fZnJhbWUtPnNldEpTRGVmYXVsdFN0YXR1
c0JhclRleHQoU3RyaW5nKCkpOwogICAgIH0KQEAgLTM5MTAsNyArMzkxMCw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmRpc3BhdGNoRG9jdW1lbnRFbGVtZW4KIAogdm9pZCBGcmFtZUxvYWRlcjo6ZGlz
cGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdHNJbkFsbFdvcmxkcygpCiB7Ci0gICAgaWYgKCFtX2Zy
YW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoKSkKKyAgICBpZiAoIW1fZnJhbWUtPnNj
cmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFZlY3RvcjxET01XcmFwcGVyV29ybGQqPiB3b3JsZHM7CkBAIC0z
OTIxLDcgKzM5MjEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENsZWFyV2luZG93
CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCogd29ybGQpCiB7Ci0gICAgaWYgKCFtX2ZyYW1lLT5zY3JpcHQoKS0+
Y2FuRXhlY3V0ZVNjcmlwdHMoKSB8fCAhbV9mcmFtZS0+c2NyaXB0KCktPmV4aXN0aW5nV2luZG93
U2hlbGwod29ybGQpKQorICAgIGlmICghbV9mcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3Jp
cHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCAhbV9mcmFtZS0+c2NyaXB0KCktPmV4aXN0
aW5nV2luZG93U2hlbGwod29ybGQpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NsaWVudC0+
ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQod29ybGQpOwpJbmRleDogV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA1NTE5OCkKKysrIFdlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2MCw2ICsyNjAsMTMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dKYXZhU2NyaXB0
KGJvb2wgZW5hYmxlZFBlclNldHRpbmdzKSB7IHJldHVybiBlbmFibGVkUGVyU2V0dGluZ3M7IH0K
ICAgICAgICAgdmlydHVhbCBib29sIGFsbG93UGx1Z2lucyhib29sIGVuYWJsZWRQZXJTZXR0aW5n
cykgeyByZXR1cm4gZW5hYmxlZFBlclNldHRpbmdzOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBh
bGxvd0ltYWdlcyhib29sIGVuYWJsZWRQZXJTZXR0aW5ncykgeyByZXR1cm4gZW5hYmxlZFBlclNl
dHRpbmdzOyB9CisKKyAgICAgICAgLy8gVGhpcyBjYWxsYmFjayBub3RpZmllcyB0aGUgY2xpZW50
IHRoYXQgdGhlIGZyYW1lIHdhcyBhYm91dCB0byBydW4KKyAgICAgICAgLy8gSmF2YVNjcmlwdCBi
dXQgZGlkIG5vdCBiZWNhdXNlIGFsbG93SmF2YVNjcmlwdCByZXR1cm5lZCBmYWxzZS4gV2UKKyAg
ICAgICAgLy8gaGF2ZSBhIHNlcGFyYXRlIGNhbGxiYWNrIGhlcmUgYmVjYXVzZSB0aGVyZSBhcmUg
YSBudW1iZXIgb2YgcGxhY2VzCisgICAgICAgIC8vIHRoYXQgbmVlZCB0byBrbm93IGlmIEphdmFT
Y3JpcHQgaXMgZW5hYmxlZCBidXQgYXJlIG5vdCBuZWNlc3NhcmlseQorICAgICAgICAvLyBwcmVw
YXJpbmcgdG8gZXhlY3V0ZSBzY3JpcHQuCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWROb3RBbGxv
d1NjcmlwdCgpIHsgfQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkocmV2aXNpb24gNTUxOTgpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDItMjQgIEFkYW0gQmFydGggIDxh
YmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBbQ2hyb21pdW0gQVBJXSBEaXNhbWJpZ3VhdGUgYWxsb3dKYXZhU2NyaXB0IGZy
b20gZGlkTm90QWxsb3dTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM1MjA1CisKKyAgICAgICAgUGx1bWIgZGlkTm90QWxsb3dTY3JpcHQgdGhy
b3VnaCBDaHJvbWl1bSdzIFdlYktpdCBBUEkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWVD
bGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6OmRpZEZhaWxUb0V4ZWN1
dGVTY3JpcHQpOgorICAgICAgICAqIHNyYy9EZWJ1Z2dlckFnZW50SW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkRlYnVnZ2VyQWdlbnRJbXBsOjpjcmVhdGVVdGlsaXR5Q29udGV4dCk6CisgICAg
ICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZy
YW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlkTm90QWxsb3dTY3JpcHQpOgorICAgICAgICAqIHNyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpiaW5kVG9XaW5kb3dPYmplY3QpOgorCiAy
MDEwLTAyLTIzICBKYW1lcyBIYXdraW5zICA8amhhd2tpbnNAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRnJhbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkZyYW1lQ2xpZW50LmgJKHJldmlzaW9uIDU1MTk4KQorKysgV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGcmFtZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTIsNiArMjUyLDkgQEAg
cHVibGljOgogICAgIC8vIENvbnRyb2xzIHdoZXRoZXIgc2NyaXB0cyBhcmUgYWxsb3dlZCB0byBl
eGVjdXRlIGZvciB0aGlzIGZyYW1lLgogICAgIHZpcnR1YWwgYm9vbCBhbGxvd1NjcmlwdChXZWJG
cmFtZSosIGJvb2wgZW5hYmxlZFBlclNldHRpbmdzKSB7IHJldHVybiBlbmFibGVkUGVyU2V0dGlu
Z3M7IH0KIAorICAgIC8vIE5vdGlmaWVzIHRoZSBjbGllbnQgdGhhdCB0aGUgZnJhbWUgd291bGQg
aGF2ZSBleGVjdXRlZCBzY3JpcHQgaWYgc2NyaXB0IHdlcmUgZW5hYmxlZC4KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbFRvRXhlY3V0ZVNjcmlwdChXZWJGcmFtZSopIHsgfQorCiAgICAgLy8gU2Ny
aXB0IGluIHRoZSBwYWdlIHRyaWVkIHRvIGFsbG9jYXRlIHRvbyBtdWNoIG1lbW9yeS4KICAgICB2
aXJ0dWFsIHZvaWQgZGlkRXhoYXVzdE1lbW9yeUF2YWlsYWJsZUZvclNjcmlwdChXZWJGcmFtZSop
IHsgfQogCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnRJbXBsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnRJbXBsLmNwcAko
cmV2aXNpb24gNTUxOTgpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnRJbXBs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIERlYnVnZ2VyQWdlbnRJ
bXBsOjpkZWJ1Z2dlck91dHB1dChjCiB2b2lkIERlYnVnZ2VyQWdlbnRJbXBsOjpjcmVhdGVVdGls
aXR5Q29udGV4dChGcmFtZSogZnJhbWUsIHY4OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiogY29u
dGV4dCkKIHsKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAgYm9vbCBjYW5FeGVjdXRl
U2NyaXB0cyA9IGZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoKTsKKyAgICBib29s
IGNhbkV4ZWN1dGVTY3JpcHRzID0gZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhX
ZWJDb3JlOjpOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCk7CiAKICAgICAvLyBTZXQgdXAgdGhlIERP
TSB3aW5kb3cgYXMgdGhlIHByb3RvdHlwZSBvZiB0aGUgbmV3IGdsb2JhbCBvYmplY3QuCiAgICAg
djg6OkhhbmRsZTx2ODo6Q29udGV4dD4gd2luZG93Q29udGV4dCA9IFY4UHJveHk6OmNvbnRleHQo
ZnJhbWUpOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJ
bXBsLmNwcAkocmV2aXNpb24gNTUxOTgpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9h
ZGVyQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw2ICsxODAsMTIgQEAgYm9v
bCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmFsbG93SW1hZ2VzKAogICAgIHJldHVybiBlbmFibGVk
UGVyU2V0dGluZ3M7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaWROb3RBbGxv
d1NjcmlwdCgpCit7CisgICAgaWYgKG1fd2ViRnJhbWUtPmNsaWVudCgpKQorICAgICAgICBtX3dl
YkZyYW1lLT5jbGllbnQoKS0+ZGlkRmFpbFRvRXhlY3V0ZVNjcmlwdChtX3dlYkZyYW1lKTsKK30K
KwogYm9vbCBGcmFtZUxvYWRlckNsaWVudEltcGw6Omhhc1dlYlZpZXcoKSBjb25zdAogewogICAg
IHJldHVybiBtX3dlYkZyYW1lLT52aWV3SW1wbCgpOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
c3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA1NTE5OCkKKysrIFdlYktpdC9j
aHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5
NSw2ICsxOTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGFsbG93SmF2YVNjcmlwdChi
b29sIGVuYWJsZWRQZXJTZXR0aW5ncyk7CiAgICAgdmlydHVhbCBib29sIGFsbG93UGx1Z2lucyhi
b29sIGVuYWJsZWRQZXJTZXR0aW5ncyk7CiAgICAgdmlydHVhbCBib29sIGFsbG93SW1hZ2VzKGJv
b2wgZW5hYmxlZFBlclNldHRpbmdzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTm90QWxsb3dTY3Jp
cHQoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIG1ha2VEb2N1bWVudFZpZXcoKTsKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHJldmlzaW9uIDU1MTk4KQorKysgV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTYsNyAr
NTk2LDcgQEAgTlBPYmplY3QqIFdlYkZyYW1lSW1wbDo6d2luZG93T2JqZWN0KCkgYwogdm9pZCBX
ZWJGcmFtZUltcGw6OmJpbmRUb1dpbmRvd09iamVjdChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIE5Q
T2JqZWN0KiBvYmplY3QpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUpOwotICAgIGlmICghbV9mcmFt
ZSB8fCAhbV9mcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKCkpCisgICAgaWYgKCFt
X2ZyYW1lIHx8ICFtX2ZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRU
b0V4ZWN1dGVTY3JpcHQpKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcga2V5ID0gbmFt
ZTsKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA1NTE5OCkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDItMjQgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbQ2hyb21pdW0gQVBJXSBEaXNhbWJpZ3VhdGUgYWxsb3dKYXZhU2NyaXB0IGZyb20g
ZGlkTm90QWxsb3dTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM1MjA1CisKKyAgICAgICAgTWFrZSB0aGVzZSB0d28gY2FsbHNpdGVzIGV4cGxp
Y2l0IGFib3V0IG5vdCBydW5uaW5nIHNjcmlwdCBpbW1lZGlhdGVseS4KKworICAgICAgICAqIFBs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpnZXRXaW5kb3dOUE9iamVjdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZGVtYXJzaGFsVmFs
dWVGcm9tQXJyYXkpOgorCiAyMDEwLTAyLTIzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW0gSGF0Y2hlciBhbmQgUGF2ZWwgRmVsZG1h
bi4KSW5kZXg6IFdlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5j
ZVByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCShyZXZpc2lvbiA1NTE5OCkKKysrIFdlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC03ODIsNyArNzgyLDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6
OmdldFdpbgogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAg
ICBpZiAoIWZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoKSkKKyAgICBpZiAoIWZy
YW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQp
KQogICAgICAgICBvYmplY3RJRCA9IDA7CiAgICAgZWxzZQogICAgICAgICBvYmplY3RJRCA9IG1f
bG9jYWxPYmplY3RzLmlkRm9yT2JqZWN0KGZyYW1lLT5zY3JpcHQoKS0+d2luZG93U2hlbGwocGx1
Z2luV29ybGQoKSktPndpbmRvdygpKTsKQEAgLTEyODcsNyArMTI4Nyw3IEBAIGJvb2wgTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5OjpkZW1hcnMKICAgICAgICAgICAgIGlmICghZnJhbWUpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBp
ZiAoIWZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoKSkKKyAgICAgICAgICAgIGlm
ICghZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNj
cmlwdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICBSZWZQ
dHI8Um9vdE9iamVjdD4gcm9vdE9iamVjdCA9IGZyYW1lLT5zY3JpcHQoKS0+Y3JlYXRlUm9vdE9i
amVjdChtX3BsdWdpblZpZXcpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49440</attachid>
            <date>2010-02-24 14:34:45 -0800</date>
            <delta_ts>2010-02-24 14:42:26 -0800</delta_ts>
            <desc>patch v4</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>29816</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTE5OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzcgQEAKKzIwMTAtMDItMjQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hy
b21pdW0gQVBJXSBEaXNhbWJpZ3VhdGUgYWxsb3dKYXZhU2NyaXB0IGZyb20gZGlkTm90QWxsb3dT
Y3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1
MjA1CisKKyAgICAgICAgRm9yIGNsaWVudHMgdGhhdCB3YW50IHRvIHNob3cgYSB1c2VyIGludGVy
ZmFjZSBlbGVtZW50IHdoZW4gSmF2YVNjcmlwdAorICAgICAgICB3YXMgYmxvY2tlZCBvbiBhIHBh
Z2UsIHdlIG5lZWQgdG8gZGlzYW1iaWd1YXRlIGJldHdlZW4gcXVlcnlpbmcgdGhlCisgICAgICAg
IGNsaWVudCBmb3Igd2hldGhlciBKYXZhU2NyaXB0IGlzIGVuYWJsZWQgZnJvbSBhY3R1YWxseSBm
YWlsaW5nIHRvCisgICAgICAgIGV4ZWN1dGUgc29tZSBzY3JpcHQuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBhZGRzIGEgbmV3IEZyYW1lTG9hZGVyQ2xpZW50IGNhbGxiYWNrIGZvciB3aGVuIFdlYkNv
cmUgd291bGQKKyAgICAgICAgbGlrZSB0byBleGVjdXRlIEphdmFTY3JpcHQgYnV0IGZhaWxzIHRv
IGJlY2F1c2UgSmF2YVNjcmlwdCBpcyBkaXNhYmxlZC4KKworICAgICAgICBUaGlzIHBhdGNoIGFs
c28gdG91Y2hlcyBldmVyeSBjbGllbnQgb2YgY2FuRXhlY3V0ZVNjcmlwdHMgc28gdGhleSBjYW4K
KyAgICAgICAgaW5kaWNhdGUgd2hldGhlciB3ZSBzaG91bGQgbWFrZSB0aGlzIGNhbGxiYWNrLiAg
SSB3YXMgaG9waW5nIHRoZXJlIHdhcworICAgICAgICBhIGJldHRlciBjaG9rZSBwb2ludCwgYnV0
IG15IGZpcnN0IHR3byBhdHRlbXB0cyB3ZXJlIHdyb25nIGluIHN1YnRsZQorICAgICAgICB3YXlz
LiAgcGthc3RpbmcgcG9pbnRzIG91dCB0aGF0IHRoaXMgd2lsbCBiZSBlYXN5IHRvIHNjcmV3IHVw
IGluIHRoZQorICAgICAgICBmdXR1cmUsIHNvIGl0J3MgYmV0dGVyIHRvIG1ha2UgYWxsIHRoZSBj
bGllbnRzIGJlIGV4cGxpY2l0LgorCisgICAgICAgICogV2ViQ29yZS5QbHVnaW5Ib3N0UHJvY2Vz
cy5leHA6CisgICAgICAgICogYmluZGluZ3MvU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y2FuRXhlY3V0ZVNjcmlwdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTGF6
eUV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNMYXp5RXZlbnRMaXN0ZW5l
cjo6aW5pdGlhbGl6ZUpTRnVuY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxl
ZEFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6YmluZGluZ1Jvb3RPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6d2luZG93U2NyaXB0TlBPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6anNPYmplY3RGb3JQbHVnaW5FbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxk
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjopOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjp3aW5kb3dTY3JpcHRPYmplY3Qp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpzZXRKYXZhU2NyaXB0UGF1c2VkKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNjcmlwdFN0YXRlRnJvbU5vZGUp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6d2luZG93U2NyaXB0TlBPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0T2JqZWN0Rm9yUGx1Z2lu
RWxlbWVudCk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3Rl
bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhQcm94eTo6cmV0cmlldmUpOgorICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnREYXRhOjpldmFsdWF0ZVNjcmlwdCk6CisgICAg
ICAgICogZG9tL1hNTFRva2VuaXplckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1M
VG9rZW5pemVyOjpzdGFydEVsZW1lbnROcyk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNvbnRyb2xzKToK
KyAgICAgICAgKiBodG1sL0hUTUxUb2tlbml6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRva2VuaXplcjo6cGFyc2VUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6
cHJvY2Vzc1Rva2VuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5QYXNzTm9kZVRvSmF2YVNjcmlwdCk6CisgICAgICAg
ICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Ojppc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDbGVh
cldpbmRvd09iamVjdHNJbkFsbFdvcmxkcyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgorICAgICAgICAqIGxvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnQ6OmRpZE5vdEFsbG93U2NyaXB0KToKKwogMjAxMC0wMi0yNCAgUGV0ZXIgS2FzdGluZyAgPHBr
YXN0aW5nQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5k
ZXg6IFdlYkNvcmUvV2ViQ29yZS5QbHVnaW5Ib3N0UHJvY2Vzcy5leHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9XZWJDb3JlLlBsdWdpbkhvc3RQcm9jZXNzLmV4cAkocmV2aXNpb24gNTUxOTgpCisr
KyBXZWJDb3JlL1dlYkNvcmUuUGx1Z2luSG9zdFByb2Nlc3MuZXhwCSh3b3JraW5nIGNvcHkpCkBA
IC05LDcgKzksNyBAQCBfX1pON1dlYkNvcmUxM0lkZW50aWZpZXJSZXAzZ2V0RWkKIF9fWk43V2Vi
Q29yZTEzSWRlbnRpZmllclJlcDNnZXRFUEtjCiBfX1pON1dlYkNvcmUxM0lkZW50aWZpZXJSZXA3
aXNWYWxpZEVQUzBfCiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIxNmNyZWF0ZVJvb3RP
YmplY3RFUHYKLV9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjE3Y2FuRXhlY3V0ZVNjcmlw
dHNFdgorX19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMTdjYW5FeGVjdXRlU2NyaXB0c0VO
U18zM1JlYXNvbkZvckNhbGxpbmdDYW5FeGVjdXRlU2NyaXB0c0UKIF9fWk43V2ViQ29yZTE2U2Ny
aXB0Q29udHJvbGxlcjI0anNPYmplY3RGb3JQbHVnaW5FbGVtZW50RVBOU18xN0hUTUxQbHVnSW5F
bGVtZW50RQogX19aTjdXZWJDb3JlNlN0cmluZzI2ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2tF
UEtjbQogX19aTjdXZWJDb3JlNlN0cmluZzhmcm9tVVRGOEVQS2NtCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcAkocmV2aXNpb24gNTUxOTgpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsMTQgKzMxLDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBTY3JpcHRDb250
cm9sbGVyOjpjYW5FeGVjdXRlU2NyaXB0cygpCitib29sIFNjcmlwdENvbnRyb2xsZXI6OmNhbkV4
ZWN1dGVTY3JpcHRzKFJlYXNvbkZvckNhbGxpbmdDYW5FeGVjdXRlU2NyaXB0cyByZWFzb24pCiB7
CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBnZXQgdGhpcyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBk
b2N1bWVudCBpbnN0ZWFkIG9mIHRoZSBmcmFtZS4KICAgICBpZiAobV9mcmFtZS0+bG9hZGVyKCkt
PmlzU2FuZGJveGVkKFNhbmRib3hTY3JpcHRzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9mcmFtZS0+c2V0dGluZ3MoKTsKLSAgICByZXR1cm4g
bV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5hbGxvd0phdmFTY3JpcHQoc2V0dGluZ3MgJiYg
c2V0dGluZ3MtPmlzSmF2YVNjcmlwdEVuYWJsZWQoKSk7CisgICAgY29uc3QgYm9vbCBhbGxvd2Vk
ID0gbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5hbGxvd0phdmFTY3JpcHQoc2V0dGluZ3Mg
JiYgc2V0dGluZ3MtPmlzSmF2YVNjcmlwdEVuYWJsZWQoKSk7CisgICAgaWYgKCFhbGxvd2VkICYm
IHJlYXNvbiA9PSBBYm91dFRvRXhlY3V0ZVNjcmlwdCkKKyAgICAgICAgbV9mcmFtZS0+bG9hZGVy
KCktPmNsaWVudCgpLT5kaWROb3RBbGxvd1NjcmlwdCgpOworICAgIHJldHVybiBhbGxvd2VkOwog
fQogCiBTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0KGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCkBAIC00OCw3ICs1MSw3IEBAIFNj
cmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3IKIAogU2NyaXB0VmFsdWUgU2Ny
aXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3Vy
Y2VDb2RlKQogewotICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoKSB8fCBpc1BhdXNlZCgpKQor
ICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8IGlzUGF1
c2VkKCkpCiAgICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOwogCiAgICAgYm9vbCB3YXNJbkV4
ZWN1dGVTY3JpcHQgPSBtX2luRXhlY3V0ZVNjcmlwdDsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudExpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXZlbnRMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDU1MTk4KQorKysgV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBA
IHZvaWQgSlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHQKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgLy8gRklYTUU6IElzIHRoaXMgY2hlY2sgbmVlZGVkIGZvciBvdGhlciBj
b250ZXh0cz8KICAgICAgICAgU2NyaXB0Q29udHJvbGxlciogc2NyaXB0ID0gZnJhbWUtPnNjcmlw
dCgpOwotICAgICAgICBpZiAoIXNjcmlwdC0+Y2FuRXhlY3V0ZVNjcmlwdHMoKSB8fCBzY3JpcHQt
PmlzUGF1c2VkKCkpCisgICAgICAgIGlmICghc2NyaXB0LT5jYW5FeGVjdXRlU2NyaXB0cyhBYm91
dFRvRXhlY3V0ZVNjcmlwdCkgfHwgc2NyaXB0LT5pc1BhdXNlZCgpKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3Rl
bmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlz
dGVuZXIuY3BwCShyZXZpc2lvbiA1NTE5OCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5
RXZlbnRMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgSlNPYmpl
Y3QqIEpTTGF6eUV2ZW50TGlzdGVuZXI6OmluaXRpYWxpegogICAgICAgICByZXR1cm4gMDsKIAog
ICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSBmcmFtZS0+c2NyaXB0KCk7
Ci0gICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT5jYW5FeGVjdXRlU2NyaXB0cygpKQorICAgIGlm
ICghc2NyaXB0Q29udHJvbGxlci0+Y2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3Jp
cHQpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSB0b0pTRE9NR2xvYmFsT2JqZWN0KGV4ZWN1dGlvbkNvbnRleHQsIGlzb2xhdGVkV29y
bGQoKSk7CkBAIC05Myw3ICs5Myw3IEBAIEpTT2JqZWN0KiBKU0xhenlFdmVudExpc3RlbmVyOjpp
bml0aWFsaXoKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAvLyBGSVhNRTogSXMgdGhp
cyBjaGVjayBuZWVkZWQgZm9yIG5vbi1Eb2N1bWVudCBjb250ZXh0cz8KICAgICAgICAgU2NyaXB0
Q29udHJvbGxlciogc2NyaXB0ID0gZnJhbWUtPnNjcmlwdCgpOwotICAgICAgICBpZiAoIXNjcmlw
dC0+Y2FuRXhlY3V0ZVNjcmlwdHMoKSB8fCBzY3JpcHQtPmlzUGF1c2VkKCkpCisgICAgICAgIGlm
ICghc2NyaXB0LT5jYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkgfHwgc2Ny
aXB0LT5pc1BhdXNlZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCShyZXZpc2lvbiA1NTE5OCkKKysr
IFdlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKERvY3VtZW50
KiAKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IHdpbmRvdy0+
aW1wbCgpLT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5zY3JpcHQoKS0+Y2Fu
RXhlY3V0ZVNjcmlwdHMoKSkKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+c2NyaXB0KCktPmNh
bkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgZnJhbWUtPnNjcmlwdCgpLT5zZXRQcm9jZXNzaW5nVGltZXJDYWxsYmFjayh0cnVlKTsK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24g
NTUxOTgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMTcsNyArMzE3LDcgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjp1cGRh
dGVTZWN1cml0eU9yaQogCiBCaW5kaW5nczo6Um9vdE9iamVjdCogU2NyaXB0Q29udHJvbGxlcjo6
YmluZGluZ1Jvb3RPYmplY3QoKQogewotICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoKSkKKyAg
ICBpZiAoIWNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICBpZiAoIW1fYmluZGluZ1Jvb3RPYmplY3QpIHsKQEAgLTM0NCw3
ICszNDQsNyBAQCBQYXNzUmVmUHRyPEJpbmRpbmdzOjpSb290T2JqZWN0PiBTY3JpcHRDCiBOUE9i
amVjdCogU2NyaXB0Q29udHJvbGxlcjo6d2luZG93U2NyaXB0TlBPYmplY3QoKQogewogICAgIGlm
ICghbV93aW5kb3dTY3JpcHROUE9iamVjdCkgewotICAgICAgICBpZiAoY2FuRXhlY3V0ZVNjcmlw
dHMoKSkgeworICAgICAgICBpZiAoY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVT
Y3JpcHQpKSB7CiAgICAgICAgICAgICAvLyBKYXZhU2NyaXB0IGlzIGVuYWJsZWQsIHNvIHRoZXJl
IGlzIGEgSmF2YVNjcmlwdCB3aW5kb3cgb2JqZWN0LgogICAgICAgICAgICAgLy8gUmV0dXJuIGFu
IE5QT2JqZWN0IGJvdW5kIHRvIHRoZSB3aW5kb3cgb2JqZWN0LgogICAgICAgICAgICAgSlNDOjpK
U0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwpAQCAtMzc3LDcgKzM3Nyw3IEBAIE5Q
T2JqZWN0KiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVTY3JpcHQKIEpTT2JqZWN0KiBTY3JpcHRD
b250cm9sbGVyOjpqc09iamVjdEZvclBsdWdpbkVsZW1lbnQoSFRNTFBsdWdJbkVsZW1lbnQqIHBs
dWdpbikKIHsKICAgICAvLyBDYW4ndCBjcmVhdGUgSlNPYmplY3RzIHdoZW4gSmF2YVNjcmlwdCBp
cyBkaXNhYmxlZAotICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoKSkKKyAgICBpZiAoIWNhbkV4
ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICAvLyBDcmVhdGUgYSBKU09iamVjdCBib3VuZCB0byB0aGlzIGVsZW1lbnQKQEAgLTQ0
NCw3ICs0NDQsNyBAQCBTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyCiB7
CiAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlKHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVy
ZSA/IEtVUkwoKSA6IG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKSk7CiAKLSAgICBpZiAoIWNhbkV4
ZWN1dGVTY3JpcHRzKCkgfHwgaXNQYXVzZWQoKSkKKyAgICBpZiAoIWNhbkV4ZWN1dGVTY3JpcHRz
KEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQogICAgICAgICByZXR1cm4gU2Ny
aXB0VmFsdWUoKTsKIAogICAgIGJvb2wgd2FzSW5FeGVjdXRlU2NyaXB0ID0gbV9pbkV4ZWN1dGVT
Y3JpcHQ7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAkocmV2aXNp
b24gNTUxOTgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNjIsNiArNjIsMTEgQEAgY2xhc3MgWFNTQXVkaXRvcjsKIAogdHlwZWRl
ZiBIYXNoTWFwPHZvaWQqLCBSZWZQdHI8SlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdD4gPiBSb290
T2JqZWN0TWFwOwogCitlbnVtIFJlYXNvbkZvckNhbGxpbmdDYW5FeGVjdXRlU2NyaXB0cyB7Cisg
ICAgQWJvdXRUb0V4ZWN1dGVTY3JpcHQsCisgICAgTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQKK307
CisKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXIgewogICAgIGZyaWVuZCBjbGFzcyBTY3JpcHRDYWNo
ZWRGcmFtZURhdGE7CiAgICAgdHlwZWRlZiBXVEY6Okhhc2hNYXA8IFJlZlB0cjxET01XcmFwcGVy
V29ybGQ+LCBKU0M6OlByb3RlY3RlZFB0cjxKU0RPTVdpbmRvd1NoZWxsPiA+IFNoZWxsTWFwOwpA
QCAtMTEwLDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVy
ZShET01XcmFwcGVyV29ybGQqKSBjb25zdDsKICAgICBib29sIGFueVBhZ2VJc1Byb2Nlc3NpbmdV
c2VyR2VzdHVyZSgpIGNvbnN0OwogCi0gICAgYm9vbCBjYW5FeGVjdXRlU2NyaXB0cygpOworICAg
IGJvb2wgY2FuRXhlY3V0ZVNjcmlwdHMoUmVhc29uRm9yQ2FsbGluZ0NhbkV4ZWN1dGVTY3JpcHRz
KTsKIAogICAgIC8vIERlYnVnZ2VyIGNhbiBiZSAwIHRvIGRldGFjaCBhbnkgZXhpc3RpbmcgRGVi
dWdnZXIuCiAgICAgdm9pZCBhdHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKik7IC8vIEF0dGFj
aGVzL2RldGFjaGVzIGluIGFsbCB3b3JsZHMvd2luZG93IHNoZWxscy4KSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0JKHJldmlzaW9uIDU1MTk4KQorKysg
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDcsNyArMTA3LDcgQEAgUGFzc1NjcmlwdEluc3RhbmNlIFNjcmlwdENvbnRyb2xsZXI6
OmNyZQogCiBXZWJTY3JpcHRPYmplY3QqIFNjcmlwdENvbnRyb2xsZXI6OndpbmRvd1NjcmlwdE9i
amVjdCgpCiB7Ci0gICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cygpKQorICAgIGlmICghY2FuRXhl
Y3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQogICAgICAgICByZXR1cm4gMDsK
IAogICAgIGlmICghbV93aW5kb3dTY3JpcHRPYmplY3QpIHsKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCShyZXZpc2lvbiA1NTE5OCkKKysrIFdlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzgs
NyArMzc4LDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0SmF2YVNjcmlwdFBhdQogewog
ICAgIEFTU0VSVF9BUkcoZnJhbWUsIGZyYW1lKTsKIAotICAgIGlmICghZnJhbWUtPnNjcmlwdCgp
LT5jYW5FeGVjdXRlU2NyaXB0cygpKQorICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVj
dXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGZyYW1lLT5zY3JpcHQoKS0+c2V0UGF1c2VkKHBhdXNlZCk7CkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDU1MTk4KQorKysg
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjQsNyArNjQsNyBAQCBQYXNzUmVmUHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0
ZUF0CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIHByb3ZpZGUgYWNjdXJhdGUg
c291cmNlIGluZm9ybWF0aW9uIGZvciBmcmFtZWxlc3MgZG9jdW1lbnRzLCB0b28gKGUuZy4gZm9y
IGltcG9ydGluZyBub2RlcyBmcm9tIFhNTEh0dHBSZXF1ZXN0LnJlc3BvbnNlWE1MKS4KICAgICBp
ZiAoRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewogICAgICAgICBT
Y3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0gZnJhbWUtPnNjcmlwdCgpOwotICAg
ICAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXItPmNhbkV4ZWN1dGVTY3JpcHRzKCkpCisgICAgICAg
IGlmICghc2NyaXB0Q29udHJvbGxlci0+Y2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVT
Y3JpcHQpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgaWYgKCFzY3JpcHRDb250
cm9sbGVyLT54c3NBdWRpdG9yKCktPmNhbkNyZWF0ZUlubGluZUV2ZW50TGlzdGVuZXIoYXR0ci0+
bG9jYWxOYW1lKCkuc3RyaW5nKCksIGF0dHItPnZhbHVlKCkpKSB7CkBAIC05Niw3ICs5Niw3IEBA
IFBhc3NSZWZQdHI8SlNMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXQKICAgICBTdHJpbmcgc291
cmNlVVJMOwogICAgIAogICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSBm
cmFtZS0+c2NyaXB0KCk7Ci0gICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT5jYW5FeGVjdXRlU2Ny
aXB0cygpKQorICAgIGlmICghc2NyaXB0Q29udHJvbGxlci0+Y2FuRXhlY3V0ZVNjcmlwdHMoQWJv
dXRUb0V4ZWN1dGVTY3JpcHQpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmICghc2NyaXB0
Q29udHJvbGxlci0+eHNzQXVkaXRvcigpLT5jYW5DcmVhdGVJbmxpbmVFdmVudExpc3RlbmVyKGF0
dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBhdHRyLT52YWx1ZSgpKSkgewpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAJKHJldmlzaW9uIDU1MTk4KQorKysgV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAg
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlRnJvbU5vZGUoRE9NV3JhcAogICAgIEZyYW1lKiBmcmFt
ZSA9IGRvY3VtZW50LT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAw
OwotICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cygpKQorICAgIGlm
ICghZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNj
cmlwdCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBmcmFtZS0+c2NyaXB0KCktPmds
b2JhbE9iamVjdCh3b3JsZCktPmdsb2JhbEV4ZWMoKTsKIH0KSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNTUxOTgpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODksNyAr
Mzg5LDcgQEAgTlBPYmplY3QqIFNjcmlwdENvbnRyb2xsZXI6OndpbmRvd1NjcmlwdAogICAgIGlm
IChtX3dpbmRvd1NjcmlwdE5QT2JqZWN0KQogICAgICAgICByZXR1cm4gbV93aW5kb3dTY3JpcHRO
UE9iamVjdDsKIAotICAgIGlmIChjYW5FeGVjdXRlU2NyaXB0cygpKSB7CisgICAgaWYgKGNhbkV4
ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkgewogICAgICAgICAvLyBKYXZh
U2NyaXB0IGlzIGVuYWJsZWQsIHNvIHRoZXJlIGlzIGEgSmF2YVNjcmlwdCB3aW5kb3cgb2JqZWN0
LgogICAgICAgICAvLyBSZXR1cm4gYW4gTlBPYmplY3QgYm91bmQgdG8gdGhlIHdpbmRvdyBvYmpl
Y3QuCiAgICAgICAgIG1fd2luZG93U2NyaXB0TlBPYmplY3QgPSBjcmVhdGVTY3JpcHRPYmplY3Qo
bV9mcmFtZSk7CkBAIC00MDYsNyArNDA2LDcgQEAgTlBPYmplY3QqIFNjcmlwdENvbnRyb2xsZXI6
OndpbmRvd1NjcmlwdAogTlBPYmplY3QqIFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlwdE9i
amVjdEZvclBsdWdpbkVsZW1lbnQoSFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdpbikKIHsKICAgICAv
LyBDYW4ndCBjcmVhdGUgTlBPYmplY3RzIHdoZW4gSmF2YVNjcmlwdCBpcyBkaXNhYmxlZC4KLSAg
ICBpZiAoIWNhbkV4ZWN1dGVTY3JpcHRzKCkpCisgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cyhO
b3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIHJldHVybiBjcmVhdGVOb1NjcmlwdE9i
amVjdCgpOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgJKHJldmlzaW9uIDU1MTk4KQorKysgV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYg
KzU1LDExIEBAIGNsYXNzIFN0cmluZzsKIGNsYXNzIFdpZGdldDsKIGNsYXNzIFhTU0F1ZGl0b3I7
CiAKK2VudW0gUmVhc29uRm9yQ2FsbGluZ0NhbkV4ZWN1dGVTY3JpcHRzIHsKKyAgICBBYm91dFRv
RXhlY3V0ZVNjcmlwdCwKKyAgICBOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdAorfTsKKwogY2xhc3Mg
U2NyaXB0Q29udHJvbGxlciB7CiBwdWJsaWM6CiAgICAgU2NyaXB0Q29udHJvbGxlcihGcmFtZSop
OwpAQCAtMTEzLDcgKzExOCw3IEBAIHB1YmxpYzoKICAgICAvLyBDaGVjayBpZiB0aGUgamF2YXNj
cmlwdCBlbmdpbmUgaGFzIGJlZW4gaW5pdGlhbGl6ZWQuCiAgICAgYm9vbCBoYXZlSW50ZXJwcmV0
ZXIoKSBjb25zdDsKIAotICAgIGJvb2wgY2FuRXhlY3V0ZVNjcmlwdHMoKTsKKyAgICBib29sIGNh
bkV4ZWN1dGVTY3JpcHRzKFJlYXNvbkZvckNhbGxpbmdDYW5FeGVjdXRlU2NyaXB0cyk7CiAKICAg
ICAvLyBGSVhNRTogdm9pZCogaXMgYSBjb21waWxlIGhhY2suCiAgICAgdm9pZCBhdHRhY2hEZWJ1
Z2dlcih2b2lkKik7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVu
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0
ZW5lci5jcHAJKHJldmlzaW9uIDU1MTk4KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRF
dmVudExpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBQYXNzUmVm
UHRyPFY4TGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0CiAKICAgICBpZiAoRnJhbWUqIGZyYW1l
ID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewogICAgICAgICBTY3JpcHRDb250cm9sbGVy
KiBzY3JpcHRDb250cm9sbGVyID0gZnJhbWUtPnNjcmlwdCgpOwotICAgICAgICBpZiAoIXNjcmlw
dENvbnRyb2xsZXItPmNhbkV4ZWN1dGVTY3JpcHRzKCkpCisgICAgICAgIGlmICghc2NyaXB0Q29u
dHJvbGxlci0+Y2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQogICAgICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT54c3NBdWRp
dG9yKCktPmNhbkNyZWF0ZUlubGluZUV2ZW50TGlzdGVuZXIoYXR0ci0+bG9jYWxOYW1lKCkuc3Ry
aW5nKCksIGF0dHItPnZhbHVlKCkpKSB7CkBAIC04OSw3ICs4OSw3IEBAIFBhc3NSZWZQdHI8VjhM
YXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXQKICAgICBTdHJpbmcgc291cmNlVVJMOwogCiAgICAg
U2NyaXB0Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxlciA9IGZyYW1lLT5zY3JpcHQoKTsKLSAg
ICBpZiAoIXNjcmlwdENvbnRyb2xsZXItPmNhbkV4ZWN1dGVTY3JpcHRzKCkpCisgICAgaWYgKCFz
Y3JpcHRDb250cm9sbGVyLT5jYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkp
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT54c3NBdWRp
dG9yKCktPmNhbkNyZWF0ZUlubGluZUV2ZW50TGlzdGVuZXIoYXR0ci0+bG9jYWxOYW1lKCkuc3Ry
aW5nKCksIGF0dHItPnZhbHVlKCkpKSB7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJv
eHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAJKHJl
dmlzaW9uIDU1MTk4KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTYwLDcgKzU2MCw3IEBAIFY4UHJveHkqIFY4UHJveHk6OnJldHJpZXZlKEZy
YW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gMDsKLSAgICBy
ZXR1cm4gZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cygpID8gZnJhbWUtPnNjcmlw
dCgpLT5wcm94eSgpIDogMDsKKyAgICByZXR1cm4gZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRl
U2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkgPyBmcmFtZS0+c2NyaXB0KCktPnByb3h5
KCkgOiAwOwogfQogCiBWOFByb3h5KiBWOFByb3h5OjpyZXRyaWV2ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KQpJbmRleDogV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDU1MTk4
KQorKysgV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
Nyw3ICsxNzcsNyBAQCB2b2lkIFNjcmlwdEVsZW1lbnREYXRhOjpldmFsdWF0ZVNjcmlwdChjCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX2VsZW1lbnQtPmRvY3Vt
ZW50KCktPmZyYW1lKCkpIHsKLSAgICAgICAgaWYgKCFmcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1
dGVTY3JpcHRzKCkpCisgICAgICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2Ny
aXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgbV9ldmFsdWF0ZWQgPSB0cnVlOwpJbmRleDogV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyTGli
eG1sMi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyTGlieG1sMi5j
cHAJKHJldmlzaW9uIDU1MTk4KQorKysgV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyTGlieG1sMi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc4Niw3ICs3ODYsNyBAQCB2b2lkIFhNTFRva2VuaXplcjo6
c3RhcnRFbGVtZW50TnMoY29uc3QgCiAgICAgfQogCiAgICAgU2NyaXB0Q29udHJvbGxlcioganNQ
cm94eSA9IG1fZG9jLT5mcmFtZSgpID8gbV9kb2MtPmZyYW1lKCktPnNjcmlwdCgpIDogMDsKLSAg
ICBpZiAoanNQcm94eSAmJiBtX2RvYy0+ZnJhbWUoKS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3Jp
cHRzKCkpCisgICAgaWYgKGpzUHJveHkgJiYgbV9kb2MtPmZyYW1lKCktPnNjcmlwdCgpLT5jYW5F
eGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIGpzUHJveHkt
PnNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIobGluZU51bWJlcigpKTsKIAogICAgIGhhbmRsZUVs
ZW1lbnRBdHRyaWJ1dGVzKG5ld0VsZW1lbnQuZ2V0KCksIGxpYnhtbEF0dHJpYnV0ZXMsIG5iX2F0
dHJpYnV0ZXMsIGVjLCBtX3NjcmlwdGluZ1Blcm1pc3Npb24pOwpJbmRleDogV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAkocmV2aXNpb24gNTUxOTgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOTQsNyArMTE5NCw3IEBAIGJvb2wgSFRN
TE1lZGlhRWxlbWVudDo6Y29udHJvbHMoKSBjb25zdAogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3Vt
ZW50KCktPmZyYW1lKCk7CiAKICAgICAvLyBhbHdheXMgc2hvdyBjb250cm9scyB3aGVuIHNjcmlw
dGluZyBpcyBkaXNhYmxlZAotICAgIGlmIChmcmFtZSAmJiAhZnJhbWUtPnNjcmlwdCgpLT5jYW5F
eGVjdXRlU2NyaXB0cygpKQorICAgIGlmIChmcmFtZSAmJiAhZnJhbWUtPnNjcmlwdCgpLT5jYW5F
eGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZShjb250cm9sc0F0dHIpOwpJbmRleDogV2Vi
Q29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9I
VE1MVG9rZW5pemVyLmNwcAkocmV2aXNpb24gNTUxOTgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFRv
a2VuaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MTEsNyArMTUxMSw3IEBAIEhUTUxUb2tl
bml6ZXI6OlN0YXRlIEhUTUxUb2tlbml6ZXI6OnBhcnMKICAgICAgICAgICAgICAgICBtX3Njcmlw
dFRhZ1NyY0F0dHJWYWx1ZSA9IFN0cmluZygpOwogICAgICAgICAgICAgICAgIG1fc2NyaXB0VGFn
Q2hhcnNldEF0dHJWYWx1ZSA9IFN0cmluZygpOwogICAgICAgICAgICAgICAgIGlmIChtX2N1cnJl
bnRUb2tlbi5hdHRycyAmJiAhbV9mcmFnbWVudCkgewotICAgICAgICAgICAgICAgICAgICBpZiAo
bV9kb2MtPmZyYW1lKCkgJiYgbV9kb2MtPmZyYW1lKCktPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2Ny
aXB0cygpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX2RvYy0+ZnJhbWUoKSAmJiBtX2Rv
Yy0+ZnJhbWUoKS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRl
U2NyaXB0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChhID0gbV9jdXJyZW50VG9r
ZW4uYXR0cnMtPmdldEF0dHJpYnV0ZUl0ZW0oc3JjQXR0cikpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fc2NyaXB0VGFnU3JjQXR0clZhbHVlID0gbV9kb2MtPmNvbXBsZXRlVVJMKGRl
cHJlY2F0ZWRQYXJzZVVSTChhLT52YWx1ZSgpKSkuc3RyaW5nKCk7CiAgICAgICAgICAgICAgICAg
ICAgIH0KQEAgLTE5MjEsNyArMTkyMSw3IEBAIHZvaWQgSFRNTFRva2VuaXplcjo6ZmluaXNoKCkK
IFBhc3NSZWZQdHI8Tm9kZT4gSFRNTFRva2VuaXplcjo6cHJvY2Vzc1Rva2VuKCkKIHsKICAgICBT
Y3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0gKCFtX2ZyYWdtZW50ICYmIG1fZG9j
LT5mcmFtZSgpKSA/IG1fZG9jLT5mcmFtZSgpLT5zY3JpcHQoKSA6IDA7Ci0gICAgaWYgKHNjcmlw
dENvbnRyb2xsZXIgJiYgc2NyaXB0Q29udHJvbGxlci0+Y2FuRXhlY3V0ZVNjcmlwdHMoKSkKKyAg
ICBpZiAoc2NyaXB0Q29udHJvbGxlciAmJiBzY3JpcHRDb250cm9sbGVyLT5jYW5FeGVjdXRlU2Ny
aXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIC8vIEZJWE1FOiBXaHkgaXNu
J3QgdGhpcyBtX2N1cnJlbnRTY3JpcHRUYWdTdGFydExpbmVOdW1iZXI/ICBJIHN1c3BlY3QgdGhp
cyBpcyB3cm9uZy4KICAgICAgICAgc2NyaXB0Q29udHJvbGxlci0+c2V0RXZlbnRIYW5kbGVyTGlu
ZU51bWJlcihtX2N1cnJlbnRUYWdTdGFydExpbmVOdW1iZXIgKyAxKTsgLy8gU2NyaXB0IGxpbmUg
bnVtYmVycyBhcmUgMSBiYXNlZC4KICAgICBpZiAobV9kZXN0ID4gbV9idWZmZXIpIHsKSW5kZXg6
IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA1NTE5
OCkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMzAsNyArMjMwLDcgQEAgc3RhdGljIGJvb2wgY2FuUGFzc05vZGVUb0phdmFT
Y3JpcHQoTm9kZQogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEZy
YW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7Ci0gICAgcmV0dXJuIGZyYW1l
ICYmIGZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoKTsKKyAgICByZXR1cm4gZnJh
bWUgJiYgZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0
ZVNjcmlwdCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdChOb2RlKiBu
b2RlKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNTUxOTgpCisrKyBXZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NjcsNyArMTQ2
Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQKIGJvb2wgRnJh
bWVMb2FkZXI6OmlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkKIHsKICAgICBGcmFtZSogZnJhbWUg
PSBtX2ZyYW1lLT50cmVlKCktPnRvcCgpOwotICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLT5jYW5F
eGVjdXRlU2NyaXB0cygpKQorICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2Ny
aXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIHJldHVybiB0cnVlOyAvLyBJ
ZiBKYXZhU2NyaXB0IGlzIGRpc2FibGVkLCBhIHVzZXIgZ2VzdHVyZSBtdXN0IGhhdmUgaW5pdGlh
dGVkIHRoZSBuYXZpZ2F0aW9uLgogICAgIHJldHVybiBmcmFtZS0+c2NyaXB0KCktPnByb2Nlc3Np
bmdVc2VyR2VzdHVyZShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7IC8vIEZJWE1FOiBVc2UgcGFn
ZUlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlLgogfQpAQCAtMjY4MCw3ICsyNjgwLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6b3BlbihDYWNoZWRQYWdlJiBjYWNoZQogICAgIGNsb3NlVVJMKCk7CiAgICAg
CiAgICAgLy8gRGVsZXRlIG9sZCBzdGF0dXMgYmFyIG1lc3NhZ2VzIChpZiBpdCBfd2FzXyBhY3Rp
dmF0ZWQgb24gbGFzdCBVUkwpLgotICAgIGlmIChtX2ZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0
ZVNjcmlwdHMoKSkgeworICAgIGlmIChtX2ZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlw
dHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKSB7CiAgICAgICAgIG1fZnJhbWUtPnNldEpTU3Rh
dHVzQmFyVGV4dChTdHJpbmcoKSk7CiAgICAgICAgIG1fZnJhbWUtPnNldEpTRGVmYXVsdFN0YXR1
c0JhclRleHQoU3RyaW5nKCkpOwogICAgIH0KQEAgLTM5MTAsNyArMzkxMCw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmRpc3BhdGNoRG9jdW1lbnRFbGVtZW4KIAogdm9pZCBGcmFtZUxvYWRlcjo6ZGlz
cGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdHNJbkFsbFdvcmxkcygpCiB7Ci0gICAgaWYgKCFtX2Zy
YW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoKSkKKyAgICBpZiAoIW1fZnJhbWUtPnNj
cmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFZlY3RvcjxET01XcmFwcGVyV29ybGQqPiB3b3JsZHM7CkBAIC0z
OTIxLDcgKzM5MjEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENsZWFyV2luZG93
CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCogd29ybGQpCiB7Ci0gICAgaWYgKCFtX2ZyYW1lLT5zY3JpcHQoKS0+
Y2FuRXhlY3V0ZVNjcmlwdHMoKSB8fCAhbV9mcmFtZS0+c2NyaXB0KCktPmV4aXN0aW5nV2luZG93
U2hlbGwod29ybGQpKQorICAgIGlmICghbV9mcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3Jp
cHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCAhbV9mcmFtZS0+c2NyaXB0KCktPmV4aXN0
aW5nV2luZG93U2hlbGwod29ybGQpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NsaWVudC0+
ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQod29ybGQpOwpJbmRleDogV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA1NTE5OCkKKysrIFdlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2MCw2ICsyNjAsMTMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dKYXZhU2NyaXB0
KGJvb2wgZW5hYmxlZFBlclNldHRpbmdzKSB7IHJldHVybiBlbmFibGVkUGVyU2V0dGluZ3M7IH0K
ICAgICAgICAgdmlydHVhbCBib29sIGFsbG93UGx1Z2lucyhib29sIGVuYWJsZWRQZXJTZXR0aW5n
cykgeyByZXR1cm4gZW5hYmxlZFBlclNldHRpbmdzOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBh
bGxvd0ltYWdlcyhib29sIGVuYWJsZWRQZXJTZXR0aW5ncykgeyByZXR1cm4gZW5hYmxlZFBlclNl
dHRpbmdzOyB9CisKKyAgICAgICAgLy8gVGhpcyBjYWxsYmFjayBub3RpZmllcyB0aGUgY2xpZW50
IHRoYXQgdGhlIGZyYW1lIHdhcyBhYm91dCB0byBydW4KKyAgICAgICAgLy8gSmF2YVNjcmlwdCBi
dXQgZGlkIG5vdCBiZWNhdXNlIGFsbG93SmF2YVNjcmlwdCByZXR1cm5lZCBmYWxzZS4gV2UKKyAg
ICAgICAgLy8gaGF2ZSBhIHNlcGFyYXRlIGNhbGxiYWNrIGhlcmUgYmVjYXVzZSB0aGVyZSBhcmUg
YSBudW1iZXIgb2YgcGxhY2VzCisgICAgICAgIC8vIHRoYXQgbmVlZCB0byBrbm93IGlmIEphdmFT
Y3JpcHQgaXMgZW5hYmxlZCBidXQgYXJlIG5vdCBuZWNlc3NhcmlseQorICAgICAgICAvLyBwcmVw
YXJpbmcgdG8gZXhlY3V0ZSBzY3JpcHQuCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWROb3RBbGxv
d1NjcmlwdCgpIHsgfQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkocmV2aXNpb24gNTUxOTgpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDItMjQgIEFkYW0gQmFydGggIDxh
YmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBbQ2hyb21pdW0gQVBJXSBEaXNhbWJpZ3VhdGUgYWxsb3dKYXZhU2NyaXB0IGZy
b20gZGlkTm90QWxsb3dTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM1MjA1CisKKyAgICAgICAgUGx1bWIgZGlkTm90QWxsb3dTY3JpcHQgdGhy
b3VnaCBDaHJvbWl1bSdzIFdlYktpdCBBUEkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWVD
bGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6OmRpZE5vdEFsbG93U2Ny
aXB0KToKKyAgICAgICAgKiBzcmMvRGVidWdnZXJBZ2VudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpEZWJ1Z2dlckFnZW50SW1wbDo6Y3JlYXRlVXRpbGl0eUNvbnRleHQpOgorICAgICAgICAq
IHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRlckNsaWVudEltcGw6OmRpZE5vdEFsbG93U2NyaXB0KToKKyAgICAgICAgKiBzcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6YmluZFRvV2luZG93T2JqZWN0KToKKwogMjAxMC0w
Mi0yMyAgSmFtZXMgSGF3a2lucyAgPGpoYXdraW5zQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkZyYW1lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
cmFtZUNsaWVudC5oCShyZXZpc2lvbiA1NTE5OCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRnJhbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUyLDYgKzI1Miw5IEBAIHB1Ymxp
YzoKICAgICAvLyBDb250cm9scyB3aGV0aGVyIHNjcmlwdHMgYXJlIGFsbG93ZWQgdG8gZXhlY3V0
ZSBmb3IgdGhpcyBmcmFtZS4KICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dTY3JpcHQoV2ViRnJhbWUq
LCBib29sIGVuYWJsZWRQZXJTZXR0aW5ncykgeyByZXR1cm4gZW5hYmxlZFBlclNldHRpbmdzOyB9
CiAKKyAgICAvLyBOb3RpZmllcyB0aGUgY2xpZW50IHRoYXQgdGhlIGZyYW1lIHdvdWxkIGhhdmUg
ZXhlY3V0ZWQgc2NyaXB0IGlmIHNjcmlwdCB3ZXJlIGVuYWJsZWQuCisgICAgdmlydHVhbCB2b2lk
IGRpZE5vdEFsbG93U2NyaXB0KFdlYkZyYW1lKikgeyB9CisKICAgICAvLyBTY3JpcHQgaW4gdGhl
IHBhZ2UgdHJpZWQgdG8gYWxsb2NhdGUgdG9vIG11Y2ggbWVtb3J5LgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRFeGhhdXN0TWVtb3J5QXZhaWxhYmxlRm9yU2NyaXB0KFdlYkZyYW1lKikgeyB9CiAKSW5k
ZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudEltcGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudEltcGwuY3BwCShyZXZpc2lvbiA1
NTE5OCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudEltcGwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgRGVidWdnZXJBZ2VudEltcGw6OmRlYnVn
Z2VyT3V0cHV0KGMKIHZvaWQgRGVidWdnZXJBZ2VudEltcGw6OmNyZWF0ZVV0aWxpdHlDb250ZXh0
KEZyYW1lKiBmcmFtZSwgdjg6OlBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+KiBjb250ZXh0KQogewog
ICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKLSAgICBib29sIGNhbkV4ZWN1dGVTY3JpcHRzID0g
ZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cygpOworICAgIGJvb2wgY2FuRXhlY3V0
ZVNjcmlwdHMgPSBmcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKFdlYkNvcmU6Ok5v
dEFib3V0VG9FeGVjdXRlU2NyaXB0KTsKIAogICAgIC8vIFNldCB1cCB0aGUgRE9NIHdpbmRvdyBh
cyB0aGUgcHJvdG90eXBlIG9mIHRoZSBuZXcgZ2xvYmFsIG9iamVjdC4KICAgICB2ODo6SGFuZGxl
PHY4OjpDb250ZXh0PiB3aW5kb3dDb250ZXh0ID0gVjhQcm94eTo6Y29udGV4dChmcmFtZSk7Cklu
ZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShy
ZXZpc2lvbiA1NTE5OCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJ
bXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDYgKzE4MCwxMiBAQCBib29sIEZyYW1lTG9h
ZGVyQ2xpZW50SW1wbDo6YWxsb3dJbWFnZXMoCiAgICAgcmV0dXJuIGVuYWJsZWRQZXJTZXR0aW5n
czsKIH0KIAordm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpZE5vdEFsbG93U2NyaXB0KCkK
K3sKKyAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpCisgICAgICAgIG1fd2ViRnJhbWUtPmNs
aWVudCgpLT5kaWROb3RBbGxvd1NjcmlwdChtX3dlYkZyYW1lKTsKK30KKwogYm9vbCBGcmFtZUxv
YWRlckNsaWVudEltcGw6Omhhc1dlYlZpZXcoKSBjb25zdAogewogICAgIHJldHVybiBtX3dlYkZy
YW1lLT52aWV3SW1wbCgpOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNs
aWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5oCShyZXZpc2lvbiA1NTE5OCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5NSw2ICsxOTUsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIGFsbG93SmF2YVNjcmlwdChib29sIGVuYWJsZWRQZXJT
ZXR0aW5ncyk7CiAgICAgdmlydHVhbCBib29sIGFsbG93UGx1Z2lucyhib29sIGVuYWJsZWRQZXJT
ZXR0aW5ncyk7CiAgICAgdmlydHVhbCBib29sIGFsbG93SW1hZ2VzKGJvb2wgZW5hYmxlZFBlclNl
dHRpbmdzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTm90QWxsb3dTY3JpcHQoKTsKIAogcHJpdmF0
ZToKICAgICB2b2lkIG1ha2VEb2N1bWVudFZpZXcoKTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRnJhbWVJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZyYW1lSW1wbC5jcHAJKHJldmlzaW9uIDU1MTk4KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJGcmFtZUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTYsNyArNTk2LDcgQEAgTlBPYmpl
Y3QqIFdlYkZyYW1lSW1wbDo6d2luZG93T2JqZWN0KCkgYwogdm9pZCBXZWJGcmFtZUltcGw6OmJp
bmRUb1dpbmRvd09iamVjdChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIE5QT2JqZWN0KiBvYmplY3Qp
CiB7CiAgICAgQVNTRVJUKG1fZnJhbWUpOwotICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+
c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKCkpCisgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2Zy
YW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQp
KQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcga2V5ID0gbmFtZTsKSW5kZXg6IFdlYktp
dC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA1NTE5OCkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTAtMDItMjQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hyb21p
dW0gQVBJXSBEaXNhbWJpZ3VhdGUgYWxsb3dKYXZhU2NyaXB0IGZyb20gZGlkTm90QWxsb3dTY3Jp
cHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MjA1
CisKKyAgICAgICAgTWFrZSB0aGVzZSB0d28gY2FsbHNpdGVzIGV4cGxpY2l0IGFib3V0IG5vdCBy
dW5uaW5nIHNjcmlwdCBpbW1lZGlhdGVseS4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5OjpnZXRXaW5kb3dOUE9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZGVtYXJzaGFsVmFsdWVGcm9tQXJyYXkpOgor
CiAyMDEwLTAyLTIzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBUaW0gSGF0Y2hlciBhbmQgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFdlYktp
dC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5j
ZVByb3h5Lm1tCShyZXZpc2lvbiA1NTE5OCkKKysrIFdlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC03ODIsNyAr
NzgyLDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmdldFdpbgogICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpZiAoIWZyYW1lLT5z
Y3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoKSkKKyAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS0+
Y2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQogICAgICAgICBvYmpl
Y3RJRCA9IDA7CiAgICAgZWxzZQogICAgICAgICBvYmplY3RJRCA9IG1fbG9jYWxPYmplY3RzLmlk
Rm9yT2JqZWN0KGZyYW1lLT5zY3JpcHQoKS0+d2luZG93U2hlbGwocGx1Z2luV29ybGQoKSktPndp
bmRvdygpKTsKQEAgLTEyODcsNyArMTI4Nyw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5j
ZVByb3h5OjpkZW1hcnMKICAgICAgICAgICAgIGlmICghZnJhbWUpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoIWZyYW1lLT5zY3Jp
cHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoKSkKKyAgICAgICAgICAgIGlmICghZnJhbWUtPnNjcmlw
dCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICBSZWZQdHI8Um9vdE9iamVjdD4g
cm9vdE9iamVjdCA9IGZyYW1lLT5zY3JpcHQoKS0+Y3JlYXRlUm9vdE9iamVjdChtX3BsdWdpblZp
ZXcpOwo=
</data>
<flag name="review"
          id="32304"
          type_id="1"
          status="+"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="32305"
          type_id="3"
          status="+"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>