<?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>113617</bug_id>
          
          <creation_ts>2013-03-29 16:01:39 -0700</creation_ts>
          <short_desc>Move Region into its own header</short_desc>
          <delta_ts>2013-03-30 12:00:12 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>866447</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-29 16:01:39 -0700</bug_when>
    <thetext>BlockAllocator.h is getting a little overloaded. We should move the Region class into its own header, since it&apos;s pretty independent from the BlockAllocator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866453</commentid>
    <comment_count>1</comment_count>
      <attachid>195813</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-29 16:07:40 -0700</bug_when>
    <thetext>Created attachment 195813
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866466</commentid>
    <comment_count>2</comment_count>
      <attachid>195813</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-29 16:19:00 -0700</bug_when>
    <thetext>Comment on attachment 195813
Patch

Attachment 195813 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17311740</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866480</commentid>
    <comment_count>3</comment_count>
      <attachid>195818</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-29 16:35:03 -0700</bug_when>
    <thetext>Created attachment 195818
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866481</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-29 16:38:14 -0700</bug_when>
    <thetext>Attachment 195818 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.gypi&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/heap/BlockAllocator.h&apos;, u&apos;Source/JavaScriptCore/heap/Region.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/heap/Region.h:26:  #ifndef header guard has wrong style, please use: Region_h  [build/header_guard] [5]
Total errors found: 1 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866482</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-29 16:39:25 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Attachment 195818 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.gypi&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/heap/BlockAllocator.h&apos;, u&apos;Source/JavaScriptCore/heap/Region.h&apos;]&quot; exit_code: 1
&gt; Source/JavaScriptCore/heap/Region.h:26:  #ifndef header guard has wrong style, please use: Region_h  [build/header_guard] [5]
&gt; Total errors found: 1 in 9 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

I had to do this because Region_h is used by another header in WebCore, and whichever one gets included first in a translation unit wins, causing build errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866486</commentid>
    <comment_count>6</comment_count>
      <attachid>195818</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-03-29 16:51:08 -0700</bug_when>
    <thetext>Comment on attachment 195818
Patch

r=me, please change to &quot;Region_h&quot;, unless there&apos;s some conflict with that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866489</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-29 16:54:47 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 195818 [details])
&gt; r=me, please change to &quot;Region_h&quot;, unless there&apos;s some conflict with that.

Yeah, there&apos;s a conflict with a header in WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866657</commentid>
    <comment_count>8</comment_count>
      <attachid>195818</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-30 12:00:09 -0700</bug_when>
    <thetext>Comment on attachment 195818
Patch

Clearing flags on attachment: 195818

Committed r147282: &lt;http://trac.webkit.org/changeset/147282&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866658</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-30 12:00:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195813</attachid>
            <date>2013-03-29 16:07:40 -0700</date>
            <delta_ts>2013-03-29 16:35:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113617-20130329160736.patch</filename>
            <type>text/plain</type>
            <size>17355</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ3MjU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDEzLTAzLTI5ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgTW92ZSBSZWdpb24gaW50byBpdHMgb3duIGhlYWRlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNjE3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmxvY2tBbGxvY2F0b3IuaCBpcyBnZXR0
