<?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>112162</bug_id>
          
          <creation_ts>2013-03-12 10:05:44 -0700</creation_ts>
          <short_desc>[BlackBerry] Implement platform strategies</short_desc>
          <delta_ts>2013-05-14 03:12:03 -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>WebKit BlackBerry</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>114431</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>otcheung</cc>
    
    <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>853572</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-12 10:05:44 -0700</bug_when>
    <thetext>BlackBerry is one of the few ports not using platform strategies yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853573</commentid>
    <comment_count>1</comment_count>
      <attachid>192757</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-12 10:13:09 -0700</bug_when>
    <thetext>Created attachment 192757
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853576</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-12 10:16:23 -0700</bug_when>
    <thetext>Attachment 192757 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/Platform.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/PlatformBlackBerry.cmake&apos;, u&apos;Source/WebCore/loader/CookieJar.cpp&apos;, u&apos;Source/WebCore/loader/blackberry/CookieJarBlackBerry.cpp&apos;, u&apos;Source/WebCore/platform/network/blackberry/CookieJarBlackBerry.cpp&apos;, u&apos;Source/WebCore/plugins/blackberry/PluginDataBlackBerry.cpp&apos;, u&apos;Source/WebKit/ChangeLog&apos;, u&apos;Source/WebKit/PlatformBlackBerry.cmake&apos;, u&apos;Source/WebKit/blackberry/Api/BlackBerryGlobal.cpp&apos;, u&apos;Source/WebKit/blackberry/ChangeLog&apos;, u&apos;Source/WebKit/blackberry/WebCoreSupport/PlatformStrategiesBlackBerry.cpp&apos;, u&apos;Source/WebKit/blackberry/WebCoreSupport/PlatformStrategiesBlackBerry.h&apos;]&quot; exit_code: 1
Source/WebCore/platform/network/blackberry/CookieJarBlackBerry.cpp:21:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853624</commentid>
    <comment_count>3</comment_count>
      <attachid>192757</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-12 11:02:21 -0700</bug_when>
    <thetext>Comment on attachment 192757
Patch

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

&gt;&gt; Source/WebCore/platform/network/blackberry/CookieJarBlackBerry.cpp:21
&gt;&gt; +
&gt; 
&gt; Alphabetical sorting problem.  [build/include_order] [4]

I think this is correct, this file is the implementation of PlatformCookieJar.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884912</commentid>
    <comment_count>4</comment_count>
      <attachid>200661</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-05-06 05:37:51 -0700</bug_when>
    <thetext>Created attachment 200661
Updated patch

Patch updated to current git master</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884914</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-06 05:40:47 -0700</bug_when>
    <thetext>Attachment 200661 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/Platform.h&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/PlatformBlackBerry.cmake&apos;, u&apos;Source/WebCore/PlatformEfl.cmake&apos;, u&apos;Source/WebCore/PlatformWinCE.cmake&apos;, u&apos;Source/WebCore/loader/CookieJar.cpp&apos;, u&apos;Source/WebCore/loader/blackberry/CookieJarBlackBerry.cpp&apos;, u&apos;Source/WebCore/platform/network/blackberry/CookieJarBlackBerry.cpp&apos;, u&apos;Source/WebCore/plugins/blackberry/PluginDataBlackBerry.cpp&apos;, u&apos;Source/WebKit/ChangeLog&apos;, u&apos;Source/WebKit/PlatformBlackBerry.cmake&apos;, u&apos;Source/WebKit/blackberry/Api/BlackBerryGlobal.cpp&apos;, u&apos;Source/WebKit/blackberry/ChangeLog&apos;, u&apos;Source/WebKit/blackberry/WebCoreSupport/PlatformStrategiesBlackBerry.cpp&apos;, u&apos;Source/WebKit/blackberry/WebCoreSupport/PlatformStrategiesBlackBerry.h&apos;]&quot; exit_code: 1
Source/WebCore/platform/network/blackberry/CookieJarBlackBerry.cpp:21:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885146</commentid>
    <comment_count>6</comment_count>
      <attachid>200661</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-05-06 11:33:06 -0700</bug_when>
    <thetext>Comment on attachment 200661
Updated patch

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

&gt;&gt; Source/WebCore/platform/network/blackberry/CookieJarBlackBerry.cpp:21
&gt;&gt; +
&gt; 
&gt; Alphabetical sorting problem.  [build/include_order] [4]

This could be bogus, since we do not have CookieJarBlackBerry.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885168</commentid>
    <comment_count>7</comment_count>
      <attachid>200661</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-05-06 11:56:33 -0700</bug_when>
    <thetext>Comment on attachment 200661
Updated patch

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

&gt; Source/WebCore/platform/network/blackberry/CookieJarBlackBerry.cpp:45
&gt; +    return !cookieManager().cookieJar().isEmpty();

otcheung says: for us, cookieManager().cookieJar() holds the file name of the cookie database file. It&apos;s always init to some string object so it&apos;ll always return true in this case. since we don&apos;t have access to the websettings object through document anymore, we may want to have ftns that toggles the availability of cookies in cookiemanager, and update those values with the toggles in WebPageClientImpl. However, that seems quite unclean because we&apos;ll be storing the cookieenabled bool in multiple places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885635</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-05-07 00:39:17 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 200661 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=200661&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/network/blackberry/CookieJarBlackBerry.cpp:21
&gt; &gt;&gt; +
&gt; &gt; 
&gt; &gt; Alphabetical sorting problem.  [build/include_order] [4]
&gt; 
&gt; This could be bogus, since we do not have CookieJarBlackBerry.h.

Yes, this is the implementation of PlatformCookieJar.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885638</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-05-07 00:45:37 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 200661 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=200661&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/blackberry/CookieJarBlackBerry.cpp:45
&gt; &gt; +    return !cookieManager().cookieJar().isEmpty();
&gt; 
&gt; otcheung says: for us, cookieManager().cookieJar() holds the file name of the cookie database file. It&apos;s always init to some string object so it&apos;ll always return true in this case. since we don&apos;t have access to the websettings object through document anymore, we may want to have ftns that toggles the availability of cookies in cookiemanager, and update those values with the toggles in WebPageClientImpl. However, that seems quite unclean because we&apos;ll be storing the cookieenabled bool in multiple places.

This cookiesEnabled() means whether cookies are available from a platform point of view. See the Navigator::cookieEnabled() implementation for example, it first checks whether the cookies are enabled for the page settings and then it calls cookiesEnabled(). See also Document::cookie() and Document::setCookie(), platform cookies methods are only called if the cookies are enabled in the page settings (and if the security origin allows to access cookies). In the soup implementation, for example, we check if the soup cookie jar feature is available in the soup session.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888308</commentid>
    <comment_count>10</comment_count>
      <attachid>200661</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-05-13 09:10:09 -0700</bug_when>
    <thetext>Comment on attachment 200661
Updated patch

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888760</commentid>
    <comment_count>11</comment_count>
      <attachid>200661</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-14 03:11:58 -0700</bug_when>
    <thetext>Comment on attachment 200661
Updated patch

Clearing flags on attachment: 200661

Committed r150062: &lt;http://trac.webkit.org/changeset/150062&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888761</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-14 03:12:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192757</attachid>
            <date>2013-03-12 10:13:09 -0700</date>
            <delta_ts>2013-05-06 05:37:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bb-platform-strategies.diff</filename>
            <type>text/plain</type>
            <size>27133</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggZjQ4YmU1NS4uYjdjOTRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wMy0xMiAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0Js
