<?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>120878</bug_id>
          
          <creation_ts>2013-09-06 11:57:24 -0700</creation_ts>
          <short_desc>Split MediaStreamDescriptor.h and MediaStreamComponent.h into .h and .cpp</short_desc>
          <delta_ts>2013-09-11 09:13:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>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>BlinkMergeCandidate</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>121101</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>925760</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-09-06 11:57:24 -0700</bug_when>
    <thetext>Consider merging https://chromium.googlesource.com/chromium/blink/+/270b07c899154510d539c7e1d2e0411be46c257a 

What one were two simple classes have grown and now needs a split into a header
and a implementation file. These files will go through some work soon as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927452</commentid>
    <comment_count>1</comment_count>
      <attachid>211231</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-09-10 13:20:00 -0700</bug_when>
    <thetext>Created attachment 211231
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927453</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-10 13:22:00 -0700</bug_when>
    <thetext>Attachment 211231 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Modules/mediastream/LocalMediaStream.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStream.cpp&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamComponent.cpp&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamComponent.h&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamDescriptor.cpp&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamDescriptor.h&apos;]&quot; exit_code: 1
Source/WebCore/platform/mediastream/MediaStreamDescriptor.h:62:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 9 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>927456</commentid>
    <comment_count>3</comment_count>
      <attachid>211232</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-09-10 13:33:17 -0700</bug_when>
    <thetext>Created attachment 211232
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927463</commentid>
    <comment_count>4</comment_count>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2013-09-10 13:44:34 -0700</bug_when>
    <thetext>Maybe add MediaStreamComponent.cpp and MediaStreamDescriptor.cpp to Source/WebCore/CMakeLists as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927474</commentid>
    <comment_count>5</comment_count>
      <attachid>211238</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-09-10 13:58:43 -0700</bug_when>
    <thetext>Created attachment 211238
Include new files in CMakeLists.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927477</commentid>
    <comment_count>6</comment_count>
      <attachid>211238</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-09-10 14:01:48 -0700</bug_when>
    <thetext>Comment on attachment 211238
Include new files in CMakeLists.txt

LGTM. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927511</commentid>
    <comment_count>7</comment_count>
      <attachid>211238</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-10 14:41:00 -0700</bug_when>
    <thetext>Comment on attachment 211238
Include new files in CMakeLists.txt

Clearing flags on attachment: 211238

Committed r155477: &lt;http://trac.webkit.org/changeset/155477&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927512</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-10 14:41:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927536</commentid>
    <comment_count>9</comment_count>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2013-09-10 15:08:17 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created an attachment (id=211238) [details]
&gt; Include new files in CMakeLists.txt

The files were included in the CMakeList.txt with a wrong path, and caused build problems in EFL :)