aW5nIGEgbGl0dGxlIGNyb3dkZWQuIFdlIHNob3VsZCBtb3ZlIHRoZSBSZWdpb24gY2xhc3MgaW50
byBpdHMgb3duIAorICAgICAgICBoZWFkZXIsIHNpbmNlIGl0J3MgcHJldHR5IGluZGVwZW5kZW50
IGZyb20gdGhlIEJsb2NrQWxsb2NhdG9yLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXBpOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogaGVhcC9CbG9ja0FsbG9jYXRvci5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAg
KiBoZWFwL1JlZ2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChEZWFkQmxv
Y2spOgorICAgICAgICAoSlNDOjpEZWFkQmxvY2s6OkRlYWRCbG9jayk6CisgICAgICAgIChSZWdp
b24pOgorICAgICAgICAoSlNDOjpSZWdpb246OmJsb2NrU2l6ZSk6CisgICAgICAgIChKU0M6OlJl
Z2lvbjo6aXNGdWxsKToKKyAgICAgICAgKEpTQzo6UmVnaW9uOjppc0VtcHR5KToKKyAgICAgICAg
KEpTQzo6UmVnaW9uOjppc0N1c3RvbVNpemUpOgorICAgICAgICAoSlNDOjpSZWdpb246OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OlJlZ2lvbjo6Y3JlYXRlQ3VzdG9tU2l6ZSk6CisgICAgICAgIChK
U0M6OlJlZ2lvbjo6UmVnaW9uKToKKyAgICAgICAgKEpTQzo6UmVnaW9uOjp+UmVnaW9uKToKKyAg
ICAgICAgKEpTQzo6UmVnaW9uOjpyZXNldCk6CisgICAgICAgIChKU0M6OlJlZ2lvbjo6YWxsb2Nh
dGUpOgorICAgICAgICAoSlNDOjpSZWdpb246OmRlYWxsb2NhdGUpOgorCiAyMDEzLTAzLTI5ICBN
YXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgT2JqZWN0
aXZlLUMgQVBJOiBSZW1vdmUgLVtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6
b3duZXI6XQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0J
KHJldmlzaW9uIDE0NzI1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zNTYsNiArMzU2LDcgQEAgamF2YXNjcmlwdGNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9QYXNzV2Vhay5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9SZWdpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Ryb25nLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0cm9uZ0lubGluZXMuaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvVW5jb25kaXRpb25hbEZpbmFsaXplci5oIFwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCShyZXZpc2lvbiAxNDcyNTQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQkod29ya2luZyBjb3B5
KQpAQCAtMzkzLDYgKzM5Myw3IEBACiAgICAgICAgICAgICAnaGVhcC9NYXJrU3RhY2suaCcsCiAg
ICAgICAgICAgICAnaGVhcC9NYXJrU3RhY2tJbmxpbmVzLmgnLAogICAgICAgICAgICAgJ2hlYXAv
UGFzc1dlYWsuaCcsCisgICAgICAgICAgICAnaGVhcC9SZWdpb24uaCcsCiAgICAgICAgICAgICAn
aGVhcC9TbG90VmlzaXRvci5jcHAnLAogICAgICAgICAgICAgJ2hlYXAvU2xvdFZpc2l0b3IuaCcs
CiAgICAgICAgICAgICAnaGVhcC9TbG90VmlzaXRvcklubGluZXMuaCcsCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagko
cmV2aXNpb24gMTQ3MjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTI3NzgsNiArMjc3OCwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXFJlZ2lvbi5oIgorCQkJCT4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXFNsb3RWaXNpdG9yLmNwcCIK
IAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2oJKHJldmlzaW9uIDE0NzI1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTUzMCw2ICs1MzAsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxNYXJrU3Rh
Y2suaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXE1hcmtTdGFja0lubGlu
ZXMuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXFBhc3NXZWFrLmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxSZWdpb24uaCIgLz4NCiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXFNsb3RWaXNpdG9yLmgiIC8+DQogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caGVhcFxTbG90VmlzaXRvcklubGluZXMuaCIgLz4NCiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxoZWFwXFN0cm9uZy5oIiAvPg0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmls
dGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE0NzI1NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMTEzOSw2ICsxMTM5LDkg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcUGFzc1dlYWsuaCI+DQogICAgICAg
PEZpbHRlcj5oZWFwPC9GaWx0ZXI+DQogICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGhlYXBcUmVnaW9uLmgiPg0KKyAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVy
Pg0KKyAgICA8L0NsSW5jbHVkZT4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXFNs
b3RWaXNpdG9yLmgiPg0KICAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPg0KICAgICA8L0NsSW5j
bHVkZT4NCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTQ3MjU0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTgxNyw2ICs4MTcsNyBAQAogCQlCQ0Y2MDUx
NDBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNGNjA1MTIwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3Qu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0ZE
OEM5MjBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkQ4QzkwMEVFQjJFRTcwMDI4Mzg0OCAvKiBK
dW1wVGFibGUuY3BwICovOyB9OwogCQlCQ0ZEOEM5MzBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRh
YmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0ZE
OEM5MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzIwQjI1OTkxNzA2NTM2MjAwQzIxRjRFIC8q
IFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzIwQjI1OTgxNzA2NTM2MjAwQzIxRjRFIC8qIFJlZ2lvbi5oICovOyB9OwogCQlDMjBCQTkyRDE2
QkIxQzE1MDBCM0FFQTIgLyogU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjBCQTkyQzE2QkIxQzE1MDBCM0FF
QTIgLyogU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzIxMTIyRTExNUREOUFCMzAwNzkwRTNBIC8qIEdD
VGhyZWFkU2hhcmVkRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMjExMjJERTE1REQ5QUIzMDA3OTBFM0EgLyogR0NUaHJlYWRTaGFyZWREYXRh
LmNwcCAqLzsgfTsKIAkJQzIxMTIyRTIxNUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVk
RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzIx
MTIyREYxNUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNzIzLDYgKzE3MjQsNyBA
QAogCQlCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBcmdMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDRkQ4QzkwMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSnVtcFRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkNGRDhDOTEwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKdW1wVGFibGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQzIwQjI1OTgxNzA2NTM2MjAwQzIxRjRFIC8qIFJlZ2lvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzIwQkE5MkMxNkJCMUMxNTAwQjNBRUEyIC8qIFN0cnVjdHVyZVJhcmVE
YXRhSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVS
YXJlRGF0YUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIxMTIyREUx
NUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHQ1RocmVhZFNoYXJlZERhdGEuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMjExMjJERjE1REQ5QUIzMDA3OTBFM0EgLyogR0NUaHJlYWRT
aGFyZWREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdDVGhyZWFkU2hh
cmVkRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE2Myw2ICsyMTY1LDcg
QEAKIAkJCQkwRkM4MTUwOTE0MDQzQkQyMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5o
ICovLAogCQkJCUMyODMxOEZGMTZGRTRCN0QwMDE1N0JGRCAvKiBIYW5kbGVCbG9jay5oICovLAog
CQkJCUMyODMxOTAxMTZGRTUzM0UwMDE1N0JGRCAvKiBIYW5kbGVCbG9ja0lubGluZXMuaCAqLywK
KwkJCQlDMjBCMjU5ODE3MDY1MzYyMDBDMjFGNEUgLyogUmVnaW9uLmggKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IGhlYXA7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzIxMCw2ICszMjEz
LDcgQEAKIAkJCQlCQ0ZEOEM5MzBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNzJGRkQ2NDEzOTk4NUE4MDBFNTM2NUEgLyogS2V5d29yZExvb2t1cC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3MkEwRUQxQ0U2OTAwRjFGNjgxIC8qIExhYmVsLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlDMjBCMjU5OTE3MDY1MzYyMDBDMjFGNEUgLyogUmVnaW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5NjAwOTdBNjBFQkFCQjU4MDA3QTcyOTcgLyogTGFiZWxTY29w
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCNTQ2NzcxNEY1OUI1QzAwMkMyOTg5IC8qIExhenlP
cGVyYW5kVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1MjBFMTZGNUNE
MDBCMzQ0NjAgLyogTGVnYWN5UHJvZmlsZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0FsbG9jYXRvci5oCShyZXZpc2lvbiAxNDcyNTQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0FsbG9jYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEJsb2NrQWxsb2NhdG9yX2gKIAogI2lu
Y2x1ZGUgIkhlYXBCbG9jay5oIgorI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9E
b3VibHlMaW5rZWRMaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvUGFnZUFsbG9jYXRpb25BbGlnbmVkLmg+CkBAIC00NywxMTMgKzQ4LDYgQEAgY2xhc3MgV2Vh
a0Jsb2NrOwogLy8gU2ltcGxlIGFsbG9jYXRvciB0byByZWR1Y2UgVk0gY29zdCBieSBob2xkaW5n
IG9udG8gYmxvY2tzIG9mIG1lbW9yeSBmb3IKIC8vIHNob3J0IHBlcmlvZHMgb2YgdGltZSBhbmQg
dGhlbiBmcmVlaW5nIHRoZW0gb24gYSBzZWNvbmRhcnkgdGhyZWFkLgogCi1jbGFzcyBEZWFkQmxv
Y2sgOiBwdWJsaWMgSGVhcEJsb2NrPERlYWRCbG9jaz4gewotcHVibGljOgotICAgIERlYWRCbG9j
ayhSZWdpb24qKTsKLX07Ci0KLWlubGluZSBEZWFkQmxvY2s6OkRlYWRCbG9jayhSZWdpb24qIHJl
Z2lvbikKLSAgICA6IEhlYXBCbG9jazxEZWFkQmxvY2s+KHJlZ2lvbikKLXsKLX0KLQotY2xhc3Mg
UmVnaW9uIDogcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFJlZ2lvbj4gewotICAgIGZyaWVu
ZCBDTEFTU19JRl9HQ0MgRG91Ymx5TGlua2VkTGlzdE5vZGU8UmVnaW9uPjsKLSAgICBmcmllbmQg
Y2xhc3MgQmxvY2tBbGxvY2F0b3I7Ci1wdWJsaWM6Ci0gICAgflJlZ2lvbigpOwotICAgIHN0YXRp
YyBSZWdpb24qIGNyZWF0ZShzaXplX3QgYmxvY2tTaXplKTsKLSAgICBzdGF0aWMgUmVnaW9uKiBj
cmVhdGVDdXN0b21TaXplKHNpemVfdCBibG9ja1NpemUsIHNpemVfdCBibG9ja0FsaWdubWVudCk7
Ci0gICAgUmVnaW9uKiByZXNldChzaXplX3QgYmxvY2tTaXplKTsKLQotICAgIHNpemVfdCBibG9j
a1NpemUoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrU2l6ZTsgfQotICAgIGJvb2wgaXNGdWxsKCkg
Y29uc3QgeyByZXR1cm4gbV9ibG9ja3NJblVzZSA9PSBtX3RvdGFsQmxvY2tzOyB9Ci0gICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fYmxvY2tzSW5Vc2U7IH0KLSAgICBib29sIGlz
Q3VzdG9tU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNDdXN0b21TaXplOyB9Ci0KLSAgICBEZWFk
QmxvY2sqIGFsbG9jYXRlKCk7Ci0gICAgdm9pZCBkZWFsbG9jYXRlKHZvaWQqKTsKLQotICAgIHN0
YXRpYyBjb25zdCBzaXplX3Qgc19yZWdpb25TaXplID0gNjQgKiBLQjsKLQotcHJpdmF0ZToKLSAg
ICBSZWdpb24oUGFnZUFsbG9jYXRpb25BbGlnbmVkJiwgc2l6ZV90IGJsb2NrU2l6ZSwgc2l6ZV90
IHRvdGFsQmxvY2tzKTsKLQotICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCBtX2FsbG9jYXRpb247
Ci0gICAgc2l6ZV90IG1fdG90YWxCbG9ja3M7Ci0gICAgc2l6ZV90IG1fYmxvY2tzSW5Vc2U7Ci0g
ICAgc2l6ZV90IG1fYmxvY2tTaXplOwotICAgIGJvb2wgbV9pc0N1c3RvbVNpemU7Ci0gICAgUmVn
aW9uKiBtX3ByZXY7Ci0gICAgUmVnaW9uKiBtX25leHQ7Ci0gICAgRG91Ymx5TGlua2VkTGlzdDxE
ZWFkQmxvY2s+IG1fZGVhZEJsb2NrczsKLX07Ci0KLWlubGluZSBSZWdpb24qIFJlZ2lvbjo6Y3Jl
YXRlKHNpemVfdCBibG9ja1NpemUpCi17Ci0gICAgQVNTRVJUKGJsb2NrU2l6ZSA8PSBzX3JlZ2lv
blNpemUpOwotICAgIEFTU0VSVCghKHNfcmVnaW9uU2l6ZSAlIGJsb2NrU2l6ZSkpOwotICAgIFBh
Z2VBbGxvY2F0aW9uQWxpZ25lZCBhbGxvY2F0aW9uID0gUGFnZUFsbG9jYXRpb25BbGlnbmVkOjph
bGxvY2F0ZShzX3JlZ2lvblNpemUsIHNfcmVnaW9uU2l6ZSwgT1NBbGxvY2F0b3I6OkpTR0NIZWFw
UGFnZXMpOwotICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PGJvb2w+KGFsbG9jYXRpb24p
KTsKLSAgICByZXR1cm4gbmV3IFJlZ2lvbihhbGxvY2F0aW9uLCBibG9ja1NpemUsIHNfcmVnaW9u
U2l6ZSAvIGJsb2NrU2l6ZSk7Ci19Ci0KLWlubGluZSBSZWdpb24qIFJlZ2lvbjo6Y3JlYXRlQ3Vz
dG9tU2l6ZShzaXplX3QgYmxvY2tTaXplLCBzaXplX3QgYmxvY2tBbGlnbm1lbnQpCi17Ci0gICAg
UGFnZUFsbG9jYXRpb25BbGlnbmVkIGFsbG9jYXRpb24gPSBQYWdlQWxsb2NhdGlvbkFsaWduZWQ6
OmFsbG9jYXRlKGJsb2NrU2l6ZSwgYmxvY2tBbGlnbm1lbnQsIE9TQWxsb2NhdG9yOjpKU0dDSGVh
cFBhZ2VzKTsKLSAgICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2FzdDxib29sPihhbGxvY2F0aW9u
KSk7Ci0gICAgUmVnaW9uKiByZWdpb24gPSBuZXcgUmVnaW9uKGFsbG9jYXRpb24sIGJsb2NrU2l6
ZSwgMSk7Ci0gICAgcmVnaW9uLT5tX2lzQ3VzdG9tU2l6ZSA9IHRydWU7Ci0gICAgcmV0dXJuIHJl
Z2lvbjsKLX0KLQotaW5saW5lIFJlZ2lvbjo6UmVnaW9uKFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYg
YWxsb2NhdGlvbiwgc2l6ZV90IGJsb2NrU2l6ZSwgc2l6ZV90IHRvdGFsQmxvY2tzKQotICAgIDog
RG91Ymx5TGlua2VkTGlzdE5vZGU8UmVnaW9uPigpCi0gICAgLCBtX2FsbG9jYXRpb24oYWxsb2Nh
dGlvbikKLSAgICAsIG1fdG90YWxCbG9ja3ModG90YWxCbG9ja3MpCi0gICAgLCBtX2Jsb2Nrc0lu
VXNlKDApCi0gICAgLCBtX2Jsb2NrU2l6ZShibG9ja1NpemUpCi0gICAgLCBtX2lzQ3VzdG9tU2l6
ZShmYWxzZSkKLSAgICAsIG1fcHJldigwKQotICAgICwgbV9uZXh0KDApCi17Ci0gICAgQVNTRVJU
KGFsbG9jYXRpb24pOwotICAgIGNoYXIqIHN0YXJ0ID0gc3RhdGljX2Nhc3Q8Y2hhcio+KG1fYWxs
b2NhdGlvbi5iYXNlKCkpOwotICAgIGNoYXIqIGVuZCA9IHN0YXJ0ICsgbV9hbGxvY2F0aW9uLnNp
emUoKTsKLSAgICBmb3IgKGNoYXIqIGN1cnJlbnQgPSBzdGFydDsgY3VycmVudCA8IGVuZDsgY3Vy
cmVudCArPSBibG9ja1NpemUpCi0gICAgICAgIG1fZGVhZEJsb2Nrcy5hcHBlbmQobmV3IChOb3RO
dWxsLCBjdXJyZW50KSBEZWFkQmxvY2sodGhpcykpOwotfQotCi1pbmxpbmUgUmVnaW9uOjp+UmVn
aW9uKCkKLXsKLSAgICBBU1NFUlQoaXNFbXB0eSgpKTsKLSAgICBtX2FsbG9jYXRpb24uZGVhbGxv
Y2F0ZSgpOwotfQotCi1pbmxpbmUgUmVnaW9uKiBSZWdpb246OnJlc2V0KHNpemVfdCBibG9ja1Np
emUpCi17Ci0gICAgQVNTRVJUKGlzRW1wdHkoKSk7Ci0gICAgUGFnZUFsbG9jYXRpb25BbGlnbmVk
IGFsbG9jYXRpb24gPSBtX2FsbG9jYXRpb247Ci0gICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgdGhp
cykgUmVnaW9uKGFsbG9jYXRpb24sIGJsb2NrU2l6ZSwgc19yZWdpb25TaXplIC8gYmxvY2tTaXpl
KTsKLX0KLQotaW5saW5lIERlYWRCbG9jayogUmVnaW9uOjphbGxvY2F0ZSgpCi17Ci0gICAgQVNT
RVJUKCFpc0Z1bGwoKSk7Ci0gICAgbV9ibG9ja3NJblVzZSsrOwotICAgIHJldHVybiBtX2RlYWRC
bG9ja3MucmVtb3ZlSGVhZCgpOwotfQotCi1pbmxpbmUgdm9pZCBSZWdpb246OmRlYWxsb2NhdGUo
dm9pZCogYmFzZSkKLXsKLSAgICBBU1NFUlQoYmFzZSk7Ci0gICAgQVNTRVJUKG1fYmxvY2tzSW5V
c2UpOwotICAgIEFTU0VSVChiYXNlID49IG1fYWxsb2NhdGlvbi5iYXNlKCkgJiYgYmFzZSA8IHN0
YXRpY19jYXN0PGNoYXIqPihtX2FsbG9jYXRpb24uYmFzZSgpKSArIG1fYWxsb2NhdGlvbi5zaXpl
KCkpOwotICAgIERlYWRCbG9jayogYmxvY2sgPSBuZXcgKE5vdE51bGwsIGJhc2UpIERlYWRCbG9j
ayh0aGlzKTsKLSAgICBtX2RlYWRCbG9ja3MucHVzaChibG9jayk7Ci0gICAgbV9ibG9ja3NJblVz
ZS0tOwotfQotCiBjbGFzcyBCbG9ja0FsbG9jYXRvciB7CiBwdWJsaWM6CiAgICAgQmxvY2tBbGxv
Y2F0b3IoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1JlZ2lvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1JlZ2lvbi5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUmVnaW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJlZ2lvbl9oCisjZGVmaW5l
IFJlZ2lvbl9oCisKKyNpbmNsdWRlICJIZWFwQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvRG91Ymx5
TGlua2VkTGlzdC5oPgorI2luY2x1ZGUgPHd0Zi9QYWdlQWxsb2NhdGlvbkFsaWduZWQuaD4KKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIERlYWRCbG9jayA6IHB1YmxpYyBIZWFwQmxvY2s8RGVh
ZEJsb2NrPiB7CitwdWJsaWM6CisgICAgRGVhZEJsb2NrKFJlZ2lvbiopOworfTsKKworaW5saW5l
IERlYWRCbG9jazo6RGVhZEJsb2NrKFJlZ2lvbiogcmVnaW9uKQorICAgIDogSGVhcEJsb2NrPERl
YWRCbG9jaz4ocmVnaW9uKQoreworfQorCitjbGFzcyBSZWdpb24gOiBwdWJsaWMgRG91Ymx5TGlu
a2VkTGlzdE5vZGU8UmVnaW9uPiB7CisgICAgZnJpZW5kIENMQVNTX0lGX0dDQyBEb3VibHlMaW5r
ZWRMaXN0Tm9kZTxSZWdpb24+OworICAgIGZyaWVuZCBjbGFzcyBCbG9ja0FsbG9jYXRvcjsKK3B1
YmxpYzoKKyAgICB+UmVnaW9uKCk7CisgICAgc3RhdGljIFJlZ2lvbiogY3JlYXRlKHNpemVfdCBi
bG9ja1NpemUpOworICAgIHN0YXRpYyBSZWdpb24qIGNyZWF0ZUN1c3RvbVNpemUoc2l6ZV90IGJs
b2NrU2l6ZSwgc2l6ZV90IGJsb2NrQWxpZ25tZW50KTsKKyAgICBSZWdpb24qIHJlc2V0KHNpemVf
dCBibG9ja1NpemUpOworCisgICAgc2l6ZV90IGJsb2NrU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YmxvY2tTaXplOyB9CisgICAgYm9vbCBpc0Z1bGwoKSBjb25zdCB7IHJldHVybiBtX2Jsb2Nrc0lu
VXNlID09IG1fdG90YWxCbG9ja3M7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biAhbV9ibG9ja3NJblVzZTsgfQorICAgIGJvb2wgaXNDdXN0b21TaXplKCkgY29uc3QgeyByZXR1
cm4gbV9pc0N1c3RvbVNpemU7IH0KKworICAgIERlYWRCbG9jayogYWxsb2NhdGUoKTsKKyAgICB2
b2lkIGRlYWxsb2NhdGUodm9pZCopOworCisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzX3JlZ2lv
blNpemUgPSA2NCAqIEtCOworCitwcml2YXRlOgorICAgIFJlZ2lvbihQYWdlQWxsb2NhdGlvbkFs
aWduZWQmLCBzaXplX3QgYmxvY2tTaXplLCBzaXplX3QgdG90YWxCbG9ja3MpOworCisgICAgUGFn
ZUFsbG9jYXRpb25BbGlnbmVkIG1fYWxsb2NhdGlvbjsKKyAgICBzaXplX3QgbV90b3RhbEJsb2Nr
czsKKyAgICBzaXplX3QgbV9ibG9ja3NJblVzZTsKKyAgICBzaXplX3QgbV9ibG9ja1NpemU7Cisg
ICAgYm9vbCBtX2lzQ3VzdG9tU2l6ZTsKKyAgICBSZWdpb24qIG1fcHJldjsKKyAgICBSZWdpb24q
IG1fbmV4dDsKKyAgICBEb3VibHlMaW5rZWRMaXN0PERlYWRCbG9jaz4gbV9kZWFkQmxvY2tzOwor
fTsKKworaW5saW5lIFJlZ2lvbiogUmVnaW9uOjpjcmVhdGUoc2l6ZV90IGJsb2NrU2l6ZSkKK3sK
KyAgICBBU1NFUlQoYmxvY2tTaXplIDw9IHNfcmVnaW9uU2l6ZSk7CisgICAgQVNTRVJUKCEoc19y
ZWdpb25TaXplICUgYmxvY2tTaXplKSk7CisgICAgUGFnZUFsbG9jYXRpb25BbGlnbmVkIGFsbG9j
YXRpb24gPSBQYWdlQWxsb2NhdGlvbkFsaWduZWQ6OmFsbG9jYXRlKHNfcmVnaW9uU2l6ZSwgc19y
ZWdpb25TaXplLCBPU0FsbG9jYXRvcjo6SlNHQ0hlYXBQYWdlcyk7CisgICAgUkVMRUFTRV9BU1NF
UlQoc3RhdGljX2Nhc3Q8Ym9vbD4oYWxsb2NhdGlvbikpOworICAgIHJldHVybiBuZXcgUmVnaW9u
KGFsbG9jYXRpb24sIGJsb2NrU2l6ZSwgc19yZWdpb25TaXplIC8gYmxvY2tTaXplKTsKK30KKwor
aW5saW5lIFJlZ2lvbiogUmVnaW9uOjpjcmVhdGVDdXN0b21TaXplKHNpemVfdCBibG9ja1NpemUs
IHNpemVfdCBibG9ja0FsaWdubWVudCkKK3sKKyAgICBQYWdlQWxsb2NhdGlvbkFsaWduZWQgYWxs
b2NhdGlvbiA9IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZDo6YWxsb2NhdGUoYmxvY2tTaXplLCBibG9j
a0FsaWdubWVudCwgT1NBbGxvY2F0b3I6OkpTR0NIZWFwUGFnZXMpOworICAgIFJFTEVBU0VfQVNT
RVJUKHN0YXRpY19jYXN0PGJvb2w+KGFsbG9jYXRpb24pKTsKKyAgICBSZWdpb24qIHJlZ2lvbiA9
IG5ldyBSZWdpb24oYWxsb2NhdGlvbiwgYmxvY2tTaXplLCAxKTsKKyAgICByZWdpb24tPm1faXND
dXN0b21TaXplID0gdHJ1ZTsKKyAgICByZXR1cm4gcmVnaW9uOworfQorCitpbmxpbmUgUmVnaW9u
OjpSZWdpb24oUGFnZUFsbG9jYXRpb25BbGlnbmVkJiBhbGxvY2F0aW9uLCBzaXplX3QgYmxvY2tT
aXplLCBzaXplX3QgdG90YWxCbG9ja3MpCisgICAgOiBEb3VibHlMaW5rZWRMaXN0Tm9kZTxSZWdp
b24+KCkKKyAgICAsIG1fYWxsb2NhdGlvbihhbGxvY2F0aW9uKQorICAgICwgbV90b3RhbEJsb2Nr
cyh0b3RhbEJsb2NrcykKKyAgICAsIG1fYmxvY2tzSW5Vc2UoMCkKKyAgICAsIG1fYmxvY2tTaXpl
KGJsb2NrU2l6ZSkKKyAgICAsIG1faXNDdXN0b21TaXplKGZhbHNlKQorICAgICwgbV9wcmV2KDAp
CisgICAgLCBtX25leHQoMCkKK3sKKyAgICBBU1NFUlQoYWxsb2NhdGlvbik7CisgICAgY2hhciog
c3RhcnQgPSBzdGF0aWNfY2FzdDxjaGFyKj4obV9hbGxvY2F0aW9uLmJhc2UoKSk7CisgICAgY2hh
ciogZW5kID0gc3RhcnQgKyBtX2FsbG9jYXRpb24uc2l6ZSgpOworICAgIGZvciAoY2hhciogY3Vy
cmVudCA9IHN0YXJ0OyBjdXJyZW50IDwgZW5kOyBjdXJyZW50ICs9IGJsb2NrU2l6ZSkKKyAgICAg
ICAgbV9kZWFkQmxvY2tzLmFwcGVuZChuZXcgKE5vdE51bGwsIGN1cnJlbnQpIERlYWRCbG9jayh0
aGlzKSk7Cit9CisKK2lubGluZSBSZWdpb246On5SZWdpb24oKQoreworICAgIEFTU0VSVChpc0Vt
cHR5KCkpOworICAgIG1fYWxsb2NhdGlvbi5kZWFsbG9jYXRlKCk7Cit9CisKK2lubGluZSBSZWdp
b24qIFJlZ2lvbjo6cmVzZXQoc2l6ZV90IGJsb2NrU2l6ZSkKK3sKKyAgICBBU1NFUlQoaXNFbXB0
eSgpKTsKKyAgICBQYWdlQWxsb2NhdGlvbkFsaWduZWQgYWxsb2NhdGlvbiA9IG1fYWxsb2NhdGlv
bjsKKyAgICByZXR1cm4gbmV3IChOb3ROdWxsLCB0aGlzKSBSZWdpb24oYWxsb2NhdGlvbiwgYmxv
Y2tTaXplLCBzX3JlZ2lvblNpemUgLyBibG9ja1NpemUpOworfQorCitpbmxpbmUgRGVhZEJsb2Nr
KiBSZWdpb246OmFsbG9jYXRlKCkKK3sKKyAgICBBU1NFUlQoIWlzRnVsbCgpKTsKKyAgICBtX2Js
b2Nrc0luVXNlKys7CisgICAgcmV0dXJuIG1fZGVhZEJsb2Nrcy5yZW1vdmVIZWFkKCk7Cit9CisK
K2lubGluZSB2b2lkIFJlZ2lvbjo6ZGVhbGxvY2F0ZSh2b2lkKiBiYXNlKQoreworICAgIEFTU0VS
VChiYXNlKTsKKyAgICBBU1NFUlQobV9ibG9ja3NJblVzZSk7CisgICAgQVNTRVJUKGJhc2UgPj0g
bV9hbGxvY2F0aW9uLmJhc2UoKSAmJiBiYXNlIDwgc3RhdGljX2Nhc3Q8Y2hhcio+KG1fYWxsb2Nh
dGlvbi5iYXNlKCkpICsgbV9hbGxvY2F0aW9uLnNpemUoKSk7CisgICAgRGVhZEJsb2NrKiBibG9j
ayA9IG5ldyAoTm90TnVsbCwgYmFzZSkgRGVhZEJsb2NrKHRoaXMpOworICAgIG1fZGVhZEJsb2Nr
cy5wdXNoKGJsb2NrKTsKKyAgICBtX2Jsb2Nrc0luVXNlLS07Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gUmVnaW9uX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195818</attachid>
            <date>2013-03-29 16:35:03 -0700</date>
            <delta_ts>2013-03-30 12:00:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113617-20130329163459.patch</filename>
            <type>text/plain</type>
            <size>17532</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ3MjU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDEzLTAzLTI5ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgTW92ZSBSZWdpb24gaW50byBpdHMgb3duIGhlYWRlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNjE3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmxvY2tBbGxvY2F0b3IuaCBpcyBnZXR0