YWNrQmVycnldIEltcGxlbWVudCBwbGF0Zm9ybSBzdHJhdGVnaWVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIxNjIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOiBBZGQgQmxh
Y2tCZXJyeSBwbGF0Zm9ybSB0byB0aGUgbGlzdCBvZiBwbGF0Zm9ybXMKKyAgICAgICAgdXNpbmcg
cGxhdGZvcm0gc3RyYXRlZ2llcy4KKwogMjAxMy0wMy0xMSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fi
b2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4gIFJvbGxpbmcg
b3V0IGluYWR2ZXJ0ZW50IHNldHRpbmcgb2YgREFUQV9MT0dfVE9fRklMRS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA1MmI4MWQyLi5jNmJjNmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTMtMDMt
MTIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtCbGFja0JlcnJ5XSBJbXBsZW1lbnQgcGxhdGZvcm0gc3RyYXRlZ2llcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMTYyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUJsYWNrQmVycnku
Y21ha2U6IEFkZCBuZXcgZmlsZXMgdG8gY29tcGlsYXRpb24gYW5kCisgICAgICAgIHJlbW92ZSB0
aGUgb2xkIGNvb2tpZUphckJsYWNrQmVycnkgZmlsZSBhbmQgUGx1Z2luRGF0YUJsYWNrQmVycnku
CisgICAgICAgICogbG9hZGVyL0Nvb2tpZUphci5jcHA6IFJlbW92ZSB0aGUgcHJlcHJvY2Vzc29y
IGVycm9yIHRoYXQgaXMgbm90CisgICAgICAgIG5lZWRlZCBhbnltb3JlLgorICAgICAgICAqIGxv
YWRlci9ibGFja2JlcnJ5L0Nvb2tpZUphckJsYWNrQmVycnkuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Db29raWVKYXJCbGFja0JlcnJ5LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldENvb2tpZXNG
cm9tRE9NKToKKyAgICAgICAgKFdlYkNvcmU6OmNvb2tpZXNGb3JET00pOgorICAgICAgICAoV2Vi
Q29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
Y29va2llc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6CisgICAg
ICAgIChXZWJDb3JlOjpkZWxldGVDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SG9zdG5h
bWVzV2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlQ29va2llc0Zvckhvc3Ru
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tpZXMpOgorICAgICAgICAqIHBs
dWdpbnMvYmxhY2tiZXJyeS9QbHVnaW5EYXRhQmxhY2tCZXJyeS5jcHA6IFJlbW92ZWQuCisKIDIw
MTMtMDMtMTIgIE1hcmphIEjDtmx0dMOkICA8bWFyamFAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtWOF0gU3RvcmUgbWFpbiB3b3JsZCBhbmQgbm9uLW1haW4gd29ybGQgdGVtcGxhdGVzIHNlcGFy
YXRlbHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IGJlNzYxNWEuLjgzYzcxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTMtMDMtMTIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBJbXBsZW1lbnQgcGxhdGZvcm0gc3RyYXRlZ2ll
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMTYy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUJsYWNrQmVycnkuY21ha2U6IEFkZCBuZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisKIDIw
MTMtMDMtMDggIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxlLmNvbT4KIAogICAgICAgICBC
dWlsZCBmaXggZm9yIEFwcGxlV2luIFZTMjAxMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9n
CmluZGV4IGU2YzNlNTMuLjc0N2UzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM3IEBACisyMDEzLTAzLTEyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gSW1wbGVtZW50IHBsYXRmb3Jt
IHN0cmF0ZWdpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExMjE2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogQXBpL0JsYWNrQmVycnlHbG9iYWwuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2Vi
S2l0OjpnbG9iYWxJbml0aWFsaXplKTogSW5pdGlhbGl6ZSBwbGF0Zm9ybQorICAgICAgICBzdHJh
dGVnaWVzLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0JsYWNr
QmVycnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6
OmluaXRpYWxpemUpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6UGxh
dGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeSk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNC
bGFja0JlcnJ5OjpjcmVhdGVDb29raWVzU3RyYXRlZ3kpOgorICAgICAgICAoUGxhdGZvcm1TdHJh
dGVnaWVzQmxhY2tCZXJyeTo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSk6CisgICAgICAgIChQbGF0
Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5OjpjcmVhdGVMb2FkZXJTdHJhdGVneSk6CisgICAgICAg
IChQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5OjpjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3kp
OgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6Y3JlYXRlUGx1Z2luU3Ry
YXRlZ3kpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6Y3JlYXRlU2hh
cmVkV29ya2VyU3RyYXRlZ3kpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJy
eTo6Y3JlYXRlU3RvcmFnZVN0cmF0ZWd5KToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0Js
YWNrQmVycnk6OmNyZWF0ZVZpc2l0ZWRMaW5rU3RyYXRlZ3kpOgorICAgICAgICAoUGxhdGZvcm1T
dHJhdGVnaWVzQmxhY2tCZXJyeTo6Y29va2llc0ZvckRPTSk6CisgICAgICAgIChQbGF0Zm9ybVN0
cmF0ZWdpZXNCbGFja0JlcnJ5OjpzZXRDb29raWVzRnJvbURPTSk6CisgICAgICAgIChQbGF0Zm9y
bVN0cmF0ZWdpZXNCbGFja0JlcnJ5Ojpjb29raWVzRW5hYmxlZCk6CisgICAgICAgIChQbGF0Zm9y
bVN0cmF0ZWdpZXNCbGFja0JlcnJ5Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSk6Cisg
ICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5OjpnZXRSYXdDb29raWVzKToKKyAg
ICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmRlbGV0ZUNvb2tpZSk6CisgICAg
ICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5OjpyZWZyZXNoUGx1Z2lucyk6CisgICAg
ICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5OjpnZXRQbHVnaW5JbmZvKToKKyAgICAg
ICAgKFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmlzTGlua1Zpc2l0ZWQpOgorICAgICAg
ICAoUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6YWRkVmlzaXRlZExpbmspOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnkuaDogQWRkZWQu
CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5KToKKwogMjAxMy0wMy0xMiAg
R2VuZXZpZXZlIE1hayAgPGdtYWtAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gTm90
aWZ5IGNsaWVudCBpZiB0aGUgc2VsZWN0aW9uIGlzIGluIGEgc3ViZnJhbWUgd2hlbiBzdGFydGVk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtLmgKaW5kZXggOTMwMWYxMC4uYzIyZDU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC05NDEs
NyArOTQxLDcgQEAKICNkZWZpbmUgV1RGX1BMQVRGT1JNX0NGTkVUV09SSyBFcnJvciBVU0VfbWFj
cm9fc2hvdWxkX2JlX3VzZWRfd2l0aF9DRk5FVFdPUksKIAogLyogRklYTUU6IEV2ZW50dWFsbHkg
d2Ugc2hvdWxkIGVuYWJsZSB0aGlzIGZvciBhbGwgcGxhdGZvcm1zIGFuZCBnZXQgcmlkIG9mIHRo
ZSBkZWZpbmUuICovCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUMpIHx8IFBMQVRG
T1JNKFdJTikgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZM
KQorI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4pIHx8
IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZP
Uk0oQkxBQ0tCRVJSWSkKICNkZWZpbmUgV1RGX1VTRV9QTEFURk9STV9TVFJBVEVHSUVTIDEKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKaW5kZXggODFjZWRl
ZS4uOWY1NjkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1CbGFja0JlcnJ5
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQpAQCAt
NjQsNiArNjQsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9j
cHAvV2ViRE9NRXZlbnRUYXJnZXQuY3BwCiAgICAgYmluZGluZ3MvY3BwL1dlYkRPTVN0cmluZy5j
cHAKICAgICBiaW5kaW5ncy9jcHAvV2ViRXhjZXB0aW9uSGFuZGxlci5jcHAKKyAgICBwbGF0Zm9y
bS9QbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCiAgICAgcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVE
YXRhYmFzZUJhY2tpbmdTdG9yZS9Db29raWVEYXRhYmFzZUJhY2tpbmdTdG9yZS5jcHAKICAgICBw
bGF0Zm9ybS9ibGFja2JlcnJ5L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlci5jcHAKICAg
ICBwbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuY3BwCkBAIC05MCw2ICs5MSw3IEBA
IGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVy
LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9BdXRvZmlsbEJhY2tpbmdTdG9y
ZS5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQ29va2llSmFyQmxhY2tCZXJy
eS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvRE5TQmxhY2tCZXJyeS5jcHAK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvRGVmZXJyZWREYXRhLmNwcAogICAgIHBs
YXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrSm9iLmNwcApAQCAtMTM5LDcgKzE0MSw2
IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGVkaXRpbmcvYmxhY2tiZXJyeS9F
ZGl0b3JCbGFja0JlcnJ5LmNwcAogICAgIGVkaXRpbmcvYmxhY2tiZXJyeS9TbWFydFJlcGxhY2VC
bGFja0JlcnJ5LmNwcAogICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNw
cAotICAgIGxvYWRlci9ibGFja2JlcnJ5L0Nvb2tpZUphckJsYWNrQmVycnkuY3BwCiAgICAgcGFn
ZS9ibGFja2JlcnJ5L0FjY2Vzc2liaWxpdHlPYmplY3RCbGFja0JlcnJ5LmNwcAogICAgIHBhZ2Uv
YmxhY2tiZXJyeS9EcmFnQ29udHJvbGxlckJsYWNrQmVycnkuY3BwCiAgICAgcGFnZS9ibGFja2Jl
cnJ5L0V2ZW50SGFuZGxlckJsYWNrQmVycnkuY3BwCkBAIC0yNTMsNyArMjU0LDYgQEAgaWYgKEVO
QUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgICAgICBwbHVnaW5zL1BsdWdpblBhY2thZ2Uu
Y3BwCiAgICAgICAgIHBsdWdpbnMvUGx1Z2luVmlldy5jcHAKICAgICAgICAgcGx1Z2lucy9ibGFj
a2JlcnJ5L05QQ2FsbGJhY2tzQmxhY2tCZXJyeS5jcHAKLSAgICAgICAgcGx1Z2lucy9ibGFja2Jl
cnJ5L1BsdWdpbkRhdGFCbGFja0JlcnJ5LmNwcAogICAgICAgICBwbHVnaW5zL2JsYWNrYmVycnkv
UGx1Z2luUGFja2FnZUJsYWNrQmVycnkuY3BwCiAgICAgICAgIHBsdWdpbnMvYmxhY2tiZXJyeS9Q
bHVnaW5WaWV3QmxhY2tCZXJyeS5jcHAKICAgICAgICAgcGx1Z2lucy9ibGFja2JlcnJ5L1BsdWdp
blZpZXdQcml2YXRlQmxhY2tCZXJyeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db29raWVKYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAK
aW5kZXggMDQ4Njk0MC4uYWY2NzdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nvb2tpZUphci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAK
QEAgLTM3LDEwICszNyw2IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjZW5k
aWYKIAotI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCi0jZXJyb3IgQmxhY2tiZXJyeSBjdXJyZW50
bHkgdXNlcyBhIGZvcmsgb2YgdGhpcyBmaWxlIGJlY2F1c2Ugb2YgbGF5ZXJpbmcgdmlvbGF0aW9u
cwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIE5ldHdvcmtpbmdDb250
ZXh0KiBuZXR3b3JraW5nQ29udGV4dChjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYmxhY2tiZXJyeS9Db29raWVKYXJCbGFja0JlcnJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9ibGFja2JlcnJ5L0Nvb2tpZUphckJsYWNrQmVy
cnkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTE5YTFjLi4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9ibGFja2JlcnJ5L0Nvb2tpZUphckJsYWNrQmVycnku
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQotICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNo
IE1vYmlsZSBJbmMuIGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLwotICogQ29weXJpZ2h0IChD
KSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLTIwMTEuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNvb2tpZUphci5oIgot
Ci0jaW5jbHVkZSAiQ29va2llLmgiCi0jaW5jbHVkZSAiQ29va2llTWFuYWdlci5oIgotI2luY2x1
ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRl
ckNsaWVudEJsYWNrQmVycnkuaCIKLSNpbmNsdWRlICJLVVJMLmgiCi0jaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUGFnZUdyb3VwTG9hZERl
ZmVycmVyLmgiCi0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gRklYTUU6IFVuZm9yay4gVGhpcyBm
aWxlIGlzIGZvcmtlZCBiZWNhdXNlIGFsbCBvdGhlciBwbGF0Zm9ybXMgdXNlIE5ldHdvcmtpbmdD
b250ZXh0IHRvIGFjY2VzcyBjb29raWUgamFyLCBub3QgRG9jdW1lbnQgb3IgRnJhbWUuCi0KLVN0
cmluZyBjb29raWVzKERvY3VtZW50IGNvbnN0KiBkb2N1bWVudCwgS1VSTCBjb25zdCYgdXJsKQot
ewotICAgIC8vICdIdHRwT25seScgY29va2llcyBzaG91bGQgbm8gYmUgYWNjZXNzaWJsZSBmcm9t
IHNjcmlwdHMsIHNvIHdlIGZpbHRlciB0aGVtIG91dCBoZXJlCi0gICAgaWYgKGNvb2tpZXNFbmFi
bGVkKGRvY3VtZW50KSkKLSAgICAgICAgcmV0dXJuIGNvb2tpZU1hbmFnZXIoKS5nZXRDb29raWUo
dXJsLCBOb0h0dHBPbmx5Q29va2llKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLX0KLQotdm9p
ZCBzZXRDb29raWVzKERvY3VtZW50KiBkb2N1bWVudCwgS1VSTCBjb25zdCYgdXJsLCBTdHJpbmcg
Y29uc3QmIHZhbHVlKQotewotICAgIGlmIChjb29raWVzRW5hYmxlZChkb2N1bWVudCkpCi0gICAg
ICAgIGNvb2tpZU1hbmFnZXIoKS5zZXRDb29raWVzKHVybCwgdmFsdWUsIE5vSHR0cE9ubHlDb29r
aWUpOwotfQotCi1ib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCkK
LXsKLSAgICByZXR1cm4gZG9jdW1lbnQgJiYgZG9jdW1lbnQtPnNldHRpbmdzKCkgJiYgZG9jdW1l
bnQtPnNldHRpbmdzKCktPmNvb2tpZUVuYWJsZWQoKTsKLX0KLQotYm9vbCBnZXRSYXdDb29raWVz
KGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2ll
PiYgcmF3Q29va2llcykKLXsKLSAgICAvLyBOb3RlOiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgYnkg
aW5zcGVjdG9yIG9ubHkuIE5vIG5lZWQgdG8gY2hlY2sgaWYgY29va2llIGlzIGVuYWJsZWQuCi0g
ICAgVmVjdG9yPFJlZlB0cjxQYXJzZWRDb29raWU+ID4gcmVzdWx0OwotICAgIGNvb2tpZU1hbmFn
ZXIoKS5nZXRSYXdDb29raWVzKHJlc3VsdCwgdXJsLCBXaXRoSHR0cE9ubHlDb29raWVzKTsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlc3VsdC5zaXplKCk7IGkrKykKLSAgICAgICAgcmVz
dWx0W2ldLT5hcHBlbmRXZWJDb3JlQ29va2llKHJhd0Nvb2tpZXMpOwotICAgIHJldHVybiB0cnVl
OwotfQotCi12b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQotewotICAgIC8vIENvb2tpZXMg
YXJlIG5vdCBib3VuZCB0byB0aGUgZG9jdW1lbnQuIFRoZXJlZm9yZSwgd2UgZG9uJ3QgbmVlZCB0
byBwYXNzCi0gICAgLy8gaW4gdGhlIGRvY3VtZW50IG9iamVjdCB0byBmaW5kIHRoZSB0YXJnZXRl
ZCBjb29raWVzIGluIGNvb2tpZSBtYW5hZ2VyLgotICAgIC8vIE5vdGU6IHRoaXMgbWV0aG9kIGlz
IGNhbGxlZCBieSBpbnNwZWN0b3Igb25seS4gTm8gbmVlZCB0byBjaGVjayBpZiBjb29raWUgaXMg
ZW5hYmxlZC4KLSAgICBjb29raWVNYW5hZ2VyKCkucmVtb3ZlQ29va2llV2l0aE5hbWUodXJsLCBj
b29raWVOYW1lKTsKLX0KLQotU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNv
bnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCAmdXJsKQotewotICAgIGlmIChjb29r
aWVzRW5hYmxlZChkb2N1bWVudCkpCi0gICAgICAgIHJldHVybiBjb29raWVNYW5hZ2VyKCkuZ2V0
Q29va2llKHVybCwgV2l0aEh0dHBPbmx5Q29va2llcyk7Ci0gICAgcmV0dXJuIFN0cmluZygpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQ29va2llSmFyQmxhY2tCZXJyeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQ29va2llSmFyQmxhY2tCZXJy
eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ3ZDhhYmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkv
Q29va2llSmFyQmxhY2tCZXJyeS5jcHAKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B
ICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1Db29raWVKYXIuaCIKKworI2luY2x1ZGUgIkNvb2tpZU1hbmFnZXIuaCIKKyNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgc2V0
Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYg
LypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sK
KyAgICBjb29raWVNYW5hZ2VyKCkuc2V0Q29va2llcyh1cmwsIHZhbHVlLCBOb0h0dHBPbmx5Q29v
a2llKTsKK30KKworU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKK3sKKyAg
ICAvLyAnSHR0cE9ubHknIGNvb2tpZXMgc2hvdWxkIG5vIGJlIGFjY2Vzc2libGUgZnJvbSBzY3Jp
cHRzLCBzbyB3ZSBmaWx0ZXIgdGhlbSBvdXQgaGVyZS4KKyAgICByZXR1cm4gY29va2llTWFuYWdl
cigpLmdldENvb2tpZSh1cmwsIE5vSHR0cE9ubHlDb29raWUpOworfQorCitTdHJpbmcgY29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICByZXR1cm4g
Y29va2llTWFuYWdlcigpLmdldENvb2tpZSh1cmwsIFdpdGhIdHRwT25seUNvb2tpZXMpOworfQor
Citib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQoreworICAgIHJldHVy
biAhY29va2llTWFuYWdlcigpLmNvb2tpZUphcigpLmlzRW1wdHkoKTsKK30KKworYm9vbCBnZXRS
YXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIC8qZmly
c3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQor
eworICAgIFZlY3RvcjxQYXJzZWRDb29raWUqPiByZXN1bHQ7CisgICAgY29va2llTWFuYWdlcigp
LmdldFJhd0Nvb2tpZXMocmVzdWx0LCB1cmwsIFdpdGhIdHRwT25seUNvb2tpZXMpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0LnNpemUoKTsgaSsrKQorICAgICAgICByZXN1bHRb
aV0tPmFwcGVuZFdlYkNvcmVDb29raWUocmF3Q29va2llcyk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3ZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGNvb2tpZU1hbmFnZXIoKS5y
ZW1vdmVDb29raWVXaXRoTmFtZSh1cmwsIG5hbWUpOworfQorCit2b2lkIGdldEhvc3RuYW1lc1dp
dGhDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIEhhc2hTZXQ8U3RyaW5nPiYg
Lypob3N0bmFtZXMqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIGRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBT
dHJpbmcmIC8qaG9zdG5hbWUqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL2JsYWNrYmVycnkvUGx1Z2luRGF0YUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9ibGFja2JlcnJ5L1BsdWdpbkRhdGFCbGFja0JlcnJ5LmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNDc0NjYxNi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL2JsYWNrYmVycnkvUGx1Z2luRGF0YUJsYWNrQmVycnkuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBSZXNlYXJjaCBJbiBN
b3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0g
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUGx1Z2luRGF0YS5oIgotCi0jaW5jbHVk
ZSAiUGx1Z2luRGF0YWJhc2UuaCIKLSNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotdm9pZCBQbHVnaW5EYXRhOjppbml0UGx1Z2lucyhjb25zdCBQYWdl
KikKLXsKLSAgICBQbHVnaW5EYXRhYmFzZSogZGIgPSBQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVk
UGx1Z2lucygpOwotICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5QYWNrYWdlKj4mIHBsdWdpbnMgPSBk
Yi0+cGx1Z2lucygpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBsdWdpbnMuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgUGx1Z2luUGFja2FnZSogcGFja2FnZSA9IHBsdWdpbnNbaV07
Ci0KLSAgICAgICAgUGx1Z2luSW5mbyBpbmZvOwotICAgICAgICBpbmZvLm5hbWUgPSBwYWNrYWdl
LT5uYW1lKCk7Ci0gICAgICAgIGluZm8uZmlsZSA9IHBhY2thZ2UtPmZpbGVOYW1lKCk7Ci0gICAg
ICAgIGluZm8uZGVzYyA9IHBhY2thZ2UtPmRlc2NyaXB0aW9uKCk7Ci0KLSAgICAgICAgY29uc3Qg
TUlNRVRvRGVzY3JpcHRpb25zTWFwJiBtaW1lVG9EZXNjcmlwdGlvbnMgPSBwYWNrYWdlLT5taW1l
VG9EZXNjcmlwdGlvbnMoKTsKLSAgICAgICAgTUlNRVRvRGVzY3JpcHRpb25zTWFwOjpjb25zdF9p
dGVyYXRvciBlbmQgPSBtaW1lVG9EZXNjcmlwdGlvbnMuZW5kKCk7Ci0gICAgICAgIGZvciAoTUlN
RVRvRGVzY3JpcHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1pbWVUb0Rlc2NyaXB0aW9u
cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIE1pbWVDbGFzc0luZm8g
bWltZTsKLSAgICAgICAgICAgIG1pbWUudHlwZSA9IGl0LT5rZXk7Ci0gICAgICAgICAgICBtaW1l
LmRlc2MgPSBpdC0+dmFsdWU7Ci0gICAgICAgICAgICBtaW1lLmV4dGVuc2lvbnMgPSBwYWNrYWdl
LT5taW1lVG9FeHRlbnNpb25zKCkuZ2V0KG1pbWUudHlwZSk7Ci0gICAgICAgICAgICBpbmZvLm1p
bWVzLmFwcGVuZChtaW1lKTsKLSAgICAgICAgfQotICAgICAgICBtX3BsdWdpbnMuYXBwZW5kKGlu
Zm8pOwotICAgIH0KLX0KLQotdm9pZCBQbHVnaW5EYXRhOjpyZWZyZXNoKCkKLXsKLSAgICBQbHVn
aW5EYXRhYmFzZSogZGIgPSBQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucygpOwotICAg
IGRiLT5yZWZyZXNoKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKaW5kZXggMTFmOWQ4Zi4uNGQzODVlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKQEAgLTExNiw2ICsxMTYsNyBAQCBsaXN0KEFQ
UEVORCBXZWJLaXRfU09VUkNFUwogICAgIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvTmV0d29y
a0luZm9DbGllbnRCbGFja0JlcnJ5LmNwcAogICAgIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQv
Tm90aWZpY2F0aW9uQ2xpZW50QmxhY2tCZXJyeS5jcHAKICAgICBibGFja2JlcnJ5L1dlYkNvcmVT
dXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuY3BwCisgICAgYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5LmNwcAogICAgIGJsYWNrYmVycnkvV2Vi
Q29yZVN1cHBvcnQvTmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50QmxhY2tCZXJyeS5jcHAKICAg
ICBibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1NlbGVjdFBvcHVwQ2xpZW50LmNwcAogICAgIGJs
YWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvU3VnZ2VzdGlvbkJveEhhbmRsZXIuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JsYWNrQmVycnlHbG9iYWwuY3BwIGIv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CbGFja0JlcnJ5R2xvYmFsLmNwcAppbmRleCBl
NWUxYmJhLi45MmVlYmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBp
L0JsYWNrQmVycnlHbG9iYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkv
QmxhY2tCZXJyeUdsb2JhbC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJOZXR3b3Jr
U3RhdGVOb3RpZmllci5oIgogI2luY2x1ZGUgIlBhZ2VDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2VH
cm91cC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnkuaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFk
LmgiCiAjaW5jbHVkZSAiYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmgiCkBAIC03NCw2ICs3NSw5
IEBAIHZvaWQgZ2xvYmFsSW5pdGlhbGl6ZSgpCiAgICAgLy8gd2UncmUgZ3JhYmJpbmcgY2FsbE9u
TWFpblRocmVhZCB3aXRob3V0IHVzaW5nIHRoZSByZXN0IG9mIHRoZSB0aHJlYWRpbmcgc3VwcG9y
dC4KICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKKyAgICAvLyBJbml0aWFsaXpl
IG91ciBwbGF0Zm9ybSBzdHJhdGVnaWVzLgorICAgIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVy
cnk6OmluaXRpYWxpemUoKTsKKwogICAgIC8vIFNldCB0aGUgbWluaW1hbCB0aW1lciBpbnRlcnZh
bCB0byA0IG1pbGxpc2Vjb25kcy4KICAgICBXZWJDb3JlOjpTZXR0aW5nczo6c2V0RGVmYXVsdE1p
bkRPTVRpbWVySW50ZXJ2YWwoMC4wMDQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVn
aWVzQmxhY2tCZXJyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQx
NDAwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3Jl
U3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDE2MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl
IFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeS5oIgorCisjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGFn
ZUdyb3VwLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db29raWVKYXIuaCIKKyNpbmNsdWRlICJQbHVn
aW5EYXRhYmFzZS5oIgorI2luY2x1ZGUgIlBsdWdpblBhY2thZ2UuaCIKKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6aW5pdGlh
bGl6ZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFj
a0JlcnJ5LCBwbGF0Zm9ybVN0cmF0ZWdpZXMsICgpKTsKKyAgICBzZXRQbGF0Zm9ybVN0cmF0ZWdp
ZXMoJnBsYXRmb3JtU3RyYXRlZ2llcyk7Cit9CisKK1BsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVy
cnk6OlBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnkoKQoreworfQorCitDb29raWVzU3RyYXRl
Z3kqIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmNyZWF0ZUNvb2tpZXNTdHJhdGVneSgp
Cit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisKK0RhdGFiYXNlU3RyYXRlZ3kqIFBsYXRmb3JtU3Ry
YXRlZ2llc0JsYWNrQmVycnk6OmNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKQoreworICAgIHJldHVy
biB0aGlzOworfQorCitMb2FkZXJTdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJy
eTo6Y3JlYXRlTG9hZGVyU3RyYXRlZ3koKQoreworICAgIHJldHVybiB0aGlzOworfQorCitQYXN0
ZWJvYXJkU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmNyZWF0ZVBhc3Rl
Ym9hcmRTdHJhdGVneSgpCit7CisgICAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdXNlZCBvbmx5IGJ5
IE1hYy4KKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitQbHVnaW5T
dHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6Y3JlYXRlUGx1Z2luU3RyYXRl
Z3koKQoreworICAgIHJldHVybiB0aGlzOworfQorCitTaGFyZWRXb3JrZXJTdHJhdGVneSogUGxh
dGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6Y3JlYXRlU2hhcmVkV29ya2VyU3RyYXRlZ3koKQor
eworICAgIHJldHVybiB0aGlzOworfQorCitTdG9yYWdlU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRl
Z2llc0JsYWNrQmVycnk6OmNyZWF0ZVN0b3JhZ2VTdHJhdGVneSgpCit7CisgICAgcmV0dXJuIHRo
aXM7Cit9CisKK1Zpc2l0ZWRMaW5rU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVy
cnk6OmNyZWF0ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKQoreworICAgIHJldHVybiB0aGlzOworfQor
CisvLyBDb29raWVzU3RyYXRlZ3kKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5
Ojpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQoreworICAgIHJldHVybiBXZWJD
b3JlOjpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7Cit9CisKK3ZvaWQg
UGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQoreworICAgIFdlYkNvcmU6
OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5n
KTsKK30KKworYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5Ojpjb29raWVzRW5hYmxl
ZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0Vu
YWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKK30KKworU3RyaW5nIFBsYXRmb3JtU3Ry
YXRlZ2llc0JsYWNrQmVycnk6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYgdXJsKQoreworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOworfQorCitib29sIFBsYXRmb3Jt
U3RyYXRlZ2llc0JsYWNrQmVycnk6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmws
IFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQoreworICAgIHJldHVybiBXZWJDb3JlOjpnZXRS
YXdDb29raWVzKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7Cit9CisKK3Zv
aWQgUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGNvb2tpZU5hbWUpCit7CisgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24sIHVybCwg
Y29va2llTmFtZSk7Cit9CisKKy8vIFBsdWdpblN0cmF0ZWd5Cit2b2lkIFBsYXRmb3JtU3RyYXRl
Z2llc0JsYWNrQmVycnk6OnJlZnJlc2hQbHVnaW5zKCkKK3sKKyNpZiBFTkFCTEUoTkVUU0NBUEVf
UExVR0lOX0FQSSkKKyAgICBQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucygpLT5yZWZy
ZXNoKCk7CisjZW5kaWYKK30KKwordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5Ojpn
ZXRQbHVnaW5JbmZvKGNvbnN0IFBhZ2UqIHBhZ2UsIFZlY3RvcjxQbHVnaW5JbmZvPiYgb3V0UGx1
Z2lucykKK3sKKyNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKyAgICBQbHVnaW5EYXRh
YmFzZSogZGF0YWJhc2UgPSBQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucygpOworICAg
IGNvbnN0IFZlY3RvcjxQbHVnaW5QYWNrYWdlKj4gJnBsdWdpbnMgPSBkYXRhYmFzZS0+cGx1Z2lu
cygpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwbHVnaW5zLnNpemUoKTsgKytpKSB7
CisgICAgICAgIFBsdWdpblBhY2thZ2UqIHBhY2thZ2UgPSBwbHVnaW5zW2ldOworCisgICAgICAg
IFBsdWdpbkluZm8gcGx1Z2luSW5mbzsKKyAgICAgICAgcGx1Z2luSW5mby5uYW1lID0gcGFja2Fn
ZS0+bmFtZSgpOworICAgICAgICBwbHVnaW5JbmZvLmZpbGUgPSBwYWNrYWdlLT5maWxlTmFtZSgp
OworICAgICAgICBwbHVnaW5JbmZvLmRlc2MgPSBwYWNrYWdlLT5kZXNjcmlwdGlvbigpOworCisg
ICAgICAgIGNvbnN0IE1JTUVUb0Rlc2NyaXB0aW9uc01hcCYgbWltZVRvRGVzY3JpcHRpb25zID0g
cGFja2FnZS0+bWltZVRvRGVzY3JpcHRpb25zKCk7CisgICAgICAgIE1JTUVUb0Rlc2NyaXB0aW9u
c01hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbWltZVRvRGVzY3JpcHRpb25zLmVuZCgpOworICAg
ICAgICBmb3IgKE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtaW1l
VG9EZXNjcmlwdGlvbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBN
aW1lQ2xhc3NJbmZvIG1pbWU7CisgICAgICAgICAgICBtaW1lLnR5cGUgPSBpdC0+a2V5OworICAg
ICAgICAgICAgbWltZS5kZXNjID0gaXQtPnZhbHVlOworICAgICAgICAgICAgbWltZS5leHRlbnNp
b25zID0gcGFja2FnZS0+bWltZVRvRXh0ZW5zaW9ucygpLmdldChtaW1lLnR5cGUpOworICAgICAg
ICAgICAgcGx1Z2luSW5mby5taW1lcy5hcHBlbmQobWltZSk7CisgICAgICAgIH0KKworICAgICAg
ICBvdXRQbHVnaW5zLmFwcGVuZChwbHVnaW5JbmZvKTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShvdXRQbHVnaW5zKTsKKyNlbmRpZgorfQorCisvLyBWaXNpdGVkTGlua1N0cmF0ZWd5
Citib29sIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmlzTGlua1Zpc2l0ZWQoUGFnZSog
cGFnZSwgTGlua0hhc2ggaGFzaCwgY29uc3QgS1VSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYpCit7
CisgICAgcmV0dXJuIHBhZ2UtPmdyb3VwKCkuaXNMaW5rVmlzaXRlZChoYXNoKTsKK30KKwordm9p
ZCBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5OjphZGRWaXNpdGVkTGluayhQYWdlKiBwYWdl
LCBMaW5rSGFzaCBoYXNoKQoreworICAgIHBhZ2UtPmdyb3VwKCkuYWRkVmlzaXRlZExpbmtIYXNo
KGhhc2gpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVT
dXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzUxNTY0NQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0
ZWdpZXNCbGFja0JlcnJ5LmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjEx
MC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVmIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnlf
aAorI2RlZmluZSBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5X2gKKworI2luY2x1ZGUgIkNv
b2tpZXNTdHJhdGVneS5oIgorI2luY2x1ZGUgIkRhdGFiYXNlU3RyYXRlZ3kuaCIKKyNpbmNsdWRl
ICJMb2FkZXJTdHJhdGVneS5oIgorI2luY2x1ZGUgIlBhc3RlYm9hcmRTdHJhdGVneS5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgorI2luY2x1ZGUgIlBsdWdpblN0cmF0ZWd5Lmgi
CisjaW5jbHVkZSAiU2hhcmVkV29ya2VyU3RyYXRlZ3kuaCIKKyNpbmNsdWRlICJTdG9yYWdlU3Ry
YXRlZ3kuaCIKKyNpbmNsdWRlICJWaXNpdGVkTGlua1N0cmF0ZWd5LmgiCisKK2NsYXNzIFBsYXRm
b3JtU3RyYXRlZ2llc0JsYWNrQmVycnkgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVn
aWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpE
YXRhYmFzZVN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5LCBwcml2YXRl
IFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0
cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlN0b3JhZ2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3Jl
OjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBpbml0aWFs
aXplKCk7CisKK3ByaXZhdGU6CisgICAgUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeSgpOwor
CisgICAgLy8gV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzCisgICAgdmlydHVhbCBXZWJDb3Jl
OjpDb29raWVzU3RyYXRlZ3kqIGNyZWF0ZUNvb2tpZXNTdHJhdGVneSgpOworICAgIHZpcnR1YWwg
V2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneSogY3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpOworICAg
IHZpcnR1YWwgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kqIGNyZWF0ZUxvYWRlclN0cmF0ZWd5KCk7
CisgICAgdmlydHVhbCBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kqIGNyZWF0ZVBhc3RlYm9h
cmRTdHJhdGVneSgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kqIGNyZWF0
ZVBsdWdpblN0cmF0ZWd5KCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJh
dGVneSogY3JlYXRlU2hhcmVkV29ya2VyU3RyYXRlZ3koKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6
OlN0b3JhZ2VTdHJhdGVneSogY3JlYXRlU3RvcmFnZVN0cmF0ZWd5KCk7CisgICAgdmlydHVhbCBX
ZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5KiBjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCk7
CisKKyAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKKyAgICB2aXJ0dWFsIFN0cmluZyBj
b29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxl
ZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCBTdHJp
bmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAg
IHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworCisgICAgLy8g
V2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQorICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1l
bnRhdGlvbi4KKworICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5CisgICAgdmlydHVhbCB2
b2lkIHJlZnJlc2hQbHVnaW5zKCk7CisgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29u
c3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOworCisgICAg
Ly8gV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneQorICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtW
aXNpdGVkKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6
S1VSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCk7Cisg
ICAgdmlydHVhbCB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpM
aW5rSGFzaCk7Cit9OworCisjZW5kaWYgLy8gUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeV9o
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200661</attachid>
            <date>2013-05-06 05:37:51 -0700</date>
            <delta_ts>2013-05-14 03:11:58 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>bb-platform-strategies2.diff</filename>
            <type>text/plain</type>
            <size>28312</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggZWE1NTAyNi4uMzAzNTQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wNS0wNiAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0Js
