<?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>77451</bug_id>
          
          <creation_ts>2012-01-31 10:22:08 -0800</creation_ts>
          <short_desc>Remove JSObject defineGetter/defineSetter lookupGetter/lookupSetter</short_desc>
          <delta_ts>2012-02-29 00:26:55 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>abarth</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>546203</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-01-31 10:22:08 -0800</bug_when>
    <thetext>These can now all be implemented in terms of defineOwnProperty &amp; getPropertyDescriptor.  Also remove initializeGetterSetterProperty, since this is equivalent to putDirectAccessor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546207</commentid>
    <comment_count>1</comment_count>
      <attachid>124769</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-01-31 10:24:05 -0800</bug_when>
    <thetext>Created attachment 124769
The patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546208</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-31 10:26:05 -0800</bug_when>
    <thetext>Attachment 124769 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
First, rewinding head to replay your work on top of it...
Applying: Fix compilation errors on build-webkit --debug --no-workers on mac.
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/qt/Skipped
CONFLICT (content): Merge conflict in LayoutTests/platform/qt/Skipped
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 Fix compilation errors on build-webkit --debug --no-workers on mac.

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546412</commentid>
    <comment_count>3</comment_count>
      <attachid>124769</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-01-31 13:09:14 -0800</bug_when>
    <thetext>Comment on attachment 124769
The patch

Attachment 124769 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11387104</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546693</commentid>
    <comment_count>4</comment_count>
      <attachid>124861</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-01-31 17:42:23 -0800</bug_when>
    <thetext>Created attachment 124861
build fixed for windows &amp; qt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546704</commentid>
    <comment_count>5</comment_count>
      <attachid>124864</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-01-31 18:13:55 -0800</bug_when>
    <thetext>Created attachment 124864
More win build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546768</commentid>
    <comment_count>6</comment_count>
      <attachid>124864</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-01-31 20:26:32 -0800</bug_when>
    <thetext>Comment on attachment 124864
More win build fix

Attachment 124864 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11393262</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546770</commentid>
    <comment_count>7</comment_count>
      <attachid>124876</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-01-31 20:28:45 -0800</bug_when>
    <thetext>Created attachment 124876
More qt build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546772</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-31 20:33:01 -0800</bug_when>
    <thetext>Attachment 124876 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/WebKit/qt/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 1 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546791</commentid>
    <comment_count>9</comment_count>
      <attachid>124876</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-01-31 21:38:33 -0800</bug_when>
    <thetext>Comment on attachment 124876
More qt build fix

Attachment 124876 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11386318</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547470</commentid>
    <comment_count>10</comment_count>
      <attachid>125039</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-01 16:23:02 -0800</bug_when>
    <thetext>Created attachment 125039
More build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547472</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-01 16:25:50 -0800</bug_when>
    <thetext>Attachment 125039 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/WebKit/qt/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 1 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549511</commentid>
    <comment_count>12</comment_count>
      <attachid>125510</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-04 18:27:32 -0800</bug_when>
    <thetext>Created attachment 125510
More win build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549711</commentid>
    <comment_count>13</comment_count>
      <attachid>125564</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-05 21:21:07 -0800</bug_when>
    <thetext>Created attachment 125564
Merged up</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549806</commentid>
    <comment_count>14</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-06 00:56:25 -0800</bug_when>
    <thetext>Fixed in r106783</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567458</commentid>
    <comment_count>15</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-29 00:26:55 -0800</bug_when>
    <thetext>*** Bug 71493 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124769</attachid>
            <date>2012-01-31 10:24:05 -0800</date>
            <delta_ts>2012-01-31 13:09:14 -0800</delta_ts>
            <desc>The patch</desc>
            <filename>77451.patch</filename>
            <type>text/plain</type>
            <size>39558</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MzY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDEyLTAxLTMxICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW1vdmUgSlNPYmplY3QgZGVmaW5lR2V0dGVyL2RlZmluZVNldHRlciBsb29r
dXBHZXR0ZXIvbG9va3VwU2V0dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NzQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZXNlIGNhbiBub3cgYWxsIGJlIGltcGxlbWVudGVkIGluIHRlcm1zIG9m
IGRlZmluZU93blByb3BlcnR5ICYgZ2V0UHJvcGVydHlEZXNjcmlwdG9yLgorICAgICAgICBBbHNv
IHJlbW92ZSBpbml0aWFsaXplR2V0dGVyU2V0dGVyUHJvcGVydHksIHNpbmNlIHRoaXMgaXMgZXF1
aXZhbGVudCB0byBwdXREaXJlY3RBY2Nlc3Nvci4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LmV4cDoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwOgorICAgICAg
ICAoSlNDOjpEZWJ1Z2dlckFjdGl2YXRpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAg
KiBkZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaDoKKyAgICAgICAgKERlYnVnZ2VyQWN0aXZh
dGlvbik6CisgICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKE1ldGhvZFRh
YmxlKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24u
Y3BwOgorICAgICAgICAoSlNDOjpKU0JvdW5kRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDZWxsLmg6CisgICAgICAgIChKU0NlbGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNG
dW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xv
dCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTR2xvYmFsT2JqZWN0KToK
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNPYmplY3QpOgorICAgICAgICAqIHJ1
bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5j
RGVmaW5lR2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVy
KToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jTG9va3VwR2V0dGVyKToKKyAgICAgICAg
KEpTQzo6b2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyKToKKwogMjAxMi0wMS0zMSAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFZlY3RvcjxUPjo6b3Bl
cmF0b3I9PSBzaG91bGRuJ3QgcmVxdWlyZSBUIHRvIGhhdmUgb3BlcmF0b3IhPQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCShyZXZpc2lvbiAxMDYyODYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjcsMTIgKzE2NywxMSBAQCBfX1pOM0pTQzEzU2FtcGxpbmdGbGFnczdzX2ZsYWdzRQog
X19aTjNKU0MxM1N0YXRlbWVudE5vZGU2c2V0TG9jRWlpCiBfX1pOM0pTQzE0RXhlY3V0YWJsZUJh
c2U2c19pbmZvRQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTBnbG9iYWxFeGVjRXYKLV9fWk4z
SlNDMTRKU0dsb2JhbE9iamVjdDEyZGVmaW5lR2V0dGVyRVBOU184SlNPYmplY3RFUE5TXzlFeGVj
U3RhdGVFUktOU18xMElkZW50aWZpZXJFUzJfagotX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTJk
ZWZpbmVTZXR0ZXJFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmll
ckVTMl9qCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxM2NsZWFyUmFyZURhdGFFUE5TXzZKU0Nl
bGxFCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxM3Zpc2l0Q2hpbGRyZW5FUE5TXzZKU0NlbGxF
Uk5TXzExU2xvdFZpc2l0b3JFCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxNmFkZFN0YXRpY0ds
b2JhbHNFUE5TMF8xOEdsb2JhbFByb3BlcnR5SW5mb0VpCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmpl
Y3QxNnB1dERpcmVjdFZpcnR1YWxFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEw
SWRlbnRpZmllckVOU183SlNWYWx1ZUVqCitfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxN2RlZmlu
ZU93blByb3BlcnR5RVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZp
ZXJFUk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRWIKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDE4
Z2V0T3duUHJvcGVydHlTbG90RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVu
dGlmaWVyRVJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDI0Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFUktOU18x
MElkZW50aWZpZXJFUk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNKU0MxNEpTR2xvYmFs
T2JqZWN0MjVzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlRQpAQCAtMzE1LDEwICszMTQsNiBAQCBf
X1pOM0pTQzhEZWJ1Z2dlckQyRXYKIF9fWk4zSlNDOEpTT2JqZWN0MTBwdXRCeUluZGV4RVBOU182
SlNDZWxsRVBOU185RXhlY1N0YXRlRWpOU183SlNWYWx1ZUUKIF9fWk4zSlNDOEpTT2JqZWN0MTFo
YXNJbnN0YW5jZUVQUzBfUE5TXzlFeGVjU3RhdGVFTlNfN0pTVmFsdWVFUzRfCiBfX1pOM0pTQzhK
U09iamVjdDEyZGVmYXVsdFZhbHVlRVBLUzBfUE5TXzlFeGVjU3RhdGVFTlNfMjJQcmVmZXJyZWRQ
cmltaXRpdmVUeXBlRQotX19aTjNKU0M4SlNPYmplY3QxMmRlZmluZUdldHRlckVQUzBfUE5TXzlF
eGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUzFfagotX19aTjNKU0M4SlNPYmplY3QxMmRlZmlu
ZVNldHRlckVQUzBfUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUzFfagotX19aTjNK
U0M4SlNPYmplY3QxMmxvb2t1cEdldHRlckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmll
ckUKLV9fWk4zSlNDOEpTT2JqZWN0MTJsb29rdXBTZXR0ZXJFUE5TXzlFeGVjU3RhdGVFUktOU18x
MElkZW50aWZpZXJFCiBfX1pOM0pTQzhKU09iamVjdDEydG9UaGlzT2JqZWN0RVBOU182SlNDZWxs
RVBOU185RXhlY1N0YXRlRQogX19aTjNKU0M4SlNPYmplY3QxM3Zpc2l0Q2hpbGRyZW5FUE5TXzZK
U0NlbGxFUk5TXzExU2xvdFZpc2l0b3JFCiBfX1pOM0pTQzhKU09iamVjdDE0ZGVsZXRlUHJvcGVy
dHlFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0
aW9uLmNwcAkocmV2aXNpb24gMTA2Mjg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSwxNiArMTAx
LDEwIEBAIGJvb2wgRGVidWdnZXJBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eUQKICAgICByZXR1
cm4gdGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IodGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLmdldCgpLCBleGVjLCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCi12b2lkIERlYnVnZ2VyQWN0aXZhdGlvbjo6ZGVmaW5l
R2V0dGVyKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpCitib29sIERlYnVnZ2VyQWN0aXZhdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKIHsK
ICAgICBEZWJ1Z2dlckFjdGl2YXRpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8RGVidWdnZXJBY3Rp
dmF0aW9uKj4ob2JqZWN0KTsKLSAgICB0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhvZFRh
YmxlKCktPmRlZmluZUdldHRlcih0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24uZ2V0KCksIGV4ZWMs
IHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rpb24sIGF0dHJpYnV0ZXMpOwotfQotCi12b2lkIERl
YnVnZ2VyQWN0aXZhdGlvbjo6ZGVmaW5lU2V0dGVyKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVy
RnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCi17Ci0gICAgRGVidWdnZXJBY3RpdmF0aW9u
KiB0aGlzT2JqZWN0ID0ganNDYXN0PERlYnVnZ2VyQWN0aXZhdGlvbio+KG9iamVjdCk7Ci0gICAg
dGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVTZXR0ZXIodGhp
c09iamVjdC0+bV9hY3RpdmF0aW9uLmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNldHRlckZ1
bmN0aW9uLCBhdHRyaWJ1dGVzKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+bV9hY3RpdmF0aW9u
LT5tZXRob2RUYWJsZSgpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LT5tX2FjdGl2YXRp
b24uZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDEwNjI4NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtNDksOCArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lKTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlKTsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRv
ciYpOwotICAgICAgICBzdGF0aWMgdm9pZCBkZWZpbmVHZXR0ZXIoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0ZXJGdW5j
dGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGRlZmluZVNl
dHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNPYmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAg
ICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wg
c2hvdWxkVGhyb3cpOwogCiAgICAgICAgIEpTX0VYUE9SVERBVEEgc3RhdGljIGNvbnN0IENsYXNz
SW5mbyBzX2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNz
SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNz
SW5mby5oCShyZXZpc2lvbiAxMDYyODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DbGFzc0luZm8uaAkod29ya2luZyBjb3B5KQpAQCAtNjYsMTIgKzY2LDYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHR5cGVkZWYgSlNPYmplY3QqICgqVG9UaGlzT2JqZWN0RnVuY3Rpb25Q
dHIpKEpTQ2VsbCosIEV4ZWNTdGF0ZSopOwogICAgICAgICBUb1RoaXNPYmplY3RGdW5jdGlvblB0
ciB0b1RoaXNPYmplY3Q7CiAKLSAgICAgICAgdHlwZWRlZiB2b2lkICgqRGVmaW5lR2V0dGVyRnVu
Y3Rpb25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTT2Jq
ZWN0KiwgdW5zaWduZWQpOwotICAgICAgICBEZWZpbmVHZXR0ZXJGdW5jdGlvblB0ciBkZWZpbmVH
ZXR0ZXI7Ci0KLSAgICAgICAgdHlwZWRlZiB2b2lkICgqRGVmaW5lU2V0dGVyRnVuY3Rpb25QdHIp
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTT2JqZWN0KiwgdW5z
aWduZWQpOwotICAgICAgICBEZWZpbmVTZXR0ZXJGdW5jdGlvblB0ciBkZWZpbmVTZXR0ZXI7Ci0K
ICAgICAgICAgdHlwZWRlZiBKU1ZhbHVlICgqRGVmYXVsdFZhbHVlRnVuY3Rpb25QdHIpKGNvbnN0
IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAgICAgICAg
IERlZmF1bHRWYWx1ZUZ1bmN0aW9uUHRyIGRlZmF1bHRWYWx1ZTsKIApAQCAtMTI4LDggKzEyMiw2
IEBAIHN0cnVjdCBNZW1iZXJDaGVjayMjbWVtYmVyIHsgXAogICAgICAgICAmQ2xhc3NOYW1lOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0T3duUHJvcGVydHlT
bG90QnlJbmRleCwgXAogICAgICAgICAmQ2xhc3NOYW1lOjp0b1RoaXNPYmplY3QsIFwKLSAgICAg
ICAgJkNsYXNzTmFtZTo6ZGVmaW5lR2V0dGVyLCBcCi0gICAgICAgICZDbGFzc05hbWU6OmRlZmlu
ZVNldHRlciwgXAogICAgICAgICAmQ2xhc3NOYW1lOjpkZWZhdWx0VmFsdWUsIFwKICAgICAgICAg
JkNsYXNzTmFtZTo6Z2V0T3duUHJvcGVydHlOYW1lcywgXAogICAgICAgICAmQ2xhc3NOYW1lOjpn
ZXRQcm9wZXJ0eU5hbWVzLCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JvdW5kRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDEwNjI4NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU0JvdW5k
RnVuY3Rpb24uaCIKIAorI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTExLDggKzExMiw4IEBAIHZvaWQg
SlNCb3VuZEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihFeGUKICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbihleGVjLCBleGVjdXRhYmxlLCBsZW5ndGgsIG5hbWUpOwogICAgIEFTU0VSVChpbmhlcml0
cygmc19pbmZvKSk7CiAKLSAgICBpbml0aWFsaXplR2V0dGVyU2V0dGVyUHJvcGVydHkoZXhlYywg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cywgZ2xvYmFsT2JqZWN0KCktPnRocm93VHlw
ZUVycm9yR2V0dGVyU2V0dGVyKGV4ZWMpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBBY2Nlc3Nv
cik7Ci0gICAgaW5pdGlhbGl6ZUdldHRlclNldHRlclByb3BlcnR5KGV4ZWMsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5jYWxsZXIsIGdsb2JhbE9iamVjdCgpLT50aHJvd1R5cGVFcnJvckdldHRlclNl
dHRlcihleGVjKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgQWNjZXNzb3IpOworICAgIHB1dERp
cmVjdEFjY2Vzc29yKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmFy
Z3VtZW50cywgZ2xvYmFsT2JqZWN0KCktPnRocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKGV4ZWMp
LCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBBY2Nlc3Nvcik7CisgICAgcHV0RGlyZWN0QWNjZXNz
b3IoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVyLCBnbG9i
YWxPYmplY3QoKS0+dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoZXhlYyksIERvbnREZWxldGUg
fCBEb250RW51bSB8IEFjY2Vzc29yKTsKIH0KIAogdm9pZCBKU0JvdW5kRnVuY3Rpb246OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkocmV2aXNpb24gMTA2Mjg2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTU4LDE2ICsxNTgsNiBAQCB2b2lkIHNsb3dWYWxpZGF0ZUNlbGwoSlNDZWxsKiBjZWxsKQog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfTE9PS1NfVkFMSUQoY2VsbCk7CiB9CiAKLXZvaWQgSlNDZWxs
OjpkZWZpbmVHZXR0ZXIoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
SlNPYmplY3QqLCB1bnNpZ25lZCkKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQot
dm9pZCBKU0NlbGw6OmRlZmluZVNldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBKU09iamVjdCosIHVuc2lnbmVkKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotfQotCiBKU1ZhbHVlIEpTQ2VsbDo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkKIHsKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZp
c2lvbiAxMDYyODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAko
d29ya2luZyBjb3B5KQpAQCAtMTUyLDggKzE1Miw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAKICAgICAgICAgLy8g
RHVtbXkgaW1wbGVtZW50YXRpb25zIG9mIG92ZXJyaWRlLWFibGUgc3RhdGljIGZ1bmN0aW9ucyBm
b3IgY2xhc3NlcyB0byBwdXQgaW4gdGhlaXIgTWV0aG9kVGFibGUKLSAgICAgICAgc3RhdGljIE5P
X1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTT2JqZWN0KiwgdW5zaWduZWQpOwotICAgICAgICBz
dGF0aWMgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBkZWZpbmVTZXR0ZXIoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBz
ZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOwogICAgICAgICBzdGF0aWMg
SlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJy
ZWRQcmltaXRpdmVUeXBlKTsKICAgICAgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJU
IHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICAgICAgc3RhdGljIE5PX1JFVFVSTl9E
VUVfVE9fQVNTRVJUIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAxMDYyODYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2lu
Y2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKQEAgLTIxNSw3ICsy
MTYsNyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU0NlCiAgICAgICAg
IGlmICh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpIHsKICAgICAg
ICAgICAgIGJvb2wgcmVzdWx0ID0gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewot
ICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPmluaXRpYWxpemVHZXR0ZXJTZXR0ZXJQcm9wZXJ0
eShleGVjLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT50aHJvd1R5
cGVFcnJvckdldHRlclNldHRlcihleGVjKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgQWNjZXNz
b3IpOworICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdEFjY2Vzc29yKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+
dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoZXhlYyksIERvbnREZWxldGUgfCBEb250RW51bSB8
IEFjY2Vzc29yKTsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBCYXNlOjpnZXRPd25Qcm9wZXJ0
eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgICAg
ICAgICBBU1NFUlQocmVzdWx0KTsKICAgICAgICAgICAgIH0KQEAgLTIzNCw3ICsyMzUsNyBAQCBi
b29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU0NlCiAgICAgICAgIGlmICh0aGlz
T2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpIHsKICAgICAgICAgICAgIGJv
b2wgcmVzdWx0ID0gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAg
ICAgICAgIHRoaXNPYmplY3QtPmluaXRpYWxpemVHZXR0ZXJTZXR0ZXJQcm9wZXJ0eShleGVjLCBw
cm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT50aHJvd1R5cGVFcnJvckdl
dHRlclNldHRlcihleGVjKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgQWNjZXNzb3IpOworICAg
ICAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdEFjY2Vzc29yKGV4ZWMtPmdsb2JhbERh
dGEoKSwgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+dGhyb3dUeXBl
RXJyb3JHZXR0ZXJTZXR0ZXIoZXhlYyksIERvbnREZWxldGUgfCBEb250RW51bSB8IEFjY2Vzc29y
KTsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgICAgICAgICBBU1NF
UlQocmVzdWx0KTsKICAgICAgICAgICAgIH0KQEAgLTI2Myw3ICsyNjQsNyBAQCBib29sIEpTRnVu
Y3Rpb246OmdldE93blByb3BlcnR5RGVzY3JpcHRvCiAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5q
c0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpIHsKICAgICAgICAgICAgIGJvb2wgcmVzdWx0
ID0gQmFzZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgZGVzY3JpcHRvcik7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAg
ICAgICAgICAgIHRoaXNPYmplY3QtPmluaXRpYWxpemVHZXR0ZXJTZXR0ZXJQcm9wZXJ0eShleGVj
LCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT50aHJvd1R5cGVFcnJv
ckdldHRlclNldHRlcihleGVjKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgQWNjZXNzb3IpOwor
ICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdEFjY2Vzc29yKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+dGhyb3dU
eXBlRXJyb3JHZXR0ZXJTZXR0ZXIoZXhlYyksIERvbnREZWxldGUgfCBEb250RW51bSB8IEFjY2Vz
c29yKTsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBCYXNlOjpnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKICAgICAg
ICAgICAgICAgICBBU1NFUlQocmVzdWx0KTsKICAgICAgICAgICAgIH0KQEAgLTI4Miw3ICsyODMs
NyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5RGVzY3JpcHRvCiAgICAgICAgIGlm
ICh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpIHsKICAgICAgICAg
ICAgIGJvb2wgcmVzdWx0ID0gQmFzZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiAgICAgICAgICAgICBpZiAoIXJl
c3VsdCkgewotICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPmluaXRpYWxpemVHZXR0ZXJTZXR0
ZXJQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgp
LT50aHJvd1R5cGVFcnJvckdldHRlclNldHRlcihleGVjKSwgRG9udERlbGV0ZSB8IERvbnRFbnVt
IHwgQWNjZXNzb3IpOworICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdEFjY2Vz
c29yKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0LT5nbG9iYWxP
YmplY3QoKS0+dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoZXhlYyksIERvbnREZWxldGUgfCBE
b250RW51bSB8IEFjY2Vzc29yKTsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBCYXNlOjpnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0KTsKICAgICAgICAgICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAJKHJldmlzaW9uIDEwNjI4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDIxICsxNzEsMTYgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6cHV0RGlyZWN0VmlydHVhbChKUwogICAgIH0KIH0KIAotdm9p
ZCBKU0dsb2JhbE9iamVjdDo6ZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVy
RnVuYywgdW5zaWduZWQgYXR0cmlidXRlcykKK2Jvb2wgSlNHbG9iYWxPYmplY3Q6OmRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wg
c2hvdWxkVGhyb3cpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNHbG9iYWxPYmplY3QqPihvYmplY3QpOwogICAgIFByb3BlcnR5U2xvdCBzbG90OwotICAgIGlm
ICghdGhpc09iamVjdC0+c3ltYm9sVGFibGVHZXQocHJvcGVydHlOYW1lLCBzbG90KSkKLSAgICAg
ICAgSlNWYXJpYWJsZU9iamVjdDo6ZGVmaW5lR2V0dGVyKHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgZ2V0dGVyRnVuYywgYXR0cmlidXRlcyk7CisgICAgLy8gc2lsZW50bHkgaWdub3Jl
IGF0dGVtcHRzIHRvIGFkZCBhY2Nlc3NvcnMgYWxpYXNpbmcgdmFycy4KKyAgICBpZiAoZGVzY3Jp
cHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpICYmIHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlR2V0
KHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
QmFzZTo6ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CiAKLXZvaWQgSlNHbG9iYWxPYmplY3Q6OmRlZmlu
ZVNldHRlcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpCi17Ci0gICAgSlNHbG9iYWxPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxP
YmplY3QqPihvYmplY3QpOwotICAgIFByb3BlcnR5U2xvdCBzbG90OwotICAgIGlmICghdGhpc09i
amVjdC0+c3ltYm9sVGFibGVHZXQocHJvcGVydHlOYW1lLCBzbG90KSkKLSAgICAgICAgSlNWYXJp
YWJsZU9iamVjdDo6ZGVmaW5lU2V0dGVyKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
c2V0dGVyRnVuYywgYXR0cmlidXRlcyk7Ci19CiAKIHN0YXRpYyBpbmxpbmUgSlNPYmplY3QqIGxh
c3RJblByb3RvdHlwZUNoYWluKEpTT2JqZWN0KiBvYmplY3QpCiB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDEwNjI4
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTIwNiw2ICsyMDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkZWZpbmVHZXR0ZXIoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0
ZXJGdW5jLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIHZvaWQgZGVmaW5lU2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVyRnVuYywgdW5zaWduZWQgYXR0
cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIAogICAgICAg
ICAvLyBXZSB1c2UgdGhpcyBpbiB0aGUgY29kZSBnZW5lcmF0b3IgYXMgd2UgcGVyZm9ybSBzeW1i
b2wgdGFibGUKICAgICAgICAgLy8gbG9va3VwcyBwcmlvciB0byBpbml0aWFsaXppbmcgdGhlIHBy
b3BlcnRpZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAJKHJldmlzaW9uIDEwNjI4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYxLDEwNiArMzYxLDYgQEAgY29uc3QgSGFz
aEVudHJ5KiBKU09iamVjdDo6ZmluZFByb3BlcnR5SAogICAgIHJldHVybiAwOwogfQogCi12b2lk
IEpTT2JqZWN0OjpkZWZpbmVHZXR0ZXIoSlNPYmplY3QqIHRoaXNPYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVu
Y3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCi17Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKSB7Ci0gICAgICAgIC8vIERlZmlu
aW5nIGEgZ2V0dGVyIGZvciBfX3Byb3RvX18gaXMgc2lsZW50bHkgaWdub3JlZC4KLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIEpTVmFsdWUgb2JqZWN0ID0gdGhpc09iamVjdC0+Z2V0RGly
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsKLSAgICBpZiAob2JqZWN0ICYm
IG9iamVjdC5pc0dldHRlclNldHRlcigpKSB7Ci0gICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5z
dHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsKLSAgICAgICAgYXNHZXR0
ZXJTZXR0ZXIob2JqZWN0KS0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2V0dGVyRnVu
Y3Rpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90Owot
ICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUoZXhl
Yyk7Ci0gICAgdGhpc09iamVjdC0+cHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blBy
b3BlcnR5PihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGdldHRlclNldHRlciwgYXR0cmlidXRl
cyB8IEFjY2Vzc29yLCBzbG90LCAwKTsKLQotICAgIC8vIHB1dERpcmVjdCB3aWxsIGNoYW5nZSBv
dXIgU3RydWN0dXJlIGlmIHdlIGFkZCBhIG5ldyBwcm9wZXJ0eS4gRm9yCi0gICAgLy8gZ2V0dGVy
cyBhbmQgc2V0dGVycywgdGhvdWdoLCB3ZSBhbHNvIG5lZWQgdG8gY2hhbmdlIG91ciBTdHJ1Y3R1
cmUKLSAgICAvLyBpZiB3ZSBvdmVycmlkZSBhbiBleGlzdGluZyBub24tZ2V0dGVyIG9yIG5vbi1z
ZXR0ZXIuCi0gICAgaWYgKHNsb3QudHlwZSgpICE9IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVy
dHkpCi0gICAgICAgIHRoaXNPYmplY3QtPnNldFN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCks
IFN0cnVjdHVyZTo6YXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbihnbG9iYWxEYXRhLCB0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzIHwgQWNjZXNzb3IpKTsK
LQotICAgIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5zZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0
aWVzKHRydWUpOwotICAgIGdldHRlclNldHRlci0+c2V0R2V0dGVyKGdsb2JhbERhdGEsIGdldHRl
ckZ1bmN0aW9uKTsKLX0KLQotdm9pZCBKU09iamVjdDo6aW5pdGlhbGl6ZUdldHRlclNldHRlclBy
b3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBH
ZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciwgdW5zaWduZWQgYXR0cmlidXRlcykKLXsKLSAgICAv
LyBTZXQgYW4gaW5pdGFsIHByb3BlcnR5IG9uIGFuIG9iamVjdDsgdGhlIHByb3BlcnR5IG11c3Qg
bm90IGFscmVhZHkgZXhpc3QgJiB0aGUgYXR0cmlidXRlIGZsYWdzIG11c3QgYmUgc2V0IGNvcnJl
Y3RseS4KLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIHBy
b3BlcnR5TmFtZSkgPT0gV1RGOjpub3RGb3VuZCk7Ci0gICAgQVNTRVJUKHN0YXRpY19jYXN0PGJv
b2w+KGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwotCi0gICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OwotICAg
IHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4oZ2xvYmFsRGF0YSwg
cHJvcGVydHlOYW1lLCBnZXR0ZXJTZXR0ZXIsIGF0dHJpYnV0ZXMsIHNsb3QsIDApOwotCi0gICAg
Ly8gcHV0RGlyZWN0IHdpbGwgY2hhbmdlIG91ciBTdHJ1Y3R1cmUgaWYgd2UgYWRkIGEgbmV3IHBy
b3BlcnR5LiBGb3IKLSAgICAvLyBnZXR0ZXJzIGFuZCBzZXR0ZXJzLCB0aG91Z2gsIHdlIGFsc28g
bmVlZCB0byBjaGFuZ2Ugb3VyIFN0cnVjdHVyZQotICAgIC8vIGlmIHdlIG92ZXJyaWRlIGFuIGV4
aXN0aW5nIG5vbi1nZXR0ZXIgb3Igbm9uLXNldHRlci4KLSAgICBpZiAoc2xvdC50eXBlKCkgIT0g
UHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkKLSAgICAgICAgc2V0U3RydWN0dXJlKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgU3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKGdsb2Jh
bERhdGEsIHN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpKTsKLQotICAgIHN0
cnVjdHVyZSgpLT5zZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHRydWUpOwotfQotCi12b2lk
IEpTT2JqZWN0OjpkZWZpbmVTZXR0ZXIoSlNPYmplY3QqIHRoaXNPYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVyRnVu
Y3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCi17Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKSB7Ci0gICAgICAgIC8vIERlZmlu
aW5nIGEgc2V0dGVyIGZvciBfX3Byb3RvX18gaXMgc2lsZW50bHkgaWdub3JlZC4KLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIEpTVmFsdWUgb2JqZWN0ID0gdGhpc09iamVjdC0+Z2V0RGly
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsKLSAgICBpZiAob2JqZWN0ICYm
IG9iamVjdC5pc0dldHRlclNldHRlcigpKSB7Ci0gICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5z
dHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsKLSAgICAgICAgYXNHZXR0
ZXJTZXR0ZXIob2JqZWN0KS0+c2V0U2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgc2V0dGVyRnVu
Y3Rpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUHV0UHJvcGVydHlTbG90IHNs
b3Q7Ci0gICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0
ZShleGVjKTsKLSAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5l
T3duUHJvcGVydHk+KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCBnZXR0ZXJTZXR0
ZXIsIGF0dHJpYnV0ZXMgfCBBY2Nlc3Nvciwgc2xvdCwgMCk7Ci0KLSAgICAvLyBwdXREaXJlY3Qg
d2lsbCBjaGFuZ2Ugb3VyIFN0cnVjdHVyZSBpZiB3ZSBhZGQgYSBuZXcgcHJvcGVydHkuIEZvcgot
ICAgIC8vIGdldHRlcnMgYW5kIHNldHRlcnMsIHRob3VnaCwgd2UgYWxzbyBuZWVkIHRvIGNoYW5n
ZSBvdXIgU3RydWN0dXJlCi0gICAgLy8gaWYgd2Ugb3ZlcnJpZGUgYW4gZXhpc3Rpbmcgbm9uLWdl
dHRlciBvciBub24tc2V0dGVyLgotICAgIGlmIChzbG90LnR5cGUoKSAhPSBQdXRQcm9wZXJ0eVNs
b3Q6Ok5ld1Byb3BlcnR5KQotICAgICAgICB0aGlzT2JqZWN0LT5zZXRTdHJ1Y3R1cmUoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBhdHRy
aWJ1dGVzIHwgQWNjZXNzb3IpKTsKLQotICAgIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5zZXRI
YXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHRydWUpOwotICAgIGdldHRlclNldHRlci0+c2V0U2V0
dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgc2V0dGVyRnVuY3Rpb24pOwotfQotCi1KU1ZhbHVlIEpT
T2JqZWN0Ojpsb29rdXBHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUpCi17Ci0gICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7Ci0gICAg
aWYgKCFnZXRQcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9y
KSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBpZiAoIWRlc2NyaXB0b3Iu
Z2V0dGVyUHJlc2VudCgpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIHJl
dHVybiBkZXNjcmlwdG9yLmdldHRlcigpOwotfQotCi1KU1ZhbHVlIEpTT2JqZWN0Ojpsb29rdXBT
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCi17
Ci0gICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7Ci0gICAgaWYgKCFnZXRQcm9wZXJ0
eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKSkKLSAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBpZiAoIWRlc2NyaXB0b3Iuc2V0dGVyUHJlc2VudCgp
KQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAKLSAgICByZXR1cm4gZGVzY3Jp
cHRvci5zZXR0ZXIoKTsKLX0KLQogYm9vbCBKU09iamVjdDo6aGFzSW5zdGFuY2UoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG8pCiB7CiAgICAg
aWYgKCF2YWx1ZS5pc09iamVjdCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMDYyODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsMTMgKzE5Miw2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHB1dERpcmVjdE9mZnNldChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIHNpemVfdCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgcHJvcGVydHlTdG9y
YWdlKClbb2Zmc2V0XS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOyB9CiAgICAgICAgIHZv
aWQgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNldCkgeyBwcm9wZXJ0eVN0
b3JhZ2UoKVtvZmZzZXRdLnNldFVuZGVmaW5lZCgpOyB9CiAKLSAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBmaWxsR2V0dGVyUHJvcGVydHlTbG90KFByb3BlcnR5U2xvdCYsIFdyaXRlQmFy
cmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uKTsKLSAgICAgICAgdm9pZCBpbml0aWFsaXplR2V0
dGVyU2V0dGVyUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEdldHRlclNl
dHRlciosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB2b2lkIGRlZmluZUdldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmN0aW9uLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzID0gMCk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
IGRlZmluZVNldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
ID0gMCk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgbG9va3VwR2V0dGVyKEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIEpTVmFsdWUgbG9va3VwU2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93
KTsKIAogICAgICAgICBib29sIGlzR2xvYmFsT2JqZWN0KCkgY29uc3Q7CkBAIC0yOTUsNiArMjg4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgcHV0RGlyZWN0SW50ZXJuYWwoSlNH
bG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNp
Z25lZCBhdHRyLCBQdXRQcm9wZXJ0eVNsb3QmLCBKU0NlbGwqKTsKIAogICAgICAgICBib29sIGlu
bGluZUdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3QoUHJvcGVydHlTbG90JiwgV3JpdGVCYXJyaWVyQmFzZTxV
bmtub3duPiogbG9jYXRpb24pOwogCiAgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZmluZFByb3Bl
cnR5SGFzaEVudHJ5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkg
Y29uc3Q7CiAgICAgICAgIFN0cnVjdHVyZSogY3JlYXRlSW5oZXJpdG9ySUQoSlNHbG9iYWxEYXRh
Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFBy
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDEwNjI4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NiwxMCArMTQ2
LDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG8KICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAKKyAgICBKU1ZhbHVlIGdldCA9IGV4ZWMtPmFyZ3VtZW50KDEpOwogICAg
IENhbGxEYXRhIGNhbGxEYXRhOwotICAgIGlmIChnZXRDYWxsRGF0YShleGVjLT5hcmd1bWVudCgx
KSwgY2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkKKyAgICBpZiAoZ2V0Q2FsbERhdGEoZ2V0LCBj
YWxsRGF0YSkgPT0gQ2FsbFR5cGVOb25lKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJpbnZhbGlkIGdldHRlciB1c2FnZSIpKTsKLSAg
ICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWZpbmVHZXR0ZXIodGhpc09iamVjdCwgZXhl
YywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYykpLCBhc09iamVjdChleGVjLT5hcmd1bWVudCgxKSksIDApOworCisgICAgUHJvcGVy
dHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CisgICAgZGVzY3JpcHRvci5zZXRHZXR0ZXIoZ2V0KTsK
KyAgICBkZXNjcmlwdG9yLnNldEVudW1lcmFibGUodHJ1ZSk7CisgICAgZGVzY3JpcHRvci5zZXRD
b25maWd1cmFibGUodHJ1ZSk7CisgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVmaW5l
T3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1
bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpLCBkZXNjcmlwdG9yLCBmYWxzZSk7
CisKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC0x
NTksMTAgKzE2NiwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3Rv
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCisgICAgSlNWYWx1ZSBzZXQgPSBleGVjLT5hcmd1bWVu
dCgxKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBpZiAoZ2V0Q2FsbERhdGEoZXhlYy0+
YXJndW1lbnQoMSksIGNhbGxEYXRhKSA9PSBDYWxsVHlwZU5vbmUpCisgICAgaWYgKGdldENhbGxE
YXRhKHNldCwgY2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiaW52YWxpZCBzZXR0ZXIgdXNh
Z2UiKSk7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lU2V0dGVyKHRoaXNP
YmplY3QsIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpKSwgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMSkpLCAwKTsKKwor
ICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOworICAgIGRlc2NyaXB0b3Iuc2V0U2V0
dGVyKHNldCk7CisgICAgZGVzY3JpcHRvci5zZXRFbnVtZXJhYmxlKHRydWUpOworICAgIGRlc2Ny
aXB0b3Iuc2V0Q29uZmlndXJhYmxlKHRydWUpOworICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxl
KCktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXIoZXhlYywg
ZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwgZGVzY3JpcHRv
ciwgZmFsc2UpOworCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIApAQCAtMTcyLDcgKzE4NiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdFByb3RvCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aGlzT2JqZWN0LT5sb29rdXBHZXR0ZXIoZXhlYywgSWRlbnRpZmllcihleGVjLCBleGVj
LT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKSk7CisgICAgUHJvcGVy
dHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CisgICAgaWYgKHRoaXNPYmplY3QtPmdldFByb3BlcnR5
RGVzY3JpcHRvcihleGVjLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIGRlc2NyaXB0b3IpCisgICAgICAgICYmIGRlc2NyaXB0
b3IuZ2V0dGVyUHJlc2VudCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRlc2Ny
aXB0b3IuZ2V0dGVyKCkpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNM
b29rdXBTZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQpAQCAtMTgxLDcgKzIwMCwxMiBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0LT5sb29rdXBTZXR0ZXIoZXhl
YywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYykpKSk7CisgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CisgICAgaWYg
KHRoaXNPYmplY3QtPmdldFByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBJZGVudGlmaWVyKGV4ZWMs
IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIGRlc2NyaXB0
b3IpCisgICAgICAgICYmIGRlc2NyaXB0b3Iuc2V0dGVyUHJlc2VudCgpKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGRlc2NyaXB0b3Iuc2V0dGVyKCkpOworCisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZShFeGVjU3RhdGUqIGV4
ZWMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDYzNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAxMi0wMS0zMSAgR2F2
aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zl
IEpTT2JqZWN0IGRlZmluZUdldHRlci9kZWZpbmVTZXR0ZXIgbG9va3VwR2V0dGVyL2xvb2t1cFNl
dHRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc0
NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVz
ZSBjYW4gbm93IGFsbCBiZSBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBkZWZpbmVPd25Qcm9wZXJ0
eSAmIGdldFByb3BlcnR5RGVzY3JpcHRvci4KKyAgICAgICAgQWxzbyByZW1vdmUgaW5pdGlhbGl6
ZUdldHRlclNldHRlclByb3BlcnR5LCBzaW5jZSB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gcHV0RGly
ZWN0QWNjZXNzb3IuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojpk
ZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVs
bC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd1NoZWxsLmg6CisgICAgICAgIChKU0RPTVdpbmRvd1NoZWxsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRp
b246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb25Qcm90
b3R5cGU6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKiBw
YWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5pZGw6CisKIDIwMTIt
MDEtMzEgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCBpbmNsdWRlIGNsZWFudXAuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiAxMDYyODYp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM4OCwzNSArMzg4LDE3IEBAIHZvaWQgSlNET01XaW5kb3c6OmdldE93
blByb3BlcnR5TmFtZXMoSlMKICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi12b2lkIEpTRE9NV2luZG93Ojpk
ZWZpbmVHZXR0ZXIoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQg
YXR0cmlidXRlcykKLXsKLSAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RP
TVdpbmRvdyo+KG9iamVjdCk7Ci0gICAgLy8gT25seSBhbGxvdyBkZWZpbmluZyBnZXR0ZXJzIGJ5
IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAgaWYgKCF0aGlzT2JqZWN0LT5hbGxvd3NB
Y2Nlc3NGcm9tKGV4ZWMpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBEb24ndCBhbGxvdyBz
aGFkb3dpbmcgbG9jYXRpb24gdXNpbmcgZGVmaW5lR2V0dGVyLgotICAgIGlmIChwcm9wZXJ0eU5h
bWUgPT0gImxvY2F0aW9uIikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQmFzZTo6ZGVmaW5lR2V0
dGVyKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rpb24sIGF0dHJp
YnV0ZXMpOwotfQotCi12b2lkIEpTRE9NV2luZG93OjpkZWZpbmVTZXR0ZXIoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
T2JqZWN0KiBzZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcykKLXsKLSAgICBKU0RP
TVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCk7Ci0gICAg
Ly8gT25seSBhbGxvdyBkZWZpbmluZyBzZXR0ZXJzIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmln
aW4uCi0gICAgaWYgKCF0aGlzT2JqZWN0LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQotICAgICAg
ICByZXR1cm47Ci0gICAgQmFzZTo6ZGVmaW5lU2V0dGVyKHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgc2V0dGVyRnVuY3Rpb24sIGF0dHJpYnV0ZXMpOwotfQotCiBib29sIEpTRE9NV2lu
ZG93OjpkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiBvYmplY3QsIEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgSlNE
T01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihvYmplY3QpOwogICAg
IC8vIE9ubHkgYWxsb3cgZGVmaW5pbmcgcHJvcGVydGllcyBpbiB0aGlzIHdheSBieSBmcmFtZXMg
aW4gdGhlIHNhbWUgb3JpZ2luLCBhcyBpdCBhbGxvd3Mgc2V0dGVycyB0byBiZSBpbnRyb2R1Y2Vk
LgogICAgIGlmICghdGhpc09iamVjdC0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gRG9uJ3QgYWxsb3cgc2hhZG93aW5nIGxvY2F0aW9uIHVz
aW5nIGFjY2Vzc29yIHByb3BlcnRpZXMuCisgICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRl
c2NyaXB0b3IoKSAmJiBwcm9wZXJ0eU5hbWUgPT0gImxvY2F0aW9uIikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCiAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAko
cmV2aXNpb24gMTA2Mjg2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dTaGVsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSwxOCArMTM5LDYgQEAgdm9pZCBKU0RP
TVdpbmRvd1NoZWxsOjpnZXRPd25Qcm9wZXJ0eU5hbQogICAgIHRoaXNPYmplY3QtPndpbmRvdygp
LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QtPndpbmRvdygp
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotdm9pZCBKU0RPTVdpbmRvd1NoZWxs
OjpkZWZpbmVHZXR0ZXIoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jdGlvbiwgdW5zaWdu
ZWQgYXR0cmlidXRlcykKLXsKLSAgICBKU0RPTVdpbmRvd1NoZWxsKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTRE9NV2luZG93U2hlbGwqPihvYmplY3QpOwotICAgIHRoaXNPYmplY3QtPndpbmRvdygp
LT5tZXRob2RUYWJsZSgpLT5kZWZpbmVHZXR0ZXIodGhpc09iamVjdC0+d2luZG93KCksIGV4ZWMs
IHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rpb24sIGF0dHJpYnV0ZXMpOwotfQotCi12b2lkIEpT
RE9NV2luZG93U2hlbGw6OmRlZmluZVNldHRlcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1
bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQotewotICAgIEpTRE9NV2luZG93U2hlbGwqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+KG9iamVjdCk7Ci0gICAgdGhpc09i
amVjdC0+d2luZG93KCktPm1ldGhvZFRhYmxlKCktPmRlZmluZVNldHRlcih0aGlzT2JqZWN0LT53
aW5kb3coKSwgZXhlYywgcHJvcGVydHlOYW1lLCBzZXR0ZXJGdW5jdGlvbiwgYXR0cmlidXRlcyk7
Ci19Ci0KIAogLy8gLS0tLQogLy8gSlNET01XaW5kb3cgbWV0aG9kcwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaAkocmV2aXNpb24gMTA2Mjg2
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Niw4ICs4Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSos
IGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKICAgICAgICAgc3RhdGljIHZv
aWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUpOwogICAgICAgICBz
dGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSk7Ci0gICAg
ICAgIHN0YXRpYyB2b2lkIGRlZmluZUdldHRlcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpKU09iamVjdCog
Z2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgICAgICBzdGF0aWMgdm9p
ZCBkZWZpbmVTZXR0ZXIoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlND
OjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNPYmplY3QqIHNldHRlckZ1bmN0aW9u
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJv
cGVydHkoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRU
aHJvdyk7CiAKICAgICAgICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gbV93b3JsZDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCShy
ZXZpc2lvbiAxMDYyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9u
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDExICsxNzAsMTEgQEAgdm9pZCBKU0xv
Y2F0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTTwogICAgIEJhc2U6OmdldE93blByb3BlcnR5
TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLXZvaWQg
SlNMb2NhdGlvbjo6ZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuY3Rp
b24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTTG9jYXRpb246OmRlZmluZU93blByb3Bl
cnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dF
eGNlcHRpb24pCiB7Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkudG9TdHJpbmcgfHwgcHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1
ZU9mKQotICAgICAgICByZXR1cm47Ci0gICAgQmFzZTo6ZGVmaW5lR2V0dGVyKG9iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdGlvbiwgYXR0cmlidXRlcyk7CisgICAgaWYgKGRl
c2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS50b1N0cmluZyB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVy
dHlOYW1lcygpLnZhbHVlT2YpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIEJh
c2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlw
dG9yLCB0aHJvd0V4Y2VwdGlvbik7CiB9CiAKIHZvaWQgSlNMb2NhdGlvbjo6c2V0SHJlZihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCkBAIC0yODEsMTEgKzI4MSwxMSBAQCBib29sIEpT
TG9jYXRpb25Qcm90b3R5cGU6OnB1dERlbGVnYXRlKEV4CiAgICAgcmV0dXJuIChwcm9wZXJ0eU5h
bWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nIHx8IHByb3BlcnR5TmFtZSA9PSBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZik7CiB9CiAKLXZvaWQgSlNMb2NhdGlvblByb3Rv
dHlwZTo6ZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuY3Rpb24sIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTTG9jYXRpb25Qcm90b3R5cGU6OmRlZmluZU93blBy
b3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhy
b3dFeGNlcHRpb24pCiB7Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkudG9TdHJpbmcgfHwgcHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52
YWx1ZU9mKQotICAgICAgICByZXR1cm47Ci0gICAgQmFzZTo6ZGVmaW5lR2V0dGVyKG9iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdGlvbiwgYXR0cmlidXRlcyk7CisgICAgaWYg
KGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiAocHJvcGVydHlOYW1lID09IGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZyB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJv
cGVydHlOYW1lcygpLnZhbHVlT2YpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJu
IEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCShyZXZpc2lvbiAxMDYyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtODI4LDIwICs4MjgsMTQg
QEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpPdmVy
cmlkZXNHZXRQcm9wZXJ0eU5hbWVzIn0gPSAxOwogICAgIH0KIAotICAgICMgQ3VzdG9tIGRlZmlu
ZVByb3BlcnR5IGZ1bmN0aW9uIGV4aXN0cyBvbiBET01XaW5kb3cKLSAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpO1xuIikgaWYgJGludGVy
ZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyI7Ci0KICAgICAjIEN1c3RvbSBnZXRPd25Qcm9wZXJ0eU5h
bWVzIGZ1bmN0aW9uCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1
c3RvbUdldFByb3BlcnR5TmFtZXMifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJIYXNJbmRleEdldHRlciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhh
c0N1c3RvbUluZGV4R2V0dGVyIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SGFzTnVtZXJpY0luZGV4R2V0dGVyIn0pIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9k
ZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOwogICAgICAgICAk
c3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyJ9ID0gMTsgICAg
ICAgCiAgICAgfQogCi0gICAgIyBDdXN0b20gZGVmaW5lR2V0dGVyIGZ1bmN0aW9uCi0gICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBkZWZpbmVHZXR0ZXIoSlNDOjpKU09i
amVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTQzo6SlNPYmplY3QqIGdldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTtc
biIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbURlZmluZUdldHRl
ciJ9OwotCi0gICAgIyBDdXN0b20gZGVmaW5lU2V0dGVyIGZ1bmN0aW9uCi0gICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBkZWZpbmVTZXR0ZXIoSlNDOjpKU09iamVjdCos
IEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
Qzo6SlNPYmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTtcbiIpIGlm
ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbURlZmluZVNldHRlciJ9Owor
ICAgICMgQ3VzdG9tIGRlZmluZU93blByb3BlcnR5IGZ1bmN0aW9uCisgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0
KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTtcbiIpIGlmICRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbURlZmluZU93blByb3BlcnR5In07CiAK
ICAgICAjIE92ZXJyaWRlIHRvQm9vbGVhbiB0byByZXR1cm4gZmFsc2UgZm9yIG9iamVjdHMgdGhh
dCB3YW50IHRvICdNYXNxdWVyYWRlc0FzVW5kZWZpbmVkJy4KICAgICBpZiAoJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCJ9KSB7CkBAIC0xMDYz
LDggKzEwNTcsOCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJ
ZGVudGlmaWVyJiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpO1xuIik7CiAg
ICAgfQogCi0gICAgIyBDdXN0b20gZGVmaW5lR2V0dGVyIGZ1bmN0aW9uCi0gICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBkZWZpbmVHZXR0ZXIoSlNDOjpKU09iamVjdCos
IEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
Qzo6SlNPYmplY3QqIGdldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTtcbiIpIGlm
ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVByb3RvdHlwZURlZmluZUdl
dHRlciJ9OworICAgICMgQ3VzdG9tIGRlZmluZU93blByb3BlcnR5IGZ1bmN0aW9uCisgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6
OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTtcbiIp
IGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVByb3RvdHlwZURlZmlu
ZU93blByb3BlcnR5In07CiAKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG5wcml2YXRlOlxu
Iik7CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUo
SlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlKSA6IEpTQzo6SlNOb25GaW5hbE9iamVjdChnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUpIHsgfVxuIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShy
ZXZpc2lvbiAxMDYyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAKICAgICBpbnRl
cmZhY2UgWwogICAgICAgICBDaGVja0RvbWFpblNlY3VyaXR5LAotICAgICAgICBDdXN0b21EZWZp
bmVHZXR0ZXIsCi0gICAgICAgIEN1c3RvbURlZmluZVNldHRlciwKKyAgICAgICAgQ3VzdG9tRGVm
aW5lT3duUHJvcGVydHksCiAgICAgICAgIEN1c3RvbURlbGV0ZVByb3BlcnR5LAogICAgICAgICBD
dXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QsCiAgICAgICAgIEN1c3RvbUdldFByb3BlcnR5TmFtZXMs
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAkocmV2aXNpb24gMTA2Mjg2KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM3LDkgKzM3
LDkgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbEZy
YW1lLAogICAgICAgICBDdXN0b21EZWxldGVQcm9wZXJ0eSwKICAgICAgICAgQ3VzdG9tR2V0UHJv
cGVydHlOYW1lcywKLSAgICAgICAgQ3VzdG9tRGVmaW5lR2V0dGVyLAorICAgICAgICBDdXN0b21E
ZWZpbmVPd25Qcm9wZXJ0eSwKICAgICAgICAgRGVsZWdhdGluZ1Byb3RvdHlwZVB1dEZ1bmN0aW9u
LAotICAgICAgICBDdXN0b21Qcm90b3R5cGVEZWZpbmVHZXR0ZXIsCisgICAgICAgIEN1c3RvbVBy
b3RvdHlwZURlZmluZU93blByb3BlcnR5LAogICAgICAgICBPbWl0Q29uc3RydWN0b3IKICAgICBd
IExvY2F0aW9uIHsKICNpZiAhZGVmaW5lZChMQU5HVUFHRV9DUFApIHx8ICFMQU5HVUFHRV9DUFAK
</data>
<flag name="review"
          id="126116"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="126162"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124861</attachid>
            <date>2012-01-31 17:42:23 -0800</date>
            <delta_ts>2012-01-31 18:13:55 -0800</delta_ts>
            <desc>build fixed for windows &amp; qt</desc>
            <filename>77451.2.patch</filename>
            <type>text/plain</type>
            <size>40711</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MzY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDEyLTAxLTMxICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW1vdmUgSlNPYmplY3QgZGVmaW5lR2V0dGVyL2RlZmluZVNldHRlciBsb29r
dXBHZXR0ZXIvbG9va3VwU2V0dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NzQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisK
KyAgICAgICAgVGhlc2UgY2FuIG5vdyBhbGwgYmUgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgZGVm
aW5lT3duUHJvcGVydHkgJiBnZXRQcm9wZXJ0eURlc2NyaXB0b3IuCisgICAgICAgIEFsc28gcmVt
b3ZlIGluaXRpYWxpemVHZXR0ZXJTZXR0ZXJQcm9wZXJ0eSwgc2luY2UgdGhpcyBpcyBlcXVpdmFs
ZW50IHRvIHB1dERpcmVjdEFjY2Vzc29yLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhw
OgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChK
U0M6OkRlYnVnZ2VyQWN0aXZhdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIGRl
YnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oOgorICAgICAgICAoRGVidWdnZXJBY3RpdmF0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgorICAgICAgICAoTWV0aG9kVGFibGUp
OgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6
CisgICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGlt
ZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQ2VsbCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToK
KyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBy
dW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAgICogcnVudGlt
ZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZp
bmVHZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIpOgor
ICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIpOgorICAgICAgICAoSlND
OjpvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIpOgorCiAyMDEyLTAxLTMxICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgVmVjdG9yPFQ+OjpvcGVyYXRv
cj09IHNob3VsZG4ndCByZXF1aXJlIFQgdG8gaGF2ZSBvcGVyYXRvciE9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDEwNjI4NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAg
LTE2NywxMiArMTY3LDExIEBAIF9fWk4zSlNDMTNTYW1wbGluZ0ZsYWdzN3NfZmxhZ3NFCiBfX1pO
M0pTQzEzU3RhdGVtZW50Tm9kZTZzZXRMb2NFaWkKIF9fWk4zSlNDMTRFeGVjdXRhYmxlQmFzZTZz
X2luZm9FCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxMGdsb2JhbEV4ZWNFdgotX19aTjNKU0Mx
NEpTR2xvYmFsT2JqZWN0MTJkZWZpbmVHZXR0ZXJFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0
ZUVSS05TXzEwSWRlbnRpZmllckVTMl9qCi1fX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxMmRlZmlu
ZVNldHRlckVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVMy
X2oKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDEzY2xlYXJSYXJlRGF0YUVQTlNfNkpTQ2VsbEUK
IF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDEzdmlzaXRDaGlsZHJlbkVQTlNfNkpTQ2VsbEVSTlNf
MTFTbG90VmlzaXRvckUKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDE2YWRkU3RhdGljR2xvYmFs
c0VQTlMwXzE4R2xvYmFsUHJvcGVydHlJbmZvRWkKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDE2
cHV0RGlyZWN0VmlydHVhbEVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVu
dGlmaWVyRU5TXzdKU1ZhbHVlRWoKK19fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDE3ZGVmaW5lT3du
UHJvcGVydHlFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVS
TlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFYgogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MThnZXRP
d25Qcm9wZXJ0eVNsb3RFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZp
ZXJFUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MjRnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3JFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRl
bnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmpl
Y3QyNXNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGVFCkBAIC0zMTUsMTAgKzMxNCw2IEBAIF9fWk4z
SlNDOERlYnVnZ2VyRDJFdgogX19aTjNKU0M4SlNPYmplY3QxMHB1dEJ5SW5kZXhFUE5TXzZKU0Nl
bGxFUE5TXzlFeGVjU3RhdGVFak5TXzdKU1ZhbHVlRQogX19aTjNKU0M4SlNPYmplY3QxMWhhc0lu
c3RhbmNlRVBTMF9QTlNfOUV4ZWNTdGF0ZUVOU183SlNWYWx1ZUVTNF8KIF9fWk4zSlNDOEpTT2Jq
ZWN0MTJkZWZhdWx0VmFsdWVFUEtTMF9QTlNfOUV4ZWNTdGF0ZUVOU18yMlByZWZlcnJlZFByaW1p
dGl2ZVR5cGVFCi1fX1pOM0pTQzhKU09iamVjdDEyZGVmaW5lR2V0dGVyRVBTMF9QTlNfOUV4ZWNT
dGF0ZUVSS05TXzEwSWRlbnRpZmllckVTMV9qCi1fX1pOM0pTQzhKU09iamVjdDEyZGVmaW5lU2V0
dGVyRVBTMF9QTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVTMV9qCi1fX1pOM0pTQzhK
U09iamVjdDEybG9va3VwR2V0dGVyRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQot
X19aTjNKU0M4SlNPYmplY3QxMmxvb2t1cFNldHRlckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRl
bnRpZmllckUKIF9fWk4zSlNDOEpTT2JqZWN0MTJ0b1RoaXNPYmplY3RFUE5TXzZKU0NlbGxFUE5T
XzlFeGVjU3RhdGVFCiBfX1pOM0pTQzhKU09iamVjdDEzdmlzaXRDaGlsZHJlbkVQTlNfNkpTQ2Vs
bEVSTlNfMTFTbG90VmlzaXRvckUKIF9fWk4zSlNDOEpTT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQ
TlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCShyZXZp
c2lvbiAxMDYyODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkod29ya2luZyBjb3B5KQpAQCAt
MTM1LDExICsxMzUsNyBAQCBFWFBPUlRTCiAgICAgP2RlY3JlbWVudEBSZWZDb3VudGVkTGVha0Nv
dW50ZXJAV1RGQEBRQUVYWFoKICAgICA/ZGVmYXVsdEF0dHJpYnV0ZXNAUHJvcGVydHlEZXNjcmlw
dG9yQEpTQ0BAMElBCiAgICAgP2RlZmF1bHRWYWx1ZUBKU09iamVjdEBKU0NAQFNBP0FWSlNWYWx1
ZUAyQFBCVjEyQFBBVkV4ZWNTdGF0ZUAyQFc0UHJlZmVycmVkUHJpbWl0aXZlVHlwZUAyQEBaCi0g
ICAgP2RlZmluZUdldHRlckBKU0dsb2JhbE9iamVjdEBKU0NAQFNBWFBBVkpTT2JqZWN0QDJAUEFW
RXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQDBJQFoKLSAgICA/ZGVmaW5lR2V0dGVyQEpTT2Jq
ZWN0QEpTQ0BAU0FYUEFWMTJAUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQDBJQFoKICAg
ICA/ZGVmaW5lT3duUHJvcGVydHlASlNPYmplY3RASlNDQEBTQV9OUEFWMTJAUEFWRXhlY1N0YXRl
QDJAQUJWSWRlbnRpZmllckAyQEFBVlByb3BlcnR5RGVzY3JpcHRvckAyQF9OQFoKLSAgICA/ZGVm
aW5lU2V0dGVyQEpTR2xvYmFsT2JqZWN0QEpTQ0BAU0FYUEFWSlNPYmplY3RAMkBQQVZFeGVjU3Rh
dGVAMkBBQlZJZGVudGlmaWVyQDJAMElAWgotICAgID9kZWZpbmVTZXR0ZXJASlNPYmplY3RASlND
QEBTQVhQQVYxMkBQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAMElAWgogICAgID9kZWxl
dGVPd25lZFB0ckBXVEZAQFlBWFBBVUhCSVRNQVBfX0BAQFoKICAgICA/ZGVsZXRlT3duZWRQdHJA
V1RGQEBZQVhQQVVIQlJVU0hfX0BAQFoKICAgICA/ZGVsZXRlT3duZWRQdHJAV1RGQEBZQVhQQVVI
RENfX0BAQFoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFj
dGl2YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCShyZXZpc2lvbiAxMDYyODYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTAxLDE2ICsxMDEsMTAgQEAgYm9vbCBEZWJ1Z2dlckFjdGl2YXRpb246OmdldE93blBy
b3BlcnR5RAogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhvZFRhYmxl
KCktPmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24uZ2V0
KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKLXZvaWQgRGVidWdnZXJB
Y3RpdmF0aW9uOjpkZWZpbmVHZXR0ZXIoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jdGlv
biwgdW5zaWduZWQgYXR0cmlidXRlcykKK2Jvb2wgRGVidWdnZXJBY3RpdmF0aW9uOjpkZWZpbmVP
d25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29s
IHNob3VsZFRocm93KQogewogICAgIERlYnVnZ2VyQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpz
Q2FzdDxEZWJ1Z2dlckFjdGl2YXRpb24qPihvYmplY3QpOwotICAgIHRoaXNPYmplY3QtPm1fYWN0
aXZhdGlvbi0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lR2V0dGVyKHRoaXNPYmplY3QtPm1fYWN0aXZh
dGlvbi5nZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdGlvbiwgYXR0cmlidXRl
cyk7Ci19Ci0KLXZvaWQgRGVidWdnZXJBY3RpdmF0aW9uOjpkZWZpbmVTZXR0ZXIoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTT2JqZWN0KiBzZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcykKLXsKLSAgICBE
ZWJ1Z2dlckFjdGl2YXRpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8RGVidWdnZXJBY3RpdmF0aW9u
Kj4ob2JqZWN0KTsKLSAgICB0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhvZFRhYmxlKCkt
PmRlZmluZVNldHRlcih0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24uZ2V0KCksIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgc2V0dGVyRnVuY3Rpb24sIGF0dHJpYnV0ZXMpOworICAgIHJldHVybiB0aGlzT2Jq
ZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KHRoaXNP
YmplY3QtPm1fYWN0aXZhdGlvbi5nZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9y
LCBzaG91bGRUaHJvdyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaAkocmV2
aXNpb24gMTA2Mjg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
QWN0aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw4ICs0OSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgdm9p
ZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
UHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGRlZmluZUdldHRlcihK
U09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNP
YmplY3QqIGdldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICAgICAgc3Rh
dGljIHZvaWQgZGVmaW5lU2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpOworICAgICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVj
dCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICAgICAgSlNfRVhQT1JUREFUQSBz
dGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHJldmlzaW9uIDEwNjI4NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxMiAr
NjYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdHlwZWRlZiBKU09iamVjdCogKCpUb1Ro
aXNPYmplY3RGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKik7CiAgICAgICAgIFRvVGhp
c09iamVjdEZ1bmN0aW9uUHRyIHRvVGhpc09iamVjdDsKIAotICAgICAgICB0eXBlZGVmIHZvaWQg
KCpEZWZpbmVHZXR0ZXJGdW5jdGlvblB0cikoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiwgSlNPYmplY3QqLCB1bnNpZ25lZCk7Ci0gICAgICAgIERlZmluZUdldHRlckZ1
bmN0aW9uUHRyIGRlZmluZUdldHRlcjsKLQotICAgICAgICB0eXBlZGVmIHZvaWQgKCpEZWZpbmVT
ZXR0ZXJGdW5jdGlvblB0cikoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiwgSlNPYmplY3QqLCB1bnNpZ25lZCk7Ci0gICAgICAgIERlZmluZVNldHRlckZ1bmN0aW9uUHRy
IGRlZmluZVNldHRlcjsKLQogICAgICAgICB0eXBlZGVmIEpTVmFsdWUgKCpEZWZhdWx0VmFsdWVG
dW5jdGlvblB0cikoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRp
dmVUeXBlKTsKICAgICAgICAgRGVmYXVsdFZhbHVlRnVuY3Rpb25QdHIgZGVmYXVsdFZhbHVlOwog
CkBAIC0xMjgsOCArMTIyLDYgQEAgc3RydWN0IE1lbWJlckNoZWNrIyNtZW1iZXIgeyBcCiAgICAg
ICAgICZDbGFzc05hbWU6OmdldE93blByb3BlcnR5U2xvdCwgXAogICAgICAgICAmQ2xhc3NOYW1l
OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4LCBcCiAgICAgICAgICZDbGFzc05hbWU6OnRvVGhp
c09iamVjdCwgXAotICAgICAgICAmQ2xhc3NOYW1lOjpkZWZpbmVHZXR0ZXIsIFwKLSAgICAgICAg
JkNsYXNzTmFtZTo6ZGVmaW5lU2V0dGVyLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmRlZmF1bHRW
YWx1ZSwgXAogICAgICAgICAmQ2xhc3NOYW1lOjpnZXRPd25Qcm9wZXJ0eU5hbWVzLCBcCiAgICAg
ICAgICZDbGFzc05hbWU6OmdldFByb3BlcnR5TmFtZXMsIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMTA2
Mjg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogCisjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMTEs
OCArMTEyLDggQEAgdm9pZCBKU0JvdW5kRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKEV4ZQogICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMsIGV4ZWN1dGFibGUsIGxlbmd0aCwgbmFtZSk7CiAg
ICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIAotICAgIGluaXRpYWxpemVHZXR0ZXJTZXR0
ZXJQcm9wZXJ0eShleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzLCBnbG9iYWxP
YmplY3QoKS0+dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoZXhlYyksIERvbnREZWxldGUgfCBE
b250RW51bSB8IEFjY2Vzc29yKTsKLSAgICBpbml0aWFsaXplR2V0dGVyU2V0dGVyUHJvcGVydHko
ZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlciwgZ2xvYmFsT2JqZWN0KCktPnRocm93
VHlwZUVycm9yR2V0dGVyU2V0dGVyKGV4ZWMpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBBY2Nl
c3Nvcik7CisgICAgcHV0RGlyZWN0QWNjZXNzb3IoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzLCBnbG9iYWxPYmplY3QoKS0+dGhyb3dUeXBlRXJyb3JH
ZXR0ZXJTZXR0ZXIoZXhlYyksIERvbnREZWxldGUgfCBEb250RW51bSB8IEFjY2Vzc29yKTsKKyAg
ICBwdXREaXJlY3RBY2Nlc3NvcihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5jYWxsZXIsIGdsb2JhbE9iamVjdCgpLT50aHJvd1R5cGVFcnJvckdldHRlclNldHRlcihl
eGVjKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgQWNjZXNzb3IpOwogfQogCiB2b2lkIEpTQm91
bmRGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCShyZXZp
c2lvbiAxMDYyODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsMTYgKzE1OCw2IEBAIHZvaWQgc2xvd1ZhbGlkYXRlQ2Vs
bChKU0NlbGwqIGNlbGwpCiAgICAgQVNTRVJUX0dDX09CSkVDVF9MT09LU19WQUxJRChjZWxsKTsK
IH0KIAotdm9pZCBKU0NlbGw6OmRlZmluZUdldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBKU09iamVjdCosIHVuc2lnbmVkKQotewotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotfQotCi12b2lkIEpTQ2VsbDo6ZGVmaW5lU2V0dGVyKEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTT2JqZWN0KiwgdW5zaWduZWQpCi17Ci0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KIEpTVmFsdWUgSlNDZWxsOjpkZWZhdWx0VmFsdWUo
Y29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKQogewog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmgJKHJldmlzaW9uIDEwNjI4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsOCArMTUyLDYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKIAogICAgICAgICAvLyBEdW1teSBpbXBsZW1lbnRhdGlvbnMgb2Ygb3ZlcnJpZGUtYWJsZSBz
dGF0aWMgZnVuY3Rpb25zIGZvciBjbGFzc2VzIHRvIHB1dCBpbiB0aGVpciBNZXRob2RUYWJsZQot
ICAgICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBkZWZpbmVHZXR0ZXIo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNPYmplY3QqLCB1bnNp
Z25lZCk7Ci0gICAgICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGRlZmlu
ZVNldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMCk7
CiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwogICAgICAgICBzdGF0aWMgTk9fUkVU
VVJOX0RVRV9UT19BU1NFUlQgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgICAgICBz
dGF0aWMgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHJl
dmlzaW9uIDEwNjI4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ2FsbEZy
YW1lLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9u
UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJh
eS5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVj
dC5oIgpAQCAtMjE1LDcgKzIxNiw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2UKICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmlj
dE1vZGUoKSkgewogICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBCYXNlOjpnZXRPd25Qcm9wZXJ0
eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgICAg
IGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgdGhpc09iamVjdC0+aW5pdGlhbGl6ZUdl
dHRlclNldHRlclByb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSwgdGhpc09iamVjdC0+Z2xvYmFs
T2JqZWN0KCktPnRocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKGV4ZWMpLCBEb250RGVsZXRlIHwg
RG9udEVudW0gfCBBY2Nlc3Nvcik7CisgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0RGly
ZWN0QWNjZXNzb3IoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3Qt
Pmdsb2JhbE9iamVjdCgpLT50aHJvd1R5cGVFcnJvckdldHRlclNldHRlcihleGVjKSwgRG9udERl
bGV0ZSB8IERvbnRFbnVtIHwgQWNjZXNzb3IpOwogICAgICAgICAgICAgICAgIHJlc3VsdCA9IEJh
c2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQpOwogICAgICAgICAgICAgfQpAQCAt
MjM0LDcgKzIzNSw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2UK
ICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkg
ewogICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgICAgIGlmICghcmVz
dWx0KSB7Ci0gICAgICAgICAgICAgICAgdGhpc09iamVjdC0+aW5pdGlhbGl6ZUdldHRlclNldHRl
clByb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSwgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCkt
PnRocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKGV4ZWMpLCBEb250RGVsZXRlIHwgRG9udEVudW0g
fCBBY2Nlc3Nvcik7CisgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0RGlyZWN0QWNjZXNz
b3IoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QtPmdsb2JhbE9i
amVjdCgpLT50aHJvd1R5cGVFcnJvckdldHRlclNldHRlcihleGVjKSwgRG9udERlbGV0ZSB8IERv
bnRFbnVtIHwgQWNjZXNzb3IpOwogICAgICAgICAgICAgICAgIHJlc3VsdCA9IEJhc2U6OmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
ICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQpOwogICAgICAgICAgICAgfQpAQCAtMjYzLDcgKzI2
NCw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG8KICAgICAgICAg
aWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkgewogICAgICAg
ICAgICAgYm9vbCByZXN1bHQgPSBCYXNlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKICAgICAgICAgICAgIGlmICgh
cmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgdGhpc09iamVjdC0+aW5pdGlhbGl6ZUdldHRlclNl
dHRlclByb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSwgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0
KCktPnRocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKGV4ZWMpLCBEb250RGVsZXRlIHwgRG9udEVu
dW0gfCBBY2Nlc3Nvcik7CisgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0RGlyZWN0QWNj
ZXNzb3IoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QtPmdsb2Jh
bE9iamVjdCgpLT50aHJvd1R5cGVFcnJvckdldHRlclNldHRlcihleGVjKSwgRG9udERlbGV0ZSB8
IERvbnRFbnVtIHwgQWNjZXNzb3IpOwogICAgICAgICAgICAgICAgIHJlc3VsdCA9IEJhc2U6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IpOwogICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQpOwogICAgICAgICAgICAg
fQpAQCAtMjgyLDcgKzI4Myw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG8KICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1v
ZGUoKSkgewogICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBCYXNlOjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKICAg
ICAgICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgdGhpc09iamVjdC0+aW5p
dGlhbGl6ZUdldHRlclNldHRlclByb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSwgdGhpc09iamVj
dC0+Z2xvYmFsT2JqZWN0KCktPnRocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKGV4ZWMpLCBEb250
RGVsZXRlIHwgRG9udEVudW0gfCBBY2Nlc3Nvcik7CisgICAgICAgICAgICAgICAgdGhpc09iamVj
dC0+cHV0RGlyZWN0QWNjZXNzb3IoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHRo
aXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT50aHJvd1R5cGVFcnJvckdldHRlclNldHRlcihleGVj
KSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgQWNjZXNzb3IpOwogICAgICAgICAgICAgICAgIHJl
c3VsdCA9IEJhc2U6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQp
OwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTA2Mjg2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzEsMjEgKzE3MSwxNiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpwdXREaXJlY3RWaXJ0dWFsKEpT
CiAgICAgfQogfQogCi12b2lkIEpTR2xvYmFsT2JqZWN0OjpkZWZpbmVHZXR0ZXIoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTT2JqZWN0KiBnZXR0ZXJGdW5jLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorYm9vbCBKU0dsb2Jh
bE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYg
ZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBKU0dsb2JhbE9iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KG9iamVjdCk7CiAgICAgUHJvcGVydHlT
bG90IHNsb3Q7Ci0gICAgaWYgKCF0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZUdldChwcm9wZXJ0eU5h
bWUsIHNsb3QpKQotICAgICAgICBKU1ZhcmlhYmxlT2JqZWN0OjpkZWZpbmVHZXR0ZXIodGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jLCBhdHRyaWJ1dGVzKTsKKyAgICAv
LyBzaWxlbnRseSBpZ25vcmUgYXR0ZW1wdHMgdG8gYWRkIGFjY2Vzc29ycyBhbGlhc2luZyB2YXJz
LgorICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgJiYgdGhpc09iamVj
dC0+c3ltYm9sVGFibGVHZXQocHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIH0KIAotdm9pZCBKU0ds
b2JhbE9iamVjdDo6ZGVmaW5lU2V0dGVyKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVyRnVuYywg
dW5zaWduZWQgYXR0cmlidXRlcykKLXsKLSAgICBKU0dsb2JhbE9iamVjdCogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KG9iamVjdCk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3Q7
Ci0gICAgaWYgKCF0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZUdldChwcm9wZXJ0eU5hbWUsIHNsb3Qp
KQotICAgICAgICBKU1ZhcmlhYmxlT2JqZWN0OjpkZWZpbmVTZXR0ZXIodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCBzZXR0ZXJGdW5jLCBhdHRyaWJ1dGVzKTsKLX0KIAogc3RhdGljIGlu
bGluZSBKU09iamVjdCogbGFzdEluUHJvdG90eXBlQ2hhaW4oSlNPYmplY3QqIG9iamVjdCkKIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAkocmV2aXNpb24gMTA2Mjg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjA2LDYgKzIwNiw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRlZmluZUdl
dHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNPYmplY3QqIGdldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkZWZpbmVTZXR0ZXIoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBzZXR0ZXJG
dW5jLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxk
VGhyb3cpOwogCiAgICAgICAgIC8vIFdlIHVzZSB0aGlzIGluIHRoZSBjb2RlIGdlbmVyYXRvciBh
cyB3ZSBwZXJmb3JtIHN5bWJvbCB0YWJsZQogICAgICAgICAvLyBsb29rdXBzIHByaW9yIHRvIGlu
aXRpYWxpemluZyB0aGUgcHJvcGVydGllcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTA2Mjg2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjEsMTA2ICsz
NjEsNiBAQCBjb25zdCBIYXNoRW50cnkqIEpTT2JqZWN0OjpmaW5kUHJvcGVydHlICiAgICAgcmV0
dXJuIDA7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OmRlZmluZUdldHRlcihKU09iamVjdCogdGhpc09i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
T2JqZWN0KiBnZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcykKLXsKLSAgICBpZiAo
cHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pIHsK
LSAgICAgICAgLy8gRGVmaW5pbmcgYSBnZXR0ZXIgZm9yIF9fcHJvdG9fXyBpcyBzaWxlbnRseSBp
Z25vcmVkLgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgSlNWYWx1ZSBvYmplY3QgPSB0
aGlzT2JqZWN0LT5nZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpOwot
ICAgIGlmIChvYmplY3QgJiYgb2JqZWN0LmlzR2V0dGVyU2V0dGVyKCkpIHsKLSAgICAgICAgQVNT
RVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkp
OwotICAgICAgICBhc0dldHRlclNldHRlcihvYmplY3QpLT5zZXRHZXR0ZXIoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBnZXR0ZXJGdW5jdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7Ci0gICAgUHV0UHJv
cGVydHlTbG90IHNsb3Q7Ci0gICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJT
ZXR0ZXI6OmNyZWF0ZShleGVjKTsKLSAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3RJbnRlcm5hbDxQ
dXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgZ2V0dGVy
U2V0dGVyLCBhdHRyaWJ1dGVzIHwgQWNjZXNzb3IsIHNsb3QsIDApOwotCi0gICAgLy8gcHV0RGly
ZWN0IHdpbGwgY2hhbmdlIG91ciBTdHJ1Y3R1cmUgaWYgd2UgYWRkIGEgbmV3IHByb3BlcnR5LiBG
b3IKLSAgICAvLyBnZXR0ZXJzIGFuZCBzZXR0ZXJzLCB0aG91Z2gsIHdlIGFsc28gbmVlZCB0byBj
aGFuZ2Ugb3VyIFN0cnVjdHVyZQotICAgIC8vIGlmIHdlIG92ZXJyaWRlIGFuIGV4aXN0aW5nIG5v
bi1nZXR0ZXIgb3Igbm9uLXNldHRlci4KLSAgICBpZiAoc2xvdC50eXBlKCkgIT0gUHV0UHJvcGVy
dHlTbG90OjpOZXdQcm9wZXJ0eSkKLSAgICAgICAgdGhpc09iamVjdC0+c2V0U3RydWN0dXJlKGV4
ZWMtPmdsb2JhbERhdGEoKSwgU3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKGds
b2JhbERhdGEsIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZXMgfCBBY2Nlc3NvcikpOwotCi0gICAgdGhpc09iamVjdC0+c3RydWN0dXJlKCktPnNldEhhc0dl
dHRlclNldHRlclByb3BlcnRpZXModHJ1ZSk7Ci0gICAgZ2V0dGVyU2V0dGVyLT5zZXRHZXR0ZXIo
Z2xvYmFsRGF0YSwgZ2V0dGVyRnVuY3Rpb24pOwotfQotCi12b2lkIEpTT2JqZWN0Ojppbml0aWFs
aXplR2V0dGVyU2V0dGVyUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKQotewotICAgIC8vIFNldCBhbiBpbml0YWwgcHJvcGVydHkgb24gYW4gb2JqZWN0OyB0
aGUgcHJvcGVydHkgbXVzdCBub3QgYWxyZWFkeSBleGlzdCAmIHRoZSBhdHRyaWJ1dGUgZmxhZ3Mg
bXVzdCBiZSBzZXQgY29ycmVjdGx5LgotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKSA9PSBXVEY6Om5vdEZvdW5kKTsKLSAgICBBU1NF
UlQoc3RhdGljX2Nhc3Q8Ym9vbD4oYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7Ci0KLSAgICBKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7Ci0gICAgUHV0UHJvcGVy
dHlTbG90IHNsb3Q7Ci0gICAgcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3Bl
cnR5PihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGdldHRlclNldHRlciwgYXR0cmlidXRlcywg
c2xvdCwgMCk7Ci0KLSAgICAvLyBwdXREaXJlY3Qgd2lsbCBjaGFuZ2Ugb3VyIFN0cnVjdHVyZSBp
ZiB3ZSBhZGQgYSBuZXcgcHJvcGVydHkuIEZvcgotICAgIC8vIGdldHRlcnMgYW5kIHNldHRlcnMs
IHRob3VnaCwgd2UgYWxzbyBuZWVkIHRvIGNoYW5nZSBvdXIgU3RydWN0dXJlCi0gICAgLy8gaWYg
d2Ugb3ZlcnJpZGUgYW4gZXhpc3Rpbmcgbm9uLWdldHRlciBvciBub24tc2V0dGVyLgotICAgIGlm
IChzbG90LnR5cGUoKSAhPSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KQotICAgICAgICBz
ZXRTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5n
ZVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgYXR0cmli
dXRlcykpOwotCi0gICAgc3RydWN0dXJlKCktPnNldEhhc0dldHRlclNldHRlclByb3BlcnRpZXMo
dHJ1ZSk7Ci19Ci0KLXZvaWQgSlNPYmplY3Q6OmRlZmluZVNldHRlcihKU09iamVjdCogdGhpc09i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
T2JqZWN0KiBzZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcykKLXsKLSAgICBpZiAo
cHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pIHsK
LSAgICAgICAgLy8gRGVmaW5pbmcgYSBzZXR0ZXIgZm9yIF9fcHJvdG9fXyBpcyBzaWxlbnRseSBp
Z25vcmVkLgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgSlNWYWx1ZSBvYmplY3QgPSB0
aGlzT2JqZWN0LT5nZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpOwot
ICAgIGlmIChvYmplY3QgJiYgb2JqZWN0LmlzR2V0dGVyU2V0dGVyKCkpIHsKLSAgICAgICAgQVNT
RVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkp
OwotICAgICAgICBhc0dldHRlclNldHRlcihvYmplY3QpLT5zZXRTZXR0ZXIoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBzZXR0ZXJGdW5jdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBQ
dXRQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IEdl
dHRlclNldHRlcjo6Y3JlYXRlKGV4ZWMpOwotICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdEludGVy
bmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0
eU5hbWUsIGdldHRlclNldHRlciwgYXR0cmlidXRlcyB8IEFjY2Vzc29yLCBzbG90LCAwKTsKLQot
ICAgIC8vIHB1dERpcmVjdCB3aWxsIGNoYW5nZSBvdXIgU3RydWN0dXJlIGlmIHdlIGFkZCBhIG5l
dyBwcm9wZXJ0eS4gRm9yCi0gICAgLy8gZ2V0dGVycyBhbmQgc2V0dGVycywgdGhvdWdoLCB3ZSBh
bHNvIG5lZWQgdG8gY2hhbmdlIG91ciBTdHJ1Y3R1cmUKLSAgICAvLyBpZiB3ZSBvdmVycmlkZSBh
biBleGlzdGluZyBub24tZ2V0dGVyIG9yIG5vbi1zZXR0ZXIuCi0gICAgaWYgKHNsb3QudHlwZSgp
ICE9IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpCi0gICAgICAgIHRoaXNPYmplY3QtPnNl
dFN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIFN0cnVjdHVyZTo6YXR0cmlidXRlQ2hhbmdl
VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLCBw
cm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMgfCBBY2Nlc3NvcikpOwotCi0gICAgdGhpc09iamVjdC0+
c3RydWN0dXJlKCktPnNldEhhc0dldHRlclNldHRlclByb3BlcnRpZXModHJ1ZSk7Ci0gICAgZ2V0
dGVyU2V0dGVyLT5zZXRTZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzZXR0ZXJGdW5jdGlvbik7
Ci19Ci0KLUpTVmFsdWUgSlNPYmplY3Q6Omxvb2t1cEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKLXsKLSAgICBQcm9wZXJ0eURlc2NyaXB0b3Ig
ZGVzY3JpcHRvcjsKLSAgICBpZiAoIWdldFByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAg
IGlmICghZGVzY3JpcHRvci5nZXR0ZXJQcmVzZW50KCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwotCi0gICAgcmV0dXJuIGRlc2NyaXB0b3IuZ2V0dGVyKCk7Ci19Ci0KLUpTVmFsdWUg
SlNPYmplY3Q6Omxvb2t1cFNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSkKLXsKLSAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKLSAg
ICBpZiAoIWdldFByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIGlmICghZGVzY3JpcHRv
ci5zZXR0ZXJQcmVzZW50KCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIAot
ICAgIHJldHVybiBkZXNjcmlwdG9yLnNldHRlcigpOwotfQotCiBib29sIEpTT2JqZWN0OjpoYXNJ
bnN0YW5jZShKU09iamVjdCosIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1
ZSBwcm90bykKIHsKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDEwNjI4NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5
MiwxMyArMTkyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcHV0RGlyZWN0T2Zm
c2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG9mZnNldCwgSlNWYWx1ZSB2YWx1
ZSkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLnNldChnbG9iYWxEYXRhLCB0aGlzLCB2YWx1
ZSk7IH0KICAgICAgICAgdm9pZCBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChzaXplX3Qgb2Zm
c2V0KSB7IHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0uc2V0VW5kZWZpbmVkKCk7IH0KIAotICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3QoUHJvcGVy
dHlTbG90JiwgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb24pOwotICAgICAgICB2
b2lkIGluaXRpYWxpemVHZXR0ZXJTZXR0ZXJQcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgR2V0dGVyU2V0dGVyKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0KLSAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVy
RnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKLSAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgZGVmaW5lU2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVyRnVuY3Rpb24sIHVu
c2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1
ZSBsb29rdXBHZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBsb29rdXBTZXR0ZXIoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKICAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYs
IGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAgIGJvb2wgaXNHbG9iYWxPYmplY3QoKSBjb25z
dDsKQEAgLTI5NSw2ICsyODgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBwdXRE
aXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHIsIFB1dFByb3BlcnR5U2xvdCYsIEpTQ2VsbCopOwog
CiAgICAgICAgIGJvb2wgaW5saW5lR2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgZmlsbEdldHRlclByb3BlcnR5U2xvdChQcm9wZXJ0eVNsb3QmLCBX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbik7CiAKICAgICAgICAgY29uc3QgSGFz
aEVudHJ5KiBmaW5kUHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKSBjb25zdDsKICAgICAgICAgU3RydWN0dXJlKiBjcmVhdGVJbmhlcml0
b3JJRChKU0dsb2JhbERhdGEmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTA2Mjg2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ2LDEwICsxNDYsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RQcm90bwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAorICAgIEpTVmFsdWUgZ2V0ID0gZXhlYy0+
YXJndW1lbnQoMSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgaWYgKGdldENhbGxEYXRh
KGV4ZWMtPmFyZ3VtZW50KDEpLCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGVOb25lKQorICAgIGlmIChn
ZXRDYWxsRGF0YShnZXQsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZU5vbmUpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgImludmFsaWQgZ2V0
dGVyIHVzYWdlIikpOwotICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlZmluZUdldHRl
cih0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDEpKSwg
MCk7CisKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKKyAgICBkZXNjcmlwdG9y
LnNldEdldHRlcihnZXQpOworICAgIGRlc2NyaXB0b3Iuc2V0RW51bWVyYWJsZSh0cnVlKTsKKyAg
ICBkZXNjcmlwdG9yLnNldENvbmZpZ3VyYWJsZSh0cnVlKTsKKyAgICB0aGlzT2JqZWN0LT5tZXRo
b2RUYWJsZSgpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVy
KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIGRl
c2NyaXB0b3IsIGZhbHNlKTsKKwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKQEAgLTE1OSwxMCArMTY2LDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0UHJvdG8KICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKKyAgICBKU1ZhbHVlIHNl
dCA9IGV4ZWMtPmFyZ3VtZW50KDEpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIGlmIChn
ZXRDYWxsRGF0YShleGVjLT5hcmd1bWVudCgxKSwgY2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkK
KyAgICBpZiAoZ2V0Q2FsbERhdGEoc2V0LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGVOb25lKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJp
bnZhbGlkIHNldHRlciB1c2FnZSIpKTsKLSAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5k
ZWZpbmVTZXR0ZXIodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1
bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpLCBhc09iamVjdChleGVjLT5hcmd1
bWVudCgxKSksIDApOworCisgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CisgICAg
ZGVzY3JpcHRvci5zZXRTZXR0ZXIoc2V0KTsKKyAgICBkZXNjcmlwdG9yLnNldEVudW1lcmFibGUo
dHJ1ZSk7CisgICAgZGVzY3JpcHRvci5zZXRDb25maWd1cmFibGUodHJ1ZSk7CisgICAgdGhpc09i
amVjdC0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywg
SWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYykpLCBkZXNjcmlwdG9yLCBmYWxzZSk7CisKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC0xNzIsNyArMTg2LDEyIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG8KICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QtPmxvb2t1cEdldHRlcihleGVjLCBJZGVu
dGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSkpKTsKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKKyAgICBpZiAodGhpc09i
amVjdC0+Z2V0UHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+
YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwgZGVzY3JpcHRvcikKKyAg
ICAgICAgJiYgZGVzY3JpcHRvci5nZXR0ZXJQcmVzZW50KCkpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoZGVzY3JpcHRvci5nZXR0ZXIoKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdFByb3RvRnVuY0xvb2t1cFNldHRlcihFeGVjU3RhdGUqIGV4ZWMpCkBAIC0xODEsNyAr
MjAwLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG8KICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3Qt
Pmxvb2t1cFNldHRlcihleGVjLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpKTsKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVz
Y3JpcHRvcjsKKyAgICBpZiAodGhpc09iamVjdC0+Z2V0UHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMs
IElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpKSwgZGVzY3JpcHRvcikKKyAgICAgICAgJiYgZGVzY3JpcHRvci5zZXR0ZXJQcmVzZW50
KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGVzY3JpcHRvci5zZXR0ZXIoKSk7
CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1Byb3BlcnR5SXNFbnVtZXJh
YmxlKEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjM2OCkKKysr
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBA
CisyMDEyLTAxLTMxICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW1vdmUgSlNPYmplY3QgZGVmaW5lR2V0dGVyL2RlZmluZVNldHRlciBsb29r
dXBHZXR0ZXIvbG9va3VwU2V0dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NzQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisK
KyAgICAgICAgVGhlc2UgY2FuIG5vdyBhbGwgYmUgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgZGVm
aW5lT3duUHJvcGVydHkgJiBnZXRQcm9wZXJ0eURlc2NyaXB0b3IuCisgICAgICAgIEFsc28gcmVt
b3ZlIGluaXRpYWxpemVHZXR0ZXJTZXR0ZXJQcm9wZXJ0eSwgc2luY2UgdGhpcyBpcyBlcXVpdmFs
ZW50IHRvIHB1dERpcmVjdEFjY2Vzc29yLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpK
U0RPTVdpbmRvdzo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dTaGVsbC5oOgorICAgICAgICAoSlNET01XaW5kb3dTaGVsbCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0xvY2F0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpK
U0xvY2F0aW9uUHJvdG90eXBlOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6
CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorICAgICAgICAqIHBhZ2UvTG9jYXRpb24u
aWRsOgorCiAyMDEyLTAxLTMxICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9z
c2Eub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgaW5jbHVkZSBjbGVhbnVwLgpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkocmV2
aXNpb24gMTA2Mjg2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODgsMzUgKzM4OCwxNyBAQCB2b2lkIEpTRE9N
V2luZG93OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTCiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlO
YW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotdm9pZCBK
U0RPTVdpbmRvdzo6ZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuY3Rp
b24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCi17Ci0gICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNET01XaW5kb3cqPihvYmplY3QpOwotICAgIC8vIE9ubHkgYWxsb3cgZGVmaW5p
bmcgZ2V0dGVycyBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghdGhpc09i
amVjdC0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8g
RG9uJ3QgYWxsb3cgc2hhZG93aW5nIGxvY2F0aW9uIHVzaW5nIGRlZmluZUdldHRlci4KLSAgICBp
ZiAocHJvcGVydHlOYW1lID09ICJsb2NhdGlvbiIpCi0gICAgICAgIHJldHVybjsKLQotICAgIEJh
c2U6OmRlZmluZUdldHRlcih0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1
bmN0aW9uLCBhdHRyaWJ1dGVzKTsKLX0KLQotdm9pZCBKU0RPTVdpbmRvdzo6ZGVmaW5lU2V0dGVy
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
Ci17Ci0gICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihv
YmplY3QpOwotICAgIC8vIE9ubHkgYWxsb3cgZGVmaW5pbmcgc2V0dGVycyBieSBmcmFtZXMgaW4g
dGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghdGhpc09iamVjdC0+YWxsb3dzQWNjZXNzRnJvbShl
eGVjKSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2U6OmRlZmluZVNldHRlcih0aGlzT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNldHRlckZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKLX0KLQog
Ym9vbCBKU0RPTVdpbmRvdzo6ZGVmaW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCogb2JqZWN0
LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93
KQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4o
b2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IGRlZmluaW5nIHByb3BlcnRpZXMgaW4gdGhpcyB3
YXkgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbiwgYXMgaXQgYWxsb3dzIHNldHRlcnMgdG8g
YmUgaW50cm9kdWNlZC4KICAgICBpZiAoIXRoaXNPYmplY3QtPmFsbG93c0FjY2Vzc0Zyb20oZXhl
YykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIERvbid0IGFsbG93IHNoYWRvd2lu
ZyBsb2NhdGlvbiB1c2luZyBhY2Nlc3NvciBwcm9wZXJ0aWVzLgorICAgIGlmIChkZXNjcmlwdG9y
LmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgJiYgcHJvcGVydHlOYW1lID09ICJsb2NhdGlvbiIpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0
eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93
KTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVs
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dTaGVsbC5jcHAJKHJldmlzaW9uIDEwNjI4NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksMTggKzEzOSw2
IEBAIHZvaWQgSlNET01XaW5kb3dTaGVsbDo6Z2V0T3duUHJvcGVydHlOYW0KICAgICB0aGlzT2Jq
ZWN0LT53aW5kb3coKS0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2Jq
ZWN0LT53aW5kb3coKSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLXZvaWQgSlNE
T01XaW5kb3dTaGVsbDo6ZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVu
Y3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCi17Ci0gICAgSlNET01XaW5kb3dTaGVsbCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4ob2JqZWN0KTsKLSAgICB0aGlzT2Jq
ZWN0LT53aW5kb3coKS0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lR2V0dGVyKHRoaXNPYmplY3QtPndp
bmRvdygpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsK
LX0KLQotdm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpkZWZpbmVTZXR0ZXIoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2Jq
ZWN0KiBzZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcykKLXsKLSAgICBKU0RPTVdp
bmRvd1NoZWxsKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93U2hlbGwqPihvYmplY3Qp
OwotICAgIHRoaXNPYmplY3QtPndpbmRvdygpLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVTZXR0ZXIo
dGhpc09iamVjdC0+d2luZG93KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2V0dGVyRnVuY3Rpb24s
IGF0dHJpYnV0ZXMpOwotfQotCiAKIC8vIC0tLS0KIC8vIEpTRE9NV2luZG93IG1ldGhvZHMKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgJKHJl
dmlzaW9uIDEwNjI4NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
U2hlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtODYsOCArODYsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlND
OjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAg
ICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2Rl
KTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlv
bk1vZGUpOwotICAgICAgICBzdGF0aWMgdm9pZCBkZWZpbmVHZXR0ZXIoSlNDOjpKU09iamVjdCos
IEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
Qzo6SlNPYmplY3QqIGdldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICAg
ICAgc3RhdGljIHZvaWQgZGVmaW5lU2V0dGVyKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OkpTT2JqZWN0KiBz
ZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgICAgIHN0YXRpYyBib29s
IGRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYs
IGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAgIFJlZlB0cjxET01XcmFwcGVyV29ybGQ+IG1f
d29ybGQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9t
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9u
Q3VzdG9tLmNwcAkocmV2aXNpb24gMTA2Mjg2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNMb2NhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MCwxMSArMTcwLDEx
IEBAIHZvaWQgSlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU08KICAgICBCYXNlOjpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUp
OwogfQogCi12b2lkIEpTTG9jYXRpb246OmRlZmluZUdldHRlcihKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3Qq
IGdldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorYm9vbCBKU0xvY2F0aW9uOjpk
ZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
LCBib29sIHRocm93RXhjZXB0aW9uKQogewotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+
cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkudmFsdWVPZikKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2U6OmRlZmluZUdldHRl
cihvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rpb24sIGF0dHJpYnV0ZXMp
OworICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgJiYgKHByb3BlcnR5
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcgfHwgcHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pOwogfQogCiB2b2lkIEpTTG9jYXRpb246
OnNldEhyZWYoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQpAQCAtMjgxLDExICsyODEs
MTEgQEAgYm9vbCBKU0xvY2F0aW9uUHJvdG90eXBlOjpwdXREZWxlZ2F0ZShFeAogICAgIHJldHVy
biAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZyB8fCBwcm9w
ZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnZhbHVlT2YpOwogfQogCi12b2lkIEpT
TG9jYXRpb25Qcm90b3R5cGU6OmRlZmluZUdldHRlcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRl
ckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorYm9vbCBKU0xvY2F0aW9uUHJvdG90eXBl
OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yLCBib29sIHRocm93RXhjZXB0aW9uKQogewotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhl
Yy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkudmFsdWVPZikKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2U6OmRlZmluZUdl
dHRlcihvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rpb24sIGF0dHJpYnV0
ZXMpOworICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgJiYgKHByb3Bl
cnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcgfHwgcHJvcGVydHlOYW1l
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMTA2Mjg2KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTgy
OCwyMCArODI4LDE0IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICAkc3RydWN0dXJlRmxh
Z3N7IkpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyJ9ID0gMTsKICAgICB9CiAKLSAgICAj
IEN1c3RvbSBkZWZpbmVQcm9wZXJ0eSBmdW5jdGlvbiBleGlzdHMgb24gRE9NV2luZG93Ci0gICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShK
U0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTtc
biIpIGlmICRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciOwotCiAgICAgIyBDdXN0b20gZ2V0
T3duUHJvcGVydHlOYW1lcyBmdW5jdGlvbgogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDdXN0b21HZXRQcm9wZXJ0eU5hbWVzIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSGFzSW5kZXhHZXR0ZXIifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJIYXNDdXN0b21JbmRleEdldHRlciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Ikhhc051bWVyaWNJbmRleEdldHRlciJ9KSB7CiAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpF
bnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7XG4i
KTsKICAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFt
ZXMifSA9IDE7ICAgICAgIAogICAgIH0KIAotICAgICMgQ3VzdG9tIGRlZmluZUdldHRlciBmdW5j
dGlvbgotICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZGVmaW5lR2V0
dGVyKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU0M6OkpTT2JqZWN0KiBnZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQg
YXR0cmlidXRlcyk7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21EZWZpbmVHZXR0ZXIifTsKLQotICAgICMgQ3VzdG9tIGRlZmluZVNldHRlciBmdW5jdGlvbgot
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZGVmaW5lU2V0dGVyKEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU0M6OkpTT2JqZWN0KiBzZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmli
dXRlcyk7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21EZWZp
bmVTZXR0ZXIifTsKKyAgICAjIEN1c3RvbSBkZWZpbmVPd25Qcm9wZXJ0eSBmdW5jdGlvbgorICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHko
SlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7
XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21EZWZpbmVPd25Q
cm9wZXJ0eSJ9OwogCiAgICAgIyBPdmVycmlkZSB0b0Jvb2xlYW4gdG8gcmV0dXJuIGZhbHNlIGZv
ciBvYmplY3RzIHRoYXQgd2FudCB0byAnTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCcuCiAgICAgaWYg
KCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik1hc3F1ZXJhZGVzQXNVbmRlZmluZWQi
fSkgewpAQCAtMTA2Myw4ICsxMDU3LDggQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgYm9vbCBwdXREZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSos
IGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNs
b3QmKTtcbiIpOwogICAgIH0KIAotICAgICMgQ3VzdG9tIGRlZmluZUdldHRlciBmdW5jdGlvbgot
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZGVmaW5lR2V0dGVyKEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU0M6OkpTT2JqZWN0KiBnZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmli
dXRlcyk7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Qcm90
b3R5cGVEZWZpbmVHZXR0ZXIifTsKKyAgICAjIEN1c3RvbSBkZWZpbmVPd25Qcm9wZXJ0eSBmdW5j
dGlvbgorICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVmaW5lT3du
UHJvcGVydHkoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91
bGRUaHJvdyk7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Q
cm90b3R5cGVEZWZpbmVPd25Qcm9wZXJ0eSJ9OwogCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IlxucHJpdmF0ZTpcbiIpOwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJHtjbGFzc05h
bWV9UHJvdG90eXBlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgOiBKU0M6OkpTTm9uRmluYWxPYmpl
Y3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKSB7IH1cbiIpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmlkbAkocmV2aXNpb24gMTA2Mjg2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw3IEBAIG1vZHVsZSB3aW5kb3cg
ewogCiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ2hlY2tEb21haW5TZWN1cml0eSwKLSAgICAg
ICAgQ3VzdG9tRGVmaW5lR2V0dGVyLAotICAgICAgICBDdXN0b21EZWZpbmVTZXR0ZXIsCisgICAg
ICAgIEN1c3RvbURlZmluZU93blByb3BlcnR5LAogICAgICAgICBDdXN0b21EZWxldGVQcm9wZXJ0
eSwKICAgICAgICAgQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90LAogICAgICAgICBDdXN0b21HZXRQ
cm9wZXJ0eU5hbWVzLApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwJKHJldmlzaW9uIDEw
NjI4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw5ICszNyw5IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBHZW5lcmF0ZUlzUmVh
Y2hhYmxlPUltcGxGcmFtZSwKICAgICAgICAgQ3VzdG9tRGVsZXRlUHJvcGVydHksCiAgICAgICAg
IEN1c3RvbUdldFByb3BlcnR5TmFtZXMsCi0gICAgICAgIEN1c3RvbURlZmluZUdldHRlciwKKyAg
ICAgICAgQ3VzdG9tRGVmaW5lT3duUHJvcGVydHksCiAgICAgICAgIERlbGVnYXRpbmdQcm90b3R5
cGVQdXRGdW5jdGlvbiwKLSAgICAgICAgQ3VzdG9tUHJvdG90eXBlRGVmaW5lR2V0dGVyLAorICAg
ICAgICBDdXN0b21Qcm90b3R5cGVEZWZpbmVPd25Qcm9wZXJ0eSwKICAgICAgICAgT21pdENvbnN0
cnVjdG9yCiAgICAgXSBMb2NhdGlvbiB7CiAjaWYgIWRlZmluZWQoTEFOR1VBR0VfQ1BQKSB8fCAh
TEFOR1VBR0VfQ1BQCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124864</attachid>
            <date>2012-01-31 18:13:55 -0800</date>
            <delta_ts>2012-01-31 20:28:45 -0800</delta_ts>
            <desc>More win build fix</desc>
            <filename>77451.3.patch</filename>
            <type>text/plain</type>
            <size>41175</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MzY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDEyLTAxLTMxICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW1vdmUgSlNPYmplY3QgZGVmaW5lR2V0dGVyL2RlZmluZVNldHRlciBsb29r
dXBHZXR0ZXIvbG9va3VwU2V0dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NzQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisK
KyAgICAgICAgVGhlc2UgY2FuIG5vdyBhbGwgYmUgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgZGVm
aW5lT3duUHJvcGVydHkgJiBnZXRQcm9wZXJ0eURlc2NyaXB0b3IuCisgICAgICAgIEFsc28gcmVt
b3ZlIGluaXRpYWxpemVHZXR0ZXJTZXR0ZXJQcm9wZXJ0eSwgc2luY2UgdGhpcyBpcyBlcXVpdmFs
ZW50IHRvIHB1dERpcmVjdEFjY2Vzc29yLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhw
OgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChK
U0M6OkRlYnVnZ2VyQWN0aXZhdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIGRl
YnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oOgorICAgICAgICAoRGVidWdnZXJBY3RpdmF0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgorICAgICAgICAoTWV0aG9kVGFibGUp
OgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6
CisgICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGlt
ZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQ2VsbCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToK
KyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBy
dW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAgICogcnVudGlt
ZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZp
bmVHZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIpOgor
ICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIpOgorICAgICAgICAoSlND
OjpvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIpOgorCiAyMDEyLTAxLTMxICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgVmVjdG9yPFQ+OjpvcGVyYXRv
cj09IHNob3VsZG4ndCByZXF1aXJlIFQgdG8gaGF2ZSBvcGVyYXRvciE9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDEwNjI4NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAg
LTE2NywxMiArMTY3LDExIEBAIF9fWk4zSlNDMTNTYW1wbGluZ0ZsYWdzN3NfZmxhZ3NFCiBfX1pO
M0pTQzEzU3RhdGVtZW50Tm9kZTZzZXRMb2NFaWkKIF9fWk4zSlNDMTRFeGVjdXRhYmxlQmFzZTZz
X2luZm9FCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxMGdsb2JhbEV4ZWNFdgotX19aTjNKU0Mx
NEpTR2xvYmFsT2JqZWN0MTJkZWZpbmVHZXR0ZXJFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0
ZUVSS05TXzEwSWRlbnRpZmllckVTMl9qCi1fX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxMmRlZmlu
ZVNldHRlckVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVMy
X2oKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDEzY2xlYXJSYXJlRGF0YUVQTlNfNkpTQ2VsbEUK
IF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDEzdmlzaXRDaGlsZHJlbkVQTlNfNkpTQ2VsbEVSTlNf
MTFTbG90VmlzaXRvckUKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDE2YWRkU3RhdGljR2xvYmFs
c0VQTlMwXzE4R2xvYmFsUHJvcGVydHlJbmZvRWkKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDE2
cHV0RGlyZWN0VmlydHVhbEVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVu
dGlmaWVyRU5TXzdKU1ZhbHVlRWoKK19fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDE3ZGVmaW5lT3du
UHJvcGVydHlFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVS
TlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFYgogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MThnZXRP
d25Qcm9wZXJ0eVNsb3RFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZp
ZXJFUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MjRnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3JFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRl
bnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmpl
Y3QyNXNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGVFCkBAIC0zMTUsMTAgKzMxNCw2IEBAIF9fWk4z
SlNDOERlYnVnZ2VyRDJFdgogX19aTjNKU0M4SlNPYmplY3QxMHB1dEJ5SW5kZXhFUE5TXzZKU0Nl
bGxFUE5TXzlFeGVjU3RhdGVFak5TXzdKU1ZhbHVlRQogX19aTjNKU0M4SlNPYmplY3QxMWhhc0lu
c3RhbmNlRVBTMF9QTlNfOUV4ZWNTdGF0ZUVOU183SlNWYWx1ZUVTNF8KIF9fWk4zSlNDOEpTT2Jq
ZWN0MTJkZWZhdWx0VmFsdWVFUEtTMF9QTlNfOUV4ZWNTdGF0ZUVOU18yMlByZWZlcnJlZFByaW1p
dGl2ZVR5cGVFCi1fX1pOM0pTQzhKU09iamVjdDEyZGVmaW5lR2V0dGVyRVBTMF9QTlNfOUV4ZWNT
dGF0ZUVSS05TXzEwSWRlbnRpZmllckVTMV9qCi1fX1pOM0pTQzhKU09iamVjdDEyZGVmaW5lU2V0
dGVyRVBTMF9QTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVTMV9qCi1fX1pOM0pTQzhK
U09iamVjdDEybG9va3VwR2V0dGVyRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQot
X19aTjNKU0M4SlNPYmplY3QxMmxvb2t1cFNldHRlckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRl
bnRpZmllckUKIF9fWk4zSlNDOEpTT2JqZWN0MTJ0b1RoaXNPYmplY3RFUE5TXzZKU0NlbGxFUE5T
XzlFeGVjU3RhdGVFCiBfX1pOM0pTQzhKU09iamVjdDEzdmlzaXRDaGlsZHJlbkVQTlNfNkpTQ2Vs
bEVSTlNfMTFTbG90VmlzaXRvckUKIF9fWk4zSlNDOEpTT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQ
TlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCShyZXZp
c2lvbiAxMDYyODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkod29ya2luZyBjb3B5KQpAQCAt
MTM1LDExICsxMzUsNyBAQCBFWFBPUlRTCiAgICAgP2RlY3JlbWVudEBSZWZDb3VudGVkTGVha0Nv
dW50ZXJAV1RGQEBRQUVYWFoKICAgICA/ZGVmYXVsdEF0dHJpYnV0ZXNAUHJvcGVydHlEZXNjcmlw
dG9yQEpTQ0BAMElBCiAgICAgP2RlZmF1bHRWYWx1ZUBKU09iamVjdEBKU0NAQFNBP0FWSlNWYWx1
ZUAyQFBCVjEyQFBBVkV4ZWNTdGF0ZUAyQFc0UHJlZmVycmVkUHJpbWl0aXZlVHlwZUAyQEBaCi0g
ICAgP2RlZmluZUdldHRlckBKU0dsb2JhbE9iamVjdEBKU0NAQFNBWFBBVkpTT2JqZWN0QDJAUEFW
RXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQDBJQFoKLSAgICA/ZGVmaW5lR2V0dGVyQEpTT2Jq
ZWN0QEpTQ0BAU0FYUEFWMTJAUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQDBJQFoKICAg
ICA/ZGVmaW5lT3duUHJvcGVydHlASlNPYmplY3RASlNDQEBTQV9OUEFWMTJAUEFWRXhlY1N0YXRl
QDJAQUJWSWRlbnRpZmllckAyQEFBVlByb3BlcnR5RGVzY3JpcHRvckAyQF9OQFoKLSAgICA/ZGVm
aW5lU2V0dGVyQEpTR2xvYmFsT2JqZWN0QEpTQ0BAU0FYUEFWSlNPYmplY3RAMkBQQVZFeGVjU3Rh
dGVAMkBBQlZJZGVudGlmaWVyQDJAMElAWgotICAgID9kZWZpbmVTZXR0ZXJASlNPYmplY3RASlND
QEBTQVhQQVYxMkBQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAMElAWgogICAgID9kZWxl
dGVPd25lZFB0ckBXVEZAQFlBWFBBVUhCSVRNQVBfX0BAQFoKICAgICA/ZGVsZXRlT3duZWRQdHJA
V1RGQEBZQVhQQVVIQlJVU0hfX0BAQFoKICAgICA/ZGVsZXRlT3duZWRQdHJAV1RGQEBZQVhQQVVI
RENfX0BAQFoKQEAgLTE3OCw3ICsxNzQsNiBAQCBFWFBPUlRTCiAgICAgP2Zhc3RSZWFsbG9jQFdU
RkBAWUFQQVhQQVhJQFoKICAgICA/ZmFzdFN0ckR1cEBXVEZAQFlBUEFEUEJEQFoKICAgICA/ZmFz
dFplcm9lZE1hbGxvY0BXVEZAQFlBUEFYSUBaCi0gICAgP2ZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3RA
SlNPYmplY3RASlNDQEBRQUVYQUFWUHJvcGVydHlTbG90QDJAUEFWPyRXcml0ZUJhcnJpZXJCYXNl
QFc0VW5rbm93bkBKU0NAQEAyQEBaCiAgICAgP2ZpbmFsaXplQFdlYWtIYW5kbGVPd25lckBKU0NA
QFVBRVhWPyRIYW5kbGVAVzRVbmtub3duQEpTQ0BAQDJAUEFYQFoKICAgICA/ZmluaXNoQ3JlYXRp
b25ARGF0ZUluc3RhbmNlQEpTQ0BASUFFWEFBVkpTR2xvYmFsRGF0YUAyQE5AWgogICAgID9maW5p
c2hDcmVhdGlvbkBJbnRlcm5hbEZ1bmN0aW9uQEpTQ0BASUFFWEFBVkpTR2xvYmFsRGF0YUAyQEFC
VklkZW50aWZpZXJAMkBAWgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyQWN0aXZhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAJKHJldmlzaW9uIDEwNjI4NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDEsMTYgKzEwMSwxMCBAQCBib29sIERlYnVnZ2VyQWN0aXZhdGlvbjo6
Z2V0T3duUHJvcGVydHlECiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi0+bWV0
aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXNPYmplY3QtPm1fYWN0aXZh
dGlvbi5nZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KIAotdm9pZCBE
ZWJ1Z2dlckFjdGl2YXRpb246OmRlZmluZUdldHRlcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRl
ckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorYm9vbCBEZWJ1Z2dlckFjdGl2YXRpb246
OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgRGVidWdnZXJBY3RpdmF0aW9uKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PERlYnVnZ2VyQWN0aXZhdGlvbio+KG9iamVjdCk7Ci0gICAgdGhpc09iamVj
dC0+bV9hY3RpdmF0aW9uLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVHZXR0ZXIodGhpc09iamVjdC0+
bV9hY3RpdmF0aW9uLmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0aW9uLCBh
dHRyaWJ1dGVzKTsKLX0KLQotdm9pZCBEZWJ1Z2dlckFjdGl2YXRpb246OmRlZmluZVNldHRlcihK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQot
ewotICAgIERlYnVnZ2VyQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxEZWJ1Z2dlckFj
dGl2YXRpb24qPihvYmplY3QpOwotICAgIHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi0+bWV0aG9k
VGFibGUoKS0+ZGVmaW5lU2V0dGVyKHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi5nZXQoKSwgZXhl
YywgcHJvcGVydHlOYW1lLCBzZXR0ZXJGdW5jdGlvbiwgYXR0cmlidXRlcyk7CisgICAgcmV0dXJu
IHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVy
dHkodGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IsIHNob3VsZFRocm93KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlv
bi5oCShyZXZpc2lvbiAxMDYyODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXJBY3RpdmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0
YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKLSAgICAgICAgc3RhdGljIHZvaWQgZGVmaW5l
R2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU09iamVjdCogZ2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAg
ICAgICBzdGF0aWMgdm9pZCBkZWZpbmVTZXR0ZXIoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBzZXR0ZXJGdW5jdGlvbiwgdW5z
aWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIAogICAgICAgICBKU19FWFBP
UlREQVRBIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAkocmV2aXNpb24gMTA2Mjg2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAg
LTY2LDEyICs2Niw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIEpTT2JqZWN0
KiAoKlRvVGhpc09iamVjdEZ1bmN0aW9uUHRyKShKU0NlbGwqLCBFeGVjU3RhdGUqKTsKICAgICAg
ICAgVG9UaGlzT2JqZWN0RnVuY3Rpb25QdHIgdG9UaGlzT2JqZWN0OwogCi0gICAgICAgIHR5cGVk
ZWYgdm9pZCAoKkRlZmluZUdldHRlckZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBKU09iamVjdCosIHVuc2lnbmVkKTsKLSAgICAgICAgRGVmaW5l
R2V0dGVyRnVuY3Rpb25QdHIgZGVmaW5lR2V0dGVyOwotCi0gICAgICAgIHR5cGVkZWYgdm9pZCAo
KkRlZmluZVNldHRlckZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBKU09iamVjdCosIHVuc2lnbmVkKTsKLSAgICAgICAgRGVmaW5lU2V0dGVyRnVu
Y3Rpb25QdHIgZGVmaW5lU2V0dGVyOwotCiAgICAgICAgIHR5cGVkZWYgSlNWYWx1ZSAoKkRlZmF1
bHRWYWx1ZUZ1bmN0aW9uUHRyKShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByZWZlcnJl
ZFByaW1pdGl2ZVR5cGUpOwogICAgICAgICBEZWZhdWx0VmFsdWVGdW5jdGlvblB0ciBkZWZhdWx0
VmFsdWU7CiAKQEAgLTEyOCw4ICsxMjIsNiBAQCBzdHJ1Y3QgTWVtYmVyQ2hlY2sjI21lbWJlciB7
IFwKICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0T3duUHJvcGVydHlTbG90LCBcCiAgICAgICAgICZD
bGFzc05hbWU6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgsIFwKICAgICAgICAgJkNsYXNzTmFt
ZTo6dG9UaGlzT2JqZWN0LCBcCi0gICAgICAgICZDbGFzc05hbWU6OmRlZmluZUdldHRlciwgXAot
ICAgICAgICAmQ2xhc3NOYW1lOjpkZWZpbmVTZXR0ZXIsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6
ZGVmYXVsdFZhbHVlLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmdldE93blByb3BlcnR5TmFtZXMs
IFwKICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0UHJvcGVydHlOYW1lcywgXApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCShyZXZp
c2lvbiAxMDYyODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVu
Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAKKyNpbmNsdWRlICJHZXR0ZXJT
ZXR0ZXIuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTExMSw4ICsxMTIsOCBAQCB2b2lkIEpTQm91bmRGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24o
RXhlCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYywgZXhlY3V0YWJsZSwgbGVuZ3RoLCBu
YW1lKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogCi0gICAgaW5pdGlhbGl6ZUdl
dHRlclNldHRlclByb3BlcnR5KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMs
IGdsb2JhbE9iamVjdCgpLT50aHJvd1R5cGVFcnJvckdldHRlclNldHRlcihleGVjKSwgRG9udERl
bGV0ZSB8IERvbnRFbnVtIHwgQWNjZXNzb3IpOwotICAgIGluaXRpYWxpemVHZXR0ZXJTZXR0ZXJQ
cm9wZXJ0eShleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVyLCBnbG9iYWxPYmplY3Qo
KS0+dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoZXhlYyksIERvbnREZWxldGUgfCBEb250RW51
bSB8IEFjY2Vzc29yKTsKKyAgICBwdXREaXJlY3RBY2Nlc3NvcihleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMsIGdsb2JhbE9iamVjdCgpLT50aHJvd1R5
cGVFcnJvckdldHRlclNldHRlcihleGVjKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgQWNjZXNz
b3IpOworICAgIHB1dERpcmVjdEFjY2Vzc29yKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmNhbGxlciwgZ2xvYmFsT2JqZWN0KCktPnRocm93VHlwZUVycm9yR2V0dGVy
U2V0dGVyKGV4ZWMpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBBY2Nlc3Nvcik7CiB9CiAKIHZv
aWQgSlNCb3VuZEZ1bmN0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5j
cHAJKHJldmlzaW9uIDEwNjI4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCwxNiArMTU4LDYgQEAgdm9pZCBzbG93VmFs
aWRhdGVDZWxsKEpTQ2VsbCogY2VsbCkKICAgICBBU1NFUlRfR0NfT0JKRUNUX0xPT0tTX1ZBTElE
KGNlbGwpOwogfQogCi12b2lkIEpTQ2VsbDo6ZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTT2JqZWN0KiwgdW5zaWduZWQpCi17Ci0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgSlNDZWxsOjpkZWZpbmVTZXR0ZXIoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNPYmplY3QqLCB1bnNpZ25lZCkK
LXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQogSlNWYWx1ZSBKU0NlbGw6OmRlZmF1
bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5
cGUpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTA2Mjg2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw4ICsxNTIsNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOwogCiAgICAgICAgIC8vIER1bW15IGltcGxlbWVudGF0aW9ucyBvZiBvdmVycmlk
ZS1hYmxlIHN0YXRpYyBmdW5jdGlvbnMgZm9yIGNsYXNzZXMgdG8gcHV0IGluIHRoZWlyIE1ldGhv
ZFRhYmxlCi0gICAgICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGRlZmlu
ZUdldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU09iamVj
dCosIHVuc2lnbmVkKTsKLSAgICAgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZv
aWQgZGVmaW5lU2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0
ZXMgPSAwKTsKICAgICAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAgICAgICAgIHN0YXRp
YyBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAg
ICAgICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGdldFByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9u
TW9kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmNwcAkocmV2aXNpb24gMTA2Mjg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAi
RnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRl
ICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU05v
dEFuT2JqZWN0LmgiCkBAIC0yMTUsNyArMjE2LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZQogICAgICAgICBpZiAodGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCkt
PmlzU3RyaWN0TW9kZSgpKSB7CiAgICAgICAgICAgICBib29sIHJlc3VsdCA9IEJhc2U6OmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
ICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5pbml0
aWFsaXplR2V0dGVyU2V0dGVyUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0
LT5nbG9iYWxPYmplY3QoKS0+dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoZXhlYyksIERvbnRE
ZWxldGUgfCBEb250RW51bSB8IEFjY2Vzc29yKTsKKyAgICAgICAgICAgICAgICB0aGlzT2JqZWN0
LT5wdXREaXJlY3RBY2Nlc3NvcihleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdGhp
c09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPnRocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKGV4ZWMp
LCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBBY2Nlc3Nvcik7CiAgICAgICAgICAgICAgICAgcmVz
dWx0ID0gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCk7CiAgICAgICAgICAg
ICB9CkBAIC0yMzQsNyArMjM1LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZQogICAgICAgICBpZiAodGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0
TW9kZSgpKSB7CiAgICAgICAgICAgICBib29sIHJlc3VsdCA9IEJhc2U6OmdldE93blByb3BlcnR5
U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICAgICAg
aWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5pbml0aWFsaXplR2V0
dGVyU2V0dGVyUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0LT5nbG9iYWxP
YmplY3QoKS0+dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoZXhlYyksIERvbnREZWxldGUgfCBE
b250RW51bSB8IEFjY2Vzc29yKTsKKyAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJl
Y3RBY2Nlc3NvcihleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdGhpc09iamVjdC0+
Z2xvYmFsT2JqZWN0KCktPnRocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKGV4ZWMpLCBEb250RGVs
ZXRlIHwgRG9udEVudW0gfCBBY2Nlc3Nvcik7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gQmFz
ZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCk7CiAgICAgICAgICAgICB9CkBAIC0y
NjMsNyArMjY0LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0bwog
ICAgICAgICBpZiAodGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKSB7
CiAgICAgICAgICAgICBib29sIHJlc3VsdCA9IEJhc2U6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cih0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogICAgICAgICAg
ICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5pbml0aWFsaXpl
R2V0dGVyU2V0dGVyUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0LT5nbG9i
YWxPYmplY3QoKS0+dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoZXhlYyksIERvbnREZWxldGUg
fCBEb250RW51bSB8IEFjY2Vzc29yKTsKKyAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXRE
aXJlY3RBY2Nlc3NvcihleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdGhpc09iamVj
dC0+Z2xvYmFsT2JqZWN0KCktPnRocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKGV4ZWMpLCBEb250
RGVsZXRlIHwgRG9udEVudW0gfCBBY2Nlc3Nvcik7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
QmFzZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgZGVzY3JpcHRvcik7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCk7CiAgICAg
ICAgICAgICB9CkBAIC0yODIsNyArMjgzLDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0bwogICAgICAgICBpZiAodGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCktPmlz
U3RyaWN0TW9kZSgpKSB7CiAgICAgICAgICAgICBib29sIHJlc3VsdCA9IEJhc2U6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICB0aGlzT2Jq
ZWN0LT5pbml0aWFsaXplR2V0dGVyU2V0dGVyUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lLCB0
aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoZXhl
YyksIERvbnREZWxldGUgfCBEb250RW51bSB8IEFjY2Vzc29yKTsKKyAgICAgICAgICAgICAgICB0
aGlzT2JqZWN0LT5wdXREaXJlY3RBY2Nlc3NvcihleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5
TmFtZSwgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPnRocm93VHlwZUVycm9yR2V0dGVyU2V0
dGVyKGV4ZWMpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBBY2Nlc3Nvcik7CiAgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gQmFzZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiAgICAgICAgICAgICAgICAgQVNTRVJU
KHJlc3VsdCk7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxMDYyODYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE3MSwyMSArMTcxLDE2IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnB1dERpcmVjdFZp
cnR1YWwoSlMKICAgICB9CiB9CiAKLXZvaWQgSlNHbG9iYWxPYmplY3Q6OmRlZmluZUdldHRlcihK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29s
IEpTR2xvYmFsT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQogewogICAgIEpTR2xvYmFsT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICBpZiAoIXRoaXNPYmplY3QtPnN5bWJvbFRhYmxlR2V0KHBy
b3BlcnR5TmFtZSwgc2xvdCkpCi0gICAgICAgIEpTVmFyaWFibGVPYmplY3Q6OmRlZmluZUdldHRl
cih0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmMsIGF0dHJpYnV0ZXMp
OworICAgIC8vIHNpbGVudGx5IGlnbm9yZSBhdHRlbXB0cyB0byBhZGQgYWNjZXNzb3JzIGFsaWFz
aW5nIHZhcnMuCisgICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiB0
aGlzT2JqZWN0LT5zeW1ib2xUYWJsZUdldChwcm9wZXJ0eU5hbWUsIHNsb3QpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwogfQogCi12
b2lkIEpTR2xvYmFsT2JqZWN0OjpkZWZpbmVTZXR0ZXIoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBzZXR0
ZXJGdW5jLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQotewotICAgIEpTR2xvYmFsT2JqZWN0KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4ob2JqZWN0KTsKLSAgICBQcm9wZXJ0eVNs
b3Qgc2xvdDsKLSAgICBpZiAoIXRoaXNPYmplY3QtPnN5bWJvbFRhYmxlR2V0KHByb3BlcnR5TmFt
ZSwgc2xvdCkpCi0gICAgICAgIEpTVmFyaWFibGVPYmplY3Q6OmRlZmluZVNldHRlcih0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNldHRlckZ1bmMsIGF0dHJpYnV0ZXMpOwotfQogCiBz
dGF0aWMgaW5saW5lIEpTT2JqZWN0KiBsYXN0SW5Qcm90b3R5cGVDaGFpbihKU09iamVjdCogb2Jq
ZWN0KQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCShyZXZpc2lvbiAxMDYyODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsNiArMjA2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQg
ZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRlZmluZVNldHRlcihKU09iamVj
dCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3Qq
IHNldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9v
bCBzaG91bGRUaHJvdyk7CiAKICAgICAgICAgLy8gV2UgdXNlIHRoaXMgaW4gdGhlIGNvZGUgZ2Vu
ZXJhdG9yIGFzIHdlIHBlcmZvcm0gc3ltYm9sIHRhYmxlCiAgICAgICAgIC8vIGxvb2t1cHMgcHJp
b3IgdG8gaW5pdGlhbGl6aW5nIHRoZSBwcm9wZXJ0aWVzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAxMDYyODYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
MSwxMDYgKzM2MSw2IEBAIGNvbnN0IEhhc2hFbnRyeSogSlNPYmplY3Q6OmZpbmRQcm9wZXJ0eUgK
ICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBKU09iamVjdDo6ZGVmaW5lR2V0dGVyKEpTT2JqZWN0
KiB0aGlzT2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQotewot
ICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQ
cm90bykgewotICAgICAgICAvLyBEZWZpbmluZyBhIGdldHRlciBmb3IgX19wcm90b19fIGlzIHNp
bGVudGx5IGlnbm9yZWQuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBKU1ZhbHVlIG9i
amVjdCA9IHRoaXNPYmplY3QtPmdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5
TmFtZSk7Ci0gICAgaWYgKG9iamVjdCAmJiBvYmplY3QuaXNHZXR0ZXJTZXR0ZXIoKSkgewotICAg
ICAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3Bl
cnRpZXMoKSk7Ci0gICAgICAgIGFzR2V0dGVyU2V0dGVyKG9iamVjdCktPnNldEdldHRlcihleGVj
LT5nbG9iYWxEYXRhKCksIGdldHRlckZ1bmN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKLSAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9
IEdldHRlclNldHRlcjo6Y3JlYXRlKGV4ZWMpOwotICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdElu
dGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1l
LCBnZXR0ZXJTZXR0ZXIsIGF0dHJpYnV0ZXMgfCBBY2Nlc3Nvciwgc2xvdCwgMCk7Ci0KLSAgICAv
LyBwdXREaXJlY3Qgd2lsbCBjaGFuZ2Ugb3VyIFN0cnVjdHVyZSBpZiB3ZSBhZGQgYSBuZXcgcHJv
cGVydHkuIEZvcgotICAgIC8vIGdldHRlcnMgYW5kIHNldHRlcnMsIHRob3VnaCwgd2UgYWxzbyBu
ZWVkIHRvIGNoYW5nZSBvdXIgU3RydWN0dXJlCi0gICAgLy8gaWYgd2Ugb3ZlcnJpZGUgYW4gZXhp
c3Rpbmcgbm9uLWdldHRlciBvciBub24tc2V0dGVyLgotICAgIGlmIChzbG90LnR5cGUoKSAhPSBQ
dXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KQotICAgICAgICB0aGlzT2JqZWN0LT5zZXRTdHJ1
Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYW5z
aXRpb24oZ2xvYmFsRGF0YSwgdGhpc09iamVjdC0+c3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlcyB8IEFjY2Vzc29yKSk7Ci0KLSAgICB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
c2V0SGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyh0cnVlKTsKLSAgICBnZXR0ZXJTZXR0ZXItPnNl
dEdldHRlcihnbG9iYWxEYXRhLCBnZXR0ZXJGdW5jdGlvbik7Ci19Ci0KLXZvaWQgSlNPYmplY3Q6
OmluaXRpYWxpemVHZXR0ZXJTZXR0ZXJQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpCi17Ci0gICAgLy8gU2V0IGFuIGluaXRhbCBwcm9wZXJ0eSBvbiBhbiBv
YmplY3Q7IHRoZSBwcm9wZXJ0eSBtdXN0IG5vdCBhbHJlYWR5IGV4aXN0ICYgdGhlIGF0dHJpYnV0
ZSBmbGFncyBtdXN0IGJlIHNldCBjb3JyZWN0bHkuCi0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5n
ZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpID09IFdURjo6bm90Rm91bmQpOwot
ICAgIEFTU0VSVChzdGF0aWNfY2FzdDxib29sPihhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKLQot
ICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKLSAgICBQ
dXRQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5l
T3duUHJvcGVydHk+KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgZ2V0dGVyU2V0dGVyLCBhdHRy
aWJ1dGVzLCBzbG90LCAwKTsKLQotICAgIC8vIHB1dERpcmVjdCB3aWxsIGNoYW5nZSBvdXIgU3Ry
dWN0dXJlIGlmIHdlIGFkZCBhIG5ldyBwcm9wZXJ0eS4gRm9yCi0gICAgLy8gZ2V0dGVycyBhbmQg
c2V0dGVycywgdGhvdWdoLCB3ZSBhbHNvIG5lZWQgdG8gY2hhbmdlIG91ciBTdHJ1Y3R1cmUKLSAg
ICAvLyBpZiB3ZSBvdmVycmlkZSBhbiBleGlzdGluZyBub24tZ2V0dGVyIG9yIG5vbi1zZXR0ZXIu
Ci0gICAgaWYgKHNsb3QudHlwZSgpICE9IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpCi0g
ICAgICAgIHNldFN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIFN0cnVjdHVyZTo6YXR0cmli
dXRlQ2hhbmdlVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1l
LCBhdHRyaWJ1dGVzKSk7Ci0KLSAgICBzdHJ1Y3R1cmUoKS0+c2V0SGFzR2V0dGVyU2V0dGVyUHJv
cGVydGllcyh0cnVlKTsKLX0KLQotdm9pZCBKU09iamVjdDo6ZGVmaW5lU2V0dGVyKEpTT2JqZWN0
KiB0aGlzT2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQotewot
ICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQ
cm90bykgewotICAgICAgICAvLyBEZWZpbmluZyBhIHNldHRlciBmb3IgX19wcm90b19fIGlzIHNp
bGVudGx5IGlnbm9yZWQuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBKU1ZhbHVlIG9i
amVjdCA9IHRoaXNPYmplY3QtPmdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5
TmFtZSk7Ci0gICAgaWYgKG9iamVjdCAmJiBvYmplY3QuaXNHZXR0ZXJTZXR0ZXIoKSkgewotICAg
ICAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3Bl
cnRpZXMoKSk7Ci0gICAgICAgIGFzR2V0dGVyU2V0dGVyKG9iamVjdCktPnNldFNldHRlcihleGVj
LT5nbG9iYWxEYXRhKCksIHNldHRlckZ1bmN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OwotICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0
dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUoZXhlYyk7Ci0gICAgdGhpc09iamVjdC0+cHV0RGly
ZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5PihleGVjLT5nbG9iYWxEYXRhKCks
IHByb3BlcnR5TmFtZSwgZ2V0dGVyU2V0dGVyLCBhdHRyaWJ1dGVzIHwgQWNjZXNzb3IsIHNsb3Qs
IDApOwotCi0gICAgLy8gcHV0RGlyZWN0IHdpbGwgY2hhbmdlIG91ciBTdHJ1Y3R1cmUgaWYgd2Ug
YWRkIGEgbmV3IHByb3BlcnR5LiBGb3IKLSAgICAvLyBnZXR0ZXJzIGFuZCBzZXR0ZXJzLCB0aG91
Z2gsIHdlIGFsc28gbmVlZCB0byBjaGFuZ2Ugb3VyIFN0cnVjdHVyZQotICAgIC8vIGlmIHdlIG92
ZXJyaWRlIGFuIGV4aXN0aW5nIG5vbi1nZXR0ZXIgb3Igbm9uLXNldHRlci4KLSAgICBpZiAoc2xv
dC50eXBlKCkgIT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkKLSAgICAgICAgdGhpc09i
amVjdC0+c2V0U3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgU3RydWN0dXJlOjphdHRyaWJ1
dGVDaGFuZ2VUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iamVjdC0+c3RydWN0
dXJlKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyB8IEFjY2Vzc29yKSk7Ci0KLSAgICB0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmUoKS0+c2V0SGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyh0cnVlKTsK
LSAgICBnZXR0ZXJTZXR0ZXItPnNldFNldHRlcihleGVjLT5nbG9iYWxEYXRhKCksIHNldHRlckZ1
bmN0aW9uKTsKLX0KLQotSlNWYWx1ZSBKU09iamVjdDo6bG9va3VwR2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQotewotICAgIFByb3BlcnR5RGVz
Y3JpcHRvciBkZXNjcmlwdG9yOwotICAgIGlmICghZ2V0UHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMs
IHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwotCi0gICAgaWYgKCFkZXNjcmlwdG9yLmdldHRlclByZXNlbnQoKSkKLSAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7Ci0KLSAgICByZXR1cm4gZGVzY3JpcHRvci5nZXR0ZXIoKTsKLX0KLQot
SlNWYWx1ZSBKU09iamVjdDo6bG9va3VwU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKQotewotICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlw
dG9yOwotICAgIGlmICghZ2V0UHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvcikpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgaWYgKCFk
ZXNjcmlwdG9yLnNldHRlclByZXNlbnQoKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
Ci0gICAgCi0gICAgcmV0dXJuIGRlc2NyaXB0b3Iuc2V0dGVyKCk7Ci19Ci0KIGJvb2wgSlNPYmpl
Y3Q6Omhhc0luc3RhbmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVl
LCBKU1ZhbHVlIHByb3RvKQogewogICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTA2Mjg2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMTkyLDEzICsxOTIsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBwdXRE
aXJlY3RPZmZzZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBzaXplX3Qgb2Zmc2V0LCBKU1Zh
bHVlIHZhbHVlKSB7IHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0uc2V0KGdsb2JhbERhdGEsIHRo
aXMsIHZhbHVlKTsgfQogICAgICAgICB2b2lkIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KHNp
emVfdCBvZmZzZXQpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5zZXRVbmRlZmluZWQoKTsg
fQogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmlsbEdldHRlclByb3BlcnR5U2xv
dChQcm9wZXJ0eVNsb3QmLCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbik7Ci0g
ICAgICAgIHZvaWQgaW5pdGlhbGl6ZUdldHRlclNldHRlclByb3BlcnR5KEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBHZXR0ZXJTZXR0ZXIqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLQot
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkZWZpbmVHZXR0ZXIoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0
KiBnZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOwotICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkZWZpbmVTZXR0ZXIoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBzZXR0ZXJGdW5j
dGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU1ZhbHVlIGxvb2t1cEdldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGxvb2t1cFNldHRl
cihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICAgICAgYm9vbCBpc0dsb2JhbE9iamVj
dCgpIGNvbnN0OwpAQCAtMjk1LDYgKzI4OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBi
b29sIHB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0ciwgUHV0UHJvcGVydHlTbG90JiwgSlND
ZWxsKik7CiAKICAgICAgICAgYm9vbCBpbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaWxsR2V0dGVyUHJvcGVydHlTbG90KFByb3BlcnR5
U2xvdCYsIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uKTsKIAogICAgICAgICBj
b25zdCBIYXNoRW50cnkqIGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgICAgICBTdHJ1Y3R1cmUqIGNyZWF0
ZUluaGVyaXRvcklEKEpTR2xvYmFsRGF0YSYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxMDYyODYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDYsMTAgKzE0NiwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdFByb3RvCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCisgICAgSlNWYWx1ZSBnZXQg
PSBleGVjLT5hcmd1bWVudCgxKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBpZiAoZ2V0
Q2FsbERhdGEoZXhlYy0+YXJndW1lbnQoMSksIGNhbGxEYXRhKSA9PSBDYWxsVHlwZU5vbmUpCisg
ICAgaWYgKGdldENhbGxEYXRhKGdldCwgY2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiaW52
YWxpZCBnZXR0ZXIgdXNhZ2UiKSk7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVm
aW5lR2V0dGVyKHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1l
bnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwgYXNPYmplY3QoZXhlYy0+YXJndW1l
bnQoMSkpLCAwKTsKKworICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOworICAgIGRl
c2NyaXB0b3Iuc2V0R2V0dGVyKGdldCk7CisgICAgZGVzY3JpcHRvci5zZXRFbnVtZXJhYmxlKHRy
dWUpOworICAgIGRlc2NyaXB0b3Iuc2V0Q29uZmlndXJhYmxlKHRydWUpOworICAgIHRoaXNPYmpl
Y3QtPm1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIElk
ZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpKSwgZGVzY3JpcHRvciwgZmFsc2UpOworCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtMTU5LDEwICsxNjYsMTcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAorICAgIEpT
VmFsdWUgc2V0ID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0g
ICAgaWYgKGdldENhbGxEYXRhKGV4ZWMtPmFyZ3VtZW50KDEpLCBjYWxsRGF0YSkgPT0gQ2FsbFR5
cGVOb25lKQorICAgIGlmIChnZXRDYWxsRGF0YShzZXQsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZU5v
bmUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3Io
ZXhlYywgImludmFsaWQgc2V0dGVyIHVzYWdlIikpOwotICAgIHRoaXNPYmplY3QtPm1ldGhvZFRh
YmxlKCktPmRlZmluZVNldHRlcih0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIGV4
ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIGFzT2JqZWN0KGV4
ZWMtPmFyZ3VtZW50KDEpKSwgMCk7CisKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRv
cjsKKyAgICBkZXNjcmlwdG9yLnNldFNldHRlcihzZXQpOworICAgIGRlc2NyaXB0b3Iuc2V0RW51
bWVyYWJsZSh0cnVlKTsKKyAgICBkZXNjcmlwdG9yLnNldENvbmZpZ3VyYWJsZSh0cnVlKTsKKyAg
ICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0
LCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSksIGRlc2NyaXB0b3IsIGZhbHNlKTsKKwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTE3Miw3ICsxODYsMTIgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+bG9va3VwR2V0dGVyKGV4
ZWMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpKSkpOworICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOworICAgIGlm
ICh0aGlzT2JqZWN0LT5nZXRQcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgSWRlbnRpZmllcihleGVj
LCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpLCBkZXNjcmlw
dG9yKQorICAgICAgICAmJiBkZXNjcmlwdG9yLmdldHRlclByZXNlbnQoKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShkZXNjcmlwdG9yLmdldHRlcigpKTsKKworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKQEAg
LTE4MSw3ICsyMDAsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90
bwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhp
c09iamVjdC0+bG9va3VwU2V0dGVyKGV4ZWMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1l
bnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSkpOworICAgIFByb3BlcnR5RGVzY3Jp
cHRvciBkZXNjcmlwdG9yOworICAgIGlmICh0aGlzT2JqZWN0LT5nZXRQcm9wZXJ0eURlc2NyaXB0
b3IoZXhlYywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYykpLCBkZXNjcmlwdG9yKQorICAgICAgICAmJiBkZXNjcmlwdG9yLnNldHRl
clByZXNlbnQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShkZXNjcmlwdG9yLnNl
dHRlcigpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJ
c0VudW1lcmFibGUoRXhlY1N0YXRlKiBleGVjKQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2
MzY4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjggQEAKKzIwMTItMDEtMzEgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBw
bGUuY29tPgorCisgICAgICAgIFJlbW92ZSBKU09iamVjdCBkZWZpbmVHZXR0ZXIvZGVmaW5lU2V0
dGVyIGxvb2t1cEdldHRlci9sb29rdXBTZXR0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NDUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdl
aW5pZy4KKworICAgICAgICBUaGVzZSBjYW4gbm93IGFsbCBiZSBpbXBsZW1lbnRlZCBpbiB0ZXJt
cyBvZiBkZWZpbmVPd25Qcm9wZXJ0eSAmIGdldFByb3BlcnR5RGVzY3JpcHRvci4KKyAgICAgICAg
QWxzbyByZW1vdmUgaW5pdGlhbGl6ZUdldHRlclNldHRlclByb3BlcnR5LCBzaW5jZSB0aGlzIGlz
IGVxdWl2YWxlbnQgdG8gcHV0RGlyZWN0QWNjZXNzb3IuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NV2luZG93OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmg6CisgICAgICAgIChKU0RPTVdpbmRvd1No
ZWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTTG9jYXRpb25Qcm90b3R5cGU6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRl
SGVhZGVyKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICogcGFnZS9M
b2NhdGlvbi5pZGw6CisKIDIwMTItMDEtMzEgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJk
QG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBpbmNsdWRlIGNsZWFudXAuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCShyZXZpc2lvbiAxMDYyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4OCwzNSArMzg4LDE3IEBAIHZv
aWQgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5TmFtZXMoSlMKICAgICBCYXNlOjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQog
Ci12b2lkIEpTRE9NV2luZG93OjpkZWZpbmVHZXR0ZXIoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0
ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcykKLXsKLSAgICBKU0RPTVdpbmRvdyogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCk7Ci0gICAgLy8gT25seSBhbGxv
dyBkZWZpbmluZyBnZXR0ZXJzIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAgaWYg
KCF0aGlzT2JqZWN0LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICAvLyBEb24ndCBhbGxvdyBzaGFkb3dpbmcgbG9jYXRpb24gdXNpbmcgZGVmaW5lR2V0dGVy
LgotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gImxvY2F0aW9uIikKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgQmFzZTo6ZGVmaW5lR2V0dGVyKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
Z2V0dGVyRnVuY3Rpb24sIGF0dHJpYnV0ZXMpOwotfQotCi12b2lkIEpTRE9NV2luZG93OjpkZWZp
bmVTZXR0ZXIoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBzZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0
cmlidXRlcykKLXsKLSAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdp
bmRvdyo+KG9iamVjdCk7Ci0gICAgLy8gT25seSBhbGxvdyBkZWZpbmluZyBzZXR0ZXJzIGJ5IGZy
YW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAgaWYgKCF0aGlzT2JqZWN0LT5hbGxvd3NBY2Nl
c3NGcm9tKGV4ZWMpKQotICAgICAgICByZXR1cm47Ci0gICAgQmFzZTo6ZGVmaW5lU2V0dGVyKHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2V0dGVyRnVuY3Rpb24sIGF0dHJpYnV0ZXMp
OwotfQotCiBib29sIEpTRE9NV2luZG93OjpkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0
KiBvYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hv
dWxkVGhyb3cpCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01X
aW5kb3cqPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVmaW5pbmcgcHJvcGVydGllcyBp
biB0aGlzIHdheSBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLCBhcyBpdCBhbGxvd3Mgc2V0
dGVycyB0byBiZSBpbnRyb2R1Y2VkLgogICAgIGlmICghdGhpc09iamVjdC0+YWxsb3dzQWNjZXNz
RnJvbShleGVjKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRG9uJ3QgYWxsb3cg
c2hhZG93aW5nIGxvY2F0aW9uIHVzaW5nIGFjY2Vzc29yIHByb3BlcnRpZXMuCisgICAgaWYgKGRl
c2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiBwcm9wZXJ0eU5hbWUgPT0gImxvY2F0
aW9uIikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93
blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hv
dWxkVGhyb3cpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd1NoZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd1NoZWxsLmNwcAkocmV2aXNpb24gMTA2Mjg2KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSwx
OCArMTM5LDYgQEAgdm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpnZXRPd25Qcm9wZXJ0eU5hbQogICAg
IHRoaXNPYmplY3QtPndpbmRvdygpLT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVz
KHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAot
dm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpkZWZpbmVHZXR0ZXIoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBn
ZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcykKLXsKLSAgICBKU0RPTVdpbmRvd1No
ZWxsKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93U2hlbGwqPihvYmplY3QpOwotICAg
IHRoaXNPYmplY3QtPndpbmRvdygpLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVHZXR0ZXIodGhpc09i
amVjdC0+d2luZG93KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rpb24sIGF0dHJp
YnV0ZXMpOwotfQotCi12b2lkIEpTRE9NV2luZG93U2hlbGw6OmRlZmluZVNldHRlcihKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNPYmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQotewotICAg
IEpTRE9NV2luZG93U2hlbGwqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+
KG9iamVjdCk7Ci0gICAgdGhpc09iamVjdC0+d2luZG93KCktPm1ldGhvZFRhYmxlKCktPmRlZmlu
ZVNldHRlcih0aGlzT2JqZWN0LT53aW5kb3coKSwgZXhlYywgcHJvcGVydHlOYW1lLCBzZXR0ZXJG
dW5jdGlvbiwgYXR0cmlidXRlcyk7Ci19Ci0KIAogLy8gLS0tLQogLy8gSlNET01XaW5kb3cgbWV0
aG9kcwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hl
bGwuaAkocmV2aXNpb24gMTA2Mjg2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dTaGVsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw4ICs4Niw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0Nl
bGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0
KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJh
dGlvbk1vZGUpOwogICAgICAgICBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTQzo6SlNP
YmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVu
dW1lcmF0aW9uTW9kZSk7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGRlZmluZUdldHRlcihKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNDOjpKU09iamVjdCogZ2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
OwotICAgICAgICBzdGF0aWMgdm9pZCBkZWZpbmVTZXR0ZXIoSlNDOjpKU09iamVjdCosIEpTQzo6
RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNP
YmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgc3Rh
dGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNj
cmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICAgICAgUmVmUHRyPERPTVdyYXBwZXJX
b3JsZD4gbV93b3JsZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRp
b25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiAxMDYyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDEx
ICsxNzAsMTEgQEAgdm9pZCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTTwogICAg
IEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
cywgbW9kZSk7CiB9CiAKLXZvaWQgSlNMb2NhdGlvbjo6ZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U09iamVjdCogZ2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTTG9j
YXRpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcgfHwgcHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mKQotICAgICAgICByZXR1cm47Ci0gICAgQmFzZTo6ZGVm
aW5lR2V0dGVyKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdGlvbiwgYXR0
cmlidXRlcyk7CisgICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiAo
cHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZyB8fCBwcm9wZXJ0
eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnZhbHVlT2YpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7CiB9CiAKIHZvaWQgSlNM
b2NhdGlvbjo6c2V0SHJlZihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCkBAIC0yODEs
MTEgKzI4MSwxMSBAQCBib29sIEpTTG9jYXRpb25Qcm90b3R5cGU6OnB1dERlbGVnYXRlKEV4CiAg
ICAgcmV0dXJuIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5n
IHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZik7CiB9CiAK
LXZvaWQgSlNMb2NhdGlvblByb3RvdHlwZTo6ZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVj
dCogZ2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTTG9jYXRpb25Q
cm90b3R5cGU6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7Ci0gICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcgfHwgcHJvcGVydHlOYW1lID09IGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mKQotICAgICAgICByZXR1cm47Ci0gICAgQmFzZTo6
ZGVmaW5lR2V0dGVyKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdGlvbiwg
YXR0cmlidXRlcyk7CisgICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAm
JiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZyB8fCBwcm9w
ZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnZhbHVlT2YpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAxMDYyODYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5
KQpAQCAtODI4LDIwICs4MjgsMTQgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICRzdHJ1
Y3R1cmVGbGFnc3siSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIn0gPSAxOwogICAgIH0K
IAotICAgICMgQ3VzdG9tIGRlZmluZVByb3BlcnR5IGZ1bmN0aW9uIGV4aXN0cyBvbiBET01XaW5k
b3cKLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGRlZmluZU93blBy
b3BlcnR5KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxk
VGhyb3cpO1xuIikgaWYgJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyI7Ci0KICAgICAjIEN1
c3RvbSBnZXRPd25Qcm9wZXJ0eU5hbWVzIGZ1bmN0aW9uCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldFByb3BlcnR5TmFtZXMifSB8fCAkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNJbmRleEdldHRlciJ9IHx8ICRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0N1c3RvbUluZGV4R2V0dGVyIn0gfHwgJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzTnVtZXJpY0luZGV4R2V0dGVyIn0pIHsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkm
LCBKU0M6OkVudW1lcmF0aW9uTW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKTtcbiIpOwogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0UHJv
cGVydHlOYW1lcyJ9ID0gMTsgICAgICAgCiAgICAgfQogCi0gICAgIyBDdXN0b20gZGVmaW5lR2V0
dGVyIGZ1bmN0aW9uCi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBk
ZWZpbmVHZXR0ZXIoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNPYmplY3QqIGdldHRlckZ1bmN0aW9uLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkN1c3RvbURlZmluZUdldHRlciJ9OwotCi0gICAgIyBDdXN0b20gZGVmaW5lU2V0dGVyIGZ1
bmN0aW9uCi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBkZWZpbmVT
ZXR0ZXIoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNPYmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1
c3RvbURlZmluZVNldHRlciJ9OworICAgICMgQ3VzdG9tIGRlZmluZU93blByb3BlcnR5IGZ1bmN0
aW9uCisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Q
cm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3Vs
ZFRocm93KTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbURl
ZmluZU93blByb3BlcnR5In07CiAKICAgICAjIE92ZXJyaWRlIHRvQm9vbGVhbiB0byByZXR1cm4g
ZmFsc2UgZm9yIG9iamVjdHMgdGhhdCB3YW50IHRvICdNYXNxdWVyYWRlc0FzVW5kZWZpbmVkJy4K
ICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCJ9KSB7CkBAIC0xMDYzLDggKzEwNTcsOCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFBy
b3BlcnR5U2xvdCYpO1xuIik7CiAgICAgfQogCi0gICAgIyBDdXN0b20gZGVmaW5lR2V0dGVyIGZ1
bmN0aW9uCi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBkZWZpbmVH
ZXR0ZXIoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNPYmplY3QqIGdldHRlckZ1bmN0aW9uLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1
c3RvbVByb3RvdHlwZURlZmluZUdldHRlciJ9OworICAgICMgQ3VzdG9tIGRlZmluZU93blByb3Bl
cnR5IGZ1bmN0aW9uCisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBk
ZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBK
U0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImLCBi
b29sIHNob3VsZFRocm93KTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkN1c3RvbVByb3RvdHlwZURlZmluZU93blByb3BlcnR5In07CiAKICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiXG5wcml2YXRlOlxuIik7CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAk
e2NsYXNzTmFtZX1Qcm90b3R5cGUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKSA6IEpTQzo6SlNOb25G
aW5hbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpIHsgfVxuIik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiAxMDYyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDcgQEAgbW9kdWxl
IHdpbmRvdyB7CiAKICAgICBpbnRlcmZhY2UgWwogICAgICAgICBDaGVja0RvbWFpblNlY3VyaXR5
LAotICAgICAgICBDdXN0b21EZWZpbmVHZXR0ZXIsCi0gICAgICAgIEN1c3RvbURlZmluZVNldHRl
ciwKKyAgICAgICAgQ3VzdG9tRGVmaW5lT3duUHJvcGVydHksCiAgICAgICAgIEN1c3RvbURlbGV0
ZVByb3BlcnR5LAogICAgICAgICBDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QsCiAgICAgICAgIEN1
c3RvbUdldFByb3BlcnR5TmFtZXMsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9u
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAkocmV2
aXNpb24gMTA2Mjg2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDkgKzM3LDkgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIEdlbmVy
YXRlSXNSZWFjaGFibGU9SW1wbEZyYW1lLAogICAgICAgICBDdXN0b21EZWxldGVQcm9wZXJ0eSwK
ICAgICAgICAgQ3VzdG9tR2V0UHJvcGVydHlOYW1lcywKLSAgICAgICAgQ3VzdG9tRGVmaW5lR2V0
dGVyLAorICAgICAgICBDdXN0b21EZWZpbmVPd25Qcm9wZXJ0eSwKICAgICAgICAgRGVsZWdhdGlu
Z1Byb3RvdHlwZVB1dEZ1bmN0aW9uLAotICAgICAgICBDdXN0b21Qcm90b3R5cGVEZWZpbmVHZXR0
ZXIsCisgICAgICAgIEN1c3RvbVByb3RvdHlwZURlZmluZU93blByb3BlcnR5LAogICAgICAgICBP
bWl0Q29uc3RydWN0b3IKICAgICBdIExvY2F0aW9uIHsKICNpZiAhZGVmaW5lZChMQU5HVUFHRV9D
UFApIHx8ICFMQU5HVUFHRV9DUFAK
</data>
<flag name="commit-queue"
          id="126255"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124876</attachid>
            <date>2012-01-31 20:28:45 -0800</date>
            <delta_ts>2012-02-01 16:23:02 -0800</delta_ts>
            <desc>More qt build fix</desc>
            <filename>77451.4.patch</filename>
            <type>text/plain</type>
            <size>42789</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MzY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDEyLTAxLTMxICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW1vdmUgSlNPYmplY3QgZGVmaW5lR2V0dGVyL2RlZmluZVNldHRlciBsb29r
dXBHZXR0ZXIvbG9va3VwU2V0dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NzQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisK
KyAgICAgICAgVGhlc2UgY2FuIG5vdyBhbGwgYmUgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgZGVm
aW5lT3duUHJvcGVydHkgJiBnZXRQcm9wZXJ0eURlc2NyaXB0b3IuCisgICAgICAgIEFsc28gcmVt
b3ZlIGluaXRpYWxpemVHZXR0ZXJTZXR0ZXJQcm9wZXJ0eSwgc2luY2UgdGhpcyBpcyBlcXVpdmFs
ZW50IHRvIHB1dERpcmVjdEFjY2Vzc29yLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhw
OgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChK
U0M6OkRlYnVnZ2VyQWN0aXZhdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIGRl
YnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oOgorICAgICAgICAoRGVidWdnZXJBY3RpdmF0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgorICAgICAgICAoTWV0aG9kVGFibGUp
OgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6
CisgICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGlt
ZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQ2VsbCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToK
KyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBy
dW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAgICogcnVudGlt
ZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZp
bmVHZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIpOgor
ICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIpOgorICAgICAgICAoSlND
OjpvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIpOgorCiAyMDEyLTAxLTMxICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgVmVjdG9yPFQ+OjpvcGVyYXRv
cj09IHNob3VsZG4ndCByZXF1aXJlIFQgdG8gaGF2ZSBvcGVyYXRvciE9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDEwNjI4NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAg
LTE2NywxMiArMTY3LDExIEBAIF9fWk4zSlNDMTNTYW1wbGluZ0ZsYWdzN3NfZmxhZ3NFCiBfX1pO
M0pTQzEzU3RhdGVtZW50Tm9kZTZzZXRMb2NFaWkKIF9fWk4zSlNDMTRFeGVjdXRhYmxlQmFzZTZz
X2luZm9FCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxMGdsb2JhbEV4ZWNFdgotX19aTjNKU0Mx
NEpTR2xvYmFsT2JqZWN0MTJkZWZpbmVHZXR0ZXJFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0
ZUVSS05TXzEwSWRlbnRpZmllckVTMl9qCi1fX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxMmRlZmlu
ZVNldHRlckVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVMy
X2oKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDEzY2xlYXJSYXJlRGF0YUVQTlNfNkpTQ2VsbEUK
IF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDEzdmlzaXRDaGlsZHJlbkVQTlNfNkpTQ2VsbEVSTlNf
MTFTbG90VmlzaXRvckUKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDE2YWRkU3RhdGljR2xvYmFs
c0VQTlMwXzE4R2xvYmFsUHJvcGVydHlJbmZvRWkKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDE2
cHV0RGlyZWN0VmlydHVhbEVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVu
dGlmaWVyRU5TXzdKU1ZhbHVlRWoKK19fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDE3ZGVmaW5lT3du
UHJvcGVydHlFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVS
TlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFYgogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MThnZXRP
d25Qcm9wZXJ0eVNsb3RFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZp
ZXJFUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MjRnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3JFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRl
bnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmpl
Y3QyNXNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGVFCkBAIC0zMTUsMTAgKzMxNCw2IEBAIF9fWk4z
SlNDOERlYnVnZ2VyRDJFdgogX19aTjNKU0M4SlNPYmplY3QxMHB1dEJ5SW5kZXhFUE5TXzZKU0Nl
bGxFUE5TXzlFeGVjU3RhdGVFak5TXzdKU1ZhbHVlRQogX19aTjNKU0M4SlNPYmplY3QxMWhhc0lu
c3RhbmNlRVBTMF9QTlNfOUV4ZWNTdGF0ZUVOU183SlNWYWx1ZUVTNF8KIF9fWk4zSlNDOEpTT2Jq
ZWN0MTJkZWZhdWx0VmFsdWVFUEtTMF9QTlNfOUV4ZWNTdGF0ZUVOU18yMlByZWZlcnJlZFByaW1p
dGl2ZVR5cGVFCi1fX1pOM0pTQzhKU09iamVjdDEyZGVmaW5lR2V0dGVyRVBTMF9QTlNfOUV4ZWNT
dGF0ZUVSS05TXzEwSWRlbnRpZmllckVTMV9qCi1fX1pOM0pTQzhKU09iamVjdDEyZGVmaW5lU2V0
dGVyRVBTMF9QTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVTMV9qCi1fX1pOM0pTQzhK
U09iamVjdDEybG9va3VwR2V0dGVyRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQot
X19aTjNKU0M4SlNPYmplY3QxMmxvb2t1cFNldHRlckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRl
bnRpZmllckUKIF9fWk4zSlNDOEpTT2JqZWN0MTJ0b1RoaXNPYmplY3RFUE5TXzZKU0NlbGxFUE5T
XzlFeGVjU3RhdGVFCiBfX1pOM0pTQzhKU09iamVjdDEzdmlzaXRDaGlsZHJlbkVQTlNfNkpTQ2Vs
bEVSTlNfMTFTbG90VmlzaXRvckUKIF9fWk4zSlNDOEpTT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQ
TlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCShyZXZp
c2lvbiAxMDYyODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkod29ya2luZyBjb3B5KQpAQCAt
MTM1LDExICsxMzUsNyBAQCBFWFBPUlRTCiAgICAgP2RlY3JlbWVudEBSZWZDb3VudGVkTGVha0Nv
dW50ZXJAV1RGQEBRQUVYWFoKICAgICA/ZGVmYXVsdEF0dHJpYnV0ZXNAUHJvcGVydHlEZXNjcmlw
dG9yQEpTQ0BAMElBCiAgICAgP2RlZmF1bHRWYWx1ZUBKU09iamVjdEBKU0NAQFNBP0FWSlNWYWx1
ZUAyQFBCVjEyQFBBVkV4ZWNTdGF0ZUAyQFc0UHJlZmVycmVkUHJpbWl0aXZlVHlwZUAyQEBaCi0g
ICAgP2RlZmluZUdldHRlckBKU0dsb2JhbE9iamVjdEBKU0NAQFNBWFBBVkpTT2JqZWN0QDJAUEFW
RXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQDBJQFoKLSAgICA/ZGVmaW5lR2V0dGVyQEpTT2Jq
ZWN0QEpTQ0BAU0FYUEFWMTJAUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQDBJQFoKICAg
ICA/ZGVmaW5lT3duUHJvcGVydHlASlNPYmplY3RASlNDQEBTQV9OUEFWMTJAUEFWRXhlY1N0YXRl
QDJAQUJWSWRlbnRpZmllckAyQEFBVlByb3BlcnR5RGVzY3JpcHRvckAyQF9OQFoKLSAgICA/ZGVm
aW5lU2V0dGVyQEpTR2xvYmFsT2JqZWN0QEpTQ0BAU0FYUEFWSlNPYmplY3RAMkBQQVZFeGVjU3Rh
dGVAMkBBQlZJZGVudGlmaWVyQDJAMElAWgotICAgID9kZWZpbmVTZXR0ZXJASlNPYmplY3RASlND
QEBTQVhQQVYxMkBQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAMElAWgogICAgID9kZWxl
dGVPd25lZFB0ckBXVEZAQFlBWFBBVUhCSVRNQVBfX0BAQFoKICAgICA/ZGVsZXRlT3duZWRQdHJA
V1RGQEBZQVhQQVVIQlJVU0hfX0BAQFoKICAgICA/ZGVsZXRlT3duZWRQdHJAV1RGQEBZQVhQQVVI
RENfX0BAQFoKQEAgLTE3OCw3ICsxNzQsNiBAQCBFWFBPUlRTCiAgICAgP2Zhc3RSZWFsbG9jQFdU
RkBAWUFQQVhQQVhJQFoKICAgICA/ZmFzdFN0ckR1cEBXVEZAQFlBUEFEUEJEQFoKICAgICA/ZmFz
dFplcm9lZE1hbGxvY0BXVEZAQFlBUEFYSUBaCi0gICAgP2ZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3RA
SlNPYmplY3RASlNDQEBRQUVYQUFWUHJvcGVydHlTbG90QDJAUEFWPyRXcml0ZUJhcnJpZXJCYXNl
QFc0VW5rbm93bkBKU0NAQEAyQEBaCiAgICAgP2ZpbmFsaXplQFdlYWtIYW5kbGVPd25lckBKU0NA
QFVBRVhWPyRIYW5kbGVAVzRVbmtub3duQEpTQ0BAQDJAUEFYQFoKICAgICA/ZmluaXNoQ3JlYXRp
b25ARGF0ZUluc3RhbmNlQEpTQ0BASUFFWEFBVkpTR2xvYmFsRGF0YUAyQE5AWgogICAgID9maW5p
c2hDcmVhdGlvbkBJbnRlcm5hbEZ1bmN0aW9uQEpTQ0BASUFFWEFBVkpTR2xvYmFsRGF0YUAyQEFC
VklkZW50aWZpZXJAMkBAWgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyQWN0aXZhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAJKHJldmlzaW9uIDEwNjI4NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDEsMTYgKzEwMSwxMCBAQCBib29sIERlYnVnZ2VyQWN0aXZhdGlvbjo6
Z2V0T3duUHJvcGVydHlECiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi0+bWV0
aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXNPYmplY3QtPm1fYWN0aXZh
dGlvbi5nZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KIAotdm9pZCBE
ZWJ1Z2dlckFjdGl2YXRpb246OmRlZmluZUdldHRlcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRl
ckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorYm9vbCBEZWJ1Z2dlckFjdGl2YXRpb246
OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgRGVidWdnZXJBY3RpdmF0aW9uKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PERlYnVnZ2VyQWN0aXZhdGlvbio+KG9iamVjdCk7Ci0gICAgdGhpc09iamVj
dC0+bV9hY3RpdmF0aW9uLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVHZXR0ZXIodGhpc09iamVjdC0+
bV9hY3RpdmF0aW9uLmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0aW9uLCBh
dHRyaWJ1dGVzKTsKLX0KLQotdm9pZCBEZWJ1Z2dlckFjdGl2YXRpb246OmRlZmluZVNldHRlcihK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQot
ewotICAgIERlYnVnZ2VyQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxEZWJ1Z2dlckFj
dGl2YXRpb24qPihvYmplY3QpOwotICAgIHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi0+bWV0aG9k
VGFibGUoKS0+ZGVmaW5lU2V0dGVyKHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi5nZXQoKSwgZXhl
YywgcHJvcGVydHlOYW1lLCBzZXR0ZXJGdW5jdGlvbiwgYXR0cmlidXRlcyk7CisgICAgcmV0dXJu
IHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVy
dHkodGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IsIHNob3VsZFRocm93KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlv
bi5oCShyZXZpc2lvbiAxMDYyODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXJBY3RpdmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0
YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKLSAgICAgICAgc3RhdGljIHZvaWQgZGVmaW5l
R2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU09iamVjdCogZ2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAg
ICAgICBzdGF0aWMgdm9pZCBkZWZpbmVTZXR0ZXIoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBzZXR0ZXJGdW5jdGlvbiwgdW5z
aWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIAogICAgICAgICBKU19FWFBP
UlREQVRBIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAkocmV2aXNpb24gMTA2Mjg2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAg
LTY2LDEyICs2Niw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIEpTT2JqZWN0
KiAoKlRvVGhpc09iamVjdEZ1bmN0aW9uUHRyKShKU0NlbGwqLCBFeGVjU3RhdGUqKTsKICAgICAg
ICAgVG9UaGlzT2JqZWN0RnVuY3Rpb25QdHIgdG9UaGlzT2JqZWN0OwogCi0gICAgICAgIHR5cGVk
ZWYgdm9pZCAoKkRlZmluZUdldHRlckZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBKU09iamVjdCosIHVuc2lnbmVkKTsKLSAgICAgICAgRGVmaW5l
R2V0dGVyRnVuY3Rpb25QdHIgZGVmaW5lR2V0dGVyOwotCi0gICAgICAgIHR5cGVkZWYgdm9pZCAo
KkRlZmluZVNldHRlckZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBKU09iamVjdCosIHVuc2lnbmVkKTsKLSAgICAgICAgRGVmaW5lU2V0dGVyRnVu
Y3Rpb25QdHIgZGVmaW5lU2V0dGVyOwotCiAgICAgICAgIHR5cGVkZWYgSlNWYWx1ZSAoKkRlZmF1
bHRWYWx1ZUZ1bmN0aW9uUHRyKShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByZWZlcnJl
ZFByaW1pdGl2ZVR5cGUpOwogICAgICAgICBEZWZhdWx0VmFsdWVGdW5jdGlvblB0ciBkZWZhdWx0
VmFsdWU7CiAKQEAgLTEyOCw4ICsxMjIsNiBAQCBzdHJ1Y3QgTWVtYmVyQ2hlY2sjI21lbWJlciB7
IFwKICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0T3duUHJvcGVydHlTbG90LCBcCiAgICAgICAgICZD
bGFzc05hbWU6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgsIFwKICAgICAgICAgJkNsYXNzTmFt
ZTo6dG9UaGlzT2JqZWN0LCBcCi0gICAgICAgICZDbGFzc05hbWU6OmRlZmluZUdldHRlciwgXAot
ICAgICAgICAmQ2xhc3NOYW1lOjpkZWZpbmVTZXR0ZXIsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6
ZGVmYXVsdFZhbHVlLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmdldE93blByb3BlcnR5TmFtZXMs
IFwKICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0UHJvcGVydHlOYW1lcywgXApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCShyZXZp
c2lvbiAxMDYyODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVu
Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAKKyNpbmNsdWRlICJHZXR0ZXJT
ZXR0ZXIuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTExMSw4ICsxMTIsOCBAQCB2b2lkIEpTQm91bmRGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24o
RXhlCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYywgZXhlY3V0YWJsZSwgbGVuZ3RoLCBu
YW1lKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogCi0gICAgaW5pdGlhbGl6ZUdl
dHRlclNldHRlclByb3BlcnR5KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMs
IGdsb2JhbE9iamVjdCgpLT50aHJvd1R5cGVFcnJvckdldHRlclNldHRlcihleGVjKSwgRG9udERl
bGV0ZSB8IERvbnRFbnVtIHwgQWNjZXNzb3IpOwotICAgIGluaXRpYWxpemVHZXR0ZXJTZXR0ZXJQ
cm9wZXJ0eShleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVyLCBnbG9iYWxPYmplY3Qo
KS0+dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoZXhlYyksIERvbnREZWxldGUgfCBEb250RW51
bSB8IEFjY2Vzc29yKTsKKyAgICBwdXREaXJlY3RBY2Nlc3NvcihleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMsIGdsb2JhbE9iamVjdCgpLT50aHJvd1R5
cGVFcnJvckdldHRlclNldHRlcihleGVjKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgQWNjZXNz
b3IpOworICAgIHB1dERpcmVjdEFjY2Vzc29yKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmNhbGxlciwgZ2xvYmFsT2JqZWN0KCktPnRocm93VHlwZUVycm9yR2V0dGVy
U2V0dGVyKGV4ZWMpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBBY2Nlc3Nvcik7CiB9CiAKIHZv
aWQgSlNCb3VuZEZ1bmN0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5j
cHAJKHJldmlzaW9uIDEwNjI4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCwxNiArMTU4LDYgQEAgdm9pZCBzbG93VmFs
aWRhdGVDZWxsKEpTQ2VsbCogY2VsbCkKICAgICBBU1NFUlRfR0NfT0JKRUNUX0xPT0tTX1ZBTElE
KGNlbGwpOwogfQogCi12b2lkIEpTQ2VsbDo6ZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTT2JqZWN0KiwgdW5zaWduZWQpCi17Ci0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgSlNDZWxsOjpkZWZpbmVTZXR0ZXIoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNPYmplY3QqLCB1bnNpZ25lZCkK
LXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQogSlNWYWx1ZSBKU0NlbGw6OmRlZmF1
bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5
cGUpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTA2Mjg2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw4ICsxNTIsNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOwogCiAgICAgICAgIC8vIER1bW15IGltcGxlbWVudGF0aW9ucyBvZiBvdmVycmlk
ZS1hYmxlIHN0YXRpYyBmdW5jdGlvbnMgZm9yIGNsYXNzZXMgdG8gcHV0IGluIHRoZWlyIE1ldGhv
ZFRhYmxlCi0gICAgICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGRlZmlu
ZUdldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU09iamVj
dCosIHVuc2lnbmVkKTsKLSAgICAgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZv
aWQgZGVmaW5lU2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0
ZXMgPSAwKTsKICAgICAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAgICAgICAgIHN0YXRp
YyBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAg
ICAgICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGdldFByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9u
TW9kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmNwcAkocmV2aXNpb24gMTA2Mjg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAi
RnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRl
ICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU05v
dEFuT2JqZWN0LmgiCkBAIC0yMTUsNyArMjE2LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZQogICAgICAgICBpZiAodGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCkt
PmlzU3RyaWN0TW9kZSgpKSB7CiAgICAgICAgICAgICBib29sIHJlc3VsdCA9IEJhc2U6OmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
ICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5pbml0
aWFsaXplR2V0dGVyU2V0dGVyUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0
LT5nbG9iYWxPYmplY3QoKS0+dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoZXhlYyksIERvbnRE
ZWxldGUgfCBEb250RW51bSB8IEFjY2Vzc29yKTsKKyAgICAgICAgICAgICAgICB0aGlzT2JqZWN0
LT5wdXREaXJlY3RBY2Nlc3NvcihleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdGhp
c09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPnRocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKGV4ZWMp
LCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBBY2Nlc3Nvcik7CiAgICAgICAgICAgICAgICAgcmVz
dWx0ID0gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCk7CiAgICAgICAgICAg
ICB9CkBAIC0yMzQsNyArMjM1LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZQogICAgICAgICBpZiAodGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0
TW9kZSgpKSB7CiAgICAgICAgICAgICBib29sIHJlc3VsdCA9IEJhc2U6OmdldE93blByb3BlcnR5
U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICAgICAg
aWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5pbml0aWFsaXplR2V0
dGVyU2V0dGVyUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0LT5nbG9iYWxP
YmplY3QoKS0+dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoZXhlYyksIERvbnREZWxldGUgfCBE
b250RW51bSB8IEFjY2Vzc29yKTsKKyAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJl
Y3RBY2Nlc3NvcihleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdGhpc09iamVjdC0+
Z2xvYmFsT2JqZWN0KCktPnRocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKGV4ZWMpLCBEb250RGVs
ZXRlIHwgRG9udEVudW0gfCBBY2Nlc3Nvcik7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gQmFz
ZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCk7CiAgICAgICAgICAgICB9CkBAIC0y
NjMsNyArMjY0LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0bwog
ICAgICAgICBpZiAodGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKSB7
CiAgICAgICAgICAgICBib29sIHJlc3VsdCA9IEJhc2U6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cih0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogICAgICAgICAg
ICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5pbml0aWFsaXpl
R2V0dGVyU2V0dGVyUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0LT5nbG9i
YWxPYmplY3QoKS0+dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoZXhlYyksIERvbnREZWxldGUg
fCBEb250RW51bSB8IEFjY2Vzc29yKTsKKyAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXRE
aXJlY3RBY2Nlc3NvcihleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdGhpc09iamVj
dC0+Z2xvYmFsT2JqZWN0KCktPnRocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKGV4ZWMpLCBEb250
RGVsZXRlIHwgRG9udEVudW0gfCBBY2Nlc3Nvcik7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
QmFzZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgZGVzY3JpcHRvcik7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCk7CiAgICAg
ICAgICAgICB9CkBAIC0yODIsNyArMjgzLDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0bwogICAgICAgICBpZiAodGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCktPmlz
U3RyaWN0TW9kZSgpKSB7CiAgICAgICAgICAgICBib29sIHJlc3VsdCA9IEJhc2U6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICB0aGlzT2Jq
ZWN0LT5pbml0aWFsaXplR2V0dGVyU2V0dGVyUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lLCB0
aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoZXhl
YyksIERvbnREZWxldGUgfCBEb250RW51bSB8IEFjY2Vzc29yKTsKKyAgICAgICAgICAgICAgICB0
aGlzT2JqZWN0LT5wdXREaXJlY3RBY2Nlc3NvcihleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5
TmFtZSwgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPnRocm93VHlwZUVycm9yR2V0dGVyU2V0
dGVyKGV4ZWMpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBBY2Nlc3Nvcik7CiAgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gQmFzZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiAgICAgICAgICAgICAgICAgQVNTRVJU
KHJlc3VsdCk7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxMDYyODYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE3MSwyMSArMTcxLDE2IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnB1dERpcmVjdFZp
cnR1YWwoSlMKICAgICB9CiB9CiAKLXZvaWQgSlNHbG9iYWxPYmplY3Q6OmRlZmluZUdldHRlcihK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29s
IEpTR2xvYmFsT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQogewogICAgIEpTR2xvYmFsT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICBpZiAoIXRoaXNPYmplY3QtPnN5bWJvbFRhYmxlR2V0KHBy
b3BlcnR5TmFtZSwgc2xvdCkpCi0gICAgICAgIEpTVmFyaWFibGVPYmplY3Q6OmRlZmluZUdldHRl
cih0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmMsIGF0dHJpYnV0ZXMp
OworICAgIC8vIHNpbGVudGx5IGlnbm9yZSBhdHRlbXB0cyB0byBhZGQgYWNjZXNzb3JzIGFsaWFz
aW5nIHZhcnMuCisgICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiB0
aGlzT2JqZWN0LT5zeW1ib2xUYWJsZUdldChwcm9wZXJ0eU5hbWUsIHNsb3QpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwogfQogCi12
b2lkIEpTR2xvYmFsT2JqZWN0OjpkZWZpbmVTZXR0ZXIoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBzZXR0
ZXJGdW5jLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQotewotICAgIEpTR2xvYmFsT2JqZWN0KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4ob2JqZWN0KTsKLSAgICBQcm9wZXJ0eVNs
b3Qgc2xvdDsKLSAgICBpZiAoIXRoaXNPYmplY3QtPnN5bWJvbFRhYmxlR2V0KHByb3BlcnR5TmFt
ZSwgc2xvdCkpCi0gICAgICAgIEpTVmFyaWFibGVPYmplY3Q6OmRlZmluZVNldHRlcih0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNldHRlckZ1bmMsIGF0dHJpYnV0ZXMpOwotfQogCiBz
dGF0aWMgaW5saW5lIEpTT2JqZWN0KiBsYXN0SW5Qcm90b3R5cGVDaGFpbihKU09iamVjdCogb2Jq
ZWN0KQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCShyZXZpc2lvbiAxMDYyODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsNiArMjA2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQg
ZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRlZmluZVNldHRlcihKU09iamVj
dCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3Qq
IHNldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9v
bCBzaG91bGRUaHJvdyk7CiAKICAgICAgICAgLy8gV2UgdXNlIHRoaXMgaW4gdGhlIGNvZGUgZ2Vu
ZXJhdG9yIGFzIHdlIHBlcmZvcm0gc3ltYm9sIHRhYmxlCiAgICAgICAgIC8vIGxvb2t1cHMgcHJp
b3IgdG8gaW5pdGlhbGl6aW5nIHRoZSBwcm9wZXJ0aWVzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAxMDYyODYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
MSwxMDYgKzM2MSw2IEBAIGNvbnN0IEhhc2hFbnRyeSogSlNPYmplY3Q6OmZpbmRQcm9wZXJ0eUgK
ICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBKU09iamVjdDo6ZGVmaW5lR2V0dGVyKEpTT2JqZWN0
KiB0aGlzT2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQotewot
ICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQ
cm90bykgewotICAgICAgICAvLyBEZWZpbmluZyBhIGdldHRlciBmb3IgX19wcm90b19fIGlzIHNp
bGVudGx5IGlnbm9yZWQuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBKU1ZhbHVlIG9i
amVjdCA9IHRoaXNPYmplY3QtPmdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5
TmFtZSk7Ci0gICAgaWYgKG9iamVjdCAmJiBvYmplY3QuaXNHZXR0ZXJTZXR0ZXIoKSkgewotICAg
ICAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3Bl
cnRpZXMoKSk7Ci0gICAgICAgIGFzR2V0dGVyU2V0dGVyKG9iamVjdCktPnNldEdldHRlcihleGVj
LT5nbG9iYWxEYXRhKCksIGdldHRlckZ1bmN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKLSAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9
IEdldHRlclNldHRlcjo6Y3JlYXRlKGV4ZWMpOwotICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdElu
dGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1l
LCBnZXR0ZXJTZXR0ZXIsIGF0dHJpYnV0ZXMgfCBBY2Nlc3Nvciwgc2xvdCwgMCk7Ci0KLSAgICAv
LyBwdXREaXJlY3Qgd2lsbCBjaGFuZ2Ugb3VyIFN0cnVjdHVyZSBpZiB3ZSBhZGQgYSBuZXcgcHJv
cGVydHkuIEZvcgotICAgIC8vIGdldHRlcnMgYW5kIHNldHRlcnMsIHRob3VnaCwgd2UgYWxzbyBu
ZWVkIHRvIGNoYW5nZSBvdXIgU3RydWN0dXJlCi0gICAgLy8gaWYgd2Ugb3ZlcnJpZGUgYW4gZXhp
c3Rpbmcgbm9uLWdldHRlciBvciBub24tc2V0dGVyLgotICAgIGlmIChzbG90LnR5cGUoKSAhPSBQ
dXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KQotICAgICAgICB0aGlzT2JqZWN0LT5zZXRTdHJ1
Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYW5z
aXRpb24oZ2xvYmFsRGF0YSwgdGhpc09iamVjdC0+c3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlcyB8IEFjY2Vzc29yKSk7Ci0KLSAgICB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
c2V0SGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyh0cnVlKTsKLSAgICBnZXR0ZXJTZXR0ZXItPnNl
dEdldHRlcihnbG9iYWxEYXRhLCBnZXR0ZXJGdW5jdGlvbik7Ci19Ci0KLXZvaWQgSlNPYmplY3Q6
OmluaXRpYWxpemVHZXR0ZXJTZXR0ZXJQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpCi17Ci0gICAgLy8gU2V0IGFuIGluaXRhbCBwcm9wZXJ0eSBvbiBhbiBv
YmplY3Q7IHRoZSBwcm9wZXJ0eSBtdXN0IG5vdCBhbHJlYWR5IGV4aXN0ICYgdGhlIGF0dHJpYnV0
ZSBmbGFncyBtdXN0IGJlIHNldCBjb3JyZWN0bHkuCi0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5n
ZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpID09IFdURjo6bm90Rm91bmQpOwot
ICAgIEFTU0VSVChzdGF0aWNfY2FzdDxib29sPihhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKLQot
ICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKLSAgICBQ
dXRQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5l
T3duUHJvcGVydHk+KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgZ2V0dGVyU2V0dGVyLCBhdHRy
aWJ1dGVzLCBzbG90LCAwKTsKLQotICAgIC8vIHB1dERpcmVjdCB3aWxsIGNoYW5nZSBvdXIgU3Ry
dWN0dXJlIGlmIHdlIGFkZCBhIG5ldyBwcm9wZXJ0eS4gRm9yCi0gICAgLy8gZ2V0dGVycyBhbmQg
c2V0dGVycywgdGhvdWdoLCB3ZSBhbHNvIG5lZWQgdG8gY2hhbmdlIG91ciBTdHJ1Y3R1cmUKLSAg
ICAvLyBpZiB3ZSBvdmVycmlkZSBhbiBleGlzdGluZyBub24tZ2V0dGVyIG9yIG5vbi1zZXR0ZXIu
Ci0gICAgaWYgKHNsb3QudHlwZSgpICE9IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpCi0g
ICAgICAgIHNldFN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIFN0cnVjdHVyZTo6YXR0cmli
dXRlQ2hhbmdlVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1l
LCBhdHRyaWJ1dGVzKSk7Ci0KLSAgICBzdHJ1Y3R1cmUoKS0+c2V0SGFzR2V0dGVyU2V0dGVyUHJv
cGVydGllcyh0cnVlKTsKLX0KLQotdm9pZCBKU09iamVjdDo6ZGVmaW5lU2V0dGVyKEpTT2JqZWN0
KiB0aGlzT2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQotewot
ICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQ
cm90bykgewotICAgICAgICAvLyBEZWZpbmluZyBhIHNldHRlciBmb3IgX19wcm90b19fIGlzIHNp
bGVudGx5IGlnbm9yZWQuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBKU1ZhbHVlIG9i
amVjdCA9IHRoaXNPYmplY3QtPmdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5
TmFtZSk7Ci0gICAgaWYgKG9iamVjdCAmJiBvYmplY3QuaXNHZXR0ZXJTZXR0ZXIoKSkgewotICAg
ICAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3Bl
cnRpZXMoKSk7Ci0gICAgICAgIGFzR2V0dGVyU2V0dGVyKG9iamVjdCktPnNldFNldHRlcihleGVj
LT5nbG9iYWxEYXRhKCksIHNldHRlckZ1bmN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OwotICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0
dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUoZXhlYyk7Ci0gICAgdGhpc09iamVjdC0+cHV0RGly
ZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5PihleGVjLT5nbG9iYWxEYXRhKCks
IHByb3BlcnR5TmFtZSwgZ2V0dGVyU2V0dGVyLCBhdHRyaWJ1dGVzIHwgQWNjZXNzb3IsIHNsb3Qs
IDApOwotCi0gICAgLy8gcHV0RGlyZWN0IHdpbGwgY2hhbmdlIG91ciBTdHJ1Y3R1cmUgaWYgd2Ug
YWRkIGEgbmV3IHByb3BlcnR5LiBGb3IKLSAgICAvLyBnZXR0ZXJzIGFuZCBzZXR0ZXJzLCB0aG91
Z2gsIHdlIGFsc28gbmVlZCB0byBjaGFuZ2Ugb3VyIFN0cnVjdHVyZQotICAgIC8vIGlmIHdlIG92
ZXJyaWRlIGFuIGV4aXN0aW5nIG5vbi1nZXR0ZXIgb3Igbm9uLXNldHRlci4KLSAgICBpZiAoc2xv
dC50eXBlKCkgIT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkKLSAgICAgICAgdGhpc09i
amVjdC0+c2V0U3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgU3RydWN0dXJlOjphdHRyaWJ1
dGVDaGFuZ2VUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iamVjdC0+c3RydWN0
dXJlKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyB8IEFjY2Vzc29yKSk7Ci0KLSAgICB0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmUoKS0+c2V0SGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyh0cnVlKTsK
LSAgICBnZXR0ZXJTZXR0ZXItPnNldFNldHRlcihleGVjLT5nbG9iYWxEYXRhKCksIHNldHRlckZ1
bmN0aW9uKTsKLX0KLQotSlNWYWx1ZSBKU09iamVjdDo6bG9va3VwR2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQotewotICAgIFByb3BlcnR5RGVz
Y3JpcHRvciBkZXNjcmlwdG9yOwotICAgIGlmICghZ2V0UHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMs
IHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwotCi0gICAgaWYgKCFkZXNjcmlwdG9yLmdldHRlclByZXNlbnQoKSkKLSAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7Ci0KLSAgICByZXR1cm4gZGVzY3JpcHRvci5nZXR0ZXIoKTsKLX0KLQot
SlNWYWx1ZSBKU09iamVjdDo6bG9va3VwU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKQotewotICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlw
dG9yOwotICAgIGlmICghZ2V0UHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvcikpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgaWYgKCFk
ZXNjcmlwdG9yLnNldHRlclByZXNlbnQoKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
Ci0gICAgCi0gICAgcmV0dXJuIGRlc2NyaXB0b3Iuc2V0dGVyKCk7Ci19Ci0KIGJvb2wgSlNPYmpl
Y3Q6Omhhc0luc3RhbmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVl
LCBKU1ZhbHVlIHByb3RvKQogewogICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTA2Mjg2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMTkyLDEzICsxOTIsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBwdXRE
aXJlY3RPZmZzZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBzaXplX3Qgb2Zmc2V0LCBKU1Zh
bHVlIHZhbHVlKSB7IHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0uc2V0KGdsb2JhbERhdGEsIHRo
aXMsIHZhbHVlKTsgfQogICAgICAgICB2b2lkIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KHNp
emVfdCBvZmZzZXQpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5zZXRVbmRlZmluZWQoKTsg
fQogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmlsbEdldHRlclByb3BlcnR5U2xv
dChQcm9wZXJ0eVNsb3QmLCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbik7Ci0g
ICAgICAgIHZvaWQgaW5pdGlhbGl6ZUdldHRlclNldHRlclByb3BlcnR5KEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBHZXR0ZXJTZXR0ZXIqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLQot
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkZWZpbmVHZXR0ZXIoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0
KiBnZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOwotICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkZWZpbmVTZXR0ZXIoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBzZXR0ZXJGdW5j
dGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU1ZhbHVlIGxvb2t1cEdldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGxvb2t1cFNldHRl
cihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICAgICAgYm9vbCBpc0dsb2JhbE9iamVj
dCgpIGNvbnN0OwpAQCAtMjk1LDYgKzI4OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBi
b29sIHB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0ciwgUHV0UHJvcGVydHlTbG90JiwgSlND
ZWxsKik7CiAKICAgICAgICAgYm9vbCBpbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaWxsR2V0dGVyUHJvcGVydHlTbG90KFByb3BlcnR5
U2xvdCYsIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uKTsKIAogICAgICAgICBj
b25zdCBIYXNoRW50cnkqIGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgICAgICBTdHJ1Y3R1cmUqIGNyZWF0
ZUluaGVyaXRvcklEKEpTR2xvYmFsRGF0YSYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxMDYyODYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDYsMTAgKzE0NiwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdFByb3RvCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCisgICAgSlNWYWx1ZSBnZXQg
PSBleGVjLT5hcmd1bWVudCgxKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBpZiAoZ2V0
Q2FsbERhdGEoZXhlYy0+YXJndW1lbnQoMSksIGNhbGxEYXRhKSA9PSBDYWxsVHlwZU5vbmUpCisg
ICAgaWYgKGdldENhbGxEYXRhKGdldCwgY2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiaW52
YWxpZCBnZXR0ZXIgdXNhZ2UiKSk7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVm
aW5lR2V0dGVyKHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1l
bnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwgYXNPYmplY3QoZXhlYy0+YXJndW1l
bnQoMSkpLCAwKTsKKworICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOworICAgIGRl
c2NyaXB0b3Iuc2V0R2V0dGVyKGdldCk7CisgICAgZGVzY3JpcHRvci5zZXRFbnVtZXJhYmxlKHRy
dWUpOworICAgIGRlc2NyaXB0b3Iuc2V0Q29uZmlndXJhYmxlKHRydWUpOworICAgIHRoaXNPYmpl
Y3QtPm1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIElk
ZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpKSwgZGVzY3JpcHRvciwgZmFsc2UpOworCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtMTU5LDEwICsxNjYsMTcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAorICAgIEpT
VmFsdWUgc2V0ID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0g
ICAgaWYgKGdldENhbGxEYXRhKGV4ZWMtPmFyZ3VtZW50KDEpLCBjYWxsRGF0YSkgPT0gQ2FsbFR5
cGVOb25lKQorICAgIGlmIChnZXRDYWxsRGF0YShzZXQsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZU5v
bmUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3Io
ZXhlYywgImludmFsaWQgc2V0dGVyIHVzYWdlIikpOwotICAgIHRoaXNPYmplY3QtPm1ldGhvZFRh
YmxlKCktPmRlZmluZVNldHRlcih0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIGV4
ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIGFzT2JqZWN0KGV4
ZWMtPmFyZ3VtZW50KDEpKSwgMCk7CisKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRv
cjsKKyAgICBkZXNjcmlwdG9yLnNldFNldHRlcihzZXQpOworICAgIGRlc2NyaXB0b3Iuc2V0RW51
bWVyYWJsZSh0cnVlKTsKKyAgICBkZXNjcmlwdG9yLnNldENvbmZpZ3VyYWJsZSh0cnVlKTsKKyAg
ICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0
LCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSksIGRlc2NyaXB0b3IsIGZhbHNlKTsKKwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTE3Miw3ICsxODYsMTIgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+bG9va3VwR2V0dGVyKGV4
ZWMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpKSkpOworICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOworICAgIGlm
ICh0aGlzT2JqZWN0LT5nZXRQcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgSWRlbnRpZmllcihleGVj
LCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpLCBkZXNjcmlw
dG9yKQorICAgICAgICAmJiBkZXNjcmlwdG9yLmdldHRlclByZXNlbnQoKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShkZXNjcmlwdG9yLmdldHRlcigpKTsKKworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKQEAg
LTE4MSw3ICsyMDAsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90
bwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhp
c09iamVjdC0+bG9va3VwU2V0dGVyKGV4ZWMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1l
bnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSkpOworICAgIFByb3BlcnR5RGVzY3Jp
cHRvciBkZXNjcmlwdG9yOworICAgIGlmICh0aGlzT2JqZWN0LT5nZXRQcm9wZXJ0eURlc2NyaXB0
b3IoZXhlYywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYykpLCBkZXNjcmlwdG9yKQorICAgICAgICAmJiBkZXNjcmlwdG9yLnNldHRl
clByZXNlbnQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShkZXNjcmlwdG9yLnNl
dHRlcigpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJ
c0VudW1lcmFibGUoRXhlY1N0YXRlKiBleGVjKQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2
MzY4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjggQEAKKzIwMTItMDEtMzEgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBw
bGUuY29tPgorCisgICAgICAgIFJlbW92ZSBKU09iamVjdCBkZWZpbmVHZXR0ZXIvZGVmaW5lU2V0
dGVyIGxvb2t1cEdldHRlci9sb29rdXBTZXR0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NDUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdl
aW5pZy4KKworICAgICAgICBUaGVzZSBjYW4gbm93IGFsbCBiZSBpbXBsZW1lbnRlZCBpbiB0ZXJt
cyBvZiBkZWZpbmVPd25Qcm9wZXJ0eSAmIGdldFByb3BlcnR5RGVzY3JpcHRvci4KKyAgICAgICAg
QWxzbyByZW1vdmUgaW5pdGlhbGl6ZUdldHRlclNldHRlclByb3BlcnR5LCBzaW5jZSB0aGlzIGlz
IGVxdWl2YWxlbnQgdG8gcHV0RGlyZWN0QWNjZXNzb3IuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NV2luZG93OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmg6CisgICAgICAgIChKU0RPTVdpbmRvd1No
ZWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTTG9jYXRpb25Qcm90b3R5cGU6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRl
SGVhZGVyKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICogcGFnZS9M
b2NhdGlvbi5pZGw6CisKIDIwMTItMDEtMzEgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJk
QG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBpbmNsdWRlIGNsZWFudXAuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCShyZXZpc2lvbiAxMDYyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4OCwzNSArMzg4LDE3IEBAIHZv
aWQgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5TmFtZXMoSlMKICAgICBCYXNlOjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQog
Ci12b2lkIEpTRE9NV2luZG93OjpkZWZpbmVHZXR0ZXIoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0
ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcykKLXsKLSAgICBKU0RPTVdpbmRvdyogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCk7Ci0gICAgLy8gT25seSBhbGxv
dyBkZWZpbmluZyBnZXR0ZXJzIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAgaWYg
KCF0aGlzT2JqZWN0LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICAvLyBEb24ndCBhbGxvdyBzaGFkb3dpbmcgbG9jYXRpb24gdXNpbmcgZGVmaW5lR2V0dGVy
LgotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gImxvY2F0aW9uIikKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgQmFzZTo6ZGVmaW5lR2V0dGVyKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
Z2V0dGVyRnVuY3Rpb24sIGF0dHJpYnV0ZXMpOwotfQotCi12b2lkIEpTRE9NV2luZG93OjpkZWZp
bmVTZXR0ZXIoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBzZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0
cmlidXRlcykKLXsKLSAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdp
bmRvdyo+KG9iamVjdCk7Ci0gICAgLy8gT25seSBhbGxvdyBkZWZpbmluZyBzZXR0ZXJzIGJ5IGZy
YW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAgaWYgKCF0aGlzT2JqZWN0LT5hbGxvd3NBY2Nl
c3NGcm9tKGV4ZWMpKQotICAgICAgICByZXR1cm47Ci0gICAgQmFzZTo6ZGVmaW5lU2V0dGVyKHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2V0dGVyRnVuY3Rpb24sIGF0dHJpYnV0ZXMp
OwotfQotCiBib29sIEpTRE9NV2luZG93OjpkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0
KiBvYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hv
dWxkVGhyb3cpCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01X
aW5kb3cqPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVmaW5pbmcgcHJvcGVydGllcyBp
biB0aGlzIHdheSBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLCBhcyBpdCBhbGxvd3Mgc2V0
dGVycyB0byBiZSBpbnRyb2R1Y2VkLgogICAgIGlmICghdGhpc09iamVjdC0+YWxsb3dzQWNjZXNz
RnJvbShleGVjKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRG9uJ3QgYWxsb3cg
c2hhZG93aW5nIGxvY2F0aW9uIHVzaW5nIGFjY2Vzc29yIHByb3BlcnRpZXMuCisgICAgaWYgKGRl
c2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiBwcm9wZXJ0eU5hbWUgPT0gImxvY2F0
aW9uIikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93
blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hv
dWxkVGhyb3cpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd1NoZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd1NoZWxsLmNwcAkocmV2aXNpb24gMTA2Mjg2KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSwx
OCArMTM5LDYgQEAgdm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpnZXRPd25Qcm9wZXJ0eU5hbQogICAg
IHRoaXNPYmplY3QtPndpbmRvdygpLT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVz
KHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAot
dm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpkZWZpbmVHZXR0ZXIoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBn
ZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcykKLXsKLSAgICBKU0RPTVdpbmRvd1No
ZWxsKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93U2hlbGwqPihvYmplY3QpOwotICAg
IHRoaXNPYmplY3QtPndpbmRvdygpLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVHZXR0ZXIodGhpc09i
amVjdC0+d2luZG93KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rpb24sIGF0dHJp
YnV0ZXMpOwotfQotCi12b2lkIEpTRE9NV2luZG93U2hlbGw6OmRlZmluZVNldHRlcihKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNPYmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQotewotICAg
IEpTRE9NV2luZG93U2hlbGwqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+
KG9iamVjdCk7Ci0gICAgdGhpc09iamVjdC0+d2luZG93KCktPm1ldGhvZFRhYmxlKCktPmRlZmlu
ZVNldHRlcih0aGlzT2JqZWN0LT53aW5kb3coKSwgZXhlYywgcHJvcGVydHlOYW1lLCBzZXR0ZXJG
dW5jdGlvbiwgYXR0cmlidXRlcyk7Ci19Ci0KIAogLy8gLS0tLQogLy8gSlNET01XaW5kb3cgbWV0
aG9kcwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hl
bGwuaAkocmV2aXNpb24gMTA2Mjg2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dTaGVsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw4ICs4Niw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0Nl
bGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0
KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJh
dGlvbk1vZGUpOwogICAgICAgICBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTQzo6SlNP
YmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVu
dW1lcmF0aW9uTW9kZSk7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGRlZmluZUdldHRlcihKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNDOjpKU09iamVjdCogZ2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
OwotICAgICAgICBzdGF0aWMgdm9pZCBkZWZpbmVTZXR0ZXIoSlNDOjpKU09iamVjdCosIEpTQzo6
RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNP
YmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgc3Rh
dGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNj
cmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICAgICAgUmVmUHRyPERPTVdyYXBwZXJX
b3JsZD4gbV93b3JsZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRp
b25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiAxMDYyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDEx
ICsxNzAsMTEgQEAgdm9pZCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTTwogICAg
IEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
cywgbW9kZSk7CiB9CiAKLXZvaWQgSlNMb2NhdGlvbjo6ZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U09iamVjdCogZ2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTTG9j
YXRpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcgfHwgcHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mKQotICAgICAgICByZXR1cm47Ci0gICAgQmFzZTo6ZGVm
aW5lR2V0dGVyKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdGlvbiwgYXR0
cmlidXRlcyk7CisgICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiAo
cHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZyB8fCBwcm9wZXJ0
eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnZhbHVlT2YpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7CiB9CiAKIHZvaWQgSlNM
b2NhdGlvbjo6c2V0SHJlZihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCkBAIC0yODEs
MTEgKzI4MSwxMSBAQCBib29sIEpTTG9jYXRpb25Qcm90b3R5cGU6OnB1dERlbGVnYXRlKEV4CiAg
ICAgcmV0dXJuIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5n
IHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZik7CiB9CiAK
LXZvaWQgSlNMb2NhdGlvblByb3RvdHlwZTo6ZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVj
dCogZ2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTTG9jYXRpb25Q
cm90b3R5cGU6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7Ci0gICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcgfHwgcHJvcGVydHlOYW1lID09IGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mKQotICAgICAgICByZXR1cm47Ci0gICAgQmFzZTo6
ZGVmaW5lR2V0dGVyKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdGlvbiwg
YXR0cmlidXRlcyk7CisgICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAm
JiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZyB8fCBwcm9w
ZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnZhbHVlT2YpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAxMDYyODYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5
KQpAQCAtODI4LDIwICs4MjgsMTQgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICRzdHJ1
Y3R1cmVGbGFnc3siSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIn0gPSAxOwogICAgIH0K
IAotICAgICMgQ3VzdG9tIGRlZmluZVByb3BlcnR5IGZ1bmN0aW9uIGV4aXN0cyBvbiBET01XaW5k
b3cKLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGRlZmluZU93blBy
b3BlcnR5KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxk
VGhyb3cpO1xuIikgaWYgJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyI7Ci0KICAgICAjIEN1
c3RvbSBnZXRPd25Qcm9wZXJ0eU5hbWVzIGZ1bmN0aW9uCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldFByb3BlcnR5TmFtZXMifSB8fCAkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNJbmRleEdldHRlciJ9IHx8ICRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0N1c3RvbUluZGV4R2V0dGVyIn0gfHwgJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzTnVtZXJpY0luZGV4R2V0dGVyIn0pIHsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkm
LCBKU0M6OkVudW1lcmF0aW9uTW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKTtcbiIpOwogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0UHJv
cGVydHlOYW1lcyJ9ID0gMTsgICAgICAgCiAgICAgfQogCi0gICAgIyBDdXN0b20gZGVmaW5lR2V0
dGVyIGZ1bmN0aW9uCi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBk
ZWZpbmVHZXR0ZXIoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNPYmplY3QqIGdldHRlckZ1bmN0aW9uLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkN1c3RvbURlZmluZUdldHRlciJ9OwotCi0gICAgIyBDdXN0b20gZGVmaW5lU2V0dGVyIGZ1
bmN0aW9uCi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBkZWZpbmVT
ZXR0ZXIoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNPYmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1
c3RvbURlZmluZVNldHRlciJ9OworICAgICMgQ3VzdG9tIGRlZmluZU93blByb3BlcnR5IGZ1bmN0
aW9uCisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Q
cm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3Vs
ZFRocm93KTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbURl
ZmluZU93blByb3BlcnR5In07CiAKICAgICAjIE92ZXJyaWRlIHRvQm9vbGVhbiB0byByZXR1cm4g
ZmFsc2UgZm9yIG9iamVjdHMgdGhhdCB3YW50IHRvICdNYXNxdWVyYWRlc0FzVW5kZWZpbmVkJy4K
ICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCJ9KSB7CkBAIC0xMDYzLDggKzEwNTcsOCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFBy
b3BlcnR5U2xvdCYpO1xuIik7CiAgICAgfQogCi0gICAgIyBDdXN0b20gZGVmaW5lR2V0dGVyIGZ1
bmN0aW9uCi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBkZWZpbmVH
ZXR0ZXIoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNPYmplY3QqIGdldHRlckZ1bmN0aW9uLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1
c3RvbVByb3RvdHlwZURlZmluZUdldHRlciJ9OworICAgICMgQ3VzdG9tIGRlZmluZU93blByb3Bl
cnR5IGZ1bmN0aW9uCisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBk
ZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBK
U0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImLCBi
b29sIHNob3VsZFRocm93KTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkN1c3RvbVByb3RvdHlwZURlZmluZU93blByb3BlcnR5In07CiAKICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiXG5wcml2YXRlOlxuIik7CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAk
e2NsYXNzTmFtZX1Qcm90b3R5cGUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKSA6IEpTQzo6SlNOb25G
aW5hbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpIHsgfVxuIik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiAxMDYyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDcgQEAgbW9kdWxl
IHdpbmRvdyB7CiAKICAgICBpbnRlcmZhY2UgWwogICAgICAgICBDaGVja0RvbWFpblNlY3VyaXR5
LAotICAgICAgICBDdXN0b21EZWZpbmVHZXR0ZXIsCi0gICAgICAgIEN1c3RvbURlZmluZVNldHRl
ciwKKyAgICAgICAgQ3VzdG9tRGVmaW5lT3duUHJvcGVydHksCiAgICAgICAgIEN1c3RvbURlbGV0
ZVByb3BlcnR5LAogICAgICAgICBDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QsCiAgICAgICAgIEN1
c3RvbUdldFByb3BlcnR5TmFtZXMsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9u
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAkocmV2
aXNpb24gMTA2Mjg2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDkgKzM3LDkgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIEdlbmVy
YXRlSXNSZWFjaGFibGU9SW1wbEZyYW1lLAogICAgICAgICBDdXN0b21EZWxldGVQcm9wZXJ0eSwK
ICAgICAgICAgQ3VzdG9tR2V0UHJvcGVydHlOYW1lcywKLSAgICAgICAgQ3VzdG9tRGVmaW5lR2V0
dGVyLAorICAgICAgICBDdXN0b21EZWZpbmVPd25Qcm9wZXJ0eSwKICAgICAgICAgRGVsZWdhdGlu
Z1Byb3RvdHlwZVB1dEZ1bmN0aW9uLAotICAgICAgICBDdXN0b21Qcm90b3R5cGVEZWZpbmVHZXR0
ZXIsCisgICAgICAgIEN1c3RvbVByb3RvdHlwZURlZmluZU93blByb3BlcnR5LAogICAgICAgICBP
bWl0Q29uc3RydWN0b3IKICAgICBdIExvY2F0aW9uIHsKICNpZiAhZGVmaW5lZChMQU5HVUFHRV9D
UFApIHx8ICFMQU5HVUFHRV9DUFAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDY0MTMp
CisrKyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDEyIEBACisyMDEyLTAxLTMxICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxl
LmNvbT4KKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9P
UFMhKQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
QXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjphZGRRdFNlbmRl
clRvR2xvYmFsT2JqZWN0KToKKwogMjAxMi0wMS0zMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgVHJ5IHRvIGZpeCBRdCBidWlsZC4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9x
dC9BcGkvcXdlYmZyYW1lLmNwcAkocmV2aXNpb24gMTA2Mjg2KQorKysgU291cmNlL1dlYktpdC9x
dC9BcGkvcXdlYmZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE4LDggKzUxOCwxMiBAQCB2
b2lkIFFXZWJGcmFtZVByaXZhdGU6OmFkZFF0U2VuZGVyVG9HbG9iCiAgICAgSlNPYmplY3RSZWYg
ZnVuY3Rpb24gPSBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayhjb250ZXh0LCBwcm9w
ZXJ0eU5hbWUuZ2V0KCksIHF0U2VuZGVyQ2FsbGJhY2spOwogCiAgICAgLy8gSlNDIHB1YmxpYyBB
UEkgZG9lc24ndCBzdXBwb3J0IHNldHRpbmcgYSBHZXR0ZXIgZm9yIGEgcHJvcGVydHkgb2YgYSBn
aXZlbiBvYmplY3QsIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTM3
NC4KLSAgICB3aW5kb3ctPm1ldGhvZFRhYmxlKCktPmRlZmluZUdldHRlcih3aW5kb3csIGV4ZWMs
IHByb3BlcnR5TmFtZS5nZXQoKS0+aWRlbnRpZmllcigmZXhlYy0+Z2xvYmFsRGF0YSgpKSwgOjp0
b0pTKGZ1bmN0aW9uKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBKU0M6OlJlYWRPbmx5IHwg
SlNDOjpEb250RW51bSB8IEpTQzo6RG9udERlbGV0ZSk7CisgICAgUHJvcGVydHlEZXNjcmlwdG9y
IGRlc2NyaXB0b3I7CisgICAgZGVzY3JpcHRvci5zZXRHZXR0ZXIoOjp0b0pTKGZ1bmN0aW9uKSk7
CisgICAgZGVzY3JpcHRvci5zZXRTZXR0ZXIoanNVbmRlZmluZWQoKSk7CisgICAgZGVzY3JpcHRv
ci5zZXRFbnVtZXJhYmxlKGZhbHNlKTsKKyAgICBkZXNjcmlwdG9yLnNldENvbmZpZ3VyYWJsZShm
YWxzZSk7CisgICAgd2luZG93LT5tZXRob2RUYWJsZSgpLT5kZWZpbmVPd25Qcm9wZXJ0eSh3aW5k
b3csIGV4ZWMsIHByb3BlcnR5TmFtZS5nZXQoKS0+aWRlbnRpZmllcigmZXhlYy0+Z2xvYmFsRGF0
YSgpKSwgZGVzY3JpcHRvciwgZmFsc2UpOwogfQogI2VuZGlmCiAK
</data>
<flag name="commit-queue"
          id="126261"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125039</attachid>
            <date>2012-02-01 16:23:02 -0800</date>
            <delta_ts>2012-02-04 18:27:32 -0800</delta_ts>
            <desc>More build fixes</desc>
            <filename>77451.5.patch</filename>
            <type>text/plain</type>
            <size>43219</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2NTEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDEyLTAyLTAxICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW1vdmUgSlNPYmplY3QgZGVmaW5lR2V0dGVyL2RlZmluZVNldHRlciBsb29r
dXBHZXR0ZXIvbG9va3VwU2V0dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NzQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisK
KyAgICAgICAgVGhlc2UgY2FuIG5vdyBhbGwgYmUgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgZGVm
aW5lT3duUHJvcGVydHkgJiBnZXRQcm9wZXJ0eURlc2NyaXB0b3IuCisgICAgICAgIEFsc28gcmVt
b3ZlIGluaXRpYWxpemVHZXR0ZXJTZXR0ZXJQcm9wZXJ0eSwgc2luY2UgdGhpcyBpcyBlcXVpdmFs
ZW50IHRvIHB1dERpcmVjdEFjY2Vzc29yLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhw
OgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChK
U0M6OkRlYnVnZ2VyQWN0aXZhdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIGRl
YnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oOgorICAgICAgICAoRGVidWdnZXJBY3RpdmF0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgorICAgICAgICAoTWV0aG9kVGFibGUp
OgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6
CisgICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGlt
ZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQ2VsbCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToK
KyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBy
dW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAgICogcnVudGlt
ZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZp
bmVHZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIpOgor
ICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIpOgorICAgICAgICAoSlND
OjpvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIpOgorCiAyMDEyLTAyLTAxICBHYXZpbiBCYXJy
YWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBjYWxsaW5nIGZ1bmN0
aW9uIG9uIGNhdGNoIGJsb2NrIHNjb3BlIGNvbnRhaW5pbmcgYW4gZXZhbCByZXN1bHQgaW4gd3Jv
bmcgdGhpcyB2YWx1ZSBiZWluZyBwYXNzZWQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmV4cAkocmV2aXNpb24gMTA2NTExKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDEyICsxNjgsMTEg
QEAgX19aTjNKU0MxM1NhbXBsaW5nRmxhZ3M3c19mbGFnc0UKIF9fWk4zSlNDMTNTdGF0ZW1lbnRO
b2RlNnNldExvY0VpaQogX19aTjNKU0MxNEV4ZWN1dGFibGVCYXNlNnNfaW5mb0UKIF9fWk4zSlND
MTRKU0dsb2JhbE9iamVjdDEwZ2xvYmFsRXhlY0V2Ci1fX1pOM0pTQzE0SlNHbG9iYWxPYmplY3Qx
MmRlZmluZUdldHRlckVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlm
aWVyRVMyX2oKLV9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDEyZGVmaW5lU2V0dGVyRVBOU184SlNP
YmplY3RFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUzJfagogX19aTjNKU0MxNEpT
R2xvYmFsT2JqZWN0MTNjbGVhclJhcmVEYXRhRVBOU182SlNDZWxsRQogX19aTjNKU0MxNEpTR2xv
YmFsT2JqZWN0MTN2aXNpdENoaWxkcmVuRVBOU182SlNDZWxsRVJOU18xMVNsb3RWaXNpdG9yRQog
X19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTZhZGRTdGF0aWNHbG9iYWxzRVBOUzBfMThHbG9iYWxQ
cm9wZXJ0eUluZm9FaQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTZwdXREaXJlY3RWaXJ0dWFs
RVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFs
dWVFagorX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTdkZWZpbmVPd25Qcm9wZXJ0eUVQTlNfOEpT
T2JqZWN0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18xOFByb3BlcnR5RGVz
Y3JpcHRvckViCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxOGdldE93blByb3BlcnR5U2xvdEVQ
TlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMTJQcm9wZXJ0
eVNsb3RFCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QyNGdldE93blByb3BlcnR5RGVzY3JpcHRv
ckVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18xOFBy
b3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDI1c19nbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZUUKQEAgLTMxNSwxMCArMzE0LDYgQEAgX19aTjNKU0M4RGVidWdnZXJEMkV2
CiBfX1pOM0pTQzhKU09iamVjdDEwcHV0QnlJbmRleEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0
ZUVqTlNfN0pTVmFsdWVFCiBfX1pOM0pTQzhKU09iamVjdDExaGFzSW5zdGFuY2VFUFMwX1BOU185
RXhlY1N0YXRlRU5TXzdKU1ZhbHVlRVM0XwogX19aTjNKU0M4SlNPYmplY3QxMmRlZmF1bHRWYWx1
ZUVQS1MwX1BOU185RXhlY1N0YXRlRU5TXzIyUHJlZmVycmVkUHJpbWl0aXZlVHlwZUUKLV9fWk4z
SlNDOEpTT2JqZWN0MTJkZWZpbmVHZXR0ZXJFUFMwX1BOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVu
dGlmaWVyRVMxX2oKLV9fWk4zSlNDOEpTT2JqZWN0MTJkZWZpbmVTZXR0ZXJFUFMwX1BOU185RXhl
Y1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVMxX2oKLV9fWk4zSlNDOEpTT2JqZWN0MTJsb29rdXBH
ZXR0ZXJFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCi1fX1pOM0pTQzhKU09iamVj
dDEybG9va3VwU2V0dGVyRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNK
U0M4SlNPYmplY3QxMnRvVGhpc09iamVjdEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUUKIF9f
Wk4zSlNDOEpTT2JqZWN0MTN2aXNpdENoaWxkcmVuRVBOU182SlNDZWxsRVJOU18xMVNsb3RWaXNp
dG9yRQogX19aTjNKU0M4SlNPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU182SlNDZWxsRVBOU185
RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHJldmlzaW9uIDEwNjUxMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZGVmCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsMTEgKzEzNSw3IEBA
IEVYUE9SVFMKICAgICA/ZGVjcmVtZW50QFJlZkNvdW50ZWRMZWFrQ291bnRlckBXVEZAQFFBRVhY
WgogICAgID9kZWZhdWx0QXR0cmlidXRlc0BQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEAwSUEKICAg
ICA/ZGVmYXVsdFZhbHVlQEpTT2JqZWN0QEpTQ0BAU0E/QVZKU1ZhbHVlQDJAUEJWMTJAUEFWRXhl
Y1N0YXRlQDJAVzRQcmVmZXJyZWRQcmltaXRpdmVUeXBlQDJAQFoKLSAgICA/ZGVmaW5lR2V0dGVy
QEpTR2xvYmFsT2JqZWN0QEpTQ0BAU0FYUEFWSlNPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBBQlZJ
ZGVudGlmaWVyQDJAMElAWgotICAgID9kZWZpbmVHZXR0ZXJASlNPYmplY3RASlNDQEBTQVhQQVYx
MkBQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAMElAWgogICAgID9kZWZpbmVPd25Qcm9w
ZXJ0eUBKU09iamVjdEBKU0NAQFNBX05QQVYxMkBQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVy
QDJAQUFWUHJvcGVydHlEZXNjcmlwdG9yQDJAX05AWgotICAgID9kZWZpbmVTZXR0ZXJASlNHbG9i
YWxPYmplY3RASlNDQEBTQVhQQVZKU09iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZp
ZXJAMkAwSUBaCi0gICAgP2RlZmluZVNldHRlckBKU09iamVjdEBKU0NAQFNBWFBBVjEyQFBBVkV4
ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkAwSUBaCiAgICAgP2RlbGV0ZU93bmVkUHRyQFdURkBA
WUFYUEFVSEJJVE1BUF9fQEBAWgogICAgID9kZWxldGVPd25lZFB0ckBXVEZAQFlBWFBBVUhCUlVT
SF9fQEBAWgogICAgID9kZWxldGVPd25lZFB0ckBXVEZAQFlBWFBBVUhEQ19fQEBAWgpAQCAtMTc4
LDcgKzE3NCw3IEBAIEVYUE9SVFMKICAgICA/ZmFzdFJlYWxsb2NAV1RGQEBZQVBBWFBBWElAWgog
ICAgID9mYXN0U3RyRHVwQFdURkBAWUFQQURQQkRAWgogICAgID9mYXN0WmVyb2VkTWFsbG9jQFdU
RkBAWUFQQVhJQFoKLSAgICA/ZmlsbEdldHRlclByb3BlcnR5U2xvdEBKU09iamVjdEBKU0NAQFFB
RVhBQVZQcm9wZXJ0eVNsb3RAMkBQQVY/JFdyaXRlQmFycmllckJhc2VAVzRVbmtub3duQEpTQ0BA
QDJAQFoKKyAgICA/ZmlsbEdldHRlclByb3BlcnR5U2xvdEBKU09iamVjdEBKU0NAQEFBRVhBQVZQ
cm9wZXJ0eVNsb3RAMkBQQVY/JFdyaXRlQmFycmllckJhc2VAVzRVbmtub3duQEpTQ0BAQDJAQFoK
ICAgICA/ZmluYWxpemVAV2Vha0hhbmRsZU93bmVyQEpTQ0BAVUFFWFY/JEhhbmRsZUBXNFVua25v
d25ASlNDQEBAMkBQQVhAWgogICAgID9maW5pc2hDcmVhdGlvbkBEYXRlSW5zdGFuY2VASlNDQEBJ
QUVYQUFWSlNHbG9iYWxEYXRhQDJATkBaCiAgICAgP2ZpbmlzaENyZWF0aW9uQEludGVybmFsRnVu
Y3Rpb25ASlNDQEBJQUVYQUFWSlNHbG9iYWxEYXRhQDJAQUJWSWRlbnRpZmllckAyQEBaCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3Rp
dmF0aW9uLmNwcAkocmV2aXNpb24gMTA2NTExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSwxNiAr
MTAxLDEwIEBAIGJvb2wgRGVidWdnZXJBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eUQKICAgICBy
ZXR1cm4gdGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IodGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLmdldCgpLCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCi12b2lkIERlYnVnZ2VyQWN0aXZhdGlvbjo6ZGVm
aW5lR2V0dGVyKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpCitib29sIERlYnVnZ2VyQWN0aXZhdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykK
IHsKICAgICBEZWJ1Z2dlckFjdGl2YXRpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8RGVidWdnZXJB
Y3RpdmF0aW9uKj4ob2JqZWN0KTsKLSAgICB0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhv
ZFRhYmxlKCktPmRlZmluZUdldHRlcih0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24uZ2V0KCksIGV4
ZWMsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rpb24sIGF0dHJpYnV0ZXMpOwotfQotCi12b2lk
IERlYnVnZ2VyQWN0aXZhdGlvbjo6ZGVmaW5lU2V0dGVyKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0
dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCi17Ci0gICAgRGVidWdnZXJBY3RpdmF0
aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PERlYnVnZ2VyQWN0aXZhdGlvbio+KG9iamVjdCk7Ci0g
ICAgdGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVTZXR0ZXIo
dGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNldHRl
ckZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+bV9hY3RpdmF0
aW9uLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LT5tX2FjdGl2
YXRpb24uZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDEwNjUxMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtNDksOCArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVy
dHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlKTsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOwotICAgICAgICBzdGF0aWMgdm9pZCBkZWZpbmVHZXR0ZXIoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0ZXJG
dW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGRlZmlu
ZVNldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAg
ICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJv
b2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAgIEpTX0VYUE9SVERBVEEgc3RhdGljIGNvbnN0IENs
YXNzSW5mbyBzX2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Ns
YXNzSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Ns
YXNzSW5mby5oCShyZXZpc2lvbiAxMDY1MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DbGFzc0luZm8uaAkod29ya2luZyBjb3B5KQpAQCAtNjYsMTIgKzY2LDYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgSlNPYmplY3QqICgqVG9UaGlzT2JqZWN0RnVuY3Rp
b25QdHIpKEpTQ2VsbCosIEV4ZWNTdGF0ZSopOwogICAgICAgICBUb1RoaXNPYmplY3RGdW5jdGlv
blB0ciB0b1RoaXNPYmplY3Q7CiAKLSAgICAgICAgdHlwZWRlZiB2b2lkICgqRGVmaW5lR2V0dGVy
RnVuY3Rpb25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpT
T2JqZWN0KiwgdW5zaWduZWQpOwotICAgICAgICBEZWZpbmVHZXR0ZXJGdW5jdGlvblB0ciBkZWZp
bmVHZXR0ZXI7Ci0KLSAgICAgICAgdHlwZWRlZiB2b2lkICgqRGVmaW5lU2V0dGVyRnVuY3Rpb25Q
dHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTT2JqZWN0Kiwg
dW5zaWduZWQpOwotICAgICAgICBEZWZpbmVTZXR0ZXJGdW5jdGlvblB0ciBkZWZpbmVTZXR0ZXI7
Ci0KICAgICAgICAgdHlwZWRlZiBKU1ZhbHVlICgqRGVmYXVsdFZhbHVlRnVuY3Rpb25QdHIpKGNv
bnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAgICAg
ICAgIERlZmF1bHRWYWx1ZUZ1bmN0aW9uUHRyIGRlZmF1bHRWYWx1ZTsKIApAQCAtMTI4LDggKzEy
Miw2IEBAIHN0cnVjdCBNZW1iZXJDaGVjayMjbWVtYmVyIHsgXAogICAgICAgICAmQ2xhc3NOYW1l
OjpnZXRPd25Qcm9wZXJ0eVNsb3QsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleCwgXAogICAgICAgICAmQ2xhc3NOYW1lOjp0b1RoaXNPYmplY3QsIFwKLSAg
ICAgICAgJkNsYXNzTmFtZTo6ZGVmaW5lR2V0dGVyLCBcCi0gICAgICAgICZDbGFzc05hbWU6OmRl
ZmluZVNldHRlciwgXAogICAgICAgICAmQ2xhc3NOYW1lOjpkZWZhdWx0VmFsdWUsIFwKICAgICAg
ICAgJkNsYXNzTmFtZTo6Z2V0T3duUHJvcGVydHlOYW1lcywgXAogICAgICAgICAmQ2xhc3NOYW1l
OjpnZXRQcm9wZXJ0eU5hbWVzLCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0JvdW5kRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDEwNjUxMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU0Jv
dW5kRnVuY3Rpb24uaCIKIAorI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTExLDggKzExMiw4IEBAIHZv
aWQgSlNCb3VuZEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihFeGUKICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbihleGVjLCBleGVjdXRhYmxlLCBsZW5ndGgsIG5hbWUpOwogICAgIEFTU0VSVChpbmhl
cml0cygmc19pbmZvKSk7CiAKLSAgICBpbml0aWFsaXplR2V0dGVyU2V0dGVyUHJvcGVydHkoZXhl
YywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cywgZ2xvYmFsT2JqZWN0KCktPnRocm93
VHlwZUVycm9yR2V0dGVyU2V0dGVyKGV4ZWMpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBBY2Nl
c3Nvcik7Ci0gICAgaW5pdGlhbGl6ZUdldHRlclNldHRlclByb3BlcnR5KGV4ZWMsIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5jYWxsZXIsIGdsb2JhbE9iamVjdCgpLT50aHJvd1R5cGVFcnJvckdldHRl
clNldHRlcihleGVjKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgQWNjZXNzb3IpOworICAgIHB1
dERpcmVjdEFjY2Vzc29yKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LmFyZ3VtZW50cywgZ2xvYmFsT2JqZWN0KCktPnRocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKGV4
ZWMpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBBY2Nlc3Nvcik7CisgICAgcHV0RGlyZWN0QWNj
ZXNzb3IoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVyLCBn
bG9iYWxPYmplY3QoKS0+dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoZXhlYyksIERvbnREZWxl
dGUgfCBEb250RW51bSB8IEFjY2Vzc29yKTsKIH0KIAogdm9pZCBKU0JvdW5kRnVuY3Rpb246OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkocmV2aXNpb24gMTA2NTExKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTU4LDE2ICsxNTgsNiBAQCB2b2lkIHNsb3dWYWxpZGF0ZUNlbGwoSlNDZWxsKiBjZWxs
KQogICAgIEFTU0VSVF9HQ19PQkpFQ1RfTE9PS1NfVkFMSUQoY2VsbCk7CiB9CiAKLXZvaWQgSlND
ZWxsOjpkZWZpbmVHZXR0ZXIoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiwgSlNPYmplY3QqLCB1bnNpZ25lZCkKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0K
LQotdm9pZCBKU0NlbGw6OmRlZmluZVNldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBKU09iamVjdCosIHVuc2lnbmVkKQotewotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotfQotCiBKU1ZhbHVlIEpTQ2VsbDo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkKIHsKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShy
ZXZpc2lvbiAxMDY1MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDggKzE1Miw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAKICAgICAgICAg
Ly8gRHVtbXkgaW1wbGVtZW50YXRpb25zIG9mIG92ZXJyaWRlLWFibGUgc3RhdGljIGZ1bmN0aW9u
cyBmb3IgY2xhc3NlcyB0byBwdXQgaW4gdGhlaXIgTWV0aG9kVGFibGUKLSAgICAgICAgc3RhdGlj
IE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTT2JqZWN0KiwgdW5zaWduZWQpOwotICAgICAg
ICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBkZWZpbmVTZXR0ZXIoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0
KiBzZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOwogICAgICAgICBzdGF0
aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVm
ZXJyZWRQcmltaXRpdmVUeXBlKTsKICAgICAgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQVNT
RVJUIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICAgICAgc3RhdGljIE5PX1JFVFVS
Tl9EVUVfVE9fQVNTRVJUIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAxMDY1MTEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1
ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgor
I2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKQEAgLTIxOSw3
ICsyMjAsNyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU0NlCiAgICAg
ICAgIGlmICh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpIHsKICAg
ICAgICAgICAgIGJvb2wgcmVzdWx0ID0gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkg
ewotICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPmluaXRpYWxpemVHZXR0ZXJTZXR0ZXJQcm9w
ZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT50aHJv
d1R5cGVFcnJvckdldHRlclNldHRlcihleGVjKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgQWNj
ZXNzb3IpOworICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdEFjY2Vzc29yKGV4
ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3Qo
KS0+dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoZXhlYyksIERvbnREZWxldGUgfCBEb250RW51
bSB8IEFjY2Vzc29yKTsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBCYXNlOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAg
ICAgICAgICBBU1NFUlQocmVzdWx0KTsKICAgICAgICAgICAgIH0KQEAgLTIzOCw3ICsyMzksNyBA
QCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU0NlCiAgICAgICAgIGlmICh0
aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpIHsKICAgICAgICAgICAg
IGJvb2wgcmVzdWx0ID0gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAg
ICAgICAgICAgIHRoaXNPYmplY3QtPmluaXRpYWxpemVHZXR0ZXJTZXR0ZXJQcm9wZXJ0eShleGVj
LCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT50aHJvd1R5cGVFcnJv
ckdldHRlclNldHRlcihleGVjKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgQWNjZXNzb3IpOwor
ICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdEFjY2Vzc29yKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+dGhyb3dU
eXBlRXJyb3JHZXR0ZXJTZXR0ZXIoZXhlYyksIERvbnREZWxldGUgfCBEb250RW51bSB8IEFjY2Vz
c29yKTsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgICAgICAgICBB
U1NFUlQocmVzdWx0KTsKICAgICAgICAgICAgIH0KQEAgLTI2Nyw3ICsyNjgsNyBAQCBib29sIEpT
RnVuY3Rpb246OmdldE93blByb3BlcnR5RGVzY3JpcHRvCiAgICAgICAgIGlmICh0aGlzT2JqZWN0
LT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpIHsKICAgICAgICAgICAgIGJvb2wgcmVz
dWx0ID0gQmFzZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewotICAg
ICAgICAgICAgICAgIHRoaXNPYmplY3QtPmluaXRpYWxpemVHZXR0ZXJTZXR0ZXJQcm9wZXJ0eShl
eGVjLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT50aHJvd1R5cGVF
cnJvckdldHRlclNldHRlcihleGVjKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgQWNjZXNzb3Ip
OworICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdEFjY2Vzc29yKGV4ZWMtPmds
b2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+dGhy
b3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoZXhlYyksIERvbnREZWxldGUgfCBEb250RW51bSB8IEFj
Y2Vzc29yKTsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBCYXNlOjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKICAg
ICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0KTsKICAgICAgICAgICAgIH0KQEAgLTI4Niw3ICsy
ODcsNyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5RGVzY3JpcHRvCiAgICAgICAg
IGlmICh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpIHsKICAgICAg
ICAgICAgIGJvb2wgcmVzdWx0ID0gQmFzZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiAgICAgICAgICAgICBpZiAo
IXJlc3VsdCkgewotICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPmluaXRpYWxpemVHZXR0ZXJT
ZXR0ZXJQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVj
dCgpLT50aHJvd1R5cGVFcnJvckdldHRlclNldHRlcihleGVjKSwgRG9udERlbGV0ZSB8IERvbnRF
bnVtIHwgQWNjZXNzb3IpOworICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdEFj
Y2Vzc29yKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0LT5nbG9i
YWxPYmplY3QoKS0+dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoZXhlYyksIERvbnREZWxldGUg
fCBEb250RW51bSB8IEFjY2Vzc29yKTsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBCYXNlOjpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0KTsKICAgICAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAJKHJldmlzaW9uIDEwNjUxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDIxICsxNzEsMTYg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cHV0RGlyZWN0VmlydHVhbChKUwogICAgIH0KIH0KIAot
dm9pZCBKU0dsb2JhbE9iamVjdDo6ZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0
dGVyRnVuYywgdW5zaWduZWQgYXR0cmlidXRlcykKK2Jvb2wgSlNHbG9iYWxPYmplY3Q6OmRlZmlu
ZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJv
b2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNHbG9iYWxPYmplY3QqPihvYmplY3QpOwogICAgIFByb3BlcnR5U2xvdCBzbG90OwotICAg
IGlmICghdGhpc09iamVjdC0+c3ltYm9sVGFibGVHZXQocHJvcGVydHlOYW1lLCBzbG90KSkKLSAg
ICAgICAgSlNWYXJpYWJsZU9iamVjdDo6ZGVmaW5lR2V0dGVyKHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgZ2V0dGVyRnVuYywgYXR0cmlidXRlcyk7CisgICAgLy8gc2lsZW50bHkgaWdu
b3JlIGF0dGVtcHRzIHRvIGFkZCBhY2Nlc3NvcnMgYWxpYXNpbmcgdmFycy4KKyAgICBpZiAoZGVz
Y3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpICYmIHRoaXNPYmplY3QtPnN5bWJvbFRhYmxl
R2V0KHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
LCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CiAKLXZvaWQgSlNHbG9iYWxPYmplY3Q6OmRl
ZmluZVNldHRlcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpCi17Ci0gICAgSlNHbG9iYWxPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHbG9i
YWxPYmplY3QqPihvYmplY3QpOwotICAgIFByb3BlcnR5U2xvdCBzbG90OwotICAgIGlmICghdGhp
c09iamVjdC0+c3ltYm9sVGFibGVHZXQocHJvcGVydHlOYW1lLCBzbG90KSkKLSAgICAgICAgSlNW
YXJpYWJsZU9iamVjdDo6ZGVmaW5lU2V0dGVyKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgc2V0dGVyRnVuYywgYXR0cmlidXRlcyk7Ci19CiAKIHN0YXRpYyBpbmxpbmUgSlNPYmplY3Qq
IGxhc3RJblByb3RvdHlwZUNoYWluKEpTT2JqZWN0KiBvYmplY3QpCiB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDEw
NjUxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIwNiw2ICsyMDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkZWZpbmVHZXR0ZXIoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBn
ZXR0ZXJGdW5jLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQgZGVmaW5lU2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVyRnVuYywgdW5zaWduZWQg
YXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmlu
ZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIAogICAg
ICAgICAvLyBXZSB1c2UgdGhpcyBpbiB0aGUgY29kZSBnZW5lcmF0b3IgYXMgd2UgcGVyZm9ybSBz
eW1ib2wgdGFibGUKICAgICAgICAgLy8gbG9va3VwcyBwcmlvciB0byBpbml0aWFsaXppbmcgdGhl
IHByb3BlcnRpZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAJKHJldmlzaW9uIDEwNjUxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYxLDEwNiArMzYxLDYgQEAgY29uc3Qg
SGFzaEVudHJ5KiBKU09iamVjdDo6ZmluZFByb3BlcnR5SAogICAgIHJldHVybiAwOwogfQogCi12
b2lkIEpTT2JqZWN0OjpkZWZpbmVHZXR0ZXIoSlNPYmplY3QqIHRoaXNPYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVy
RnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCi17Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKSB7Ci0gICAgICAgIC8vIERl
ZmluaW5nIGEgZ2V0dGVyIGZvciBfX3Byb3RvX18gaXMgc2lsZW50bHkgaWdub3JlZC4KLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIEpTVmFsdWUgb2JqZWN0ID0gdGhpc09iamVjdC0+Z2V0
RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsKLSAgICBpZiAob2JqZWN0
ICYmIG9iamVjdC5pc0dldHRlclNldHRlcigpKSB7Ci0gICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0
LT5zdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsKLSAgICAgICAgYXNH
ZXR0ZXJTZXR0ZXIob2JqZWN0KS0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2V0dGVy
RnVuY3Rpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90
OwotICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUo
ZXhlYyk7Ci0gICAgdGhpc09iamVjdC0+cHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93
blByb3BlcnR5PihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGdldHRlclNldHRlciwgYXR0cmli
dXRlcyB8IEFjY2Vzc29yLCBzbG90LCAwKTsKLQotICAgIC8vIHB1dERpcmVjdCB3aWxsIGNoYW5n
ZSBvdXIgU3RydWN0dXJlIGlmIHdlIGFkZCBhIG5ldyBwcm9wZXJ0eS4gRm9yCi0gICAgLy8gZ2V0
dGVycyBhbmQgc2V0dGVycywgdGhvdWdoLCB3ZSBhbHNvIG5lZWQgdG8gY2hhbmdlIG91ciBTdHJ1
Y3R1cmUKLSAgICAvLyBpZiB3ZSBvdmVycmlkZSBhbiBleGlzdGluZyBub24tZ2V0dGVyIG9yIG5v
bi1zZXR0ZXIuCi0gICAgaWYgKHNsb3QudHlwZSgpICE9IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJv
cGVydHkpCi0gICAgICAgIHRoaXNPYmplY3QtPnNldFN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRh
KCksIFN0cnVjdHVyZTo6YXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbihnbG9iYWxEYXRhLCB0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzIHwgQWNjZXNzb3Ip
KTsKLQotICAgIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5zZXRIYXNHZXR0ZXJTZXR0ZXJQcm9w
ZXJ0aWVzKHRydWUpOwotICAgIGdldHRlclNldHRlci0+c2V0R2V0dGVyKGdsb2JhbERhdGEsIGdl
dHRlckZ1bmN0aW9uKTsKLX0KLQotdm9pZCBKU09iamVjdDo6aW5pdGlhbGl6ZUdldHRlclNldHRl
clByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciwgdW5zaWduZWQgYXR0cmlidXRlcykKLXsKLSAg
ICAvLyBTZXQgYW4gaW5pdGFsIHByb3BlcnR5IG9uIGFuIG9iamVjdDsgdGhlIHByb3BlcnR5IG11
c3Qgbm90IGFscmVhZHkgZXhpc3QgJiB0aGUgYXR0cmlidXRlIGZsYWdzIG11c3QgYmUgc2V0IGNv
cnJlY3RseS4KLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRhKCks
IHByb3BlcnR5TmFtZSkgPT0gV1RGOjpub3RGb3VuZCk7Ci0gICAgQVNTRVJUKHN0YXRpY19jYXN0
PGJvb2w+KGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwotCi0gICAgSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90Owot
ICAgIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4oZ2xvYmFsRGF0
YSwgcHJvcGVydHlOYW1lLCBnZXR0ZXJTZXR0ZXIsIGF0dHJpYnV0ZXMsIHNsb3QsIDApOwotCi0g
ICAgLy8gcHV0RGlyZWN0IHdpbGwgY2hhbmdlIG91ciBTdHJ1Y3R1cmUgaWYgd2UgYWRkIGEgbmV3
IHByb3BlcnR5LiBGb3IKLSAgICAvLyBnZXR0ZXJzIGFuZCBzZXR0ZXJzLCB0aG91Z2gsIHdlIGFs
c28gbmVlZCB0byBjaGFuZ2Ugb3VyIFN0cnVjdHVyZQotICAgIC8vIGlmIHdlIG92ZXJyaWRlIGFu
IGV4aXN0aW5nIG5vbi1nZXR0ZXIgb3Igbm9uLXNldHRlci4KLSAgICBpZiAoc2xvdC50eXBlKCkg
IT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkKLSAgICAgICAgc2V0U3RydWN0dXJlKGV4
ZWMtPmdsb2JhbERhdGEoKSwgU3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKGds
b2JhbERhdGEsIHN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpKTsKLQotICAg
IHN0cnVjdHVyZSgpLT5zZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHRydWUpOwotfQotCi12
b2lkIEpTT2JqZWN0OjpkZWZpbmVTZXR0ZXIoSlNPYmplY3QqIHRoaXNPYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVy
RnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCi17Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKSB7Ci0gICAgICAgIC8vIERl
ZmluaW5nIGEgc2V0dGVyIGZvciBfX3Byb3RvX18gaXMgc2lsZW50bHkgaWdub3JlZC4KLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIEpTVmFsdWUgb2JqZWN0ID0gdGhpc09iamVjdC0+Z2V0
RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsKLSAgICBpZiAob2JqZWN0
ICYmIG9iamVjdC5pc0dldHRlclNldHRlcigpKSB7Ci0gICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0
LT5zdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsKLSAgICAgICAgYXNH
ZXR0ZXJTZXR0ZXIob2JqZWN0KS0+c2V0U2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgc2V0dGVy
RnVuY3Rpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUHV0UHJvcGVydHlTbG90
IHNsb3Q7Ci0gICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNy
ZWF0ZShleGVjKTsKLSAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVm
aW5lT3duUHJvcGVydHk+KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCBnZXR0ZXJT
ZXR0ZXIsIGF0dHJpYnV0ZXMgfCBBY2Nlc3Nvciwgc2xvdCwgMCk7Ci0KLSAgICAvLyBwdXREaXJl
Y3Qgd2lsbCBjaGFuZ2Ugb3VyIFN0cnVjdHVyZSBpZiB3ZSBhZGQgYSBuZXcgcHJvcGVydHkuIEZv
cgotICAgIC8vIGdldHRlcnMgYW5kIHNldHRlcnMsIHRob3VnaCwgd2UgYWxzbyBuZWVkIHRvIGNo
YW5nZSBvdXIgU3RydWN0dXJlCi0gICAgLy8gaWYgd2Ugb3ZlcnJpZGUgYW4gZXhpc3Rpbmcgbm9u
LWdldHRlciBvciBub24tc2V0dGVyLgotICAgIGlmIChzbG90LnR5cGUoKSAhPSBQdXRQcm9wZXJ0
eVNsb3Q6Ok5ld1Byb3BlcnR5KQotICAgICAgICB0aGlzT2JqZWN0LT5zZXRTdHJ1Y3R1cmUoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzIHwgQWNjZXNzb3IpKTsKLQotICAgIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5z
ZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHRydWUpOwotICAgIGdldHRlclNldHRlci0+c2V0
U2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgc2V0dGVyRnVuY3Rpb24pOwotfQotCi1KU1ZhbHVl
IEpTT2JqZWN0Ojpsb29rdXBHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCi17Ci0gICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7Ci0g
ICAgaWYgKCFnZXRQcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlw
dG9yKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBpZiAoIWRlc2NyaXB0
b3IuZ2V0dGVyUHJlc2VudCgpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAg
IHJldHVybiBkZXNjcmlwdG9yLmdldHRlcigpOwotfQotCi1KU1ZhbHVlIEpTT2JqZWN0Ojpsb29r
dXBTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
Ci17Ci0gICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7Ci0gICAgaWYgKCFnZXRQcm9w
ZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKSkKLSAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBpZiAoIWRlc2NyaXB0b3Iuc2V0dGVyUHJlc2Vu
dCgpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAKLSAgICByZXR1cm4gZGVz
Y3JpcHRvci5zZXR0ZXIoKTsKLX0KLQogYm9vbCBKU09iamVjdDo6aGFzSW5zdGFuY2UoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG8pCiB7CiAg
ICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMDY1MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsMTMgKzE5Miw2IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHB1dERpcmVjdE9mZnNldChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIHNpemVfdCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgcHJvcGVydHlT
dG9yYWdlKClbb2Zmc2V0XS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOyB9CiAgICAgICAg
IHZvaWQgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNldCkgeyBwcm9wZXJ0
eVN0b3JhZ2UoKVtvZmZzZXRdLnNldFVuZGVmaW5lZCgpOyB9CiAKLSAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBmaWxsR2V0dGVyUHJvcGVydHlTbG90KFByb3BlcnR5U2xvdCYsIFdyaXRl
QmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uKTsKLSAgICAgICAgdm9pZCBpbml0aWFsaXpl
R2V0dGVyU2V0dGVyUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEdldHRl
clNldHRlciosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotCi0gICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyB2b2lkIGRlZmluZUdldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmN0aW9uLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzID0gMCk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2
b2lkIGRlZmluZVNldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzID0gMCk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgbG9va3VwR2V0dGVy
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgbG9va3VwU2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRo
cm93KTsKIAogICAgICAgICBib29sIGlzR2xvYmFsT2JqZWN0KCkgY29uc3Q7CkBAIC0yOTYsNiAr
Mjg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgcHV0RGlyZWN0SW50ZXJuYWwo
SlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1
bnNpZ25lZCBhdHRyLCBQdXRQcm9wZXJ0eVNsb3QmLCBKU0NlbGwqKTsKIAogICAgICAgICBib29s
IGlubGluZUdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3QoUHJvcGVydHlTbG90JiwgV3JpdGVCYXJyaWVyQmFz
ZTxVbmtub3duPiogbG9jYXRpb24pOwogCiAgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZmluZFBy
b3BlcnR5SGFzaEVudHJ5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSkgY29uc3Q7CiAgICAgICAgIFN0cnVjdHVyZSogY3JlYXRlSW5oZXJpdG9ySUQoSlNHbG9iYWxE
YXRhJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDEwNjUxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NiwxMCAr
MTQ2LDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG8KICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAKKyAgICBKU1ZhbHVlIGdldCA9IGV4ZWMtPmFyZ3VtZW50KDEpOwog
ICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIGlmIChnZXRDYWxsRGF0YShleGVjLT5hcmd1bWVu
dCgxKSwgY2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkKKyAgICBpZiAoZ2V0Q2FsbERhdGEoZ2V0
LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGVOb25lKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJpbnZhbGlkIGdldHRlciB1c2FnZSIpKTsK
LSAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWZpbmVHZXR0ZXIodGhpc09iamVjdCwg
ZXhlYywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYykpLCBhc09iamVjdChleGVjLT5hcmd1bWVudCgxKSksIDApOworCisgICAgUHJv
cGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CisgICAgZGVzY3JpcHRvci5zZXRHZXR0ZXIoZ2V0
KTsKKyAgICBkZXNjcmlwdG9yLnNldEVudW1lcmFibGUodHJ1ZSk7CisgICAgZGVzY3JpcHRvci5z
ZXRDb25maWd1cmFibGUodHJ1ZSk7CisgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVm
aW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcihleGVjLCBleGVjLT5h
cmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpLCBkZXNjcmlwdG9yLCBmYWxz
ZSk7CisKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBA
IC0xNTksMTAgKzE2NiwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFBy
b3RvCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCisgICAgSlNWYWx1ZSBzZXQgPSBleGVjLT5hcmd1
bWVudCgxKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBpZiAoZ2V0Q2FsbERhdGEoZXhl
Yy0+YXJndW1lbnQoMSksIGNhbGxEYXRhKSA9PSBDYWxsVHlwZU5vbmUpCisgICAgaWYgKGdldENh
bGxEYXRhKHNldCwgY2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiaW52YWxpZCBzZXR0ZXIg
dXNhZ2UiKSk7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lU2V0dGVyKHRo
aXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMSkpLCAwKTsK
KworICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOworICAgIGRlc2NyaXB0b3Iuc2V0
U2V0dGVyKHNldCk7CisgICAgZGVzY3JpcHRvci5zZXRFbnVtZXJhYmxlKHRydWUpOworICAgIGRl
c2NyaXB0b3Iuc2V0Q29uZmlndXJhYmxlKHRydWUpOworICAgIHRoaXNPYmplY3QtPm1ldGhvZFRh
YmxlKCktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXIoZXhl
YywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwgZGVzY3Jp
cHRvciwgZmFsc2UpOworCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIApAQCAtMTcyLDcgKzE4NiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdFByb3RvCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aGlzT2JqZWN0LT5sb29rdXBHZXR0ZXIoZXhlYywgSWRlbnRpZmllcihleGVjLCBl
eGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKSk7CisgICAgUHJv
cGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CisgICAgaWYgKHRoaXNPYmplY3QtPmdldFByb3Bl
cnR5RGVzY3JpcHRvcihleGVjLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIGRlc2NyaXB0b3IpCisgICAgICAgICYmIGRlc2Ny
aXB0b3IuZ2V0dGVyUHJlc2VudCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRl
c2NyaXB0b3IuZ2V0dGVyKCkpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1
bmNMb29rdXBTZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQpAQCAtMTgxLDcgKzIwMCwxMiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvCiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0LT5sb29rdXBTZXR0ZXIo
ZXhlYywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYykpKSk7CisgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CisgICAg
aWYgKHRoaXNPYmplY3QtPmdldFByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBJZGVudGlmaWVyKGV4
ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIGRlc2Ny
aXB0b3IpCisgICAgICAgICYmIGRlc2NyaXB0b3Iuc2V0dGVyUHJlc2VudCgpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRlc2NyaXB0b3Iuc2V0dGVyKCkpOworCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZShFeGVjU3RhdGUq
IGV4ZWMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDY0OTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAxMi0wMi0wMSAg
R2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZlIEpTT2JqZWN0IGRlZmluZUdldHRlci9kZWZpbmVTZXR0ZXIgbG9va3VwR2V0dGVyL2xvb2t1
cFNldHRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Nzc0NTEKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgIFRoZXNl
IGNhbiBub3cgYWxsIGJlIGltcGxlbWVudGVkIGluIHRlcm1zIG9mIGRlZmluZU93blByb3BlcnR5
ICYgZ2V0UHJvcGVydHlEZXNjcmlwdG9yLgorICAgICAgICBBbHNvIHJlbW92ZSBpbml0aWFsaXpl
R2V0dGVyU2V0dGVyUHJvcGVydHksIHNpbmNlIHRoaXMgaXMgZXF1aXZhbGVudCB0byBwdXREaXJl
Y3RBY2Nlc3Nvci4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmRl
ZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93U2hlbGwuaDoKKyAgICAgICAgKEpTRE9NV2luZG93U2hlbGwpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlv
bjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvblByb3Rv
dHlwZTo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAqIHBh
Z2UvRE9NV2luZG93LmlkbDoKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmlkbDoKKwogMjAxMi0w
Mi0wMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBHY2MgYnVp
bGQgZml4IGFmdGVyIHIxMDY0ODIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiAxMDY0OTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM4OCwzNSArMzg4LDE3IEBAIHZvaWQgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5TmFt
ZXMoSlMKICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi12b2lkIEpTRE9NV2luZG93OjpkZWZpbmVHZXR0ZXIo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcykK
LXsKLSAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9i
amVjdCk7Ci0gICAgLy8gT25seSBhbGxvdyBkZWZpbmluZyBnZXR0ZXJzIGJ5IGZyYW1lcyBpbiB0
aGUgc2FtZSBvcmlnaW4uCi0gICAgaWYgKCF0aGlzT2JqZWN0LT5hbGxvd3NBY2Nlc3NGcm9tKGV4
ZWMpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBEb24ndCBhbGxvdyBzaGFkb3dpbmcgbG9j
YXRpb24gdXNpbmcgZGVmaW5lR2V0dGVyLgotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gImxvY2F0
aW9uIikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQmFzZTo6ZGVmaW5lR2V0dGVyKHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rpb24sIGF0dHJpYnV0ZXMpOwotfQot
Ci12b2lkIEpTRE9NV2luZG93OjpkZWZpbmVTZXR0ZXIoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBzZXR0
ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcykKLXsKLSAgICBKU0RPTVdpbmRvdyogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCk7Ci0gICAgLy8gT25seSBhbGxv
dyBkZWZpbmluZyBzZXR0ZXJzIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAgaWYg
KCF0aGlzT2JqZWN0LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQotICAgICAgICByZXR1cm47Ci0g
ICAgQmFzZTo6ZGVmaW5lU2V0dGVyKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2V0
dGVyRnVuY3Rpb24sIGF0dHJpYnV0ZXMpOwotfQotCiBib29sIEpTRE9NV2luZG93OjpkZWZpbmVP
d25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiBvYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBj
b25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgSlNET01XaW5kb3cqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxs
b3cgZGVmaW5pbmcgcHJvcGVydGllcyBpbiB0aGlzIHdheSBieSBmcmFtZXMgaW4gdGhlIHNhbWUg
b3JpZ2luLCBhcyBpdCBhbGxvd3Mgc2V0dGVycyB0byBiZSBpbnRyb2R1Y2VkLgogICAgIGlmICgh
dGhpc09iamVjdC0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgLy8gRG9uJ3QgYWxsb3cgc2hhZG93aW5nIGxvY2F0aW9uIHVzaW5nIGFjY2Vzc29y
IHByb3BlcnRpZXMuCisgICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAm
JiBwcm9wZXJ0eU5hbWUgPT0gImxvY2F0aW9uIikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAg
ICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAkocmV2aXNpb24gMTA2
NDk3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzOSwxOCArMTM5LDYgQEAgdm9pZCBKU0RPTVdpbmRvd1NoZWxs
OjpnZXRPd25Qcm9wZXJ0eU5hbQogICAgIHRoaXNPYmplY3QtPndpbmRvdygpLT5tZXRob2RUYWJs
ZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBwcm9w
ZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotdm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpkZWZpbmVHZXR0
ZXIoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRl
cykKLXsKLSAgICBKU0RPTVdpbmRvd1NoZWxsKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2lu
ZG93U2hlbGwqPihvYmplY3QpOwotICAgIHRoaXNPYmplY3QtPndpbmRvdygpLT5tZXRob2RUYWJs
ZSgpLT5kZWZpbmVHZXR0ZXIodGhpc09iamVjdC0+d2luZG93KCksIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgZ2V0dGVyRnVuY3Rpb24sIGF0dHJpYnV0ZXMpOwotfQotCi12b2lkIEpTRE9NV2luZG93U2hl
bGw6OmRlZmluZVNldHRlcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzKQotewotICAgIEpTRE9NV2luZG93U2hlbGwqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+KG9iamVjdCk7Ci0gICAgdGhpc09iamVjdC0+d2luZG93
KCktPm1ldGhvZFRhYmxlKCktPmRlZmluZVNldHRlcih0aGlzT2JqZWN0LT53aW5kb3coKSwgZXhl
YywgcHJvcGVydHlOYW1lLCBzZXR0ZXJGdW5jdGlvbiwgYXR0cmlidXRlcyk7Ci19Ci0KIAogLy8g
LS0tLQogLy8gSlNET01XaW5kb3cgbWV0aG9kcwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dTaGVsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaAkocmV2aXNpb24gMTA2NDk3KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC04Niw4ICs4Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJv
cGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5
TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUpOwogICAgICAgICBzdGF0aWMgdm9pZCBn
ZXRQcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
cGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSk7Ci0gICAgICAgIHN0YXRpYyB2
b2lkIGRlZmluZUdldHRlcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBK
U0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpKU09iamVjdCogZ2V0dGVyRnVuY3Rp
b24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgICAgICBzdGF0aWMgdm9pZCBkZWZpbmVTZXR0
ZXIoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNPYmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKTsKICAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNDOjpK
U09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAg
ICAgICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gbV93b3JsZDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiAxMDY0
OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTcwLDExICsxNzAsMTEgQEAgdm9pZCBKU0xvY2F0aW9uOjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTTwogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLXZvaWQgSlNMb2NhdGlvbjo6
ZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpCitib29sIEpTTG9jYXRpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7
Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcg
fHwgcHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mKQotICAgICAg
ICByZXR1cm47Ci0gICAgQmFzZTo6ZGVmaW5lR2V0dGVyKG9iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lLCBnZXR0ZXJGdW5jdGlvbiwgYXR0cmlidXRlcyk7CisgICAgaWYgKGRlc2NyaXB0b3IuaXNB
Y2Nlc3NvckRlc2NyaXB0b3IoKSAmJiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS50b1N0cmluZyB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnZh
bHVlT2YpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93
blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4
Y2VwdGlvbik7CiB9CiAKIHZvaWQgSlNMb2NhdGlvbjo6c2V0SHJlZihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdmFsdWUpCkBAIC0yODEsMTEgKzI4MSwxMSBAQCBib29sIEpTTG9jYXRpb25Qcm90
b3R5cGU6OnB1dERlbGVnYXRlKEV4CiAgICAgcmV0dXJuIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+
cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkudmFsdWVPZik7CiB9CiAKLXZvaWQgSlNMb2NhdGlvblByb3RvdHlwZTo6ZGVmaW5l
R2V0dGVyKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpCitib29sIEpTTG9jYXRpb25Qcm90b3R5cGU6OmRlZmluZU93blByb3BlcnR5KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24p
CiB7Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJp
bmcgfHwgcHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mKQotICAg
ICAgICByZXR1cm47Ci0gICAgQmFzZTo6ZGVmaW5lR2V0dGVyKG9iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCBnZXR0ZXJGdW5jdGlvbiwgYXR0cmlidXRlcyk7CisgICAgaWYgKGRlc2NyaXB0b3Iu
aXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS50b1N0cmluZyB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygp
LnZhbHVlT2YpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIEJhc2U6OmRlZmlu
ZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJv
d0V4Y2VwdGlvbik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZp
c2lvbiAxMDY0OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtODI4LDIwICs4MjgsMTQgQEAgc3ViIEdlbmVy
YXRlSGVhZGVyCiAgICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpPdmVycmlkZXNHZXRQcm9w
ZXJ0eU5hbWVzIn0gPSAxOwogICAgIH0KIAotICAgICMgQ3VzdG9tIGRlZmluZVByb3BlcnR5IGZ1
bmN0aW9uIGV4aXN0cyBvbiBET01XaW5kb3cKLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNT
dGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpO1xuIikgaWYgJGludGVyZmFjZU5hbWUgZXEg
IkRPTVdpbmRvdyI7Ci0KICAgICAjIEN1c3RvbSBnZXRPd25Qcm9wZXJ0eU5hbWVzIGZ1bmN0aW9u
CiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldFByb3Bl
cnR5TmFtZXMifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNJbmRleEdl
dHRlciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0N1c3RvbUluZGV4
R2V0dGVyIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzTnVtZXJpY0lu
ZGV4R2V0dGVyIn0pIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMg
dm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSBtb2RlID0gSlND
OjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOwogICAgICAgICAkc3RydWN0dXJlRmxh
Z3N7IkpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyJ9ID0gMTsgICAgICAgCiAgICAgfQog
Ci0gICAgIyBDdXN0b20gZGVmaW5lR2V0dGVyIGZ1bmN0aW9uCi0gICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICBzdGF0aWMgdm9pZCBkZWZpbmVHZXR0ZXIoSlNDOjpKU09iamVjdCosIEpTQzo6
RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNP
YmplY3QqIGdldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTtcbiIpIGlmICRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbURlZmluZUdldHRlciJ9OwotCi0gICAg
IyBDdXN0b20gZGVmaW5lU2V0dGVyIGZ1bmN0aW9uCi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICBzdGF0aWMgdm9pZCBkZWZpbmVTZXR0ZXIoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0
YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNPYmplY3Qq
IHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTtcbiIpIGlmICRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbURlZmluZVNldHRlciJ9OworICAgICMgQ3VzdG9t
IGRlZmluZU93blByb3BlcnR5IGZ1bmN0aW9uCisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVj
U3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0
eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkN1c3RvbURlZmluZU93blByb3BlcnR5In07CiAKICAgICAjIE92ZXJy
aWRlIHRvQm9vbGVhbiB0byByZXR1cm4gZmFsc2UgZm9yIG9iamVjdHMgdGhhdCB3YW50IHRvICdN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkJy4KICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCJ9KSB7CkBAIC0xMDYzLDggKzEwNTcsOCBA
QCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBi
b29sIHB1dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwg
SlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpO1xuIik7CiAgICAgfQogCi0gICAg
IyBDdXN0b20gZGVmaW5lR2V0dGVyIGZ1bmN0aW9uCi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICBzdGF0aWMgdm9pZCBkZWZpbmVHZXR0ZXIoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0
YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNPYmplY3Qq
IGdldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTtcbiIpIGlmICRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVByb3RvdHlwZURlZmluZUdldHRlciJ9OworICAg
ICMgQ3VzdG9tIGRlZmluZU93blByb3BlcnR5IGZ1bmN0aW9uCisgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTtcbiIpIGlmICRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVByb3RvdHlwZURlZmluZU93blByb3BlcnR5
In07CiAKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG5wcml2YXRlOlxuIik7CiAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUoSlNDOjpKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlKSA6IEpTQzo6SlNOb25GaW5hbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUp
IHsgfVxuIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiAxMDY0
OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDggKzI4LDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAKICAgICBpbnRlcmZhY2UgWwogICAg
ICAgICBDaGVja0RvbWFpblNlY3VyaXR5LAotICAgICAgICBDdXN0b21EZWZpbmVHZXR0ZXIsCi0g
ICAgICAgIEN1c3RvbURlZmluZVNldHRlciwKKyAgICAgICAgQ3VzdG9tRGVmaW5lT3duUHJvcGVy
dHksCiAgICAgICAgIEN1c3RvbURlbGV0ZVByb3BlcnR5LAogICAgICAgICBDdXN0b21HZXRPd25Q
cm9wZXJ0eVNsb3QsCiAgICAgICAgIEN1c3RvbUdldFByb3BlcnR5TmFtZXMsCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0xvY2F0aW9uLmlkbAkocmV2aXNpb24gMTA2NDk3KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9Mb2NhdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM3LDkgKzM3LDkgQEAgbW9kdWxl
IHdpbmRvdyB7CiAgICAgICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbEZyYW1lLAogICAgICAg
ICBDdXN0b21EZWxldGVQcm9wZXJ0eSwKICAgICAgICAgQ3VzdG9tR2V0UHJvcGVydHlOYW1lcywK
LSAgICAgICAgQ3VzdG9tRGVmaW5lR2V0dGVyLAorICAgICAgICBDdXN0b21EZWZpbmVPd25Qcm9w
ZXJ0eSwKICAgICAgICAgRGVsZWdhdGluZ1Byb3RvdHlwZVB1dEZ1bmN0aW9uLAotICAgICAgICBD
dXN0b21Qcm90b3R5cGVEZWZpbmVHZXR0ZXIsCisgICAgICAgIEN1c3RvbVByb3RvdHlwZURlZmlu
ZU93blByb3BlcnR5LAogICAgICAgICBPbWl0Q29uc3RydWN0b3IKICAgICBdIExvY2F0aW9uIHsK
ICNpZiAhZGVmaW5lZChMQU5HVUFHRV9DUFApIHx8ICFMQU5HVUFHRV9DUFAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMDY0OTcpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEyLTAyLTAxICBHYXZpbiBCYXJyYWNs
b3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVz
Y3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2Vi
RnJhbWVQcml2YXRlOjphZGRRdFNlbmRlclRvR2xvYmFsT2JqZWN0KToKKwogMjAxMi0wMi0wMSAg
QWxleGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBD
U1NTdHlsZURlY2xhcmF0aW9uLmdldFByb3BlcnR5UHJpb3JpdHkoKSBmYWlscyBmb3IgQ1NTIHNo
b3J0aGFuZCBwcm9wZXJ0aWVzIHdpdGggJ2ltcG9ydGFudCcgcHJpb3JpdHkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9xdC9BcGkvcXdlYmZyYW1lLmNwcAkocmV2aXNpb24gMTA2NDk3KQorKysgU291cmNlL1dlYktp
dC9xdC9BcGkvcXdlYmZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQAog
I2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlByaW50Q29udGV4dC5o
IgogI2lmIFVTRShKU0MpCisjaW5jbHVkZSAiUHJvcGVydHlEZXNjcmlwdG9yLmgiCiAjaW5jbHVk
ZSAiUHV0UHJvcGVydHlTbG90LmgiCiAjZW5kaWYKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgpA
QCAtNTE4LDggKzUxOSwxMiBAQCB2b2lkIFFXZWJGcmFtZVByaXZhdGU6OmFkZFF0U2VuZGVyVG9H
bG9iCiAgICAgSlNPYmplY3RSZWYgZnVuY3Rpb24gPSBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhD
YWxsYmFjayhjb250ZXh0LCBwcm9wZXJ0eU5hbWUuZ2V0KCksIHF0U2VuZGVyQ2FsbGJhY2spOwog
CiAgICAgLy8gSlNDIHB1YmxpYyBBUEkgZG9lc24ndCBzdXBwb3J0IHNldHRpbmcgYSBHZXR0ZXIg
Zm9yIGEgcHJvcGVydHkgb2YgYSBnaXZlbiBvYmplY3QsIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MTM3NC4KLSAgICB3aW5kb3ctPm1ldGhvZFRhYmxlKCktPmRlZmlu
ZUdldHRlcih3aW5kb3csIGV4ZWMsIHByb3BlcnR5TmFtZS5nZXQoKS0+aWRlbnRpZmllcigmZXhl
Yy0+Z2xvYmFsRGF0YSgpKSwgOjp0b0pTKGZ1bmN0aW9uKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICBKU0M6OlJlYWRPbmx5IHwgSlNDOjpEb250RW51bSB8IEpTQzo6RG9udERlbGV0ZSk7Cisg
ICAgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKKyAgICBkZXNjcmlwdG9yLnNl
dEdldHRlcig6OnRvSlMoZnVuY3Rpb24pKTsKKyAgICBkZXNjcmlwdG9yLnNldFNldHRlcihKU0M6
OmpzVW5kZWZpbmVkKCkpOworICAgIGRlc2NyaXB0b3Iuc2V0RW51bWVyYWJsZShmYWxzZSk7Cisg
ICAgZGVzY3JpcHRvci5zZXRDb25maWd1cmFibGUoZmFsc2UpOworICAgIHdpbmRvdy0+bWV0aG9k
VGFibGUoKS0+ZGVmaW5lT3duUHJvcGVydHkod2luZG93LCBleGVjLCBwcm9wZXJ0eU5hbWUuZ2V0
KCktPmlkZW50aWZpZXIoJmV4ZWMtPmdsb2JhbERhdGEoKSksIGRlc2NyaXB0b3IsIGZhbHNlKTsK
IH0KICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125510</attachid>
            <date>2012-02-04 18:27:32 -0800</date>
            <delta_ts>2012-02-05 21:21:07 -0800</delta_ts>
            <desc>More win build fix</desc>
            <filename>77451.6.patch</filename>
            <type>text/plain</type>
            <size>43614</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2NTEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDEyLTAyLTAxICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW1vdmUgSlNPYmplY3QgZGVmaW5lR2V0dGVyL2RlZmluZVNldHRlciBsb29r
dXBHZXR0ZXIvbG9va3VwU2V0dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NzQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisK
KyAgICAgICAgVGhlc2UgY2FuIG5vdyBhbGwgYmUgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgZGVm
aW5lT3duUHJvcGVydHkgJiBnZXRQcm9wZXJ0eURlc2NyaXB0b3IuCisgICAgICAgIEFsc28gcmVt
b3ZlIGluaXRpYWxpemVHZXR0ZXJTZXR0ZXJQcm9wZXJ0eSwgc2luY2UgdGhpcyBpcyBlcXVpdmFs
ZW50IHRvIHB1dERpcmVjdEFjY2Vzc29yLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhw
OgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChK
U0M6OkRlYnVnZ2VyQWN0aXZhdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIGRl
YnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oOgorICAgICAgICAoRGVidWdnZXJBY3RpdmF0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgorICAgICAgICAoTWV0aG9kVGFibGUp
OgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6
CisgICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGlt
ZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQ2VsbCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToK
KyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBy
dW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAgICogcnVudGlt
ZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZp
bmVHZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIpOgor
ICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIpOgorICAgICAgICAoSlND
OjpvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIpOgorCiAyMDEyLTAyLTAxICBHYXZpbiBCYXJy
YWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBjYWxsaW5nIGZ1bmN0
aW9uIG9uIGNhdGNoIGJsb2NrIHNjb3BlIGNvbnRhaW5pbmcgYW4gZXZhbCByZXN1bHQgaW4gd3Jv
bmcgdGhpcyB2YWx1ZSBiZWluZyBwYXNzZWQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmV4cAkocmV2aXNpb24gMTA2NTExKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDEyICsxNjgsMTEg
QEAgX19aTjNKU0MxM1NhbXBsaW5nRmxhZ3M3c19mbGFnc0UKIF9fWk4zSlNDMTNTdGF0ZW1lbnRO
b2RlNnNldExvY0VpaQogX19aTjNKU0MxNEV4ZWN1dGFibGVCYXNlNnNfaW5mb0UKIF9fWk4zSlND
MTRKU0dsb2JhbE9iamVjdDEwZ2xvYmFsRXhlY0V2Ci1fX1pOM0pTQzE0SlNHbG9iYWxPYmplY3Qx
MmRlZmluZUdldHRlckVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlm
aWVyRVMyX2oKLV9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDEyZGVmaW5lU2V0dGVyRVBOU184SlNP
YmplY3RFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUzJfagogX19aTjNKU0MxNEpT
R2xvYmFsT2JqZWN0MTNjbGVhclJhcmVEYXRhRVBOU182SlNDZWxsRQogX19aTjNKU0MxNEpTR2xv
YmFsT2JqZWN0MTN2aXNpdENoaWxkcmVuRVBOU182SlNDZWxsRVJOU18xMVNsb3RWaXNpdG9yRQog
X19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTZhZGRTdGF0aWNHbG9iYWxzRVBOUzBfMThHbG9iYWxQ
cm9wZXJ0eUluZm9FaQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTZwdXREaXJlY3RWaXJ0dWFs
RVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFs
dWVFagorX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTdkZWZpbmVPd25Qcm9wZXJ0eUVQTlNfOEpT
T2JqZWN0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18xOFByb3BlcnR5RGVz
Y3JpcHRvckViCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxOGdldE93blByb3BlcnR5U2xvdEVQ
TlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMTJQcm9wZXJ0
eVNsb3RFCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QyNGdldE93blByb3BlcnR5RGVzY3JpcHRv
ckVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18xOFBy
b3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDI1c19nbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZUUKQEAgLTMxNSwxMCArMzE0LDYgQEAgX19aTjNKU0M4RGVidWdnZXJEMkV2
CiBfX1pOM0pTQzhKU09iamVjdDEwcHV0QnlJbmRleEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0
ZUVqTlNfN0pTVmFsdWVFCiBfX1pOM0pTQzhKU09iamVjdDExaGFzSW5zdGFuY2VFUFMwX1BOU185
RXhlY1N0YXRlRU5TXzdKU1ZhbHVlRVM0XwogX19aTjNKU0M4SlNPYmplY3QxMmRlZmF1bHRWYWx1
ZUVQS1MwX1BOU185RXhlY1N0YXRlRU5TXzIyUHJlZmVycmVkUHJpbWl0aXZlVHlwZUUKLV9fWk4z
SlNDOEpTT2JqZWN0MTJkZWZpbmVHZXR0ZXJFUFMwX1BOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVu
dGlmaWVyRVMxX2oKLV9fWk4zSlNDOEpTT2JqZWN0MTJkZWZpbmVTZXR0ZXJFUFMwX1BOU185RXhl
Y1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVMxX2oKLV9fWk4zSlNDOEpTT2JqZWN0MTJsb29rdXBH
ZXR0ZXJFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCi1fX1pOM0pTQzhKU09iamVj
dDEybG9va3VwU2V0dGVyRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNK
U0M4SlNPYmplY3QxMnRvVGhpc09iamVjdEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUUKIF9f
Wk4zSlNDOEpTT2JqZWN0MTN2aXNpdENoaWxkcmVuRVBOU182SlNDZWxsRVJOU18xMVNsb3RWaXNp
dG9yRQogX19aTjNKU0M4SlNPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU182SlNDZWxsRVBOU185
RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHJldmlzaW9uIDEwNjUxMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZGVmCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsMTEgKzEzNSw4IEBA
IEVYUE9SVFMKICAgICA/ZGVjcmVtZW50QFJlZkNvdW50ZWRMZWFrQ291bnRlckBXVEZAQFFBRVhY
WgogICAgID9kZWZhdWx0QXR0cmlidXRlc0BQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEAwSUEKICAg
ICA/ZGVmYXVsdFZhbHVlQEpTT2JqZWN0QEpTQ0BAU0E/QVZKU1ZhbHVlQDJAUEJWMTJAUEFWRXhl
Y1N0YXRlQDJAVzRQcmVmZXJyZWRQcmltaXRpdmVUeXBlQDJAQFoKLSAgICA/ZGVmaW5lR2V0dGVy
QEpTR2xvYmFsT2JqZWN0QEpTQ0BAU0FYUEFWSlNPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBBQlZJ
ZGVudGlmaWVyQDJAMElAWgotICAgID9kZWZpbmVHZXR0ZXJASlNPYmplY3RASlNDQEBTQVhQQVYx
MkBQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAMElAWgorICAgID9kZWZpbmVPd25Qcm9w
ZXJ0eUBKU0dsb2JhbE9iamVjdEBKU0NAQFNBX05QQVZKU09iamVjdEAyQFBBVkV4ZWNTdGF0ZUAy
QEFCVklkZW50aWZpZXJAMkBBQVZQcm9wZXJ0eURlc2NyaXB0b3JAMkBfTkBaCiAgICAgP2RlZmlu
ZU93blByb3BlcnR5QEpTT2JqZWN0QEpTQ0BAU0FfTlBBVjEyQFBBVkV4ZWNTdGF0ZUAyQEFCVklk
ZW50aWZpZXJAMkBBQVZQcm9wZXJ0eURlc2NyaXB0b3JAMkBfTkBaCi0gICAgP2RlZmluZVNldHRl
ckBKU0dsb2JhbE9iamVjdEBKU0NAQFNBWFBBVkpTT2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJAQUJW
SWRlbnRpZmllckAyQDBJQFoKLSAgICA/ZGVmaW5lU2V0dGVyQEpTT2JqZWN0QEpTQ0BAU0FYUEFW
MTJAUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQDBJQFoKICAgICA/ZGVsZXRlT3duZWRQ
dHJAV1RGQEBZQVhQQVVIQklUTUFQX19AQEBaCiAgICAgP2RlbGV0ZU93bmVkUHRyQFdURkBAWUFY
UEFVSEJSVVNIX19AQEBaCiAgICAgP2RlbGV0ZU93bmVkUHRyQFdURkBAWUFYUEFVSERDX19AQEBa
CkBAIC0xNzgsNyArMTc1LDcgQEAgRVhQT1JUUwogICAgID9mYXN0UmVhbGxvY0BXVEZAQFlBUEFY
UEFYSUBaCiAgICAgP2Zhc3RTdHJEdXBAV1RGQEBZQVBBRFBCREBaCiAgICAgP2Zhc3RaZXJvZWRN
YWxsb2NAV1RGQEBZQVBBWElAWgotICAgID9maWxsR2V0dGVyUHJvcGVydHlTbG90QEpTT2JqZWN0
QEpTQ0BAUUFFWEFBVlByb3BlcnR5U2xvdEAyQFBBVj8kV3JpdGVCYXJyaWVyQmFzZUBXNFVua25v
d25ASlNDQEBAMkBAWgorICAgID9maWxsR2V0dGVyUHJvcGVydHlTbG90QEpTT2JqZWN0QEpTQ0BA
QUFFWEFBVlByb3BlcnR5U2xvdEAyQFBBVj8kV3JpdGVCYXJyaWVyQmFzZUBXNFVua25vd25ASlND
QEBAMkBAWgogICAgID9maW5hbGl6ZUBXZWFrSGFuZGxlT3duZXJASlNDQEBVQUVYVj8kSGFuZGxl
QFc0VW5rbm93bkBKU0NAQEAyQFBBWEBaCiAgICAgP2ZpbmlzaENyZWF0aW9uQERhdGVJbnN0YW5j
ZUBKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBOQFoKICAgICA/ZmluaXNoQ3JlYXRpb25ASW50
ZXJuYWxGdW5jdGlvbkBKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBBQlZJZGVudGlmaWVyQDJA
QFoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlckFjdGl2YXRpb24uY3BwCShyZXZpc2lvbiAxMDY1MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTAxLDE2ICsxMDEsMTAgQEAgYm9vbCBEZWJ1Z2dlckFjdGl2YXRpb246OmdldE93blByb3BlcnR5
RAogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhvZFRhYmxlKCktPmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24uZ2V0KCksIGV4
ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKLXZvaWQgRGVidWdnZXJBY3RpdmF0
aW9uOjpkZWZpbmVHZXR0ZXIoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jdGlvbiwgdW5z
aWduZWQgYXR0cmlidXRlcykKK2Jvb2wgRGVidWdnZXJBY3RpdmF0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3Vs
ZFRocm93KQogewogICAgIERlYnVnZ2VyQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxE
ZWJ1Z2dlckFjdGl2YXRpb24qPihvYmplY3QpOwotICAgIHRoaXNPYmplY3QtPm1fYWN0aXZhdGlv
bi0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lR2V0dGVyKHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi5n
ZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdGlvbiwgYXR0cmlidXRlcyk7Ci19
Ci0KLXZvaWQgRGVidWdnZXJBY3RpdmF0aW9uOjpkZWZpbmVTZXR0ZXIoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2Jq
ZWN0KiBzZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcykKLXsKLSAgICBEZWJ1Z2dl
ckFjdGl2YXRpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8RGVidWdnZXJBY3RpdmF0aW9uKj4ob2Jq
ZWN0KTsKLSAgICB0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhvZFRhYmxlKCktPmRlZmlu
ZVNldHRlcih0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24uZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgc2V0dGVyRnVuY3Rpb24sIGF0dHJpYnV0ZXMpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5t
X2FjdGl2YXRpb24tPm1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3Qt
Pm1fYWN0aXZhdGlvbi5nZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91
bGRUaHJvdyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaAkocmV2aXNpb24g
MTA2NTExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw4ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgdm9pZCBnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUpOwogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVy
dHlEZXNjcmlwdG9yJik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGRlZmluZUdldHRlcihKU09iamVj
dCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3Qq
IGdldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICAgICAgc3RhdGljIHZv
aWQgZGVmaW5lU2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpOworICAgICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICAgICAgSlNfRVhQT1JUREFUQSBzdGF0aWMg
Y29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2xhc3NJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2xhc3NJbmZvLmgJKHJldmlzaW9uIDEwNjUxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxMiArNjYsNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdHlwZWRlZiBKU09iamVjdCogKCpUb1RoaXNPYmpl
Y3RGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKik7CiAgICAgICAgIFRvVGhpc09iamVj
dEZ1bmN0aW9uUHRyIHRvVGhpc09iamVjdDsKIAotICAgICAgICB0eXBlZGVmIHZvaWQgKCpEZWZp
bmVHZXR0ZXJGdW5jdGlvblB0cikoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiwgSlNPYmplY3QqLCB1bnNpZ25lZCk7Ci0gICAgICAgIERlZmluZUdldHRlckZ1bmN0aW9u
UHRyIGRlZmluZUdldHRlcjsKLQotICAgICAgICB0eXBlZGVmIHZvaWQgKCpEZWZpbmVTZXR0ZXJG
dW5jdGlvblB0cikoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNP
YmplY3QqLCB1bnNpZ25lZCk7Ci0gICAgICAgIERlZmluZVNldHRlckZ1bmN0aW9uUHRyIGRlZmlu
ZVNldHRlcjsKLQogICAgICAgICB0eXBlZGVmIEpTVmFsdWUgKCpEZWZhdWx0VmFsdWVGdW5jdGlv
blB0cikoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBl
KTsKICAgICAgICAgRGVmYXVsdFZhbHVlRnVuY3Rpb25QdHIgZGVmYXVsdFZhbHVlOwogCkBAIC0x
MjgsOCArMTIyLDYgQEAgc3RydWN0IE1lbWJlckNoZWNrIyNtZW1iZXIgeyBcCiAgICAgICAgICZD
bGFzc05hbWU6OmdldE93blByb3BlcnR5U2xvdCwgXAogICAgICAgICAmQ2xhc3NOYW1lOjpnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4LCBcCiAgICAgICAgICZDbGFzc05hbWU6OnRvVGhpc09iamVj
dCwgXAotICAgICAgICAmQ2xhc3NOYW1lOjpkZWZpbmVHZXR0ZXIsIFwKLSAgICAgICAgJkNsYXNz
TmFtZTo6ZGVmaW5lU2V0dGVyLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmRlZmF1bHRWYWx1ZSwg
XAogICAgICAgICAmQ2xhc3NOYW1lOjpnZXRPd25Qcm9wZXJ0eU5hbWVzLCBcCiAgICAgICAgICZD
bGFzc05hbWU6OmdldFByb3BlcnR5TmFtZXMsIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMTA2NTExKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogCisjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMTEsOCArMTEy
LDggQEAgdm9pZCBKU0JvdW5kRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKEV4ZQogICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKGV4ZWMsIGV4ZWN1dGFibGUsIGxlbmd0aCwgbmFtZSk7CiAgICAgQVNT
RVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIAotICAgIGluaXRpYWxpemVHZXR0ZXJTZXR0ZXJQcm9w
ZXJ0eShleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzLCBnbG9iYWxPYmplY3Qo
KS0+dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoZXhlYyksIERvbnREZWxldGUgfCBEb250RW51
bSB8IEFjY2Vzc29yKTsKLSAgICBpbml0aWFsaXplR2V0dGVyU2V0dGVyUHJvcGVydHkoZXhlYywg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlciwgZ2xvYmFsT2JqZWN0KCktPnRocm93VHlwZUVy
cm9yR2V0dGVyU2V0dGVyKGV4ZWMpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBBY2Nlc3Nvcik7
CisgICAgcHV0RGlyZWN0QWNjZXNzb3IoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuYXJndW1lbnRzLCBnbG9iYWxPYmplY3QoKS0+dGhyb3dUeXBlRXJyb3JHZXR0ZXJT
ZXR0ZXIoZXhlYyksIERvbnREZWxldGUgfCBEb250RW51bSB8IEFjY2Vzc29yKTsKKyAgICBwdXRE
aXJlY3RBY2Nlc3NvcihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5j
YWxsZXIsIGdsb2JhbE9iamVjdCgpLT50aHJvd1R5cGVFcnJvckdldHRlclNldHRlcihleGVjKSwg
RG9udERlbGV0ZSB8IERvbnRFbnVtIHwgQWNjZXNzb3IpOwogfQogCiB2b2lkIEpTQm91bmRGdW5j
dGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCShyZXZpc2lvbiAx
MDY1MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTgsMTYgKzE1OCw2IEBAIHZvaWQgc2xvd1ZhbGlkYXRlQ2VsbChKU0Nl
bGwqIGNlbGwpCiAgICAgQVNTRVJUX0dDX09CSkVDVF9MT09LU19WQUxJRChjZWxsKTsKIH0KIAot
dm9pZCBKU0NlbGw6OmRlZmluZUdldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBKU09iamVjdCosIHVuc2lnbmVkKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotfQotCi12b2lkIEpTQ2VsbDo6ZGVmaW5lU2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIEpTT2JqZWN0KiwgdW5zaWduZWQpCi17Ci0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci19Ci0KIEpTVmFsdWUgSlNDZWxsOjpkZWZhdWx0VmFsdWUoY29uc3Qg
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKQogewogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmgJKHJldmlzaW9uIDEwNjUxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsOCArMTUyLDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAog
ICAgICAgICAvLyBEdW1teSBpbXBsZW1lbnRhdGlvbnMgb2Ygb3ZlcnJpZGUtYWJsZSBzdGF0aWMg
ZnVuY3Rpb25zIGZvciBjbGFzc2VzIHRvIHB1dCBpbiB0aGVpciBNZXRob2RUYWJsZQotICAgICAg
ICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBkZWZpbmVHZXR0ZXIoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNPYmplY3QqLCB1bnNpZ25lZCk7
Ci0gICAgICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGRlZmluZVNldHRl
cihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNPYmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMCk7CiAgICAg
ICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwogICAgICAgICBzdGF0aWMgTk9fUkVUVVJOX0RV
RV9UT19BU1NFUlQgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgICAgICBzdGF0aWMg
Tk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHJldmlzaW9u
IDEwNjUxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90
eXBlLmgiCisjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgog
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgpA
QCAtMjE5LDcgKzIyMCw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpT
Q2UKICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUo
KSkgewogICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgICAgIGlmICgh
cmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgdGhpc09iamVjdC0+aW5pdGlhbGl6ZUdldHRlclNl
dHRlclByb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSwgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0
KCktPnRocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKGV4ZWMpLCBEb250RGVsZXRlIHwgRG9udEVu
dW0gfCBBY2Nlc3Nvcik7CisgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0RGlyZWN0QWNj
ZXNzb3IoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QtPmdsb2Jh
bE9iamVjdCgpLT50aHJvd1R5cGVFcnJvckdldHRlclNldHRlcihleGVjKSwgRG9udERlbGV0ZSB8
IERvbnRFbnVtIHwgQWNjZXNzb3IpOwogICAgICAgICAgICAgICAgIHJlc3VsdCA9IEJhc2U6Omdl
dE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
ICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQpOwogICAgICAgICAgICAgfQpAQCAtMjM4LDcg
KzIzOSw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2UKICAgICAg
ICAgaWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkgewogICAg
ICAgICAgICAgYm9vbCByZXN1bHQgPSBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7
Ci0gICAgICAgICAgICAgICAgdGhpc09iamVjdC0+aW5pdGlhbGl6ZUdldHRlclNldHRlclByb3Bl
cnR5KGV4ZWMsIHByb3BlcnR5TmFtZSwgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPnRocm93
VHlwZUVycm9yR2V0dGVyU2V0dGVyKGV4ZWMpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBBY2Nl
c3Nvcik7CisgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0RGlyZWN0QWNjZXNzb3IoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgp
LT50aHJvd1R5cGVFcnJvckdldHRlclNldHRlcihleGVjKSwgRG9udERlbGV0ZSB8IERvbnRFbnVt
IHwgQWNjZXNzb3IpOwogICAgICAgICAgICAgICAgIHJlc3VsdCA9IEJhc2U6OmdldE93blByb3Bl
cnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICAg
ICAgICAgIEFTU0VSVChyZXN1bHQpOwogICAgICAgICAgICAgfQpAQCAtMjY3LDcgKzI2OCw3IEBA
IGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG8KICAgICAgICAgaWYgKHRo
aXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkgewogICAgICAgICAgICAg
Ym9vbCByZXN1bHQgPSBCYXNlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0
KSB7Ci0gICAgICAgICAgICAgICAgdGhpc09iamVjdC0+aW5pdGlhbGl6ZUdldHRlclNldHRlclBy
b3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSwgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPnRo
cm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKGV4ZWMpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBB
Y2Nlc3Nvcik7CisgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0RGlyZWN0QWNjZXNzb3Io
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVj
dCgpLT50aHJvd1R5cGVFcnJvckdldHRlclNldHRlcihleGVjKSwgRG9udERlbGV0ZSB8IERvbnRF
bnVtIHwgQWNjZXNzb3IpOwogICAgICAgICAgICAgICAgIHJlc3VsdCA9IEJhc2U6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IpOwogICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQpOwogICAgICAgICAgICAgfQpAQCAt
Mjg2LDcgKzI4Nyw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG8K
ICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkg
ewogICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBCYXNlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKICAgICAgICAg
ICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgdGhpc09iamVjdC0+aW5pdGlhbGl6
ZUdldHRlclNldHRlclByb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSwgdGhpc09iamVjdC0+Z2xv
YmFsT2JqZWN0KCktPnRocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKGV4ZWMpLCBEb250RGVsZXRl
IHwgRG9udEVudW0gfCBBY2Nlc3Nvcik7CisgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0
RGlyZWN0QWNjZXNzb3IoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmpl
Y3QtPmdsb2JhbE9iamVjdCgpLT50aHJvd1R5cGVFcnJvckdldHRlclNldHRlcihleGVjKSwgRG9u
dERlbGV0ZSB8IERvbnRFbnVtIHwgQWNjZXNzb3IpOwogICAgICAgICAgICAgICAgIHJlc3VsdCA9
IEJhc2U6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IpOwogICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQpOwogICAg
ICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTA2NTExKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsMjEg
KzE3MSwxNiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpwdXREaXJlY3RWaXJ0dWFsKEpTCiAgICAg
fQogfQogCi12b2lkIEpTR2xvYmFsT2JqZWN0OjpkZWZpbmVHZXR0ZXIoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2Jq
ZWN0KiBnZXR0ZXJGdW5jLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorYm9vbCBKU0dsb2JhbE9iamVj
dDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvciwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBKU0dsb2JhbE9iamVjdCogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KG9iamVjdCk7CiAgICAgUHJvcGVydHlTbG90IHNs
b3Q7Ci0gICAgaWYgKCF0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZUdldChwcm9wZXJ0eU5hbWUsIHNs
b3QpKQotICAgICAgICBKU1ZhcmlhYmxlT2JqZWN0OjpkZWZpbmVHZXR0ZXIodGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jLCBhdHRyaWJ1dGVzKTsKKyAgICAvLyBzaWxl
bnRseSBpZ25vcmUgYXR0ZW1wdHMgdG8gYWRkIGFjY2Vzc29ycyBhbGlhc2luZyB2YXJzLgorICAg
IGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgJiYgdGhpc09iamVjdC0+c3lt
Ym9sVGFibGVHZXQocHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIH0KIAotdm9pZCBKU0dsb2JhbE9i
amVjdDo6ZGVmaW5lU2V0dGVyKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVyRnVuYywgdW5zaWdu
ZWQgYXR0cmlidXRlcykKLXsKLSAgICBKU0dsb2JhbE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KG9iamVjdCk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3Q7Ci0gICAg
aWYgKCF0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZUdldChwcm9wZXJ0eU5hbWUsIHNsb3QpKQotICAg
ICAgICBKU1ZhcmlhYmxlT2JqZWN0OjpkZWZpbmVTZXR0ZXIodGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCBzZXR0ZXJGdW5jLCBhdHRyaWJ1dGVzKTsKLX0KIAogc3RhdGljIGlubGluZSBK
U09iamVjdCogbGFzdEluUHJvdG90eXBlQ2hhaW4oSlNPYmplY3QqIG9iamVjdCkKIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2
aXNpb24gMTA2NTExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjA2LDYgKzIwNiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRlZmluZUdldHRlcihK
U09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNP
YmplY3QqIGdldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkZWZpbmVTZXR0ZXIoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBzZXR0ZXJGdW5jLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJv
b2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cp
OwogCiAgICAgICAgIC8vIFdlIHVzZSB0aGlzIGluIHRoZSBjb2RlIGdlbmVyYXRvciBhcyB3ZSBw
ZXJmb3JtIHN5bWJvbCB0YWJsZQogICAgICAgICAvLyBsb29rdXBzIHByaW9yIHRvIGluaXRpYWxp
emluZyB0aGUgcHJvcGVydGllcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTA2NTExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjEsMTA2ICszNjEsNiBA
QCBjb25zdCBIYXNoRW50cnkqIEpTT2JqZWN0OjpmaW5kUHJvcGVydHlICiAgICAgcmV0dXJuIDA7
CiB9CiAKLXZvaWQgSlNPYmplY3Q6OmRlZmluZUdldHRlcihKU09iamVjdCogdGhpc09iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0
KiBnZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcykKLXsKLSAgICBpZiAocHJvcGVy
dHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pIHsKLSAgICAg
ICAgLy8gRGVmaW5pbmcgYSBnZXR0ZXIgZm9yIF9fcHJvdG9fXyBpcyBzaWxlbnRseSBpZ25vcmVk
LgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgSlNWYWx1ZSBvYmplY3QgPSB0aGlzT2Jq
ZWN0LT5nZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpOwotICAgIGlm
IChvYmplY3QgJiYgb2JqZWN0LmlzR2V0dGVyU2V0dGVyKCkpIHsKLSAgICAgICAgQVNTRVJUKHRo
aXNPYmplY3QtPnN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkpOwotICAg
ICAgICBhc0dldHRlclNldHRlcihvYmplY3QpLT5zZXRHZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBnZXR0ZXJGdW5jdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7Ci0gICAgUHV0UHJvcGVydHlT
bG90IHNsb3Q7Ci0gICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0ZXI6
OmNyZWF0ZShleGVjKTsKLSAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3RJbnRlcm5hbDxQdXRNb2Rl
RGVmaW5lT3duUHJvcGVydHk+KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgZ2V0dGVyU2V0dGVy
LCBhdHRyaWJ1dGVzIHwgQWNjZXNzb3IsIHNsb3QsIDApOwotCi0gICAgLy8gcHV0RGlyZWN0IHdp
bGwgY2hhbmdlIG91ciBTdHJ1Y3R1cmUgaWYgd2UgYWRkIGEgbmV3IHByb3BlcnR5LiBGb3IKLSAg
ICAvLyBnZXR0ZXJzIGFuZCBzZXR0ZXJzLCB0aG91Z2gsIHdlIGFsc28gbmVlZCB0byBjaGFuZ2Ug
b3VyIFN0cnVjdHVyZQotICAgIC8vIGlmIHdlIG92ZXJyaWRlIGFuIGV4aXN0aW5nIG5vbi1nZXR0
ZXIgb3Igbm9uLXNldHRlci4KLSAgICBpZiAoc2xvdC50eXBlKCkgIT0gUHV0UHJvcGVydHlTbG90
OjpOZXdQcm9wZXJ0eSkKLSAgICAgICAgdGhpc09iamVjdC0+c2V0U3RydWN0dXJlKGV4ZWMtPmds
b2JhbERhdGEoKSwgU3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKGdsb2JhbERh
dGEsIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMgfCBB
Y2Nlc3NvcikpOwotCi0gICAgdGhpc09iamVjdC0+c3RydWN0dXJlKCktPnNldEhhc0dldHRlclNl
dHRlclByb3BlcnRpZXModHJ1ZSk7Ci0gICAgZ2V0dGVyU2V0dGVyLT5zZXRHZXR0ZXIoZ2xvYmFs
RGF0YSwgZ2V0dGVyRnVuY3Rpb24pOwotfQotCi12b2lkIEpTT2JqZWN0Ojppbml0aWFsaXplR2V0
dGVyU2V0dGVyUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KQotewotICAgIC8vIFNldCBhbiBpbml0YWwgcHJvcGVydHkgb24gYW4gb2JqZWN0OyB0aGUgcHJv
cGVydHkgbXVzdCBub3QgYWxyZWFkeSBleGlzdCAmIHRoZSBhdHRyaWJ1dGUgZmxhZ3MgbXVzdCBi
ZSBzZXQgY29ycmVjdGx5LgotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgcHJvcGVydHlOYW1lKSA9PSBXVEY6Om5vdEZvdW5kKTsKLSAgICBBU1NFUlQoc3Rh
dGljX2Nhc3Q8Ym9vbD4oYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7Ci0KLSAgICBKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7Ci0gICAgUHV0UHJvcGVydHlTbG90
IHNsb3Q7Ci0gICAgcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pihn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGdldHRlclNldHRlciwgYXR0cmlidXRlcywgc2xvdCwg
MCk7Ci0KLSAgICAvLyBwdXREaXJlY3Qgd2lsbCBjaGFuZ2Ugb3VyIFN0cnVjdHVyZSBpZiB3ZSBh
ZGQgYSBuZXcgcHJvcGVydHkuIEZvcgotICAgIC8vIGdldHRlcnMgYW5kIHNldHRlcnMsIHRob3Vn
aCwgd2UgYWxzbyBuZWVkIHRvIGNoYW5nZSBvdXIgU3RydWN0dXJlCi0gICAgLy8gaWYgd2Ugb3Zl
cnJpZGUgYW4gZXhpc3Rpbmcgbm9uLWdldHRlciBvciBub24tc2V0dGVyLgotICAgIGlmIChzbG90
LnR5cGUoKSAhPSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KQotICAgICAgICBzZXRTdHJ1
Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYW5z
aXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcykp
OwotCi0gICAgc3RydWN0dXJlKCktPnNldEhhc0dldHRlclNldHRlclByb3BlcnRpZXModHJ1ZSk7
Ci19Ci0KLXZvaWQgSlNPYmplY3Q6OmRlZmluZVNldHRlcihKU09iamVjdCogdGhpc09iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0
KiBzZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcykKLXsKLSAgICBpZiAocHJvcGVy
dHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pIHsKLSAgICAg
ICAgLy8gRGVmaW5pbmcgYSBzZXR0ZXIgZm9yIF9fcHJvdG9fXyBpcyBzaWxlbnRseSBpZ25vcmVk
LgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgSlNWYWx1ZSBvYmplY3QgPSB0aGlzT2Jq
ZWN0LT5nZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpOwotICAgIGlm
IChvYmplY3QgJiYgb2JqZWN0LmlzR2V0dGVyU2V0dGVyKCkpIHsKLSAgICAgICAgQVNTRVJUKHRo
aXNPYmplY3QtPnN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkpOwotICAg
ICAgICBhc0dldHRlclNldHRlcihvYmplY3QpLT5zZXRTZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBzZXR0ZXJGdW5jdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdDsKLSAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IEdldHRlclNl
dHRlcjo6Y3JlYXRlKGV4ZWMpOwotICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdEludGVybmFsPFB1
dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUs
IGdldHRlclNldHRlciwgYXR0cmlidXRlcyB8IEFjY2Vzc29yLCBzbG90LCAwKTsKLQotICAgIC8v
IHB1dERpcmVjdCB3aWxsIGNoYW5nZSBvdXIgU3RydWN0dXJlIGlmIHdlIGFkZCBhIG5ldyBwcm9w
ZXJ0eS4gRm9yCi0gICAgLy8gZ2V0dGVycyBhbmQgc2V0dGVycywgdGhvdWdoLCB3ZSBhbHNvIG5l
ZWQgdG8gY2hhbmdlIG91ciBTdHJ1Y3R1cmUKLSAgICAvLyBpZiB3ZSBvdmVycmlkZSBhbiBleGlz
dGluZyBub24tZ2V0dGVyIG9yIG5vbi1zZXR0ZXIuCi0gICAgaWYgKHNsb3QudHlwZSgpICE9IFB1
dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpCi0gICAgICAgIHRoaXNPYmplY3QtPnNldFN0cnVj
dHVyZShleGVjLT5nbG9iYWxEYXRhKCksIFN0cnVjdHVyZTo6YXR0cmlidXRlQ2hhbmdlVHJhbnNp
dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMgfCBBY2Nlc3NvcikpOwotCi0gICAgdGhpc09iamVjdC0+c3RydWN0
dXJlKCktPnNldEhhc0dldHRlclNldHRlclByb3BlcnRpZXModHJ1ZSk7Ci0gICAgZ2V0dGVyU2V0
dGVyLT5zZXRTZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzZXR0ZXJGdW5jdGlvbik7Ci19Ci0K
LUpTVmFsdWUgSlNPYmplY3Q6Omxvb2t1cEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSkKLXsKLSAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3Jp
cHRvcjsKLSAgICBpZiAoIWdldFByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUs
IGRlc2NyaXB0b3IpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIGlmICgh
ZGVzY3JpcHRvci5nZXR0ZXJQcmVzZW50KCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwotCi0gICAgcmV0dXJuIGRlc2NyaXB0b3IuZ2V0dGVyKCk7Ci19Ci0KLUpTVmFsdWUgSlNPYmpl
Y3Q6Omxvb2t1cFNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKLXsKLSAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKLSAgICBpZiAo
IWdldFByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpKQot
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIGlmICghZGVzY3JpcHRvci5zZXR0
ZXJQcmVzZW50KCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIAotICAgIHJl
dHVybiBkZXNjcmlwdG9yLnNldHRlcigpOwotfQotCiBib29sIEpTT2JqZWN0OjpoYXNJbnN0YW5j
ZShKU09iamVjdCosIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBwcm90
bykKIHsKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDEwNjUxMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5MiwxMyAr
MTkyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcHV0RGlyZWN0T2Zmc2V0KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBw
cm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLnNldChnbG9iYWxEYXRhLCB0aGlzLCB2YWx1ZSk7IH0K
ICAgICAgICAgdm9pZCBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChzaXplX3Qgb2Zmc2V0KSB7
IHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0uc2V0VW5kZWZpbmVkKCk7IH0KIAotICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3QoUHJvcGVydHlTbG90
JiwgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb24pOwotICAgICAgICB2b2lkIGlu
aXRpYWxpemVHZXR0ZXJTZXR0ZXJQcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiwgR2V0dGVyU2V0dGVyKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0KLSAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuY3Rp
b24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIHZvaWQgZGVmaW5lU2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVk
IGF0dHJpYnV0ZXMgPSAwKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBsb29r
dXBHZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKLSAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBsb29rdXBTZXR0ZXIoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wg
c2hvdWxkVGhyb3cpOwogCiAgICAgICAgIGJvb2wgaXNHbG9iYWxPYmplY3QoKSBjb25zdDsKQEAg
LTI5Niw2ICsyODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBwdXREaXJlY3RJ
bnRlcm5hbChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIHVuc2lnbmVkIGF0dHIsIFB1dFByb3BlcnR5U2xvdCYsIEpTQ2VsbCopOwogCiAgICAg
ICAgIGJvb2wgaW5saW5lR2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgZmlsbEdldHRlclByb3BlcnR5U2xvdChQcm9wZXJ0eVNsb3QmLCBXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbik7CiAKICAgICAgICAgY29uc3QgSGFzaEVudHJ5
KiBmaW5kUHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKSBjb25zdDsKICAgICAgICAgU3RydWN0dXJlKiBjcmVhdGVJbmhlcml0b3JJRChK
U0dsb2JhbERhdGEmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTA2NTExKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQ2LDEwICsxNDYsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90
bwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAorICAgIEpTVmFsdWUgZ2V0ID0gZXhlYy0+YXJndW1l
bnQoMSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgaWYgKGdldENhbGxEYXRhKGV4ZWMt
PmFyZ3VtZW50KDEpLCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGVOb25lKQorICAgIGlmIChnZXRDYWxs
RGF0YShnZXQsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZU5vbmUpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgImludmFsaWQgZ2V0dGVyIHVz
YWdlIikpOwotICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlZmluZUdldHRlcih0aGlz
T2JqZWN0LCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSksIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDEpKSwgMCk7CisK
KyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKKyAgICBkZXNjcmlwdG9yLnNldEdl
dHRlcihnZXQpOworICAgIGRlc2NyaXB0b3Iuc2V0RW51bWVyYWJsZSh0cnVlKTsKKyAgICBkZXNj
cmlwdG9yLnNldENvbmZpZ3VyYWJsZSh0cnVlKTsKKyAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyKGV4ZWMs
IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIGRlc2NyaXB0
b3IsIGZhbHNlKTsKKwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKQEAgLTE1OSwxMCArMTY2LDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0UHJvdG8KICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKKyAgICBKU1ZhbHVlIHNldCA9IGV4
ZWMtPmFyZ3VtZW50KDEpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIGlmIChnZXRDYWxs
RGF0YShleGVjLT5hcmd1bWVudCgxKSwgY2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkKKyAgICBp
ZiAoZ2V0Q2FsbERhdGEoc2V0LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGVOb25lKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJpbnZhbGlk
IHNldHRlciB1c2FnZSIpKTsKLSAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWZpbmVT
ZXR0ZXIodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgw
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpLCBhc09iamVjdChleGVjLT5hcmd1bWVudCgx
KSksIDApOworCisgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CisgICAgZGVzY3Jp
cHRvci5zZXRTZXR0ZXIoc2V0KTsKKyAgICBkZXNjcmlwdG9yLnNldEVudW1lcmFibGUodHJ1ZSk7
CisgICAgZGVzY3JpcHRvci5zZXRDb25maWd1cmFibGUodHJ1ZSk7CisgICAgdGhpc09iamVjdC0+
bWV0aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgSWRlbnRp
ZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykp
LCBkZXNjcmlwdG9yLCBmYWxzZSk7CisKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCkBAIC0xNzIsNyArMTg2LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0UHJvdG8KICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QtPmxvb2t1cEdldHRlcihleGVjLCBJZGVudGlmaWVy
KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpKTsK
KyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKKyAgICBpZiAodGhpc09iamVjdC0+
Z2V0UHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1l
bnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwgZGVzY3JpcHRvcikKKyAgICAgICAg
JiYgZGVzY3JpcHRvci5nZXR0ZXJQcmVzZW50KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoZGVzY3JpcHRvci5nZXR0ZXIoKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dFByb3RvRnVuY0xvb2t1cFNldHRlcihFeGVjU3RhdGUqIGV4ZWMpCkBAIC0xODEsNyArMjAwLDEy
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG8KICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QtPmxvb2t1
cFNldHRlcihleGVjLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSkpKTsKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRv
cjsKKyAgICBpZiAodGhpc09iamVjdC0+Z2V0UHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIElkZW50
aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
KSwgZGVzY3JpcHRvcikKKyAgICAgICAgJiYgZGVzY3JpcHRvci5zZXR0ZXJQcmVzZW50KCkpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGVzY3JpcHRvci5zZXR0ZXIoKSk7CisKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKEV4
ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjQ5NykKKysrIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDEy
LTAyLTAxICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZW1vdmUgSlNPYmplY3QgZGVmaW5lR2V0dGVyL2RlZmluZVNldHRlciBsb29rdXBHZXR0
ZXIvbG9va3VwU2V0dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NzQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAg
ICAgVGhlc2UgY2FuIG5vdyBhbGwgYmUgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgZGVmaW5lT3du
UHJvcGVydHkgJiBnZXRQcm9wZXJ0eURlc2NyaXB0b3IuCisgICAgICAgIEFsc28gcmVtb3ZlIGlu
aXRpYWxpemVHZXR0ZXJTZXR0ZXJQcm9wZXJ0eSwgc2luY2UgdGhpcyBpcyBlcXVpdmFsZW50IHRv
IHB1dERpcmVjdEFjY2Vzc29yLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdp
bmRvdzo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01XaW5kb3dTaGVsbC5oOgorICAgICAgICAoSlNET01XaW5kb3dTaGVsbCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0xvY2F0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0
aW9uUHJvdG90eXBlOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAg
ICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorICAgICAgICAqIHBhZ2UvTG9jYXRpb24uaWRsOgor
CiAyMDEyLTAyLTAxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAg
IEdjYyBidWlsZCBmaXggYWZ0ZXIgcjEwNjQ4Mi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDEwNjQ5NykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzg4LDM1ICszODgsMTcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJv
cGVydHlOYW1lcyhKUwogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLXZvaWQgSlNET01XaW5kb3c6OmRlZmlu
ZUdldHRlcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKQotewotICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2lu
ZG93Kj4ob2JqZWN0KTsKLSAgICAvLyBPbmx5IGFsbG93IGRlZmluaW5nIGdldHRlcnMgYnkgZnJh
bWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAoIXRoaXNPYmplY3QtPmFsbG93c0FjY2Vz
c0Zyb20oZXhlYykpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIERvbid0IGFsbG93IHNoYWRv
d2luZyBsb2NhdGlvbiB1c2luZyBkZWZpbmVHZXR0ZXIuCi0gICAgaWYgKHByb3BlcnR5TmFtZSA9
PSAibG9jYXRpb24iKQotICAgICAgICByZXR1cm47Ci0KLSAgICBCYXNlOjpkZWZpbmVHZXR0ZXIo
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdGlvbiwgYXR0cmlidXRl
cyk7Ci19Ci0KLXZvaWQgSlNET01XaW5kb3c6OmRlZmluZVNldHRlcihKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmpl
Y3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQotewotICAgIEpTRE9NV2lu
ZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KTsKLSAgICAvLyBP
bmx5IGFsbG93IGRlZmluaW5nIHNldHRlcnMgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4K
LSAgICBpZiAoIXRoaXNPYmplY3QtPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCi0gICAgICAgIHJl
dHVybjsKLSAgICBCYXNlOjpkZWZpbmVTZXR0ZXIodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lLCBzZXR0ZXJGdW5jdGlvbiwgYXR0cmlidXRlcyk7Ci19Ci0KIGJvb2wgSlNET01XaW5kb3c6
OmRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBKU0RPTVdp
bmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCk7CiAgICAgLy8g
T25seSBhbGxvdyBkZWZpbmluZyBwcm9wZXJ0aWVzIGluIHRoaXMgd2F5IGJ5IGZyYW1lcyBpbiB0
aGUgc2FtZSBvcmlnaW4sIGFzIGl0IGFsbG93cyBzZXR0ZXJzIHRvIGJlIGludHJvZHVjZWQuCiAg
ICAgaWYgKCF0aGlzT2JqZWN0LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAvLyBEb24ndCBhbGxvdyBzaGFkb3dpbmcgbG9jYXRpb24gdXNpbmcg
YWNjZXNzb3IgcHJvcGVydGllcy4KKyAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3Jp
cHRvcigpICYmIHByb3BlcnR5TmFtZSA9PSAibG9jYXRpb24iKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCShyZXZp
c2lvbiAxMDY0OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1No
ZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDE4ICsxMzksNiBAQCB2b2lkIEpTRE9NV2lu
ZG93U2hlbGw6OmdldE93blByb3BlcnR5TmFtCiAgICAgdGhpc09iamVjdC0+d2luZG93KCktPm1l
dGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdC0+d2luZG93KCksIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi12b2lkIEpTRE9NV2luZG93U2hlbGw6OmRl
ZmluZUdldHRlcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKQotewotICAgIEpTRE9NV2luZG93U2hlbGwqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNET01XaW5kb3dTaGVsbCo+KG9iamVjdCk7Ci0gICAgdGhpc09iamVjdC0+d2luZG93KCktPm1l
dGhvZFRhYmxlKCktPmRlZmluZUdldHRlcih0aGlzT2JqZWN0LT53aW5kb3coKSwgZXhlYywgcHJv
cGVydHlOYW1lLCBnZXR0ZXJGdW5jdGlvbiwgYXR0cmlidXRlcyk7Ci19Ci0KLXZvaWQgSlNET01X
aW5kb3dTaGVsbDo6ZGVmaW5lU2V0dGVyKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVyRnVuY3Rp
b24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCi17Ci0gICAgSlNET01XaW5kb3dTaGVsbCogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4ob2JqZWN0KTsKLSAgICB0aGlzT2JqZWN0
LT53aW5kb3coKS0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lU2V0dGVyKHRoaXNPYmplY3QtPndpbmRv
dygpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNldHRlckZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKLX0K
LQogCiAvLyAtLS0tCiAvLyBKU0RPTVdpbmRvdyBtZXRob2RzCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCShyZXZpc2lvbiAxMDY0OTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg2LDggKzg2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgdm9pZCBn
ZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSk7CiAgICAgICAgIHN0YXRp
YyB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlKTsKLSAgICAgICAg
c3RhdGljIHZvaWQgZGVmaW5lR2V0dGVyKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSos
IGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OkpTT2JqZWN0KiBnZXR0
ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGRl
ZmluZVNldHRlcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6Oklk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpKU09iamVjdCogc2V0dGVyRnVuY3Rpb24sIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0
eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93
KTsKIAogICAgICAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX3dvcmxkOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAJKHJldmlz
aW9uIDEwNjQ5NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsMTEgKzE3MCwxMSBAQCB2b2lkIEpTTG9jYXRp
b246OmdldE93blByb3BlcnR5TmFtZXMoSlNPCiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1l
cyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotdm9pZCBKU0xv
Y2F0aW9uOjpkZWZpbmVHZXR0ZXIoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jdGlvbiwg
dW5zaWduZWQgYXR0cmlidXRlcykKK2Jvb2wgSlNMb2NhdGlvbjo6ZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2Vw
dGlvbikKIHsKLSAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50
b1N0cmluZyB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnZhbHVlT2Yp
Ci0gICAgICAgIHJldHVybjsKLSAgICBCYXNlOjpkZWZpbmVHZXR0ZXIob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKKyAgICBpZiAoZGVzY3Jp
cHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpICYmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJv
cGVydHlOYW1lcygpLnRvU3RyaW5nIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkudmFsdWVPZikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gQmFzZTo6
ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3Is
IHRocm93RXhjZXB0aW9uKTsKIH0KIAogdm9pZCBKU0xvY2F0aW9uOjpzZXRIcmVmKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKQEAgLTI4MSwxMSArMjgxLDExIEBAIGJvb2wgSlNMb2Nh
dGlvblByb3RvdHlwZTo6cHV0RGVsZWdhdGUoRXgKICAgICByZXR1cm4gKHByb3BlcnR5TmFtZSA9
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcgfHwgcHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mKTsKIH0KIAotdm9pZCBKU0xvY2F0aW9uUHJvdG90eXBl
OjpkZWZpbmVHZXR0ZXIoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jdGlvbiwgdW5zaWdu
ZWQgYXR0cmlidXRlcykKK2Jvb2wgSlNMb2NhdGlvblByb3RvdHlwZTo6ZGVmaW5lT3duUHJvcGVy
dHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4
Y2VwdGlvbikKIHsKLSAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS50b1N0cmluZyB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnZhbHVl
T2YpCi0gICAgICAgIHJldHVybjsKLSAgICBCYXNlOjpkZWZpbmVHZXR0ZXIob2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKKyAgICBpZiAoZGVz
Y3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpICYmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+
cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkudmFsdWVPZikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gQmFz
ZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IsIHRocm93RXhjZXB0aW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0JKHJldmlzaW9uIDEwNjQ5NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC04MjgsMjAgKzgyOCwxNCBAQCBz
dWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok92ZXJyaWRl
c0dldFByb3BlcnR5TmFtZXMifSA9IDE7CiAgICAgfQogCi0gICAgIyBDdXN0b20gZGVmaW5lUHJv
cGVydHkgZnVuY3Rpb24gZXhpc3RzIG9uIERPTVdpbmRvdwotICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCosIEpT
Qzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6
UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7XG4iKSBpZiAkaW50ZXJmYWNl
TmFtZSBlcSAiRE9NV2luZG93IjsKLQogICAgICMgQ3VzdG9tIGdldE93blByb3BlcnR5TmFtZXMg
ZnVuY3Rpb24KICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
R2V0UHJvcGVydHlOYW1lcyJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhh
c0luZGV4R2V0dGVyIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzQ3Vz
dG9tSW5kZXhHZXR0ZXIifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNO
dW1lcmljSW5kZXhHZXR0ZXIifSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlIG1v
ZGUgPSBKU0M6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpO1xuIik7CiAgICAgICAgICRzdHJ1
Y3R1cmVGbGFnc3siSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIn0gPSAxOyAgICAgICAK
ICAgICB9CiAKLSAgICAjIEN1c3RvbSBkZWZpbmVHZXR0ZXIgZnVuY3Rpb24KLSAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGRlZmluZUdldHRlcihKU0M6OkpTT2JqZWN0
KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNDOjpKU09iamVjdCogZ2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpO1xuIikg
aWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tRGVmaW5lR2V0dGVyIn07
Ci0KLSAgICAjIEN1c3RvbSBkZWZpbmVTZXR0ZXIgZnVuY3Rpb24KLSAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGRlZmluZVNldHRlcihKU0M6OkpTT2JqZWN0KiwgSlND
OjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpK
U09iamVjdCogc2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpO1xuIikgaWYgJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tRGVmaW5lU2V0dGVyIn07CisgICAg
IyBDdXN0b20gZGVmaW5lT3duUHJvcGVydHkgZnVuY3Rpb24KKyAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqLCBK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6
OlByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpO1xuIikgaWYgJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tRGVmaW5lT3duUHJvcGVydHkifTsKIAogICAg
ICMgT3ZlcnJpZGUgdG9Cb29sZWFuIHRvIHJldHVybiBmYWxzZSBmb3Igb2JqZWN0cyB0aGF0IHdh
bnQgdG8gJ01hc3F1ZXJhZGVzQXNVbmRlZmluZWQnLgogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIn0pIHsKQEAgLTEwNjMsOCAr
MTA1Nyw4IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIGJvb2wgcHV0RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50
aWZpZXImLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XG4iKTsKICAgICB9
CiAKLSAgICAjIEN1c3RvbSBkZWZpbmVHZXR0ZXIgZnVuY3Rpb24KLSAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGRlZmluZUdldHRlcihKU0M6OkpTT2JqZWN0KiwgSlND
OjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpK
U09iamVjdCogZ2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpO1xuIikgaWYgJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHJvdG90eXBlRGVmaW5lR2V0dGVy
In07CisgICAgIyBDdXN0b20gZGVmaW5lT3duUHJvcGVydHkgZnVuY3Rpb24KKyAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTQzo6SlNP
YmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpO1xuIikgaWYg
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHJvdG90eXBlRGVmaW5lT3du
UHJvcGVydHkifTsKIAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbnByaXZhdGU6XG4iKTsK
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZShKU0M6
OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0
cnVjdHVyZSkgeyB9XG4iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJldmlz
aW9uIDEwNjQ5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsOCArMjgsNyBAQCBtb2R1bGUgd2luZG93IHsKIAogICAgIGludGVyZmFj
ZSBbCiAgICAgICAgIENoZWNrRG9tYWluU2VjdXJpdHksCi0gICAgICAgIEN1c3RvbURlZmluZUdl
dHRlciwKLSAgICAgICAgQ3VzdG9tRGVmaW5lU2V0dGVyLAorICAgICAgICBDdXN0b21EZWZpbmVP
d25Qcm9wZXJ0eSwKICAgICAgICAgQ3VzdG9tRGVsZXRlUHJvcGVydHksCiAgICAgICAgIEN1c3Rv
bUdldE93blByb3BlcnR5U2xvdCwKICAgICAgICAgQ3VzdG9tR2V0UHJvcGVydHlOYW1lcywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaWRsCShyZXZpc2lvbiAxMDY0OTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzcsOSArMzcsOSBA
QCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRnJhbWUs
CiAgICAgICAgIEN1c3RvbURlbGV0ZVByb3BlcnR5LAogICAgICAgICBDdXN0b21HZXRQcm9wZXJ0
eU5hbWVzLAotICAgICAgICBDdXN0b21EZWZpbmVHZXR0ZXIsCisgICAgICAgIEN1c3RvbURlZmlu
ZU93blByb3BlcnR5LAogICAgICAgICBEZWxlZ2F0aW5nUHJvdG90eXBlUHV0RnVuY3Rpb24sCi0g
ICAgICAgIEN1c3RvbVByb3RvdHlwZURlZmluZUdldHRlciwKKyAgICAgICAgQ3VzdG9tUHJvdG90
eXBlRGVmaW5lT3duUHJvcGVydHksCiAgICAgICAgIE9taXRDb25zdHJ1Y3RvcgogICAgIF0gTG9j
YXRpb24gewogI2lmICFkZWZpbmVkKExBTkdVQUdFX0NQUCkgfHwgIUxBTkdVQUdFX0NQUApJbmRl
eDogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjQ5NykKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDItMDEgIEdhdmlu
IEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBK
U09iamVjdCBkZWZpbmVHZXR0ZXIvZGVmaW5lU2V0dGVyIGxvb2t1cEdldHRlci9sb29rdXBTZXR0
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NDUx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAgICBUaGVzZSBjYW4g
bm93IGFsbCBiZSBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBkZWZpbmVPd25Qcm9wZXJ0eSAmIGdl
dFByb3BlcnR5RGVzY3JpcHRvci4KKyAgICAgICAgQWxzbyByZW1vdmUgaW5pdGlhbGl6ZUdldHRl
clNldHRlclByb3BlcnR5LCBzaW5jZSB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gcHV0RGlyZWN0QWNj
ZXNzb3IuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFt
ZVByaXZhdGU6OmFkZFF0U2VuZGVyVG9HbG9iYWxPYmplY3QpOgorCiAyMDEyLTAyLTAxICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIENTU1N0
eWxlRGVjbGFyYXRpb24uZ2V0UHJvcGVydHlQcmlvcml0eSgpIGZhaWxzIGZvciBDU1Mgc2hvcnRo
YW5kIHByb3BlcnRpZXMgd2l0aCAnaW1wb3J0YW50JyBwcmlvcml0eQpJbmRleDogU291cmNlL1dl
YktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2ViZnJhbWUuY3BwCShyZXZpc2lvbiAxMDY0OTcpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2ViZnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBACiAjaW5j
bHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiUHJpbnRDb250ZXh0LmgiCiAj
aWYgVVNFKEpTQykKKyNpbmNsdWRlICJQcm9wZXJ0eURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJQ
dXRQcm9wZXJ0eVNsb3QuaCIKICNlbmRpZgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCkBAIC01
MTgsOCArNTE5LDEyIEBAIHZvaWQgUVdlYkZyYW1lUHJpdmF0ZTo6YWRkUXRTZW5kZXJUb0dsb2IK
ICAgICBKU09iamVjdFJlZiBmdW5jdGlvbiA9IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxi
YWNrKGNvbnRleHQsIHByb3BlcnR5TmFtZS5nZXQoKSwgcXRTZW5kZXJDYWxsYmFjayk7CiAKICAg
ICAvLyBKU0MgcHVibGljIEFQSSBkb2Vzbid0IHN1cHBvcnQgc2V0dGluZyBhIEdldHRlciBmb3Ig
YSBwcm9wZXJ0eSBvZiBhIGdpdmVuIG9iamVjdCwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTYxMzc0LgotICAgIHdpbmRvdy0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lR2V0
dGVyKHdpbmRvdywgZXhlYywgcHJvcGVydHlOYW1lLmdldCgpLT5pZGVudGlmaWVyKCZleGVjLT5n
bG9iYWxEYXRhKCkpLCA6OnRvSlMoZnVuY3Rpb24pLAotICAgICAgICAgICAgICAgICAgICAgICAg
IEpTQzo6UmVhZE9ubHkgfCBKU0M6OkRvbnRFbnVtIHwgSlNDOjpEb250RGVsZXRlKTsKKyAgICBK
U0M6OlByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOworICAgIGRlc2NyaXB0b3Iuc2V0R2V0
dGVyKDo6dG9KUyhmdW5jdGlvbikpOworICAgIGRlc2NyaXB0b3Iuc2V0U2V0dGVyKEpTQzo6anNV
bmRlZmluZWQoKSk7CisgICAgZGVzY3JpcHRvci5zZXRFbnVtZXJhYmxlKGZhbHNlKTsKKyAgICBk
ZXNjcmlwdG9yLnNldENvbmZpZ3VyYWJsZShmYWxzZSk7CisgICAgd2luZG93LT5tZXRob2RUYWJs
ZSgpLT5kZWZpbmVPd25Qcm9wZXJ0eSh3aW5kb3csIGV4ZWMsIHByb3BlcnR5TmFtZS5nZXQoKS0+
aWRlbnRpZmllcigmZXhlYy0+Z2xvYmFsRGF0YSgpKSwgZGVzY3JpcHRvciwgZmFsc2UpOwogfQog
I2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125564</attachid>
            <date>2012-02-05 21:21:07 -0800</date>
            <delta_ts>2012-02-05 21:21:07 -0800</delta_ts>
            <desc>Merged up</desc>
            <filename>77451.7.patch</filename>
            <type>text/plain</type>
            <size>41426</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2NzczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDEyLTAyLTA1ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW1vdmUgSlNPYmplY3QgZGVmaW5lR2V0dGVyL2RlZmluZVNldHRlciBsb29r
dXBHZXR0ZXIvbG9va3VwU2V0dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NzQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisK
KyAgICAgICAgVGhlc2UgY2FuIG5vdyBhbGwgYmUgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgZGVm
aW5lT3duUHJvcGVydHkgJiBnZXRQcm9wZXJ0eURlc2NyaXB0b3IuCisgICAgICAgIEFsc28gcmVt
b3ZlIGluaXRpYWxpemVHZXR0ZXJTZXR0ZXJQcm9wZXJ0eSwgc2luY2UgdGhpcyBpcyBlcXVpdmFs
ZW50IHRvIHB1dERpcmVjdEFjY2Vzc29yLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhw
OgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChK
U0M6OkRlYnVnZ2VyQWN0aXZhdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIGRl
YnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oOgorICAgICAgICAoRGVidWdnZXJBY3RpdmF0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgorICAgICAgICAoTWV0aG9kVGFibGUp
OgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6
CisgICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGlt
ZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQ2VsbCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToK
KyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBy
dW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAgICogcnVudGlt
ZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZp
bmVHZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIpOgor
ICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIpOgorICAgICAgICAoSlND
OjpvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIpOgorCiAyMDEyLTAyLTA1ICBHeXV5b3VuZyBL
aW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0NNQUtFXSBTdXBwb3J0
IGphdmFzY3JpcHRjb3JlIHRlc3QgZm9yIEVGTCBwb3J0LiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCShyZXZpc2lvbiAxMDY3
NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkod29ya2luZyBjb3B5KQpAQCAtMTM1LDExICsx
MzUsOCBAQCBFWFBPUlRTCiAgICAgP2RlY3JlbWVudEBSZWZDb3VudGVkTGVha0NvdW50ZXJAV1RG
QEBRQUVYWFoKICAgICA/ZGVmYXVsdEF0dHJpYnV0ZXNAUHJvcGVydHlEZXNjcmlwdG9yQEpTQ0BA
MElBCiAgICAgP2RlZmF1bHRWYWx1ZUBKU09iamVjdEBKU0NAQFNBP0FWSlNWYWx1ZUAyQFBCVjEy
QFBBVkV4ZWNTdGF0ZUAyQFc0UHJlZmVycmVkUHJpbWl0aXZlVHlwZUAyQEBaCi0gICAgP2RlZmlu
ZUdldHRlckBKU0dsb2JhbE9iamVjdEBKU0NAQFNBWFBBVkpTT2JqZWN0QDJAUEFWRXhlY1N0YXRl
QDJAQUJWSWRlbnRpZmllckAyQDBJQFoKLSAgICA/ZGVmaW5lR2V0dGVyQEpTT2JqZWN0QEpTQ0BA
U0FYUEFWMTJAUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQDBJQFoKKyAgICA/ZGVmaW5l
T3duUHJvcGVydHlASlNHbG9iYWxPYmplY3RASlNDQEBTQV9OUEFWSlNPYmplY3RAMkBQQVZFeGVj
U3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQUFWUHJvcGVydHlEZXNjcmlwdG9yQDJAX05AWgogICAg
ID9kZWZpbmVPd25Qcm9wZXJ0eUBKU09iamVjdEBKU0NAQFNBX05QQVYxMkBQQVZFeGVjU3RhdGVA
MkBBQlZJZGVudGlmaWVyQDJAQUFWUHJvcGVydHlEZXNjcmlwdG9yQDJAX05AWgotICAgID9kZWZp
bmVTZXR0ZXJASlNHbG9iYWxPYmplY3RASlNDQEBTQVhQQVZKU09iamVjdEAyQFBBVkV4ZWNTdGF0
ZUAyQEFCVklkZW50aWZpZXJAMkAwSUBaCi0gICAgP2RlZmluZVNldHRlckBKU09iamVjdEBKU0NA
QFNBWFBBVjEyQFBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkAwSUBaCiAgICAgP2RlbGV0
ZU93bmVkUHRyQFdURkBAWUFYUEFVSEJJVE1BUF9fQEBAWgogICAgID9kZWxldGVPd25lZFB0ckBX
VEZAQFlBWFBBVUhCUlVTSF9fQEBAWgogICAgID9kZWxldGVPd25lZFB0ckBXVEZAQFlBWFBBVUhE
Q19fQEBAWgpAQCAtMTc4LDcgKzE3NSw3IEBAIEVYUE9SVFMKICAgICA/ZmFzdFJlYWxsb2NAV1RG
QEBZQVBBWFBBWElAWgogICAgID9mYXN0U3RyRHVwQFdURkBAWUFQQURQQkRAWgogICAgID9mYXN0
WmVyb2VkTWFsbG9jQFdURkBAWUFQQVhJQFoKLSAgICA/ZmlsbEdldHRlclByb3BlcnR5U2xvdEBK
U09iamVjdEBKU0NAQFFBRVhBQVZQcm9wZXJ0eVNsb3RAMkBQQVY/JFdyaXRlQmFycmllckJhc2VA
VzRVbmtub3duQEpTQ0BAQDJAQFoKKyAgICA/ZmlsbEdldHRlclByb3BlcnR5U2xvdEBKU09iamVj
dEBKU0NAQEFBRVhBQVZQcm9wZXJ0eVNsb3RAMkBQQVY/JFdyaXRlQmFycmllckJhc2VAVzRVbmtu
b3duQEpTQ0BAQDJAQFoKICAgICA/ZmluYWxpemVAV2Vha0hhbmRsZU93bmVyQEpTQ0BAVUFFWFY/
JEhhbmRsZUBXNFVua25vd25ASlNDQEBAMkBQQVhAWgogICAgID9maW5pc2hDcmVhdGlvbkBEYXRl
SW5zdGFuY2VASlNDQEBJQUVYQUFWSlNHbG9iYWxEYXRhQDJATkBaCiAgICAgP2ZpbmlzaENyZWF0
aW9uQEludGVybmFsRnVuY3Rpb25ASlNDQEBJQUVYQUFWSlNHbG9iYWxEYXRhQDJAQUJWSWRlbnRp
ZmllckAyQEBaCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJB
Y3RpdmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAkocmV2aXNpb24gMTA2NzczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMSwxNiArMTAxLDEwIEBAIGJvb2wgRGVidWdnZXJBY3RpdmF0aW9uOjpnZXRPd25Q
cm9wZXJ0eUQKICAgICByZXR1cm4gdGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRob2RUYWJs
ZSgpLT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLmdl
dCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCi12b2lkIERlYnVnZ2Vy
QWN0aXZhdGlvbjo6ZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuY3Rp
b24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIERlYnVnZ2VyQWN0aXZhdGlvbjo6ZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9v
bCBzaG91bGRUaHJvdykKIHsKICAgICBEZWJ1Z2dlckFjdGl2YXRpb24qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8RGVidWdnZXJBY3RpdmF0aW9uKj4ob2JqZWN0KTsKLSAgICB0aGlzT2JqZWN0LT5tX2Fj
dGl2YXRpb24tPm1ldGhvZFRhYmxlKCktPmRlZmluZUdldHRlcih0aGlzT2JqZWN0LT5tX2FjdGl2
YXRpb24uZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rpb24sIGF0dHJpYnV0
ZXMpOwotfQotCi12b2lkIERlYnVnZ2VyQWN0aXZhdGlvbjo6ZGVmaW5lU2V0dGVyKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU09iamVjdCogc2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCi17Ci0gICAg
RGVidWdnZXJBY3RpdmF0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PERlYnVnZ2VyQWN0aXZhdGlv
bio+KG9iamVjdCk7Ci0gICAgdGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRob2RUYWJsZSgp
LT5kZWZpbmVTZXR0ZXIodGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLmdldCgpLCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHNldHRlckZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKKyAgICByZXR1cm4gdGhpc09i
amVjdC0+bV9hY3RpdmF0aW9uLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlz
T2JqZWN0LT5tX2FjdGl2YXRpb24uZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
ciwgc2hvdWxkVGhyb3cpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgJKHJl
dmlzaW9uIDEwNjc3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ckFjdGl2YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDksOCArNDksNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKICAgICAgICAgc3RhdGljIHZv
aWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IFByb3BlcnR5RGVzY3JpcHRvciYpOwotICAgICAgICBzdGF0aWMgdm9pZCBkZWZpbmVHZXR0ZXIo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
T2JqZWN0KiBnZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgICAgIHN0
YXRpYyB2b2lkIGRlZmluZVNldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAgIEpTX0VYUE9SVERBVEEg
c3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCShyZXZpc2lvbiAxMDY3NzMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAkod29ya2luZyBjb3B5KQpAQCAtNjYsMTIg
KzY2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgSlNPYmplY3QqICgqVG9U
aGlzT2JqZWN0RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4ZWNTdGF0ZSopOwogICAgICAgICBUb1Ro
aXNPYmplY3RGdW5jdGlvblB0ciB0b1RoaXNPYmplY3Q7CiAKLSAgICAgICAgdHlwZWRlZiB2b2lk
ICgqRGVmaW5lR2V0dGVyRnVuY3Rpb25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIEpTT2JqZWN0KiwgdW5zaWduZWQpOwotICAgICAgICBEZWZpbmVHZXR0ZXJG
dW5jdGlvblB0ciBkZWZpbmVHZXR0ZXI7Ci0KLSAgICAgICAgdHlwZWRlZiB2b2lkICgqRGVmaW5l
U2V0dGVyRnVuY3Rpb25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIEpTT2JqZWN0KiwgdW5zaWduZWQpOwotICAgICAgICBEZWZpbmVTZXR0ZXJGdW5jdGlvblB0
ciBkZWZpbmVTZXR0ZXI7Ci0KICAgICAgICAgdHlwZWRlZiBKU1ZhbHVlICgqRGVmYXVsdFZhbHVl
RnVuY3Rpb25QdHIpKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0
aXZlVHlwZSk7CiAgICAgICAgIERlZmF1bHRWYWx1ZUZ1bmN0aW9uUHRyIGRlZmF1bHRWYWx1ZTsK
IApAQCAtMTI4LDggKzEyMiw2IEBAIHN0cnVjdCBNZW1iZXJDaGVjayMjbWVtYmVyIHsgXAogICAg
ICAgICAmQ2xhc3NOYW1lOjpnZXRPd25Qcm9wZXJ0eVNsb3QsIFwKICAgICAgICAgJkNsYXNzTmFt
ZTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCwgXAogICAgICAgICAmQ2xhc3NOYW1lOjp0b1Ro
aXNPYmplY3QsIFwKLSAgICAgICAgJkNsYXNzTmFtZTo6ZGVmaW5lR2V0dGVyLCBcCi0gICAgICAg
ICZDbGFzc05hbWU6OmRlZmluZVNldHRlciwgXAogICAgICAgICAmQ2xhc3NOYW1lOjpkZWZhdWx0
VmFsdWUsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0T3duUHJvcGVydHlOYW1lcywgXAogICAg
ICAgICAmQ2xhc3NOYW1lOjpnZXRQcm9wZXJ0eU5hbWVzLCBcCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDEw
Njc3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKIAorI2luY2x1ZGUgIkdldHRlclNldHRlci5o
IgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTEx
LDggKzExMiw4IEBAIHZvaWQgSlNCb3VuZEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihFeGUKICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLCBleGVjdXRhYmxlLCBsZW5ndGgsIG5hbWUpOwog
ICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAKLSAgICBpbml0aWFsaXplR2V0dGVyU2V0
dGVyUHJvcGVydHkoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cywgZ2xvYmFs
T2JqZWN0KCktPnRocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKGV4ZWMpLCBEb250RGVsZXRlIHwg
RG9udEVudW0gfCBBY2Nlc3Nvcik7Ci0gICAgaW5pdGlhbGl6ZUdldHRlclNldHRlclByb3BlcnR5
KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZXIsIGdsb2JhbE9iamVjdCgpLT50aHJv
d1R5cGVFcnJvckdldHRlclNldHRlcihleGVjKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgQWNj
ZXNzb3IpOworICAgIHB1dERpcmVjdEFjY2Vzc29yKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cywgZ2xvYmFsT2JqZWN0KCktPnRocm93VHlwZUVycm9y
R2V0dGVyU2V0dGVyKGV4ZWMpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBBY2Nlc3Nvcik7Cisg
ICAgcHV0RGlyZWN0QWNjZXNzb3IoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuY2FsbGVyLCBnbG9iYWxPYmplY3QoKS0+dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIo
ZXhlYyksIERvbnREZWxldGUgfCBEb250RW51bSB8IEFjY2Vzc29yKTsKIH0KIAogdm9pZCBKU0Jv
dW5kRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkocmV2
aXNpb24gMTA2NzczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTU4LDE2ICsxNTgsNiBAQCB2b2lkIHNsb3dWYWxpZGF0ZUNl
bGwoSlNDZWxsKiBjZWxsKQogICAgIEFTU0VSVF9HQ19PQkpFQ1RfTE9PS1NfVkFMSUQoY2VsbCk7
CiB9CiAKLXZvaWQgSlNDZWxsOjpkZWZpbmVHZXR0ZXIoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgSlNPYmplY3QqLCB1bnNpZ25lZCkKLXsKLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLX0KLQotdm9pZCBKU0NlbGw6OmRlZmluZVNldHRlcihKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU09iamVjdCosIHVuc2lnbmVkKQotewotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCiBKU1ZhbHVlIEpTQ2VsbDo6ZGVmYXVsdFZhbHVl
KGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkKIHsK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxMDY3NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDggKzE1Miw2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CiAKICAgICAgICAgLy8gRHVtbXkgaW1wbGVtZW50YXRpb25zIG9mIG92ZXJyaWRlLWFibGUg
c3RhdGljIGZ1bmN0aW9ucyBmb3IgY2xhc3NlcyB0byBwdXQgaW4gdGhlaXIgTWV0aG9kVGFibGUK
LSAgICAgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgZGVmaW5lR2V0dGVy
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTT2JqZWN0KiwgdW5z
aWduZWQpOwotICAgICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBkZWZp
bmVTZXR0ZXIoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTT2JqZWN0KiBzZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDAp
OwogICAgICAgICBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKICAgICAgICAgc3RhdGljIE5PX1JF
VFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICAgICAg
c3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCShy
ZXZpc2lvbiAxMDY3NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNhbGxG
cmFtZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJGdW5jdGlv
blByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQXJy
YXkuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTm90QW5PYmpl
Y3QuaCIKQEAgLTIxOSw3ICsyMjAsNyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5
U2xvdChKU0NlCiAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJp
Y3RNb2RlKCkpIHsKICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gQmFzZTo6Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgICAg
ICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPmluaXRpYWxpemVH
ZXR0ZXJTZXR0ZXJQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QtPmdsb2Jh
bE9iamVjdCgpLT50aHJvd1R5cGVFcnJvckdldHRlclNldHRlcihleGVjKSwgRG9udERlbGV0ZSB8
IERvbnRFbnVtIHwgQWNjZXNzb3IpOworICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERp
cmVjdEFjY2Vzc29yKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0
LT5nbG9iYWxPYmplY3QoKS0+dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoZXhlYyksIERvbnRE
ZWxldGUgfCBEb250RW51bSB8IEFjY2Vzc29yKTsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBC
YXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90KTsKICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0KTsKICAgICAgICAgICAgIH0KQEAg
LTIzOCw3ICsyMzksNyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU0Nl
CiAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkp
IHsKICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgICAgICBpZiAoIXJl
c3VsdCkgewotICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPmluaXRpYWxpemVHZXR0ZXJTZXR0
ZXJQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgp
LT50aHJvd1R5cGVFcnJvckdldHRlclNldHRlcihleGVjKSwgRG9udERlbGV0ZSB8IERvbnRFbnVt
IHwgQWNjZXNzb3IpOworICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdEFjY2Vz
c29yKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0LT5nbG9iYWxP
YmplY3QoKS0+dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoZXhlYyksIERvbnREZWxldGUgfCBE
b250RW51bSB8IEFjY2Vzc29yKTsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBCYXNlOjpnZXRP
d25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKICAg
ICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0KTsKICAgICAgICAgICAgIH0KQEAgLTI2Nyw3ICsy
NjgsNyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5RGVzY3JpcHRvCiAgICAgICAg
IGlmICh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpIHsKICAgICAg
ICAgICAgIGJvb2wgcmVzdWx0ID0gQmFzZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiAgICAgICAgICAgICBpZiAo
IXJlc3VsdCkgewotICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPmluaXRpYWxpemVHZXR0ZXJT
ZXR0ZXJQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVj
dCgpLT50aHJvd1R5cGVFcnJvckdldHRlclNldHRlcihleGVjKSwgRG9udERlbGV0ZSB8IERvbnRF
bnVtIHwgQWNjZXNzb3IpOworICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdEFj
Y2Vzc29yKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0LT5nbG9i
YWxPYmplY3QoKS0+dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoZXhlYyksIERvbnREZWxldGUg
fCBEb250RW51bSB8IEFjY2Vzc29yKTsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBCYXNlOjpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0KTsKICAgICAgICAgICAg
IH0KQEAgLTI4Niw3ICsyODcsNyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5RGVz
Y3JpcHRvCiAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RN
b2RlKCkpIHsKICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gQmFzZTo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiAg
ICAgICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPmlu
aXRpYWxpemVHZXR0ZXJTZXR0ZXJQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmpl
Y3QtPmdsb2JhbE9iamVjdCgpLT50aHJvd1R5cGVFcnJvckdldHRlclNldHRlcihleGVjKSwgRG9u
dERlbGV0ZSB8IERvbnRFbnVtIHwgQWNjZXNzb3IpOworICAgICAgICAgICAgICAgIHRoaXNPYmpl
Y3QtPnB1dERpcmVjdEFjY2Vzc29yKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCB0
aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoZXhl
YyksIERvbnREZWxldGUgfCBEb250RW51bSB8IEFjY2Vzc29yKTsKICAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBCYXNlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0
KTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDEwNjc3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTcxLDIxICsxNzEsMTYgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cHV0RGlyZWN0VmlydHVhbChK
UwogICAgIH0KIH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdDo6ZGVmaW5lR2V0dGVyKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU09iamVjdCogZ2V0dGVyRnVuYywgdW5zaWduZWQgYXR0cmlidXRlcykKK2Jvb2wgSlNHbG9i
YWxPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihvYmplY3QpOwogICAgIFByb3BlcnR5
U2xvdCBzbG90OwotICAgIGlmICghdGhpc09iamVjdC0+c3ltYm9sVGFibGVHZXQocHJvcGVydHlO
YW1lLCBzbG90KSkKLSAgICAgICAgSlNWYXJpYWJsZU9iamVjdDo6ZGVmaW5lR2V0dGVyKHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuYywgYXR0cmlidXRlcyk7CisgICAg
Ly8gc2lsZW50bHkgaWdub3JlIGF0dGVtcHRzIHRvIGFkZCBhY2Nlc3NvcnMgYWxpYXNpbmcgdmFy
cy4KKyAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpICYmIHRoaXNPYmpl
Y3QtPnN5bWJvbFRhYmxlR2V0KHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CiAKLXZvaWQgSlNH
bG9iYWxPYmplY3Q6OmRlZmluZVNldHRlcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmMs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpCi17Ci0gICAgSlNHbG9iYWxPYmplY3QqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihvYmplY3QpOwotICAgIFByb3BlcnR5U2xvdCBzbG90
OwotICAgIGlmICghdGhpc09iamVjdC0+c3ltYm9sVGFibGVHZXQocHJvcGVydHlOYW1lLCBzbG90
KSkKLSAgICAgICAgSlNWYXJpYWJsZU9iamVjdDo6ZGVmaW5lU2V0dGVyKHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2V0dGVyRnVuYywgYXR0cmlidXRlcyk7Ci19CiAKIHN0YXRpYyBp
bmxpbmUgSlNPYmplY3QqIGxhc3RJblByb3RvdHlwZUNoYWluKEpTT2JqZWN0KiBvYmplY3QpCiB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgJKHJldmlzaW9uIDEwNjc3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNiw2ICsyMDYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkZWZpbmVH
ZXR0ZXIoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZGVmaW5lU2V0dGVyKEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVy
RnVuYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3Vs
ZFRocm93KTsKIAogICAgICAgICAvLyBXZSB1c2UgdGhpcyBpbiB0aGUgY29kZSBnZW5lcmF0b3Ig
YXMgd2UgcGVyZm9ybSBzeW1ib2wgdGFibGUKICAgICAgICAgLy8gbG9va3VwcyBwcmlvciB0byBp
bml0aWFsaXppbmcgdGhlIHByb3BlcnRpZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDEwNjc3MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYxLDEwNiAr
MzYxLDYgQEAgY29uc3QgSGFzaEVudHJ5KiBKU09iamVjdDo6ZmluZFByb3BlcnR5SAogICAgIHJl
dHVybiAwOwogfQogCi12b2lkIEpTT2JqZWN0OjpkZWZpbmVHZXR0ZXIoSlNPYmplY3QqIHRoaXNP
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U09iamVjdCogZ2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCi17Ci0gICAgaWYg
KHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKSB7
Ci0gICAgICAgIC8vIERlZmluaW5nIGEgZ2V0dGVyIGZvciBfX3Byb3RvX18gaXMgc2lsZW50bHkg
aWdub3JlZC4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEpTVmFsdWUgb2JqZWN0ID0g
dGhpc09iamVjdC0+Z2V0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsK
LSAgICBpZiAob2JqZWN0ICYmIG9iamVjdC5pc0dldHRlclNldHRlcigpKSB7Ci0gICAgICAgIEFT
U0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygp
KTsKLSAgICAgICAgYXNHZXR0ZXJTZXR0ZXIob2JqZWN0KS0+c2V0R2V0dGVyKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZ2V0dGVyRnVuY3Rpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwotICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90OwotICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gR2V0dGVy
U2V0dGVyOjpjcmVhdGUoZXhlYyk7Ci0gICAgdGhpc09iamVjdC0+cHV0RGlyZWN0SW50ZXJuYWw8
UHV0TW9kZURlZmluZU93blByb3BlcnR5PihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGdldHRl
clNldHRlciwgYXR0cmlidXRlcyB8IEFjY2Vzc29yLCBzbG90LCAwKTsKLQotICAgIC8vIHB1dERp
cmVjdCB3aWxsIGNoYW5nZSBvdXIgU3RydWN0dXJlIGlmIHdlIGFkZCBhIG5ldyBwcm9wZXJ0eS4g
Rm9yCi0gICAgLy8gZ2V0dGVycyBhbmQgc2V0dGVycywgdGhvdWdoLCB3ZSBhbHNvIG5lZWQgdG8g
Y2hhbmdlIG91ciBTdHJ1Y3R1cmUKLSAgICAvLyBpZiB3ZSBvdmVycmlkZSBhbiBleGlzdGluZyBu
b24tZ2V0dGVyIG9yIG5vbi1zZXR0ZXIuCi0gICAgaWYgKHNsb3QudHlwZSgpICE9IFB1dFByb3Bl
cnR5U2xvdDo6TmV3UHJvcGVydHkpCi0gICAgICAgIHRoaXNPYmplY3QtPnNldFN0cnVjdHVyZShl
eGVjLT5nbG9iYWxEYXRhKCksIFN0cnVjdHVyZTo6YXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbihn
bG9iYWxEYXRhLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1
dGVzIHwgQWNjZXNzb3IpKTsKLQotICAgIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5zZXRIYXNH
ZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHRydWUpOwotICAgIGdldHRlclNldHRlci0+c2V0R2V0dGVy
KGdsb2JhbERhdGEsIGdldHRlckZ1bmN0aW9uKTsKLX0KLQotdm9pZCBKU09iamVjdDo6aW5pdGlh
bGl6ZUdldHRlclNldHRlclByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciwgdW5zaWduZWQgYXR0
cmlidXRlcykKLXsKLSAgICAvLyBTZXQgYW4gaW5pdGFsIHByb3BlcnR5IG9uIGFuIG9iamVjdDsg
dGhlIHByb3BlcnR5IG11c3Qgbm90IGFscmVhZHkgZXhpc3QgJiB0aGUgYXR0cmlidXRlIGZsYWdz
IG11c3QgYmUgc2V0IGNvcnJlY3RseS4KLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPmdldChleGVj
LT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSkgPT0gV1RGOjpub3RGb3VuZCk7Ci0gICAgQVNT
RVJUKHN0YXRpY19jYXN0PGJvb2w+KGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwotCi0gICAgSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwotICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90OwotICAgIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9w
ZXJ0eT4oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBnZXR0ZXJTZXR0ZXIsIGF0dHJpYnV0ZXMs
IHNsb3QsIDApOwotCi0gICAgLy8gcHV0RGlyZWN0IHdpbGwgY2hhbmdlIG91ciBTdHJ1Y3R1cmUg
aWYgd2UgYWRkIGEgbmV3IHByb3BlcnR5LiBGb3IKLSAgICAvLyBnZXR0ZXJzIGFuZCBzZXR0ZXJz
LCB0aG91Z2gsIHdlIGFsc28gbmVlZCB0byBjaGFuZ2Ugb3VyIFN0cnVjdHVyZQotICAgIC8vIGlm
IHdlIG92ZXJyaWRlIGFuIGV4aXN0aW5nIG5vbi1nZXR0ZXIgb3Igbm9uLXNldHRlci4KLSAgICBp
ZiAoc2xvdC50eXBlKCkgIT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkKLSAgICAgICAg
c2V0U3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgU3RydWN0dXJlOjphdHRyaWJ1dGVDaGFu
Z2VUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJp
YnV0ZXMpKTsKLQotICAgIHN0cnVjdHVyZSgpLT5zZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
KHRydWUpOwotfQotCi12b2lkIEpTT2JqZWN0OjpkZWZpbmVTZXR0ZXIoSlNPYmplY3QqIHRoaXNP
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U09iamVjdCogc2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCi17Ci0gICAgaWYg
KHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKSB7
Ci0gICAgICAgIC8vIERlZmluaW5nIGEgc2V0dGVyIGZvciBfX3Byb3RvX18gaXMgc2lsZW50bHkg
aWdub3JlZC4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEpTVmFsdWUgb2JqZWN0ID0g
dGhpc09iamVjdC0+Z2V0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsK
LSAgICBpZiAob2JqZWN0ICYmIG9iamVjdC5pc0dldHRlclNldHRlcigpKSB7Ci0gICAgICAgIEFT
U0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygp
KTsKLSAgICAgICAgYXNHZXR0ZXJTZXR0ZXIob2JqZWN0KS0+c2V0U2V0dGVyKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgc2V0dGVyRnVuY3Rpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
UHV0UHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBH
ZXR0ZXJTZXR0ZXI6OmNyZWF0ZShleGVjKTsKLSAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3RJbnRl
cm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVy
dHlOYW1lLCBnZXR0ZXJTZXR0ZXIsIGF0dHJpYnV0ZXMgfCBBY2Nlc3Nvciwgc2xvdCwgMCk7Ci0K
LSAgICAvLyBwdXREaXJlY3Qgd2lsbCBjaGFuZ2Ugb3VyIFN0cnVjdHVyZSBpZiB3ZSBhZGQgYSBu
ZXcgcHJvcGVydHkuIEZvcgotICAgIC8vIGdldHRlcnMgYW5kIHNldHRlcnMsIHRob3VnaCwgd2Ug
YWxzbyBuZWVkIHRvIGNoYW5nZSBvdXIgU3RydWN0dXJlCi0gICAgLy8gaWYgd2Ugb3ZlcnJpZGUg
YW4gZXhpc3Rpbmcgbm9uLWdldHRlciBvciBub24tc2V0dGVyLgotICAgIGlmIChzbG90LnR5cGUo
KSAhPSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KQotICAgICAgICB0aGlzT2JqZWN0LT5z
ZXRTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5n
ZVRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKSwg
cHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzIHwgQWNjZXNzb3IpKTsKLQotICAgIHRoaXNPYmplY3Qt
PnN0cnVjdHVyZSgpLT5zZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHRydWUpOwotICAgIGdl
dHRlclNldHRlci0+c2V0U2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgc2V0dGVyRnVuY3Rpb24p
OwotfQotCi1KU1ZhbHVlIEpTT2JqZWN0Ojpsb29rdXBHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCi17Ci0gICAgUHJvcGVydHlEZXNjcmlwdG9y
IGRlc2NyaXB0b3I7Ci0gICAgaWYgKCFnZXRQcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVy
dHlOYW1lLCBkZXNjcmlwdG9yKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAg
ICBpZiAoIWRlc2NyaXB0b3IuZ2V0dGVyUHJlc2VudCgpKQotICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKLQotICAgIHJldHVybiBkZXNjcmlwdG9yLmdldHRlcigpOwotfQotCi1KU1ZhbHVl
IEpTT2JqZWN0Ojpsb29rdXBTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCi17Ci0gICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7Ci0g
ICAgaWYgKCFnZXRQcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlw
dG9yKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBpZiAoIWRlc2NyaXB0
b3Iuc2V0dGVyUHJlc2VudCgpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAK
LSAgICByZXR1cm4gZGVzY3JpcHRvci5zZXR0ZXIoKTsKLX0KLQogYm9vbCBKU09iamVjdDo6aGFz
SW5zdGFuY2UoSlNPYmplY3QqLCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEpTVmFs
dWUgcHJvdG8pCiB7CiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMDY3NzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTIsMTMgKzE5Miw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHB1dERpcmVjdE9m
ZnNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHNpemVfdCBvZmZzZXQsIEpTVmFsdWUgdmFs
dWUpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFs
dWUpOyB9CiAgICAgICAgIHZvaWQgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQoc2l6ZV90IG9m
ZnNldCkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLnNldFVuZGVmaW5lZCgpOyB9CiAKLSAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaWxsR2V0dGVyUHJvcGVydHlTbG90KFByb3Bl
cnR5U2xvdCYsIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uKTsKLSAgICAgICAg
dm9pZCBpbml0aWFsaXplR2V0dGVyU2V0dGVyUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYsIEdldHRlclNldHRlciosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotCi0gICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRlZmluZUdldHRlcihKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRl
ckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMCk7Ci0gICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIGRlZmluZVNldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmN0aW9uLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzID0gMCk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFs
dWUgbG9va3VwR2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgbG9va3VwU2V0dGVyKEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
LCBib29sIHNob3VsZFRocm93KTsKIAogICAgICAgICBib29sIGlzR2xvYmFsT2JqZWN0KCkgY29u
c3Q7CkBAIC0yOTYsNiArMjg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgcHV0
RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyLCBQdXRQcm9wZXJ0eVNsb3QmLCBKU0NlbGwqKTsK
IAogICAgICAgICBib29sIGlubGluZUdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3QoUHJvcGVydHlTbG90Jiwg
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb24pOwogCiAgICAgICAgIGNvbnN0IEhh
c2hFbnRyeSogZmluZFByb3BlcnR5SGFzaEVudHJ5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICAgICAgIFN0cnVjdHVyZSogY3JlYXRlSW5oZXJp
dG9ySUQoSlNHbG9iYWxEYXRhJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDEwNjc3MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NiwxMCArMTQ2LDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0UHJvdG8KICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKKyAgICBKU1ZhbHVlIGdldCA9IGV4ZWMt
PmFyZ3VtZW50KDEpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIGlmIChnZXRDYWxsRGF0
YShleGVjLT5hcmd1bWVudCgxKSwgY2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkKKyAgICBpZiAo
Z2V0Q2FsbERhdGEoZ2V0LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGVOb25lKQogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJpbnZhbGlkIGdl
dHRlciB1c2FnZSIpKTsKLSAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWZpbmVHZXR0
ZXIodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpLCBhc09iamVjdChleGVjLT5hcmd1bWVudCgxKSks
IDApOworCisgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CisgICAgZGVzY3JpcHRv
ci5zZXRHZXR0ZXIoZ2V0KTsKKyAgICBkZXNjcmlwdG9yLnNldEVudW1lcmFibGUodHJ1ZSk7Cisg
ICAgZGVzY3JpcHRvci5zZXRDb25maWd1cmFibGUodHJ1ZSk7CisgICAgdGhpc09iamVjdC0+bWV0
aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmll
cihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpLCBk
ZXNjcmlwdG9yLCBmYWxzZSk7CisKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCkBAIC0xNTksMTAgKzE2NiwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdFByb3RvCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCisgICAgSlNWYWx1ZSBz
ZXQgPSBleGVjLT5hcmd1bWVudCgxKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBpZiAo
Z2V0Q2FsbERhdGEoZXhlYy0+YXJndW1lbnQoMSksIGNhbGxEYXRhKSA9PSBDYWxsVHlwZU5vbmUp
CisgICAgaWYgKGdldENhbGxEYXRhKHNldCwgY2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCAi
aW52YWxpZCBzZXR0ZXIgdXNhZ2UiKSk7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+
ZGVmaW5lU2V0dGVyKHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJn
dW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwgYXNPYmplY3QoZXhlYy0+YXJn
dW1lbnQoMSkpLCAwKTsKKworICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOworICAg
IGRlc2NyaXB0b3Iuc2V0U2V0dGVyKHNldCk7CisgICAgZGVzY3JpcHRvci5zZXRFbnVtZXJhYmxl
KHRydWUpOworICAgIGRlc2NyaXB0b3Iuc2V0Q29uZmlndXJhYmxlKHRydWUpOworICAgIHRoaXNP
YmplY3QtPm1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMs
IElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpKSwgZGVzY3JpcHRvciwgZmFsc2UpOworCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtMTcyLDcgKzE4NiwxMiBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0LT5sb29rdXBHZXR0ZXIoZXhlYywgSWRl
bnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YykpKSk7CisgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CisgICAgaWYgKHRoaXNP
YmplY3QtPmdldFByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMt
PmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIGRlc2NyaXB0b3IpCisg
ICAgICAgICYmIGRlc2NyaXB0b3IuZ2V0dGVyUHJlc2VudCgpKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGRlc2NyaXB0b3IuZ2V0dGVyKCkpOworCisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQpAQCAtMTgxLDcg
KzIwMCwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvCiAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0
LT5sb29rdXBTZXR0ZXIoZXhlYywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKSk7CisgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRl
c2NyaXB0b3I7CisgICAgaWYgKHRoaXNPYmplY3QtPmdldFByb3BlcnR5RGVzY3JpcHRvcihleGVj
LCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKSksIGRlc2NyaXB0b3IpCisgICAgICAgICYmIGRlc2NyaXB0b3Iuc2V0dGVyUHJlc2Vu
dCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRlc2NyaXB0b3Iuc2V0dGVyKCkp
OworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVy
YWJsZShFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDY3NzMpCisr
KyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBA
QAorMjAxMi0wMi0wNSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVtb3ZlIEpTT2JqZWN0IGRlZmluZUdldHRlci9kZWZpbmVTZXR0ZXIgbG9v
a3VwR2V0dGVyL2xvb2t1cFNldHRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Nzc0NTEKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgor
CisgICAgICAgIFRoZXNlIGNhbiBub3cgYWxsIGJlIGltcGxlbWVudGVkIGluIHRlcm1zIG9mIGRl
ZmluZU93blByb3BlcnR5ICYgZ2V0UHJvcGVydHlEZXNjcmlwdG9yLgorICAgICAgICBBbHNvIHJl
bW92ZSBpbml0aWFsaXplR2V0dGVyU2V0dGVyUHJvcGVydHksIHNpbmNlIHRoaXMgaXMgZXF1aXZh
bGVudCB0byBwdXREaXJlY3RBY2Nlc3Nvci4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01XaW5kb3c6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaDoKKyAgICAgICAgKEpTRE9NV2luZG93U2hlbGwpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNMb2NhdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
SlNMb2NhdGlvblByb3RvdHlwZTo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIp
OgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9u
LmlkbDoKKwogMjAxMi0wMi0wNSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmVuYW1lIFtKU0NDdXN0b20qXSBJREwgdG8gW0pTQ3VzdG9tKl0gSURMCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCShyZXZpc2lvbiAxMDY3NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4OCwzNSArMzg4LDE3IEBAIHZv
aWQgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5TmFtZXMoSlMKICAgICBCYXNlOjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQog
Ci12b2lkIEpTRE9NV2luZG93OjpkZWZpbmVHZXR0ZXIoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0
ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcykKLXsKLSAgICBKU0RPTVdpbmRvdyogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCk7Ci0gICAgLy8gT25seSBhbGxv
dyBkZWZpbmluZyBnZXR0ZXJzIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAgaWYg
KCF0aGlzT2JqZWN0LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICAvLyBEb24ndCBhbGxvdyBzaGFkb3dpbmcgbG9jYXRpb24gdXNpbmcgZGVmaW5lR2V0dGVy
LgotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gImxvY2F0aW9uIikKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgQmFzZTo6ZGVmaW5lR2V0dGVyKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
Z2V0dGVyRnVuY3Rpb24sIGF0dHJpYnV0ZXMpOwotfQotCi12b2lkIEpTRE9NV2luZG93OjpkZWZp
bmVTZXR0ZXIoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBzZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0
cmlidXRlcykKLXsKLSAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdp
bmRvdyo+KG9iamVjdCk7Ci0gICAgLy8gT25seSBhbGxvdyBkZWZpbmluZyBzZXR0ZXJzIGJ5IGZy
YW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAgaWYgKCF0aGlzT2JqZWN0LT5hbGxvd3NBY2Nl
c3NGcm9tKGV4ZWMpKQotICAgICAgICByZXR1cm47Ci0gICAgQmFzZTo6ZGVmaW5lU2V0dGVyKHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2V0dGVyRnVuY3Rpb24sIGF0dHJpYnV0ZXMp
OwotfQotCiBib29sIEpTRE9NV2luZG93OjpkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0
KiBvYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hv
dWxkVGhyb3cpCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01X
aW5kb3cqPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVmaW5pbmcgcHJvcGVydGllcyBp
biB0aGlzIHdheSBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLCBhcyBpdCBhbGxvd3Mgc2V0
dGVycyB0byBiZSBpbnRyb2R1Y2VkLgogICAgIGlmICghdGhpc09iamVjdC0+YWxsb3dzQWNjZXNz
RnJvbShleGVjKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRG9uJ3QgYWxsb3cg
c2hhZG93aW5nIGxvY2F0aW9uIHVzaW5nIGFjY2Vzc29yIHByb3BlcnRpZXMuCisgICAgaWYgKGRl
c2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiBwcm9wZXJ0eU5hbWUgPT0gImxvY2F0
aW9uIikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93
blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hv
dWxkVGhyb3cpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd1NoZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd1NoZWxsLmNwcAkocmV2aXNpb24gMTA2NzczKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSwx
OCArMTM5LDYgQEAgdm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpnZXRPd25Qcm9wZXJ0eU5hbQogICAg
IHRoaXNPYmplY3QtPndpbmRvdygpLT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVz
KHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAot
dm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpkZWZpbmVHZXR0ZXIoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBn
ZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcykKLXsKLSAgICBKU0RPTVdpbmRvd1No
ZWxsKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93U2hlbGwqPihvYmplY3QpOwotICAg
IHRoaXNPYmplY3QtPndpbmRvdygpLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVHZXR0ZXIodGhpc09i
amVjdC0+d2luZG93KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rpb24sIGF0dHJp
YnV0ZXMpOwotfQotCi12b2lkIEpTRE9NV2luZG93U2hlbGw6OmRlZmluZVNldHRlcihKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNPYmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQotewotICAg
IEpTRE9NV2luZG93U2hlbGwqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+
KG9iamVjdCk7Ci0gICAgdGhpc09iamVjdC0+d2luZG93KCktPm1ldGhvZFRhYmxlKCktPmRlZmlu
ZVNldHRlcih0aGlzT2JqZWN0LT53aW5kb3coKSwgZXhlYywgcHJvcGVydHlOYW1lLCBzZXR0ZXJG
dW5jdGlvbiwgYXR0cmlidXRlcyk7Ci19Ci0KIAogLy8gLS0tLQogLy8gSlNET01XaW5kb3cgbWV0
aG9kcwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hl
bGwuaAkocmV2aXNpb24gMTA2NzczKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dTaGVsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw4ICs4Niw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0Nl
bGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0
KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJh
dGlvbk1vZGUpOwogICAgICAgICBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTQzo6SlNP
YmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVu
dW1lcmF0aW9uTW9kZSk7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGRlZmluZUdldHRlcihKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNDOjpKU09iamVjdCogZ2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
OwotICAgICAgICBzdGF0aWMgdm9pZCBkZWZpbmVTZXR0ZXIoSlNDOjpKU09iamVjdCosIEpTQzo6
RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNP
YmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgc3Rh
dGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNj
cmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICAgICAgUmVmUHRyPERPTVdyYXBwZXJX
b3JsZD4gbV93b3JsZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRp
b25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiAxMDY3NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDEx
ICsxNzAsMTEgQEAgdm9pZCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTTwogICAg
IEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
cywgbW9kZSk7CiB9CiAKLXZvaWQgSlNMb2NhdGlvbjo6ZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U09iamVjdCogZ2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTTG9j
YXRpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcgfHwgcHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mKQotICAgICAgICByZXR1cm47Ci0gICAgQmFzZTo6ZGVm
aW5lR2V0dGVyKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdGlvbiwgYXR0
cmlidXRlcyk7CisgICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiAo
cHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZyB8fCBwcm9wZXJ0
eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnZhbHVlT2YpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7CiB9CiAKIHZvaWQgSlNM
b2NhdGlvbjo6c2V0SHJlZihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCkBAIC0yODEs
MTEgKzI4MSwxMSBAQCBib29sIEpTTG9jYXRpb25Qcm90b3R5cGU6OnB1dERlbGVnYXRlKEV4CiAg
ICAgcmV0dXJuIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5n
IHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZik7CiB9CiAK
LXZvaWQgSlNMb2NhdGlvblByb3RvdHlwZTo6ZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVj
dCogZ2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTTG9jYXRpb25Q
cm90b3R5cGU6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7Ci0gICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcgfHwgcHJvcGVydHlOYW1lID09IGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mKQotICAgICAgICByZXR1cm47Ci0gICAgQmFzZTo6
ZGVmaW5lR2V0dGVyKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdGlvbiwg
YXR0cmlidXRlcyk7CisgICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAm
JiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZyB8fCBwcm9w
ZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnZhbHVlT2YpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAxMDY3NzMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5
KQpAQCAtODI3LDIwICs4MjcsMTQgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICRzdHJ1
Y3R1cmVGbGFnc3siSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIn0gPSAxOwogICAgIH0K
IAotICAgICMgQ3VzdG9tIGRlZmluZVByb3BlcnR5IGZ1bmN0aW9uIGV4aXN0cyBvbiBET01XaW5k
b3cKLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGRlZmluZU93blBy
b3BlcnR5KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxk
VGhyb3cpO1xuIikgaWYgJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyI7Ci0KICAgICAjIEN1
c3RvbSBnZXRPd25Qcm9wZXJ0eU5hbWVzIGZ1bmN0aW9uCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldFByb3BlcnR5TmFtZXMifSB8fCAkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNJbmRleEdldHRlciJ9IHx8ICRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc051bWVyaWNJbmRleEdldHRlciJ9KSB7CiAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhK
U0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5Jiwg
SlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGll
cyk7XG4iKTsKICAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok92ZXJyaWRlc0dldFByb3Bl
cnR5TmFtZXMifSA9IDE7ICAgICAgIAogICAgIH0KIAotICAgICMgQ3VzdG9tIGRlZmluZUdldHRl
ciBmdW5jdGlvbgotICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZGVm
aW5lR2V0dGVyKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OkpTT2JqZWN0KiBnZXR0ZXJGdW5jdGlvbiwgdW5z
aWduZWQgYXR0cmlidXRlcyk7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDdXN0b21EZWZpbmVHZXR0ZXIifTsKLQotICAgICMgQ3VzdG9tIGRlZmluZVNldHRlciBmdW5j
dGlvbgotICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZGVmaW5lU2V0
dGVyKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU0M6OkpTT2JqZWN0KiBzZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQg
YXR0cmlidXRlcyk7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21EZWZpbmVTZXR0ZXIifTsKKyAgICAjIEN1c3RvbSBkZWZpbmVPd25Qcm9wZXJ0eSBmdW5jdGlv
bgorICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJv
cGVydHkoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRU
aHJvdyk7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21EZWZp
bmVPd25Qcm9wZXJ0eSJ9OwogCiAgICAgIyBPdmVycmlkZSB0b0Jvb2xlYW4gdG8gcmV0dXJuIGZh
bHNlIGZvciBvYmplY3RzIHRoYXQgd2FudCB0byAnTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCcuCiAg
ICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQifSkgewpAQCAtMTA2MCw4ICsxMDU0LDggQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgYm9vbCBwdXREZWxlZ2F0ZShKU0M6OkV4ZWNT
dGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9w
ZXJ0eVNsb3QmKTtcbiIpOwogICAgIH0KIAotICAgICMgQ3VzdG9tIGRlZmluZUdldHRlciBmdW5j
dGlvbgotICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZGVmaW5lR2V0
dGVyKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU0M6OkpTT2JqZWN0KiBnZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQg
YXR0cmlidXRlcyk7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21Qcm90b3R5cGVEZWZpbmVHZXR0ZXIifTsKKyAgICAjIEN1c3RvbSBkZWZpbmVPd25Qcm9wZXJ0
eSBmdW5jdGlvbgorICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVm
aW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlND
OjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9v
bCBzaG91bGRUaHJvdyk7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
dXN0b21Qcm90b3R5cGVEZWZpbmVPd25Qcm9wZXJ0eSJ9OwogCiAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIlxucHJpdmF0ZTpcbiIpOwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJHtj
bGFzc05hbWV9UHJvdG90eXBlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgOiBKU0M6OkpTTm9uRmlu
YWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKSB7IH1cbiIpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gMTA2NzczKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw3IEBAIG1vZHVsZSB3
aW5kb3cgewogCiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ2hlY2tEb21haW5TZWN1cml0eSwK
LSAgICAgICAgQ3VzdG9tRGVmaW5lR2V0dGVyLAotICAgICAgICBDdXN0b21EZWZpbmVTZXR0ZXIs
CisgICAgICAgIEN1c3RvbURlZmluZU93blByb3BlcnR5LAogICAgICAgICBDdXN0b21EZWxldGVQ
cm9wZXJ0eSwKICAgICAgICAgQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90LAogICAgICAgICBDdXN0
b21HZXRQcm9wZXJ0eU5hbWVzLApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwJKHJldmlz
aW9uIDEwNjc3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw5ICszNyw5IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBKU0dlbmVy
YXRlSXNSZWFjaGFibGU9SW1wbEZyYW1lLAogICAgICAgICBDdXN0b21EZWxldGVQcm9wZXJ0eSwK
ICAgICAgICAgQ3VzdG9tR2V0UHJvcGVydHlOYW1lcywKLSAgICAgICAgQ3VzdG9tRGVmaW5lR2V0
dGVyLAorICAgICAgICBDdXN0b21EZWZpbmVPd25Qcm9wZXJ0eSwKICAgICAgICAgSlNDdXN0b21Q
cm90b3R5cGVQdXREZWxlZ2F0ZSwKLSAgICAgICAgQ3VzdG9tUHJvdG90eXBlRGVmaW5lR2V0dGVy
LAorICAgICAgICBDdXN0b21Qcm90b3R5cGVEZWZpbmVPd25Qcm9wZXJ0eSwKICAgICAgICAgT21p
dENvbnN0cnVjdG9yCiAgICAgXSBMb2NhdGlvbiB7CiAjaWYgIWRlZmluZWQoTEFOR1VBR0VfQ1BQ
KSB8fCAhTEFOR1VBR0VfQ1BQCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gMTA2NzczKQor
KysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NiBAQAorMjAxMi0wMi0wNSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVtb3ZlIEpTT2JqZWN0IGRlZmluZUdldHRlci9kZWZpbmVTZXR0ZXIg
bG9va3VwR2V0dGVyL2xvb2t1cFNldHRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Nzc0NTEKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vpbmln
LgorCisgICAgICAgIFRoZXNlIGNhbiBub3cgYWxsIGJlIGltcGxlbWVudGVkIGluIHRlcm1zIG9m
IGRlZmluZU93blByb3BlcnR5ICYgZ2V0UHJvcGVydHlEZXNjcmlwdG9yLgorICAgICAgICBBbHNv
IHJlbW92ZSBpbml0aWFsaXplR2V0dGVyU2V0dGVyUHJvcGVydHksIHNpbmNlIHRoaXMgaXMgZXF1
aXZhbGVudCB0byBwdXREaXJlY3RBY2Nlc3Nvci4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUu
Y3BwOgorICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6YWRkUXRTZW5kZXJUb0dsb2JhbE9iamVj
dCk6CisKIDIwMTItMDItMDMgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbmFtZSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oLy5jcHAgdG8gU3R5bGVQ
cm9wZXJ0eVNldC5oLy5jcHAgCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAJKHJl
dmlzaW9uIDEwNjc3MykKKysrIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZl
bnQuaCIKICNpbmNsdWRlICJQcmludENvbnRleHQuaCIKICNpZiBVU0UoSlNDKQorI2luY2x1ZGUg
IlByb3BlcnR5RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlB1dFByb3BlcnR5U2xvdC5oIgogI2Vu
ZGlmCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKQEAgLTUxNyw4ICs1MTgsMTIgQEAgdm9pZCBR
V2ViRnJhbWVQcml2YXRlOjphZGRRdFNlbmRlclRvR2xvYgogICAgIEpTT2JqZWN0UmVmIGZ1bmN0
aW9uID0gSlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2soY29udGV4dCwgcHJvcGVydHlO
YW1lLmdldCgpLCBxdFNlbmRlckNhbGxiYWNrKTsKIAogICAgIC8vIEpTQyBwdWJsaWMgQVBJIGRv
ZXNuJ3Qgc3VwcG9ydCBzZXR0aW5nIGEgR2V0dGVyIGZvciBhIHByb3BlcnR5IG9mIGEgZ2l2ZW4g
b2JqZWN0LCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEzNzQuCi0g
ICAgd2luZG93LT5tZXRob2RUYWJsZSgpLT5kZWZpbmVHZXR0ZXIod2luZG93LCBleGVjLCBwcm9w
ZXJ0eU5hbWUuZ2V0KCktPmlkZW50aWZpZXIoJmV4ZWMtPmdsb2JhbERhdGEoKSksIDo6dG9KUyhm
dW5jdGlvbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgSlNDOjpSZWFkT25seSB8IEpTQzo6
RG9udEVudW0gfCBKU0M6OkRvbnREZWxldGUpOworICAgIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9y
IGRlc2NyaXB0b3I7CisgICAgZGVzY3JpcHRvci5zZXRHZXR0ZXIoOjp0b0pTKGZ1bmN0aW9uKSk7
CisgICAgZGVzY3JpcHRvci5zZXRTZXR0ZXIoSlNDOjpqc1VuZGVmaW5lZCgpKTsKKyAgICBkZXNj
cmlwdG9yLnNldEVudW1lcmFibGUoZmFsc2UpOworICAgIGRlc2NyaXB0b3Iuc2V0Q29uZmlndXJh
YmxlKGZhbHNlKTsKKyAgICB3aW5kb3ctPm1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5
KHdpbmRvdywgZXhlYywgcHJvcGVydHlOYW1lLmdldCgpLT5pZGVudGlmaWVyKCZleGVjLT5nbG9i
YWxEYXRhKCkpLCBkZXNjcmlwdG9yLCBmYWxzZSk7CiB9CiAjZW5kaWYKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>