<?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>102453</bug_id>
          
          <creation_ts>2012-11-15 18:17:02 -0800</creation_ts>
          <short_desc>When releasing a CGImage, we should remove it from the subimage cache too.</short_desc>
          <delta_ts>2013-03-29 17:50:19 -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>Mac</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yongjun Zhang">yongjun_zhang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dglazkov</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>768794</commentid>
    <comment_count>0</comment_count>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2012-11-15 18:17:02 -0800</bug_when>
    <thetext>Currently SubimageCacheWithTimer is inside GraphicsContextCG.cpp.  It would be nice to move it out to a separate file and we can access the subimage cache if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768804</commentid>
    <comment_count>1</comment_count>
      <attachid>174586</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2012-11-15 18:27:56 -0800</bug_when>
    <thetext>Created attachment 174586
Move SubimageCacheWithTimer to separate files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768908</commentid>
    <comment_count>2</comment_count>
      <attachid>174586</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-15 21:30:12 -0800</bug_when>
    <thetext>Comment on attachment 174586
Move SubimageCacheWithTimer to separate files.

Attachment 174586 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14857504</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768935</commentid>
    <comment_count>3</comment_count>
      <attachid>174607</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2012-11-15 22:16:43 -0800</bug_when>
    <thetext>Created attachment 174607
Fix win build break.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768999</commentid>
    <comment_count>4</comment_count>
      <attachid>174607</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-16 00:42:28 -0800</bug_when>
    <thetext>Comment on attachment 174607
Fix win build break.

Attachment 174607 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14844802

New failing tests:
inspector-protocol/debugger-terminate-dedicated-worker-while-paused.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769562</commentid>
    <comment_count>5</comment_count>
      <attachid>174739</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2012-11-16 12:21:50 -0800</bug_when>
    <thetext>Created attachment 174739
Re-submit the patch for bots to pick up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775587</commentid>
    <comment_count>6</comment_count>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2012-11-26 09:59:29 -0800</bug_when>
    <thetext>Part of &lt;rdar://problem/12701759&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826802</commentid>
    <comment_count>7</comment_count>
      <attachid>186934</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2013-02-06 15:29:59 -0800</bug_when>
    <thetext>Created attachment 186934
Move subimage cache code into separate h/cpp file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826871</commentid>
    <comment_count>8</comment_count>
      <attachid>186934</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-06 16:35:43 -0800</bug_when>
    <thetext>Comment on attachment 186934
Move subimage cache code into separate h/cpp file.

Attachment 186934 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16398419

New failing tests:
http/tests/cache/cached-main-resource.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830665</commentid>
    <comment_count>9</comment_count>
      <attachid>186934</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-12 00:48:33 -0800</bug_when>
    <thetext>Comment on attachment 186934
Move subimage cache code into separate h/cpp file.

View in context: https://bugs.webkit.org/attachment.cgi?id=186934&amp;action=review

I think it is misleading to have stuff like subimage(CGImageRef, const FloatRect&amp;) in the new files. The new files should only contain the minimum for the definition and implementation of SubimageCacheWithTimer.

I would also promote SubimageCacheWithTimer to a real class with real encapsulation now that it is promoted from a tool to a header.

&gt; Source/WebCore/platform/graphics/cg/SubimageCacheWithTimer.cpp:2
&gt; + * Copyright (C) 2013 Apple Inc. All Rights Reserved.

You need to preserve the full original copyright too (or hunt who did the changes).

&gt; Source/WebCore/platform/graphics/cg/SubimageCacheWithTimer.h:2
&gt; + * Copyright (C) 2013 Apple Inc. All Rights Reserved.

Ditto for copyright.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864590</commentid>
    <comment_count>10</comment_count>
      <attachid>186934</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2013-03-27 08:59:41 -0700</bug_when>
    <thetext>Comment on attachment 186934
Move subimage cache code into separate h/cpp file.

r- based on Benjamin&apos;s reply in Comment #9.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866372</commentid>
    <comment_count>11</comment_count>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2013-03-29 14:20:11 -0700</bug_when>
    <thetext>We should also remove the image from subimage cache if we are going to release the CGImage.  Change the title to reflect that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866373</commentid>
    <comment_count>12</comment_count>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2013-03-29 14:20:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/13526138&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866394</commentid>
    <comment_count>13</comment_count>
      <attachid>195802</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2013-03-29 14:45:02 -0700</bug_when>
    <thetext>Created attachment 195802
remove the image from subimage cache when we releasing the CGImageRef</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866518</commentid>
    <comment_count>14</comment_count>
      <attachid>195802</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-29 17:50:15 -0700</bug_when>
    <thetext>Comment on attachment 195802
remove the image from subimage cache when we releasing the CGImageRef

Clearing flags on attachment: 195802

Committed r147265: &lt;http://trac.webkit.org/changeset/147265&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866519</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-29 17:50:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174586</attachid>
            <date>2012-11-15 18:27:56 -0800</date>
            <delta_ts>2012-11-15 22:16:43 -0800</delta_ts>
            <desc>Move SubimageCacheWithTimer to separate files.</desc>
            <filename>move_subimagecache.patch</filename>
            <type>text/plain</type>
            <size>18444</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNDg3MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDEyLTExLTE1ICBZb25nanVu
IFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBTdWJpbWFn
ZUNhY2hlV2l0aFRpbWVyIHRvIGEgc2VwYXJhdGUgZmlsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjQ1MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lciBv
dXQgb2YgR3JhcGhjaXNDb250ZXh0Q0cuY3BwLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgc2lu
Y2UgdGhlcmUgaXMgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBhZGQgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIGFu
ZCBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcCBpbnRvIHByb2plY3QgZmlsZS4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0
aFRpbWVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OlN1YmltYWdlQ2FjaGVXaXRoVGltZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6aW52YWxpZGF0ZUNhY2hlVGltZXJG
aXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpzdWJpbWFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNv
cmU6OnN1YmltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNh
Y2hlV2l0aFRpbWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpzdWJpbWFnZSk6CisgICAgICAgIChTdWJpbWFnZUNhY2hlRW50cnkpOgorICAgICAgICAo
U3ViaW1hZ2VDYWNoZUVudHJ5VHJhaXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YmltYWdlQ2Fj
aGVFbnRyeVRyYWl0czo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YmltYWdl
Q2FjaGVFbnRyeVRyYWl0czo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OlN1YmltYWdlQ2FjaGVFbnRyeVRyYWl0czo6aXNEZWxldGVkVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6U3ViaW1hZ2VDYWNoZUhhc2g6Omhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6U3Vi
aW1hZ2VDYWNoZUhhc2g6OmVxdWFsKToKKyAgICAgICAgKFN1YmltYWdlQ2FjaGVIYXNoKToKKyAg
ICAgICAgKFN1YmltYWdlQ2FjaGVXaXRoVGltZXIpOgorICAgICAgICAoU3ViaW1hZ2VSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YmltYWdlUmVxdWVzdDo6U3ViaW1hZ2VSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlN1YmltYWdlQ2FjaGVBZGRlcjo6aGFzaCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdWJpbWFnZUNhY2hlQWRkZXI6OmVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlN1
YmltYWdlQ2FjaGVBZGRlcjo6dHJhbnNsYXRlKToKKwogMjAxMi0xMS0xNSAgS2VuaWNoaSBJc2hp
YmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTWFrZSBPcGVuVHlwZVZlcnRp
Y2FsRGF0YSBiZSByZWYtY291bnRlZApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM0ODYwKQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC02ODQsNiArNjg0LDggQEAKIAkJMUYzRjE5NTMxNDk5Q0E3NjAwQTVBRUE3IC8qIFBPREZy
ZWVMaXN0QXJlbmEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFGM0YxOTUyMTQ5OUNBNzYwMEE1QUVBNyAvKiBQT0RGcmVlTGlzdEFyZW5hLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUZBRkJGMTgxNUE1
RkE2RTAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGQUZCRjE3MTVBNUZBNTIwMDA4M0EyMCAvKiBVVElVdGls
aXRpZXMubW0gKi87IH07CiAJCTFGQUZCRjE5MTVBNUZBNzQwMDA4M0EyMCAvKiBVVElVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGQUZC
RjE2MTVBNUZBNTIwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMuaCAqLzsgfTsKKwkJMUZDNDBGQjkx
NjU1Q0NCNjAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUZDNDBGQjgxNjU1QzU5MTAwNDBG
MjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwICovOyB9OworCQkxRkM0MEZCQTE2NTVD
Q0I5MDA0MEYyOUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUZDNDBGQjcxNjU1QzU5MTAwNDBGMjlFIC8q
IFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCAqLzsgfTsKIAkJMjBENjI5MjYxMjUzNjkwQjAwMDgx
NTQzIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMEQ2MjkyNDEyNTM2OTBCMDAwODE1NDMgLyogSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCAqLzsgfTsKIAkJMjBENjI5MjcxMjUzNjkwQjAwMDgx
NTQzIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjBENjI5MjUxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oICovOyB9OwogCQkyMjc3Nzc2MDEzNDVERUE5MDA4RUE0NTUg
LyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyMjc3Nzc1RjEzNDVERUE5MDA4RUE0NTUgLyogSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTc4MDUsNiArNzgwNyw4IEBACiAJCTFGM0YxOTUyMTQ5OUNBNzYwMEE1QUVB
NyAvKiBQT0RGcmVlTGlzdEFyZW5hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBPREZyZWVMaXN0QXJlbmEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUZBRkJG
MTYxNUE1RkE1MjAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBVVElVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUZBRkJGMTcxNUE1RkE1MjAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVUSVV0aWxpdGllcy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUZDNDBGQjcxNjU1QzU5MTAwNDBGMjlFIC8qIFN1YmltYWdl
Q2FjaGVXaXRoVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ViaW1h
Z2VDYWNoZVdpdGhUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRkM0MEZC
ODE2NTVDNTkxMDA0MEYyOUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjBENjI5MjQxMjUzNjkwQjAwMDgxNTQzIC8q
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyMEQ2MjkyNTEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyMjc3Nzc1RjEz
NDVERUE5MDA4RUE0NTUgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk5MDcsNiArMTk5MTEsOCBAQAogCQkJCUE4MEEzOEZE
MEU1MENDODIwMEEyNUVCQyAvKiBQYXR0ZXJuQ0cuY3BwICovLAogCQkJCUIyNzUzNTM2MEIwNTM4
MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmNwcCAqLywKIAkJCQlCMjc1MzUzNzBCMDUz
ODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5oICovLAorCQkJCTFGQzQwRkI3MTY1NUM1
OTEwMDQwRjI5RSAvKiBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmggKi8sCisJCQkJMUZDNDBGQjgx
NjU1QzU5MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwICovLAogCQkJCUIy
NzUzNTJBMEIwNTM4MTQwMDJDRTY0RiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcCAqLywK
IAkJCSk7CiAJCQlwYXRoID0gY2c7CkBAIC0yNTcyNCw2ICsyNTczMCw3IEBACiAJCQkJNTcwQjc4
QzAxNjUwQ0U4MTAwMURCRTFCIC8qIFNlbGVjdFJ1bGVGZWF0dXJlU2V0LmggaW4gSGVhZGVycyAq
LywKIAkJCQkxRTUwMDg0NzE2NTE2QUQ4MDBCN0UwOTggLyogUmVuZGVyVGhlbWVNYWNTaGFyZWQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUzRUY3NjZCMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5n
c01hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUZDNDBGQkExNjU1Q0NCOTAwNDBGMjlFIC8q
IFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjg4MTIsNiArMjg4
MTksNyBAQAogCQkJCTU3MEI3OEJGMTY1MENFODEwMDFEQkUxQiAvKiBTZWxlY3RSdWxlRmVhdHVy
ZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxRTUwMDg0ODE2NTE2QUQ4MDBCN0UwOTggLyog
UmVuZGVyVGhlbWVNYWNTaGFyZWQubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDdFMDUyMjE2NTFD
MjgyMDBDMTIwMUYgLyogV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJMUZDNDBGQjkxNjU1Q0NCNjAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAxMzQ4
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJQYXRo
LmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgogI2luY2x1ZGUgIlNoYWRvd0JsdXIuaCIKKyNpbmNs
dWRlICJTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNs
dWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KQEAgLTc5LDExNyArODAsOCBAQCB1c2luZyBXVEY6OnBhaXJJbnRIYXNoOwogLy8gRklY
TUU6IFRoZSBmb2xsb3dpbmcgdXNpbmcgZGVjbGFyYXRpb24gc2hvdWxkIGJlIGluIDx3dGYvSGFz
aFRyYWl0cy5oPi4KIHVzaW5nIFdURjo6R2VuZXJpY0hhc2hUcmFpdHM7CiAKLSNkZWZpbmUgQ0FD
SEVfU1VCSU1BR0VTIDEKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgIUNBQ0hFX1NVQklN
QUdFUwotCi1zdGF0aWMgaW5saW5lIFJldGFpblB0cjxDR0ltYWdlUmVmPiBzdWJpbWFnZShDR0lt
YWdlUmVmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCi17Ci0gICAgcmV0dXJuIGFkb3B0
Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdChpbWFnZSwgcmVjdCkpOwotfQotCi0jZWxz
ZSAvLyBDQUNIRV9TVUJJTUFHRVMKLQotc3RhdGljIGNvbnN0IGRvdWJsZSBzdWJpbWFnZUNhY2hl
Q2xlYXJEZWxheSA9IDE7Ci1zdGF0aWMgY29uc3QgaW50IG1heFN1YmltYWdlQ2FjaGVTaXplID0g
MzAwOwotCi1zdHJ1Y3QgU3ViaW1hZ2VDYWNoZUVudHJ5IHsKLSAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gaW1hZ2U7Ci0gICAgRmxvYXRSZWN0IHJlY3Q7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IHN1YmltYWdlOwotfTsKLQotc3RydWN0IFN1YmltYWdlQ2FjaGVFbnRyeVRyYWl0cyA6IEdl
bmVyaWNIYXNoVHJhaXRzPFN1YmltYWdlQ2FjaGVFbnRyeT4gewotICAgIHR5cGVkZWYgSGFzaFRy
YWl0czxSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gPiBJbWFnZVRyYWl0czsKLQotICAgIHN0YXRpYyBj
b25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSB0cnVlOwotCi0gICAgc3RhdGljIGNvbnN0IGJv
b2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOwotICAgIHN0YXRpYyBib29sIGlzRW1w
dHlWYWx1ZShjb25zdCBTdWJpbWFnZUNhY2hlRW50cnkmIHZhbHVlKSB7IHJldHVybiAhdmFsdWUu
aW1hZ2U7IH0KLQotICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShTdWJpbWFn
ZUNhY2hlRW50cnkmIHNsb3QpIHsgSW1hZ2VUcmFpdHM6OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZShz
bG90LmltYWdlKTsgfQotICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFN1Ymlt
YWdlQ2FjaGVFbnRyeSYgdmFsdWUpIHsgcmV0dXJuIEltYWdlVHJhaXRzOjppc0RlbGV0ZWRWYWx1
ZSh2YWx1ZS5pbWFnZSk7IH0KLX07Ci0KLXN0cnVjdCBTdWJpbWFnZUNhY2hlSGFzaCB7Ci0gICAg
c3RhdGljIHVuc2lnbmVkIGhhc2goQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBy
ZWN0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHBhaXJJbnRIYXNoKFB0ckhhc2g8Q0dJbWFnZVJl
Zj46Omhhc2goaW1hZ2UpLAotICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWN0
LngoKSkgPDwgMTYpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlY3QueSgpKSk7Ci0gICAgfQot
ICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFN1YmltYWdlQ2FjaGVFbnRyeSYga2V5KQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGhhc2goa2V5LmltYWdlLmdldCgpLCBrZXkucmVjdCk7Ci0g
ICAgfQotICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN1YmltYWdlQ2FjaGVFbnRyeSYgYSwg
Y29uc3QgU3ViaW1hZ2VDYWNoZUVudHJ5JiBiKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGEuaW1h
Z2UgPT0gYi5pbWFnZSAmJiBhLnJlY3QgPT0gYi5yZWN0OwotICAgIH0KLSAgICBzdGF0aWMgY29u
c3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Ci19OwotCi10eXBl
ZGVmIEhhc2hTZXQ8U3ViaW1hZ2VDYWNoZUVudHJ5LCBTdWJpbWFnZUNhY2hlSGFzaCwgU3ViaW1h
Z2VDYWNoZUVudHJ5VHJhaXRzPiBTdWJpbWFnZUNhY2hlOwotCi1zdHJ1Y3QgU3ViaW1hZ2VDYWNo
ZVdpdGhUaW1lciB7Ci0gICAgU3ViaW1hZ2VDYWNoZSBjYWNoZTsKLSAgICBEZWZlcnJhYmxlT25l
U2hvdFRpbWVyPFN1YmltYWdlQ2FjaGVXaXRoVGltZXI+IHRpbWVyOwotCi0gICAgU3ViaW1hZ2VD
YWNoZVdpdGhUaW1lcigpCi0gICAgICAgIDogdGltZXIodGhpcywgJlN1YmltYWdlQ2FjaGVXaXRo
VGltZXI6OmludmFsaWRhdGVDYWNoZVRpbWVyRmlyZWQsIHN1YmltYWdlQ2FjaGVDbGVhckRlbGF5
KQotICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkIGludmFsaWRhdGVDYWNoZVRpbWVyRmlyZWQoRGVm
ZXJyYWJsZU9uZVNob3RUaW1lcjxTdWJpbWFnZUNhY2hlV2l0aFRpbWVyPiopOwotfTsKLQotc3Rh
dGljIFN1YmltYWdlQ2FjaGVXaXRoVGltZXImIHN1YmltYWdlQ2FjaGUoKQotewotICAgIHN0YXRp
YyBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyJiBjYWNoZSA9ICpuZXcgU3ViaW1hZ2VDYWNoZVdpdGhU
aW1lcjsKLSAgICByZXR1cm4gY2FjaGU7Ci19Ci0KLXZvaWQgU3ViaW1hZ2VDYWNoZVdpdGhUaW1l
cjo6aW52YWxpZGF0ZUNhY2hlVGltZXJGaXJlZChEZWZlcnJhYmxlT25lU2hvdFRpbWVyPFN1Ymlt
YWdlQ2FjaGVXaXRoVGltZXI+KikKLXsKLSAgICBzdWJpbWFnZUNhY2hlKCkuY2FjaGUuY2xlYXIo
KTsKLX0KLQotc3RydWN0IFN1YmltYWdlUmVxdWVzdCB7Ci0gICAgQ0dJbWFnZVJlZiBpbWFnZTsK
LSAgICBjb25zdCBGbG9hdFJlY3QmIHJlY3Q7Ci0gICAgU3ViaW1hZ2VSZXF1ZXN0KENHSW1hZ2VS
ZWYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgOiBpbWFnZShpbWFnZSksIHJlY3QocmVj
dCkgeyB9Ci19OwotCi1zdHJ1Y3QgU3ViaW1hZ2VDYWNoZUFkZGVyIHsKLSAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBTdWJpbWFnZVJlcXVlc3QmIHZhbHVlKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIFN1YmltYWdlQ2FjaGVIYXNoOjpoYXNoKHZhbHVlLmltYWdlLCB2YWx1ZS5yZWN0KTsK
LSAgICB9Ci0gICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3ViaW1hZ2VDYWNoZUVudHJ5JiBh
LCBjb25zdCBTdWJpbWFnZVJlcXVlc3QmIGIpCi0gICAgewotICAgICAgICByZXR1cm4gYS5pbWFn
ZSA9PSBiLmltYWdlICYmIGEucmVjdCA9PSBiLnJlY3Q7Ci0gICAgfQotICAgIHN0YXRpYyB2b2lk
IHRyYW5zbGF0ZShTdWJpbWFnZUNhY2hlRW50cnkmIGVudHJ5LCBjb25zdCBTdWJpbWFnZVJlcXVl
c3QmIHJlcXVlc3QsIHVuc2lnbmVkIC8qaGFzaENvZGUqLykKLSAgICB7Ci0gICAgICAgIGVudHJ5
LmltYWdlID0gcmVxdWVzdC5pbWFnZTsKLSAgICAgICAgZW50cnkucmVjdCA9IHJlcXVlc3QucmVj
dDsKLSAgICAgICAgZW50cnkuc3ViaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1h
Z2VJblJlY3QocmVxdWVzdC5pbWFnZSwgcmVxdWVzdC5yZWN0KSk7Ci0gICAgfQotfTsKLQotc3Rh
dGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBzdWJpbWFnZShDR0ltYWdlUmVmIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIHJlY3QpCi17Ci0gICAgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lciYgY2FjaGUg
PSBzdWJpbWFnZUNhY2hlKCk7Ci0gICAgY2FjaGUudGltZXIucmVzdGFydCgpOwotICAgIGlmIChj
YWNoZS5jYWNoZS5zaXplKCkgPT0gbWF4U3ViaW1hZ2VDYWNoZVNpemUpCi0gICAgICAgIGNhY2hl
LmNhY2hlLnJlbW92ZShjYWNoZS5jYWNoZS5iZWdpbigpKTsKLSAgICBBU1NFUlQoY2FjaGUuY2Fj
aGUuc2l6ZSgpIDwgbWF4U3ViaW1hZ2VDYWNoZVNpemUpOwotICAgIHJldHVybiBjYWNoZS5jYWNo
ZS5hZGQ8U3ViaW1hZ2VSZXF1ZXN0LCBTdWJpbWFnZUNhY2hlQWRkZXI+KFN1YmltYWdlUmVxdWVz
dChpbWFnZSwgcmVjdCkpLml0ZXJhdG9yLT5zdWJpbWFnZTsKLX0KLQotI2VuZGlmIC8vIENBQ0hF
X1NVQklNQUdFUwotCiBzdGF0aWMgdm9pZCBzZXRDR0ZpbGxDb2xvcihDR0NvbnRleHRSZWYgY29u
dGV4dCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAg
Q0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hlZENHQ29sb3IoY29s
b3IsIGNvbG9yU3BhY2UpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VD
YWNoZVdpdGhUaW1lci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIgorCisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorCisjaWYgQ0FDSEVfU1VCSU1BR0VTCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAg
ICAKK3N0YXRpYyBjb25zdCBkb3VibGUgc3ViaW1hZ2VDYWNoZUNsZWFyRGVsYXkgPSAxOworc3Rh
dGljIGNvbnN0IGludCBtYXhTdWJpbWFnZUNhY2hlU2l6ZSA9IDMwMDsKKworU3ViaW1hZ2VDYWNo
ZVdpdGhUaW1lcjo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcigpCisgICAgOiB0aW1lcih0aGlzLCAm
U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6aW52YWxpZGF0ZUNhY2hlVGltZXJGaXJlZCwgc3ViaW1h
Z2VDYWNoZUNsZWFyRGVsYXkpCit7Cit9CisKK3ZvaWQgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6
aW52YWxpZGF0ZUNhY2hlVGltZXJGaXJlZChEZWZlcnJhYmxlT25lU2hvdFRpbWVyPFN1YmltYWdl
Q2FjaGVXaXRoVGltZXI+KikKK3sKKyAgICBzdWJpbWFnZUNhY2hlKCkuY2FjaGUuY2xlYXIoKTsK
K30KKworU3ViaW1hZ2VDYWNoZVdpdGhUaW1lciYgc3ViaW1hZ2VDYWNoZSgpCit7CisgICAgc3Rh
dGljIFN1YmltYWdlQ2FjaGVXaXRoVGltZXImIGNhY2hlID0gKm5ldyBTdWJpbWFnZUNhY2hlV2l0
aFRpbWVyOworICAgIHJldHVybiBjYWNoZTsKK30KKworUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1
YmltYWdlKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICBT
dWJpbWFnZUNhY2hlV2l0aFRpbWVyJiBjYWNoZSA9IHN1YmltYWdlQ2FjaGUoKTsKKyAgICBjYWNo
ZS50aW1lci5yZXN0YXJ0KCk7CisgICAgaWYgKGNhY2hlLmNhY2hlLnNpemUoKSA9PSBtYXhTdWJp
bWFnZUNhY2hlU2l6ZSkgeworICAgICAgICBTdWJpbWFnZUNhY2hlRW50cnkgZW50cnkgPSAqY2Fj
aGUuY2FjaGUuYmVnaW4oKTsKKyAgICAgICAgY2FjaGUuY2FjaGUucmVtb3ZlKGVudHJ5KTsKKyAg
ICB9CisgICAgQVNTRVJUKGNhY2hlLmNhY2hlLnNpemUoKSA8IG1heFN1YmltYWdlQ2FjaGVTaXpl
KTsKKyAgICByZXR1cm4gY2FjaGUuY2FjaGUuYWRkPFN1YmltYWdlUmVxdWVzdCwgU3ViaW1hZ2VD
YWNoZUFkZGVyPihTdWJpbWFnZVJlcXVlc3QoaW1hZ2UsIHJlY3QpKS5pdGVyYXRvci0+c3ViaW1h
Z2U7Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VD
YWNoZVdpdGhUaW1lci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU3ViaW1hZ2VDYWNo
ZVdpdGhUaW1lcl9oCisjZGVmaW5lIFN1YmltYWdlQ2FjaGVXaXRoVGltZXJfaAorCisjaW5jbHVk
ZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKworI2luY2x1ZGUgPENvcmVHcmFw
aGljcy9Db3JlR3JhcGhpY3MuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKyNkZWZpbmUgQ0FDSEVfU1VCSU1BR0VTIDEKKworI2lmICFDQUNIRV9T
VUJJTUFHRVMKKworc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3ViaW1hZ2Uo
Q0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQoreworICAgIHJldHVybiBh
ZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QoaW1hZ2UsIHJlY3QpKTsKK30KKwor
I2Vsc2UgLy8gQ0FDSEVfU1VCSU1BR0VTCisKK3N0cnVjdCBTdWJpbWFnZUNhY2hlRW50cnkgewor
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKKyAgICBGbG9hdFJlY3QgcmVjdDsKKyAg
ICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3ViaW1hZ2U7Cit9OworCitzdHJ1Y3QgU3ViaW1hZ2VD
YWNoZUVudHJ5VHJhaXRzIDogV1RGOjpHZW5lcmljSGFzaFRyYWl0czxTdWJpbWFnZUNhY2hlRW50
cnk+IHsKKyAgICB0eXBlZGVmIEhhc2hUcmFpdHM8UmV0YWluUHRyPENHSW1hZ2VSZWY+ID4gSW1h
Z2VUcmFpdHM7CisgICAgCisgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9
IHRydWU7CisgICAgCisgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rp
b24gPSB0cnVlOworICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBTdWJpbWFnZUNh
Y2hlRW50cnkmIHZhbHVlKSB7IHJldHVybiAhdmFsdWUuaW1hZ2U7IH0KKyAgICAKKyAgICBzdGF0
aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoU3ViaW1hZ2VDYWNoZUVudHJ5JiBzbG90KSB7
IEltYWdlVHJhaXRzOjpjb25zdHJ1Y3REZWxldGVkVmFsdWUoc2xvdC5pbWFnZSk7IH0KKyAgICBz
dGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBTdWJpbWFnZUNhY2hlRW50cnkmIHZhbHVl
KSB7IHJldHVybiBJbWFnZVRyYWl0czo6aXNEZWxldGVkVmFsdWUodmFsdWUuaW1hZ2UpOyB9Cit9
OworCitzdHJ1Y3QgU3ViaW1hZ2VDYWNoZUhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNo
KENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKKyAgICB7CisgICAgICAg
IHJldHVybiBXVEY6OnBhaXJJbnRIYXNoKFB0ckhhc2g8Q0dJbWFnZVJlZj46Omhhc2goaW1hZ2Up
LAorICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWN0LngoKSkgPDwgMTYpIHwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlY3QueSgpKSk7CisgICAgfQorICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKGNvbnN0IFN1YmltYWdlQ2FjaGVFbnRyeSYga2V5KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGhhc2goa2V5LmltYWdlLmdldCgpLCBrZXkucmVjdCk7CisgICAgfQorICAgIHN0YXRp
YyBib29sIGVxdWFsKGNvbnN0IFN1YmltYWdlQ2FjaGVFbnRyeSYgYSwgY29uc3QgU3ViaW1hZ2VD
YWNoZUVudHJ5JiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEuaW1hZ2UgPT0gYi5pbWFnZSAm
JiBhLnJlY3QgPT0gYi5yZWN0OworICAgIH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9D
b21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cit9OworCit0eXBlZGVmIEhhc2hTZXQ8U3Vi
aW1hZ2VDYWNoZUVudHJ5LCBTdWJpbWFnZUNhY2hlSGFzaCwgU3ViaW1hZ2VDYWNoZUVudHJ5VHJh
aXRzPiBTdWJpbWFnZUNhY2hlOworCitzdHJ1Y3QgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lciB7Cisg
ICAgU3ViaW1hZ2VDYWNoZSBjYWNoZTsKKyAgICBEZWZlcnJhYmxlT25lU2hvdFRpbWVyPFN1Ymlt
YWdlQ2FjaGVXaXRoVGltZXI+IHRpbWVyOworCisgICAgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcigp
OworCisgICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGVUaW1lckZpcmVkKERlZmVycmFibGVPbmVTaG90
VGltZXI8U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcj4qKTsKK307CisKK3N0cnVjdCBTdWJpbWFnZVJl
cXVlc3QgeworICAgIENHSW1hZ2VSZWYgaW1hZ2U7CisgICAgY29uc3QgRmxvYXRSZWN0JiByZWN0
OworICAgIFN1YmltYWdlUmVxdWVzdChDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBGbG9hdFJlY3Qm
IHJlY3QpIDogaW1hZ2UoaW1hZ2UpLCByZWN0KHJlY3QpIHsgfQorfTsKKworc3RydWN0IFN1Ymlt
YWdlQ2FjaGVBZGRlciB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU3ViaW1hZ2VS
ZXF1ZXN0JiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdWJpbWFnZUNhY2hlSGFzaDo6
aGFzaCh2YWx1ZS5pbWFnZSwgdmFsdWUucmVjdCk7CisgICAgfQorICAgIHN0YXRpYyBib29sIGVx
dWFsKGNvbnN0IFN1YmltYWdlQ2FjaGVFbnRyeSYgYSwgY29uc3QgU3ViaW1hZ2VSZXF1ZXN0JiBi
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEuaW1hZ2UgPT0gYi5pbWFnZSAmJiBhLnJlY3QgPT0g
Yi5yZWN0OworICAgIH0KKyAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoU3ViaW1hZ2VDYWNoZUVu
dHJ5JiBlbnRyeSwgY29uc3QgU3ViaW1hZ2VSZXF1ZXN0JiByZXF1ZXN0LCB1bnNpZ25lZCAvKmhh
c2hDb2RlKi8pCisgICAgeworICAgICAgICBlbnRyeS5pbWFnZSA9IHJlcXVlc3QuaW1hZ2U7Cisg
ICAgICAgIGVudHJ5LnJlY3QgPSByZXF1ZXN0LnJlY3Q7CisgICAgICAgIGVudHJ5LnN1YmltYWdl
ID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHJlcXVlc3QuaW1hZ2UsIHJl
cXVlc3QucmVjdCkpOworICAgIH0KK307CisKK1N1YmltYWdlQ2FjaGVXaXRoVGltZXImIHN1Ymlt
YWdlQ2FjaGUoKTsKK1JldGFpblB0cjxDR0ltYWdlUmVmPiBzdWJpbWFnZShDR0ltYWdlUmVmLCBj
b25zdCBGbG9hdFJlY3QmKTsKKworI2VuZGlmIC8vIENBQ0hFX1NVQklNQUdFUworCit9CisKKyNl
bmRpZiAvLyBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyX2gK
</data>
<flag name="commit-queue"
          id="189731"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174607</attachid>
            <date>2012-11-15 22:16:43 -0800</date>
            <delta_ts>2012-11-16 12:21:50 -0800</delta_ts>
            <desc>Fix win build break.</desc>
            <filename>subimagecache_separate.patch</filename>
            <type>text/plain</type>
            <size>19911</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNDg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDEyLTExLTE1ICBZb25nanVu
IFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBTdWJpbWFn
ZUNhY2hlV2l0aFRpbWVyIHRvIGEgc2VwYXJhdGUgZmlsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjQ1MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lciBv
dXQgb2YgR3JhcGhjaXNDb250ZXh0Q0cuY3BwLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgc2lu
Y2UgdGhlcmUgaXMgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBhZGQgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIGFu
ZCBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcCBpbnRvIHByb2plY3QgZmlsZS4KKyAgICAgICAg
KiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogZGl0dG8KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YmltYWdl
Q2FjaGVXaXRoVGltZXI6OlN1YmltYWdlQ2FjaGVXaXRoVGltZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6aW52YWxpZGF0ZUNhY2hlVGltZXJGaXJlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpzdWJpbWFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OnN1Ymlt
YWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRp
bWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpzdWJp
bWFnZSk6CisgICAgICAgIChTdWJpbWFnZUNhY2hlRW50cnkpOgorICAgICAgICAoU3ViaW1hZ2VD
YWNoZUVudHJ5VHJhaXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YmltYWdlQ2FjaGVFbnRyeVRy
YWl0czo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YmltYWdlQ2FjaGVFbnRy
eVRyYWl0czo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN1Ymlt
YWdlQ2FjaGVFbnRyeVRyYWl0czo6aXNEZWxldGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
U3ViaW1hZ2VDYWNoZUhhc2g6Omhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNo
ZUhhc2g6OmVxdWFsKToKKyAgICAgICAgKFN1YmltYWdlQ2FjaGVIYXNoKToKKyAgICAgICAgKFN1
YmltYWdlQ2FjaGVXaXRoVGltZXIpOgorICAgICAgICAoU3ViaW1hZ2VSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN1YmltYWdlUmVxdWVzdDo6U3ViaW1hZ2VSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlN1YmltYWdlQ2FjaGVBZGRlcjo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpT
dWJpbWFnZUNhY2hlQWRkZXI6OmVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YmltYWdlQ2Fj
aGVBZGRlcjo6dHJhbnNsYXRlKToKKwogMjAxMi0xMS0xNSAgS2VudGFybyBIYXJhICA8aGFyYWtl
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzNDg4
MS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CShyZXZpc2lvbiAxMzQ4NjApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzA2NzYsNiArMzA2NzYsNDYgQEAKIAkJCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKKwkJCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY2dcU3ViaW1hZ2VDYWNoZVdpdGhUaW1l
ci5jcHAiCisJCQkJCQk+CisJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCQlOYW1lPSJE
ZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
CisJCQkJCQkJPgorCQkJCQkJCTxUb29sCisJCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCQkJLz4KKwkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCQk+CisJCQkJCQkJPFRvb2wKKwkJCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCQkvPgorCQkJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxwbGF0Zm9ybVxncmFwaGljc1xjZ1xTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgiCisJCQkJCQk+
CisJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxp
dGV8V2luMzIiCisJCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQkJPgorCQkJ
CQkJCTxUb29sCisJCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkJLz4KKwkJ
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
CQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJCQk+CisJCQkJCQkJPFRvb2wKKwkJCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJCQkvPgorCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJ
PC9GaWxlPgorCQkJCQk8RmlsZQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xjZ1xJbWFnZVNvdXJjZUNHV2luLmNwcCIKIAkJCQkJCT4KIAkJCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM0ODYwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02ODQsNiArNjg0
LDggQEAKIAkJMUYzRjE5NTMxNDk5Q0E3NjAwQTVBRUE3IC8qIFBPREZyZWVMaXN0QXJlbmEuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGM0YxOTUyMTQ5
OUNBNzYwMEE1QUVBNyAvKiBQT0RGcmVlTGlzdEFyZW5hLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUZBRkJGMTgxNUE1RkE2RTAwMDgzQTIwIC8q
IFVUSVV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFGQUZCRjE3MTVBNUZBNTIwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMubW0gKi87IH07
CiAJCTFGQUZCRjE5MTVBNUZBNzQwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGQUZCRjE2MTVBNUZBNTIwMDA4
M0EyMCAvKiBVVElVdGlsaXRpZXMuaCAqLzsgfTsKKwkJMUZDNDBGQjkxNjU1Q0NCNjAwNDBGMjlF
IC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUZDNDBGQjgxNjU1QzU5MTAwNDBGMjlFIC8qIFN1YmltYWdl
Q2FjaGVXaXRoVGltZXIuY3BwICovOyB9OworCQkxRkM0MEZCQTE2NTVDQ0I5MDA0MEYyOUUgLyog
U3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUZDNDBGQjcxNjU1QzU5MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVX
aXRoVGltZXIuaCAqLzsgfTsKIAkJMjBENjI5MjYxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyMEQ2MjkyNDEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcCAqLzsgfTsKIAkJMjBENjI5MjcxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMjBENjI5MjUxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oICovOyB9OwogCQkyMjc3Nzc2MDEzNDVERUE5MDA4RUE0NTUgLyogSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyMjc3Nzc1RjEzNDVERUE5MDA4RUE0NTUgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc4
MDUsNiArNzgwNyw4IEBACiAJCTFGM0YxOTUyMTQ5OUNBNzYwMEE1QUVBNyAvKiBQT0RGcmVlTGlz
dEFyZW5hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBPREZyZWVMaXN0QXJl
bmEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUZBRkJGMTYxNUE1RkE1MjAwMDgz
QTIwIC8qIFVUSVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBV
VElVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUZBRkJGMTcxNUE1
RkE1MjAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFVUSVV0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUZDNDBGQjcxNjU1QzU5MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ViaW1hZ2VDYWNoZVdpdGhUaW1l
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRkM0MEZCODE2NTVDNTkxMDA0MEYy
OUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMjBENjI5MjQxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
MEQ2MjkyNTEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyMjc3Nzc1RjEzNDVERUE5MDA4RUE0NTUg
LyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTk5MDcsNiArMTk5MTEsOCBAQAogCQkJCUE4MEEzOEZEMEU1MENDODIwMEEyNUVC
QyAvKiBQYXR0ZXJuQ0cuY3BwICovLAogCQkJCUIyNzUzNTM2MEIwNTM4MTQwMDJDRTY0RiAvKiBQ
REZEb2N1bWVudEltYWdlLmNwcCAqLywKIAkJCQlCMjc1MzUzNzBCMDUzODE0MDAyQ0U2NEYgLyog
UERGRG9jdW1lbnRJbWFnZS5oICovLAorCQkJCTFGQzQwRkI3MTY1NUM1OTEwMDQwRjI5RSAvKiBT
dWJpbWFnZUNhY2hlV2l0aFRpbWVyLmggKi8sCisJCQkJMUZDNDBGQjgxNjU1QzU5MTAwNDBGMjlF
IC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwICovLAogCQkJCUIyNzUzNTJBMEIwNTM4MTQw
MDJDRTY0RiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gY2c7CkBAIC0yNTcyNCw2ICsyNTczMCw3IEBACiAJCQkJNTcwQjc4QzAxNjUwQ0U4MTAwMURC
RTFCIC8qIFNlbGVjdFJ1bGVGZWF0dXJlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxRTUwMDg0
NzE2NTE2QUQ4MDBCN0UwOTggLyogUmVuZGVyVGhlbWVNYWNTaGFyZWQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUzRUY3NjZCMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMUZDNDBGQkExNjU1Q0NCOTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVX
aXRoVGltZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjg4MTIsNiArMjg4MTksNyBAQAogCQkJCTU3
MEI3OEJGMTY1MENFODEwMDFEQkUxQiAvKiBTZWxlY3RSdWxlRmVhdHVyZVNldC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxRTUwMDg0ODE2NTE2QUQ4MDBCN0UwOTggLyogUmVuZGVyVGhlbWVNYWNT
aGFyZWQubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDdFMDUyMjE2NTFDMjgyMDBDMTIwMUYgLyog
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUZDNDBGQjkx
NjU1Q0NCNjAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAxMzQ4NjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJQYXRoLmgiCiAjaW5jbHVkZSAi
UGF0dGVybi5oIgogI2luY2x1ZGUgIlNoYWRvd0JsdXIuaCIKKyNpbmNsdWRlICJTdWJpbWFnZUNh
Y2hlV2l0aFRpbWVyLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxDb3JlR3JhcGhp
Y3MvQ29yZUdyYXBoaWNzLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KQEAgLTc5LDEx
NyArODAsOCBAQCB1c2luZyBXVEY6OnBhaXJJbnRIYXNoOwogLy8gRklYTUU6IFRoZSBmb2xsb3dp
bmcgdXNpbmcgZGVjbGFyYXRpb24gc2hvdWxkIGJlIGluIDx3dGYvSGFzaFRyYWl0cy5oPi4KIHVz
aW5nIFdURjo6R2VuZXJpY0hhc2hUcmFpdHM7CiAKLSNkZWZpbmUgQ0FDSEVfU1VCSU1BR0VTIDEK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgIUNBQ0hFX1NVQklNQUdFUwotCi1zdGF0aWMg
aW5saW5lIFJldGFpblB0cjxDR0ltYWdlUmVmPiBzdWJpbWFnZShDR0ltYWdlUmVmIGltYWdlLCBj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCi17Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQ0dJbWFnZUNyZWF0
ZVdpdGhJbWFnZUluUmVjdChpbWFnZSwgcmVjdCkpOwotfQotCi0jZWxzZSAvLyBDQUNIRV9TVUJJ
TUFHRVMKLQotc3RhdGljIGNvbnN0IGRvdWJsZSBzdWJpbWFnZUNhY2hlQ2xlYXJEZWxheSA9IDE7
Ci1zdGF0aWMgY29uc3QgaW50IG1heFN1YmltYWdlQ2FjaGVTaXplID0gMzAwOwotCi1zdHJ1Y3Qg
U3ViaW1hZ2VDYWNoZUVudHJ5IHsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7Ci0g
ICAgRmxvYXRSZWN0IHJlY3Q7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1YmltYWdlOwot
fTsKLQotc3RydWN0IFN1YmltYWdlQ2FjaGVFbnRyeVRyYWl0cyA6IEdlbmVyaWNIYXNoVHJhaXRz
PFN1YmltYWdlQ2FjaGVFbnRyeT4gewotICAgIHR5cGVkZWYgSGFzaFRyYWl0czxSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gPiBJbWFnZVRyYWl0czsKLQotICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5
VmFsdWVJc1plcm8gPSB0cnVlOwotCi0gICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZh
bHVlRnVuY3Rpb24gPSB0cnVlOwotICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBT
dWJpbWFnZUNhY2hlRW50cnkmIHZhbHVlKSB7IHJldHVybiAhdmFsdWUuaW1hZ2U7IH0KLQotICAg
IHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShTdWJpbWFnZUNhY2hlRW50cnkmIHNs
b3QpIHsgSW1hZ2VUcmFpdHM6OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZShzbG90LmltYWdlKTsgfQot
ICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFN1YmltYWdlQ2FjaGVFbnRyeSYg
dmFsdWUpIHsgcmV0dXJuIEltYWdlVHJhaXRzOjppc0RlbGV0ZWRWYWx1ZSh2YWx1ZS5pbWFnZSk7
IH0KLX07Ci0KLXN0cnVjdCBTdWJpbWFnZUNhY2hlSGFzaCB7Ci0gICAgc3RhdGljIHVuc2lnbmVk
IGhhc2goQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHBhaXJJbnRIYXNoKFB0ckhhc2g8Q0dJbWFnZVJlZj46Omhhc2goaW1hZ2Up
LAotICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWN0LngoKSkgPDwgMTYpIHwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlY3QueSgpKSk7Ci0gICAgfQotICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKGNvbnN0IFN1YmltYWdlQ2FjaGVFbnRyeSYga2V5KQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGhhc2goa2V5LmltYWdlLmdldCgpLCBrZXkucmVjdCk7Ci0gICAgfQotICAgIHN0YXRp
YyBib29sIGVxdWFsKGNvbnN0IFN1YmltYWdlQ2FjaGVFbnRyeSYgYSwgY29uc3QgU3ViaW1hZ2VD
YWNoZUVudHJ5JiBiKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGEuaW1hZ2UgPT0gYi5pbWFnZSAm
JiBhLnJlY3QgPT0gYi5yZWN0OwotICAgIH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9D
b21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Ci19OwotCi10eXBlZGVmIEhhc2hTZXQ8U3Vi
aW1hZ2VDYWNoZUVudHJ5LCBTdWJpbWFnZUNhY2hlSGFzaCwgU3ViaW1hZ2VDYWNoZUVudHJ5VHJh
aXRzPiBTdWJpbWFnZUNhY2hlOwotCi1zdHJ1Y3QgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lciB7Ci0g
ICAgU3ViaW1hZ2VDYWNoZSBjYWNoZTsKLSAgICBEZWZlcnJhYmxlT25lU2hvdFRpbWVyPFN1Ymlt
YWdlQ2FjaGVXaXRoVGltZXI+IHRpbWVyOwotCi0gICAgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcigp
Ci0gICAgICAgIDogdGltZXIodGhpcywgJlN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OmludmFsaWRh
dGVDYWNoZVRpbWVyRmlyZWQsIHN1YmltYWdlQ2FjaGVDbGVhckRlbGF5KQotICAgIHsKLSAgICB9
Ci0KLSAgICB2b2lkIGludmFsaWRhdGVDYWNoZVRpbWVyRmlyZWQoRGVmZXJyYWJsZU9uZVNob3RU
aW1lcjxTdWJpbWFnZUNhY2hlV2l0aFRpbWVyPiopOwotfTsKLQotc3RhdGljIFN1YmltYWdlQ2Fj
aGVXaXRoVGltZXImIHN1YmltYWdlQ2FjaGUoKQotewotICAgIHN0YXRpYyBTdWJpbWFnZUNhY2hl
V2l0aFRpbWVyJiBjYWNoZSA9ICpuZXcgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjsKLSAgICByZXR1
cm4gY2FjaGU7Ci19Ci0KLXZvaWQgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6aW52YWxpZGF0ZUNh
Y2hlVGltZXJGaXJlZChEZWZlcnJhYmxlT25lU2hvdFRpbWVyPFN1YmltYWdlQ2FjaGVXaXRoVGlt
ZXI+KikKLXsKLSAgICBzdWJpbWFnZUNhY2hlKCkuY2FjaGUuY2xlYXIoKTsKLX0KLQotc3RydWN0
IFN1YmltYWdlUmVxdWVzdCB7Ci0gICAgQ0dJbWFnZVJlZiBpbWFnZTsKLSAgICBjb25zdCBGbG9h
dFJlY3QmIHJlY3Q7Ci0gICAgU3ViaW1hZ2VSZXF1ZXN0KENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkgOiBpbWFnZShpbWFnZSksIHJlY3QocmVjdCkgeyB9Ci19OwotCi1z
dHJ1Y3QgU3ViaW1hZ2VDYWNoZUFkZGVyIHsKLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25z
dCBTdWJpbWFnZVJlcXVlc3QmIHZhbHVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFN1YmltYWdl
Q2FjaGVIYXNoOjpoYXNoKHZhbHVlLmltYWdlLCB2YWx1ZS5yZWN0KTsKLSAgICB9Ci0gICAgc3Rh
dGljIGJvb2wgZXF1YWwoY29uc3QgU3ViaW1hZ2VDYWNoZUVudHJ5JiBhLCBjb25zdCBTdWJpbWFn
ZVJlcXVlc3QmIGIpCi0gICAgewotICAgICAgICByZXR1cm4gYS5pbWFnZSA9PSBiLmltYWdlICYm
IGEucmVjdCA9PSBiLnJlY3Q7Ci0gICAgfQotICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShTdWJp
bWFnZUNhY2hlRW50cnkmIGVudHJ5LCBjb25zdCBTdWJpbWFnZVJlcXVlc3QmIHJlcXVlc3QsIHVu
c2lnbmVkIC8qaGFzaENvZGUqLykKLSAgICB7Ci0gICAgICAgIGVudHJ5LmltYWdlID0gcmVxdWVz
dC5pbWFnZTsKLSAgICAgICAgZW50cnkucmVjdCA9IHJlcXVlc3QucmVjdDsKLSAgICAgICAgZW50
cnkuc3ViaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QocmVxdWVz
dC5pbWFnZSwgcmVxdWVzdC5yZWN0KSk7Ci0gICAgfQotfTsKLQotc3RhdGljIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBzdWJpbWFnZShDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCi17Ci0gICAgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lciYgY2FjaGUgPSBzdWJpbWFnZUNhY2hl
KCk7Ci0gICAgY2FjaGUudGltZXIucmVzdGFydCgpOwotICAgIGlmIChjYWNoZS5jYWNoZS5zaXpl
KCkgPT0gbWF4U3ViaW1hZ2VDYWNoZVNpemUpCi0gICAgICAgIGNhY2hlLmNhY2hlLnJlbW92ZShj
YWNoZS5jYWNoZS5iZWdpbigpKTsKLSAgICBBU1NFUlQoY2FjaGUuY2FjaGUuc2l6ZSgpIDwgbWF4
U3ViaW1hZ2VDYWNoZVNpemUpOwotICAgIHJldHVybiBjYWNoZS5jYWNoZS5hZGQ8U3ViaW1hZ2VS
ZXF1ZXN0LCBTdWJpbWFnZUNhY2hlQWRkZXI+KFN1YmltYWdlUmVxdWVzdChpbWFnZSwgcmVjdCkp
Lml0ZXJhdG9yLT5zdWJpbWFnZTsKLX0KLQotI2VuZGlmIC8vIENBQ0hFX1NVQklNQUdFUwotCiBz
dGF0aWMgdm9pZCBzZXRDR0ZpbGxDb2xvcihDR0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgQ29s
b3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgQ0dDb250ZXh0U2V0Rmls
bENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hlZENHQ29sb3IoY29sb3IsIGNvbG9yU3BhY2Up
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2Fj
aGVXaXRoVGltZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3Vi
aW1hZ2VDYWNoZVdpdGhUaW1lci5oIgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCisjaWYg
Q0FDSEVfU1VCSU1BR0VTCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK3N0YXRpYyBjb25z
dCBkb3VibGUgc3ViaW1hZ2VDYWNoZUNsZWFyRGVsYXkgPSAxOworc3RhdGljIGNvbnN0IGludCBt
YXhTdWJpbWFnZUNhY2hlU2l6ZSA9IDMwMDsKKworU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6U3Vi
aW1hZ2VDYWNoZVdpdGhUaW1lcigpCisgICAgOiB0aW1lcih0aGlzLCAmU3ViaW1hZ2VDYWNoZVdp
dGhUaW1lcjo6aW52YWxpZGF0ZUNhY2hlVGltZXJGaXJlZCwgc3ViaW1hZ2VDYWNoZUNsZWFyRGVs
YXkpCit7Cit9CisKK3ZvaWQgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6aW52YWxpZGF0ZUNhY2hl
VGltZXJGaXJlZChEZWZlcnJhYmxlT25lU2hvdFRpbWVyPFN1YmltYWdlQ2FjaGVXaXRoVGltZXI+
KikKK3sKKyAgICBzdWJpbWFnZUNhY2hlKCkuY2FjaGUuY2xlYXIoKTsKK30KKworU3ViaW1hZ2VD
YWNoZVdpdGhUaW1lciYgc3ViaW1hZ2VDYWNoZSgpCit7CisgICAgc3RhdGljIFN1YmltYWdlQ2Fj
aGVXaXRoVGltZXImIGNhY2hlID0gKm5ldyBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOworICAgIHJl
dHVybiBjYWNoZTsKK30KKworUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1YmltYWdlKENHSW1hZ2VS
ZWYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICBTdWJpbWFnZUNhY2hlV2l0
aFRpbWVyJiBjYWNoZSA9IHN1YmltYWdlQ2FjaGUoKTsKKyAgICBjYWNoZS50aW1lci5yZXN0YXJ0
KCk7CisgICAgaWYgKGNhY2hlLmNhY2hlLnNpemUoKSA9PSBtYXhTdWJpbWFnZUNhY2hlU2l6ZSkg
eworICAgICAgICBTdWJpbWFnZUNhY2hlRW50cnkgZW50cnkgPSAqY2FjaGUuY2FjaGUuYmVnaW4o
KTsKKyAgICAgICAgY2FjaGUuY2FjaGUucmVtb3ZlKGVudHJ5KTsKKyAgICB9CisgICAgQVNTRVJU
KGNhY2hlLmNhY2hlLnNpemUoKSA8IG1heFN1YmltYWdlQ2FjaGVTaXplKTsKKyAgICByZXR1cm4g
Y2FjaGUuY2FjaGUuYWRkPFN1YmltYWdlUmVxdWVzdCwgU3ViaW1hZ2VDYWNoZUFkZGVyPihTdWJp
bWFnZVJlcXVlc3QoaW1hZ2UsIHJlY3QpKS5pdGVyYXRvci0+c3ViaW1hZ2U7Cit9CisKK30KKwor
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFn
ZUNhY2hlV2l0aFRpbWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcl9oCisj
ZGVmaW5lIFN1YmltYWdlQ2FjaGVXaXRoVGltZXJfaAorCisjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CisjaW5jbHVkZSAiVGltZXIuaCIKKworI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhp
Y3MuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRz
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
KyNkZWZpbmUgQ0FDSEVfU1VCSU1BR0VTIDEKKworI2lmICFDQUNIRV9TVUJJTUFHRVMKKworc3Rh
dGljIGlubGluZSBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3ViaW1hZ2UoQ0dJbWFnZVJlZiBpbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQoreworICAgIHJldHVybiBhZG9wdENGKENHSW1hZ2VD
cmVhdGVXaXRoSW1hZ2VJblJlY3QoaW1hZ2UsIHJlY3QpKTsKK30KKworI2Vsc2UgLy8gQ0FDSEVf
U1VCSU1BR0VTCisKK3N0cnVjdCBTdWJpbWFnZUNhY2hlRW50cnkgeworICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBpbWFnZTsKKyAgICBGbG9hdFJlY3QgcmVjdDsKKyAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gc3ViaW1hZ2U7Cit9OworCitzdHJ1Y3QgU3ViaW1hZ2VDYWNoZUVudHJ5VHJhaXRz
IDogV1RGOjpHZW5lcmljSGFzaFRyYWl0czxTdWJpbWFnZUNhY2hlRW50cnk+IHsKKyAgICB0eXBl
ZGVmIEhhc2hUcmFpdHM8UmV0YWluUHRyPENHSW1hZ2VSZWY+ID4gSW1hZ2VUcmFpdHM7CisgICAg
CisgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7CisgICAgCisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOworICAg
IHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBTdWJpbWFnZUNhY2hlRW50cnkmIHZhbHVl
KSB7IHJldHVybiAhdmFsdWUuaW1hZ2U7IH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1
Y3REZWxldGVkVmFsdWUoU3ViaW1hZ2VDYWNoZUVudHJ5JiBzbG90KSB7IEltYWdlVHJhaXRzOjpj
b25zdHJ1Y3REZWxldGVkVmFsdWUoc2xvdC5pbWFnZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0Rl
bGV0ZWRWYWx1ZShjb25zdCBTdWJpbWFnZUNhY2hlRW50cnkmIHZhbHVlKSB7IHJldHVybiBJbWFn
ZVRyYWl0czo6aXNEZWxldGVkVmFsdWUodmFsdWUuaW1hZ2UpOyB9Cit9OworCitzdHJ1Y3QgU3Vi
aW1hZ2VDYWNoZUhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKENHSW1hZ2VSZWYgaW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6OnBh
aXJJbnRIYXNoKFB0ckhhc2g8Q0dJbWFnZVJlZj46Omhhc2goaW1hZ2UpLAorICAgICAgICAgICAg
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWN0LngoKSkgPDwgMTYpIHwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHJlY3QueSgpKSk7CisgICAgfQorICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0
IFN1YmltYWdlQ2FjaGVFbnRyeSYga2V5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGhhc2goa2V5
LmltYWdlLmdldCgpLCBrZXkucmVjdCk7CisgICAgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNv
bnN0IFN1YmltYWdlQ2FjaGVFbnRyeSYgYSwgY29uc3QgU3ViaW1hZ2VDYWNoZUVudHJ5JiBiKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGEuaW1hZ2UgPT0gYi5pbWFnZSAmJiBhLnJlY3QgPT0gYi5y
ZWN0OworICAgIH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9y
RGVsZXRlZCA9IHRydWU7Cit9OworCit0eXBlZGVmIEhhc2hTZXQ8U3ViaW1hZ2VDYWNoZUVudHJ5
LCBTdWJpbWFnZUNhY2hlSGFzaCwgU3ViaW1hZ2VDYWNoZUVudHJ5VHJhaXRzPiBTdWJpbWFnZUNh
Y2hlOworCitzdHJ1Y3QgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lciB7CisgICAgU3ViaW1hZ2VDYWNo
ZSBjYWNoZTsKKyAgICBEZWZlcnJhYmxlT25lU2hvdFRpbWVyPFN1YmltYWdlQ2FjaGVXaXRoVGlt
ZXI+IHRpbWVyOworCisgICAgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcigpOworCisgICAgdm9pZCBp
bnZhbGlkYXRlQ2FjaGVUaW1lckZpcmVkKERlZmVycmFibGVPbmVTaG90VGltZXI8U3ViaW1hZ2VD
YWNoZVdpdGhUaW1lcj4qKTsKK307CisKK3N0cnVjdCBTdWJpbWFnZVJlcXVlc3QgeworICAgIENH
SW1hZ2VSZWYgaW1hZ2U7CisgICAgY29uc3QgRmxvYXRSZWN0JiByZWN0OworICAgIFN1YmltYWdl
UmVxdWVzdChDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpIDogaW1hZ2Uo
aW1hZ2UpLCByZWN0KHJlY3QpIHsgfQorfTsKKworc3RydWN0IFN1YmltYWdlQ2FjaGVBZGRlciB7
CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU3ViaW1hZ2VSZXF1ZXN0JiB2YWx1ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBTdWJpbWFnZUNhY2hlSGFzaDo6aGFzaCh2YWx1ZS5pbWFn
ZSwgdmFsdWUucmVjdCk7CisgICAgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN1Ymlt
YWdlQ2FjaGVFbnRyeSYgYSwgY29uc3QgU3ViaW1hZ2VSZXF1ZXN0JiBiKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGEuaW1hZ2UgPT0gYi5pbWFnZSAmJiBhLnJlY3QgPT0gYi5yZWN0OworICAgIH0K
KyAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoU3ViaW1hZ2VDYWNoZUVudHJ5JiBlbnRyeSwgY29u
c3QgU3ViaW1hZ2VSZXF1ZXN0JiByZXF1ZXN0LCB1bnNpZ25lZCAvKmhhc2hDb2RlKi8pCisgICAg
eworICAgICAgICBlbnRyeS5pbWFnZSA9IHJlcXVlc3QuaW1hZ2U7CisgICAgICAgIGVudHJ5LnJl
Y3QgPSByZXF1ZXN0LnJlY3Q7CisgICAgICAgIGVudHJ5LnN1YmltYWdlID0gYWRvcHRDRihDR0lt
YWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHJlcXVlc3QuaW1hZ2UsIHJlcXVlc3QucmVjdCkpOwor
ICAgIH0KK307CisKK1N1YmltYWdlQ2FjaGVXaXRoVGltZXImIHN1YmltYWdlQ2FjaGUoKTsKK1Jl
dGFpblB0cjxDR0ltYWdlUmVmPiBzdWJpbWFnZShDR0ltYWdlUmVmLCBjb25zdCBGbG9hdFJlY3Qm
KTsKKworI2VuZGlmIC8vIENBQ0hFX1NVQklNQUdFUworCit9CisKKyNlbmRpZiAvLyBTdWJpbWFn
ZUNhY2hlV2l0aFRpbWVyX2gK
</data>
<flag name="commit-queue"
          id="189756"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174739</attachid>
            <date>2012-11-16 12:21:50 -0800</date>
            <delta_ts>2013-02-06 15:29:59 -0800</delta_ts>
            <desc>Re-submit the patch for bots to pick up.</desc>
            <filename>subimagecache_separate.patch</filename>
            <type>text/plain</type>
            <size>19911</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNDg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDEyLTExLTE1ICBZb25nanVu
IFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBTdWJpbWFn
ZUNhY2hlV2l0aFRpbWVyIHRvIGEgc2VwYXJhdGUgZmlsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjQ1MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lciBv
dXQgb2YgR3JhcGhjaXNDb250ZXh0Q0cuY3BwLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgc2lu
Y2UgdGhlcmUgaXMgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBhZGQgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIGFu
ZCBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcCBpbnRvIHByb2plY3QgZmlsZS4KKyAgICAgICAg
KiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogZGl0dG8KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YmltYWdl
Q2FjaGVXaXRoVGltZXI6OlN1YmltYWdlQ2FjaGVXaXRoVGltZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6aW52YWxpZGF0ZUNhY2hlVGltZXJGaXJlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpzdWJpbWFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OnN1Ymlt
YWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRp
bWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpzdWJp
bWFnZSk6CisgICAgICAgIChTdWJpbWFnZUNhY2hlRW50cnkpOgorICAgICAgICAoU3ViaW1hZ2VD
YWNoZUVudHJ5VHJhaXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YmltYWdlQ2FjaGVFbnRyeVRy
YWl0czo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YmltYWdlQ2FjaGVFbnRy
eVRyYWl0czo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN1Ymlt
YWdlQ2FjaGVFbnRyeVRyYWl0czo6aXNEZWxldGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
U3ViaW1hZ2VDYWNoZUhhc2g6Omhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNo
ZUhhc2g6OmVxdWFsKToKKyAgICAgICAgKFN1YmltYWdlQ2FjaGVIYXNoKToKKyAgICAgICAgKFN1
YmltYWdlQ2FjaGVXaXRoVGltZXIpOgorICAgICAgICAoU3ViaW1hZ2VSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN1YmltYWdlUmVxdWVzdDo6U3ViaW1hZ2VSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlN1YmltYWdlQ2FjaGVBZGRlcjo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpT
dWJpbWFnZUNhY2hlQWRkZXI6OmVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YmltYWdlQ2Fj
aGVBZGRlcjo6dHJhbnNsYXRlKToKKwogMjAxMi0xMS0xNSAgS2VudGFybyBIYXJhICA8aGFyYWtl
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzNDg4
MS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CShyZXZpc2lvbiAxMzQ4NjApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzA2NzYsNiArMzA2NzYsNDYgQEAKIAkJCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKKwkJCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY2dcU3ViaW1hZ2VDYWNoZVdpdGhUaW1l
ci5jcHAiCisJCQkJCQk+CisJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCQlOYW1lPSJE
ZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
CisJCQkJCQkJPgorCQkJCQkJCTxUb29sCisJCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCQkJLz4KKwkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCQk+CisJCQkJCQkJPFRvb2wKKwkJCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCQkvPgorCQkJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxwbGF0Zm9ybVxncmFwaGljc1xjZ1xTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgiCisJCQkJCQk+
CisJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxp
dGV8V2luMzIiCisJCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQkJPgorCQkJ
CQkJCTxUb29sCisJCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkJLz4KKwkJ
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
CQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJCQk+CisJCQkJCQkJPFRvb2wKKwkJCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJCQkvPgorCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJ
PC9GaWxlPgorCQkJCQk8RmlsZQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xjZ1xJbWFnZVNvdXJjZUNHV2luLmNwcCIKIAkJCQkJCT4KIAkJCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM0ODYwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02ODQsNiArNjg0
LDggQEAKIAkJMUYzRjE5NTMxNDk5Q0E3NjAwQTVBRUE3IC8qIFBPREZyZWVMaXN0QXJlbmEuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGM0YxOTUyMTQ5
OUNBNzYwMEE1QUVBNyAvKiBQT0RGcmVlTGlzdEFyZW5hLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUZBRkJGMTgxNUE1RkE2RTAwMDgzQTIwIC8q
IFVUSVV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFGQUZCRjE3MTVBNUZBNTIwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMubW0gKi87IH07
CiAJCTFGQUZCRjE5MTVBNUZBNzQwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGQUZCRjE2MTVBNUZBNTIwMDA4
M0EyMCAvKiBVVElVdGlsaXRpZXMuaCAqLzsgfTsKKwkJMUZDNDBGQjkxNjU1Q0NCNjAwNDBGMjlF
IC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUZDNDBGQjgxNjU1QzU5MTAwNDBGMjlFIC8qIFN1YmltYWdl
Q2FjaGVXaXRoVGltZXIuY3BwICovOyB9OworCQkxRkM0MEZCQTE2NTVDQ0I5MDA0MEYyOUUgLyog
U3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUZDNDBGQjcxNjU1QzU5MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVX
aXRoVGltZXIuaCAqLzsgfTsKIAkJMjBENjI5MjYxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyMEQ2MjkyNDEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcCAqLzsgfTsKIAkJMjBENjI5MjcxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMjBENjI5MjUxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oICovOyB9OwogCQkyMjc3Nzc2MDEzNDVERUE5MDA4RUE0NTUgLyogSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyMjc3Nzc1RjEzNDVERUE5MDA4RUE0NTUgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc4
MDUsNiArNzgwNyw4IEBACiAJCTFGM0YxOTUyMTQ5OUNBNzYwMEE1QUVBNyAvKiBQT0RGcmVlTGlz
dEFyZW5hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBPREZyZWVMaXN0QXJl
bmEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUZBRkJGMTYxNUE1RkE1MjAwMDgz
QTIwIC8qIFVUSVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBV
VElVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUZBRkJGMTcxNUE1
RkE1MjAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFVUSVV0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUZDNDBGQjcxNjU1QzU5MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ViaW1hZ2VDYWNoZVdpdGhUaW1l
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRkM0MEZCODE2NTVDNTkxMDA0MEYy
OUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMjBENjI5MjQxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
MEQ2MjkyNTEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyMjc3Nzc1RjEzNDVERUE5MDA4RUE0NTUg
LyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTk5MDcsNiArMTk5MTEsOCBAQAogCQkJCUE4MEEzOEZEMEU1MENDODIwMEEyNUVC
QyAvKiBQYXR0ZXJuQ0cuY3BwICovLAogCQkJCUIyNzUzNTM2MEIwNTM4MTQwMDJDRTY0RiAvKiBQ
REZEb2N1bWVudEltYWdlLmNwcCAqLywKIAkJCQlCMjc1MzUzNzBCMDUzODE0MDAyQ0U2NEYgLyog
UERGRG9jdW1lbnRJbWFnZS5oICovLAorCQkJCTFGQzQwRkI3MTY1NUM1OTEwMDQwRjI5RSAvKiBT
dWJpbWFnZUNhY2hlV2l0aFRpbWVyLmggKi8sCisJCQkJMUZDNDBGQjgxNjU1QzU5MTAwNDBGMjlF
IC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwICovLAogCQkJCUIyNzUzNTJBMEIwNTM4MTQw
MDJDRTY0RiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gY2c7CkBAIC0yNTcyNCw2ICsyNTczMCw3IEBACiAJCQkJNTcwQjc4QzAxNjUwQ0U4MTAwMURC
RTFCIC8qIFNlbGVjdFJ1bGVGZWF0dXJlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxRTUwMDg0
NzE2NTE2QUQ4MDBCN0UwOTggLyogUmVuZGVyVGhlbWVNYWNTaGFyZWQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUzRUY3NjZCMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMUZDNDBGQkExNjU1Q0NCOTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVX
aXRoVGltZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjg4MTIsNiArMjg4MTksNyBAQAogCQkJCTU3
MEI3OEJGMTY1MENFODEwMDFEQkUxQiAvKiBTZWxlY3RSdWxlRmVhdHVyZVNldC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxRTUwMDg0ODE2NTE2QUQ4MDBCN0UwOTggLyogUmVuZGVyVGhlbWVNYWNT
aGFyZWQubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDdFMDUyMjE2NTFDMjgyMDBDMTIwMUYgLyog
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUZDNDBGQjkx
NjU1Q0NCNjAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAxMzQ4NjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJQYXRoLmgiCiAjaW5jbHVkZSAi
UGF0dGVybi5oIgogI2luY2x1ZGUgIlNoYWRvd0JsdXIuaCIKKyNpbmNsdWRlICJTdWJpbWFnZUNh
Y2hlV2l0aFRpbWVyLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxDb3JlR3JhcGhp
Y3MvQ29yZUdyYXBoaWNzLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KQEAgLTc5LDEx
NyArODAsOCBAQCB1c2luZyBXVEY6OnBhaXJJbnRIYXNoOwogLy8gRklYTUU6IFRoZSBmb2xsb3dp
bmcgdXNpbmcgZGVjbGFyYXRpb24gc2hvdWxkIGJlIGluIDx3dGYvSGFzaFRyYWl0cy5oPi4KIHVz
aW5nIFdURjo6R2VuZXJpY0hhc2hUcmFpdHM7CiAKLSNkZWZpbmUgQ0FDSEVfU1VCSU1BR0VTIDEK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgIUNBQ0hFX1NVQklNQUdFUwotCi1zdGF0aWMg
aW5saW5lIFJldGFpblB0cjxDR0ltYWdlUmVmPiBzdWJpbWFnZShDR0ltYWdlUmVmIGltYWdlLCBj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCi17Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQ0dJbWFnZUNyZWF0
ZVdpdGhJbWFnZUluUmVjdChpbWFnZSwgcmVjdCkpOwotfQotCi0jZWxzZSAvLyBDQUNIRV9TVUJJ
TUFHRVMKLQotc3RhdGljIGNvbnN0IGRvdWJsZSBzdWJpbWFnZUNhY2hlQ2xlYXJEZWxheSA9IDE7
Ci1zdGF0aWMgY29uc3QgaW50IG1heFN1YmltYWdlQ2FjaGVTaXplID0gMzAwOwotCi1zdHJ1Y3Qg
U3ViaW1hZ2VDYWNoZUVudHJ5IHsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7Ci0g
ICAgRmxvYXRSZWN0IHJlY3Q7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1YmltYWdlOwot
fTsKLQotc3RydWN0IFN1YmltYWdlQ2FjaGVFbnRyeVRyYWl0cyA6IEdlbmVyaWNIYXNoVHJhaXRz
PFN1YmltYWdlQ2FjaGVFbnRyeT4gewotICAgIHR5cGVkZWYgSGFzaFRyYWl0czxSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gPiBJbWFnZVRyYWl0czsKLQotICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5
VmFsdWVJc1plcm8gPSB0cnVlOwotCi0gICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZh
bHVlRnVuY3Rpb24gPSB0cnVlOwotICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBT
dWJpbWFnZUNhY2hlRW50cnkmIHZhbHVlKSB7IHJldHVybiAhdmFsdWUuaW1hZ2U7IH0KLQotICAg
IHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShTdWJpbWFnZUNhY2hlRW50cnkmIHNs
b3QpIHsgSW1hZ2VUcmFpdHM6OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZShzbG90LmltYWdlKTsgfQot
ICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFN1YmltYWdlQ2FjaGVFbnRyeSYg
dmFsdWUpIHsgcmV0dXJuIEltYWdlVHJhaXRzOjppc0RlbGV0ZWRWYWx1ZSh2YWx1ZS5pbWFnZSk7
IH0KLX07Ci0KLXN0cnVjdCBTdWJpbWFnZUNhY2hlSGFzaCB7Ci0gICAgc3RhdGljIHVuc2lnbmVk
IGhhc2goQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHBhaXJJbnRIYXNoKFB0ckhhc2g8Q0dJbWFnZVJlZj46Omhhc2goaW1hZ2Up
LAotICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWN0LngoKSkgPDwgMTYpIHwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlY3QueSgpKSk7Ci0gICAgfQotICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKGNvbnN0IFN1YmltYWdlQ2FjaGVFbnRyeSYga2V5KQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGhhc2goa2V5LmltYWdlLmdldCgpLCBrZXkucmVjdCk7Ci0gICAgfQotICAgIHN0YXRp
YyBib29sIGVxdWFsKGNvbnN0IFN1YmltYWdlQ2FjaGVFbnRyeSYgYSwgY29uc3QgU3ViaW1hZ2VD
YWNoZUVudHJ5JiBiKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGEuaW1hZ2UgPT0gYi5pbWFnZSAm
JiBhLnJlY3QgPT0gYi5yZWN0OwotICAgIH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9D
b21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Ci19OwotCi10eXBlZGVmIEhhc2hTZXQ8U3Vi
aW1hZ2VDYWNoZUVudHJ5LCBTdWJpbWFnZUNhY2hlSGFzaCwgU3ViaW1hZ2VDYWNoZUVudHJ5VHJh
aXRzPiBTdWJpbWFnZUNhY2hlOwotCi1zdHJ1Y3QgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lciB7Ci0g
ICAgU3ViaW1hZ2VDYWNoZSBjYWNoZTsKLSAgICBEZWZlcnJhYmxlT25lU2hvdFRpbWVyPFN1Ymlt
YWdlQ2FjaGVXaXRoVGltZXI+IHRpbWVyOwotCi0gICAgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcigp
Ci0gICAgICAgIDogdGltZXIodGhpcywgJlN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OmludmFsaWRh
dGVDYWNoZVRpbWVyRmlyZWQsIHN1YmltYWdlQ2FjaGVDbGVhckRlbGF5KQotICAgIHsKLSAgICB9
Ci0KLSAgICB2b2lkIGludmFsaWRhdGVDYWNoZVRpbWVyRmlyZWQoRGVmZXJyYWJsZU9uZVNob3RU
aW1lcjxTdWJpbWFnZUNhY2hlV2l0aFRpbWVyPiopOwotfTsKLQotc3RhdGljIFN1YmltYWdlQ2Fj
aGVXaXRoVGltZXImIHN1YmltYWdlQ2FjaGUoKQotewotICAgIHN0YXRpYyBTdWJpbWFnZUNhY2hl
V2l0aFRpbWVyJiBjYWNoZSA9ICpuZXcgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjsKLSAgICByZXR1
cm4gY2FjaGU7Ci19Ci0KLXZvaWQgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6aW52YWxpZGF0ZUNh
Y2hlVGltZXJGaXJlZChEZWZlcnJhYmxlT25lU2hvdFRpbWVyPFN1YmltYWdlQ2FjaGVXaXRoVGlt
ZXI+KikKLXsKLSAgICBzdWJpbWFnZUNhY2hlKCkuY2FjaGUuY2xlYXIoKTsKLX0KLQotc3RydWN0
IFN1YmltYWdlUmVxdWVzdCB7Ci0gICAgQ0dJbWFnZVJlZiBpbWFnZTsKLSAgICBjb25zdCBGbG9h
dFJlY3QmIHJlY3Q7Ci0gICAgU3ViaW1hZ2VSZXF1ZXN0KENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkgOiBpbWFnZShpbWFnZSksIHJlY3QocmVjdCkgeyB9Ci19OwotCi1z
dHJ1Y3QgU3ViaW1hZ2VDYWNoZUFkZGVyIHsKLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25z
dCBTdWJpbWFnZVJlcXVlc3QmIHZhbHVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFN1YmltYWdl
Q2FjaGVIYXNoOjpoYXNoKHZhbHVlLmltYWdlLCB2YWx1ZS5yZWN0KTsKLSAgICB9Ci0gICAgc3Rh
dGljIGJvb2wgZXF1YWwoY29uc3QgU3ViaW1hZ2VDYWNoZUVudHJ5JiBhLCBjb25zdCBTdWJpbWFn
ZVJlcXVlc3QmIGIpCi0gICAgewotICAgICAgICByZXR1cm4gYS5pbWFnZSA9PSBiLmltYWdlICYm
IGEucmVjdCA9PSBiLnJlY3Q7Ci0gICAgfQotICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShTdWJp
bWFnZUNhY2hlRW50cnkmIGVudHJ5LCBjb25zdCBTdWJpbWFnZVJlcXVlc3QmIHJlcXVlc3QsIHVu
c2lnbmVkIC8qaGFzaENvZGUqLykKLSAgICB7Ci0gICAgICAgIGVudHJ5LmltYWdlID0gcmVxdWVz
dC5pbWFnZTsKLSAgICAgICAgZW50cnkucmVjdCA9IHJlcXVlc3QucmVjdDsKLSAgICAgICAgZW50
cnkuc3ViaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QocmVxdWVz
dC5pbWFnZSwgcmVxdWVzdC5yZWN0KSk7Ci0gICAgfQotfTsKLQotc3RhdGljIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBzdWJpbWFnZShDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCi17Ci0gICAgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lciYgY2FjaGUgPSBzdWJpbWFnZUNhY2hl
KCk7Ci0gICAgY2FjaGUudGltZXIucmVzdGFydCgpOwotICAgIGlmIChjYWNoZS5jYWNoZS5zaXpl
KCkgPT0gbWF4U3ViaW1hZ2VDYWNoZVNpemUpCi0gICAgICAgIGNhY2hlLmNhY2hlLnJlbW92ZShj
YWNoZS5jYWNoZS5iZWdpbigpKTsKLSAgICBBU1NFUlQoY2FjaGUuY2FjaGUuc2l6ZSgpIDwgbWF4
U3ViaW1hZ2VDYWNoZVNpemUpOwotICAgIHJldHVybiBjYWNoZS5jYWNoZS5hZGQ8U3ViaW1hZ2VS
ZXF1ZXN0LCBTdWJpbWFnZUNhY2hlQWRkZXI+KFN1YmltYWdlUmVxdWVzdChpbWFnZSwgcmVjdCkp
Lml0ZXJhdG9yLT5zdWJpbWFnZTsKLX0KLQotI2VuZGlmIC8vIENBQ0hFX1NVQklNQUdFUwotCiBz
dGF0aWMgdm9pZCBzZXRDR0ZpbGxDb2xvcihDR0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgQ29s
b3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgQ0dDb250ZXh0U2V0Rmls
bENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hlZENHQ29sb3IoY29sb3IsIGNvbG9yU3BhY2Up
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2Fj
aGVXaXRoVGltZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3Vi
aW1hZ2VDYWNoZVdpdGhUaW1lci5oIgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCisjaWYg
Q0FDSEVfU1VCSU1BR0VTCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK3N0YXRpYyBjb25z
dCBkb3VibGUgc3ViaW1hZ2VDYWNoZUNsZWFyRGVsYXkgPSAxOworc3RhdGljIGNvbnN0IGludCBt
YXhTdWJpbWFnZUNhY2hlU2l6ZSA9IDMwMDsKKworU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6U3Vi
aW1hZ2VDYWNoZVdpdGhUaW1lcigpCisgICAgOiB0aW1lcih0aGlzLCAmU3ViaW1hZ2VDYWNoZVdp
dGhUaW1lcjo6aW52YWxpZGF0ZUNhY2hlVGltZXJGaXJlZCwgc3ViaW1hZ2VDYWNoZUNsZWFyRGVs
YXkpCit7Cit9CisKK3ZvaWQgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6aW52YWxpZGF0ZUNhY2hl
VGltZXJGaXJlZChEZWZlcnJhYmxlT25lU2hvdFRpbWVyPFN1YmltYWdlQ2FjaGVXaXRoVGltZXI+
KikKK3sKKyAgICBzdWJpbWFnZUNhY2hlKCkuY2FjaGUuY2xlYXIoKTsKK30KKworU3ViaW1hZ2VD
YWNoZVdpdGhUaW1lciYgc3ViaW1hZ2VDYWNoZSgpCit7CisgICAgc3RhdGljIFN1YmltYWdlQ2Fj
aGVXaXRoVGltZXImIGNhY2hlID0gKm5ldyBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOworICAgIHJl
dHVybiBjYWNoZTsKK30KKworUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1YmltYWdlKENHSW1hZ2VS
ZWYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICBTdWJpbWFnZUNhY2hlV2l0
aFRpbWVyJiBjYWNoZSA9IHN1YmltYWdlQ2FjaGUoKTsKKyAgICBjYWNoZS50aW1lci5yZXN0YXJ0
KCk7CisgICAgaWYgKGNhY2hlLmNhY2hlLnNpemUoKSA9PSBtYXhTdWJpbWFnZUNhY2hlU2l6ZSkg
eworICAgICAgICBTdWJpbWFnZUNhY2hlRW50cnkgZW50cnkgPSAqY2FjaGUuY2FjaGUuYmVnaW4o
KTsKKyAgICAgICAgY2FjaGUuY2FjaGUucmVtb3ZlKGVudHJ5KTsKKyAgICB9CisgICAgQVNTRVJU
KGNhY2hlLmNhY2hlLnNpemUoKSA8IG1heFN1YmltYWdlQ2FjaGVTaXplKTsKKyAgICByZXR1cm4g
Y2FjaGUuY2FjaGUuYWRkPFN1YmltYWdlUmVxdWVzdCwgU3ViaW1hZ2VDYWNoZUFkZGVyPihTdWJp
bWFnZVJlcXVlc3QoaW1hZ2UsIHJlY3QpKS5pdGVyYXRvci0+c3ViaW1hZ2U7Cit9CisKK30KKwor
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFn
ZUNhY2hlV2l0aFRpbWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcl9oCisj
ZGVmaW5lIFN1YmltYWdlQ2FjaGVXaXRoVGltZXJfaAorCisjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CisjaW5jbHVkZSAiVGltZXIuaCIKKworI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhp
Y3MuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRz
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
KyNkZWZpbmUgQ0FDSEVfU1VCSU1BR0VTIDEKKworI2lmICFDQUNIRV9TVUJJTUFHRVMKKworc3Rh
dGljIGlubGluZSBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3ViaW1hZ2UoQ0dJbWFnZVJlZiBpbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQoreworICAgIHJldHVybiBhZG9wdENGKENHSW1hZ2VD
cmVhdGVXaXRoSW1hZ2VJblJlY3QoaW1hZ2UsIHJlY3QpKTsKK30KKworI2Vsc2UgLy8gQ0FDSEVf
U1VCSU1BR0VTCisKK3N0cnVjdCBTdWJpbWFnZUNhY2hlRW50cnkgeworICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBpbWFnZTsKKyAgICBGbG9hdFJlY3QgcmVjdDsKKyAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gc3ViaW1hZ2U7Cit9OworCitzdHJ1Y3QgU3ViaW1hZ2VDYWNoZUVudHJ5VHJhaXRz
IDogV1RGOjpHZW5lcmljSGFzaFRyYWl0czxTdWJpbWFnZUNhY2hlRW50cnk+IHsKKyAgICB0eXBl
ZGVmIEhhc2hUcmFpdHM8UmV0YWluUHRyPENHSW1hZ2VSZWY+ID4gSW1hZ2VUcmFpdHM7CisgICAg
CisgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7CisgICAgCisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOworICAg
IHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBTdWJpbWFnZUNhY2hlRW50cnkmIHZhbHVl
KSB7IHJldHVybiAhdmFsdWUuaW1hZ2U7IH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1
Y3REZWxldGVkVmFsdWUoU3ViaW1hZ2VDYWNoZUVudHJ5JiBzbG90KSB7IEltYWdlVHJhaXRzOjpj
b25zdHJ1Y3REZWxldGVkVmFsdWUoc2xvdC5pbWFnZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0Rl
bGV0ZWRWYWx1ZShjb25zdCBTdWJpbWFnZUNhY2hlRW50cnkmIHZhbHVlKSB7IHJldHVybiBJbWFn
ZVRyYWl0czo6aXNEZWxldGVkVmFsdWUodmFsdWUuaW1hZ2UpOyB9Cit9OworCitzdHJ1Y3QgU3Vi
aW1hZ2VDYWNoZUhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKENHSW1hZ2VSZWYgaW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6OnBh
aXJJbnRIYXNoKFB0ckhhc2g8Q0dJbWFnZVJlZj46Omhhc2goaW1hZ2UpLAorICAgICAgICAgICAg
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWN0LngoKSkgPDwgMTYpIHwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHJlY3QueSgpKSk7CisgICAgfQorICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0
IFN1YmltYWdlQ2FjaGVFbnRyeSYga2V5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGhhc2goa2V5
LmltYWdlLmdldCgpLCBrZXkucmVjdCk7CisgICAgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNv
bnN0IFN1YmltYWdlQ2FjaGVFbnRyeSYgYSwgY29uc3QgU3ViaW1hZ2VDYWNoZUVudHJ5JiBiKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGEuaW1hZ2UgPT0gYi5pbWFnZSAmJiBhLnJlY3QgPT0gYi5y
ZWN0OworICAgIH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9y
RGVsZXRlZCA9IHRydWU7Cit9OworCit0eXBlZGVmIEhhc2hTZXQ8U3ViaW1hZ2VDYWNoZUVudHJ5
LCBTdWJpbWFnZUNhY2hlSGFzaCwgU3ViaW1hZ2VDYWNoZUVudHJ5VHJhaXRzPiBTdWJpbWFnZUNh
Y2hlOworCitzdHJ1Y3QgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lciB7CisgICAgU3ViaW1hZ2VDYWNo
ZSBjYWNoZTsKKyAgICBEZWZlcnJhYmxlT25lU2hvdFRpbWVyPFN1YmltYWdlQ2FjaGVXaXRoVGlt
ZXI+IHRpbWVyOworCisgICAgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcigpOworCisgICAgdm9pZCBp
bnZhbGlkYXRlQ2FjaGVUaW1lckZpcmVkKERlZmVycmFibGVPbmVTaG90VGltZXI8U3ViaW1hZ2VD
YWNoZVdpdGhUaW1lcj4qKTsKK307CisKK3N0cnVjdCBTdWJpbWFnZVJlcXVlc3QgeworICAgIENH
SW1hZ2VSZWYgaW1hZ2U7CisgICAgY29uc3QgRmxvYXRSZWN0JiByZWN0OworICAgIFN1YmltYWdl
UmVxdWVzdChDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpIDogaW1hZ2Uo
aW1hZ2UpLCByZWN0KHJlY3QpIHsgfQorfTsKKworc3RydWN0IFN1YmltYWdlQ2FjaGVBZGRlciB7
CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU3ViaW1hZ2VSZXF1ZXN0JiB2YWx1ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBTdWJpbWFnZUNhY2hlSGFzaDo6aGFzaCh2YWx1ZS5pbWFn
ZSwgdmFsdWUucmVjdCk7CisgICAgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN1Ymlt
YWdlQ2FjaGVFbnRyeSYgYSwgY29uc3QgU3ViaW1hZ2VSZXF1ZXN0JiBiKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGEuaW1hZ2UgPT0gYi5pbWFnZSAmJiBhLnJlY3QgPT0gYi5yZWN0OworICAgIH0K
KyAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoU3ViaW1hZ2VDYWNoZUVudHJ5JiBlbnRyeSwgY29u
c3QgU3ViaW1hZ2VSZXF1ZXN0JiByZXF1ZXN0LCB1bnNpZ25lZCAvKmhhc2hDb2RlKi8pCisgICAg
eworICAgICAgICBlbnRyeS5pbWFnZSA9IHJlcXVlc3QuaW1hZ2U7CisgICAgICAgIGVudHJ5LnJl
Y3QgPSByZXF1ZXN0LnJlY3Q7CisgICAgICAgIGVudHJ5LnN1YmltYWdlID0gYWRvcHRDRihDR0lt
YWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHJlcXVlc3QuaW1hZ2UsIHJlcXVlc3QucmVjdCkpOwor
ICAgIH0KK307CisKK1N1YmltYWdlQ2FjaGVXaXRoVGltZXImIHN1YmltYWdlQ2FjaGUoKTsKK1Jl
dGFpblB0cjxDR0ltYWdlUmVmPiBzdWJpbWFnZShDR0ltYWdlUmVmLCBjb25zdCBGbG9hdFJlY3Qm
KTsKKworI2VuZGlmIC8vIENBQ0hFX1NVQklNQUdFUworCit9CisKKyNlbmRpZiAvLyBTdWJpbWFn
ZUNhY2hlV2l0aFRpbWVyX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186934</attachid>
            <date>2013-02-06 15:29:59 -0800</date>
            <delta_ts>2013-03-29 14:45:02 -0700</delta_ts>
            <desc>Move subimage cache code into separate h/cpp file.</desc>
            <filename>subimage_cache_patch2.patch</filename>
            <type>text/plain</type>
            <size>20108</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MjAyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDEzLTAyLTA2ICBZb25nanVu
IFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBTdWJpbWFn
ZUNhY2hlV2l0aFRpbWVyIHRvIGEgc2VwYXJhdGUgZmlsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjQ1MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lciBv
dXQgb2YgR3JhcGhjaXNDb250ZXh0Q0cuY3BwLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgc2lu
Y2UgdGhlcmUgaXMgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBhZGQgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIGFu
ZCBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcCBpbnRvIHByb2plY3QgZmlsZS4KKyAgICAgICAg
KiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogZGl0dG8KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YmltYWdl
Q2FjaGVXaXRoVGltZXI6OlN1YmltYWdlQ2FjaGVXaXRoVGltZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6aW52YWxpZGF0ZUNhY2hlVGltZXJGaXJlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpzdWJpbWFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OnN1Ymlt
YWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRp
bWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpzdWJp
bWFnZSk6CisgICAgICAgIChTdWJpbWFnZUNhY2hlRW50cnkpOgorICAgICAgICAoU3ViaW1hZ2VD
YWNoZUVudHJ5VHJhaXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YmltYWdlQ2FjaGVFbnRyeVRy
YWl0czo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YmltYWdlQ2FjaGVFbnRy
eVRyYWl0czo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN1Ymlt
YWdlQ2FjaGVFbnRyeVRyYWl0czo6aXNEZWxldGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
U3ViaW1hZ2VDYWNoZUhhc2g6Omhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNo
ZUhhc2g6OmVxdWFsKToKKyAgICAgICAgKFN1YmltYWdlQ2FjaGVIYXNoKToKKyAgICAgICAgKFN1
YmltYWdlQ2FjaGVXaXRoVGltZXIpOgorICAgICAgICAoU3ViaW1hZ2VSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN1YmltYWdlUmVxdWVzdDo6U3ViaW1hZ2VSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlN1YmltYWdlQ2FjaGVBZGRlcjo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpT
dWJpbWFnZUNhY2hlQWRkZXI6OmVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YmltYWdlQ2Fj
aGVBZGRlcjo6dHJhbnNsYXRlKToKKwogMjAxMy0wMi0wNiAgQnJpYW4gU2Fsb21vbiAgPGJzYWxv
bW9uQGdvb2dsZS5jb20+CiAKICAgICAgICAgW0Nocm9taXVtL1NraWFdIFJlbW92ZSB1c2Ugb2Yg
ZGVwcmVjYXRlZCBTa2lhIG5hbWVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMTQyMDI4KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTMwOTk3LDYg
KzMwOTk3LDQ2IEBACiAJCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgogCQkJCQk8L0ZpbGU+CiAJ
CQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGNnXFN1
YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwIgorCQkJCQkJPgorCQkJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJCT4KKwkJCQkJCQk8VG9vbAorCQkJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJCS8+CisJCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19D
RkxpdGV8V2luMzIiCisJCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQkJPgor
CQkJCQkJCTxUb29sCisJCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkJLz4K
KwkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKKwkJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY2dcU3ViaW1hZ2VDYWNoZVdp
dGhUaW1lci5oIgorCQkJCQkJPgorCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQkJTmFt
ZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorCQkJCQkJCT4KKwkJCQkJCQk8VG9vbAorCQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgorCQkJCQkJCS8+CisJCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJ
CQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQkJPgorCQkJCQkJCTxUb29sCisJ
CQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkJLz4KKwkJCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKIAkJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY2dcSW1hZ2VTb3VyY2VDR1dpbi5jcHAiCiAJCQkJCQk+
CiAJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE0MjAyOCkKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNjkyLDYgKzY5Miw4IEBACiAJCTFGM0YxOTUzMTQ5OUNBNzYwMEE1QUVBNyAvKiBQ
T0RGcmVlTGlzdEFyZW5hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxRjNGMTk1MjE0OTlDQTc2MDBBNUFFQTcgLyogUE9ERnJlZUxpc3RBcmVuYS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFGQUZCRjE4
MTVBNUZBNkUwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRkFGQkYxNzE1QTVGQTUyMDAwODNBMjAgLyogVVRJ
VXRpbGl0aWVzLm1tICovOyB9OwogCQkxRkFGQkYxOTE1QTVGQTc0MDAwODNBMjAgLyogVVRJVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
RkFGQkYxNjE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLmggKi87IH07CisJCTFGQzQw
RkI5MTY1NUNDQjYwMDQwRjI5RSAvKiBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGQzQwRkI4MTY1NUM1OTEw
MDQwRjI5RSAvKiBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcCAqLzsgfTsKKwkJMUZDNDBGQkEx
NjU1Q0NCOTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGQzQwRkI3MTY1NUM1OTEwMDQwRjI5
RSAvKiBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmggKi87IH07CiAJCTIwOUI0NTZCMTY3OTZBN0Uw
MEU1NEU0RSAvKiBKU0NyeXB0b0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyMDlCNDU2QTE2Nzk2QTdFMDBFNTRFNEUgLyogSlNDcnlwdG9D
dXN0b20uY3BwICovOyB9OwogCQkyMEQ2MjkyNjEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDIwRDYyOTI0MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uY3BwICovOyB9OwogCQkyMEQ2MjkyNzEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyMEQ2MjkyNTEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmggKi87IH07CkBAIC03OTc4LDYgKzc5ODAsOCBAQAogCQkxRjNGMTk1MjE0OTlDQTc2MDBB
NUFFQTcgLyogUE9ERnJlZUxpc3RBcmVuYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQT0RGcmVlTGlzdEFyZW5hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFG
QUZCRjE2MTVBNUZBNTIwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVVRJVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFGQUZCRjE3MTVBNUZBNTIwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVVElVdGlsaXRpZXMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFGQzQwRkI3MTY1NUM1OTEwMDQwRjI5RSAvKiBTdWJp
bWFnZUNhY2hlV2l0aFRpbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1
YmltYWdlQ2FjaGVXaXRoVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUZD
NDBGQjgxNjU1QzU5MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIwOUI0NTZBMTY3OTZBN0UwMEU1NEU0
RSAvKiBKU0NyeXB0b0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0NyeXB0b0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIw
RDYyOTI0MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjBENjI5MjUxMjUzNjkwQjAw
MDgxNTQzIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTIwMzkxLDYgKzIwMzk1LDggQEAKIAkJCQlBODBBMzhGRDBFNTBDQzgy
MDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCAqLywKIAkJCQlCMjc1MzUzNjBCMDUzODE0MDAyQ0U2
NEYgLyogUERGRG9jdW1lbnRJbWFnZS5jcHAgKi8sCiAJCQkJQjI3NTM1MzcwQjA1MzgxNDAwMkNF
NjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuaCAqLywKKwkJCQkxRkM0MEZCNzE2NTVDNTkxMDA0MEYy
OUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oICovLAorCQkJCTFGQzQwRkI4MTY1NUM1OTEw
MDQwRjI5RSAvKiBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcCAqLywKIAkJCQlCMjc1MzUyQTBC
MDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAgKi8sCiAJCQkpOwog
CQkJcGF0aCA9IGNnOwpAQCAtMjU3MDIsNiArMjU3MDgsNyBAQAogCQkJCUI4REJEQjRDMTMwQjBG
OEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
M0YxOTk0RjA4MjQ1RTU5MDAxRTlBQkMgLyogU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUzRUY3NjZCMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMUZDNDBGQkExNjU1Q0NCOTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGlt
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5ODc3MEU5MTI0MkM1MzUwMDIyMjZCQSAvKiBTaGFk
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGM0RENDUwMTJGNUVBMUIwMDBEOTE5MCAvKiBTaGFk
b3dCbHVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjhDNDBFODIwMzFCMDBCMjU5NjUgLyog
U2hhZG93RGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTEwOCw2ICsyOTExNSw3IEBACiAJCQkJ
QkM1RUI4MEYwRTgxRjJDRTAwQjI1OTY1IC8qIFN0eWxlVHJhbnNmb3JtRGF0YS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzVFQjY5OTBFODFEQTYzMDBCMjU5NjUgLyogU3R5bGVWaXN1YWxEYXRh
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQwMDBFRDI3MTFDMUI5Q0QwMEM0NzcyNiAvKiBTdWJm
cmFtZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxRkM0MEZCOTE2NTVDQ0I2MDA0MEYy
OUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNTVC
M0REMzEyNTFGMTJEMDAzRUYyNjkgLyogU3VibWl0SW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTkzRTIyN0U0MEFGNTg5QUQwMEQ0ODMyNCAvKiBTdWJyZXNvdXJjZUxvYWRlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3RTM3RUYyRTEzMzkyMDg4MDBCMjkyNTAgLyogU3VicmVzb3Vy
Y2VMb2FkZXJDRi5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJl
dmlzaW9uIDE0MjAyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2lu
Y2x1ZGUgIlBhdGguaCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiU2hhZG93Qmx1
ci5oIgorI2luY2x1ZGUgIlN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCIKICNpbmNsdWRlICJUaW1l
ci5oIgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgpAQCAtNzksMTE3ICs4MCw4IEBAIHVzaW5nIFdURjo6cGFpckludEhh
c2g7CiAvLyBGSVhNRTogVGhlIGZvbGxvd2luZyB1c2luZyBkZWNsYXJhdGlvbiBzaG91bGQgYmUg
aW4gPHd0Zi9IYXNoVHJhaXRzLmg+LgogdXNpbmcgV1RGOjpHZW5lcmljSGFzaFRyYWl0czsKIAot
I2RlZmluZSBDQUNIRV9TVUJJTUFHRVMgMQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiAh
Q0FDSEVfU1VCSU1BR0VTCi0KLXN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1
YmltYWdlKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKLXsKLSAgICBy
ZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KGltYWdlLCByZWN0KSk7
Ci19Ci0KLSNlbHNlIC8vIENBQ0hFX1NVQklNQUdFUwotCi1zdGF0aWMgY29uc3QgZG91YmxlIHN1
YmltYWdlQ2FjaGVDbGVhckRlbGF5ID0gMTsKLXN0YXRpYyBjb25zdCBpbnQgbWF4U3ViaW1hZ2VD
YWNoZVNpemUgPSAzMDA7Ci0KLXN0cnVjdCBTdWJpbWFnZUNhY2hlRW50cnkgewotICAgIFJldGFp
blB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKLSAgICBGbG9hdFJlY3QgcmVjdDsKLSAgICBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gc3ViaW1hZ2U7Ci19OwotCi1zdHJ1Y3QgU3ViaW1hZ2VDYWNoZUVudHJ5
VHJhaXRzIDogR2VuZXJpY0hhc2hUcmFpdHM8U3ViaW1hZ2VDYWNoZUVudHJ5PiB7Ci0gICAgdHlw
ZWRlZiBIYXNoVHJhaXRzPFJldGFpblB0cjxDR0ltYWdlUmVmPiA+IEltYWdlVHJhaXRzOwotCi0g
ICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7Ci0KLSAgICBzdGF0
aWMgY29uc3QgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9IHRydWU7Ci0gICAgc3RhdGlj
IGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFN1YmltYWdlQ2FjaGVFbnRyeSYgdmFsdWUpIHsgcmV0
dXJuICF2YWx1ZS5pbWFnZTsgfQotCi0gICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZh
bHVlKFN1YmltYWdlQ2FjaGVFbnRyeSYgc2xvdCkgeyBJbWFnZVRyYWl0czo6Y29uc3RydWN0RGVs
ZXRlZFZhbHVlKHNsb3QuaW1hZ2UpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUo
Y29uc3QgU3ViaW1hZ2VDYWNoZUVudHJ5JiB2YWx1ZSkgeyByZXR1cm4gSW1hZ2VUcmFpdHM6Omlz
RGVsZXRlZFZhbHVlKHZhbHVlLmltYWdlKTsgfQotfTsKLQotc3RydWN0IFN1YmltYWdlQ2FjaGVI
YXNoIHsKLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIHJlY3QpCi0gICAgewotICAgICAgICByZXR1cm4gcGFpckludEhhc2goUHRySGFz
aDxDR0ltYWdlUmVmPjo6aGFzaChpbWFnZSksCi0gICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHJlY3QueCgpKSA8PCAxNikgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVjdC55KCkp
KTsKLSAgICB9Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU3ViaW1hZ2VDYWNoZUVu
dHJ5JiBrZXkpCi0gICAgewotICAgICAgICByZXR1cm4gaGFzaChrZXkuaW1hZ2UuZ2V0KCksIGtl
eS5yZWN0KTsKLSAgICB9Ci0gICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3ViaW1hZ2VDYWNo
ZUVudHJ5JiBhLCBjb25zdCBTdWJpbWFnZUNhY2hlRW50cnkmIGIpCi0gICAgewotICAgICAgICBy
ZXR1cm4gYS5pbWFnZSA9PSBiLmltYWdlICYmIGEucmVjdCA9PSBiLnJlY3Q7Ci0gICAgfQotICAg
IHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsK
LX07Ci0KLXR5cGVkZWYgSGFzaFNldDxTdWJpbWFnZUNhY2hlRW50cnksIFN1YmltYWdlQ2FjaGVI
YXNoLCBTdWJpbWFnZUNhY2hlRW50cnlUcmFpdHM+IFN1YmltYWdlQ2FjaGU7Ci0KLXN0cnVjdCBT
dWJpbWFnZUNhY2hlV2l0aFRpbWVyIHsKLSAgICBTdWJpbWFnZUNhY2hlIGNhY2hlOwotICAgIERl
ZmVycmFibGVPbmVTaG90VGltZXI8U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcj4gdGltZXI7Ci0KLSAg
ICBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyKCkKLSAgICAgICAgOiB0aW1lcih0aGlzLCAmU3ViaW1h
Z2VDYWNoZVdpdGhUaW1lcjo6aW52YWxpZGF0ZUNhY2hlVGltZXJGaXJlZCwgc3ViaW1hZ2VDYWNo
ZUNsZWFyRGVsYXkpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlVGlt
ZXJGaXJlZChEZWZlcnJhYmxlT25lU2hvdFRpbWVyPFN1YmltYWdlQ2FjaGVXaXRoVGltZXI+Kik7
Ci19OwotCi1zdGF0aWMgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lciYgc3ViaW1hZ2VDYWNoZSgpCi17
Ci0gICAgc3RhdGljIFN1YmltYWdlQ2FjaGVXaXRoVGltZXImIGNhY2hlID0gKm5ldyBTdWJpbWFn
ZUNhY2hlV2l0aFRpbWVyOwotICAgIHJldHVybiBjYWNoZTsKLX0KLQotdm9pZCBTdWJpbWFnZUNh
Y2hlV2l0aFRpbWVyOjppbnZhbGlkYXRlQ2FjaGVUaW1lckZpcmVkKERlZmVycmFibGVPbmVTaG90
VGltZXI8U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcj4qKQotewotICAgIHN1YmltYWdlQ2FjaGUoKS5j
YWNoZS5jbGVhcigpOwotfQotCi1zdHJ1Y3QgU3ViaW1hZ2VSZXF1ZXN0IHsKLSAgICBDR0ltYWdl
UmVmIGltYWdlOwotICAgIGNvbnN0IEZsb2F0UmVjdCYgcmVjdDsKLSAgICBTdWJpbWFnZVJlcXVl
c3QoQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiByZWN0KSA6IGltYWdlKGltYWdl
KSwgcmVjdChyZWN0KSB7IH0KLX07Ci0KLXN0cnVjdCBTdWJpbWFnZUNhY2hlQWRkZXIgewotICAg
IHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFN1YmltYWdlUmVxdWVzdCYgdmFsdWUpCi0gICAg
ewotICAgICAgICByZXR1cm4gU3ViaW1hZ2VDYWNoZUhhc2g6Omhhc2godmFsdWUuaW1hZ2UsIHZh
bHVlLnJlY3QpOwotICAgIH0KLSAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTdWJpbWFnZUNh
Y2hlRW50cnkmIGEsIGNvbnN0IFN1YmltYWdlUmVxdWVzdCYgYikKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhLmltYWdlID09IGIuaW1hZ2UgJiYgYS5yZWN0ID09IGIucmVjdDsKLSAgICB9Ci0gICAg
c3RhdGljIHZvaWQgdHJhbnNsYXRlKFN1YmltYWdlQ2FjaGVFbnRyeSYgZW50cnksIGNvbnN0IFN1
YmltYWdlUmVxdWVzdCYgcmVxdWVzdCwgdW5zaWduZWQgLypoYXNoQ29kZSovKQotICAgIHsKLSAg
ICAgICAgZW50cnkuaW1hZ2UgPSByZXF1ZXN0LmltYWdlOwotICAgICAgICBlbnRyeS5yZWN0ID0g
cmVxdWVzdC5yZWN0OwotICAgICAgICBlbnRyeS5zdWJpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNy
ZWF0ZVdpdGhJbWFnZUluUmVjdChyZXF1ZXN0LmltYWdlLCByZXF1ZXN0LnJlY3QpKTsKLSAgICB9
Ci19OwotCi1zdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1YmltYWdlKENHSW1hZ2VSZWYg
aW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKLXsKLSAgICBTdWJpbWFnZUNhY2hlV2l0aFRp
bWVyJiBjYWNoZSA9IHN1YmltYWdlQ2FjaGUoKTsKLSAgICBjYWNoZS50aW1lci5yZXN0YXJ0KCk7
Ci0gICAgaWYgKGNhY2hlLmNhY2hlLnNpemUoKSA9PSBtYXhTdWJpbWFnZUNhY2hlU2l6ZSkKLSAg
ICAgICAgY2FjaGUuY2FjaGUucmVtb3ZlKGNhY2hlLmNhY2hlLmJlZ2luKCkpOwotICAgIEFTU0VS
VChjYWNoZS5jYWNoZS5zaXplKCkgPCBtYXhTdWJpbWFnZUNhY2hlU2l6ZSk7Ci0gICAgcmV0dXJu
IGNhY2hlLmNhY2hlLmFkZDxTdWJpbWFnZVJlcXVlc3QsIFN1YmltYWdlQ2FjaGVBZGRlcj4oU3Vi
aW1hZ2VSZXF1ZXN0KGltYWdlLCByZWN0KSkuaXRlcmF0b3ItPnN1YmltYWdlOwotfQotCi0jZW5k
aWYgLy8gQ0FDSEVfU1VCSU1BR0VTCi0KIHN0YXRpYyB2b2lkIHNldENHRmlsbENvbG9yKENHQ29u
dGV4dFJlZiBjb250ZXh0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSkKIHsKICAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVk
Q0dDb2xvcihjb2xvciwgY29sb3JTcGFjZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1l
ci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgiCisKKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpZiBDQUNIRV9TVUJJTUFHRVMKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworICAgIAorc3RhdGljIGNvbnN0IGRvdWJsZSBzdWJpbWFnZUNhY2hlQ2xlYXJEZWxh
eSA9IDE7CitzdGF0aWMgY29uc3QgaW50IG1heFN1YmltYWdlQ2FjaGVTaXplID0gMzAwOworCitT
dWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpTdWJpbWFnZUNhY2hlV2l0aFRpbWVyKCkKKyAgICA6IHRp
bWVyKHRoaXMsICZTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjppbnZhbGlkYXRlQ2FjaGVUaW1lckZp
cmVkLCBzdWJpbWFnZUNhY2hlQ2xlYXJEZWxheSkKK3sKK30KKwordm9pZCBTdWJpbWFnZUNhY2hl
V2l0aFRpbWVyOjppbnZhbGlkYXRlQ2FjaGVUaW1lckZpcmVkKERlZmVycmFibGVPbmVTaG90VGlt
ZXI8U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcj4qKQoreworICAgIHN1YmltYWdlQ2FjaGUoKS5jYWNo
ZS5jbGVhcigpOworfQorCitTdWJpbWFnZUNhY2hlV2l0aFRpbWVyJiBzdWJpbWFnZUNhY2hlKCkK
K3sKKyAgICBzdGF0aWMgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lciYgY2FjaGUgPSAqbmV3IFN1Ymlt
YWdlQ2FjaGVXaXRoVGltZXI7CisgICAgcmV0dXJuIGNhY2hlOworfQorCitSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gc3ViaW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiByZWN0
KQoreworICAgIFN1YmltYWdlQ2FjaGVXaXRoVGltZXImIGNhY2hlID0gc3ViaW1hZ2VDYWNoZSgp
OworICAgIGNhY2hlLnRpbWVyLnJlc3RhcnQoKTsKKyAgICBpZiAoY2FjaGUuY2FjaGUuc2l6ZSgp
ID09IG1heFN1YmltYWdlQ2FjaGVTaXplKSB7CisgICAgICAgIFN1YmltYWdlQ2FjaGVFbnRyeSBl
bnRyeSA9ICpjYWNoZS5jYWNoZS5iZWdpbigpOworICAgICAgICBjYWNoZS5jYWNoZS5yZW1vdmUo
ZW50cnkpOworICAgIH0KKyAgICBBU1NFUlQoY2FjaGUuY2FjaGUuc2l6ZSgpIDwgbWF4U3ViaW1h
Z2VDYWNoZVNpemUpOworICAgIHJldHVybiBjYWNoZS5jYWNoZS5hZGQ8U3ViaW1hZ2VSZXF1ZXN0
LCBTdWJpbWFnZUNhY2hlQWRkZXI+KFN1YmltYWdlUmVxdWVzdChpbWFnZSwgcmVjdCkpLml0ZXJh
dG9yLT5zdWJpbWFnZTsKK30KKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRp
bWVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTI2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBT
dWJpbWFnZUNhY2hlV2l0aFRpbWVyX2gKKyNkZWZpbmUgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcl9o
CisKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorCisjaW5jbHVk
ZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2RlZmluZSBDQUNIRV9TVUJJTUFHRVMgMQorCisj
aWYgIUNBQ0hFX1NVQklNQUdFUworCitzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBzdWJpbWFnZShDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit7Cisg
ICAgcmV0dXJuIGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdChpbWFnZSwgcmVj
dCkpOworfQorCisjZWxzZSAvLyBDQUNIRV9TVUJJTUFHRVMKKworc3RydWN0IFN1YmltYWdlQ2Fj
aGVFbnRyeSB7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlOworICAgIEZsb2F0UmVj
dCByZWN0OworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBzdWJpbWFnZTsKK307CisKK3N0cnVj
dCBTdWJpbWFnZUNhY2hlRW50cnlUcmFpdHMgOiBXVEY6OkdlbmVyaWNIYXNoVHJhaXRzPFN1Ymlt
YWdlQ2FjaGVFbnRyeT4geworICAgIHR5cGVkZWYgSGFzaFRyYWl0czxSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gPiBJbWFnZVRyYWl0czsKKyAgICAKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZh
bHVlSXNaZXJvID0gdHJ1ZTsKKyAgICAKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJc0VtcHR5
VmFsdWVGdW5jdGlvbiA9IHRydWU7CisgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0
IFN1YmltYWdlQ2FjaGVFbnRyeSYgdmFsdWUpIHsgcmV0dXJuICF2YWx1ZS5pbWFnZTsgfQorICAg
IAorICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShTdWJpbWFnZUNhY2hlRW50
cnkmIHNsb3QpIHsgSW1hZ2VUcmFpdHM6OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZShzbG90LmltYWdl
KTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFN1YmltYWdlQ2FjaGVF
bnRyeSYgdmFsdWUpIHsgcmV0dXJuIEltYWdlVHJhaXRzOjppc0RlbGV0ZWRWYWx1ZSh2YWx1ZS5p
bWFnZSk7IH0KK307CisKK3N0cnVjdCBTdWJpbWFnZUNhY2hlSGFzaCB7CisgICAgc3RhdGljIHVu
c2lnbmVkIGhhc2goQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFdURjo6cGFpckludEhhc2goUHRySGFzaDxDR0ltYWdlUmVmPjo6
aGFzaChpbWFnZSksCisgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlY3QueCgp
KSA8PCAxNikgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVjdC55KCkpKTsKKyAgICB9CisgICAg
c3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU3ViaW1hZ2VDYWNoZUVudHJ5JiBrZXkpCisgICAg
eworICAgICAgICByZXR1cm4gaGFzaChrZXkuaW1hZ2UuZ2V0KCksIGtleS5yZWN0KTsKKyAgICB9
CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3ViaW1hZ2VDYWNoZUVudHJ5JiBhLCBjb25z
dCBTdWJpbWFnZUNhY2hlRW50cnkmIGIpCisgICAgeworICAgICAgICByZXR1cm4gYS5pbWFnZSA9
PSBiLmltYWdlICYmIGEucmVjdCA9PSBiLnJlY3Q7CisgICAgfQorICAgIHN0YXRpYyBjb25zdCBi
b29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK3R5cGVkZWYg
SGFzaFNldDxTdWJpbWFnZUNhY2hlRW50cnksIFN1YmltYWdlQ2FjaGVIYXNoLCBTdWJpbWFnZUNh
Y2hlRW50cnlUcmFpdHM+IFN1YmltYWdlQ2FjaGU7CisKK3N0cnVjdCBTdWJpbWFnZUNhY2hlV2l0
aFRpbWVyIHsKKyAgICBTdWJpbWFnZUNhY2hlIGNhY2hlOworICAgIERlZmVycmFibGVPbmVTaG90
VGltZXI8U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcj4gdGltZXI7CisKKyAgICBTdWJpbWFnZUNhY2hl
V2l0aFRpbWVyKCk7CisKKyAgICB2b2lkIGludmFsaWRhdGVDYWNoZVRpbWVyRmlyZWQoRGVmZXJy
YWJsZU9uZVNob3RUaW1lcjxTdWJpbWFnZUNhY2hlV2l0aFRpbWVyPiopOworfTsKKworc3RydWN0
IFN1YmltYWdlUmVxdWVzdCB7CisgICAgQ0dJbWFnZVJlZiBpbWFnZTsKKyAgICBjb25zdCBGbG9h
dFJlY3QmIHJlY3Q7CisgICAgU3ViaW1hZ2VSZXF1ZXN0KENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkgOiBpbWFnZShpbWFnZSksIHJlY3QocmVjdCkgeyB9Cit9OworCitz
dHJ1Y3QgU3ViaW1hZ2VDYWNoZUFkZGVyIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25z
dCBTdWJpbWFnZVJlcXVlc3QmIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN1YmltYWdl
Q2FjaGVIYXNoOjpoYXNoKHZhbHVlLmltYWdlLCB2YWx1ZS5yZWN0KTsKKyAgICB9CisgICAgc3Rh
dGljIGJvb2wgZXF1YWwoY29uc3QgU3ViaW1hZ2VDYWNoZUVudHJ5JiBhLCBjb25zdCBTdWJpbWFn
ZVJlcXVlc3QmIGIpCisgICAgeworICAgICAgICByZXR1cm4gYS5pbWFnZSA9PSBiLmltYWdlICYm
IGEucmVjdCA9PSBiLnJlY3Q7CisgICAgfQorICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShTdWJp
bWFnZUNhY2hlRW50cnkmIGVudHJ5LCBjb25zdCBTdWJpbWFnZVJlcXVlc3QmIHJlcXVlc3QsIHVu
c2lnbmVkIC8qaGFzaENvZGUqLykKKyAgICB7CisgICAgICAgIGVudHJ5LmltYWdlID0gcmVxdWVz
dC5pbWFnZTsKKyAgICAgICAgZW50cnkucmVjdCA9IHJlcXVlc3QucmVjdDsKKyAgICAgICAgZW50
cnkuc3ViaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QocmVxdWVz
dC5pbWFnZSwgcmVxdWVzdC5yZWN0KSk7CisgICAgfQorfTsKKworU3ViaW1hZ2VDYWNoZVdpdGhU
aW1lciYgc3ViaW1hZ2VDYWNoZSgpOworUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1YmltYWdlKENH
SW1hZ2VSZWYsIGNvbnN0IEZsb2F0UmVjdCYpOworCisjZW5kaWYgLy8gQ0FDSEVfU1VCSU1BR0VT
CisKK30KKworI2VuZGlmIC8vIFN1YmltYWdlQ2FjaGVXaXRoVGltZXJfaAo=
</data>
<flag name="review"
          id="206570"
          type_id="1"
          status="-"
          setter="ddkilzer"
    />
    <flag name="commit-queue"
          id="206565"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195802</attachid>
            <date>2013-03-29 14:45:02 -0700</date>
            <delta_ts>2013-03-29 17:50:15 -0700</delta_ts>
            <desc>remove the image from subimage cache when we releasing the CGImageRef</desc>
            <filename>remove_subimage.patch</filename>
            <type>text/plain</type>
            <size>23848</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NzI1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDEzLTAzLTI5ICBZb25nanVu
IFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2hlbiByZWxlYXNp
bmcgYSBDR0ltYWdlLCB3ZSBzaG91bGQgYWxzbyByZW1vdmUgaXQgZnJvbSB0aGUgc3ViaW1hZ2Ug
Y2FjaGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDI0NTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
aGVuIHdlIHJlbGVhc2UgYW4gaW1hZ2UoQ0dJbWFnZVJlZikgZnJvbSBCaXRtYXBJbWFnZSdzIGNh
Y2hlZEZyYW1lcywgaWYgdGhlIGltYWdlIHdhcyBhbHJlYWR5CisgICAgICAgIGNhY2hlZCBpbiBz
dWJpbWFnZSBjYWNoZSwgaXQncyByZWYgY291bnQgd29uJ3QgZHJvcCB0byAwIGFuZCB0aGUgaW1h
Z2Ugd29uJ3QgYmUgZGVsZXRlZC4gIFVzdWFsbHksCisgICAgICAgIHRoZSBzdWJpbWFnZSBjYWNo
ZSB3aWxsIGNsZWFyIHRoZSB3aG9sZSBjYWNoZSBpbiBhIHRpbWVyIHdpdGggMSBzZWMgZGVsYXku
ICBIb3dldmVyLCBpZiBXZWJDb3JlIGhhcworICAgICAgICB0byBwYWludCBhbm90aGVyIHN1Ymlt
YWdlIChub3QgbmVjZXNzYXJpbHkgZnJvbSB0aGUgc2FtZSBDR0ltYWdlUmVmKSBiZWZvcmUgdGhp
cyB0aW1lciBmaXJlcywgd2UKKyAgICAgICAgd2lsbCByZXN0YXJ0IHRoZSB0aW1lciBhbmQgaW1h
Z2VzIGluc2lkZSB0aGUgY2FjaGUgd2lsbCBzdGF5IGxvbmdlciB0aGFuIHRoZXkgc2hvdWxkLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyB0d28gdGhpbmdzOgorICAgICAgICAgICAgLSBtb3Zl
IFN1YmltYWdlQ2FjaGVXaXRoVGltZXIgYW5kIHJlbGF0ZWQgaGVscGVyIHN0cnVjdCBpbnRvIGEg
c2VwYXJhdGUgZmlsZS4KKyAgICAgICAgICAgIC0gcmVtb3ZlIHRoZSBpbWFnZSBmcm9tIHN1Ymlt
YWdlIGNhY2hlIHdoZW4gd2UgcmVsZWFzaW5nIHRoZSBDR0ltYWdlUmVmLCB0aGlzIHByZXZlbnQg
c3ViaW1hZ2UKKyAgICAgICAgY2FjaGUgaG9sZGluZyB0aGUgaW1hZ2UgYWZ0ZXIgd2UgcmVsZWFz
ZWQgaXQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBtYW51YWxseSB2ZXJpZmllZCB0aGUgQ0dJ
bWFnZVJlZiBpcyBhbHNvIHJlbW92ZWQgZnJvbSBzdWJpbWFnZSBjYWNoZQorICAgICAgICB3aGVu
IHdlIHJlbGVhc2luZyB0aGUgaW1hZ2UgZnJvbSBGcmFtZURhdGE6OmNsZWFyLgorCisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Jp
dG1hcEltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpjbGVhcik6IHJl
bW92ZSB0aGUgaW1hZ2UgZnJvbSBzdWJpbWFnZSBjYWNoZSBiZWZvcmUgd2UgcmVsZWFzaW5nIGl0
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpk
cmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdl
Q2FjaGVXaXRoVGltZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
U3ViaW1hZ2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YmltYWdlUmVxdWVzdDo6U3Vi
aW1hZ2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YmltYWdlQ2FjaGVBZGRlcjo6aGFz
aCk6CisgICAgICAgIChTdWJpbWFnZUNhY2hlQWRkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3Vi
aW1hZ2VDYWNoZUFkZGVyOjplcXVhbCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJpbWFnZUNhY2hl
QWRkZXI6OnRyYW5zbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdWJpbWFnZUNhY2hlV2l0aFRp
bWVyOjpTdWJpbWFnZUNhY2hlV2l0aFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YmltYWdl
Q2FjaGVXaXRoVGltZXI6OmludmFsaWRhdGVDYWNoZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6Z2V0U3ViaW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xlYXJJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpzdWJpbWFnZUNhY2hlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJp
bWFnZUNhY2hlV2l0aFRpbWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChTdWJpbWFnZUNhY2hlV2l0aFRpbWVyKTogQWRkZWQgYSBkYXRhIG1lbWJlciBtX2ltYWdlcyB0
byByZWNvcmQgd2hpY2ggaW1hZ2UgYW5kIGl0cyBzdWJpbWFnZXMgYXJlIGNhY2hlZC4KKyAgICAg
ICAgKFN1YmltYWdlQ2FjaGVFbnRyeSk6CisgICAgICAgIChTdWJpbWFnZUNhY2hlRW50cnlUcmFp
dHMpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6U3ViaW1hZ2VD
YWNoZUVudHJ5VHJhaXRzOjppc0VtcHR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1h
Z2VDYWNoZVdpdGhUaW1lcjo6U3ViaW1hZ2VDYWNoZUVudHJ5VHJhaXRzOjpjb25zdHJ1Y3REZWxl
dGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6U3Vi
aW1hZ2VDYWNoZUVudHJ5VHJhaXRzOjppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpTdWJpbWFnZUNhY2hlSGFzaDo6aGFzaCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpTdWJpbWFnZUNhY2hlSGFzaDo6
ZXF1YWwpOgorICAgICAgICAoU3ViaW1hZ2VDYWNoZUhhc2gpOgorCiAyMDEzLTAzLTI5ICBCZW0g
Sm9uZXMtQmV5ICA8YmpvbmVzYmVAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1MgRXhjbHVzaW9u
c10gc2hhcGUgb3V0c2lkZSBzZWdtZW50cyBub3QgcHJvcGVybHkgY2FsY3VsYXRlZCBmb3IgZWxs
aXBzZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCShyZXZpc2lvbiAxNDcyMjApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzEyODUsNiArMzEyODUsNDYgQEAKIAkJ
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKKwkJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY2dcU3ViaW1hZ2VDYWNoZVdpdGhU
aW1lci5jcHAiCisJCQkJCQk+CisJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCQlOYW1l
PSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCQkJPgorCQkJCQkJCTxUb29sCisJCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCQkJLz4KKwkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJ
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCQk+CisJCQkJCQkJPFRvb2wKKwkJ
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCQkvPgorCQkJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xjZ1xTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgiCisJCQkJ
CQk+CisJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19D
RkxpdGV8V2luMzIiCisJCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQkJPgor
CQkJCQkJCTxUb29sCisJCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkJLz4K
KwkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJCQk+CisJCQkJCQkJPFRvb2wKKwkJCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKKwkJCQkJCQkvPgorCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJ
CQkJPC9GaWxlPgorCQkJCQk8RmlsZQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xjZ1xJbWFnZVNvdXJjZUNHV2luLmNwcCIKIAkJCQkJCT4KIAkJCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTQ3MjIwKQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02OTIsNiAr
NjkyLDggQEAKIAkJMUYzRjE5NTMxNDk5Q0E3NjAwQTVBRUE3IC8qIFBPREZyZWVMaXN0QXJlbmEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGM0YxOTUy
MTQ5OUNBNzYwMEE1QUVBNyAvKiBQT0RGcmVlTGlzdEFyZW5hLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUZBRkJGMTgxNUE1RkE2RTAwMDgzQTIw
IC8qIFVUSVV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFGQUZCRjE3MTVBNUZBNTIwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMubW0gKi87
IH07CiAJCTFGQUZCRjE5MTVBNUZBNzQwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGQUZCRjE2MTVBNUZBNTIw
MDA4M0EyMCAvKiBVVElVdGlsaXRpZXMuaCAqLzsgfTsKKwkJMUZDNDBGQjkxNjU1Q0NCNjAwNDBG
MjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUZDNDBGQjgxNjU1QzU5MTAwNDBGMjlFIC8qIFN1Ymlt
YWdlQ2FjaGVXaXRoVGltZXIuY3BwICovOyB9OworCQkxRkM0MEZCQTE2NTVDQ0I5MDA0MEYyOUUg
LyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUZDNDBGQjcxNjU1QzU5MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2Fj
aGVXaXRoVGltZXIuaCAqLzsgfTsKIAkJMjA5QjQ1NkIxNjc5NkE3RTAwRTU0RTRFIC8qIEpTQ3J5
cHRvQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDIwOUI0NTZBMTY3OTZBN0UwMEU1NEU0RSAvKiBKU0NyeXB0b0N1c3RvbS5jcHAgKi87IH07
CiAJCTIwRDYyOTI2MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjBENjI5
MjQxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgKi87IH07
CiAJCTIwRDYyOTI3MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIwRDYyOTI1
MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCAqLzsgfTsKQEAg
LTgwNzEsNiArODA3Myw4IEBACiAJCTFGM0YxOTUyMTQ5OUNBNzYwMEE1QUVBNyAvKiBQT0RGcmVl
TGlzdEFyZW5hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBPREZyZWVMaXN0
QXJlbmEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUZBRkJGMTYxNUE1RkE1MjAw
MDgzQTIwIC8qIFVUSVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBVVElVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUZBRkJGMTcx
NUE1RkE1MjAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFVUSVV0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUZDNDBGQjcxNjU1QzU5MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGlt
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ViaW1hZ2VDYWNoZVdpdGhU
aW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRkM0MEZCODE2NTVDNTkxMDA0
MEYyOUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMjA5QjQ1NkExNjc5NkE3RTAwRTU0RTRFIC8qIEpTQ3J5cHRvQ3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3J5cHRvQ3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjBENjI5MjQxMjUzNjkwQjAw
MDgxNTQzIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyMEQ2MjkyNTEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjA3MDIsNiArMjA3MDYsOCBAQAogCQkJCUE4MEEzOEZEMEU1MENDODIwMEEyNUVCQyAvKiBQYXR0
ZXJuQ0cuY3BwICovLAogCQkJCUIyNzUzNTM2MEIwNTM4MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVu
dEltYWdlLmNwcCAqLywKIAkJCQlCMjc1MzUzNzBCMDUzODE0MDAyQ0U2NEYgLyogUERGRG9jdW1l
bnRJbWFnZS5oICovLAorCQkJCTFGQzQwRkI3MTY1NUM1OTEwMDQwRjI5RSAvKiBTdWJpbWFnZUNh
Y2hlV2l0aFRpbWVyLmggKi8sCisJCQkJMUZDNDBGQjgxNjU1QzU5MTAwNDBGMjlFIC8qIFN1Ymlt
YWdlQ2FjaGVXaXRoVGltZXIuY3BwICovLAogCQkJCUIyNzUzNTJBMEIwNTM4MTQwMDJDRTY0RiAv
KiBUcmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY2c7CkBA
IC0yNjExNCw2ICsyNjEyMCw3IEBACiAJCQkJQjhEQkRCNEMxMzBCMEY4QTAwRjVDREIxIC8qIFNl
dFNlbGVjdGlvbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OTRGMDgyNDVFNTkw
MDFFOUFCQyAvKiBTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNFRjc2NkIxNjUzMEE2
MTAwNENCRTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggaW4gSGVhZGVycyAqLywKKwkJCQkxRkM0MEZC
QTE2NTVDQ0I5MDA0MEYyOUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDk4NzcwRTkxMjQyQzUzNTAwMjIyNkJBIC8qIFNoYWRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYzREQ0NTAxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNUVCOEM0MEU4MjAzMUIwMEIyNTk2NSAvKiBTaGFkb3dEYXRhLmggaW4g
SGVhZGVycyAqLywKQEAgLTI5NTcwLDYgKzI5NTc3LDcgQEAKIAkJCQlCQzVFQjgwRjBFODFGMkNF
MDBCMjU5NjUgLyogU3R5bGVUcmFuc2Zvcm1EYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
NUVCNjk5MEU4MURBNjMwMEIyNTk2NSAvKiBTdHlsZVZpc3VhbERhdGEuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRDAwMEVEMjcxMUMxQjlDRDAwQzQ3NzI2IC8qIFN1YmZyYW1lTG9hZGVyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTFGQzQwRkI5MTY1NUNDQjYwMDQwRjI5RSAvKiBTdWJpbWFnZUNh
Y2hlV2l0aFRpbWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1NUIzREQzMTI1MUYxMkQwMDNF
RjI2OSAvKiBTdWJtaXRJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNFMjI3RTQw
QUY1ODlBRDAwRDQ4MzI0IC8qIFN1YnJlc291cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdFMzdFRjJFMTMzOTIwODgwMEIyOTI1MCAvKiBTdWJyZXNvdXJjZUxvYWRlckNGLmNwcCBp
biBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
Qml0bWFwSW1hZ2VDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAJKHJldmlzaW9uIDE0NzIyMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgi
CisjaW5jbHVkZSAiU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIgogI2luY2x1ZGUgPEFwcGxpY2F0
aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KIApAQCAtNTIsNiArNTMsOSBAQCBib29sIEZyYW1lRGF0YTo6Y2xlYXIoYm9vbCBjbGVh
ck1ldGFkYXRhCiAgICAgbV9vcmllbnRhdGlvbiA9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOwog
CiAgICAgaWYgKG1fZnJhbWUpIHsKKyNpZiBDQUNIRV9TVUJJTUFHRVMKKyAgICAgICAgc3ViaW1h
Z2VDYWNoZSgpLmNsZWFySW1hZ2UobV9mcmFtZSk7CisjZW5kaWYKICAgICAgICAgQ0dJbWFnZVJl
bGVhc2UobV9mcmFtZSk7CiAgICAgICAgIG1fZnJhbWUgPSAwOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJldmlzaW9uIDE0NzIyMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlBhdGguaCIKICNpbmNsdWRlICJQ
YXR0ZXJuLmgiCiAjaW5jbHVkZSAiU2hhZG93Qmx1ci5oIgorI2luY2x1ZGUgIlN1YmltYWdlQ2Fj
aGVXaXRoVGltZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPENvcmVHcmFwaGlj
cy9Db3JlR3JhcGhpY3MuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpAQCAtNzksMTE3
ICs4MCw4IEBAIHVzaW5nIFdURjo6cGFpckludEhhc2g7CiAvLyBGSVhNRTogVGhlIGZvbGxvd2lu
ZyB1c2luZyBkZWNsYXJhdGlvbiBzaG91bGQgYmUgaW4gPHd0Zi9IYXNoVHJhaXRzLmg+LgogdXNp
bmcgV1RGOjpHZW5lcmljSGFzaFRyYWl0czsKIAotI2RlZmluZSBDQUNIRV9TVUJJTUFHRVMgMQot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiAhQ0FDSEVfU1VCSU1BR0VTCi0KLXN0YXRpYyBp
bmxpbmUgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1YmltYWdlKENHSW1hZ2VSZWYgaW1hZ2UsIGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkKLXsKLSAgICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3JlYXRl
V2l0aEltYWdlSW5SZWN0KGltYWdlLCByZWN0KSk7Ci19Ci0KLSNlbHNlIC8vIENBQ0hFX1NVQklN
QUdFUwotCi1zdGF0aWMgY29uc3QgZG91YmxlIHN1YmltYWdlQ2FjaGVDbGVhckRlbGF5ID0gMTsK
LXN0YXRpYyBjb25zdCBpbnQgbWF4U3ViaW1hZ2VDYWNoZVNpemUgPSAzMDA7Ci0KLXN0cnVjdCBT
dWJpbWFnZUNhY2hlRW50cnkgewotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKLSAg
ICBGbG9hdFJlY3QgcmVjdDsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3ViaW1hZ2U7Ci19
OwotCi1zdHJ1Y3QgU3ViaW1hZ2VDYWNoZUVudHJ5VHJhaXRzIDogR2VuZXJpY0hhc2hUcmFpdHM8
U3ViaW1hZ2VDYWNoZUVudHJ5PiB7Ci0gICAgdHlwZWRlZiBIYXNoVHJhaXRzPFJldGFpblB0cjxD
R0ltYWdlUmVmPiA+IEltYWdlVHJhaXRzOwotCi0gICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlW
YWx1ZUlzWmVybyA9IHRydWU7Ci0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJc0VtcHR5VmFs
dWVGdW5jdGlvbiA9IHRydWU7Ci0gICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFN1
YmltYWdlQ2FjaGVFbnRyeSYgdmFsdWUpIHsgcmV0dXJuICF2YWx1ZS5pbWFnZTsgfQotCi0gICAg
c3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFN1YmltYWdlQ2FjaGVFbnRyeSYgc2xv
dCkgeyBJbWFnZVRyYWl0czo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKHNsb3QuaW1hZ2UpOyB9Ci0g
ICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgU3ViaW1hZ2VDYWNoZUVudHJ5JiB2
YWx1ZSkgeyByZXR1cm4gSW1hZ2VUcmFpdHM6OmlzRGVsZXRlZFZhbHVlKHZhbHVlLmltYWdlKTsg
fQotfTsKLQotc3RydWN0IFN1YmltYWdlQ2FjaGVIYXNoIHsKLSAgICBzdGF0aWMgdW5zaWduZWQg
aGFzaChDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCi0gICAgewotICAg
ICAgICByZXR1cm4gcGFpckludEhhc2goUHRySGFzaDxDR0ltYWdlUmVmPjo6aGFzaChpbWFnZSks
Ci0gICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlY3QueCgpKSA8PCAxNikgfCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVjdC55KCkpKTsKLSAgICB9Ci0gICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgU3ViaW1hZ2VDYWNoZUVudHJ5JiBrZXkpCi0gICAgewotICAgICAgICBy
ZXR1cm4gaGFzaChrZXkuaW1hZ2UuZ2V0KCksIGtleS5yZWN0KTsKLSAgICB9Ci0gICAgc3RhdGlj
IGJvb2wgZXF1YWwoY29uc3QgU3ViaW1hZ2VDYWNoZUVudHJ5JiBhLCBjb25zdCBTdWJpbWFnZUNh
Y2hlRW50cnkmIGIpCi0gICAgewotICAgICAgICByZXR1cm4gYS5pbWFnZSA9PSBiLmltYWdlICYm
IGEucmVjdCA9PSBiLnJlY3Q7Ci0gICAgfQotICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0Nv
bXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKLX07Ci0KLXR5cGVkZWYgSGFzaFNldDxTdWJp
bWFnZUNhY2hlRW50cnksIFN1YmltYWdlQ2FjaGVIYXNoLCBTdWJpbWFnZUNhY2hlRW50cnlUcmFp
dHM+IFN1YmltYWdlQ2FjaGU7Ci0KLXN0cnVjdCBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyIHsKLSAg
ICBTdWJpbWFnZUNhY2hlIGNhY2hlOwotICAgIERlZmVycmFibGVPbmVTaG90VGltZXI8U3ViaW1h
Z2VDYWNoZVdpdGhUaW1lcj4gdGltZXI7Ci0KLSAgICBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyKCkK
LSAgICAgICAgOiB0aW1lcih0aGlzLCAmU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6aW52YWxpZGF0
ZUNhY2hlVGltZXJGaXJlZCwgc3ViaW1hZ2VDYWNoZUNsZWFyRGVsYXkpCi0gICAgewotICAgIH0K
LQotICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlVGltZXJGaXJlZChEZWZlcnJhYmxlT25lU2hvdFRp
bWVyPFN1YmltYWdlQ2FjaGVXaXRoVGltZXI+Kik7Ci19OwotCi1zdGF0aWMgU3ViaW1hZ2VDYWNo
ZVdpdGhUaW1lciYgc3ViaW1hZ2VDYWNoZSgpCi17Ci0gICAgc3RhdGljIFN1YmltYWdlQ2FjaGVX
aXRoVGltZXImIGNhY2hlID0gKm5ldyBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOwotICAgIHJldHVy
biBjYWNoZTsKLX0KLQotdm9pZCBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjppbnZhbGlkYXRlQ2Fj
aGVUaW1lckZpcmVkKERlZmVycmFibGVPbmVTaG90VGltZXI8U3ViaW1hZ2VDYWNoZVdpdGhUaW1l
cj4qKQotewotICAgIHN1YmltYWdlQ2FjaGUoKS5jYWNoZS5jbGVhcigpOwotfQotCi1zdHJ1Y3Qg
U3ViaW1hZ2VSZXF1ZXN0IHsKLSAgICBDR0ltYWdlUmVmIGltYWdlOwotICAgIGNvbnN0IEZsb2F0
UmVjdCYgcmVjdDsKLSAgICBTdWJpbWFnZVJlcXVlc3QoQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiByZWN0KSA6IGltYWdlKGltYWdlKSwgcmVjdChyZWN0KSB7IH0KLX07Ci0KLXN0
cnVjdCBTdWJpbWFnZUNhY2hlQWRkZXIgewotICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0
IFN1YmltYWdlUmVxdWVzdCYgdmFsdWUpCi0gICAgewotICAgICAgICByZXR1cm4gU3ViaW1hZ2VD
YWNoZUhhc2g6Omhhc2godmFsdWUuaW1hZ2UsIHZhbHVlLnJlY3QpOwotICAgIH0KLSAgICBzdGF0
aWMgYm9vbCBlcXVhbChjb25zdCBTdWJpbWFnZUNhY2hlRW50cnkmIGEsIGNvbnN0IFN1YmltYWdl
UmVxdWVzdCYgYikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhLmltYWdlID09IGIuaW1hZ2UgJiYg
YS5yZWN0ID09IGIucmVjdDsKLSAgICB9Ci0gICAgc3RhdGljIHZvaWQgdHJhbnNsYXRlKFN1Ymlt
YWdlQ2FjaGVFbnRyeSYgZW50cnksIGNvbnN0IFN1YmltYWdlUmVxdWVzdCYgcmVxdWVzdCwgdW5z
aWduZWQgLypoYXNoQ29kZSovKQotICAgIHsKLSAgICAgICAgZW50cnkuaW1hZ2UgPSByZXF1ZXN0
LmltYWdlOwotICAgICAgICBlbnRyeS5yZWN0ID0gcmVxdWVzdC5yZWN0OwotICAgICAgICBlbnRy
eS5zdWJpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdChyZXF1ZXN0
LmltYWdlLCByZXF1ZXN0LnJlY3QpKTsKLSAgICB9Ci19OwotCi1zdGF0aWMgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IHN1YmltYWdlKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKLXsKLSAgICBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyJiBjYWNoZSA9IHN1YmltYWdlQ2FjaGUo
KTsKLSAgICBjYWNoZS50aW1lci5yZXN0YXJ0KCk7Ci0gICAgaWYgKGNhY2hlLmNhY2hlLnNpemUo
KSA9PSBtYXhTdWJpbWFnZUNhY2hlU2l6ZSkKLSAgICAgICAgY2FjaGUuY2FjaGUucmVtb3ZlKGNh
Y2hlLmNhY2hlLmJlZ2luKCkpOwotICAgIEFTU0VSVChjYWNoZS5jYWNoZS5zaXplKCkgPCBtYXhT
dWJpbWFnZUNhY2hlU2l6ZSk7Ci0gICAgcmV0dXJuIGNhY2hlLmNhY2hlLmFkZDxTdWJpbWFnZVJl
cXVlc3QsIFN1YmltYWdlQ2FjaGVBZGRlcj4oU3ViaW1hZ2VSZXF1ZXN0KGltYWdlLCByZWN0KSku
aXRlcmF0b3ItPnN1YmltYWdlOwotfQotCi0jZW5kaWYgLy8gQ0FDSEVfU1VCSU1BR0VTCi0KIHN0
YXRpYyB2b2lkIHNldENHRmlsbENvbG9yKENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDb2xv
ciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKICAgICBDR0NvbnRleHRTZXRGaWxs
Q29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihjb2xvciwgY29sb3JTcGFjZSkp
OwpAQCAtMzA2LDcgKzE5OCwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUlt
YWdlKE5hCiAgICAgICAgICAgICBzdWJpbWFnZVJlY3Quc2V0SGVpZ2h0KGNlaWxmKHN1YmltYWdl
UmVjdC5oZWlnaHQoKSArIHRvcFBhZGRpbmcpKTsKICAgICAgICAgICAgIGFkanVzdGVkRGVzdFJl
Y3Quc2V0SGVpZ2h0KHN1YmltYWdlUmVjdC5oZWlnaHQoKSAvIHlTY2FsZSk7CiAKLSAgICAgICAg
ICAgIGltYWdlID0gc3ViaW1hZ2UoaW1hZ2UuZ2V0KCksIHN1YmltYWdlUmVjdCk7CisjaWYgQ0FD
SEVfU1VCSU1BR0VTCisgICAgICAgICAgICBpbWFnZSA9IHN1YmltYWdlQ2FjaGUoKS5nZXRTdWJp
bWFnZShpbWFnZS5nZXQoKSwgc3ViaW1hZ2VSZWN0KTsKKyNlbHNlCisgICAgICAgICAgICBpbWFn
ZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdChpbWFnZSwgc3ViaW1hZ2VS
ZWN0KSk7CisjZW5kaWYKICAgICAgICAgICAgIGlmIChjdXJySGVpZ2h0IDwgc3JjUmVjdC5tYXhZ
KCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQo
KSkgPT0gY3VyckhlaWdodCAtIENHUmVjdEludGVncmFsKHNyY1JlY3QpLm9yaWdpbi55KTsKICAg
ICAgICAgICAgICAgICBhZGp1c3RlZERlc3RSZWN0LnNldEhlaWdodChDR0ltYWdlR2V0SGVpZ2h0
KGltYWdlLmdldCgpKSAvIHlTY2FsZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1N1
YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExNiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgiCisKKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpZiBDQUNIRV9TVUJJTUFHRVMKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdGF0aWMgY29uc3QgZG91YmxlIHN1YmltYWdlQ2FjaGVDbGVhckRlbGF5
ID0gMTsKK3N0YXRpYyBjb25zdCBpbnQgbWF4U3ViaW1hZ2VDYWNoZVNpemUgPSAzMDA7CisKK3N0
cnVjdCBTdWJpbWFnZVJlcXVlc3QgeworICAgIENHSW1hZ2VSZWYgaW1hZ2U7CisgICAgY29uc3Qg
RmxvYXRSZWN0JiByZWN0OworICAgIFN1YmltYWdlUmVxdWVzdChDR0ltYWdlUmVmIGltYWdlLCBj
b25zdCBGbG9hdFJlY3QmIHJlY3QpIDogaW1hZ2UoaW1hZ2UpLCByZWN0KHJlY3QpIHsgfQorfTsK
Kworc3RydWN0IFN1YmltYWdlQ2FjaGVBZGRlciB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
Y29uc3QgU3ViaW1hZ2VSZXF1ZXN0JiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdWJp
bWFnZUNhY2hlV2l0aFRpbWVyOjpTdWJpbWFnZUNhY2hlSGFzaDo6aGFzaCh2YWx1ZS5pbWFnZSwg
dmFsdWUucmVjdCk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3ViaW1h
Z2VDYWNoZVdpdGhUaW1lcjo6U3ViaW1hZ2VDYWNoZUVudHJ5JiBhLCBjb25zdCBTdWJpbWFnZVJl
cXVlc3QmIGIpCisgICAgeworICAgICAgICByZXR1cm4gYS5pbWFnZSA9PSBiLmltYWdlICYmIGEu
cmVjdCA9PSBiLnJlY3Q7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdHJhbnNsYXRlKFN1Ymlt
YWdlQ2FjaGVXaXRoVGltZXI6OlN1YmltYWdlQ2FjaGVFbnRyeSYgZW50cnksIGNvbnN0IFN1Ymlt
YWdlUmVxdWVzdCYgcmVxdWVzdCwgdW5zaWduZWQgLypoYXNoQ29kZSovKQorICAgIHsKKyAgICAg
ICAgZW50cnkuaW1hZ2UgPSByZXF1ZXN0LmltYWdlOworICAgICAgICBlbnRyeS5yZWN0ID0gcmVx
dWVzdC5yZWN0OworICAgICAgICBlbnRyeS5zdWJpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0
ZVdpdGhJbWFnZUluUmVjdChyZXF1ZXN0LmltYWdlLCByZXF1ZXN0LnJlY3QpKTsKKyAgICB9Cit9
OworCitTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpTdWJpbWFnZUNhY2hlV2l0aFRpbWVyKCkKKyAg
ICA6IG1fdGltZXIodGhpcywgJlN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OmludmFsaWRhdGVDYWNo
ZVRpbWVyRmlyZWQsIHN1YmltYWdlQ2FjaGVDbGVhckRlbGF5KQoreworfQorCit2b2lkIFN1Ymlt
YWdlQ2FjaGVXaXRoVGltZXI6OmludmFsaWRhdGVDYWNoZVRpbWVyRmlyZWQoRGVmZXJyYWJsZU9u
ZVNob3RUaW1lcjxTdWJpbWFnZUNhY2hlV2l0aFRpbWVyPiopCit7CisgICAgbV9pbWFnZXMuY2xl
YXIoKTsKKyAgICBtX2NhY2hlLmNsZWFyKCk7Cit9CisKK1JldGFpblB0cjxDR0ltYWdlUmVmPiBT
dWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpnZXRTdWJpbWFnZShDR0ltYWdlUmVmIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgbV90aW1lci5yZXN0YXJ0KCk7CisgICAgaWYgKG1f
Y2FjaGUuc2l6ZSgpID09IG1heFN1YmltYWdlQ2FjaGVTaXplKSB7CisgICAgICAgIFN1YmltYWdl
Q2FjaGVFbnRyeSBlbnRyeSA9ICptX2NhY2hlLmJlZ2luKCk7CisgICAgICAgIG1faW1hZ2VzLnJl
bW92ZShlbnRyeS5pbWFnZS5nZXQoKSk7CisgICAgICAgIG1fY2FjaGUucmVtb3ZlKGVudHJ5KTsK
KyAgICB9CisKKyAgICBBU1NFUlQobV9jYWNoZS5zaXplKCkgPCBtYXhTdWJpbWFnZUNhY2hlU2l6
ZSk7CisgICAgU3ViaW1hZ2VDYWNoZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fY2FjaGUuYWRkPFN1
YmltYWdlUmVxdWVzdCwgU3ViaW1hZ2VDYWNoZUFkZGVyPihTdWJpbWFnZVJlcXVlc3QoaW1hZ2Us
IHJlY3QpKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIG1faW1hZ2VzLmFk
ZChpbWFnZSk7CisKKyAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zdWJpbWFnZTsKK30KKwor
dm9pZCBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpjbGVhckltYWdlKENHSW1hZ2VSZWYgaW1hZ2Up
Cit7CisgICAgaWYgKG1faW1hZ2VzLmNvbnRhaW5zKGltYWdlKSkgeworICAgICAgICBWZWN0b3I8
U3ViaW1hZ2VDYWNoZUVudHJ5PiB0b0JlUmVtb3ZlZDsKKyAgICAgICAgU3ViaW1hZ2VDYWNoZTo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jYWNoZS5lbmQoKTsKKyAgICAgICAgZm9yIChTdWJpbWFn
ZUNhY2hlOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fY2FjaGUuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7CisgICAgICAgICAgICBpZiAoaXQtPmltYWdlLmdldCgpID09IGltYWdlKQorICAgICAg
ICAgICAgICAgIHRvQmVSZW1vdmVkLmFwcGVuZCgqaXQpOworICAgICAgICB9CisKKyAgICAgICAg
Zm9yIChWZWN0b3I8U3ViaW1hZ2VDYWNoZUVudHJ5Pjo6aXRlcmF0b3IgcmVtb3ZlSXQgPSB0b0Jl
UmVtb3ZlZC5iZWdpbigpOyByZW1vdmVJdCAhPSB0b0JlUmVtb3ZlZC5lbmQoKTsgKytyZW1vdmVJ
dCkKKyAgICAgICAgICAgIG1fY2FjaGUucmVtb3ZlKCpyZW1vdmVJdCk7CisKKyAgICAgICAgbV9p
bWFnZXMucmVtb3ZlQWxsKGltYWdlKTsKKyAgICB9Cit9CisKK1N1YmltYWdlQ2FjaGVXaXRoVGlt
ZXImIHN1YmltYWdlQ2FjaGUoKQoreworICAgIHN0YXRpYyBTdWJpbWFnZUNhY2hlV2l0aFRpbWVy
JiBjYWNoZSA9ICpuZXcgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjsKKyAgICByZXR1cm4gY2FjaGU7
Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNo
ZVdpdGhUaW1lci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU3ViaW1hZ2VD
YWNoZVdpdGhUaW1lcl9oCisjZGVmaW5lIFN1YmltYWdlQ2FjaGVXaXRoVGltZXJfaAorCisjaW5j
bHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKworI2luY2x1ZGUgPENvcmVH
cmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4K
KyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+Cisj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisjZGVmaW5lIENBQ0hFX1NVQklNQUdFUyAxCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIENBQ0hFX1NVQklNQUdFUworCitjbGFzcyBTdWJp
bWFnZUNhY2hlV2l0aFRpbWVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdWJpbWFnZUNh
Y2hlV2l0aFRpbWVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisKK3B1YmxpYzoKKyAgICBz
dHJ1Y3QgU3ViaW1hZ2VDYWNoZUVudHJ5IHsKKyAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IGltYWdlOworICAgICAgICBGbG9hdFJlY3QgcmVjdDsKKyAgICAgICAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IHN1YmltYWdlOworICAgIH07CisKKyAgICBzdHJ1Y3QgU3ViaW1hZ2VDYWNoZUVudHJ5
VHJhaXRzIDogV1RGOjpHZW5lcmljSGFzaFRyYWl0czxTdWJpbWFnZUNhY2hlRW50cnk+IHsKKyAg
ICAgICAgdHlwZWRlZiBIYXNoVHJhaXRzPFJldGFpblB0cjxDR0ltYWdlUmVmPiA+IEltYWdlVHJh
aXRzOworCisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSB0cnVl
OworCisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0lzRW1wdHlWYWx1ZUZ1bmN0aW9uID0g
dHJ1ZTsKKyAgICAgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFN1YmltYWdlQ2Fj
aGVFbnRyeSYgdmFsdWUpIHsgcmV0dXJuICF2YWx1ZS5pbWFnZTsgfQorCisgICAgICAgIHN0YXRp
YyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShTdWJpbWFnZUNhY2hlRW50cnkmIHNsb3QpIHsg
SW1hZ2VUcmFpdHM6OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZShzbG90LmltYWdlKTsgfQorICAgICAg
ICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBTdWJpbWFnZUNhY2hlRW50cnkmIHZh
bHVlKSB7IHJldHVybiBJbWFnZVRyYWl0czo6aXNEZWxldGVkVmFsdWUodmFsdWUuaW1hZ2UpOyB9
CisgICAgfTsKKworICAgIHN0cnVjdCBTdWJpbWFnZUNhY2hlSGFzaCB7CisgICAgICAgIHN0YXRp
YyB1bnNpZ25lZCBoYXNoKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFdURjo6cGFpckludEhhc2goUHRySGFzaDxD
R0ltYWdlUmVmPjo6aGFzaChpbWFnZSksCisgICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihyZWN0LngoKSkgPDwgMTYpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlY3QueSgp
KSk7CisgICAgICAgIH0KKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU3ViaW1h
Z2VDYWNoZUVudHJ5JiBrZXkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBoYXNoKGtl
eS5pbWFnZS5nZXQoKSwga2V5LnJlY3QpOworICAgICAgICB9CisgICAgICAgIHN0YXRpYyBib29s
IGVxdWFsKGNvbnN0IFN1YmltYWdlQ2FjaGVFbnRyeSYgYSwgY29uc3QgU3ViaW1hZ2VDYWNoZUVu
dHJ5JiBiKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYS5pbWFnZSA9PSBiLmltYWdl
ICYmIGEucmVjdCA9PSBiLnJlY3Q7CisgICAgICAgIH0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworICAgIH07CisKKyAgICB0
eXBlZGVmIEhhc2hTZXQ8U3ViaW1hZ2VDYWNoZUVudHJ5LCBTdWJpbWFnZUNhY2hlSGFzaCwgU3Vi
aW1hZ2VDYWNoZUVudHJ5VHJhaXRzPiBTdWJpbWFnZUNhY2hlOworCitwdWJsaWM6CisgICAgU3Vi
aW1hZ2VDYWNoZVdpdGhUaW1lcigpOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBnZXRTdWJp
bWFnZShDR0ltYWdlUmVmLCBjb25zdCBGbG9hdFJlY3QmKTsKKyAgICB2b2lkIGNsZWFySW1hZ2Uo
Q0dJbWFnZVJlZik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGVUaW1lckZp
cmVkKERlZmVycmFibGVPbmVTaG90VGltZXI8U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcj4qKTsKKwor
ICAgIEhhc2hDb3VudGVkU2V0PENHSW1hZ2VSZWY+IG1faW1hZ2VzOworICAgIFN1YmltYWdlQ2Fj
aGUgbV9jYWNoZTsKKyAgICBEZWZlcnJhYmxlT25lU2hvdFRpbWVyPFN1YmltYWdlQ2FjaGVXaXRo
VGltZXI+IG1fdGltZXI7Cit9OworCitTdWJpbWFnZUNhY2hlV2l0aFRpbWVyJiBzdWJpbWFnZUNh
Y2hlKCk7CisKKyNlbmRpZiAvLyBDQUNIRV9TVUJJTUFHRVMKKworfQorCisjZW5kaWYgLy8gU3Vi
aW1hZ2VDYWNoZVdpdGhUaW1lcl9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>