YWNrQmVycnldIEltcGxlbWVudCBwbGF0Zm9ybSBzdHJhdGVnaWVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIxNjIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOiBBZGQgQmxh
Y2tCZXJyeSBwbGF0Zm9ybSB0byB0aGUgbGlzdCBvZiBwbGF0Zm9ybXMKKyAgICAgICAgdXNpbmcg
cGxhdGZvcm0gc3RyYXRlZ2llcy4KKwogMjAxMy0wNS0wNSAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBWZWN0b3I6OnByZXBlbmQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA0NDEyOGVhLi5lYThlNmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIw
MTMtMDUtMDYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtCbGFja0JlcnJ5XSBJbXBsZW1lbnQgcGxhdGZvcm0gc3RyYXRlZ2llcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMTYyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBqdXN0IGEg
cmVmYWN0b3JpbmcsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDogTW92ZSBQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGZyb20gcGxhdGZvcm0KKyAg
ICAgICAgc3BlY2lmaWMgbWFrZWZpbGVzIHRvIHRoZSBnbG9iYWwgb25lIG5vdyB0aGF0IGFsbCBw
bGF0Zm9ybXMgdXNpbmcKKyAgICAgICAgY21ha2UgaW1wbGVtZW50IHBsYXRmb3JtIHN0cmF0ZWdp
ZXMuCisgICAgICAgICogUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlOgorICAgICAgICAqIFBsYXRm
b3JtRWZsLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luQ0UuY21ha2U6CisgICAgICAgICog
bG9hZGVyL0Nvb2tpZUphci5jcHA6IFJlbW92ZSB0aGUgcHJlcHJvY2Vzc29yIGVycm9yIHRoYXQg
aXMgbm90CisgICAgICAgIG5lZWRlZCBhbnltb3JlLgorICAgICAgICAqIGxvYWRlci9ibGFja2Jl
cnJ5L0Nvb2tpZUphckJsYWNrQmVycnkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvYmxhY2tiZXJyeS9Db29raWVKYXJCbGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvb2tpZXNGb3JET00pOgorICAgICAgICAoV2ViQ29yZTo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Y29va2llc0VuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgIChXZWJDb3Jl
OjpkZWxldGVDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tpZXMpOgorICAgICAgICAqIHBsdWdpbnMvYmxhY2ti
ZXJyeS9QbHVnaW5EYXRhQmxhY2tCZXJyeS5jcHA6IFJlbW92ZWQuCisKIDIwMTMtMDUtMDQgIEFu
ZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxMjU1
OTIpOiBSZXByb2R1Y2libGUgY3Jhc2ggaW4gRE9NV2luZG93OjpvcGVuIHdoZW4gYSBkZWxlZ2F0
ZSBjbG9zZXMgdGhlIG5ldyB3aW5kb3cgaW4gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCAwZTA1ODMzLi42NGE2OWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDEzLTA1LTA2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
KworICAgICAgICBbQmxhY2tCZXJyeV0gSW1wbGVtZW50IHBsYXRmb3JtIHN0cmF0ZWdpZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjE2MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm1C
bGFja0JlcnJ5LmNtYWtlOiBBZGQgbmV3IGZpbGVzIHRvIGNvbXBpbGF0aW9uLgorCiAyMDEzLTA1
LTA0ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBBbmltYXRpb25z
IGFuZCBUcmFuc2l0aW9ucyBzaG91bGQgbm90IHN0YXJ0IHdoZW4gZ2xvYmFsbHkgc3VzcGVuZGVk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCBlZDNkMDBjLi4yNzk4MDg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMy0wNS0wNiAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0Js
YWNrQmVycnldIEltcGxlbWVudCBwbGF0Zm9ybSBzdHJhdGVnaWVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIxNjIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFwaS9CbGFja0JlcnJ5R2xvYmFsLmNw
cDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6Z2xvYmFsSW5pdGlhbGl6ZSk6IEluaXRp
YWxpemUgcGxhdGZvcm0KKyAgICAgICAgc3RyYXRlZ2llcy4KKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAgICAgIChQ
bGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5Ojppbml0aWFsaXplKToKKyAgICAgICAgKFBsYXRm
b3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OlBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnkpOgor
ICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6Y3JlYXRlQ29va2llc1N0cmF0
ZWd5KToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmNyZWF0ZURhdGFi
YXNlU3RyYXRlZ3kpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6Y3Jl
YXRlTG9hZGVyU3RyYXRlZ3kpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJy
eTo6Y3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2ll
c0JsYWNrQmVycnk6OmNyZWF0ZVBsdWdpblN0cmF0ZWd5KToKKyAgICAgICAgKFBsYXRmb3JtU3Ry
YXRlZ2llc0JsYWNrQmVycnk6OmNyZWF0ZVNoYXJlZFdvcmtlclN0cmF0ZWd5KToKKyAgICAgICAg
KFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmNyZWF0ZVN0b3JhZ2VTdHJhdGVneSk6Cisg
ICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5OjpjcmVhdGVWaXNpdGVkTGlua1N0
cmF0ZWd5KToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmNvb2tpZXNG
b3JET00pOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6c2V0Q29va2ll
c0Zyb21ET00pOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6Y29va2ll
c0VuYWJsZWQpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzQmxh
Y2tCZXJyeTo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFj
a0JlcnJ5OjpkZWxldGVDb29raWUpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tC
ZXJyeTo6cmVmcmVzaFBsdWdpbnMpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tC
ZXJyeTo6Z2V0UGx1Z2luSW5mbyk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0Jl
cnJ5Ojppc0xpbmtWaXNpdGVkKToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVy
cnk6OmFkZFZpc2l0ZWRMaW5rKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0
cmF0ZWdpZXNCbGFja0JlcnJ5Lmg6IEFkZGVkLgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVz
QmxhY2tCZXJyeSk6CisKIDIwMTMtMDUtMDQgIE5pbWEgR2hhbmF2YXRpYW4gIDxuZ2hhbmF2YXRp
YW5AYmxhY2tiZXJyeS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIENsZWFuIHVwIHVudXNl
ZCBzcGVsbGNoZWNrIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGQwNmUwOTYuLjdhMGU5MjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaApAQCAtODc4LDcgKzg3OCw3IEBACiAjZGVmaW5lIFdURl9QTEFURk9STV9DRk5FVFdP
UksgRXJyb3IgVVNFX21hY3JvX3Nob3VsZF9iZV91c2VkX3dpdGhfQ0ZORVRXT1JLCiAKIC8qIEZJ
WE1FOiBFdmVudHVhbGx5IHdlIHNob3VsZCBlbmFibGUgdGhpcyBmb3IgYWxsIHBsYXRmb3JtcyBh
bmQgZ2V0IHJpZCBvZiB0aGUgZGVmaW5lLiAqLwotI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKEVGTCkKKyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShFRkwpIHx8IFBMQVRGT1JNKEJMQUNLQkVSUlkpCiAjZGVmaW5lIFdURl9VU0VfUExBVEZPUk1f
U1RSQVRFR0lFUyAxCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA0MDAwMGZjLi4z
MWZhYzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTgzOCw2ICsxODM4LDcgQEAgc2V0KFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL05vdEltcGxlbWVudGVkLmNwcAogICAgIHBsYXRm
b3JtL1BsYXRmb3JtRXZlbnQuY3BwCiAgICAgcGxhdGZvcm0vUGxhdGZvcm1JbnN0cnVtZW50YXRp
b24uY3BwCisgICAgcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAogICAgIHBsYXRmb3Jt
L1J1bkxvb3AuY3BwCiAgICAgcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcAog
ICAgIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1CbGFj
a0JlcnJ5LmNtYWtlCmluZGV4IDk4YTFiNmMuLjY3NjQ0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUJsYWNrQmVycnkuY21ha2UKQEAgLTQ0LDYgKzQ0LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHVi
LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9ibGFja2JlcnJ5L0F1dG9maWxsQmFja2luZ1N0b3JlLmNwcAorICAgIHBsYXRmb3Jt
L25ldHdvcmsvYmxhY2tiZXJyeS9Db29raWVKYXJCbGFja0JlcnJ5LmNwcAogICAgIHBsYXRmb3Jt
L25ldHdvcmsvYmxhY2tiZXJyeS9ETlNCbGFja0JlcnJ5LmNwcAogICAgIHBsYXRmb3JtL25ldHdv
cmsvYmxhY2tiZXJyeS9EZWZlcnJlZERhdGEuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9ibGFj
a2JlcnJ5L05ldHdvcmtKb2IuY3BwCkBAIC05NCw3ICs5NSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogICAgIGVkaXRpbmcvYmxhY2tiZXJyeS9FZGl0b3JCbGFja0JlcnJ5LmNwcAog
ICAgIGVkaXRpbmcvYmxhY2tiZXJyeS9TbWFydFJlcGxhY2VCbGFja0JlcnJ5LmNwcAogICAgIGh0
bWwvc2hhZG93L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNwcAotICAgIGxvYWRlci9ibGFja2Jl
cnJ5L0Nvb2tpZUphckJsYWNrQmVycnkuY3BwCiAgICAgcGFnZS9ibGFja2JlcnJ5L0FjY2Vzc2li
aWxpdHlPYmplY3RCbGFja0JlcnJ5LmNwcAogICAgIHBhZ2UvYmxhY2tiZXJyeS9EcmFnQ29udHJv
bGxlckJsYWNrQmVycnkuY3BwCiAgICAgcGFnZS9ibGFja2JlcnJ5L0V2ZW50SGFuZGxlckJsYWNr
QmVycnkuY3BwCkBAIC0yMDcsNyArMjA3LDYgQEAgaWYgKEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5f
QVBJKQogICAgICAgICBwbHVnaW5zL1BsdWdpblBhY2thZ2UuY3BwCiAgICAgICAgIHBsdWdpbnMv
UGx1Z2luVmlldy5jcHAKICAgICAgICAgcGx1Z2lucy9ibGFja2JlcnJ5L05QQ2FsbGJhY2tzQmxh
Y2tCZXJyeS5jcHAKLSAgICAgICAgcGx1Z2lucy9ibGFja2JlcnJ5L1BsdWdpbkRhdGFCbGFja0Jl
cnJ5LmNwcAogICAgICAgICBwbHVnaW5zL2JsYWNrYmVycnkvUGx1Z2luUGFja2FnZUJsYWNrQmVy
cnkuY3BwCiAgICAgICAgIHBsdWdpbnMvYmxhY2tiZXJyeS9QbHVnaW5WaWV3QmxhY2tCZXJyeS5j
cHAKICAgICAgICAgcGx1Z2lucy9ibGFja2JlcnJ5L1BsdWdpblZpZXdQcml2YXRlQmxhY2tCZXJy
eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggMWRjZGU1MC4uNzMzNGE2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTE1OCw4ICsxNTgsNiBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFu
ZGxlU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cFVSSVV0aWxzLmNwcAog
Ci0gICAgcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAotCiAgICAgcGxhdGZvcm0vcG9z
aXgvRmlsZVN5c3RlbVBPU0lYLmNwcAogICAgIHBsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBP
U0lYLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNFLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DRS5jbWFrZQppbmRleCA4MzAwNDRjLi41YTRi
ZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNFLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ0UuY21ha2UKQEAgLTMzLDcgKzMzLDYgQEAgbGlz
dChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9DdXJzb3IuY3BwCiAgICAg
cGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKLSAgICBwbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCiAgICAgcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcAogCiAgICAgcGxh
dGZvcm0vd2luL0JpdG1hcEluZm8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ29va2llSmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCmlu
ZGV4IDA0ODY5NDAuLmFmNjc3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b29raWVKYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCkBA
IC0zNywxMCArMzcsNiBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2VuZGlm
CiAKLSNpZiBQTEFURk9STShCTEFDS0JFUlJZKQotI2Vycm9yIEJsYWNrYmVycnkgY3VycmVudGx5
IHVzZXMgYSBmb3JrIG9mIHRoaXMgZmlsZSBiZWNhdXNlIG9mIGxheWVyaW5nIHZpb2xhdGlvbnMK
LSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBOZXR3b3JraW5nQ29udGV4
dCogbmV0d29ya2luZ0NvbnRleHQoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2JsYWNrYmVycnkvQ29va2llSmFyQmxhY2tCZXJyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYmxhY2tiZXJyeS9Db29raWVKYXJCbGFja0JlcnJ5
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTY3ZTVjMi4uMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYmxhY2tiZXJyeS9Db29raWVKYXJCbGFja0JlcnJ5LmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
LSAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC
b3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBN
b2JpbGUgSW5jLiBodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8KLSAqIENvcHlyaWdodCAoQykg
UmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC0yMDExLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDb29raWVKYXIuaCIKLQot
I2luY2x1ZGUgIkNvb2tpZS5oIgotI2luY2x1ZGUgIkNvb2tpZU1hbmFnZXIuaCIKLSNpbmNsdWRl
ICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiRnJhbWVMb2FkZXJD
bGllbnRCbGFja0JlcnJ5LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgotI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBhZ2VHcm91cExvYWREZWZl
cnJlci5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEZJWE1FOiBVbmZvcmsuIFRoaXMgZmls
ZSBpcyBmb3JrZWQgYmVjYXVzZSBhbGwgb3RoZXIgcGxhdGZvcm1zIHVzZSBOZXR3b3JraW5nQ29u
dGV4dCB0byBhY2Nlc3MgY29va2llIGphciwgbm90IERvY3VtZW50IG9yIEZyYW1lLgotCi1TdHJp
bmcgY29va2llcyhEb2N1bWVudCBjb25zdCogZG9jdW1lbnQsIEtVUkwgY29uc3QmIHVybCkKLXsK
LSAgICAvLyAnSHR0cE9ubHknIGNvb2tpZXMgc2hvdWxkIG5vIGJlIGFjY2Vzc2libGUgZnJvbSBz
Y3JpcHRzLCBzbyB3ZSBmaWx0ZXIgdGhlbSBvdXQgaGVyZQotICAgIGlmIChjb29raWVzRW5hYmxl
ZChkb2N1bWVudCkpCi0gICAgICAgIHJldHVybiBjb29raWVNYW5hZ2VyKCkuZ2V0Q29va2llKHVy
bCwgTm9IdHRwT25seUNvb2tpZSk7Ci0gICAgcmV0dXJuIFN0cmluZygpOwotCi19Ci0KLXZvaWQg
c2V0Q29va2llcyhEb2N1bWVudCogZG9jdW1lbnQsIEtVUkwgY29uc3QmIHVybCwgU3RyaW5nIGNv
bnN0JiB2YWx1ZSkKLXsKLSAgICBpZiAoY29va2llc0VuYWJsZWQoZG9jdW1lbnQpKQotICAgICAg
ICBjb29raWVNYW5hZ2VyKCkuc2V0Q29va2llcyh1cmwsIHZhbHVlLCBOb0h0dHBPbmx5Q29va2ll
KTsKLX0KLQotYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCi17
Ci0gICAgcmV0dXJuIGRvY3VtZW50ICYmIGRvY3VtZW50LT5zZXR0aW5ncygpICYmIGRvY3VtZW50
LT5zZXR0aW5ncygpLT5jb29raWVFbmFibGVkKCk7Ci19Ci0KLWJvb2wgZ2V0UmF3Q29va2llcyhj
b25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tp
ZXMpCi17Ci0gICAgLy8gTm90ZTogdGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IGluc3BlY3RvciBv
bmx5LiBObyBuZWVkIHRvIGNoZWNrIGlmIGNvb2tpZSBpcyBlbmFibGVkLgotICAgIFZlY3RvcjxS
ZWZQdHI8UGFyc2VkQ29va2llPiA+IHJlc3VsdDsKLSAgICBjb29raWVNYW5hZ2VyKCkuZ2V0UmF3
Q29va2llcyhyZXN1bHQsIHVybCwgV2l0aEh0dHBPbmx5Q29va2llcyk7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCByZXN1bHQuc2l6ZSgpOyBpKyspCi0gICAgICAgIHJlc3VsdFtpXS0+YXBw
ZW5kV2ViQ29yZUNvb2tpZShyYXdDb29raWVzKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9p
ZCBkZWxldGVDb29raWUoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgY29va2llTmFtZSkKLXsKLSAgICAvLyBDb29raWVzIGFyZSBub3QgYm91bmQgdG8gdGhl
IGRvY3VtZW50LiBUaGVyZWZvcmUsIHdlIGRvbid0IG5lZWQgdG8gcGFzcwotICAgIC8vIGluIHRo
ZSBkb2N1bWVudCBvYmplY3QgdG8gZmluZCB0aGUgdGFyZ2V0ZWQgY29va2llcyBpbiBjb29raWUg
bWFuYWdlci4KLSAgICAvLyBOb3RlOiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgYnkgaW5zcGVjdG9y
IG9ubHkuIE5vIG5lZWQgdG8gY2hlY2sgaWYgY29va2llIGlzIGVuYWJsZWQuCi0gICAgY29va2ll
TWFuYWdlcigpLnJlbW92ZUNvb2tpZVdpdGhOYW1lKHVybCwgY29va2llTmFtZSk7Ci19Ci0KLVN0
cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IEtVUkwgJnVybCkKLXsKLSAgICBpZiAoY29va2llc0VuYWJsZWQoZG9jdW1lbnQp
KQotICAgICAgICByZXR1cm4gY29va2llTWFuYWdlcigpLmdldENvb2tpZSh1cmwsIFdpdGhIdHRw
T25seUNvb2tpZXMpOwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFj
a2JlcnJ5L0Nvb2tpZUphckJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9ibGFja2JlcnJ5L0Nvb2tpZUphckJsYWNrQmVycnkuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MWMwZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQ29va2llSmFyQmxhY2tCZXJyeS5j
cHAKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBSZXNlYXJjaCBJ
biBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db29raWVKYXIuaCIK
KworI2luY2x1ZGUgIkNvb2tpZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBjb29raWVNYW5hZ2VyKCku
c2V0Q29va2llcyh1cmwsIHZhbHVlLCBOb0h0dHBPbmx5Q29va2llKTsKK30KKworU3RyaW5nIGNv
b2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgLypm
aXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICAvLyAnSHR0cE9ubHknIGNvb2tp
ZXMgc2hvdWxkIG5vIGJlIGFjY2Vzc2libGUgZnJvbSBzY3JpcHRzLCBzbyB3ZSBmaWx0ZXIgdGhl
bSBvdXQgaGVyZS4KKyAgICByZXR1cm4gY29va2llTWFuYWdlcigpLmdldENvb2tpZSh1cmwsIE5v
SHR0cE9ubHlDb29raWUpOworfQorCitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5
Ki8sIGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICByZXR1cm4gY29va2llTWFuYWdlcigpLmdldENv
b2tpZSh1cmwsIFdpdGhIdHRwT25seUNvb2tpZXMpOworfQorCitib29sIGNvb2tpZXNFbmFibGVk
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSov
LCBjb25zdCBLVVJMJiAvKnVybCovKQoreworICAgIHJldHVybiAhY29va2llTWFuYWdlcigpLmNv
b2tpZUphcigpLmlzRW1wdHkoKTsKK30KKworYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJM
JiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQoreworICAgIFZlY3RvcjxSZWZQdHI8
UGFyc2VkQ29va2llPiA+IHJlc3VsdDsKKyAgICBjb29raWVNYW5hZ2VyKCkuZ2V0UmF3Q29va2ll
cyhyZXN1bHQsIHVybCwgV2l0aEh0dHBPbmx5Q29va2llcyk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCByZXN1bHQuc2l6ZSgpOyBpKyspCisgICAgICAgIHJlc3VsdFtpXS0+YXBwZW5kV2Vi
Q29yZUNvb2tpZShyYXdDb29raWVzKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBkZWxl
dGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgY29va2llTWFuYWdlcigpLnJlbW92ZUNvb2tpZVdp
dGhOYW1lKHVybCwgbmFtZSk7Cit9CisKK3ZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxTdHJpbmc+JiAvKmhvc3RuYW1lcyov
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgZGVsZXRlQ29va2llc0Zvckhv
c3RuYW1lKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYgLypob3N0
bmFtZSovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgZGVsZXRlQWxsQ29v
a2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvYmxhY2tiZXJy
eS9QbHVnaW5EYXRhQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2JsYWNr
YmVycnkvUGx1Z2luRGF0YUJsYWNrQmVycnkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA0NzQ2NjE2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvYmxhY2ti
ZXJyeS9QbHVnaW5EYXRhQmxhY2tCZXJyeS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVk
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAq
IExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy
ZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCi0KLSNpbmNsdWRlICJQbHVnaW5EYXRh
YmFzZS5oIgotI2luY2x1ZGUgIlBsdWdpblBhY2thZ2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi12b2lkIFBsdWdpbkRhdGE6OmluaXRQbHVnaW5zKGNvbnN0IFBhZ2UqKQotewotICAgIFBs
dWdpbkRhdGFiYXNlKiBkYiA9IFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKCk7Ci0g
ICAgY29uc3QgVmVjdG9yPFBsdWdpblBhY2thZ2UqPiYgcGx1Z2lucyA9IGRiLT5wbHVnaW5zKCk7
Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGx1Z2lucy5zaXplKCk7ICsraSkgewot
ICAgICAgICBQbHVnaW5QYWNrYWdlKiBwYWNrYWdlID0gcGx1Z2luc1tpXTsKLQotICAgICAgICBQ
bHVnaW5JbmZvIGluZm87Ci0gICAgICAgIGluZm8ubmFtZSA9IHBhY2thZ2UtPm5hbWUoKTsKLSAg
ICAgICAgaW5mby5maWxlID0gcGFja2FnZS0+ZmlsZU5hbWUoKTsKLSAgICAgICAgaW5mby5kZXNj
ID0gcGFja2FnZS0+ZGVzY3JpcHRpb24oKTsKLQotICAgICAgICBjb25zdCBNSU1FVG9EZXNjcmlw
dGlvbnNNYXAmIG1pbWVUb0Rlc2NyaXB0aW9ucyA9IHBhY2thZ2UtPm1pbWVUb0Rlc2NyaXB0aW9u
cygpOwotICAgICAgICBNSU1FVG9EZXNjcmlwdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IG1pbWVUb0Rlc2NyaXB0aW9ucy5lbmQoKTsKLSAgICAgICAgZm9yIChNSU1FVG9EZXNjcmlwdGlv
bnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWltZVRvRGVzY3JpcHRpb25zLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgTWltZUNsYXNzSW5mbyBtaW1lOwotICAgICAg
ICAgICAgbWltZS50eXBlID0gaXQtPmtleTsKLSAgICAgICAgICAgIG1pbWUuZGVzYyA9IGl0LT52
YWx1ZTsKLSAgICAgICAgICAgIG1pbWUuZXh0ZW5zaW9ucyA9IHBhY2thZ2UtPm1pbWVUb0V4dGVu
c2lvbnMoKS5nZXQobWltZS50eXBlKTsKLSAgICAgICAgICAgIGluZm8ubWltZXMuYXBwZW5kKG1p
bWUpOwotICAgICAgICB9Ci0gICAgICAgIG1fcGx1Z2lucy5hcHBlbmQoaW5mbyk7Ci0gICAgfQot
fQotCi12b2lkIFBsdWdpbkRhdGE6OnJlZnJlc2goKQotewotICAgIFBsdWdpbkRhdGFiYXNlKiBk
YiA9IFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKCk7Ci0gICAgZGItPnJlZnJlc2go
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtQmxhY2tC
ZXJyeS5jbWFrZQppbmRleCA4ODQwMDQxLi5iMjk1MjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
QmxhY2tCZXJyeS5jbWFrZQpAQCAtMTAyLDYgKzEwMiw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9T
T1VSQ0VTCiAgICAgYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrSW5mb0NsaWVudEJs
YWNrQmVycnkuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25D
bGllbnRCbGFja0JlcnJ5LmNwcAogICAgIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGFnZVBv
cHVwQmxhY2tCZXJyeS5jcHAKKyAgICBibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3Jt
U3RyYXRlZ2llc0JsYWNrQmVycnkuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9O
YXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnRCbGFja0JlcnJ5LmNwcAogICAgIGJsYWNrYmVycnkv
V2ViQ29yZVN1cHBvcnQvU2VsZWN0UG9wdXBDbGllbnQuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJD
b3JlU3VwcG9ydC9TdWdnZXN0aW9uQm94SGFuZGxlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmxhY2tCZXJyeUdsb2JhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL0JsYWNrQmVycnlHbG9iYWwuY3BwCmluZGV4IGM5NTQyYWQuLmE3ZmVm
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmxhY2tCZXJyeUds
b2JhbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CbGFja0JlcnJ5R2xv
YmFsLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtTdGF0ZU5vdGlmaWVy
LmgiCiAjaW5jbHVkZSAiUGFnZUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeS5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCiAjaW5jbHVkZSAiVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQuaCIKICNpbmNsdWRl
ICJiaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuaCIKQEAgLTc0LDYgKzc1LDkgQEAgdm9pZCBnbG9i
YWxJbml0aWFsaXplKCkKICAgICAvLyB3ZSdyZSBncmFiYmluZyBjYWxsT25NYWluVGhyZWFkIHdp
dGhvdXQgdXNpbmcgdGhlIHJlc3Qgb2YgdGhlIHRocmVhZGluZyBzdXBwb3J0LgogICAgIFdURjo6
aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKIAorICAgIC8vIEluaXRpYWxpemUgb3VyIHBsYXRmb3Jt
IHN0cmF0ZWdpZXMuCisgICAgUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6aW5pdGlhbGl6
ZSgpOworCiAgICAgLy8gU2V0IHRoZSBtaW5pbWFsIHRpbWVyIGludGVydmFsIHRvIDQgbWlsbGlz
ZWNvbmRzLgogICAgIFdlYkNvcmU6OlNldHRpbmdzOjpzZXREZWZhdWx0TWluRE9NVGltZXJJbnRl
cnZhbCgwLjAwNCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJD
b3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2ZlZjYwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BsYXRm
b3JtU3RyYXRlZ2llc0JsYWNrQmVycnkuY3BwCkBAIC0wLDAgKzEsMTYyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAq
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv
biwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5LmgiCisKKyNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdlR3JvdXAuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybUNvb2tpZUphci5oIgorI2luY2x1ZGUgIlBsdWdpbkRhdGFiYXNlLmgi
CisjaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
Kwordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5Ojppbml0aWFsaXplKCkKK3sKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnksIHBsYXRm
b3JtU3RyYXRlZ2llcywgKCkpOworICAgIHNldFBsYXRmb3JtU3RyYXRlZ2llcygmcGxhdGZvcm1T
dHJhdGVnaWVzKTsKK30KKworUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6UGxhdGZvcm1T
dHJhdGVnaWVzQmxhY2tCZXJyeSgpCit7Cit9CisKK0Nvb2tpZXNTdHJhdGVneSogUGxhdGZvcm1T
dHJhdGVnaWVzQmxhY2tCZXJyeTo6Y3JlYXRlQ29va2llc1N0cmF0ZWd5KCkKK3sKKyAgICByZXR1
cm4gdGhpczsKK30KKworRGF0YWJhc2VTdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tC
ZXJyeTo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpCit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisK
K0xvYWRlclN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5OjpjcmVhdGVMb2Fk
ZXJTdHJhdGVneSgpCit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisKK1Bhc3RlYm9hcmRTdHJhdGVn
eSogUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6Y3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5
KCkKK3sKKyAgICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VkIG9ubHkgYnkgTWFjLgorICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK1BsdWdpblN0cmF0ZWd5KiBQbGF0
Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5OjpjcmVhdGVQbHVnaW5TdHJhdGVneSgpCit7CisgICAg
cmV0dXJuIHRoaXM7Cit9CisKK1NoYXJlZFdvcmtlclN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdp
ZXNCbGFja0JlcnJ5OjpjcmVhdGVTaGFyZWRXb3JrZXJTdHJhdGVneSgpCit7CisgICAgcmV0dXJu
IHRoaXM7Cit9CisKK1N0b3JhZ2VTdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJy
eTo6Y3JlYXRlU3RvcmFnZVN0cmF0ZWd5KCkKK3sKKyAgICByZXR1cm4gdGhpczsKK30KKworVmlz
aXRlZExpbmtTdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6Y3JlYXRlVmlz
aXRlZExpbmtTdHJhdGVneSgpCit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisKKy8vIENvb2tpZXNT
dHJhdGVneQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmNvb2tpZXNGb3JE
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNG
b3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKK30KKwordm9pZCBQbGF0Zm9ybVN0cmF0
ZWdpZXNCbGFja0JlcnJ5OjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit7CisgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zy
b21ET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOworfQorCitib29s
IFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsKQoreworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzZXNzaW9u
LCBmaXJzdFBhcnR5LCB1cmwpOworfQorCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tC
ZXJyeTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwp
Cit7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNl
c3Npb24sIGZpcnN0UGFydHksIHVybCk7Cit9CisKK2Jvb2wgUGxhdGZvcm1TdHJhdGVnaWVzQmxh
Y2tCZXJyeTo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tp
ZT4mIHJhd0Nvb2tpZXMpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vz
c2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKK30KKwordm9pZCBQbGF0Zm9ybVN0
cmF0ZWdpZXNCbGFja0JlcnJ5OjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkK
K3sKKyAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsK
K30KKworLy8gUGx1Z2luU3RyYXRlZ3kKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJy
eTo6cmVmcmVzaFBsdWdpbnMoKQoreworI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQor
ICAgIFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKCktPnJlZnJlc2goKTsKKyNlbmRp
ZgorfQorCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmdldFBsdWdpbkluZm8o
Y29uc3QgUGFnZSosIFZlY3RvcjxQbHVnaW5JbmZvPiYgb3V0UGx1Z2lucykKK3sKKyNpZiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKyAgICBQbHVnaW5EYXRhYmFzZSogZGF0YWJhc2UgPSBQ
bHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucygpOworICAgIGNvbnN0IFZlY3RvcjxQbHVn
aW5QYWNrYWdlKj4gJnBsdWdpbnMgPSBkYXRhYmFzZS0+cGx1Z2lucygpOworCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBwbHVnaW5zLnNpemUoKTsgKytpKSB7CisgICAgICAgIFBsdWdpblBh
Y2thZ2UqIHBhY2thZ2UgPSBwbHVnaW5zW2ldOworCisgICAgICAgIFBsdWdpbkluZm8gcGx1Z2lu
SW5mbzsKKyAgICAgICAgcGx1Z2luSW5mby5uYW1lID0gcGFja2FnZS0+bmFtZSgpOworICAgICAg
ICBwbHVnaW5JbmZvLmZpbGUgPSBwYWNrYWdlLT5maWxlTmFtZSgpOworICAgICAgICBwbHVnaW5J
bmZvLmRlc2MgPSBwYWNrYWdlLT5kZXNjcmlwdGlvbigpOworCisgICAgICAgIGNvbnN0IE1JTUVU
b0Rlc2NyaXB0aW9uc01hcCYgbWltZVRvRGVzY3JpcHRpb25zID0gcGFja2FnZS0+bWltZVRvRGVz
Y3JpcHRpb25zKCk7CisgICAgICAgIE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gbWltZVRvRGVzY3JpcHRpb25zLmVuZCgpOworICAgICAgICBmb3IgKE1JTUVUb0Rl
c2NyaXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtaW1lVG9EZXNjcmlwdGlvbnMuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBNaW1lQ2xhc3NJbmZvIG1pbWU7
CisgICAgICAgICAgICBtaW1lLnR5cGUgPSBpdC0+a2V5OworICAgICAgICAgICAgbWltZS5kZXNj
ID0gaXQtPnZhbHVlOworICAgICAgICAgICAgbWltZS5leHRlbnNpb25zID0gcGFja2FnZS0+bWlt
ZVRvRXh0ZW5zaW9ucygpLmdldChtaW1lLnR5cGUpOworICAgICAgICAgICAgcGx1Z2luSW5mby5t
aW1lcy5hcHBlbmQobWltZSk7CisgICAgICAgIH0KKworICAgICAgICBvdXRQbHVnaW5zLmFwcGVu
ZChwbHVnaW5JbmZvKTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShvdXRQbHVnaW5z
KTsKKyNlbmRpZgorfQorCisvLyBWaXNpdGVkTGlua1N0cmF0ZWd5Citib29sIFBsYXRmb3JtU3Ry
YXRlZ2llc0JsYWNrQmVycnk6OmlzTGlua1Zpc2l0ZWQoUGFnZSogcGFnZSwgTGlua0hhc2ggaGFz
aCwgY29uc3QgS1VSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYpCit7CisgICAgcmV0dXJuIHBhZ2Ut
Pmdyb3VwKCkuaXNMaW5rVmlzaXRlZChoYXNoKTsKK30KKwordm9pZCBQbGF0Zm9ybVN0cmF0ZWdp
ZXNCbGFja0JlcnJ5OjphZGRWaXNpdGVkTGluayhQYWdlKiBwYWdlLCBMaW5rSGFzaCBoYXNoKQor
eworICAgIHBhZ2UtPmdyb3VwKCkuYWRkVmlzaXRlZExpbmtIYXNoKGhhc2gpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc0JsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYzUxNTY0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5LmgK
QEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBSZXNlYXJjaCBJbiBN
b3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLwor
CisjaWZuZGVmIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnlfaAorI2RlZmluZSBQbGF0Zm9y
bVN0cmF0ZWdpZXNCbGFja0JlcnJ5X2gKKworI2luY2x1ZGUgIkNvb2tpZXNTdHJhdGVneS5oIgor
I2luY2x1ZGUgIkRhdGFiYXNlU3RyYXRlZ3kuaCIKKyNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5o
IgorI2luY2x1ZGUgIlBhc3RlYm9hcmRTdHJhdGVneS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
YXRlZ2llcy5oIgorI2luY2x1ZGUgIlBsdWdpblN0cmF0ZWd5LmgiCisjaW5jbHVkZSAiU2hhcmVk
V29ya2VyU3RyYXRlZ3kuaCIKKyNpbmNsdWRlICJTdG9yYWdlU3RyYXRlZ3kuaCIKKyNpbmNsdWRl
ICJWaXNpdGVkTGlua1N0cmF0ZWd5LmgiCisKK2NsYXNzIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNr
QmVycnkgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNv
cmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5LCBw
cml2YXRlIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0
cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRlIFdl
YkNvcmU6OlN0b3JhZ2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0
ZWd5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CisKK3ByaXZhdGU6
CisgICAgUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeSgpOworCisgICAgLy8gV2ViQ29yZTo6
UGxhdGZvcm1TdHJhdGVnaWVzCisgICAgdmlydHVhbCBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kq
IGNyZWF0ZUNvb2tpZXNTdHJhdGVneSgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6RGF0YWJhc2VT
dHJhdGVneSogY3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6
TG9hZGVyU3RyYXRlZ3kqIGNyZWF0ZUxvYWRlclN0cmF0ZWd5KCk7CisgICAgdmlydHVhbCBXZWJD
b3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kqIGNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSgpOworICAg
IHZpcnR1YWwgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kqIGNyZWF0ZVBsdWdpblN0cmF0ZWd5KCk7
CisgICAgdmlydHVhbCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSogY3JlYXRlU2hhcmVk
V29ya2VyU3RyYXRlZ3koKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0b3JhZ2VTdHJhdGVneSog
Y3JlYXRlU3RvcmFnZVN0cmF0ZWd5KCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpWaXNpdGVkTGlu
a1N0cmF0ZWd5KiBjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCk7CisKKyAgICAvLyBXZWJDb3Jl
OjpDb29raWVzU3RyYXRlZ3kKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29v
a2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0
cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAg
IHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxl
dGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworCisgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VT
dHJhdGVneQorICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKworICAgIC8v
IFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5CisgICAgdmlydHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5z
KCk7CisgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSos
IFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOworCisgICAgLy8gV2ViQ29yZTo6VmlzaXRl
ZExpbmtTdHJhdGVneQorICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBh
Z2UqLCBXZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29u
c3QgV1RGOjpBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCk7CisgICAgdmlydHVhbCB2b2lkIGFk
ZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCk7Cit9OworCisj
ZW5kaWYgLy8gUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeV9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>