aW5nIGEgbGl0dGxlIGNyb3dkZWQuIFdlIHNob3VsZCBtb3ZlIHRoZSBSZWdpb24gY2xhc3MgaW50
byBpdHMgb3duIAorICAgICAgICBoZWFkZXIsIHNpbmNlIGl0J3MgcHJldHR5IGluZGVwZW5kZW50
IGZyb20gdGhlIEJsb2NrQWxsb2NhdG9yLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXBpOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogaGVhcC9CbG9ja0FsbG9jYXRvci5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAg
KiBoZWFwL1JlZ2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChEZWFkQmxv
Y2spOgorICAgICAgICAoSlNDOjpEZWFkQmxvY2s6OkRlYWRCbG9jayk6CisgICAgICAgIChSZWdp
b24pOgorICAgICAgICAoSlNDOjpSZWdpb246OmJsb2NrU2l6ZSk6CisgICAgICAgIChKU0M6OlJl
Z2lvbjo6aXNGdWxsKToKKyAgICAgICAgKEpTQzo6UmVnaW9uOjppc0VtcHR5KToKKyAgICAgICAg
KEpTQzo6UmVnaW9uOjppc0N1c3RvbVNpemUpOgorICAgICAgICAoSlNDOjpSZWdpb246OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OlJlZ2lvbjo6Y3JlYXRlQ3VzdG9tU2l6ZSk6CisgICAgICAgIChK
U0M6OlJlZ2lvbjo6UmVnaW9uKToKKyAgICAgICAgKEpTQzo6UmVnaW9uOjp+UmVnaW9uKToKKyAg
ICAgICAgKEpTQzo6UmVnaW9uOjpyZXNldCk6CisgICAgICAgIChKU0M6OlJlZ2lvbjo6YWxsb2Nh
dGUpOgorICAgICAgICAoSlNDOjpSZWdpb246OmRlYWxsb2NhdGUpOgorCiAyMDEzLTAzLTI5ICBN
YXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgT2JqZWN0
aXZlLUMgQVBJOiBSZW1vdmUgLVtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6
b3duZXI6XQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0J
KHJldmlzaW9uIDE0NzI1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zNTYsNiArMzU2LDcgQEAgamF2YXNjcmlwdGNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9QYXNzV2Vhay5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9SZWdpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Ryb25nLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0cm9uZ0lubGluZXMuaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvVW5jb25kaXRpb25hbEZpbmFsaXplci5oIFwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCShyZXZpc2lvbiAxNDcyNTQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQkod29ya2luZyBjb3B5
KQpAQCAtMzkzLDYgKzM5Myw3IEBACiAgICAgICAgICAgICAnaGVhcC9NYXJrU3RhY2suaCcsCiAg
ICAgICAgICAgICAnaGVhcC9NYXJrU3RhY2tJbmxpbmVzLmgnLAogICAgICAgICAgICAgJ2hlYXAv
UGFzc1dlYWsuaCcsCisgICAgICAgICAgICAnaGVhcC9SZWdpb24uaCcsCiAgICAgICAgICAgICAn
aGVhcC9TbG90VmlzaXRvci5jcHAnLAogICAgICAgICAgICAgJ2hlYXAvU2xvdFZpc2l0b3IuaCcs
CiAgICAgICAgICAgICAnaGVhcC9TbG90VmlzaXRvcklubGluZXMuaCcsCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagko
cmV2aXNpb24gMTQ3MjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTI3NzgsNiArMjc3OCwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXFJlZ2lvbi5oIgorCQkJCT4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXFNsb3RWaXNpdG9yLmNwcCIK
IAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2oJKHJldmlzaW9uIDE0NzI1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTUzMCw2ICs1MzAsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxNYXJrU3Rh
Y2suaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXE1hcmtTdGFja0lubGlu
ZXMuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXFBhc3NXZWFrLmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxSZWdpb24uaCIgLz4NCiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXFNsb3RWaXNpdG9yLmgiIC8+DQogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caGVhcFxTbG90VmlzaXRvcklubGluZXMuaCIgLz4NCiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxoZWFwXFN0cm9uZy5oIiAvPg0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmls
dGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE0NzI1NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMTEzOSw2ICsxMTM5LDkg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcUGFzc1dlYWsuaCI+DQogICAgICAg
PEZpbHRlcj5oZWFwPC9GaWx0ZXI+DQogICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGhlYXBcUmVnaW9uLmgiPg0KKyAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVy
Pg0KKyAgICA8L0NsSW5jbHVkZT4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXFNs
b3RWaXNpdG9yLmgiPg0KICAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPg0KICAgICA8L0NsSW5j
bHVkZT4NCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTQ3MjU0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTgxNyw2ICs4MTcsNyBAQAogCQlCQ0Y2MDUx
NDBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNGNjA1MTIwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3Qu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0ZE
OEM5MjBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkQ4QzkwMEVFQjJFRTcwMDI4Mzg0OCAvKiBK
dW1wVGFibGUuY3BwICovOyB9OwogCQlCQ0ZEOEM5MzBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRh
YmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0ZE
OEM5MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzIwQjI1OTkxNzA2NTM2MjAwQzIxRjRFIC8q
IFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzIwQjI1OTgxNzA2NTM2MjAwQzIxRjRFIC8qIFJlZ2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyMEJBOTJEMTZCQjFDMTUwMEIzQUVBMiAv
KiBTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMyMEJBOTJDMTZCQjFDMTUwMEIzQUVBMiAvKiBTdHJ1Y3R1cmVS
YXJlRGF0YUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlDMjExMjJFMTE1REQ5QUIzMDA3OTBFM0EgLyogR0NUaHJlYWRTaGFyZWREYXRh
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMTEy
MkRFMTVERDlBQjMwMDc5MEUzQSAvKiBHQ1RocmVhZFNoYXJlZERhdGEuY3BwICovOyB9OwogCQlD
MjExMjJFMjE1REQ5QUIzMDA3OTBFM0EgLyogR0NUaHJlYWRTaGFyZWREYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjExMjJERjE1REQ5QUIzMDA3
OTBFM0EgLyogR0NUaHJlYWRTaGFyZWREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3MjMsNiArMTcyNCw3IEBACiAJCUJDRjYwNTEyMEUy
MDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFyZ0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNGRDhDOTAwRUVC
MkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKdW1wVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
Q0ZEOEM5MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEp1bXBUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMjBCMjU5ODE3MDY1MzYyMDBDMjFGNEUgLyogUmVnaW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlZ2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MjBCQTkyQzE2QkIxQzE1MDBCM0FFQTIgLyogU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjExMjJERTE1REQ5QUIzMDA3OTBFM0Eg
LyogR0NUaHJlYWRTaGFyZWREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdDVGhyZWFkU2hhcmVkRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMyMTEyMkRGMTVERDlBQjMwMDc5MEUzQSAvKiBHQ1RocmVhZFNoYXJlZERhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NUaHJlYWRTaGFyZWREYXRhLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTYzLDYgKzIxNjUsNyBAQAogCQkJCTBGQzgxNTA5
MTQwNDNCRDIwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggKi8sCiAJCQkJQzI4MzE4
RkYxNkZFNEI3RDAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrLmggKi8sCiAJCQkJQzI4MzE5MDExNkZF
NTMzRTAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrSW5saW5lcy5oICovLAorCQkJCUMyMEIyNTk4MTcw
NjUzNjIwMEMyMUY0RSAvKiBSZWdpb24uaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gaGVhcDsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yOTYyLDYgKzI5NjUsNyBAQAogCQkJCTBGQjdG
Mzk1MTVFRDhFNDYwMEYxNjdCMiAvKiBBcnJheUNvbnZlbnRpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjYzOTQ1NTE1RDA3MDU3MDA2QTU5N0MgLyogQXJyYXlQcm9maWxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE4QzNFNzBFMTZGNUNEMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovLAorCQkJCUMyMEIyNTk5MTcwNjUzNjIwMEMyMUY0RSAvKiBSZWdpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCUMyODMxOTAwMTZGRTRCN0QwMDE1N0JGRCAvKiBIYW5kbGVCbG9j
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MUQwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQ2xh
c3NSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTNDNjFEMTY3QkFCRUUwMDZENzYwQSAvKiBK
U1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0FsbG9jYXRvci5oCShyZXZpc2lvbiAxNDcyNTQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0FsbG9jYXRvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEJsb2NrQWxsb2NhdG9yX2gKIAogI2luY2x1
ZGUgIkhlYXBCbG9jay5oIgorI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9Eb3Vi
bHlMaW5rZWRMaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
UGFnZUFsbG9jYXRpb25BbGlnbmVkLmg+CkBAIC00MSwxMTkgKzQyLDExIEBAIGNsYXNzIENvcHlX
b3JrTGlzdFNlZ21lbnQ7CiBjbGFzcyBIYW5kbGVCbG9jazsKIGNsYXNzIE1hcmtTdGFja1NlZ21l
bnQ7CiBjbGFzcyBNYXJrZWRCbG9jazsKLWNsYXNzIFJlZ2lvbjsKIGNsYXNzIFdlYWtCbG9jazsK
IAogLy8gU2ltcGxlIGFsbG9jYXRvciB0byByZWR1Y2UgVk0gY29zdCBieSBob2xkaW5nIG9udG8g
YmxvY2tzIG9mIG1lbW9yeSBmb3IKIC8vIHNob3J0IHBlcmlvZHMgb2YgdGltZSBhbmQgdGhlbiBm
cmVlaW5nIHRoZW0gb24gYSBzZWNvbmRhcnkgdGhyZWFkLgogCi1jbGFzcyBEZWFkQmxvY2sgOiBw
dWJsaWMgSGVhcEJsb2NrPERlYWRCbG9jaz4gewotcHVibGljOgotICAgIERlYWRCbG9jayhSZWdp
b24qKTsKLX07Ci0KLWlubGluZSBEZWFkQmxvY2s6OkRlYWRCbG9jayhSZWdpb24qIHJlZ2lvbikK
LSAgICA6IEhlYXBCbG9jazxEZWFkQmxvY2s+KHJlZ2lvbikKLXsKLX0KLQotY2xhc3MgUmVnaW9u
IDogcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFJlZ2lvbj4gewotICAgIGZyaWVuZCBDTEFT
U19JRl9HQ0MgRG91Ymx5TGlua2VkTGlzdE5vZGU8UmVnaW9uPjsKLSAgICBmcmllbmQgY2xhc3Mg
QmxvY2tBbGxvY2F0b3I7Ci1wdWJsaWM6Ci0gICAgflJlZ2lvbigpOwotICAgIHN0YXRpYyBSZWdp
b24qIGNyZWF0ZShzaXplX3QgYmxvY2tTaXplKTsKLSAgICBzdGF0aWMgUmVnaW9uKiBjcmVhdGVD
dXN0b21TaXplKHNpemVfdCBibG9ja1NpemUsIHNpemVfdCBibG9ja0FsaWdubWVudCk7Ci0gICAg
UmVnaW9uKiByZXNldChzaXplX3QgYmxvY2tTaXplKTsKLQotICAgIHNpemVfdCBibG9ja1NpemUo
KSBjb25zdCB7IHJldHVybiBtX2Jsb2NrU2l6ZTsgfQotICAgIGJvb2wgaXNGdWxsKCkgY29uc3Qg
eyByZXR1cm4gbV9ibG9ja3NJblVzZSA9PSBtX3RvdGFsQmxvY2tzOyB9Ci0gICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gIW1fYmxvY2tzSW5Vc2U7IH0KLSAgICBib29sIGlzQ3VzdG9t
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNDdXN0b21TaXplOyB9Ci0KLSAgICBEZWFkQmxvY2sq
IGFsbG9jYXRlKCk7Ci0gICAgdm9pZCBkZWFsbG9jYXRlKHZvaWQqKTsKLQotICAgIHN0YXRpYyBj
b25zdCBzaXplX3Qgc19yZWdpb25TaXplID0gNjQgKiBLQjsKLQotcHJpdmF0ZToKLSAgICBSZWdp
b24oUGFnZUFsbG9jYXRpb25BbGlnbmVkJiwgc2l6ZV90IGJsb2NrU2l6ZSwgc2l6ZV90IHRvdGFs
QmxvY2tzKTsKLQotICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCBtX2FsbG9jYXRpb247Ci0gICAg
c2l6ZV90IG1fdG90YWxCbG9ja3M7Ci0gICAgc2l6ZV90IG1fYmxvY2tzSW5Vc2U7Ci0gICAgc2l6
ZV90IG1fYmxvY2tTaXplOwotICAgIGJvb2wgbV9pc0N1c3RvbVNpemU7Ci0gICAgUmVnaW9uKiBt
X3ByZXY7Ci0gICAgUmVnaW9uKiBtX25leHQ7Ci0gICAgRG91Ymx5TGlua2VkTGlzdDxEZWFkQmxv
Y2s+IG1fZGVhZEJsb2NrczsKLX07Ci0KLWlubGluZSBSZWdpb24qIFJlZ2lvbjo6Y3JlYXRlKHNp
emVfdCBibG9ja1NpemUpCi17Ci0gICAgQVNTRVJUKGJsb2NrU2l6ZSA8PSBzX3JlZ2lvblNpemUp
OwotICAgIEFTU0VSVCghKHNfcmVnaW9uU2l6ZSAlIGJsb2NrU2l6ZSkpOwotICAgIFBhZ2VBbGxv
Y2F0aW9uQWxpZ25lZCBhbGxvY2F0aW9uID0gUGFnZUFsbG9jYXRpb25BbGlnbmVkOjphbGxvY2F0
ZShzX3JlZ2lvblNpemUsIHNfcmVnaW9uU2l6ZSwgT1NBbGxvY2F0b3I6OkpTR0NIZWFwUGFnZXMp
OwotICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PGJvb2w+KGFsbG9jYXRpb24pKTsKLSAg
ICByZXR1cm4gbmV3IFJlZ2lvbihhbGxvY2F0aW9uLCBibG9ja1NpemUsIHNfcmVnaW9uU2l6ZSAv
IGJsb2NrU2l6ZSk7Ci19Ci0KLWlubGluZSBSZWdpb24qIFJlZ2lvbjo6Y3JlYXRlQ3VzdG9tU2l6
ZShzaXplX3QgYmxvY2tTaXplLCBzaXplX3QgYmxvY2tBbGlnbm1lbnQpCi17Ci0gICAgUGFnZUFs
bG9jYXRpb25BbGlnbmVkIGFsbG9jYXRpb24gPSBQYWdlQWxsb2NhdGlvbkFsaWduZWQ6OmFsbG9j
YXRlKGJsb2NrU2l6ZSwgYmxvY2tBbGlnbm1lbnQsIE9TQWxsb2NhdG9yOjpKU0dDSGVhcFBhZ2Vz
KTsKLSAgICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2FzdDxib29sPihhbGxvY2F0aW9uKSk7Ci0g
ICAgUmVnaW9uKiByZWdpb24gPSBuZXcgUmVnaW9uKGFsbG9jYXRpb24sIGJsb2NrU2l6ZSwgMSk7
Ci0gICAgcmVnaW9uLT5tX2lzQ3VzdG9tU2l6ZSA9IHRydWU7Ci0gICAgcmV0dXJuIHJlZ2lvbjsK
LX0KLQotaW5saW5lIFJlZ2lvbjo6UmVnaW9uKFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYgYWxsb2Nh
dGlvbiwgc2l6ZV90IGJsb2NrU2l6ZSwgc2l6ZV90IHRvdGFsQmxvY2tzKQotICAgIDogRG91Ymx5
TGlua2VkTGlzdE5vZGU8UmVnaW9uPigpCi0gICAgLCBtX2FsbG9jYXRpb24oYWxsb2NhdGlvbikK
LSAgICAsIG1fdG90YWxCbG9ja3ModG90YWxCbG9ja3MpCi0gICAgLCBtX2Jsb2Nrc0luVXNlKDAp
Ci0gICAgLCBtX2Jsb2NrU2l6ZShibG9ja1NpemUpCi0gICAgLCBtX2lzQ3VzdG9tU2l6ZShmYWxz
ZSkKLSAgICAsIG1fcHJldigwKQotICAgICwgbV9uZXh0KDApCi17Ci0gICAgQVNTRVJUKGFsbG9j
YXRpb24pOwotICAgIGNoYXIqIHN0YXJ0ID0gc3RhdGljX2Nhc3Q8Y2hhcio+KG1fYWxsb2NhdGlv
bi5iYXNlKCkpOwotICAgIGNoYXIqIGVuZCA9IHN0YXJ0ICsgbV9hbGxvY2F0aW9uLnNpemUoKTsK
LSAgICBmb3IgKGNoYXIqIGN1cnJlbnQgPSBzdGFydDsgY3VycmVudCA8IGVuZDsgY3VycmVudCAr
PSBibG9ja1NpemUpCi0gICAgICAgIG1fZGVhZEJsb2Nrcy5hcHBlbmQobmV3IChOb3ROdWxsLCBj
dXJyZW50KSBEZWFkQmxvY2sodGhpcykpOwotfQotCi1pbmxpbmUgUmVnaW9uOjp+UmVnaW9uKCkK
LXsKLSAgICBBU1NFUlQoaXNFbXB0eSgpKTsKLSAgICBtX2FsbG9jYXRpb24uZGVhbGxvY2F0ZSgp
OwotfQotCi1pbmxpbmUgUmVnaW9uKiBSZWdpb246OnJlc2V0KHNpemVfdCBibG9ja1NpemUpCi17
Ci0gICAgQVNTRVJUKGlzRW1wdHkoKSk7Ci0gICAgUGFnZUFsbG9jYXRpb25BbGlnbmVkIGFsbG9j
YXRpb24gPSBtX2FsbG9jYXRpb247Ci0gICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgdGhpcykgUmVn
aW9uKGFsbG9jYXRpb24sIGJsb2NrU2l6ZSwgc19yZWdpb25TaXplIC8gYmxvY2tTaXplKTsKLX0K
LQotaW5saW5lIERlYWRCbG9jayogUmVnaW9uOjphbGxvY2F0ZSgpCi17Ci0gICAgQVNTRVJUKCFp
c0Z1bGwoKSk7Ci0gICAgbV9ibG9ja3NJblVzZSsrOwotICAgIHJldHVybiBtX2RlYWRCbG9ja3Mu
cmVtb3ZlSGVhZCgpOwotfQotCi1pbmxpbmUgdm9pZCBSZWdpb246OmRlYWxsb2NhdGUodm9pZCog
YmFzZSkKLXsKLSAgICBBU1NFUlQoYmFzZSk7Ci0gICAgQVNTRVJUKG1fYmxvY2tzSW5Vc2UpOwot
ICAgIEFTU0VSVChiYXNlID49IG1fYWxsb2NhdGlvbi5iYXNlKCkgJiYgYmFzZSA8IHN0YXRpY19j
YXN0PGNoYXIqPihtX2FsbG9jYXRpb24uYmFzZSgpKSArIG1fYWxsb2NhdGlvbi5zaXplKCkpOwot
ICAgIERlYWRCbG9jayogYmxvY2sgPSBuZXcgKE5vdE51bGwsIGJhc2UpIERlYWRCbG9jayh0aGlz
KTsKLSAgICBtX2RlYWRCbG9ja3MucHVzaChibG9jayk7Ci0gICAgbV9ibG9ja3NJblVzZS0tOwot
fQotCiBjbGFzcyBCbG9ja0FsbG9jYXRvciB7CiBwdWJsaWM6CiAgICAgQmxvY2tBbGxvY2F0b3Io
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1JlZ2lvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1JlZ2lvbi5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUmVnaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTQ19SZWdpb25faAorI2RlZmluZSBK
U0NfUmVnaW9uX2gKKworI2luY2x1ZGUgIkhlYXBCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9Eb3Vi
bHlMaW5rZWRMaXN0Lmg+CisjaW5jbHVkZSA8d3RmL1BhZ2VBbGxvY2F0aW9uQWxpZ25lZC5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRGVhZEJsb2NrIDogcHVibGljIEhlYXBCbG9jazxE
ZWFkQmxvY2s+IHsKK3B1YmxpYzoKKyAgICBEZWFkQmxvY2soUmVnaW9uKik7Cit9OworCitpbmxp
bmUgRGVhZEJsb2NrOjpEZWFkQmxvY2soUmVnaW9uKiByZWdpb24pCisgICAgOiBIZWFwQmxvY2s8
RGVhZEJsb2NrPihyZWdpb24pCit7Cit9CisKK2NsYXNzIFJlZ2lvbiA6IHB1YmxpYyBEb3VibHlM
aW5rZWRMaXN0Tm9kZTxSZWdpb24+IHsKKyAgICBmcmllbmQgQ0xBU1NfSUZfR0NDIERvdWJseUxp
bmtlZExpc3ROb2RlPFJlZ2lvbj47CisgICAgZnJpZW5kIGNsYXNzIEJsb2NrQWxsb2NhdG9yOwor
cHVibGljOgorICAgIH5SZWdpb24oKTsKKyAgICBzdGF0aWMgUmVnaW9uKiBjcmVhdGUoc2l6ZV90
IGJsb2NrU2l6ZSk7CisgICAgc3RhdGljIFJlZ2lvbiogY3JlYXRlQ3VzdG9tU2l6ZShzaXplX3Qg
YmxvY2tTaXplLCBzaXplX3QgYmxvY2tBbGlnbm1lbnQpOworICAgIFJlZ2lvbiogcmVzZXQoc2l6
ZV90IGJsb2NrU2l6ZSk7CisKKyAgICBzaXplX3QgYmxvY2tTaXplKCkgY29uc3QgeyByZXR1cm4g
bV9ibG9ja1NpemU7IH0KKyAgICBib29sIGlzRnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tz
SW5Vc2UgPT0gbV90b3RhbEJsb2NrczsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuICFtX2Jsb2Nrc0luVXNlOyB9CisgICAgYm9vbCBpc0N1c3RvbVNpemUoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ3VzdG9tU2l6ZTsgfQorCisgICAgRGVhZEJsb2NrKiBhbGxvY2F0ZSgpOworICAg
IHZvaWQgZGVhbGxvY2F0ZSh2b2lkKik7CisKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNfcmVn
aW9uU2l6ZSA9IDY0ICogS0I7CisKK3ByaXZhdGU6CisgICAgUmVnaW9uKFBhZ2VBbGxvY2F0aW9u
QWxpZ25lZCYsIHNpemVfdCBibG9ja1NpemUsIHNpemVfdCB0b3RhbEJsb2Nrcyk7CisKKyAgICBQ
YWdlQWxsb2NhdGlvbkFsaWduZWQgbV9hbGxvY2F0aW9uOworICAgIHNpemVfdCBtX3RvdGFsQmxv
Y2tzOworICAgIHNpemVfdCBtX2Jsb2Nrc0luVXNlOworICAgIHNpemVfdCBtX2Jsb2NrU2l6ZTsK
KyAgICBib29sIG1faXNDdXN0b21TaXplOworICAgIFJlZ2lvbiogbV9wcmV2OworICAgIFJlZ2lv
biogbV9uZXh0OworICAgIERvdWJseUxpbmtlZExpc3Q8RGVhZEJsb2NrPiBtX2RlYWRCbG9ja3M7
Cit9OworCitpbmxpbmUgUmVnaW9uKiBSZWdpb246OmNyZWF0ZShzaXplX3QgYmxvY2tTaXplKQor
eworICAgIEFTU0VSVChibG9ja1NpemUgPD0gc19yZWdpb25TaXplKTsKKyAgICBBU1NFUlQoIShz
X3JlZ2lvblNpemUgJSBibG9ja1NpemUpKTsKKyAgICBQYWdlQWxsb2NhdGlvbkFsaWduZWQgYWxs
b2NhdGlvbiA9IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZDo6YWxsb2NhdGUoc19yZWdpb25TaXplLCBz
X3JlZ2lvblNpemUsIE9TQWxsb2NhdG9yOjpKU0dDSGVhcFBhZ2VzKTsKKyAgICBSRUxFQVNFX0FT
U0VSVChzdGF0aWNfY2FzdDxib29sPihhbGxvY2F0aW9uKSk7CisgICAgcmV0dXJuIG5ldyBSZWdp
b24oYWxsb2NhdGlvbiwgYmxvY2tTaXplLCBzX3JlZ2lvblNpemUgLyBibG9ja1NpemUpOworfQor
CitpbmxpbmUgUmVnaW9uKiBSZWdpb246OmNyZWF0ZUN1c3RvbVNpemUoc2l6ZV90IGJsb2NrU2l6
ZSwgc2l6ZV90IGJsb2NrQWxpZ25tZW50KQoreworICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCBh
bGxvY2F0aW9uID0gUGFnZUFsbG9jYXRpb25BbGlnbmVkOjphbGxvY2F0ZShibG9ja1NpemUsIGJs
b2NrQWxpZ25tZW50LCBPU0FsbG9jYXRvcjo6SlNHQ0hlYXBQYWdlcyk7CisgICAgUkVMRUFTRV9B
U1NFUlQoc3RhdGljX2Nhc3Q8Ym9vbD4oYWxsb2NhdGlvbikpOworICAgIFJlZ2lvbiogcmVnaW9u
ID0gbmV3IFJlZ2lvbihhbGxvY2F0aW9uLCBibG9ja1NpemUsIDEpOworICAgIHJlZ2lvbi0+bV9p
c0N1c3RvbVNpemUgPSB0cnVlOworICAgIHJldHVybiByZWdpb247Cit9CisKK2lubGluZSBSZWdp
b246OlJlZ2lvbihQYWdlQWxsb2NhdGlvbkFsaWduZWQmIGFsbG9jYXRpb24sIHNpemVfdCBibG9j
a1NpemUsIHNpemVfdCB0b3RhbEJsb2NrcykKKyAgICA6IERvdWJseUxpbmtlZExpc3ROb2RlPFJl
Z2lvbj4oKQorICAgICwgbV9hbGxvY2F0aW9uKGFsbG9jYXRpb24pCisgICAgLCBtX3RvdGFsQmxv
Y2tzKHRvdGFsQmxvY2tzKQorICAgICwgbV9ibG9ja3NJblVzZSgwKQorICAgICwgbV9ibG9ja1Np
emUoYmxvY2tTaXplKQorICAgICwgbV9pc0N1c3RvbVNpemUoZmFsc2UpCisgICAgLCBtX3ByZXYo
MCkKKyAgICAsIG1fbmV4dCgwKQoreworICAgIEFTU0VSVChhbGxvY2F0aW9uKTsKKyAgICBjaGFy
KiBzdGFydCA9IHN0YXRpY19jYXN0PGNoYXIqPihtX2FsbG9jYXRpb24uYmFzZSgpKTsKKyAgICBj
aGFyKiBlbmQgPSBzdGFydCArIG1fYWxsb2NhdGlvbi5zaXplKCk7CisgICAgZm9yIChjaGFyKiBj
dXJyZW50ID0gc3RhcnQ7IGN1cnJlbnQgPCBlbmQ7IGN1cnJlbnQgKz0gYmxvY2tTaXplKQorICAg
ICAgICBtX2RlYWRCbG9ja3MuYXBwZW5kKG5ldyAoTm90TnVsbCwgY3VycmVudCkgRGVhZEJsb2Nr
KHRoaXMpKTsKK30KKworaW5saW5lIFJlZ2lvbjo6flJlZ2lvbigpCit7CisgICAgQVNTRVJUKGlz
RW1wdHkoKSk7CisgICAgbV9hbGxvY2F0aW9uLmRlYWxsb2NhdGUoKTsKK30KKworaW5saW5lIFJl
Z2lvbiogUmVnaW9uOjpyZXNldChzaXplX3QgYmxvY2tTaXplKQoreworICAgIEFTU0VSVChpc0Vt
cHR5KCkpOworICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCBhbGxvY2F0aW9uID0gbV9hbGxvY2F0
aW9uOworICAgIHJldHVybiBuZXcgKE5vdE51bGwsIHRoaXMpIFJlZ2lvbihhbGxvY2F0aW9uLCBi
bG9ja1NpemUsIHNfcmVnaW9uU2l6ZSAvIGJsb2NrU2l6ZSk7Cit9CisKK2lubGluZSBEZWFkQmxv
Y2sqIFJlZ2lvbjo6YWxsb2NhdGUoKQoreworICAgIEFTU0VSVCghaXNGdWxsKCkpOworICAgIG1f
YmxvY2tzSW5Vc2UrKzsKKyAgICByZXR1cm4gbV9kZWFkQmxvY2tzLnJlbW92ZUhlYWQoKTsKK30K
KworaW5saW5lIHZvaWQgUmVnaW9uOjpkZWFsbG9jYXRlKHZvaWQqIGJhc2UpCit7CisgICAgQVNT
RVJUKGJhc2UpOworICAgIEFTU0VSVChtX2Jsb2Nrc0luVXNlKTsKKyAgICBBU1NFUlQoYmFzZSA+
PSBtX2FsbG9jYXRpb24uYmFzZSgpICYmIGJhc2UgPCBzdGF0aWNfY2FzdDxjaGFyKj4obV9hbGxv
Y2F0aW9uLmJhc2UoKSkgKyBtX2FsbG9jYXRpb24uc2l6ZSgpKTsKKyAgICBEZWFkQmxvY2sqIGJs
b2NrID0gbmV3IChOb3ROdWxsLCBiYXNlKSBEZWFkQmxvY2sodGhpcyk7CisgICAgbV9kZWFkQmxv
Y2tzLnB1c2goYmxvY2spOworICAgIG1fYmxvY2tzSW5Vc2UtLTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZiAvLyBKU0NfUmVnaW9uX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>