I submitted https://bugs.webkit.org/show_bug.cgi?id=121126 to fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927808</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-09-11 09:13:07 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #5)
&gt; &gt; Created an attachment (id=211238) [details] [details]
&gt; &gt; Include new files in CMakeLists.txt
&gt; 
&gt; The files were included in the CMakeList.txt with a wrong path, and caused build problems in EFL :)
&gt; 
  Sorry about that :-(

&gt; I submitted https://bugs.webkit.org/show_bug.cgi?id=121126 to fix it.
&gt;
  Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211231</attachid>
            <date>2013-09-10 13:20:00 -0700</date>
            <delta_ts>2013-09-10 13:33:17 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>split_descriptor_3.txt</filename>
            <type>text/plain</type>
            <size>24640</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NTQ2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDEzLTA5LTEwICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFNwbGl0IE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvci5oIGFuZCBNZWRpYVN0cmVhbUNvbXBvbmVudC5oIGludG8gLmggYW5kIC5j
cHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDg3
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgbm8gZnVuY3Rpb25hbCBjaGFuZ2UuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOiBBZGQgTWVkaWFTdHJlYW1Db21wb25lbnQuY3BwIGFuZCBNZWRpYVN0cmVhbURlc2Ny
aXB0b3IuY3BwLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3Ry
ZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsTWVkaWFTdHJlYW06OmNyZWF0ZSk6IE1l
ZGlhU3RyZWFtRGVzY3JpcHRvcjo6Y3JlYXRlKCkgZG9lc24ndCB0YWtlIGEgVVVJRC4KKworICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRnJvbVNvdXJjZVZlY3RvcnMpOiBEaXR0by4KKworICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIE1lZGlhU3RyZWFtQ29tcG9uZW50LmNw
cCBhbmQgTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcC4KKworICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29tcG9uZW50LmNwcDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db21wb25lbnQuaDoKKworICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHA6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oOgorCiAy
MDEzLTA5LTEwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFttYWNdIFBERkRvY3VtZW50SW1hZ2Ugc2hvdWxkIHVzZSBQREZLaXQgdG8gZHJhdwpJbmRl
eDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNTU0MzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC01NDUwLDcg
KzU0NTAsOSBAQCB3ZWJjb3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbXBvbmVudC5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29tcG9u
ZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
RGVzY3JpcHRvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtRGVzY3JpcHRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0xvY2FsTWVkaWFTdHJlYW0uY3BwCShyZXZp
c2lvbiAxNTU0MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0xvY2Fs
TWVkaWFTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMyArMjksMTIgQEAKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKLSNp
bmNsdWRlICJVVUlELmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxMb2Nh
bE1lZGlhU3RyZWFtPiBMb2NhbE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNl
cywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291cmNlcykKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IExvY2FsTWVkaWFTdHJlYW0oY29udGV4dCwgTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yOjpjcmVhdGUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBhdWRpb1NvdXJj
ZXMsIHZpZGVvU291cmNlcykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IExvY2FsTWVkaWFT
dHJlYW0oY29udGV4dCwgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUoYXVkaW9Tb3VyY2Vz
LCB2aWRlb1NvdXJjZXMpKSk7CiB9CiAKIFBhc3NSZWZQdHI8TG9jYWxNZWRpYVN0cmVhbT4gTG9j
YWxNZWRpYVN0cmVhbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBzdHJlYW1EZXNjcmlwdG9yKQpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5j
cHAJKHJldmlzaW9uIDE1NTQzOSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2IEBACiAjaW5j
bHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5o
IgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tFdmVudC5oIgotI2luY2x1ZGUgIlVVSUQuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01OCw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIHBy
b2Nlc3NUcmFjayhNZWRpYVN0cmVhbVRyYWMKIAogc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW0+IGNyZWF0ZUZyb21Tb3VyY2VWZWN0b3JzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1l
ZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRlb1NvdXJjZXMpCiB7Ci0gICAgUmVmUHRyPE1lZGlh
U3RyZWFtRGVzY3JpcHRvcj4gZGVzY3JpcHRvciA9IE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6Y3Jl
YXRlKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJj
ZXMpOworICAgIFJlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IGRlc2NyaXB0b3IgPSBNZWRp
YVN0cmVhbURlc2NyaXB0b3I6OmNyZWF0ZShhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7CiAg
ICAgTWVkaWFTdHJlYW1DZW50ZXI6Omluc3RhbmNlKCkuZGlkQ3JlYXRlTWVkaWFTdHJlYW0oZGVz
Y3JpcHRvci5nZXQoKSk7CiAKICAgICByZXR1cm4gTWVkaWFTdHJlYW06OmNyZWF0ZShjb250ZXh0
LCBkZXNjcmlwdG9yLnJlbGVhc2UoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTU0MzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTk0LDYgKzk0LDggQEAKIAkJMDcwNzU2REYxNDIzOUI0RTAwNDE0MTYxIC8qIEpTVGV4
dFRyYWNrQ3VlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzA3NTZEOTE0MjM5QjRDMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0LmNw
cCAqLzsgfTsKIAkJMDcwNzU2RTAxNDIzOUI0RTAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNzU2
REExNDIzOUI0RTAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlzdC5oICovOyB9OwogCQkwNzA5
RkM0RTEwMjVERUUzMDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNsaWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwOUZDNEQxMDI1REVFMzAwNTlD
REJBIC8qIEFjY2Vzc2liaWxpdHlTbGlkZXIuaCAqLzsgfTsKKwkJMDcxMTU4OTAxN0RGNkY2MjAw
RURGRTJCIC8qIE1lZGlhU3RyZWFtQ29tcG9uZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MTE1ODhFMTdERjYzMzcwMEVERkUyQiAvKiBNZWRp
YVN0cmVhbUNvbXBvbmVudC5jcHAgKi87IH07CisJCTA3MTE1ODkxMTdERjZGNjYwMEVERkUyQiAv
KiBNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDcxMTU4OEYxN0RGNjMzNzAwRURGRTJCIC8qIE1lZGlhU3RyZWFt
RGVzY3JpcHRvci5jcHAgKi87IH07CiAJCTA3MUE5RUMyMTY4RkJDNDMwMDI2MjlGOSAvKiBUZXh0
VHJhY2tDdWVHZW5lcmljLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3MUE5RUMwMTY4RkI1NkMwMDI2MjlGOSAvKiBUZXh0VHJhY2tDdWVHZW5lcmlj
LmNwcCAqLzsgfTsKIAkJMDcxQTlFQzMxNjhGQkM1NTAwMjYyOUY5IC8qIFRleHRUcmFja0N1ZUdl
bmVyaWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
MUE5RUMxMTY4RkI1NkMwMDI2MjlGOSAvKiBUZXh0VHJhY2tDdWVHZW5lcmljLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyMEIwQTAxNEQzMzIz
NTAwNjQyOTU1IC8qIEdlbmVyaWNFdmVudFF1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MjBCMDlFMTREMzMyMzUwMDY0Mjk1NSAvKiBHZW5l
cmljRXZlbnRRdWV1ZS5jcHAgKi87IH07CkBAIC02NDI4LDYgKzY0MzAsOCBAQAogCQkwNzA3NTZE
QTE0MjM5QjRFMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTVGV4dFRyYWNrQ3VlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzA5RkM0RDEwMjVERUUzMDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNs
aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5U2xp
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MEREOEY1MEYwMTg2ODAwMDcy
N0RFQiAvKiBtZWRpYUNvbnRyb2xzLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBtZWRpYUNv
bnRyb2xzLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcxMTU4OEUxN0RGNjMz
NzAwRURGRTJCIC8qIE1lZGlhU3RyZWFtQ29tcG9uZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFtQ29tcG9uZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDcxMTU4OEYxN0RGNjMzNzAwRURGRTJCIC8qIE1lZGlhU3RyZWFt
RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRp
YVN0cmVhbURlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzFB
OUVDMDE2OEZCNTZDMDAyNjI5RjkgLyogVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0VHJhY2tDdWVHZW5lcmljLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcxQTlFQzExNjhGQjU2QzAwMjYyOUY5IC8qIFRl
eHRUcmFja0N1ZUdlbmVyaWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4
dFRyYWNrQ3VlR2VuZXJpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzIwQjA5
RTE0RDMzMjM1MDA2NDI5NTUgLyogR2VuZXJpY0V2ZW50UXVldWUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJpY0V2ZW50UXVldWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTMzMjMsNyArMTMzMjcsOSBAQAogCQkJCTA3MjIxQjk5MTdD
RjBBRDQwMDg0OEU1MSAvKiBNZWRpYUNvbnN0cmFpbnRzLmggKi8sCiAJCQkJMDcyMjFCOUExN0NG
MEFENDAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtQ2VudGVyLmNwcCAqLywKIAkJCQkwNzIyMUI5QjE3
Q0YwQUQ0MDA4NDhFNTEgLyogTWVkaWFTdHJlYW1DZW50ZXIuaCAqLywKKwkJCQkwNzExNTg4RTE3
REY2MzM3MDBFREZFMkIgLyogTWVkaWFTdHJlYW1Db21wb25lbnQuY3BwICovLAogCQkJCTA3MjIx
QjlDMTdDRjBBRDQwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbUNvbXBvbmVudC5oICovLAorCQkJCTA3
MTE1ODhGMTdERjYzMzcwMEVERkUyQiAvKiBNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwICovLAog
CQkJCTA3MjIxQjlEMTdDRjBBRDQwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCAq
LywKIAkJCQkwNzIyMUI5RTE3Q0YwQUQ0MDA4NDhFNTEgLyogTWVkaWFTdHJlYW1Tb3VyY2UuY3Bw
ICovLAogCQkJCTA3MjIxQjlGMTdDRjBBRDQwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbVNvdXJjZS5o
ICovLApAQCAtMjY2MDAsNiArMjY2MDYsOCBAQAogCQkJCUQzQTk0QTM4MTIyREFCQUMwMEEzN0JC
QyAvKiBNZWRpYVF1ZXJ5TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEM0FBMTBGMzEyM0E5
OEFBMDA5MjE1MkIgLyogTWVkaWFRdWVyeU1hdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RkQ2NzFBNzcxNTlCQjA3MDAwMTk3NTU5IC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTA3MTE1ODkwMTdERjZGNjIwMEVERkUyQiAvKiBNZWRpYVN0
cmVhbUNvbXBvbmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzExNTg5MTE3REY2RjY2MDBF
REZFMkIgLyogTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
QjE2QzE3MDk3OUMzQkQwMDQ2Nzc0MSAvKiBNZW1vcnlDYWNoZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk2NTdFREEwODEzODVDQjk3MDA0RTA2NDUgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTY1N0VEQTBCMTM4NUNCRDgwMDRFMDY0NSAvKiBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXJNYWMubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29tcG9uZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbXBv
bmVudC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbUNvbXBvbmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ29tcG9uZW50
LmgiCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgIlVVSUQuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ29tcG9uZW50
PiBNZWRpYVN0cmVhbUNvbXBvbmVudDo6Y3JlYXRlKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3Vy
Y2U+IHNvdXJjZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtQ29tcG9u
ZW50KGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgMCwgc291cmNlKSk7Cit9CisKK1Bhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1Db21wb25lbnQ+IE1lZGlhU3RyZWFtQ29tcG9uZW50OjpjcmVhdGUo
TWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0sIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3Vy
Y2U+IHNvdXJjZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtQ29tcG9u
ZW50KGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgc3RyZWFtLCBzb3VyY2UpKTsKK30KKwor
TWVkaWFTdHJlYW1Db21wb25lbnQ6Ok1lZGlhU3RyZWFtQ29tcG9uZW50KGNvbnN0IFN0cmluZyYg
aWQsIE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
U291cmNlPiBzb3VyY2UpCisgICAgOiBtX3N0cmVhbShzdHJlYW0pCisgICAgLCBtX3NvdXJjZShz
b3VyY2UpCisgICAgLCBtX2lkKGlkKQorICAgICwgbV9lbmFibGVkKHRydWUpCit7CisgICAgQVNT
RVJUKG1faWQubGVuZ3RoKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29tcG9uZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1Db21wb25lbnQuaAkocmV2aXNpb24gMTU1NDM5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db21wb25lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgRXJpY3Nzb24gQUIu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzMsMjkgKzM0LDE5IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi0jaW5jbHVkZSAi
TWVkaWFTdHJlYW1Tb3VyY2UuaCIKLSNpbmNsdWRlICJVVUlELmgiCisjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvcjsKK2NsYXNzIE1lZGlhU3RyZWFtU291cmNlOwogCiBjbGFzcyBNZWRpYVN0
cmVhbUNvbXBvbmVudCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtQ29tcG9uZW50PiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Db21wb25lbnQ+IGNy
ZWF0ZShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBzb3VyY2UpCi0gICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtQ29tcG9uZW50KGNyZWF0ZUNhbm9uaWNh
bFVVSURTdHJpbmcoKSwgMCwgc291cmNlKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1Db21wb25lbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtU291cmNlPiBzb3VyY2UpCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IE1lZGlhU3RyZWFtQ29tcG9uZW50KGlkLCAwLCBzb3VyY2UpKTsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNvbXBvbmVudD4gY3JlYXRlKE1lZGlh
U3RyZWFtRGVzY3JpcHRvciogc3RyZWFtLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBz
b3VyY2UpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtQ29t
cG9uZW50KGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgc3RyZWFtLCBzb3VyY2UpKTsKLSAg
ICB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Db21wb25lbnQ+IGNyZWF0ZShQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1Db21wb25lbnQ+IGNyZWF0ZShNZWRpYVN0cmVhbURlc2NyaXB0b3IqLCBQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtU291cmNlPik7CiAKICAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0
cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyZWFtOyB9CiAgICAgdm9pZCBzZXRTdHJlYW0oTWVk
aWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0pIHsgQVNTRVJUKCFtX3N0cmVhbSAmJiBzdHJlYW0p
OyBtX3N0cmVhbSA9IHN0cmVhbTsgfQpAQCAtNjcsMTQgKzU4LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0RW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9lbmFibGVkID0gZW5hYmxlZDsgfQogCiBw
cml2YXRlOgotICAgIE1lZGlhU3RyZWFtQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgaWQsIE1lZGlh
U3RyZWFtRGVzY3JpcHRvciogc3RyZWFtLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBz
b3VyY2UpCi0gICAgICAgIDogbV9zdHJlYW0oc3RyZWFtKQotICAgICAgICAsIG1fc291cmNlKHNv
dXJjZSkKLSAgICAgICAgLCBtX2lkKGlkKQotICAgICAgICAsIG1fZW5hYmxlZCh0cnVlKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKG1faWQubGVuZ3RoKCkpOwotICAgIH0KKyAgICBNZWRpYVN0cmVh
bUNvbXBvbmVudChjb25zdCBTdHJpbmcmIGlkLCBNZWRpYVN0cmVhbURlc2NyaXB0b3IqLCBQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPik7CiAKICAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3Iq
IG1fc3RyZWFtOwogICAgIFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4gbV9zb3VyY2U7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEVyaWNz
c29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAi
TWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5o
IgorI2luY2x1ZGUgIlVVSUQuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtRGVzY3JpcHRvcj4gTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUoY29uc3Qg
TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1T
b3VyY2VWZWN0b3ImIHZpZGVvU291cmNlcykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1l
ZGlhU3RyZWFtRGVzY3JpcHRvcihjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksIGF1ZGlvU291
cmNlcywgdmlkZW9Tb3VyY2VzKSk7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlw
dG9yPiBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbUNvbXBv
bmVudFZlY3RvciYgYXVkaW9Db21wb25lbnRzLCBjb25zdCBNZWRpYVN0cmVhbUNvbXBvbmVudFZl
Y3RvciYgdmlkZW9Db21wb25lbnRzKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFT
dHJlYW1EZXNjcmlwdG9yKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgYXVkaW9Db21wb25l
bnRzLCB2aWRlb0NvbXBvbmVudHMpKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbURlc2NyaXB0b3I6
OmFkZENvbXBvbmVudChQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ29tcG9uZW50PiBjb21wb25lbnQp
Cit7CisgICAgc3dpdGNoIChjb21wb25lbnQtPnNvdXJjZSgpLT50eXBlKCkpIHsKKyAgICBjYXNl
IE1lZGlhU3RyZWFtU291cmNlOjpUeXBlQXVkaW86CisgICAgICAgIGlmIChtX2F1ZGlvQ29tcG9u
ZW50cy5maW5kKGNvbXBvbmVudCkgPT0gbm90Rm91bmQpCisgICAgICAgICAgICBtX2F1ZGlvQ29t
cG9uZW50cy5hcHBlbmQoY29tcG9uZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNZWRp
YVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvOgorICAgICAgICBpZiAobV92aWRlb0NvbXBvbmVudHMu
ZmluZChjb21wb25lbnQpID09IG5vdEZvdW5kKQorICAgICAgICAgICAgbV92aWRlb0NvbXBvbmVu
dHMuYXBwZW5kKGNvbXBvbmVudCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBN
ZWRpYVN0cmVhbURlc2NyaXB0b3I6OnJlbW92ZUNvbXBvbmVudChQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtQ29tcG9uZW50PiBjb21wb25lbnQpCit7CisgICAgc2l6ZV90IHBvcyA9IG5vdEZvdW5kOwor
ICAgIHN3aXRjaCAoY29tcG9uZW50LT5zb3VyY2UoKS0+dHlwZSgpKSB7CisgICAgY2FzZSBNZWRp
YVN0cmVhbVNvdXJjZTo6VHlwZUF1ZGlvOgorICAgICAgICBwb3MgPSBtX2F1ZGlvQ29tcG9uZW50
cy5maW5kKGNvbXBvbmVudCk7CisgICAgICAgIGlmIChwb3MgIT0gbm90Rm91bmQpCisgICAgICAg
ICAgICBtX2F1ZGlvQ29tcG9uZW50cy5yZW1vdmUocG9zKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvOgorICAgICAgICBwb3MgPSBtX3ZpZGVv
Q29tcG9uZW50cy5maW5kKGNvbXBvbmVudCk7CisgICAgICAgIGlmIChwb3MgIT0gbm90Rm91bmQp
CisgICAgICAgICAgICBtX3ZpZGVvQ29tcG9uZW50cy5yZW1vdmUocG9zKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorfQorCit2b2lkIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6YWRkUmVtb3RlVHJh
Y2soTWVkaWFTdHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCkKK3sKKyAgICBpZiAobV9jbGllbnQp
CisgICAgICAgIG1fY2xpZW50LT5hZGRSZW1vdGVUcmFjayhjb21wb25lbnQpOworICAgIGVsc2UK
KyAgICAgICAgYWRkQ29tcG9uZW50KGNvbXBvbmVudCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yOjpyZW1vdmVSZW1vdGVUcmFjayhNZWRpYVN0cmVhbUNvbXBvbmVudCogY29tcG9u
ZW50KQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnJlbW92ZVJlbW90
ZVRyYWNrKGNvbXBvbmVudCk7CisgICAgZWxzZQorICAgICAgICByZW1vdmVDb21wb25lbnQoY29t
cG9uZW50KTsKK30KKworTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpNZWRpYVN0cmVhbURlc2NyaXB0
b3IoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlv
U291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291cmNlcykKKyAg
ICA6IG1fY2xpZW50KDApCisgICAgLCBtX2lkKGlkKQorICAgICwgbV9lbmRlZChmYWxzZSkKK3sK
KyAgICBBU1NFUlQobV9pZC5sZW5ndGgoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBh
dWRpb1NvdXJjZXMuc2l6ZSgpOyBpKyspCisgICAgICAgIG1fYXVkaW9Db21wb25lbnRzLmFwcGVu
ZChNZWRpYVN0cmVhbUNvbXBvbmVudDo6Y3JlYXRlKHRoaXMsIGF1ZGlvU291cmNlc1tpXSkpOwor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2aWRlb1NvdXJjZXMuc2l6ZSgpOyBpKyspCisg
ICAgICAgIG1fdmlkZW9Db21wb25lbnRzLmFwcGVuZChNZWRpYVN0cmVhbUNvbXBvbmVudDo6Y3Jl
YXRlKHRoaXMsIHZpZGVvU291cmNlc1tpXSkpOworfQorCitNZWRpYVN0cmVhbURlc2NyaXB0b3I6
Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBNZWRpYVN0cmVh
bUNvbXBvbmVudFZlY3RvciYgYXVkaW9Db21wb25lbnRzLCBjb25zdCBNZWRpYVN0cmVhbUNvbXBv
bmVudFZlY3RvciYgdmlkZW9Db21wb25lbnRzKQorICAgIDogbV9jbGllbnQoMCkKKyAgICAsIG1f
aWQoaWQpCisgICAgLCBtX2VuZGVkKGZhbHNlKQoreworICAgIEFTU0VSVChtX2lkLmxlbmd0aCgp
KTsKKyAgICBmb3IgKE1lZGlhU3RyZWFtQ29tcG9uZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBp
dGVyID0gYXVkaW9Db21wb25lbnRzLmJlZ2luKCk7IGl0ZXIgIT0gYXVkaW9Db21wb25lbnRzLmVu
ZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgKCppdGVyKS0+c2V0U3RyZWFtKHRoaXMpOworICAgICAg
ICBtX2F1ZGlvQ29tcG9uZW50cy5hcHBlbmQoKCppdGVyKSk7CisgICAgfQorICAgIGZvciAoTWVk
aWFTdHJlYW1Db21wb25lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSB2aWRlb0NvbXBv
bmVudHMuYmVnaW4oKTsgaXRlciAhPSB2aWRlb0NvbXBvbmVudHMuZW5kKCk7ICsraXRlcikgewor
ICAgICAgICAoKml0ZXIpLT5zZXRTdHJlYW0odGhpcyk7CisgICAgICAgIG1fdmlkZW9Db21wb25l
bnRzLmFwcGVuZCgoKml0ZXIpKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgJKHJldmlzaW9uIDE1NTQzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
IAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ29tcG9uZW50LmgiCisjaW5jbHVkZSAiTWVkaWFTdHJl
YW1Tb3VyY2UuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIApAQCAtNTcsMTUgKzU4LDkgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5F
eHRyYURhdGEoKSB7IH0KICAgICB9OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1EZXNjcmlwdG9yPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgTWVkaWFTdHJlYW1T
b3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3Im
IHZpZGVvU291cmNlcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFT
dHJlYW1EZXNjcmlwdG9yKGlkLCBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcykpOwotICAgIH0K
LQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgaWQsIGNvbnN0IE1lZGlhU3RyZWFtQ29tcG9uZW50VmVjdG9yJiBhdWRpb0Nv
bXBvbmVudHMsIGNvbnN0IE1lZGlhU3RyZWFtQ29tcG9uZW50VmVjdG9yJiB2aWRlb0NvbXBvbmVu
dHMpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtRGVzY3Jp
cHRvcihpZCwgYXVkaW9Db21wb25lbnRzLCB2aWRlb0NvbXBvbmVudHMpKTsKLSAgICB9CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBjcmVhdGUoY29uc3QgTWVk
aWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1Tb3Vy
Y2VWZWN0b3ImIHZpZGVvU291cmNlcyk7CisgIAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtRGVzY3JpcHRvcj4gY3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtQ29tcG9uZW50VmVjdG9y
JiBhdWRpb0NvbXBvbmVudHMsIGNvbnN0IE1lZGlhU3RyZWFtQ29tcG9uZW50VmVjdG9yJiB2aWRl
b0NvbXBvbmVudHMpOwogCiAgICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yQ2xpZW50KiBjbGllbnQo
KSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQogICAgIHZvaWQgc2V0Q2xpZW50KE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvckNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CkBAIC03
NSw1NSArNzAsMTQgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIG51bWJlck9mQXVkaW9Db21wb25l
bnRzKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb0NvbXBvbmVudHMuc2l6ZSgpOyB9CiAgICAgTWVk
aWFTdHJlYW1Db21wb25lbnQqIGF1ZGlvQ29tcG9uZW50KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7
IHJldHVybiBtX2F1ZGlvQ29tcG9uZW50c1tpbmRleF0uZ2V0KCk7IH0KIAotICAgIHZvaWQgYWRk
UmVtb3RlVHJhY2soTWVkaWFTdHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCkKLSAgICB7Ci0gICAg
ICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgIG1fY2xpZW50LT5hZGRSZW1vdGVUcmFjayhj
b21wb25lbnQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhZGRDb21wb25lbnQoY29tcG9u
ZW50KTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlbW92ZVJlbW90ZVRyYWNrKE1lZGlhU3RyZWFtQ29t
cG9uZW50KiBjb21wb25lbnQpCi0gICAgewotICAgICAgICBpZiAobV9jbGllbnQpCi0gICAgICAg
ICAgICBtX2NsaWVudC0+cmVtb3ZlUmVtb3RlVHJhY2soY29tcG9uZW50KTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgcmVtb3ZlQ29tcG9uZW50KGNvbXBvbmVudCk7Ci0gICAgfQotCiAgICAg
dW5zaWduZWQgbnVtYmVyT2ZWaWRlb0NvbXBvbmVudHMoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVv
Q29tcG9uZW50cy5zaXplKCk7IH0KICAgICBNZWRpYVN0cmVhbUNvbXBvbmVudCogdmlkZW9Db21w
b25lbnQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9Db21wb25lbnRzW2lu
ZGV4XS5nZXQoKTsgfQogCi0gICAgdm9pZCBhZGRDb21wb25lbnQoUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbUNvbXBvbmVudD4gY29tcG9uZW50KQotICAgIHsKLSAgICAgICAgc3dpdGNoIChjb21wb25l
bnQtPnNvdXJjZSgpLT50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6
VHlwZUF1ZGlvOgotICAgICAgICAgICAgaWYgKG1fYXVkaW9Db21wb25lbnRzLmZpbmQoY29tcG9u
ZW50KSA9PSBub3RGb3VuZCkKLSAgICAgICAgICAgICAgICBtX2F1ZGlvQ29tcG9uZW50cy5hcHBl
bmQoY29tcG9uZW50KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1lZGlhU3Ry
ZWFtU291cmNlOjpUeXBlVmlkZW86Ci0gICAgICAgICAgICBpZiAobV92aWRlb0NvbXBvbmVudHMu
ZmluZChjb21wb25lbnQpID09IG5vdEZvdW5kKQotICAgICAgICAgICAgICAgIG1fdmlkZW9Db21w
b25lbnRzLmFwcGVuZChjb21wb25lbnQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICB2b2lkIHJlbW92ZUNvbXBvbmVudChQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
Q29tcG9uZW50PiBjb21wb25lbnQpCi0gICAgewotICAgICAgICBzaXplX3QgcG9zID0gbm90Rm91
bmQ7Ci0gICAgICAgIHN3aXRjaCAoY29tcG9uZW50LT5zb3VyY2UoKS0+dHlwZSgpKSB7Ci0gICAg
ICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVBdWRpbzoKLSAgICAgICAgICAgIHBvcyA9
IG1fYXVkaW9Db21wb25lbnRzLmZpbmQoY29tcG9uZW50KTsKLSAgICAgICAgICAgIGlmIChwb3Mg
IT0gbm90Rm91bmQpCi0gICAgICAgICAgICAgICAgbV9hdWRpb0NvbXBvbmVudHMucmVtb3ZlKHBv
cyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6
VHlwZVZpZGVvOgotICAgICAgICAgICAgcG9zID0gbV92aWRlb0NvbXBvbmVudHMuZmluZChjb21w
b25lbnQpOwotICAgICAgICAgICAgaWYgKHBvcyAhPSBub3RGb3VuZCkKLSAgICAgICAgICAgICAg
ICBtX3ZpZGVvQ29tcG9uZW50cy5yZW1vdmUocG9zKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgfQorICAgIHZvaWQgYWRkQ29tcG9uZW50KFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1Db21wb25lbnQ+KTsKKyAgICB2b2lkIHJlbW92ZUNvbXBvbmVudChQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtQ29tcG9uZW50Pik7CisKKyAgICB2b2lkIGFkZFJlbW90ZVRyYWNrKE1lZGlhU3RyZWFt
Q29tcG9uZW50Kik7CisgICAgdm9pZCByZW1vdmVSZW1vdGVUcmFjayhNZWRpYVN0cmVhbUNvbXBv
bmVudCopOwogCiAgICAgYm9vbCBlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kZWQ7IH0KICAg
ICB2b2lkIHNldEVuZGVkKCkgeyBtX2VuZGVkID0gdHJ1ZTsgfQpAQCAtMTMyLDM0ICs4Niw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEV4dHJhRGF0YShQYXNzUmVmUHRyPEV4dHJhRGF0YT4gZXh0
cmFEYXRhKSB7IG1fZXh0cmFEYXRhID0gZXh0cmFEYXRhOyB9CiAKIHByaXZhdGU6Ci0gICAgTWVk
aWFTdHJlYW1EZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IE1lZGlhU3RyZWFtU291
cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2
aWRlb1NvdXJjZXMpCi0gICAgICAgIDogbV9jbGllbnQoMCkKLSAgICAgICAgLCBtX2lkKGlkKQot
ICAgICAgICAsIG1fZW5kZWQoZmFsc2UpCi0gICAgewotICAgICAgICBBU1NFUlQobV9pZC5sZW5n
dGgoKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXVkaW9Tb3VyY2VzLnNpemUo
KTsgaSsrKQotICAgICAgICAgICAgbV9hdWRpb0NvbXBvbmVudHMuYXBwZW5kKE1lZGlhU3RyZWFt
Q29tcG9uZW50OjpjcmVhdGUodGhpcywgYXVkaW9Tb3VyY2VzW2ldKSk7Ci0KLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB2aWRlb1NvdXJjZXMuc2l6ZSgpOyBpKyspCi0gICAgICAgICAg
ICBtX3ZpZGVvQ29tcG9uZW50cy5hcHBlbmQoTWVkaWFTdHJlYW1Db21wb25lbnQ6OmNyZWF0ZSh0
aGlzLCB2aWRlb1NvdXJjZXNbaV0pKTsKLSAgICB9Ci0KLSAgICBNZWRpYVN0cmVhbURlc2NyaXB0
b3IoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgTWVkaWFTdHJlYW1Db21wb25lbnRWZWN0b3ImIGF1
ZGlvQ29tcG9uZW50cywgY29uc3QgTWVkaWFTdHJlYW1Db21wb25lbnRWZWN0b3ImIHZpZGVvQ29t
cG9uZW50cykKLSAgICAgICAgOiBtX2NsaWVudCgwKQotICAgICAgICAsIG1faWQoaWQpCi0gICAg
ICAgICwgbV9lbmRlZChmYWxzZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2lkLmxlbmd0aCgp
KTsKLSAgICAgICAgZm9yIChNZWRpYVN0cmVhbUNvbXBvbmVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0
b3IgaXRlciA9IGF1ZGlvQ29tcG9uZW50cy5iZWdpbigpOyBpdGVyICE9IGF1ZGlvQ29tcG9uZW50
cy5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgICAgICAoKml0ZXIpLT5zZXRTdHJlYW0odGhpcyk7
Ci0gICAgICAgICAgICBtX2F1ZGlvQ29tcG9uZW50cy5hcHBlbmQoKCppdGVyKSk7Ci0gICAgICAg
IH0KLSAgICAgICAgZm9yIChNZWRpYVN0cmVhbUNvbXBvbmVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0
b3IgaXRlciA9IHZpZGVvQ29tcG9uZW50cy5iZWdpbigpOyBpdGVyICE9IHZpZGVvQ29tcG9uZW50
cy5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgICAgICAoKml0ZXIpLT5zZXRTdHJlYW0odGhpcyk7
Ci0gICAgICAgICAgICBtX3ZpZGVvQ29tcG9uZW50cy5hcHBlbmQoKCppdGVyKSk7Ci0gICAgICAg
IH0KLSAgICB9CisgICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgaWQsIGNv
bnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3Ry
ZWFtU291cmNlVmVjdG9yJiB2aWRlb1NvdXJjZXMpOworICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRv
cihjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBNZWRpYVN0cmVhbUNvbXBvbmVudFZlY3RvciYgYXVk
aW9Db21wb25lbnRzLCBjb25zdCBNZWRpYVN0cmVhbUNvbXBvbmVudFZlY3RvciYgdmlkZW9Db21w
b25lbnRzKTsKIAogICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvckNsaWVudCogbV9jbGllbnQ7CiAg
ICAgU3RyaW5nIG1faWQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211232</attachid>
            <date>2013-09-10 13:33:17 -0700</date>
            <delta_ts>2013-09-10 13:58:43 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>split_descriptor_4.txt</filename>
            <type>text/plain</type>
            <size>24756</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NTQ2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDEzLTA5LTEwICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFNwbGl0IE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvci5oIGFuZCBNZWRpYVN0cmVhbUNvbXBvbmVudC5oIGludG8gLmggYW5kIC5j
cHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDg3
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgbm8gZnVuY3Rpb25hbCBjaGFuZ2UuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOiBBZGQgTWVkaWFTdHJlYW1Db21wb25lbnQuY3BwIGFuZCBNZWRpYVN0cmVhbURlc2Ny
aXB0b3IuY3BwLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3Ry
ZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsTWVkaWFTdHJlYW06OmNyZWF0ZSk6IE1l
ZGlhU3RyZWFtRGVzY3JpcHRvcjo6Y3JlYXRlKCkgZG9lc24ndCB0YWtlIGEgVVVJRC4KKworICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRnJvbVNvdXJjZVZlY3RvcnMpOiBEaXR0by4KKworICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIE1lZGlhU3RyZWFtQ29tcG9uZW50LmNw
cCBhbmQgTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcC4KKworICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29tcG9uZW50LmNwcDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db21wb25lbnQuaDoKKworICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHA6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oOgorCiAy
MDEzLTA5LTEwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFttYWNdIFBERkRvY3VtZW50SW1hZ2Ugc2hvdWxkIHVzZSBQREZLaXQgdG8gZHJhdwpJbmRl
eDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNTU0MzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC01NDUwLDcg
KzU0NTAsOSBAQCB3ZWJjb3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbXBvbmVudC5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29tcG9u
ZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
RGVzY3JpcHRvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtRGVzY3JpcHRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0xvY2FsTWVkaWFTdHJlYW0uY3BwCShyZXZp
c2lvbiAxNTU0MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0xvY2Fs
TWVkaWFTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMyArMjksMTIgQEAKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKLSNp
bmNsdWRlICJVVUlELmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxMb2Nh
bE1lZGlhU3RyZWFtPiBMb2NhbE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNl
cywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291cmNlcykKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IExvY2FsTWVkaWFTdHJlYW0oY29udGV4dCwgTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yOjpjcmVhdGUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBhdWRpb1NvdXJj
ZXMsIHZpZGVvU291cmNlcykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IExvY2FsTWVkaWFT
dHJlYW0oY29udGV4dCwgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUoYXVkaW9Tb3VyY2Vz
LCB2aWRlb1NvdXJjZXMpKSk7CiB9CiAKIFBhc3NSZWZQdHI8TG9jYWxNZWRpYVN0cmVhbT4gTG9j
YWxNZWRpYVN0cmVhbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBzdHJlYW1EZXNjcmlwdG9yKQpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5j
cHAJKHJldmlzaW9uIDE1NTQzOSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2IEBACiAjaW5j
bHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5o
IgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tFdmVudC5oIgotI2luY2x1ZGUgIlVVSUQuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01OCw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIHBy
b2Nlc3NUcmFjayhNZWRpYVN0cmVhbVRyYWMKIAogc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW0+IGNyZWF0ZUZyb21Tb3VyY2VWZWN0b3JzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1l
ZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRlb1NvdXJjZXMpCiB7Ci0gICAgUmVmUHRyPE1lZGlh
U3RyZWFtRGVzY3JpcHRvcj4gZGVzY3JpcHRvciA9IE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6Y3Jl
YXRlKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJj
ZXMpOworICAgIFJlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IGRlc2NyaXB0b3IgPSBNZWRp
YVN0cmVhbURlc2NyaXB0b3I6OmNyZWF0ZShhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7CiAg
ICAgTWVkaWFTdHJlYW1DZW50ZXI6Omluc3RhbmNlKCkuZGlkQ3JlYXRlTWVkaWFTdHJlYW0oZGVz
Y3JpcHRvci5nZXQoKSk7CiAKICAgICByZXR1cm4gTWVkaWFTdHJlYW06OmNyZWF0ZShjb250ZXh0
LCBkZXNjcmlwdG9yLnJlbGVhc2UoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTU0MzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTk0LDYgKzk0LDggQEAKIAkJMDcwNzU2REYxNDIzOUI0RTAwNDE0MTYxIC8qIEpTVGV4
dFRyYWNrQ3VlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzA3NTZEOTE0MjM5QjRDMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0LmNw
cCAqLzsgfTsKIAkJMDcwNzU2RTAxNDIzOUI0RTAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNzU2
REExNDIzOUI0RTAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlzdC5oICovOyB9OwogCQkwNzA5
RkM0RTEwMjVERUUzMDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNsaWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwOUZDNEQxMDI1REVFMzAwNTlD
REJBIC8qIEFjY2Vzc2liaWxpdHlTbGlkZXIuaCAqLzsgfTsKKwkJMDcxMTU4OTAxN0RGNkY2MjAw
RURGRTJCIC8qIE1lZGlhU3RyZWFtQ29tcG9uZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MTE1ODhFMTdERjYzMzcwMEVERkUyQiAvKiBNZWRp
YVN0cmVhbUNvbXBvbmVudC5jcHAgKi87IH07CisJCTA3MTE1ODkxMTdERjZGNjYwMEVERkUyQiAv
KiBNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDcxMTU4OEYxN0RGNjMzNzAwRURGRTJCIC8qIE1lZGlhU3RyZWFt
RGVzY3JpcHRvci5jcHAgKi87IH07CiAJCTA3MUE5RUMyMTY4RkJDNDMwMDI2MjlGOSAvKiBUZXh0
VHJhY2tDdWVHZW5lcmljLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3MUE5RUMwMTY4RkI1NkMwMDI2MjlGOSAvKiBUZXh0VHJhY2tDdWVHZW5lcmlj
LmNwcCAqLzsgfTsKIAkJMDcxQTlFQzMxNjhGQkM1NTAwMjYyOUY5IC8qIFRleHRUcmFja0N1ZUdl
bmVyaWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
MUE5RUMxMTY4RkI1NkMwMDI2MjlGOSAvKiBUZXh0VHJhY2tDdWVHZW5lcmljLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyMEIwQTAxNEQzMzIz
NTAwNjQyOTU1IC8qIEdlbmVyaWNFdmVudFF1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MjBCMDlFMTREMzMyMzUwMDY0Mjk1NSAvKiBHZW5l
cmljRXZlbnRRdWV1ZS5jcHAgKi87IH07CkBAIC02NDI4LDYgKzY0MzAsOCBAQAogCQkwNzA3NTZE
QTE0MjM5QjRFMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTVGV4dFRyYWNrQ3VlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzA5RkM0RDEwMjVERUUzMDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNs
aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5U2xp
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MEREOEY1MEYwMTg2ODAwMDcy
N0RFQiAvKiBtZWRpYUNvbnRyb2xzLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBtZWRpYUNv
bnRyb2xzLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcxMTU4OEUxN0RGNjMz
NzAwRURGRTJCIC8qIE1lZGlhU3RyZWFtQ29tcG9uZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFtQ29tcG9uZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDcxMTU4OEYxN0RGNjMzNzAwRURGRTJCIC8qIE1lZGlhU3RyZWFt
RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRp
YVN0cmVhbURlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzFB
OUVDMDE2OEZCNTZDMDAyNjI5RjkgLyogVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0VHJhY2tDdWVHZW5lcmljLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcxQTlFQzExNjhGQjU2QzAwMjYyOUY5IC8qIFRl
eHRUcmFja0N1ZUdlbmVyaWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4
dFRyYWNrQ3VlR2VuZXJpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzIwQjA5
RTE0RDMzMjM1MDA2NDI5NTUgLyogR2VuZXJpY0V2ZW50UXVldWUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJpY0V2ZW50UXVldWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTMzMjMsNyArMTMzMjcsOSBAQAogCQkJCTA3MjIxQjk5MTdD
RjBBRDQwMDg0OEU1MSAvKiBNZWRpYUNvbnN0cmFpbnRzLmggKi8sCiAJCQkJMDcyMjFCOUExN0NG
MEFENDAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtQ2VudGVyLmNwcCAqLywKIAkJCQkwNzIyMUI5QjE3
Q0YwQUQ0MDA4NDhFNTEgLyogTWVkaWFTdHJlYW1DZW50ZXIuaCAqLywKKwkJCQkwNzExNTg4RTE3
REY2MzM3MDBFREZFMkIgLyogTWVkaWFTdHJlYW1Db21wb25lbnQuY3BwICovLAogCQkJCTA3MjIx
QjlDMTdDRjBBRDQwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbUNvbXBvbmVudC5oICovLAorCQkJCTA3
MTE1ODhGMTdERjYzMzcwMEVERkUyQiAvKiBNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwICovLAog
CQkJCTA3MjIxQjlEMTdDRjBBRDQwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCAq
LywKIAkJCQkwNzIyMUI5RTE3Q0YwQUQ0MDA4NDhFNTEgLyogTWVkaWFTdHJlYW1Tb3VyY2UuY3Bw
ICovLAogCQkJCTA3MjIxQjlGMTdDRjBBRDQwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbVNvdXJjZS5o
ICovLApAQCAtMjY2MDAsNiArMjY2MDYsOCBAQAogCQkJCUQzQTk0QTM4MTIyREFCQUMwMEEzN0JC
QyAvKiBNZWRpYVF1ZXJ5TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEM0FBMTBGMzEyM0E5
OEFBMDA5MjE1MkIgLyogTWVkaWFRdWVyeU1hdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RkQ2NzFBNzcxNTlCQjA3MDAwMTk3NTU5IC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTA3MTE1ODkwMTdERjZGNjIwMEVERkUyQiAvKiBNZWRpYVN0
cmVhbUNvbXBvbmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzExNTg5MTE3REY2RjY2MDBF
REZFMkIgLyogTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
QjE2QzE3MDk3OUMzQkQwMDQ2Nzc0MSAvKiBNZW1vcnlDYWNoZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk2NTdFREEwODEzODVDQjk3MDA0RTA2NDUgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTY1N0VEQTBCMTM4NUNCRDgwMDRFMDY0NSAvKiBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXJNYWMubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29tcG9uZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbXBv
bmVudC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbUNvbXBvbmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNp
bmNsdWRlICJNZWRpYVN0cmVhbUNvbXBvbmVudC5oIgorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1T
b3VyY2UuaCIKKyNpbmNsdWRlICJVVUlELmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbUNvbXBvbmVudD4gTWVkaWFTdHJlYW1Db21wb25lbnQ6OmNyZWF0
ZShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBzb3VyY2UpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBNZWRpYVN0cmVhbUNvbXBvbmVudChjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5n
KCksIDAsIHNvdXJjZSkpOworfQorCitQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ29tcG9uZW50PiBN
ZWRpYVN0cmVhbUNvbXBvbmVudDo6Y3JlYXRlKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFt
LCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBzb3VyY2UpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBNZWRpYVN0cmVhbUNvbXBvbmVudChjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5n
KCksIHN0cmVhbSwgc291cmNlKSk7Cit9CisKK01lZGlhU3RyZWFtQ29tcG9uZW50OjpNZWRpYVN0
cmVhbUNvbXBvbmVudChjb25zdCBTdHJpbmcmIGlkLCBNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0
cmVhbSwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4gc291cmNlKQorICAgIDogbV9zdHJl
YW0oc3RyZWFtKQorICAgICwgbV9zb3VyY2Uoc291cmNlKQorICAgICwgbV9pZChpZCkKKyAgICAs
IG1fZW5hYmxlZCh0cnVlKQoreworICAgIEFTU0VSVChtX2lkLmxlbmd0aCgpKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29tcG9u
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1Db21wb25lbnQuaAkocmV2aXNpb24gMTU1NDM5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db21wb25lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgRXJpY3Nzb24g
QUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzMsMjkgKzM0LDE5IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi0jaW5jbHVk
ZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKLSNpbmNsdWRlICJVVUlELmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlh
U3RyZWFtRGVzY3JpcHRvcjsKK2NsYXNzIE1lZGlhU3RyZWFtU291cmNlOwogCiBjbGFzcyBNZWRp
YVN0cmVhbUNvbXBvbmVudCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtQ29tcG9uZW50
PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Db21wb25lbnQ+
IGNyZWF0ZShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBzb3VyY2UpCi0gICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtQ29tcG9uZW50KGNyZWF0ZUNhbm9u
aWNhbFVVSURTdHJpbmcoKSwgMCwgc291cmNlKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1Db21wb25lbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGlkLCBQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBzb3VyY2UpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtQ29tcG9uZW50KGlkLCAwLCBzb3VyY2UpKTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNvbXBvbmVudD4gY3JlYXRlKE1l
ZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNl
PiBzb3VyY2UpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFt
Q29tcG9uZW50KGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgc3RyZWFtLCBzb3VyY2UpKTsK
LSAgICB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Db21wb25lbnQ+IGNyZWF0
ZShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1Db21wb25lbnQ+IGNyZWF0ZShNZWRpYVN0cmVhbURlc2NyaXB0b3IqLCBQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPik7CiAKICAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3Iq
IHN0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyZWFtOyB9CiAgICAgdm9pZCBzZXRTdHJlYW0o
TWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0pIHsgQVNTRVJUKCFtX3N0cmVhbSAmJiBzdHJl
YW0pOyBtX3N0cmVhbSA9IHN0cmVhbTsgfQpAQCAtNjcsMTQgKzU4LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0RW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9lbmFibGVkID0gZW5hYmxlZDsgfQog
CiBwcml2YXRlOgotICAgIE1lZGlhU3RyZWFtQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgaWQsIE1l
ZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNl
PiBzb3VyY2UpCi0gICAgICAgIDogbV9zdHJlYW0oc3RyZWFtKQotICAgICAgICAsIG1fc291cmNl
KHNvdXJjZSkKLSAgICAgICAgLCBtX2lkKGlkKQotICAgICAgICAsIG1fZW5hYmxlZCh0cnVlKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1faWQubGVuZ3RoKCkpOwotICAgIH0KKyAgICBNZWRpYVN0
cmVhbUNvbXBvbmVudChjb25zdCBTdHJpbmcmIGlkLCBNZWRpYVN0cmVhbURlc2NyaXB0b3IqLCBQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPik7CiAKICAgICBNZWRpYVN0cmVhbURlc2NyaXB0
b3IqIG1fc3RyZWFtOwogICAgIFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4gbV9zb3VyY2U7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2Ny
aXB0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEVy
aWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oIgor
CisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJVVUlELmgiCisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IE1lZGlh
U3RyZWFtRGVzY3JpcHRvcjo6Y3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBh
dWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRlb1NvdXJjZXMp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbURlc2NyaXB0b3IoY3JlYXRl
Q2Fub25pY2FsVVVJRFN0cmluZygpLCBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcykpOworfQor
CitQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gTWVkaWFTdHJlYW1EZXNjcmlwdG9y
OjpjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1Db21wb25lbnRWZWN0b3ImIGF1ZGlvQ29tcG9uZW50
cywgY29uc3QgTWVkaWFTdHJlYW1Db21wb25lbnRWZWN0b3ImIHZpZGVvQ29tcG9uZW50cykKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtRGVzY3JpcHRvcihjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCksIGF1ZGlvQ29tcG9uZW50cywgdmlkZW9Db21wb25lbnRzKSk7Cit9
CisKK3ZvaWQgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjphZGRDb21wb25lbnQoUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbUNvbXBvbmVudD4gY29tcG9uZW50KQoreworICAgIHN3aXRjaCAoY29tcG9uZW50
LT5zb3VyY2UoKS0+dHlwZSgpKSB7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZUF1
ZGlvOgorICAgICAgICBpZiAobV9hdWRpb0NvbXBvbmVudHMuZmluZChjb21wb25lbnQpID09IG5v
dEZvdW5kKQorICAgICAgICAgICAgbV9hdWRpb0NvbXBvbmVudHMuYXBwZW5kKGNvbXBvbmVudCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVWaWRlbzoK
KyAgICAgICAgaWYgKG1fdmlkZW9Db21wb25lbnRzLmZpbmQoY29tcG9uZW50KSA9PSBub3RGb3Vu
ZCkKKyAgICAgICAgICAgIG1fdmlkZW9Db21wb25lbnRzLmFwcGVuZChjb21wb25lbnQpOworICAg
ICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpyZW1v
dmVDb21wb25lbnQoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNvbXBvbmVudD4gY29tcG9uZW50KQor
eworICAgIHNpemVfdCBwb3MgPSBub3RGb3VuZDsKKyAgICBzd2l0Y2ggKGNvbXBvbmVudC0+c291
cmNlKCktPnR5cGUoKSkgeworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVBdWRpbzoK
KyAgICAgICAgcG9zID0gbV9hdWRpb0NvbXBvbmVudHMuZmluZChjb21wb25lbnQpOworICAgICAg
ICBpZiAocG9zICE9IG5vdEZvdW5kKQorICAgICAgICAgICAgbV9hdWRpb0NvbXBvbmVudHMucmVt
b3ZlKHBvcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlR5
cGVWaWRlbzoKKyAgICAgICAgcG9zID0gbV92aWRlb0NvbXBvbmVudHMuZmluZChjb21wb25lbnQp
OworICAgICAgICBpZiAocG9zICE9IG5vdEZvdW5kKQorICAgICAgICAgICAgbV92aWRlb0NvbXBv
bmVudHMucmVtb3ZlKHBvcyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBNZWRp
YVN0cmVhbURlc2NyaXB0b3I6OmFkZFJlbW90ZVRyYWNrKE1lZGlhU3RyZWFtQ29tcG9uZW50KiBj
b21wb25lbnQpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+YWRkUmVt
b3RlVHJhY2soY29tcG9uZW50KTsKKyAgICBlbHNlCisgICAgICAgIGFkZENvbXBvbmVudChjb21w
b25lbnQpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6cmVtb3ZlUmVtb3RlVHJh
Y2soTWVkaWFTdHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCkKK3sKKyAgICBpZiAobV9jbGllbnQp
CisgICAgICAgIG1fY2xpZW50LT5yZW1vdmVSZW1vdGVUcmFjayhjb21wb25lbnQpOworICAgIGVs
c2UKKyAgICAgICAgcmVtb3ZlQ29tcG9uZW50KGNvbXBvbmVudCk7Cit9CisKK01lZGlhU3RyZWFt
RGVzY3JpcHRvcjo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0
IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFt
U291cmNlVmVjdG9yJiB2aWRlb1NvdXJjZXMpCisgICAgOiBtX2NsaWVudCgwKQorICAgICwgbV9p
ZChpZCkKKyAgICAsIG1fZW5kZWQoZmFsc2UpCit7CisgICAgQVNTRVJUKG1faWQubGVuZ3RoKCkp
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXVkaW9Tb3VyY2VzLnNpemUoKTsgaSsrKQor
ICAgICAgICBtX2F1ZGlvQ29tcG9uZW50cy5hcHBlbmQoTWVkaWFTdHJlYW1Db21wb25lbnQ6OmNy
ZWF0ZSh0aGlzLCBhdWRpb1NvdXJjZXNbaV0pKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgdmlkZW9Tb3VyY2VzLnNpemUoKTsgaSsrKQorICAgICAgICBtX3ZpZGVvQ29tcG9uZW50cy5h
cHBlbmQoTWVkaWFTdHJlYW1Db21wb25lbnQ6OmNyZWF0ZSh0aGlzLCB2aWRlb1NvdXJjZXNbaV0p
KTsKK30KKworTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpNZWRpYVN0cmVhbURlc2NyaXB0b3IoY29u
c3QgU3RyaW5nJiBpZCwgY29uc3QgTWVkaWFTdHJlYW1Db21wb25lbnRWZWN0b3ImIGF1ZGlvQ29t
cG9uZW50cywgY29uc3QgTWVkaWFTdHJlYW1Db21wb25lbnRWZWN0b3ImIHZpZGVvQ29tcG9uZW50
cykKKyAgICA6IG1fY2xpZW50KDApCisgICAgLCBtX2lkKGlkKQorICAgICwgbV9lbmRlZChmYWxz
ZSkKK3sKKyAgICBBU1NFUlQobV9pZC5sZW5ndGgoKSk7CisgICAgZm9yIChNZWRpYVN0cmVhbUNv
bXBvbmVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGF1ZGlvQ29tcG9uZW50cy5iZWdp
bigpOyBpdGVyICE9IGF1ZGlvQ29tcG9uZW50cy5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgICgq
aXRlciktPnNldFN0cmVhbSh0aGlzKTsKKyAgICAgICAgbV9hdWRpb0NvbXBvbmVudHMuYXBwZW5k
KCgqaXRlcikpOworICAgIH0KKyAgICBmb3IgKE1lZGlhU3RyZWFtQ29tcG9uZW50VmVjdG9yOjpj
b25zdF9pdGVyYXRvciBpdGVyID0gdmlkZW9Db21wb25lbnRzLmJlZ2luKCk7IGl0ZXIgIT0gdmlk
ZW9Db21wb25lbnRzLmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgKCppdGVyKS0+c2V0U3RyZWFt
KHRoaXMpOworICAgICAgICBtX3ZpZGVvQ29tcG9uZW50cy5hcHBlbmQoKCppdGVyKSk7CisgICAg
fQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1EZXNjcmlwdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgJKHJldmlzaW9uIDE1NTQzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKIAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ29tcG9uZW50LmgiCisjaW5jbHVkZSAiTWVk
aWFTdHJlYW1Tb3VyY2UuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIApAQCAtNTcsMTUgKzU4LDggQEAgcHVibGljOgogICAgICAgICB2aXJ0
dWFsIH5FeHRyYURhdGEoKSB7IH0KICAgICB9OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1EZXNjcmlwdG9yPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgTWVkaWFT
dHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VW
ZWN0b3ImIHZpZGVvU291cmNlcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
TWVkaWFTdHJlYW1EZXNjcmlwdG9yKGlkLCBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcykpOwot
ICAgIH0KLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IE1lZGlhU3RyZWFtQ29tcG9uZW50VmVjdG9yJiBh
dWRpb0NvbXBvbmVudHMsIGNvbnN0IE1lZGlhU3RyZWFtQ29tcG9uZW50VmVjdG9yJiB2aWRlb0Nv
bXBvbmVudHMpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFt
RGVzY3JpcHRvcihpZCwgYXVkaW9Db21wb25lbnRzLCB2aWRlb0NvbXBvbmVudHMpKTsKLSAgICB9
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBjcmVhdGUoY29u
c3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJl
YW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291cmNlcyk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1EZXNjcmlwdG9yPiBjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1Db21wb25lbnRWZWN0
b3ImIGF1ZGlvQ29tcG9uZW50cywgY29uc3QgTWVkaWFTdHJlYW1Db21wb25lbnRWZWN0b3ImIHZp
ZGVvQ29tcG9uZW50cyk7CiAKICAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3JDbGllbnQqIGNsaWVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CiAgICAgdm9pZCBzZXRDbGllbnQoTWVkaWFT
dHJlYW1EZXNjcmlwdG9yQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KQEAg
LTc1LDU1ICs2OSwxNCBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZBdWRpb0NvbXBv
bmVudHMoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvQ29tcG9uZW50cy5zaXplKCk7IH0KICAgICBN
ZWRpYVN0cmVhbUNvbXBvbmVudCogYXVkaW9Db21wb25lbnQodW5zaWduZWQgaW5kZXgpIGNvbnN0
IHsgcmV0dXJuIG1fYXVkaW9Db21wb25lbnRzW2luZGV4XS5nZXQoKTsgfQogCi0gICAgdm9pZCBh
ZGRSZW1vdGVUcmFjayhNZWRpYVN0cmVhbUNvbXBvbmVudCogY29tcG9uZW50KQotICAgIHsKLSAg
ICAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICAgICAgbV9jbGllbnQtPmFkZFJlbW90ZVRyYWNr
KGNvbXBvbmVudCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFkZENvbXBvbmVudChjb21w
b25lbnQpOwotICAgIH0KLQotICAgIHZvaWQgcmVtb3ZlUmVtb3RlVHJhY2soTWVkaWFTdHJlYW1D
b21wb25lbnQqIGNvbXBvbmVudCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAg
ICAgICAgIG1fY2xpZW50LT5yZW1vdmVSZW1vdGVUcmFjayhjb21wb25lbnQpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICByZW1vdmVDb21wb25lbnQoY29tcG9uZW50KTsKLSAgICB9Ci0KICAg
ICB1bnNpZ25lZCBudW1iZXJPZlZpZGVvQ29tcG9uZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdmlk
ZW9Db21wb25lbnRzLnNpemUoKTsgfQogICAgIE1lZGlhU3RyZWFtQ29tcG9uZW50KiB2aWRlb0Nv
bXBvbmVudCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0NvbXBvbmVudHNb
aW5kZXhdLmdldCgpOyB9CiAKLSAgICB2b2lkIGFkZENvbXBvbmVudChQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtQ29tcG9uZW50PiBjb21wb25lbnQpCi0gICAgewotICAgICAgICBzd2l0Y2ggKGNvbXBv
bmVudC0+c291cmNlKCktPnR5cGUoKSkgewotICAgICAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNl
OjpUeXBlQXVkaW86Ci0gICAgICAgICAgICBpZiAobV9hdWRpb0NvbXBvbmVudHMuZmluZChjb21w
b25lbnQpID09IG5vdEZvdW5kKQotICAgICAgICAgICAgICAgIG1fYXVkaW9Db21wb25lbnRzLmFw
cGVuZChjb21wb25lbnQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWVkaWFT
dHJlYW1Tb3VyY2U6OlR5cGVWaWRlbzoKLSAgICAgICAgICAgIGlmIChtX3ZpZGVvQ29tcG9uZW50
cy5maW5kKGNvbXBvbmVudCkgPT0gbm90Rm91bmQpCi0gICAgICAgICAgICAgICAgbV92aWRlb0Nv
bXBvbmVudHMuYXBwZW5kKGNvbXBvbmVudCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIHZvaWQgcmVtb3ZlQ29tcG9uZW50KFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1Db21wb25lbnQ+IGNvbXBvbmVudCkKLSAgICB7Ci0gICAgICAgIHNpemVfdCBwb3MgPSBub3RG
b3VuZDsKLSAgICAgICAgc3dpdGNoIChjb21wb25lbnQtPnNvdXJjZSgpLT50eXBlKCkpIHsKLSAg
ICAgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZUF1ZGlvOgotICAgICAgICAgICAgcG9z
ID0gbV9hdWRpb0NvbXBvbmVudHMuZmluZChjb21wb25lbnQpOwotICAgICAgICAgICAgaWYgKHBv
cyAhPSBub3RGb3VuZCkKLSAgICAgICAgICAgICAgICBtX2F1ZGlvQ29tcG9uZW50cy5yZW1vdmUo
cG9zKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNl
OjpUeXBlVmlkZW86Ci0gICAgICAgICAgICBwb3MgPSBtX3ZpZGVvQ29tcG9uZW50cy5maW5kKGNv
bXBvbmVudCk7Ci0gICAgICAgICAgICBpZiAocG9zICE9IG5vdEZvdW5kKQotICAgICAgICAgICAg
ICAgIG1fdmlkZW9Db21wb25lbnRzLnJlbW92ZShwb3MpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICB9CisgICAgdm9pZCBhZGRDb21wb25lbnQoUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbUNvbXBvbmVudD4pOworICAgIHZvaWQgcmVtb3ZlQ29tcG9uZW50KFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1Db21wb25lbnQ+KTsKKworICAgIHZvaWQgYWRkUmVtb3RlVHJhY2soTWVkaWFTdHJl
YW1Db21wb25lbnQqKTsKKyAgICB2b2lkIHJlbW92ZVJlbW90ZVRyYWNrKE1lZGlhU3RyZWFtQ29t
cG9uZW50Kik7CiAKICAgICBib29sIGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmRlZDsgfQog
ICAgIHZvaWQgc2V0RW5kZWQoKSB7IG1fZW5kZWQgPSB0cnVlOyB9CkBAIC0xMzIsMzQgKzg1LDgg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0RXh0cmFEYXRhKFBhc3NSZWZQdHI8RXh0cmFEYXRhPiBl
eHRyYURhdGEpIHsgbV9leHRyYURhdGEgPSBleHRyYURhdGE7IH0KIAogcHJpdmF0ZToKLSAgICBN
ZWRpYVN0cmVhbURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgTWVkaWFTdHJlYW1T
b3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3Im
IHZpZGVvU291cmNlcykKLSAgICAgICAgOiBtX2NsaWVudCgwKQotICAgICAgICAsIG1faWQoaWQp
Ci0gICAgICAgICwgbV9lbmRlZChmYWxzZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2lkLmxl
bmd0aCgpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdWRpb1NvdXJjZXMuc2l6
ZSgpOyBpKyspCi0gICAgICAgICAgICBtX2F1ZGlvQ29tcG9uZW50cy5hcHBlbmQoTWVkaWFTdHJl
YW1Db21wb25lbnQ6OmNyZWF0ZSh0aGlzLCBhdWRpb1NvdXJjZXNbaV0pKTsKLQotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHZpZGVvU291cmNlcy5zaXplKCk7IGkrKykKLSAgICAgICAg
ICAgIG1fdmlkZW9Db21wb25lbnRzLmFwcGVuZChNZWRpYVN0cmVhbUNvbXBvbmVudDo6Y3JlYXRl
KHRoaXMsIHZpZGVvU291cmNlc1tpXSkpOwotICAgIH0KLQotICAgIE1lZGlhU3RyZWFtRGVzY3Jp
cHRvcihjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBNZWRpYVN0cmVhbUNvbXBvbmVudFZlY3RvciYg
YXVkaW9Db21wb25lbnRzLCBjb25zdCBNZWRpYVN0cmVhbUNvbXBvbmVudFZlY3RvciYgdmlkZW9D
b21wb25lbnRzKQotICAgICAgICA6IG1fY2xpZW50KDApCi0gICAgICAgICwgbV9pZChpZCkKLSAg
ICAgICAgLCBtX2VuZGVkKGZhbHNlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1faWQubGVuZ3Ro
KCkpOwotICAgICAgICBmb3IgKE1lZGlhU3RyZWFtQ29tcG9uZW50VmVjdG9yOjpjb25zdF9pdGVy
YXRvciBpdGVyID0gYXVkaW9Db21wb25lbnRzLmJlZ2luKCk7IGl0ZXIgIT0gYXVkaW9Db21wb25l
bnRzLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgICAgICgqaXRlciktPnNldFN0cmVhbSh0aGlz
KTsKLSAgICAgICAgICAgIG1fYXVkaW9Db21wb25lbnRzLmFwcGVuZCgoKml0ZXIpKTsKLSAgICAg
ICAgfQotICAgICAgICBmb3IgKE1lZGlhU3RyZWFtQ29tcG9uZW50VmVjdG9yOjpjb25zdF9pdGVy
YXRvciBpdGVyID0gdmlkZW9Db21wb25lbnRzLmJlZ2luKCk7IGl0ZXIgIT0gdmlkZW9Db21wb25l
bnRzLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgICAgICgqaXRlciktPnNldFN0cmVhbSh0aGlz
KTsKLSAgICAgICAgICAgIG1fdmlkZW9Db21wb25lbnRzLmFwcGVuZCgoKml0ZXIpKTsKLSAgICAg
ICAgfQotICAgIH0KKyAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiBpZCwg
Y29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFT
dHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291cmNlcyk7CisgICAgTWVkaWFTdHJlYW1EZXNjcmlw
dG9yKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IE1lZGlhU3RyZWFtQ29tcG9uZW50VmVjdG9yJiBh
dWRpb0NvbXBvbmVudHMsIGNvbnN0IE1lZGlhU3RyZWFtQ29tcG9uZW50VmVjdG9yJiB2aWRlb0Nv
bXBvbmVudHMpOwogCiAgICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yQ2xpZW50KiBtX2NsaWVudDsK
ICAgICBTdHJpbmcgbV9pZDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211238</attachid>
            <date>2013-09-10 13:58:43 -0700</date>
            <delta_ts>2013-09-10 14:40:59 -0700</delta_ts>
            <desc>Include new files in CMakeLists.txt</desc>
            <filename>split_descriptor_5.txt</filename>
            <type>text/plain</type>
            <size>25415</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NTQ2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEzLTA5LTEwICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFNwbGl0IE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvci5oIGFuZCBNZWRpYVN0cmVhbUNvbXBvbmVudC5oIGludG8gLmggYW5kIC5j
cHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDg3
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgbm8gZnVuY3Rpb25hbCBjaGFuZ2UuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDogQWRkIE1lZGlhU3RyZWFtQ29tcG9uZW50LmNwcCBhbmQgTWVkaWFTdHJlYW1EZXNjcmlwdG9y
LmNwcC4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBEaXR0by4KKworICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMb2NhbE1lZGlhU3RyZWFtOjpjcmVhdGUpOiBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmNy
ZWF0ZSgpIGRvZXNuJ3QgdGFrZSBhIFVVSUQuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyb21Tb3VyY2VW
ZWN0b3JzKTogRGl0dG8uCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6IEFkZCBNZWRpYVN0cmVhbUNvbXBvbmVudC5jcHAgYW5kIE1lZGlhU3RyZWFtRGVzY3Jp
cHRvci5jcHAuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNv
bXBvbmVudC5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtQ29tcG9uZW50Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbURlc2NyaXB0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuaDoKKwogMjAxMy0wOS0xMCAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjXSBQREZEb2N1bWVudElt
YWdlIHNob3VsZCB1c2UgUERGS2l0IHRvIGRyYXcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShy
ZXZpc2lvbiAxNTU0MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtODM2LDYgKzgzNiw4IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBNb2R1
bGVzL21lZGlhc3RyZWFtL0xvY2FsTWVkaWFTdHJlYW0uY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtLmNwcAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db21wb25l
bnQuY3BwCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuY3Bw
CiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50LmNwcAogICAgIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5jcHAKICAgICBNb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0JKHJldmlzaW9uIDE1NTQzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTU0NTAsNyArNTQ1MCw5IEBAIHdlYmNvcmVfcGxhdGZv
cm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFDb25zdHJhaW50cy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbUNlbnRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtQ2VudGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtQ29tcG9uZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db21wb25lbnQuaCBcCisJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3Vy
Y2UuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0xvY2FsTWVk
aWFTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5jcHAJKHJldmlzaW9uIDE1NTQzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDEzICsyOSwxMiBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNp
bmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgotI2luY2x1ZGUgIlVVSUQuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPExvY2FsTWVkaWFTdHJlYW0+IExvY2FsTWVkaWFT
dHJlYW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBNZWRp
YVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJj
ZVZlY3RvciYgdmlkZW9Tb3VyY2VzKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTG9jYWxN
ZWRpYVN0cmVhbShjb250ZXh0LCBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmNyZWF0ZShjcmVhdGVD
YW5vbmljYWxVVUlEU3RyaW5nKCksIGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKSkpOworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgTG9jYWxNZWRpYVN0cmVhbShjb250ZXh0LCBNZWRpYVN0cmVh
bURlc2NyaXB0b3I6OmNyZWF0ZShhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcykpKTsKIH0KIAog
UGFzc1JlZlB0cjxMb2NhbE1lZGlhU3RyZWFtPiBMb2NhbE1lZGlhU3RyZWFtOjpjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2Ny
aXB0b3I+IHN0cmVhbURlc2NyaXB0b3IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAkocmV2aXNpb24gMTU1NDM5KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5o
IgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1U
cmFja0V2ZW50LmgiCi0jaW5jbHVkZSAiVVVJRC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTU4LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1RyYWNrKE1lZGlhU3RyZWFtVHJh
YwogCiBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gY3JlYXRlRnJvbVNvdXJjZVZlY3Rv
cnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgTWVkaWFTdHJlYW1Tb3Vy
Y2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZp
ZGVvU291cmNlcykKIHsKLSAgICBSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBkZXNjcmlw
dG9yID0gTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0
cmluZygpLCBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7CisgICAgUmVmUHRyPE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvcj4gZGVzY3JpcHRvciA9IE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6Y3JlYXRl
KGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKTsKICAgICBNZWRpYVN0cmVhbUNlbnRlcjo6aW5z
dGFuY2UoKS5kaWRDcmVhdGVNZWRpYVN0cmVhbShkZXNjcmlwdG9yLmdldCgpKTsKIAogICAgIHJl
dHVybiBNZWRpYVN0cmVhbTo6Y3JlYXRlKGNvbnRleHQsIGRlc2NyaXB0b3IucmVsZWFzZSgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDE1NTQzOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsOCBAQAogCQkw
NzA3NTZERjE0MjM5QjRFMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDc1NkQ5MTQyMzlCNEMw
MDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3QuY3BwICovOyB9OwogCQkwNzA3NTZFMDE0MjM5
QjRFMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA3NTZEQTE0MjM5QjRFMDA0MTQxNjEgLyogSlNU
ZXh0VHJhY2tDdWVMaXN0LmggKi87IH07CiAJCTA3MDlGQzRFMTAyNURFRTMwMDU5Q0RCQSAvKiBB
Y2Nlc3NpYmlsaXR5U2xpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzA5RkM0RDEwMjVERUUzMDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNsaWRl
ci5oICovOyB9OworCQkwNzExNTg5MDE3REY2RjYyMDBFREZFMkIgLyogTWVkaWFTdHJlYW1Db21w
b25lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDcxMTU4OEUxN0RGNjMzNzAwRURGRTJCIC8qIE1lZGlhU3RyZWFtQ29tcG9uZW50LmNwcCAqLzsg
fTsKKwkJMDcxMTU4OTExN0RGNkY2NjAwRURGRTJCIC8qIE1lZGlhU3RyZWFtRGVzY3JpcHRvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzExNTg4
RjE3REY2MzM3MDBFREZFMkIgLyogTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcCAqLzsgfTsKIAkJ
MDcxQTlFQzIxNjhGQkM0MzAwMjYyOUY5IC8qIFRleHRUcmFja0N1ZUdlbmVyaWMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcxQTlFQzAxNjhGQjU2
QzAwMjYyOUY5IC8qIFRleHRUcmFja0N1ZUdlbmVyaWMuY3BwICovOyB9OwogCQkwNzFBOUVDMzE2
OEZCQzU1MDAyNjI5RjkgLyogVGV4dFRyYWNrQ3VlR2VuZXJpYy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcxQTlFQzExNjhGQjU2QzAwMjYyOUY5IC8q
IFRleHRUcmFja0N1ZUdlbmVyaWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwNzIwQjBBMDE0RDMzMjM1MDA2NDI5NTUgLyogR2VuZXJpY0V2ZW50
UXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDcyMEIwOUUxNEQzMzIzNTAwNjQyOTU1IC8qIEdlbmVyaWNFdmVudFF1ZXVlLmNwcCAqLzsgfTsK
QEAgLTY0MjgsNiArNjQzMCw4IEBACiAJCTA3MDc1NkRBMTQyMzlCNEUwMDQxNDE2MSAvKiBKU1Rl
eHRUcmFja0N1ZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUZXh0
VHJhY2tDdWVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDlGQzREMTAy
NURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTbGlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDcwREQ4RjUwRjAxODY4MDAwNzI3REVCIC8qIG1lZGlhQ29udHJvbHMuY3Nz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IG1lZGlhQ29udHJvbHMuY3NzOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwNzExNTg4RTE3REY2MzM3MDBFREZFMkIgLyogTWVkaWFTdHJlYW1D
b21wb25lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFT
dHJlYW1Db21wb25lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzExNTg4
RjE3REY2MzM3MDBFREZFMkIgLyogTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MUE5RUMwMTY4RkI1NkMwMDI2MjlGOSAvKiBU
ZXh0VHJhY2tDdWVHZW5lcmljLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRleHRUcmFja0N1ZUdlbmVyaWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwNzFBOUVDMTE2OEZCNTZDMDAyNjI5RjkgLyogVGV4dFRyYWNrQ3VlR2VuZXJpYy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VHJhY2tDdWVHZW5lcmljLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MjBCMDlFMTREMzMyMzUwMDY0Mjk1NSAvKiBHZW5l
cmljRXZlbnRRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
ZW5lcmljRXZlbnRRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzMy
Myw3ICsxMzMyNyw5IEBACiAJCQkJMDcyMjFCOTkxN0NGMEFENDAwODQ4RTUxIC8qIE1lZGlhQ29u
c3RyYWludHMuaCAqLywKIAkJCQkwNzIyMUI5QTE3Q0YwQUQ0MDA4NDhFNTEgLyogTWVkaWFTdHJl
YW1DZW50ZXIuY3BwICovLAogCQkJCTA3MjIxQjlCMTdDRjBBRDQwMDg0OEU1MSAvKiBNZWRpYVN0
cmVhbUNlbnRlci5oICovLAorCQkJCTA3MTE1ODhFMTdERjYzMzcwMEVERkUyQiAvKiBNZWRpYVN0
cmVhbUNvbXBvbmVudC5jcHAgKi8sCiAJCQkJMDcyMjFCOUMxN0NGMEFENDAwODQ4RTUxIC8qIE1l
ZGlhU3RyZWFtQ29tcG9uZW50LmggKi8sCisJCQkJMDcxMTU4OEYxN0RGNjMzNzAwRURGRTJCIC8q
IE1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAgKi8sCiAJCQkJMDcyMjFCOUQxN0NGMEFENDAwODQ4
RTUxIC8qIE1lZGlhU3RyZWFtRGVzY3JpcHRvci5oICovLAogCQkJCTA3MjIxQjlFMTdDRjBBRDQw
MDg0OEU1MSAvKiBNZWRpYVN0cmVhbVNvdXJjZS5jcHAgKi8sCiAJCQkJMDcyMjFCOUYxN0NGMEFE
NDAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtU291cmNlLmggKi8sCkBAIC0yNjYwMCw2ICsyNjYwNiw4
IEBACiAJCQkJRDNBOTRBMzgxMjJEQUJBQzAwQTM3QkJDIC8qIE1lZGlhUXVlcnlMaXN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUQzQUExMEYzMTIzQTk4QUEwMDkyMTUyQiAvKiBNZWRpYVF1ZXJ5
TWF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDY3MUE3NzE1OUJCMDcwMDAxOTc1NTkg
LyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDcx
MTU4OTAxN0RGNkY2MjAwRURGRTJCIC8qIE1lZGlhU3RyZWFtQ29tcG9uZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTA3MTE1ODkxMTdERjZGNjYwMEVERkUyQiAvKiBNZWRpYVN0cmVhbURlc2Ny
aXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNCMTZDMTcwOTc5QzNCRDAwNDY3NzQxIC8q
IE1lbW9yeUNhY2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1N0VEQTA4MTM4NUNCOTcwMDRF
MDY0NSAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU3
RURBMEIxMzg1Q0JEODAwNEUwNjQ1IC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlck1hYy5tbSBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1Db21wb25lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29tcG9uZW50LmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29tcG9uZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ29tcG9u
ZW50LmgiCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgIlVVSUQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ29tcG9u
ZW50PiBNZWRpYVN0cmVhbUNvbXBvbmVudDo6Y3JlYXRlKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1T
b3VyY2U+IHNvdXJjZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtQ29t
cG9uZW50KGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgMCwgc291cmNlKSk7Cit9CisKK1Bh
c3NSZWZQdHI8TWVkaWFTdHJlYW1Db21wb25lbnQ+IE1lZGlhU3RyZWFtQ29tcG9uZW50OjpjcmVh
dGUoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0sIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1T
b3VyY2U+IHNvdXJjZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtQ29t
cG9uZW50KGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgc3RyZWFtLCBzb3VyY2UpKTsKK30K
KworTWVkaWFTdHJlYW1Db21wb25lbnQ6Ok1lZGlhU3RyZWFtQ29tcG9uZW50KGNvbnN0IFN0cmlu
ZyYgaWQsIE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtLCBQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtU291cmNlPiBzb3VyY2UpCisgICAgOiBtX3N0cmVhbShzdHJlYW0pCisgICAgLCBtX3NvdXJj
ZShzb3VyY2UpCisgICAgLCBtX2lkKGlkKQorICAgICwgbV9lbmFibGVkKHRydWUpCit7CisgICAg
QVNTRVJUKG1faWQubGVuZ3RoKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db21wb25lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbXBvbmVudC5oCShy
ZXZpc2lvbiAxNTU0MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbUNvbXBvbmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMywyOSArMzQsMTkgQEAKIAogI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCiAKLSNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgot
I2luY2x1ZGUgIlVVSUQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOworY2xhc3Mg
TWVkaWFTdHJlYW1Tb3VyY2U7CiAKIGNsYXNzIE1lZGlhU3RyZWFtQ29tcG9uZW50IDogcHVibGlj
IFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1Db21wb25lbnQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNvbXBvbmVudD4gY3JlYXRlKFBhc3NSZWZQdHI8TWVkaWFT
dHJlYW1Tb3VyY2U+IHNvdXJjZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
TWVkaWFTdHJlYW1Db21wb25lbnQoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCAwLCBzb3Vy
Y2UpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNvbXBvbmVu
dD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+
IHNvdXJjZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTdHJlYW1D
b21wb25lbnQoaWQsIDAsIHNvdXJjZSkpOwotICAgIH0KLQotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtQ29tcG9uZW50PiBjcmVhdGUoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJl
YW0sIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IHNvdXJjZSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTdHJlYW1Db21wb25lbnQoY3JlYXRlQ2Fub25pY2Fs
VVVJRFN0cmluZygpLCBzdHJlYW0sIHNvdXJjZSkpOwotICAgIH0KKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbUNvbXBvbmVudD4gY3JlYXRlKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1T
b3VyY2U+KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNvbXBvbmVudD4gY3Jl
YXRlKE1lZGlhU3RyZWFtRGVzY3JpcHRvciosIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+
KTsKIAogICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJlYW07IH0KICAgICB2b2lkIHNldFN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0
cmVhbSkgeyBBU1NFUlQoIW1fc3RyZWFtICYmIHN0cmVhbSk7IG1fc3RyZWFtID0gc3RyZWFtOyB9
CkBAIC02NywxNCArNTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgZW5h
YmxlZCkgeyBtX2VuYWJsZWQgPSBlbmFibGVkOyB9CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFTdHJl
YW1Db21wb25lbnQoY29uc3QgU3RyaW5nJiBpZCwgTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJl
YW0sIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IHNvdXJjZSkKLSAgICAgICAgOiBtX3N0
cmVhbShzdHJlYW0pCi0gICAgICAgICwgbV9zb3VyY2Uoc291cmNlKQotICAgICAgICAsIG1faWQo
aWQpCi0gICAgICAgICwgbV9lbmFibGVkKHRydWUpCi0gICAgewotICAgICAgICBBU1NFUlQobV9p
ZC5sZW5ndGgoKSk7Ci0gICAgfQorICAgIE1lZGlhU3RyZWFtQ29tcG9uZW50KGNvbnN0IFN0cmlu
ZyYgaWQsIE1lZGlhU3RyZWFtRGVzY3JpcHRvciosIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3Vy
Y2U+KTsKIAogICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvciogbV9zdHJlYW07CiAgICAgUmVmUHRy
PE1lZGlhU3RyZWFtU291cmNlPiBtX3NvdXJjZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9y
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5j
bHVkZSAiTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNv
dXJjZS5oIgorI2luY2x1ZGUgIlVVSUQuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUo
Y29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFT
dHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291cmNlcykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE1lZGlhU3RyZWFtRGVzY3JpcHRvcihjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksIGF1
ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKSk7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFTdHJlYW1E
ZXNjcmlwdG9yPiBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmNyZWF0ZShjb25zdCBNZWRpYVN0cmVh
bUNvbXBvbmVudFZlY3RvciYgYXVkaW9Db21wb25lbnRzLCBjb25zdCBNZWRpYVN0cmVhbUNvbXBv
bmVudFZlY3RvciYgdmlkZW9Db21wb25lbnRzKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
TWVkaWFTdHJlYW1EZXNjcmlwdG9yKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgYXVkaW9D
b21wb25lbnRzLCB2aWRlb0NvbXBvbmVudHMpKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbURlc2Ny
aXB0b3I6OmFkZENvbXBvbmVudChQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ29tcG9uZW50PiBjb21w
b25lbnQpCit7CisgICAgc3dpdGNoIChjb21wb25lbnQtPnNvdXJjZSgpLT50eXBlKCkpIHsKKyAg
ICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpUeXBlQXVkaW86CisgICAgICAgIGlmIChtX2F1ZGlv
Q29tcG9uZW50cy5maW5kKGNvbXBvbmVudCkgPT0gbm90Rm91bmQpCisgICAgICAgICAgICBtX2F1
ZGlvQ29tcG9uZW50cy5hcHBlbmQoY29tcG9uZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvOgorICAgICAgICBpZiAobV92aWRlb0NvbXBv
bmVudHMuZmluZChjb21wb25lbnQpID09IG5vdEZvdW5kKQorICAgICAgICAgICAgbV92aWRlb0Nv
bXBvbmVudHMuYXBwZW5kKGNvbXBvbmVudCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwor
dm9pZCBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnJlbW92ZUNvbXBvbmVudChQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtQ29tcG9uZW50PiBjb21wb25lbnQpCit7CisgICAgc2l6ZV90IHBvcyA9IG5vdEZv
dW5kOworICAgIHN3aXRjaCAoY29tcG9uZW50LT5zb3VyY2UoKS0+dHlwZSgpKSB7CisgICAgY2Fz
ZSBNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZUF1ZGlvOgorICAgICAgICBwb3MgPSBtX2F1ZGlvQ29t
cG9uZW50cy5maW5kKGNvbXBvbmVudCk7CisgICAgICAgIGlmIChwb3MgIT0gbm90Rm91bmQpCisg
ICAgICAgICAgICBtX2F1ZGlvQ29tcG9uZW50cy5yZW1vdmUocG9zKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvOgorICAgICAgICBwb3MgPSBt
X3ZpZGVvQ29tcG9uZW50cy5maW5kKGNvbXBvbmVudCk7CisgICAgICAgIGlmIChwb3MgIT0gbm90
Rm91bmQpCisgICAgICAgICAgICBtX3ZpZGVvQ29tcG9uZW50cy5yZW1vdmUocG9zKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorfQorCit2b2lkIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6YWRkUmVt
b3RlVHJhY2soTWVkaWFTdHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCkKK3sKKyAgICBpZiAobV9j
bGllbnQpCisgICAgICAgIG1fY2xpZW50LT5hZGRSZW1vdGVUcmFjayhjb21wb25lbnQpOworICAg
IGVsc2UKKyAgICAgICAgYWRkQ29tcG9uZW50KGNvbXBvbmVudCk7Cit9CisKK3ZvaWQgTWVkaWFT
dHJlYW1EZXNjcmlwdG9yOjpyZW1vdmVSZW1vdGVUcmFjayhNZWRpYVN0cmVhbUNvbXBvbmVudCog
Y29tcG9uZW50KQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnJlbW92
ZVJlbW90ZVRyYWNrKGNvbXBvbmVudCk7CisgICAgZWxzZQorICAgICAgICByZW1vdmVDb21wb25l
bnQoY29tcG9uZW50KTsKK30KKworTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpNZWRpYVN0cmVhbURl
c2NyaXB0b3IoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3Im
IGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291cmNl
cykKKyAgICA6IG1fY2xpZW50KDApCisgICAgLCBtX2lkKGlkKQorICAgICwgbV9lbmRlZChmYWxz
ZSkKK3sKKyAgICBBU1NFUlQobV9pZC5sZW5ndGgoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBhdWRpb1NvdXJjZXMuc2l6ZSgpOyBpKyspCisgICAgICAgIG1fYXVkaW9Db21wb25lbnRz
LmFwcGVuZChNZWRpYVN0cmVhbUNvbXBvbmVudDo6Y3JlYXRlKHRoaXMsIGF1ZGlvU291cmNlc1tp
XSkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2aWRlb1NvdXJjZXMuc2l6ZSgpOyBp
KyspCisgICAgICAgIG1fdmlkZW9Db21wb25lbnRzLmFwcGVuZChNZWRpYVN0cmVhbUNvbXBvbmVu
dDo6Y3JlYXRlKHRoaXMsIHZpZGVvU291cmNlc1tpXSkpOworfQorCitNZWRpYVN0cmVhbURlc2Ny
aXB0b3I6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBNZWRp
YVN0cmVhbUNvbXBvbmVudFZlY3RvciYgYXVkaW9Db21wb25lbnRzLCBjb25zdCBNZWRpYVN0cmVh
bUNvbXBvbmVudFZlY3RvciYgdmlkZW9Db21wb25lbnRzKQorICAgIDogbV9jbGllbnQoMCkKKyAg
ICAsIG1faWQoaWQpCisgICAgLCBtX2VuZGVkKGZhbHNlKQoreworICAgIEFTU0VSVChtX2lkLmxl
bmd0aCgpKTsKKyAgICBmb3IgKE1lZGlhU3RyZWFtQ29tcG9uZW50VmVjdG9yOjpjb25zdF9pdGVy
YXRvciBpdGVyID0gYXVkaW9Db21wb25lbnRzLmJlZ2luKCk7IGl0ZXIgIT0gYXVkaW9Db21wb25l
bnRzLmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgKCppdGVyKS0+c2V0U3RyZWFtKHRoaXMpOwor
ICAgICAgICBtX2F1ZGlvQ29tcG9uZW50cy5hcHBlbmQoKCppdGVyKSk7CisgICAgfQorICAgIGZv
ciAoTWVkaWFTdHJlYW1Db21wb25lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSB2aWRl
b0NvbXBvbmVudHMuYmVnaW4oKTsgaXRlciAhPSB2aWRlb0NvbXBvbmVudHMuZW5kKCk7ICsraXRl
cikgeworICAgICAgICAoKml0ZXIpLT5zZXRTdHJlYW0odGhpcyk7CisgICAgICAgIG1fdmlkZW9D
b21wb25lbnRzLmFwcGVuZCgoKml0ZXIpKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURl
c2NyaXB0b3IuaAkocmV2aXNpb24gMTU1NDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDYgKzM1LDcgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiTWVkaWFT
dHJlYW1Db21wb25lbnQuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC01Nywx
NSArNTgsOCBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkV4dHJhRGF0YSgpIHsgfQogICAg
IH07CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9T
b3VyY2VzLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbURlc2NyaXB0b3IoaWQs
IGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBpZCwgY29u
c3QgTWVkaWFTdHJlYW1Db21wb25lbnRWZWN0b3ImIGF1ZGlvQ29tcG9uZW50cywgY29uc3QgTWVk
aWFTdHJlYW1Db21wb25lbnRWZWN0b3ImIHZpZGVvQ29tcG9uZW50cykKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTdHJlYW1EZXNjcmlwdG9yKGlkLCBhdWRpb0NvbXBv
bmVudHMsIHZpZGVvQ29tcG9uZW50cykpOwotICAgIH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbURlc2NyaXB0b3I+IGNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3Rv
ciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3Vy
Y2VzKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IGNyZWF0
ZShjb25zdCBNZWRpYVN0cmVhbUNvbXBvbmVudFZlY3RvciYgYXVkaW9Db21wb25lbnRzLCBjb25z
dCBNZWRpYVN0cmVhbUNvbXBvbmVudFZlY3RvciYgdmlkZW9Db21wb25lbnRzKTsKIAogICAgIE1l
ZGlhU3RyZWFtRGVzY3JpcHRvckNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGll
bnQ7IH0KICAgICB2b2lkIHNldENsaWVudChNZWRpYVN0cmVhbURlc2NyaXB0b3JDbGllbnQqIGNs
aWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQpAQCAtNzUsNTUgKzY5LDE0IEBAIHB1YmxpYzoK
ICAgICB1bnNpZ25lZCBudW1iZXJPZkF1ZGlvQ29tcG9uZW50cygpIGNvbnN0IHsgcmV0dXJuIG1f
YXVkaW9Db21wb25lbnRzLnNpemUoKTsgfQogICAgIE1lZGlhU3RyZWFtQ29tcG9uZW50KiBhdWRp
b0NvbXBvbmVudCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb0NvbXBvbmVu
dHNbaW5kZXhdLmdldCgpOyB9CiAKLSAgICB2b2lkIGFkZFJlbW90ZVRyYWNrKE1lZGlhU3RyZWFt
Q29tcG9uZW50KiBjb21wb25lbnQpCi0gICAgewotICAgICAgICBpZiAobV9jbGllbnQpCi0gICAg
ICAgICAgICBtX2NsaWVudC0+YWRkUmVtb3RlVHJhY2soY29tcG9uZW50KTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgYWRkQ29tcG9uZW50KGNvbXBvbmVudCk7Ci0gICAgfQotCi0gICAgdm9p
ZCByZW1vdmVSZW1vdGVUcmFjayhNZWRpYVN0cmVhbUNvbXBvbmVudCogY29tcG9uZW50KQotICAg
IHsKLSAgICAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICAgICAgbV9jbGllbnQtPnJlbW92ZVJl
bW90ZVRyYWNrKGNvbXBvbmVudCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUNv
bXBvbmVudChjb21wb25lbnQpOwotICAgIH0KLQogICAgIHVuc2lnbmVkIG51bWJlck9mVmlkZW9D
b21wb25lbnRzKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0NvbXBvbmVudHMuc2l6ZSgpOyB9CiAg
ICAgTWVkaWFTdHJlYW1Db21wb25lbnQqIHZpZGVvQ29tcG9uZW50KHVuc2lnbmVkIGluZGV4KSBj
b25zdCB7IHJldHVybiBtX3ZpZGVvQ29tcG9uZW50c1tpbmRleF0uZ2V0KCk7IH0KIAotICAgIHZv
aWQgYWRkQ29tcG9uZW50KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Db21wb25lbnQ+IGNvbXBvbmVu
dCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAoY29tcG9uZW50LT5zb3VyY2UoKS0+dHlwZSgpKSB7
Ci0gICAgICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVBdWRpbzoKLSAgICAgICAgICAg
IGlmIChtX2F1ZGlvQ29tcG9uZW50cy5maW5kKGNvbXBvbmVudCkgPT0gbm90Rm91bmQpCi0gICAg
ICAgICAgICAgICAgbV9hdWRpb0NvbXBvbmVudHMuYXBwZW5kKGNvbXBvbmVudCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvOgot
ICAgICAgICAgICAgaWYgKG1fdmlkZW9Db21wb25lbnRzLmZpbmQoY29tcG9uZW50KSA9PSBub3RG
b3VuZCkKLSAgICAgICAgICAgICAgICBtX3ZpZGVvQ29tcG9uZW50cy5hcHBlbmQoY29tcG9uZW50
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCByZW1v
dmVDb21wb25lbnQoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNvbXBvbmVudD4gY29tcG9uZW50KQot
ICAgIHsKLSAgICAgICAgc2l6ZV90IHBvcyA9IG5vdEZvdW5kOwotICAgICAgICBzd2l0Y2ggKGNv
bXBvbmVudC0+c291cmNlKCktPnR5cGUoKSkgewotICAgICAgICBjYXNlIE1lZGlhU3RyZWFtU291
cmNlOjpUeXBlQXVkaW86Ci0gICAgICAgICAgICBwb3MgPSBtX2F1ZGlvQ29tcG9uZW50cy5maW5k
KGNvbXBvbmVudCk7Ci0gICAgICAgICAgICBpZiAocG9zICE9IG5vdEZvdW5kKQotICAgICAgICAg
ICAgICAgIG1fYXVkaW9Db21wb25lbnRzLnJlbW92ZShwb3MpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVWaWRlbzoKLSAgICAgICAgICAg
IHBvcyA9IG1fdmlkZW9Db21wb25lbnRzLmZpbmQoY29tcG9uZW50KTsKLSAgICAgICAgICAgIGlm
IChwb3MgIT0gbm90Rm91bmQpCi0gICAgICAgICAgICAgICAgbV92aWRlb0NvbXBvbmVudHMucmVt
b3ZlKHBvcyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KKyAgICB2b2lk
IGFkZENvbXBvbmVudChQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ29tcG9uZW50Pik7CisgICAgdm9p
ZCByZW1vdmVDb21wb25lbnQoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNvbXBvbmVudD4pOworCisg
ICAgdm9pZCBhZGRSZW1vdGVUcmFjayhNZWRpYVN0cmVhbUNvbXBvbmVudCopOworICAgIHZvaWQg
cmVtb3ZlUmVtb3RlVHJhY2soTWVkaWFTdHJlYW1Db21wb25lbnQqKTsKIAogICAgIGJvb2wgZW5k
ZWQoKSBjb25zdCB7IHJldHVybiBtX2VuZGVkOyB9CiAgICAgdm9pZCBzZXRFbmRlZCgpIHsgbV9l
bmRlZCA9IHRydWU7IH0KQEAgLTEzMiwzNCArODUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRF
eHRyYURhdGEoUGFzc1JlZlB0cjxFeHRyYURhdGE+IGV4dHJhRGF0YSkgeyBtX2V4dHJhRGF0YSA9
IGV4dHJhRGF0YTsgfQogCiBwcml2YXRlOgotICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvcihjb25z
dCBTdHJpbmcmIGlkLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2Vz
LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKQotICAgICAgICA6
IG1fY2xpZW50KDApCi0gICAgICAgICwgbV9pZChpZCkKLSAgICAgICAgLCBtX2VuZGVkKGZhbHNl
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1faWQubGVuZ3RoKCkpOwotICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGF1ZGlvU291cmNlcy5zaXplKCk7IGkrKykKLSAgICAgICAgICAgIG1f
YXVkaW9Db21wb25lbnRzLmFwcGVuZChNZWRpYVN0cmVhbUNvbXBvbmVudDo6Y3JlYXRlKHRoaXMs
IGF1ZGlvU291cmNlc1tpXSkpOwotCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmlk
ZW9Tb3VyY2VzLnNpemUoKTsgaSsrKQotICAgICAgICAgICAgbV92aWRlb0NvbXBvbmVudHMuYXBw
ZW5kKE1lZGlhU3RyZWFtQ29tcG9uZW50OjpjcmVhdGUodGhpcywgdmlkZW9Tb3VyY2VzW2ldKSk7
Ci0gICAgfQotCi0gICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgaWQsIGNv
bnN0IE1lZGlhU3RyZWFtQ29tcG9uZW50VmVjdG9yJiBhdWRpb0NvbXBvbmVudHMsIGNvbnN0IE1l
ZGlhU3RyZWFtQ29tcG9uZW50VmVjdG9yJiB2aWRlb0NvbXBvbmVudHMpCi0gICAgICAgIDogbV9j
bGllbnQoMCkKLSAgICAgICAgLCBtX2lkKGlkKQotICAgICAgICAsIG1fZW5kZWQoZmFsc2UpCi0g
ICAgewotICAgICAgICBBU1NFUlQobV9pZC5sZW5ndGgoKSk7Ci0gICAgICAgIGZvciAoTWVkaWFT
dHJlYW1Db21wb25lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBhdWRpb0NvbXBvbmVu
dHMuYmVnaW4oKTsgaXRlciAhPSBhdWRpb0NvbXBvbmVudHMuZW5kKCk7ICsraXRlcikgewotICAg
ICAgICAgICAgKCppdGVyKS0+c2V0U3RyZWFtKHRoaXMpOwotICAgICAgICAgICAgbV9hdWRpb0Nv
bXBvbmVudHMuYXBwZW5kKCgqaXRlcikpOwotICAgICAgICB9Ci0gICAgICAgIGZvciAoTWVkaWFT
dHJlYW1Db21wb25lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSB2aWRlb0NvbXBvbmVu
dHMuYmVnaW4oKTsgaXRlciAhPSB2aWRlb0NvbXBvbmVudHMuZW5kKCk7ICsraXRlcikgewotICAg
ICAgICAgICAgKCppdGVyKS0+c2V0U3RyZWFtKHRoaXMpOwotICAgICAgICAgICAgbV92aWRlb0Nv
bXBvbmVudHMuYXBwZW5kKCgqaXRlcikpOwotICAgICAgICB9Ci0gICAgfQorICAgIE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZl
Y3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9T
b3VyY2VzKTsKKyAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiBpZCwgY29u
c3QgTWVkaWFTdHJlYW1Db21wb25lbnRWZWN0b3ImIGF1ZGlvQ29tcG9uZW50cywgY29uc3QgTWVk
aWFTdHJlYW1Db21wb25lbnRWZWN0b3ImIHZpZGVvQ29tcG9uZW50cyk7CiAKICAgICBNZWRpYVN0
cmVhbURlc2NyaXB0b3JDbGllbnQqIG1fY2xpZW50OwogICAgIFN0cmluZyBtX2lkOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>