<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>4871</bug_id>
          
          <creation_ts>2004-07-23 18:08:43 +0400</creation_ts>
          <short_desc>Неверная работа с кодировками названий файлов</short_desc>
          <delta_ts>2016-01-20 00:42:41 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>unzip</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>major</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>12313</blocked>
    
    <blocked>12562</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Vitaly Lipatov">lav</reporter>
          <assigned_to name="Alexey Voinov">voins</assigned_to>
          <cc>arei</cc>
    
    <cc>dav</cc>
    
    <cc>ildar</cc>
    
    <cc>jackie.rosen</cc>
    
    <cc>mike</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>17476</commentid>
    <comment_count>0</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2004-07-23 18:08:43 +0400</bug_when>
    <thetext>Введение 
======== 
Программы zip/unzip устарели чрезвычайно. Это видно по их запутанному, 
перегруженному ifdef&apos;ами коду. Плетёшься по нему и спотыкаешься. Несмотря на 
поддержку кучу платформ, эти программы не умеют обращаться с кодировками при 
компилировании в Linux. 
Обмен с внешним миром для пользователей Linux невозможен без архиваторов. 
Проблемы совместимости должны быть сведены к минимуму. Но что мы имеем. 
 
Проблема 
======== 
При распаковке архива, созданного в DOS/Win, названия файлов перекодируются из 
cp866 (кодировка хранения имён при архивации в указанных системах) в 
неизвестно что, поэтому при всём желании кодировку не восстановить уже 
никакими силами. 
 
Предлагается 
============ 
Поскольку в файлах ZIP хранится информация о том, в каких системах они 
созданы, предлагается перекодировать названия в кодировку файловой системы.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17477</commentid>
    <comment_count>1</comment_count>
      <attachid>502</attachid>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2004-07-23 18:10:38 +0400</bug_when>
    <thetext>Created attachment 502
Патч, убирающий перекодировку

Приложенный патч убирает перекодировку названий в unzip, после чего можно хотя
бы воспользоваться convmv для перекодирования названий.
Было бы замечательно вставить использование iconv, чтобы названия
перекодировались автоматически.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17508</commentid>
    <comment_count>2</comment_count>
    <who name="Dmitry Vukolov">dav</who>
    <bug_when>2004-07-26 00:49:46 +0400</bug_when>
    <thetext>(In reply to comment #0)
&gt; При распаковке архива, созданного в DOS/Win, названия файлов перекодируются из 
&gt; cp866 (кодировка хранения имён при архивации в указанных системах) в 
&gt; неизвестно что, поэтому при всём желании кодировку не восстановить уже 
&gt; никакими силами. 

Ну не такое уж это и &quot;неизвестно что&quot; :-) Просто они там избалованы своими
латинскими языками, вот и перекодируют всё из cp850 в cp1252. Работает такой
вариант:

$ unzip -Z1 filename.zip | iconv -f cp1252 -t cp850 | iconv -f cp866

Безобразие, конечно. Надо исправлять. Вопрос в том, как правильно.

Честно говоря, я не совсем понял предложение Виталия по перекодировке.
Как мне кажется, кусок кода, удаляемый патчем, именно и занимается разбором
случаев ОС архива -&gt; кодировка. Другое дело, что сейчас исходная и
результирующая кодировки жестко забиты (850/1252 и наоборот?!). 
Можно поступить немного лучше авторов unzip и переопределить макросы _OEM_INTERN
как cp866-&gt;локаль и _ISO_INTERN как cpххх-&gt;локаль. Либо пойти дальше и добавить
переменные окружения / ключ, которые бы указывали исходные кодировки имён файлов
в архивах.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17509</commentid>
    <comment_count>3</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2004-07-26 01:14:42 +0400</bug_when>
    <thetext>Да, именно так и надо сделать. Приложенный мной патч просто показывал место 
решения проблемы (я, например, его достаточно долго искал). Правда для 
соответствия кодировок в DOS/Unix наверное придётся таблицу составить, чтобы 
сделать и для украинских и белорусский локалей. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17585</commentid>
    <comment_count>4</comment_count>
    <who name="Dmitry Vukolov">dav</who>
    <bug_when>2004-07-27 08:17:28 +0400</bug_when>
    <thetext>Предлагаю на рассмотрение следующий патч.
Добавлены ключи -O и -I, задающие кодировку имён файлов в архивах DOS/Windows и
всех остальных ОС соответственно. По умолчанию для совместимости установлены
CP850 и CP1252. Однако, имена файлов перекодируются лишь в случае полностью
безошибочной работы iconv(). Поскольку из CP850/1252 в кириллическую локаль
конвертировать пока ещё никто не научился, то для кириллицы перекодировка по
умолчанию отсутствует.
Возможно, имеет смысл совсем отбросить совместимость и убрать попытки
перекодировки CP850/1252 -&gt; локаль. Что скажете?

В пакет можно также положить /etc/profile.d/unzip.sh примерно такого содержания:
# Set default encoding for filenames inside DOS/Windows Zip archives
export UNZIP=&quot;-O CP866&quot;
export ZIPINFO=&quot;-O CP866&quot;

К сожалению, авторы unzip изначально не предусматривали свои многочисленные
макросы для преобразования имён файлов из/в многобайтные кодировки. Поэтому для
работы в UTF-8 локали это хозяйство, скорее всего, не годится.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17586</commentid>
    <comment_count>5</comment_count>
      <attachid>531</attachid>
    <who name="Dmitry Vukolov">dav</who>
    <bug_when>2004-07-27 08:19:03 +0400</bug_when>
    <thetext>Created attachment 531
unzip-5.50-alt-iconv.patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17587</commentid>
    <comment_count>6</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2004-07-27 09:40:56 +0400</bug_when>
    <thetext>Я бы всё-таки составил таблицу зависимости кодировки в DOS в зависимости от 
текущей локали. 
cp1252 cp850 
iso8859-1 cp850 или как там 
cp1251 cp866  
koi8-r cp866 
koi8-u cp866 
и т.д. 
unzip должен корректно работать в 
1. командной строке 
2. ark 
3. mc 
не требуя особых настроек для этого. 
Разархивирование - тривиальная операция, и должна выполняться без напряжения. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17600</commentid>
    <comment_count>7</comment_count>
      <attachid>532</attachid>
    <who name="Dmitry Vukolov">dav</who>
    <bug_when>2004-07-28 00:03:10 +0400</bug_when>
    <thetext>Created attachment 532
unzip-5.50-alt-iconv-v1.1.patch

Теперь понял, что вы имели в виду под таблицей. Цепляю новый патч.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17605</commentid>
    <comment_count>8</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2004-07-28 13:20:35 +0400</bug_when>
    <thetext>Здорово. А люди столько лет мучались... 
(Я проверил, вроде действительно всё нормально) 
Теперь бы ещё для zip такой патч написать, 
чтобы созданные в Linux архивы читались в DOS/Win. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17955</commentid>
    <comment_count>9</comment_count>
    <who name="Dmitry Vukolov">dav</who>
    <bug_when>2004-08-09 19:00:29 +0400</bug_when>
    <thetext>Сформулирую задачи:
1. Обеспечить переносимость ZIP архивов, содержащих файлы с кириллические
именами, между OC DOS/Windows и Linux.
2. Обеспечить переносимость ZIP архивов, созданных в Linux с различными
кодировками локали.

Формат ZIP официально поддерживает лишь имена файлов в кодировке ISO8859-1 и
информацию о кодировке не предусматривает. На практике линуксовые ZIP архивы
создаются в кодировке текущей локали, а DOS/Windows архивы -- в кодировке OEM
CP850/866/...

Что касается переносимости, то фактически на данный момент большинство
архиваторов для Windows, и в том числе встроенный в Windows XP, рассматривают
все архивы, вне зависимости от ОС, где они были созданы, как хранящие имена
файлов в кодировке OEM. Исключениями являются Info-Zip Wiz и 7-zip, которые
оставляют имена файлов в Linux-архивах без перекодировки (таким образом
корректно отображаются кириллические Linux-архивы, созданные, например, в локали
ru_RU.CP1251).

Получается, что для решения пункта No.1 надо создавать Linux-архивы в CP850/866,
что в принципе не запрещено, как если бы у пользователя была установлена
соответствующая кодировка локали. А что касается пункта No.2, то unzip&apos;у
остаётся только прикрутить автоугадывание кириллических кодировок для
Linux-архивов, иных вариантов я не пока вижу.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20424</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Voinov">voins</who>
    <bug_when>2004-12-14 14:29:50 +0300</bug_when>
    <thetext>patch (v1.1) applied in 5.50-alt4.

thanks :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33573</commentid>
    <comment_count>11</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2005-12-05 01:16:16 +0300</bug_when>
    <thetext>Можно пока прикрыть, но решение к сожалению не универсальное. Буду думать. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36206</commentid>
    <comment_count>12</comment_count>
      <attachid>1402</attachid>
    <who name="m0sia">m0sia</who>
    <bug_when>2006-02-23 21:42:36 +0300</bug_when>
    <thetext>Created attachment 1402
Патч для перекодировки с поддержкой UTF-8

состряпал для себя патч для перекодировки в UTF-8 локаль.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44689</commentid>
    <comment_count>13</comment_count>
    <who name="Kir">svetit</who>
    <bug_when>2007-01-20 15:18:56 +0300</bug_when>
    <thetext>(In reply to comment #12)
&gt; Created an attachment (id=1402) [edit]
&gt; Патч для перекодировки с поддержкой UTF-8
&gt; состряпал для себя патч для перекодировки в UTF-8 локаль.

Хорошо было бы найти патч для zip.
Чтобы можно было аод Linux с русской локалью UTF-8 паковать архивы ZIP с русскими именами, которые 
корректно бы читались в Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>54081</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2007-08-14 18:50:55 +0400</bug_when>
    <thetext>для unzip FIXED (#12313), для zip -- NEW (#12562)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77529</commentid>
    <comment_count>15</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2008-09-11 09:39:47 +0400</bug_when>
    <thetext>Окончательный патч с использованием natspec можно найти в пакете
http://sisyphus.ru/srpm/Sisyphus/unzip/patches</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77601</commentid>
    <comment_count>16</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-09-11 21:36:41 +0400</bug_when>
    <thetext>Спасибо!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154612</commentid>
    <comment_count>17</comment_count>
    <who name="ildar">ildar</who>
    <bug_when>2016-01-19 16:56:15 +0300</bug_when>
    <thetext>извините, что здесь спрашиваю.
А где есть информация, какими перекодировками можно распаковать современные zip-файлы? С использованием natspec или без него / с enca / без enca. Как угодно!
А?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154615</commentid>
    <comment_count>18</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2016-01-19 21:43:14 +0300</bug_when>
    <thetext>(В ответ на комментарий №17)
&gt; А где есть информация, какими перекодировками можно распаковать современные
&gt; zip-файлы?
Возможно, такой вопрос когда-то и привёл к enconvmv из одноименного пакета.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154621</commentid>
    <comment_count>19</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2016-01-20 00:42:41 +0300</bug_when>
    <thetext>(В ответ на комментарий №17)
&gt; извините, что здесь спрашиваю.
&gt; А где есть информация, какими перекодировками можно распаковать современные
&gt; zip-файлы? С использованием natspec или без него / с enca / без enca. Как
&gt; угодно!
Современные zip-файлы должны паковаться с использованием UTF-8, и тот же 7z должен успешно их распаковывать.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>502</attachid>
            <date>2004-07-23 18:10:37 +0400</date>
            <delta_ts>2004-07-23 18:10:37 +0400</delta_ts>
            <desc>Патч, убирающий перекодировку</desc>
            <filename>unzpriv.h.patch</filename>
            <type>text/plain</type>
            <size>721</size>
            <attacher name="Vitaly Lipatov">lav</attacher>
            
              <data encoding="base64">LS0tIHVuenByaXYuaC5vcmlnCTIwMDItMDItMTcgMjA6MDE6NDggKzAzMDAKKysrIHVuenByaXYu
aAkyMDA0LTA3LTIzIDE4OjAzOjE3ICswNDAwCkBAIC0yNDE5LDE2ICsyNDE5LDcgQEAKICAqIEFs
bCBvdGhlciBwb3J0cyBhcmUgYXNzdW1lZCB0byBjb2RlIHppcCBlbnRyeSBmaWxlbmFtZXMgaW4g
SVNPIDg4NTktMS4KICAqLwogI2lmbmRlZiBFeHRfQVNDSUlfVE9fTmF0aXZlCi0jICBkZWZpbmUg
RXh0X0FTQ0lJX1RPX05hdGl2ZShzdHJpbmcsIGhvc3RudW0sIGhvc3R2ZXIsIGlzdXhhdHQsIGlz
bG9jaGRyKSBcCi0gICAgaWYgKCgoaG9zdG51bSkgPT0gRlNfRkFUXyAmJiBcCi0gICAgICAgICAh
KCgoaXNsb2NoZHIpIHx8IChpc3V4YXR0KSkgJiYgXAotICAgICAgICAgICAoKGhvc3R2ZXIpID09
IDI1IHx8IChob3N0dmVyKSA9PSAyNiB8fCAoaG9zdHZlcikgPT0gNDApKSkgfHwgXAotICAgICAg
ICAoaG9zdG51bSkgPT0gRlNfSFBGU18gfHwgXAotICAgICAgICAoKGhvc3RudW0pID09IEZTX05U
RlNfICYmIChob3N0dmVyKSA9PSA1MCkpIHsgXAotICAgICAgICBfT0VNX0lOVEVSTigoc3RyaW5n
KSk7IFwKLSAgICB9IGVsc2UgeyBcCi0gICAgICAgIF9JU09fSU5URVJOKChzdHJpbmcpKTsgXAot
ICAgIH0KKyMgIGRlZmluZSBFeHRfQVNDSUlfVE9fTmF0aXZlKHN0cmluZywgaG9zdG51bSwgaG9z
dHZlciwgaXN1eGF0dCwgaXNsb2NoZHIpCiAjZW5kaWYKIAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>531</attachid>
            <date>2004-07-27 08:19:03 +0400</date>
            <delta_ts>2004-07-28 00:03:10 +0400</delta_ts>
            <desc>unzip-5.50-alt-iconv.patch</desc>
            <filename>unzip-5.50-alt-iconv.patch</filename>
            <type>text/plain</type>
            <size>12349</size>
            <attacher name="Dmitry Vukolov">dav</attacher>
            
              <data encoding="base64">ZGlmZiAtTnVyIHVuemlwLTUuNTAub3JpZy91bml4L3VuaXguYyB1bnppcC01LjUwL3VuaXgvdW5p
eC5jCi0tLSB1bnppcC01LjUwLm9yaWcvdW5peC91bml4LmMJMjAwMi0wMS0yMiAwMTo1NDo0MiAr
MDMwMAorKysgdW56aXAtNS41MC91bml4L3VuaXguYwkyMDA0LTA3LTI3IDA2OjMwOjU2ICswNDAw
CkBAIC0yOSw2ICsyOSw5IEBACiAjZGVmaW5lIFVOWklQX0lOVEVSTkFMCiAjaW5jbHVkZSAidW56
aXAuaCIKIAorI2luY2x1ZGUgPGljb252Lmg+CisjaW5jbHVkZSA8bGFuZ2luZm8uaD4KKwogI2lm
ZGVmIFNDT19YRU5JWAogIyAgZGVmaW5lIFNZU05ESVIKICNlbHNlICAvKiBTQ08gVW5peCwgQUlY
LCBETklYLCBUSSBTeXNWLCBDb2hlcmVudCA0LngsIC4uLiAqLwpAQCAtMTUyNCwzICsxNTI3LDUw
IEBACiAgICAgfQogfQogI2VuZGlmIC8qIFFMWklQICovCisKKworY2hhciBPRU1fQ1BbTUFYX0NQ
X05BTUVdID0gIkNQODUwIjsKK2NoYXIgSVNPX0NQW01BWF9DUF9OQU1FXSA9ICJDUDEyNTIiOwor
CisvKiBDb252ZXJ0IGEgc3RyaW5nIGZyb20gb25lIGVuY29kaW5nIHRvIHRoZSBjdXJyZW50IGxv
Y2FsZSB1c2luZyBpY29udigpLgorICogQmUgYXMgbm9uLWludHJ1c2l2ZSBhcyBwb3NzaWJsZS4g
SWYgZXJyb3IgaXMgZW5jb3VudGVyZWQgZHVyaW5nIGNvdmVydGlvbgorICoganVzdCBsZWF2ZSB0
aGUgc3RyaW5nIGludGFjdC4gKi8KK3N0YXRpYyB2b2lkIGNoYXJzZXRfdG9faW50ZXJuKGNoYXIg
KnN0cmluZywgY2hhciAqZnJvbV9jaGFyc2V0KQoreworICAgIGljb252X3QgY2Q7CisgICAgY2hh
ciAqcywgKmQsICpidWY7CisgICAgc2l6ZV90IHNsZW4sIGRsZW4sIGJ1ZmxlbjsKKyAgICBjb25z
dCBjaGFyICpsb2NhbF9jaGFyc2V0OworCisgICAgYnVmID0gTlVMTDsKKyAgICBsb2NhbF9jaGFy
c2V0ID0gbmxfbGFuZ2luZm8oQ09ERVNFVCk7CisKKyAgICBpZigoY2QgPSBpY29udl9vcGVuKGxv
Y2FsX2NoYXJzZXQsIGZyb21fY2hhcnNldCkpID09IChpY29udl90KS0xKQorICAgICAgICByZXR1
cm47CisKKyAgICBzbGVuID0gZGxlbiA9IGJ1ZmxlbiA9IHN0cmxlbihzdHJpbmcpOworICAgIHMg
PSBzdHJpbmc7CisgICAgZCA9IGJ1ZiA9IG1hbGxvYyhidWZsZW4gKyAxKTsKKyAgICBpZighZCkK
KyAgICAJZ290byBjbGVhbnVwOworCisgICAgaWYoaWNvbnYoY2QsICZzLCAmc2xlbiwgJmQsICZk
bGVuKSA9PSAoc2l6ZV90KS0xKQorICAgIAlnb3RvIGNsZWFudXA7CisgICAgc3RybmNweShzdHJp
bmcsIGJ1ZiwgYnVmbGVuKTsKKyAgICAKKyAgICBjbGVhbnVwOgorICAgIGZyZWUoYnVmKTsKKyAg
ICBpY29udl9jbG9zZShjZCk7Cit9CisKKy8qIENvbnZlcnQgYSBzdHJpbmcgZnJvbSBPRU1fQ1Ag
dG8gdGhlIGN1cnJlbnQgbG9jYWxlIGNoYXJzZXQuICovCitpbmxpbmUgdm9pZCBvZW1faW50ZXJu
KGNoYXIgKnN0cmluZykKK3sKKyAgICBjaGFyc2V0X3RvX2ludGVybihzdHJpbmcsIE9FTV9DUCk7
Cit9CisKKy8qIENvbnZlcnQgYSBzdHJpbmcgZnJvbSBJU09fQ1AgdG8gdGhlIGN1cnJlbnQgbG9j
YWxlIGNoYXJzZXQuICovCitpbmxpbmUgdm9pZCBpc29faW50ZXJuKGNoYXIgKnN0cmluZykKK3sK
KyAgICBjaGFyc2V0X3RvX2ludGVybihzdHJpbmcsIElTT19DUCk7Cit9CmRpZmYgLU51ciB1bnpp
cC01LjUwLm9yaWcvdW5peC91bnhjZmcuaCB1bnppcC01LjUwL3VuaXgvdW54Y2ZnLmgKLS0tIHVu
emlwLTUuNTAub3JpZy91bml4L3VueGNmZy5oCTIwMDEtMDYtMDQgMDM6Mjc6MTQgKzA0MDAKKysr
IHVuemlwLTUuNTAvdW5peC91bnhjZmcuaAkyMDA0LTA3LTI3IDA1OjU0OjI4ICswNDAwCkBAIC0x
MjMsNCArMTIzLDI2IEBACiAvKiB3aWxkX2RpciwgZGlybmFtZSwgd2lsZG5hbWUsIG1hdGNobmFt
ZVtdLCBkaXJuYW1lbGVuLCBoYXZlX2Rpcm5hbWUsICovCiAvKiAgICBhbmQgbm90Zmlyc3RjYWxs
IGFyZSB1c2VkIGJ5IGRvX3dpbGQoKS4gICAgICAgICAgICAgICAgICAgICAgICAgICovCiAKKwor
I2RlZmluZSBNQVhfQ1BfTkFNRSAyNSAKKyAgIAorI2lmZGVmIFNFVExPQ0FMRQorIyAgdW5kZWYg
U0VUTE9DQUxFCisjZW5kaWYKKyNkZWZpbmUgU0VUTE9DQUxFKGNhdGVnb3J5LCBsb2NhbGUpIHNl
dGxvY2FsZShjYXRlZ29yeSwgbG9jYWxlKQorI2luY2x1ZGUgPGxvY2FsZS5oPgorICAgCisjaWZk
ZWYgX0lTT19JTlRFUk4KKyMgIHVuZGVmIF9JU09fSU5URVJOCisjZW5kaWYKKyNkZWZpbmUgX0lT
T19JTlRFUk4oc3RyMSkgaXNvX2ludGVybihzdHIxKQorCisjaWZkZWYgX09FTV9JTlRFUk4KKyMg
IHVuZGVmIF9PRU1fSU5URVJOCisjZW5kaWYKKyNpZm5kZWYgSVpfT0VNMklTT19BUlJBWQorIyAg
ZGVmaW5lIElaX09FTTJJU09fQVJSQVkKKyNlbmRpZgorI2RlZmluZSBfT0VNX0lOVEVSTihzdHIx
KSBvZW1faW50ZXJuKHN0cjEpCisKICNlbmRpZiAvKiAhX191bnhjZmdfaCAqLwpkaWZmIC1OdXIg
dW56aXAtNS41MC5vcmlnL3VuemlwLmMgdW56aXAtNS41MC91bnppcC5jCi0tLSB1bnppcC01LjUw
Lm9yaWcvdW56aXAuYwkyMDAyLTAxLTI3IDIyOjI2OjE2ICswMzAwCisrKyB1bnppcC01LjUwL3Vu
emlwLmMJMjAwNC0wNy0yNyAwNTo1Nzo0NyArMDQwMApAQCAtMzA0LDExICszMDQsMjEgQEAKICAg
LTIgIGp1c3QgZmlsZW5hbWVzIGJ1dCBhbGxvdyAtaC8tdC8teiAgLWwgIGxvbmcgVW5peCBcImxz
IC1sXCIgZm9ybWF0XG5cCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC12ICB2ZXJib3NlLCBtdWx0aS1wYWdlIGZvcm1hdFxuIjsKIAorI2lmbmRlZiBVTklYCiBzdGF0
aWMgWkNPTlNUIGNoYXIgRmFyIFppcEluZm9Vc2FnZUxpbmUzW10gPSAibWlzY2VsbGFuZW91cyBv
cHRpb25zOlxuXAogICAtaCAgcHJpbnQgaGVhZGVyIGxpbmUgICAgICAgLXQgIHByaW50IHRvdGFs
cyBmb3IgbGlzdGVkIGZpbGVzIG9yIGZvciBhbGxcblwKICAgLXogIHByaW50IHppcGZpbGUgY29t
bWVudCAgJWMtVCVjIHByaW50IGZpbGUgdGltZXMgaW4gc29ydGFibGUgZGVjaW1hbCBmb3JtYXRc
CiBcbiAlYy1DJWMgYmUgY2FzZS1pbnNlbnNpdGl2ZSAgICVzXAogICAteCAgZXhjbHVkZSBmaWxl
bmFtZXMgdGhhdCBmb2xsb3cgZnJvbSBsaXN0aW5nXG4iOworI2Vsc2UgLyogVU5JWCAqLworc3Rh
dGljIFpDT05TVCBjaGFyIEZhciBaaXBJbmZvVXNhZ2VMaW5lM1tdID0gIm1pc2NlbGxhbmVvdXMg
b3B0aW9uczpcblwKKyAgLWggIHByaW50IGhlYWRlciBsaW5lICAgICAgIC10ICBwcmludCB0b3Rh
bHMgZm9yIGxpc3RlZCBmaWxlcyBvciBmb3IgYWxsXG5cCisgIC16ICBwcmludCB6aXBmaWxlIGNv
bW1lbnQgICVjLVQlYyBwcmludCBmaWxlIHRpbWVzIGluIHNvcnRhYmxlIGRlY2ltYWwgZm9ybWF0
XAorXG4gJWMtQyVjIGJlIGNhc2UtaW5zZW5zaXRpdmUgICAlc1wKKyAgLXggIGV4Y2x1ZGUgZmls
ZW5hbWVzIHRoYXQgZm9sbG93IGZyb20gbGlzdGluZ1xuXAorICAtTyBDSEFSU0VUICBzcGVjaWZ5
IGEgY2hhcmFjdGVyIGVuY29kaW5nIGZvciBET1MsIFdpbmRvd3MgYW5kIE9TLzIgYXJjaGl2ZXNc
blwKKyAgLUkgQ0hBUlNFVCAgc3BlY2lmeSBhIGNoYXJhY3RlciBlbmNvZGluZyBmb3IgVU5JWCBh
bmQgb3RoZXIgYXJjaGl2ZXNcbiI7CisjZW5kaWYgLyogIVVOSVggKi8KICNpZmRlZiBNT1JFCiAj
aWZkZWYgVk1TCiAgICBzdGF0aWMgWkNPTlNUIGNoYXIgRmFyIFppcEluZm9Vc2FnZUxpbmU0W10g
PQpAQCAtNTg5LDYgKzU5OSw3IEBACiAjZW5kaWYgLyogP1ZNX0NNUyAqLwogI2VuZGlmIC8qID9N
QUNPUyAqLwogCisjaWZuZGVmIFVOSVgKIHN0YXRpYyBaQ09OU1QgY2hhciBGYXIgVW56aXBVc2Fn
ZUxpbmU0W10gPSAiXAogbW9kaWZpZXJzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLXEgIHF1aWV0IG1vZGUgKC1xcSA9PiBxdWlldGVyKVxuXAogICAtbiAgbmV2ZXIgb3Zlcndy
aXRlIGV4aXN0aW5nIGZpbGVzICAgICAgICAgLWEgIGF1dG8tY29udmVydCBhbnkgdGV4dCBmaWxl
c1xuXApAQCAtNTk2LDYgKzYwNywxNyBAQAogIC1qICBqdW5rIHBhdGhzIChkbyBub3QgbWFrZSBk
aXJlY3RvcmllcykgICAtdiAgYmUgdmVyYm9zZS9wcmludCB2ZXJzaW9uIGluZm9cblwKICAlYy1D
JWMgbWF0Y2ggZmlsZW5hbWVzIGNhc2UtaW5zZW5zaXRpdmVseSAgICAlYy1MJWMgbWFrZSAoc29t
ZSkgbmFtZXMgXAogbG93ZXJjYXNlXG4gJS00MnMgJWMtViVjIHJldGFpbiBWTVMgdmVyc2lvbiBu
dW1iZXJzXG4lcyI7CisjZWxzZSAvKiBVTklYICovCitzdGF0aWMgWkNPTlNUIGNoYXIgRmFyIFVu
emlwVXNhZ2VMaW5lNFtdID0gIlwKK21vZGlmaWVyczogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC1xICBxdWlldCBtb2RlICgtcXEgPT4gcXVpZXRlcilcblwKKyAgLW4gIG5ldmVy
IG92ZXJ3cml0ZSBleGlzdGluZyBmaWxlcyAgICAgICAgIC1hICBhdXRvLWNvbnZlcnQgYW55IHRl
eHQgZmlsZXNcblwKKyAgLW8gIG92ZXJ3cml0ZSBmaWxlcyBXSVRIT1VUIHByb21wdGluZyAgICAg
IC1hYSB0cmVhdCBBTEwgZmlsZXMgYXMgdGV4dFxuIFwKKyAtaiAganVuayBwYXRocyAoZG8gbm90
IG1ha2UgZGlyZWN0b3JpZXMpICAgLXYgIGJlIHZlcmJvc2UvcHJpbnQgdmVyc2lvbiBpbmZvXG5c
CisgJWMtQyVjIG1hdGNoIGZpbGVuYW1lcyBjYXNlLWluc2Vuc2l0aXZlbHkgICAgJWMtTCVjIG1h
a2UgKHNvbWUpIG5hbWVzIFwKK2xvd2VyY2FzZVxuICUtNDJzICVjLVYlYyByZXRhaW4gVk1TIHZl
cnNpb24gbnVtYmVyc1xuJXNcblwKKyAgLU8gQ0hBUlNFVCAgc3BlY2lmeSBhIGNoYXJhY3RlciBl
bmNvZGluZyBmb3IgRE9TLCBXaW5kb3dzIGFuZCBPUy8yIGFyY2hpdmVzXG5cCisgIC1JIENIQVJT
RVQgIHNwZWNpZnkgYSBjaGFyYWN0ZXIgZW5jb2RpbmcgZm9yIFVOSVggYW5kIG90aGVyIGFyY2hp
dmVzXG5cbiI7CisjZW5kaWYgLyogIVVOSVggKi8KIAogc3RhdGljIFpDT05TVCBjaGFyIEZhciBV
bnppcFVzYWdlTGluZTVbXSA9ICJcCiBFeGFtcGxlcyAoc2VlIHVuemlwLnR4dCBmb3IgbW9yZSBp
bmZvKTpcblwKQEAgLTEwNzAsNiArMTA5MiwxMSBAQAogICAgIGFyZ2MgPSAqcGFyZ2M7CiAgICAg
YXJndiA9ICpwYXJndjsKIAorI2lmZGVmIFVOSVgKKyAgICBleHRlcm4gY2hhciBPRU1fQ1BbTUFY
X0NQX05BTUVdOworICAgIGV4dGVybiBjaGFyIElTT19DUFtNQVhfQ1BfTkFNRV07CisjZW5kaWYK
KyAgICAKICAgICB3aGlsZSAoKythcmd2LCAoLS1hcmdjID4gMCAmJiAqYXJndiAhPSBOVUxMICYm
ICoqYXJndiA9PSAnLScpKSB7CiAgICAgICAgIHMgPSAqYXJndiArIDE7CiAgICAgICAgIHdoaWxl
ICgoYyA9ICpzKyspICE9IDApIHsgICAgLyogIiE9IDAiOiAgcHJldmVudCBUdXJibyBDIHdhcm5p
bmcgKi8KQEAgLTEyMzMsNiArMTI2MCwzNSBAQAogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmICAvKiBNQUNPUyAqLworI2lmZGVmIFVOSVgK
KyAgICAJCQljYXNlICgnSScpOgorICAgICAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIEluZm8oc2xpZGUsIDB4NDAxLCAoKGNoYXIgKilzbGlk
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImVycm9yOiAgZW5jb2RpbmdzIGNhbid0IGJl
IG5lZ2F0ZWQiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4oUEtfUEFSQU0pOwor
ICAgIAkJCQl9IGVsc2UgeworICAgIAkJCQkJaWYoKnMpIHsgLyogSGFuZGxlIHRoZSAtSWNoYXJz
ZXQgY2FzZSAqLworICAgIAkJCQkJCS8qIEFzc3VtZSB0aGF0IGNoYXJzZXRzIGNhbid0IHN0YXJ0
IHdpdGggYSBkYXNoIHRvIHNwb3QgYXJndW1lbnRzIG1pc3VzZSAqLworICAgIAkJCQkJCWlmKCpz
ID09ICctJykgeyAKKyAgICAJICAgICAgICAgICAgICAgICAgICAgICAgSW5mbyhzbGlkZSwgMHg0
MDEsICgoY2hhciAqKXNsaWRlLAorICAgICAgICAJCSAgICAgICAgICAgICAgICAgICJlcnJvcjog
IGEgdmFsaWQgY2hhcmFjdGVyIGVuY29kaW5nIHNob3VsZCBmb2xsb3cgdGhlIC1JIGFyZ3VtZW50
IikpOworICAgIAkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4oUEtfUEFSQU0pOyAKKyAg
ICAJCQkJCQl9CisgICAgCQkJCQkJc3RybmNweShJU09fQ1AsIHMsIHNpemVvZihJU09fQ1ApKTsK
KyAgICAJCQkJCX0gZWxzZSB7IC8qIC1JIGNoYXJzZXQgKi8KKyAgICAJCQkJCQkrK2FyZ3Y7Cisg
ICAgCQkJCQkJaWYoISgtLWFyZ2MgPiAwICYmICphcmd2ICE9IE5VTEwgJiYgKiphcmd2ICE9ICct
JykpIHsKKyAgICAJICAgICAgICAgICAgICAgICAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsICgo
Y2hhciAqKXNsaWRlLAorICAgICAgICAJCSAgICAgICAgICAgICAgICAgICJlcnJvcjogIGEgdmFs
aWQgY2hhcmFjdGVyIGVuY29kaW5nIHNob3VsZCBmb2xsb3cgdGhlIC1JIGFyZ3VtZW50IikpOwor
ICAgIAkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4oUEtfUEFSQU0pOyAKKyAgICAJCQkJ
CQl9CisgICAgCQkJCQkJcyA9ICphcmd2OworICAgIAkJCQkJCXN0cm5jcHkoSVNPX0NQLCBzLCBz
aXplb2YoSVNPX0NQKSk7CisgICAgCQkJCQl9CisgICAgCQkJCQl3aGlsZSgqKCsrcykpOyAvKiBO
byBwYXJhbXMgc3RyYWlnaHQgYWZ0ZXIgY2hhcnNldCBuYW1lICovCisgICAgCQkJCX0KKyAgICAJ
CQkJYnJlYWs7CisjZW5kaWYgLyogP1VOSVggKi8KICAgICAgICAgICAgICAgICBjYXNlICgnaicp
OiAgICAvKiBqdW5rIHBhdGhuYW1lcy9kaXJlY3Rvcnkgc3RydWN0dXJlICovCiAgICAgICAgICAg
ICAgICAgICAgIGlmIChuZWdhdGl2ZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHVPLmpmbGFn
ID0gRkFMU0UsIG5lZ2F0aXZlID0gMDsKQEAgLTEyOTksNiArMTM1NSwzNSBAQAogICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICsrdU8ub3ZlcndyaXRl
X2FsbDsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisjaWZkZWYgVU5JWAorICAgIAkJCWNh
c2UgKCdPJyk6CisgICAgICAgICAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZXJyb3I6ICBlbmNvZGluZ3MgY2FuJ3QgYmUgbmVnYXRlZCIp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybihQS19QQVJBTSk7CisgICAgCQkJCX0g
ZWxzZSB7CisgICAgCQkJCQlpZigqcykgeyAvKiBIYW5kbGUgdGhlIC1PY2hhcnNldCBjYXNlICov
CisgICAgCQkJCQkJLyogQXNzdW1lIHRoYXQgY2hhcnNldHMgY2FuJ3Qgc3RhcnQgd2l0aCBhIGRh
c2ggdG8gc3BvdCBhcmd1bWVudHMgbWlzdXNlICovCisgICAgCQkJCQkJaWYoKnMgPT0gJy0nKSB7
IAorICAgIAkgICAgICAgICAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFy
ICopc2xpZGUsCisgICAgICAgIAkJICAgICAgICAgICAgICAgICAgImVycm9yOiAgYSB2YWxpZCBj
aGFyYWN0ZXIgZW5jb2Rpbmcgc2hvdWxkIGZvbGxvdyB0aGUgLUkgYXJndW1lbnQiKSk7CisgICAg
CSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybihQS19QQVJBTSk7IAorICAgIAkJCQkJCX0K
KyAgICAJCQkJCQlzdHJuY3B5KE9FTV9DUCwgcywgc2l6ZW9mKE9FTV9DUCkpOworICAgIAkJCQkJ
fSBlbHNlIHsgLyogLU8gY2hhcnNldCAqLworICAgIAkJCQkJCSsrYXJndjsKKyAgICAJCQkJCQlp
ZighKC0tYXJnYyA+IDAgJiYgKmFyZ3YgIT0gTlVMTCAmJiAqKmFyZ3YgIT0gJy0nKSkgeworICAg
IAkgICAgICAgICAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFyICopc2xp
ZGUsCisgICAgICAgIAkJICAgICAgICAgICAgICAgICAgImVycm9yOiAgYSB2YWxpZCBjaGFyYWN0
ZXIgZW5jb2Rpbmcgc2hvdWxkIGZvbGxvdyB0aGUgLU8gYXJndW1lbnQiKSk7CisgICAgCSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybihQS19QQVJBTSk7IAorICAgIAkJCQkJCX0KKyAgICAJ
CQkJCQlzID0gKmFyZ3Y7CisgICAgCQkJCQkJc3RybmNweShPRU1fQ1AsIHMsIHNpemVvZihPRU1f
Q1ApKTsKKyAgICAJCQkJCX0KKyAgICAJCQkJCXdoaWxlKCooKytzKSk7IC8qIE5vIHBhcmFtcyBz
dHJhaWdodCBhZnRlciBjaGFyc2V0IG5hbWUgKi8KKyAgICAJCQkJfQorICAgIAkJCQlicmVhazsK
KyNlbmRpZiAvKiA/VU5JWCAqLwogICAgICAgICAgICAgICAgIGNhc2UgKCdwJyk6ICAgIC8qIHBp
cGVzOiAgZXh0cmFjdCB0byBzdGRvdXQsIG5vIG1lc3NhZ2VzICovCiAgICAgICAgICAgICAgICAg
ICAgIGlmIChuZWdhdGl2ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgdU8uY2ZsYWcgPSBG
QUxTRTsKZGlmZiAtTnVyIHVuemlwLTUuNTAub3JpZy91bnpwcml2LmggdW56aXAtNS41MC91bnpw
cml2LmgKLS0tIHVuemlwLTUuNTAub3JpZy91bnpwcml2LmgJMjAwMi0wMi0xNyAyMDowMTo0OCAr
MDMwMAorKysgdW56aXAtNS41MC91bnpwcml2LmgJMjAwNC0wNy0yNyAwNTo1NDoxNiArMDQwMApA
QCAtMTEwMyw3ICsxMTAzLDkgQEAKICMgIGRlZmluZSBsYXN0Y2hhcihwdHIsIGxlbikgKHB0clso
bGVuKS0xXSkKICMgIGRlZmluZSBNQlNDSFIoc3RyLCBjKSBzdHJjaHIoc3RyLCBjKQogIyAgZGVm
aW5lIE1CU1JDSFIoc3RyLCBjKSBzdHJyY2hyKHN0ciwgYykKLSMgIGRlZmluZSBTRVRMT0NBTEUo
Y2F0ZWdvcnksIGxvY2FsZSkKKyMgIGlmbmRlZiBTRVRMT0NBTEUKKyMgICAgZGVmaW5lIFNFVExP
Q0FMRShjYXRlZ29yeSwgbG9jYWxlKQorIyAgZW5kaWYKICNlbmRpZiAvKiA/X01CQ1MgKi8KICNk
ZWZpbmUgSU5DU1RSKHB0cikgUFJFSU5DU1RSKHB0cikKIApkaWZmIC1OdXIgdW56aXAtNS41MC5v
cmlnL3ppcGluZm8uYyB1bnppcC01LjUwL3ppcGluZm8uYwotLS0gdW56aXAtNS41MC5vcmlnL3pp
cGluZm8uYwkyMDAxLTEyLTI2IDAxOjU2OjQwICswMzAwCisrKyB1bnppcC01LjUwL3ppcGluZm8u
YwkyMDA0LTA3LTI3IDA1OjU0OjE2ICswNDAwCkBAIC00NDAsNiArNDQwLDEwIEBACiAgICAgaW50
ICAgIHRmbGFnX3NsbT1UUlVFLCB0ZmxhZ18ydj1GQUxTRTsKICAgICBpbnQgICAgZXhwbGljaXRf
aD1GQUxTRSwgZXhwbGljaXRfdD1GQUxTRTsKIAorI2lmZGVmIFVOSVgKKyAgICBleHRlcm4gY2hh
ciBPRU1fQ1BbTUFYX0NQX05BTUVdOworICAgIGV4dGVybiBjaGFyIElTT19DUFtNQVhfQ1BfTkFN
RV07CisjZW5kaWYKIAogI2lmZGVmIE1BQ09TCiAgICAgdU8ubGZsYWcgPSBMRkxBRzsgICAgICAg
ICAvKiByZXNldCBkZWZhdWx0IG9uIGVhY2ggY2FsbCAqLwpAQCAtNDg0LDYgKzQ4OCwzNSBAQAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVPLmxmbGFnID0gMDsKICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyNpZmRlZiBVTklYCisgICAgCQkJ
Y2FzZSAoJ0knKToKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5lZ2F0aXZlKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFyICopc2xpZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICJlcnJvcjogIGVuY29kaW5ncyBjYW4ndCBiZSBuZWdhdGVk
IikpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuKFBLX1BBUkFNKTsKKyAgICAJCQkJ
fSBlbHNlIHsKKyAgICAJCQkJCWlmKCpzKSB7IC8qIEhhbmRsZSB0aGUgLUljaGFyc2V0IGNhc2Ug
Ki8KKyAgICAJCQkJCQkvKiBBc3N1bWUgdGhhdCBjaGFyc2V0cyBjYW4ndCBzdGFydCB3aXRoIGEg
ZGFzaCB0byBzcG90IGFyZ3VtZW50cyBtaXN1c2UgKi8KKyAgICAJCQkJCQlpZigqcyA9PSAnLScp
IHsgCisgICAgCSAgICAgICAgICAgICAgICAgICAgICAgIEluZm8oc2xpZGUsIDB4NDAxLCAoKGNo
YXIgKilzbGlkZSwKKyAgICAgICAgCQkgICAgICAgICAgICAgICAgICAiZXJyb3I6ICBhIHZhbGlk
IGNoYXJhY3RlciBlbmNvZGluZyBzaG91bGQgZm9sbG93IHRoZSAtSSBhcmd1bWVudCIpKTsKKyAg
ICAJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuKFBLX1BBUkFNKTsgCisgICAgCQkJCQkJ
fQorICAgIAkJCQkJCXN0cm5jcHkoSVNPX0NQLCBzLCBzaXplb2YoSVNPX0NQKSk7CisgICAgCQkJ
CQl9IGVsc2UgeyAvKiAtSSBjaGFyc2V0ICovCisgICAgCQkJCQkJKythcmd2OworICAgIAkJCQkJ
CWlmKCEoLS1hcmdjID4gMCAmJiAqYXJndiAhPSBOVUxMICYmICoqYXJndiAhPSAnLScpKSB7Cisg
ICAgCSAgICAgICAgICAgICAgICAgICAgICAgIEluZm8oc2xpZGUsIDB4NDAxLCAoKGNoYXIgKilz
bGlkZSwKKyAgICAgICAgCQkgICAgICAgICAgICAgICAgICAiZXJyb3I6ICBhIHZhbGlkIGNoYXJh
Y3RlciBlbmNvZGluZyBzaG91bGQgZm9sbG93IHRoZSAtSSBhcmd1bWVudCIpKTsKKyAgICAJICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuKFBLX1BBUkFNKTsgCisgICAgCQkJCQkJfQorICAg
IAkJCQkJCXMgPSAqYXJndjsKKyAgICAJCQkJCQlzdHJuY3B5KElTT19DUCwgcywgc2l6ZW9mKElT
T19DUCkpOworICAgIAkJCQkJfQorICAgIAkJCQkJd2hpbGUoKigrK3MpKTsgLyogTm8gcGFyYW1z
IHN0cmFpZ2h0IGFmdGVyIGNoYXJzZXQgbmFtZSAqLworICAgIAkJCQl9CisgICAgCQkJCWJyZWFr
OworI2VuZGlmIC8qID9VTklYICovCiAgICAgICAgICAgICAgICAgY2FzZSAnbCc6ICAgICAgLyog
bG9uZ2VyIGZvcm0gb2YgImxzIC1sIiB0eXBlIGxpc3RpbmcgKi8KICAgICAgICAgICAgICAgICAg
ICAgaWYgKG5lZ2F0aXZlKQogICAgICAgICAgICAgICAgICAgICAgICAgdU8ubGZsYWcgPSAtMiwg
bmVnYXRpdmUgPSAwOwpAQCAtNTA0LDYgKzUzNywzNSBAQAogICAgICAgICAgICAgICAgICAgICAg
ICAgRy5NX2ZsYWcgPSBUUlVFOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICNlbmRpZgor
I2lmZGVmIFVOSVgKKyAgICAJCQljYXNlICgnTycpOgorICAgICAgICAgICAgICAgICAgICBpZiAo
bmVnYXRpdmUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEluZm8oc2xpZGUsIDB4NDAxLCAo
KGNoYXIgKilzbGlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImVycm9yOiAgZW5jb2Rp
bmdzIGNhbid0IGJlIG5lZ2F0ZWQiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4o
UEtfUEFSQU0pOworICAgIAkJCQl9IGVsc2UgeworICAgIAkJCQkJaWYoKnMpIHsgLyogSGFuZGxl
IHRoZSAtT2NoYXJzZXQgY2FzZSAqLworICAgIAkJCQkJCS8qIEFzc3VtZSB0aGF0IGNoYXJzZXRz
IGNhbid0IHN0YXJ0IHdpdGggYSBkYXNoIHRvIHNwb3QgYXJndW1lbnRzIG1pc3VzZSAqLworICAg
IAkJCQkJCWlmKCpzID09ICctJykgeyAKKyAgICAJICAgICAgICAgICAgICAgICAgICAgICAgSW5m
byhzbGlkZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLAorICAgICAgICAJCSAgICAgICAgICAgICAg
ICAgICJlcnJvcjogIGEgdmFsaWQgY2hhcmFjdGVyIGVuY29kaW5nIHNob3VsZCBmb2xsb3cgdGhl
IC1JIGFyZ3VtZW50IikpOworICAgIAkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4oUEtf
UEFSQU0pOyAKKyAgICAJCQkJCQl9CisgICAgCQkJCQkJc3RybmNweShPRU1fQ1AsIHMsIHNpemVv
ZihPRU1fQ1ApKTsKKyAgICAJCQkJCX0gZWxzZSB7IC8qIC1PIGNoYXJzZXQgKi8KKyAgICAJCQkJ
CQkrK2FyZ3Y7CisgICAgCQkJCQkJaWYoISgtLWFyZ2MgPiAwICYmICphcmd2ICE9IE5VTEwgJiYg
Kiphcmd2ICE9ICctJykpIHsKKyAgICAJICAgICAgICAgICAgICAgICAgICAgICAgSW5mbyhzbGlk
ZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLAorICAgICAgICAJCSAgICAgICAgICAgICAgICAgICJl
cnJvcjogIGEgdmFsaWQgY2hhcmFjdGVyIGVuY29kaW5nIHNob3VsZCBmb2xsb3cgdGhlIC1PIGFy
Z3VtZW50IikpOworICAgIAkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4oUEtfUEFSQU0p
OyAKKyAgICAJCQkJCQl9CisgICAgCQkJCQkJcyA9ICphcmd2OworICAgIAkJCQkJCXN0cm5jcHko
T0VNX0NQLCBzLCBzaXplb2YoT0VNX0NQKSk7CisgICAgCQkJCQl9CisgICAgCQkJCQl3aGlsZSgq
KCsrcykpOyAvKiBObyBwYXJhbXMgc3RyYWlnaHQgYWZ0ZXIgY2hhcnNldCBuYW1lICovCisgICAg
CQkJCX0KKyAgICAJCQkJYnJlYWs7CisjZW5kaWYgLyogP1VOSVggKi8KICAgICAgICAgICAgICAg
ICBjYXNlICdzJzogICAgICAvKiBkZWZhdWx0OiAgc2hvcnRlciAibHMgLWwiIHR5cGUgbGlzdGlu
ZyAqLwogICAgICAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUpCiAgICAgICAgICAgICAgICAg
ICAgICAgICB1Ty5sZmxhZyA9IC0yLCBuZWdhdGl2ZSA9IDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>532</attachid>
            <date>2004-07-28 00:03:10 +0400</date>
            <delta_ts>2004-07-28 00:03:10 +0400</delta_ts>
            <desc>unzip-5.50-alt-iconv-v1.1.patch</desc>
            <filename>unzip-5.50-alt-iconv-v1.1.patch</filename>
            <type>text/plain</type>
            <size>14136</size>
            <attacher name="Dmitry Vukolov">dav</attacher>
            
              <data encoding="base64">ZGlmZiAtTnVyIHVuemlwLTUuNTAub3JpZy91bml4L3VuaXguYyB1bnppcC01LjUwL3VuaXgvdW5p
eC5jCi0tLSB1bnppcC01LjUwLm9yaWcvdW5peC91bml4LmMJMjAwMi0wMS0yMiAwMTo1NDo0MiAr
MDMwMAorKysgdW56aXAtNS41MC91bml4L3VuaXguYwkyMDA0LTA3LTI3IDIyOjQyOjE5ICswNDAw
CkBAIC0yOSw2ICsyOSw5IEBACiAjZGVmaW5lIFVOWklQX0lOVEVSTkFMCiAjaW5jbHVkZSAidW56
aXAuaCIKIAorI2luY2x1ZGUgPGljb252Lmg+CisjaW5jbHVkZSA8bGFuZ2luZm8uaD4KKwogI2lm
ZGVmIFNDT19YRU5JWAogIyAgZGVmaW5lIFNZU05ESVIKICNlbHNlICAvKiBTQ08gVW5peCwgQUlY
LCBETklYLCBUSSBTeXNWLCBDb2hlcmVudCA0LngsIC4uLiAqLwpAQCAtMTUyNCwzICsxNTI3LDg5
IEBACiAgICAgfQogfQogI2VuZGlmIC8qIFFMWklQICovCisKKwordHlwZWRlZiBzdHJ1Y3Qgewor
ICAgIGNoYXIgKmxvY2FsX2NoYXJzZXQ7CisgICAgY2hhciAqYXJjaGl2ZV9jaGFyc2V0OworfSBD
SEFSU0VUX01BUDsKKworLyogQSBtYXBwaW5nIG9mIGxvY2FsIDwtPiBhcmNoaXZlIGNoYXJzZXRz
IHVzZWQgYnkgZGVmYXVsdCB0byBjb252ZXJ0IGZpbGVuYW1lcworICogb2YgRE9TL1dpbmRvd3Mg
WmlwIGFyY2hpdmVzLiBDdXJyZW50bHkgdmVyeSBiYXNpYy4gKi8KK3N0YXRpYyBDSEFSU0VUX01B
UCBkb3NfY2hhcnNldF9tYXBbXSA9IHsKKyAgICB7ICJBTlNJX1gzLjQtMTk2OCIsICJDUDg1MCIg
fSwKKyAgICB7ICJJU08tODg1OS0xIiwgIkNQODUwIiB9LAorICAgIHsgIkNQMTI1MiIsICJDUDg1
MCIgfSwKKyAgICB7ICJDUDEyNTEiLCAiQ1A4NjYiIH0sCisgICAgeyAiS09JOC1SIiwgIkNQODY2
IiB9LAorICAgIHsgIktPSTgtVSIsICJDUDg2NiIgfSwKKyAgICB7ICJJU08tODg1OS01IiwgIkNQ
ODY2IiB9Cit9OworCitjaGFyIE9FTV9DUFtNQVhfQ1BfTkFNRV0gPSAiIjsKK2NoYXIgSVNPX0NQ
W01BWF9DUF9OQU1FXSA9ICIiOworCisvKiBUcnkgdG8gZ3Vlc3MgdGhlIGRlZmF1bHQgdmFsdWUg
b2YgT0VNX0NQIGJhc2VkIG9uIHRoZSBjdXJyZW50IGxvY2FsZS4KKyAqIElTT19DUCBpcyBsZWZ0
IGFsb25lIGZvciBub3cuICovCit2b2lkIGluaXRfY29udmVyc2lvbl9jaGFyc2V0cygpCit7Cisg
ICAgY29uc3QgY2hhciAqbG9jYWxfY2hhcnNldDsKKyAgICBpbnQgaTsKKworICAgIC8qIE1ha2Ug
YSBndWVzcyBvbmx5IGlmIE9FTV9DUCBub3QgYWxyZWFkeSBzZXQuICovIAorICAgIGlmKCpPRU1f
Q1AgPT0gJ1wwJykgeworICAgIAlsb2NhbF9jaGFyc2V0ID0gbmxfbGFuZ2luZm8oQ09ERVNFVCk7
CisgICAgCWZvcihpID0gMDsgaSA8IHNpemVvZihkb3NfY2hhcnNldF9tYXApL3NpemVvZihDSEFS
U0VUX01BUCk7IGkrKykKKyAgICAJCWlmKCFzdHJjYXNlY21wKGxvY2FsX2NoYXJzZXQsIGRvc19j
aGFyc2V0X21hcFtpXS5sb2NhbF9jaGFyc2V0KSkgeworICAgIAkJCXN0cm5jcHkoT0VNX0NQLCBk
b3NfY2hhcnNldF9tYXBbaV0uYXJjaGl2ZV9jaGFyc2V0LAorICAgIAkJCQkJc2l6ZW9mKE9FTV9D
UCkpOworICAgIAkJCWJyZWFrOworICAgIAkJfQorICAgIH0KK30KKworLyogQ29udmVydCBhIHN0
cmluZyBmcm9tIG9uZSBlbmNvZGluZyB0byB0aGUgY3VycmVudCBsb2NhbGUgdXNpbmcgaWNvbnYo
KS4KKyAqIEJlIGFzIG5vbi1pbnRydXNpdmUgYXMgcG9zc2libGUuIElmIGVycm9yIGlzIGVuY291
bnRlcmVkIGR1cmluZyBjb3ZlcnRpb24KKyAqIGp1c3QgbGVhdmUgdGhlIHN0cmluZyBpbnRhY3Qu
ICovCitzdGF0aWMgdm9pZCBjaGFyc2V0X3RvX2ludGVybihjaGFyICpzdHJpbmcsIGNoYXIgKmZy
b21fY2hhcnNldCkKK3sKKyAgICBpY29udl90IGNkOworICAgIGNoYXIgKnMsICpkLCAqYnVmOwor
ICAgIHNpemVfdCBzbGVuLCBkbGVuLCBidWZsZW47CisgICAgY29uc3QgY2hhciAqbG9jYWxfY2hh
cnNldDsKKworICAgIGlmKCpmcm9tX2NoYXJzZXQgPT0gJ1wwJykKKyAgICAJcmV0dXJuOworCisg
ICAgYnVmID0gTlVMTDsKKyAgICBsb2NhbF9jaGFyc2V0ID0gbmxfbGFuZ2luZm8oQ09ERVNFVCk7
CisKKyAgICBpZigoY2QgPSBpY29udl9vcGVuKGxvY2FsX2NoYXJzZXQsIGZyb21fY2hhcnNldCkp
ID09IChpY29udl90KS0xKQorICAgICAgICByZXR1cm47CisKKyAgICBzbGVuID0gZGxlbiA9IGJ1
ZmxlbiA9IHN0cmxlbihzdHJpbmcpOworICAgIHMgPSBzdHJpbmc7CisgICAgZCA9IGJ1ZiA9IG1h
bGxvYyhidWZsZW4gKyAxKTsKKyAgICBpZighZCkKKyAgICAJZ290byBjbGVhbnVwOworCisgICAg
aWYoaWNvbnYoY2QsICZzLCAmc2xlbiwgJmQsICZkbGVuKSA9PSAoc2l6ZV90KS0xKQorICAgIAln
b3RvIGNsZWFudXA7CisgICAgc3RybmNweShzdHJpbmcsIGJ1ZiwgYnVmbGVuKTsKKyAgICAKKyAg
ICBjbGVhbnVwOgorICAgIGZyZWUoYnVmKTsKKyAgICBpY29udl9jbG9zZShjZCk7Cit9CisKKy8q
IENvbnZlcnQgYSBzdHJpbmcgZnJvbSBPRU1fQ1AgdG8gdGhlIGN1cnJlbnQgbG9jYWxlIGNoYXJz
ZXQuICovCitpbmxpbmUgdm9pZCBvZW1faW50ZXJuKGNoYXIgKnN0cmluZykKK3sKKyAgICBjaGFy
c2V0X3RvX2ludGVybihzdHJpbmcsIE9FTV9DUCk7Cit9CisKKy8qIENvbnZlcnQgYSBzdHJpbmcg
ZnJvbSBJU09fQ1AgdG8gdGhlIGN1cnJlbnQgbG9jYWxlIGNoYXJzZXQuICovCitpbmxpbmUgdm9p
ZCBpc29faW50ZXJuKGNoYXIgKnN0cmluZykKK3sKKyAgICBjaGFyc2V0X3RvX2ludGVybihzdHJp
bmcsIElTT19DUCk7Cit9CmRpZmYgLU51ciB1bnppcC01LjUwLm9yaWcvdW5peC91bnhjZmcuaCB1
bnppcC01LjUwL3VuaXgvdW54Y2ZnLmgKLS0tIHVuemlwLTUuNTAub3JpZy91bml4L3VueGNmZy5o
CTIwMDEtMDYtMDQgMDM6Mjc6MTQgKzA0MDAKKysrIHVuemlwLTUuNTAvdW5peC91bnhjZmcuaAky
MDA0LTA3LTI3IDIyOjQyOjE5ICswNDAwCkBAIC0xMjMsNCArMTIzLDMwIEBACiAvKiB3aWxkX2Rp
ciwgZGlybmFtZSwgd2lsZG5hbWUsIG1hdGNobmFtZVtdLCBkaXJuYW1lbGVuLCBoYXZlX2Rpcm5h
bWUsICovCiAvKiAgICBhbmQgbm90Zmlyc3RjYWxsIGFyZSB1c2VkIGJ5IGRvX3dpbGQoKS4gICAg
ICAgICAgICAgICAgICAgICAgICAgICovCiAKKworI2RlZmluZSBNQVhfQ1BfTkFNRSAyNSAKKyAg
IAorI2lmZGVmIFNFVExPQ0FMRQorIyAgdW5kZWYgU0VUTE9DQUxFCisjZW5kaWYKKyNkZWZpbmUg
U0VUTE9DQUxFKGNhdGVnb3J5LCBsb2NhbGUpIHNldGxvY2FsZShjYXRlZ29yeSwgbG9jYWxlKQor
I2luY2x1ZGUgPGxvY2FsZS5oPgorICAgCisjaWZkZWYgX0lTT19JTlRFUk4KKyMgIHVuZGVmIF9J
U09fSU5URVJOCisjZW5kaWYKKyNkZWZpbmUgX0lTT19JTlRFUk4oc3RyMSkgaXNvX2ludGVybihz
dHIxKQorCisjaWZkZWYgX09FTV9JTlRFUk4KKyMgIHVuZGVmIF9PRU1fSU5URVJOCisjZW5kaWYK
KyNpZm5kZWYgSVpfT0VNMklTT19BUlJBWQorIyAgZGVmaW5lIElaX09FTTJJU09fQVJSQVkKKyNl
bmRpZgorI2RlZmluZSBfT0VNX0lOVEVSTihzdHIxKSBvZW1faW50ZXJuKHN0cjEpCisKK3ZvaWQg
aXNvX2ludGVybihjaGFyICopOwordm9pZCBvZW1faW50ZXJuKGNoYXIgKik7Cit2b2lkIGluaXRf
Y29udmVyc2lvbl9jaGFyc2V0cyh2b2lkKTsKKyAgIAogI2VuZGlmIC8qICFfX3VueGNmZ19oICov
CmRpZmYgLU51ciB1bnppcC01LjUwLm9yaWcvdW56aXAuYyB1bnppcC01LjUwL3VuemlwLmMKLS0t
IHVuemlwLTUuNTAub3JpZy91bnppcC5jCTIwMDItMDEtMjcgMjI6MjY6MTYgKzAzMDAKKysrIHVu
emlwLTUuNTAvdW56aXAuYwkyMDA0LTA3LTI3IDIyOjQyOjE5ICswNDAwCkBAIC0zMDQsMTEgKzMw
NCwyMSBAQAogICAtMiAganVzdCBmaWxlbmFtZXMgYnV0IGFsbG93IC1oLy10Ly16ICAtbCAgbG9u
ZyBVbml4IFwibHMgLWxcIiBmb3JtYXRcblwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLXYgIHZlcmJvc2UsIG11bHRpLXBhZ2UgZm9ybWF0XG4iOwogCisjaWZuZGVm
IFVOSVgKIHN0YXRpYyBaQ09OU1QgY2hhciBGYXIgWmlwSW5mb1VzYWdlTGluZTNbXSA9ICJtaXNj
ZWxsYW5lb3VzIG9wdGlvbnM6XG5cCiAgIC1oICBwcmludCBoZWFkZXIgbGluZSAgICAgICAtdCAg
cHJpbnQgdG90YWxzIGZvciBsaXN0ZWQgZmlsZXMgb3IgZm9yIGFsbFxuXAogICAteiAgcHJpbnQg
emlwZmlsZSBjb21tZW50ICAlYy1UJWMgcHJpbnQgZmlsZSB0aW1lcyBpbiBzb3J0YWJsZSBkZWNp
bWFsIGZvcm1hdFwKIFxuICVjLUMlYyBiZSBjYXNlLWluc2Vuc2l0aXZlICAgJXNcCiAgIC14ICBl
eGNsdWRlIGZpbGVuYW1lcyB0aGF0IGZvbGxvdyBmcm9tIGxpc3RpbmdcbiI7CisjZWxzZSAvKiBV
TklYICovCitzdGF0aWMgWkNPTlNUIGNoYXIgRmFyIFppcEluZm9Vc2FnZUxpbmUzW10gPSAibWlz
Y2VsbGFuZW91cyBvcHRpb25zOlxuXAorICAtaCAgcHJpbnQgaGVhZGVyIGxpbmUgICAgICAgLXQg
IHByaW50IHRvdGFscyBmb3IgbGlzdGVkIGZpbGVzIG9yIGZvciBhbGxcblwKKyAgLXogIHByaW50
IHppcGZpbGUgY29tbWVudCAgJWMtVCVjIHByaW50IGZpbGUgdGltZXMgaW4gc29ydGFibGUgZGVj
aW1hbCBmb3JtYXRcCitcbiAlYy1DJWMgYmUgY2FzZS1pbnNlbnNpdGl2ZSAgICVzXAorICAteCAg
ZXhjbHVkZSBmaWxlbmFtZXMgdGhhdCBmb2xsb3cgZnJvbSBsaXN0aW5nXG5cCisgIC1PIENIQVJT
RVQgIHNwZWNpZnkgYSBjaGFyYWN0ZXIgZW5jb2RpbmcgZm9yIERPUywgV2luZG93cyBhbmQgT1Mv
MiBhcmNoaXZlc1xuXAorICAtSSBDSEFSU0VUICBzcGVjaWZ5IGEgY2hhcmFjdGVyIGVuY29kaW5n
IGZvciBVTklYIGFuZCBvdGhlciBhcmNoaXZlc1xuIjsKKyNlbmRpZiAvKiAhVU5JWCAqLwogI2lm
ZGVmIE1PUkUKICNpZmRlZiBWTVMKICAgIHN0YXRpYyBaQ09OU1QgY2hhciBGYXIgWmlwSW5mb1Vz
YWdlTGluZTRbXSA9CkBAIC01ODksNiArNTk5LDcgQEAKICNlbmRpZiAvKiA/Vk1fQ01TICovCiAj
ZW5kaWYgLyogP01BQ09TICovCiAKKyNpZm5kZWYgVU5JWAogc3RhdGljIFpDT05TVCBjaGFyIEZh
ciBVbnppcFVzYWdlTGluZTRbXSA9ICJcCiBtb2RpZmllcnM6ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAtcSAgcXVpZXQgbW9kZSAoLXFxID0+IHF1aWV0ZXIpXG5cCiAgIC1uICBu
ZXZlciBvdmVyd3JpdGUgZXhpc3RpbmcgZmlsZXMgICAgICAgICAtYSAgYXV0by1jb252ZXJ0IGFu
eSB0ZXh0IGZpbGVzXG5cCkBAIC01OTYsNiArNjA3LDE3IEBACiAgLWogIGp1bmsgcGF0aHMgKGRv
IG5vdCBtYWtlIGRpcmVjdG9yaWVzKSAgIC12ICBiZSB2ZXJib3NlL3ByaW50IHZlcnNpb24gaW5m
b1xuXAogICVjLUMlYyBtYXRjaCBmaWxlbmFtZXMgY2FzZS1pbnNlbnNpdGl2ZWx5ICAgICVjLUwl
YyBtYWtlIChzb21lKSBuYW1lcyBcCiBsb3dlcmNhc2VcbiAlLTQycyAlYy1WJWMgcmV0YWluIFZN
UyB2ZXJzaW9uIG51bWJlcnNcbiVzIjsKKyNlbHNlIC8qIFVOSVggKi8KK3N0YXRpYyBaQ09OU1Qg
Y2hhciBGYXIgVW56aXBVc2FnZUxpbmU0W10gPSAiXAorbW9kaWZpZXJzOiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLXEgIHF1aWV0IG1vZGUgKC1xcSA9PiBxdWlldGVyKVxuXAor
ICAtbiAgbmV2ZXIgb3ZlcndyaXRlIGV4aXN0aW5nIGZpbGVzICAgICAgICAgLWEgIGF1dG8tY29u
dmVydCBhbnkgdGV4dCBmaWxlc1xuXAorICAtbyAgb3ZlcndyaXRlIGZpbGVzIFdJVEhPVVQgcHJv
bXB0aW5nICAgICAgLWFhIHRyZWF0IEFMTCBmaWxlcyBhcyB0ZXh0XG4gXAorIC1qICBqdW5rIHBh
dGhzIChkbyBub3QgbWFrZSBkaXJlY3RvcmllcykgICAtdiAgYmUgdmVyYm9zZS9wcmludCB2ZXJz
aW9uIGluZm9cblwKKyAlYy1DJWMgbWF0Y2ggZmlsZW5hbWVzIGNhc2UtaW5zZW5zaXRpdmVseSAg
ICAlYy1MJWMgbWFrZSAoc29tZSkgbmFtZXMgXAorbG93ZXJjYXNlXG4gJS00MnMgJWMtViVjIHJl
dGFpbiBWTVMgdmVyc2lvbiBudW1iZXJzXG4lc1xuXAorICAtTyBDSEFSU0VUICBzcGVjaWZ5IGEg
Y2hhcmFjdGVyIGVuY29kaW5nIGZvciBET1MsIFdpbmRvd3MgYW5kIE9TLzIgYXJjaGl2ZXNcblwK
KyAgLUkgQ0hBUlNFVCAgc3BlY2lmeSBhIGNoYXJhY3RlciBlbmNvZGluZyBmb3IgVU5JWCBhbmQg
b3RoZXIgYXJjaGl2ZXNcblxuIjsKKyNlbmRpZiAvKiAhVU5JWCAqLwogCiBzdGF0aWMgWkNPTlNU
IGNoYXIgRmFyIFVuemlwVXNhZ2VMaW5lNVtdID0gIlwKIEV4YW1wbGVzIChzZWUgdW56aXAudHh0
IGZvciBtb3JlIGluZm8pOlxuXApAQCAtNjU2LDYgKzY3OCwxMCBAQAogCiAgICAgU0VUTE9DQUxF
KExDX0NUWVBFLCIiKTsKIAorI2lmZGVmIFVOSVgKKyAgICBpbml0X2NvbnZlcnNpb25fY2hhcnNl
dHMoKTsKKyNlbmRpZgorCiAjaWYgKGRlZmluZWQoX19JQk1DX18pICYmIGRlZmluZWQoX19ERUJV
R19BTExPQ19fKSkKICAgICBleHRlcm4gdm9pZCBEZWJ1Z01hbGxvYyh2b2lkKTsKIApAQCAtMTA3
MCw2ICsxMDk2LDExIEBACiAgICAgYXJnYyA9ICpwYXJnYzsKICAgICBhcmd2ID0gKnBhcmd2Owog
CisjaWZkZWYgVU5JWAorICAgIGV4dGVybiBjaGFyIE9FTV9DUFtNQVhfQ1BfTkFNRV07CisgICAg
ZXh0ZXJuIGNoYXIgSVNPX0NQW01BWF9DUF9OQU1FXTsKKyNlbmRpZgorICAgIAogICAgIHdoaWxl
ICgrK2FyZ3YsICgtLWFyZ2MgPiAwICYmICphcmd2ICE9IE5VTEwgJiYgKiphcmd2ID09ICctJykp
IHsKICAgICAgICAgcyA9ICphcmd2ICsgMTsKICAgICAgICAgd2hpbGUgKChjID0gKnMrKykgIT0g
MCkgeyAgICAvKiAiIT0gMCI6ICBwcmV2ZW50IFR1cmJvIEMgd2FybmluZyAqLwpAQCAtMTIzMyw2
ICsxMjY0LDM1IEBACiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAjZW5kaWYgIC8qIE1BQ09TICovCisjaWZkZWYgVU5JWAorICAgIAkJCWNhc2UgKCdJ
Jyk6CisgICAgICAgICAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZXJyb3I6ICBlbmNvZGluZ3MgY2FuJ3QgYmUgbmVnYXRlZCIpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybihQS19QQVJBTSk7CisgICAgCQkJCX0gZWxzZSB7
CisgICAgCQkJCQlpZigqcykgeyAvKiBIYW5kbGUgdGhlIC1JY2hhcnNldCBjYXNlICovCisgICAg
CQkJCQkJLyogQXNzdW1lIHRoYXQgY2hhcnNldHMgY2FuJ3Qgc3RhcnQgd2l0aCBhIGRhc2ggdG8g
c3BvdCBhcmd1bWVudHMgbWlzdXNlICovCisgICAgCQkJCQkJaWYoKnMgPT0gJy0nKSB7IAorICAg
IAkgICAgICAgICAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFyICopc2xp
ZGUsCisgICAgICAgIAkJICAgICAgICAgICAgICAgICAgImVycm9yOiAgYSB2YWxpZCBjaGFyYWN0
ZXIgZW5jb2Rpbmcgc2hvdWxkIGZvbGxvdyB0aGUgLUkgYXJndW1lbnQiKSk7CisgICAgCSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybihQS19QQVJBTSk7IAorICAgIAkJCQkJCX0KKyAgICAJ
CQkJCQlzdHJuY3B5KElTT19DUCwgcywgc2l6ZW9mKElTT19DUCkpOworICAgIAkJCQkJfSBlbHNl
IHsgLyogLUkgY2hhcnNldCAqLworICAgIAkJCQkJCSsrYXJndjsKKyAgICAJCQkJCQlpZighKC0t
YXJnYyA+IDAgJiYgKmFyZ3YgIT0gTlVMTCAmJiAqKmFyZ3YgIT0gJy0nKSkgeworICAgIAkgICAg
ICAgICAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFyICopc2xpZGUsCisg
ICAgICAgIAkJICAgICAgICAgICAgICAgICAgImVycm9yOiAgYSB2YWxpZCBjaGFyYWN0ZXIgZW5j
b2Rpbmcgc2hvdWxkIGZvbGxvdyB0aGUgLUkgYXJndW1lbnQiKSk7CisgICAgCSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybihQS19QQVJBTSk7IAorICAgIAkJCQkJCX0KKyAgICAJCQkJCQlz
ID0gKmFyZ3Y7CisgICAgCQkJCQkJc3RybmNweShJU09fQ1AsIHMsIHNpemVvZihJU09fQ1ApKTsK
KyAgICAJCQkJCX0KKyAgICAJCQkJCXdoaWxlKCooKytzKSk7IC8qIE5vIHBhcmFtcyBzdHJhaWdo
dCBhZnRlciBjaGFyc2V0IG5hbWUgKi8KKyAgICAJCQkJfQorICAgIAkJCQlicmVhazsKKyNlbmRp
ZiAvKiA/VU5JWCAqLwogICAgICAgICAgICAgICAgIGNhc2UgKCdqJyk6ICAgIC8qIGp1bmsgcGF0
aG5hbWVzL2RpcmVjdG9yeSBzdHJ1Y3R1cmUgKi8KICAgICAgICAgICAgICAgICAgICAgaWYgKG5l
Z2F0aXZlKQogICAgICAgICAgICAgICAgICAgICAgICAgdU8uamZsYWcgPSBGQUxTRSwgbmVnYXRp
dmUgPSAwOwpAQCAtMTI5OSw2ICsxMzU5LDM1IEBACiAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgICAgICAgICAgICAgKyt1Ty5vdmVyd3JpdGVfYWxsOwogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyNpZmRlZiBVTklYCisgICAgCQkJY2FzZSAoJ08nKToKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKG5lZ2F0aXZlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBJ
bmZvKHNsaWRlLCAweDQwMSwgKChjaGFyICopc2xpZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICJlcnJvcjogIGVuY29kaW5ncyBjYW4ndCBiZSBuZWdhdGVkIikpOworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuKFBLX1BBUkFNKTsKKyAgICAJCQkJfSBlbHNlIHsKKyAgICAJCQkJ
CWlmKCpzKSB7IC8qIEhhbmRsZSB0aGUgLU9jaGFyc2V0IGNhc2UgKi8KKyAgICAJCQkJCQkvKiBB
c3N1bWUgdGhhdCBjaGFyc2V0cyBjYW4ndCBzdGFydCB3aXRoIGEgZGFzaCB0byBzcG90IGFyZ3Vt
ZW50cyBtaXN1c2UgKi8KKyAgICAJCQkJCQlpZigqcyA9PSAnLScpIHsgCisgICAgCSAgICAgICAg
ICAgICAgICAgICAgICAgIEluZm8oc2xpZGUsIDB4NDAxLCAoKGNoYXIgKilzbGlkZSwKKyAgICAg
ICAgCQkgICAgICAgICAgICAgICAgICAiZXJyb3I6ICBhIHZhbGlkIGNoYXJhY3RlciBlbmNvZGlu
ZyBzaG91bGQgZm9sbG93IHRoZSAtSSBhcmd1bWVudCIpKTsKKyAgICAJICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuKFBLX1BBUkFNKTsgCisgICAgCQkJCQkJfQorICAgIAkJCQkJCXN0cm5j
cHkoT0VNX0NQLCBzLCBzaXplb2YoT0VNX0NQKSk7CisgICAgCQkJCQl9IGVsc2UgeyAvKiAtTyBj
aGFyc2V0ICovCisgICAgCQkJCQkJKythcmd2OworICAgIAkJCQkJCWlmKCEoLS1hcmdjID4gMCAm
JiAqYXJndiAhPSBOVUxMICYmICoqYXJndiAhPSAnLScpKSB7CisgICAgCSAgICAgICAgICAgICAg
ICAgICAgICAgIEluZm8oc2xpZGUsIDB4NDAxLCAoKGNoYXIgKilzbGlkZSwKKyAgICAgICAgCQkg
ICAgICAgICAgICAgICAgICAiZXJyb3I6ICBhIHZhbGlkIGNoYXJhY3RlciBlbmNvZGluZyBzaG91
bGQgZm9sbG93IHRoZSAtTyBhcmd1bWVudCIpKTsKKyAgICAJICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuKFBLX1BBUkFNKTsgCisgICAgCQkJCQkJfQorICAgIAkJCQkJCXMgPSAqYXJndjsK
KyAgICAJCQkJCQlzdHJuY3B5KE9FTV9DUCwgcywgc2l6ZW9mKE9FTV9DUCkpOworICAgIAkJCQkJ
fQorICAgIAkJCQkJd2hpbGUoKigrK3MpKTsgLyogTm8gcGFyYW1zIHN0cmFpZ2h0IGFmdGVyIGNo
YXJzZXQgbmFtZSAqLworICAgIAkJCQl9CisgICAgCQkJCWJyZWFrOworI2VuZGlmIC8qID9VTklY
ICovCiAgICAgICAgICAgICAgICAgY2FzZSAoJ3AnKTogICAgLyogcGlwZXM6ICBleHRyYWN0IHRv
IHN0ZG91dCwgbm8gbWVzc2FnZXMgKi8KICAgICAgICAgICAgICAgICAgICAgaWYgKG5lZ2F0aXZl
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB1Ty5jZmxhZyA9IEZBTFNFOwpkaWZmIC1OdXIg
dW56aXAtNS41MC5vcmlnL3VuenByaXYuaCB1bnppcC01LjUwL3VuenByaXYuaAotLS0gdW56aXAt
NS41MC5vcmlnL3VuenByaXYuaAkyMDAyLTAyLTE3IDIwOjAxOjQ4ICswMzAwCisrKyB1bnppcC01
LjUwL3VuenByaXYuaAkyMDA0LTA3LTI3IDIzOjUzOjA4ICswNDAwCkBAIC0xMTAzLDcgKzExMDMs
OSBAQAogIyAgZGVmaW5lIGxhc3RjaGFyKHB0ciwgbGVuKSAocHRyWyhsZW4pLTFdKQogIyAgZGVm
aW5lIE1CU0NIUihzdHIsIGMpIHN0cmNocihzdHIsIGMpCiAjICBkZWZpbmUgTUJTUkNIUihzdHIs
IGMpIHN0cnJjaHIoc3RyLCBjKQotIyAgZGVmaW5lIFNFVExPQ0FMRShjYXRlZ29yeSwgbG9jYWxl
KQorIyAgaWZuZGVmIFNFVExPQ0FMRQorIyAgICBkZWZpbmUgU0VUTE9DQUxFKGNhdGVnb3J5LCBs
b2NhbGUpCisjICBlbmRpZgogI2VuZGlmIC8qID9fTUJDUyAqLwogI2RlZmluZSBJTkNTVFIocHRy
KSBQUkVJTkNTVFIocHRyKQogCkBAIC0yNDI0LDcgKzI0MjYsNyBAQAogICAgICAgICAgISgoKGlz
bG9jaGRyKSB8fCAoaXN1eGF0dCkpICYmIFwKICAgICAgICAgICAgKChob3N0dmVyKSA9PSAyNSB8
fCAoaG9zdHZlcikgPT0gMjYgfHwgKGhvc3R2ZXIpID09IDQwKSkpIHx8IFwKICAgICAgICAgKGhv
c3RudW0pID09IEZTX0hQRlNfIHx8IFwKLSAgICAgICAgKChob3N0bnVtKSA9PSBGU19OVEZTXyAm
JiAoaG9zdHZlcikgPT0gNTApKSB7IFwKKyAgICAgICAgKChob3N0bnVtKSA9PSBGU19OVEZTXy8q
ICYmIChob3N0dmVyKSA9PSA1MCovKSkgeyBcCiAgICAgICAgIF9PRU1fSU5URVJOKChzdHJpbmcp
KTsgXAogICAgIH0gZWxzZSB7IFwKICAgICAgICAgX0lTT19JTlRFUk4oKHN0cmluZykpOyBcCmRp
ZmYgLU51ciB1bnppcC01LjUwLm9yaWcvemlwaW5mby5jIHVuemlwLTUuNTAvemlwaW5mby5jCi0t
LSB1bnppcC01LjUwLm9yaWcvemlwaW5mby5jCTIwMDEtMTItMjYgMDE6NTY6NDAgKzAzMDAKKysr
IHVuemlwLTUuNTAvemlwaW5mby5jCTIwMDQtMDctMjcgMDU6NTQ6MTYgKzA0MDAKQEAgLTQ0MCw2
ICs0NDAsMTAgQEAKICAgICBpbnQgICAgdGZsYWdfc2xtPVRSVUUsIHRmbGFnXzJ2PUZBTFNFOwog
ICAgIGludCAgICBleHBsaWNpdF9oPUZBTFNFLCBleHBsaWNpdF90PUZBTFNFOwogCisjaWZkZWYg
VU5JWAorICAgIGV4dGVybiBjaGFyIE9FTV9DUFtNQVhfQ1BfTkFNRV07CisgICAgZXh0ZXJuIGNo
YXIgSVNPX0NQW01BWF9DUF9OQU1FXTsKKyNlbmRpZgogCiAjaWZkZWYgTUFDT1MKICAgICB1Ty5s
ZmxhZyA9IExGTEFHOyAgICAgICAgIC8qIHJlc2V0IGRlZmF1bHQgb24gZWFjaCBjYWxsICovCkBA
IC00ODQsNiArNDg4LDM1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdU8ubGZsYWcg
PSAwOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
I2lmZGVmIFVOSVgKKyAgICAJCQljYXNlICgnSScpOgorICAgICAgICAgICAgICAgICAgICBpZiAo
bmVnYXRpdmUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEluZm8oc2xpZGUsIDB4NDAxLCAo
KGNoYXIgKilzbGlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImVycm9yOiAgZW5jb2Rp
bmdzIGNhbid0IGJlIG5lZ2F0ZWQiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4o
UEtfUEFSQU0pOworICAgIAkJCQl9IGVsc2UgeworICAgIAkJCQkJaWYoKnMpIHsgLyogSGFuZGxl
IHRoZSAtSWNoYXJzZXQgY2FzZSAqLworICAgIAkJCQkJCS8qIEFzc3VtZSB0aGF0IGNoYXJzZXRz
IGNhbid0IHN0YXJ0IHdpdGggYSBkYXNoIHRvIHNwb3QgYXJndW1lbnRzIG1pc3VzZSAqLworICAg
IAkJCQkJCWlmKCpzID09ICctJykgeyAKKyAgICAJICAgICAgICAgICAgICAgICAgICAgICAgSW5m
byhzbGlkZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLAorICAgICAgICAJCSAgICAgICAgICAgICAg
ICAgICJlcnJvcjogIGEgdmFsaWQgY2hhcmFjdGVyIGVuY29kaW5nIHNob3VsZCBmb2xsb3cgdGhl
IC1JIGFyZ3VtZW50IikpOworICAgIAkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4oUEtf
UEFSQU0pOyAKKyAgICAJCQkJCQl9CisgICAgCQkJCQkJc3RybmNweShJU09fQ1AsIHMsIHNpemVv
ZihJU09fQ1ApKTsKKyAgICAJCQkJCX0gZWxzZSB7IC8qIC1JIGNoYXJzZXQgKi8KKyAgICAJCQkJ
CQkrK2FyZ3Y7CisgICAgCQkJCQkJaWYoISgtLWFyZ2MgPiAwICYmICphcmd2ICE9IE5VTEwgJiYg
Kiphcmd2ICE9ICctJykpIHsKKyAgICAJICAgICAgICAgICAgICAgICAgICAgICAgSW5mbyhzbGlk
ZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLAorICAgICAgICAJCSAgICAgICAgICAgICAgICAgICJl
cnJvcjogIGEgdmFsaWQgY2hhcmFjdGVyIGVuY29kaW5nIHNob3VsZCBmb2xsb3cgdGhlIC1JIGFy
Z3VtZW50IikpOworICAgIAkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4oUEtfUEFSQU0p
OyAKKyAgICAJCQkJCQl9CisgICAgCQkJCQkJcyA9ICphcmd2OworICAgIAkJCQkJCXN0cm5jcHko
SVNPX0NQLCBzLCBzaXplb2YoSVNPX0NQKSk7CisgICAgCQkJCQl9CisgICAgCQkJCQl3aGlsZSgq
KCsrcykpOyAvKiBObyBwYXJhbXMgc3RyYWlnaHQgYWZ0ZXIgY2hhcnNldCBuYW1lICovCisgICAg
CQkJCX0KKyAgICAJCQkJYnJlYWs7CisjZW5kaWYgLyogP1VOSVggKi8KICAgICAgICAgICAgICAg
ICBjYXNlICdsJzogICAgICAvKiBsb25nZXIgZm9ybSBvZiAibHMgLWwiIHR5cGUgbGlzdGluZyAq
LwogICAgICAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUpCiAgICAgICAgICAgICAgICAgICAg
ICAgICB1Ty5sZmxhZyA9IC0yLCBuZWdhdGl2ZSA9IDA7CkBAIC01MDQsNiArNTM3LDM1IEBACiAg
ICAgICAgICAgICAgICAgICAgICAgICBHLk1fZmxhZyA9IFRSVUU7CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogI2VuZGlmCisjaWZkZWYgVU5JWAorICAgIAkJCWNhc2UgKCdPJyk6CisgICAg
ICAgICAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
SW5mbyhzbGlkZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZXJyb3I6ICBlbmNvZGluZ3MgY2FuJ3QgYmUgbmVnYXRlZCIpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybihQS19QQVJBTSk7CisgICAgCQkJCX0gZWxzZSB7CisgICAgCQkJ
CQlpZigqcykgeyAvKiBIYW5kbGUgdGhlIC1PY2hhcnNldCBjYXNlICovCisgICAgCQkJCQkJLyog
QXNzdW1lIHRoYXQgY2hhcnNldHMgY2FuJ3Qgc3RhcnQgd2l0aCBhIGRhc2ggdG8gc3BvdCBhcmd1
bWVudHMgbWlzdXNlICovCisgICAgCQkJCQkJaWYoKnMgPT0gJy0nKSB7IAorICAgIAkgICAgICAg
ICAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFyICopc2xpZGUsCisgICAg
ICAgIAkJICAgICAgICAgICAgICAgICAgImVycm9yOiAgYSB2YWxpZCBjaGFyYWN0ZXIgZW5jb2Rp
bmcgc2hvdWxkIGZvbGxvdyB0aGUgLUkgYXJndW1lbnQiKSk7CisgICAgCSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybihQS19QQVJBTSk7IAorICAgIAkJCQkJCX0KKyAgICAJCQkJCQlzdHJu
Y3B5KE9FTV9DUCwgcywgc2l6ZW9mKE9FTV9DUCkpOworICAgIAkJCQkJfSBlbHNlIHsgLyogLU8g
Y2hhcnNldCAqLworICAgIAkJCQkJCSsrYXJndjsKKyAgICAJCQkJCQlpZighKC0tYXJnYyA+IDAg
JiYgKmFyZ3YgIT0gTlVMTCAmJiAqKmFyZ3YgIT0gJy0nKSkgeworICAgIAkgICAgICAgICAgICAg
ICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFyICopc2xpZGUsCisgICAgICAgIAkJ
ICAgICAgICAgICAgICAgICAgImVycm9yOiAgYSB2YWxpZCBjaGFyYWN0ZXIgZW5jb2Rpbmcgc2hv
dWxkIGZvbGxvdyB0aGUgLU8gYXJndW1lbnQiKSk7CisgICAgCSAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybihQS19QQVJBTSk7IAorICAgIAkJCQkJCX0KKyAgICAJCQkJCQlzID0gKmFyZ3Y7
CisgICAgCQkJCQkJc3RybmNweShPRU1fQ1AsIHMsIHNpemVvZihPRU1fQ1ApKTsKKyAgICAJCQkJ
CX0KKyAgICAJCQkJCXdoaWxlKCooKytzKSk7IC8qIE5vIHBhcmFtcyBzdHJhaWdodCBhZnRlciBj
aGFyc2V0IG5hbWUgKi8KKyAgICAJCQkJfQorICAgIAkJCQlicmVhazsKKyNlbmRpZiAvKiA/VU5J
WCAqLwogICAgICAgICAgICAgICAgIGNhc2UgJ3MnOiAgICAgIC8qIGRlZmF1bHQ6ICBzaG9ydGVy
ICJscyAtbCIgdHlwZSBsaXN0aW5nICovCiAgICAgICAgICAgICAgICAgICAgIGlmIChuZWdhdGl2
ZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHVPLmxmbGFnID0gLTIsIG5lZ2F0aXZlID0gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>1402</attachid>
            <date>2006-02-23 21:42:36 +0300</date>
            <delta_ts>2006-02-23 21:42:36 +0300</delta_ts>
            <desc>Патч для перекодировки с поддержкой UTF-8</desc>
            <filename>unzip-5.50-alt-iconv-v1.2-utf8.patch</filename>
            <type>text/plain</type>
            <size>15225</size>
            <attacher name="m0sia">m0sia</attacher>
            
              <data encoding="base64">KioqIHVuemlwLTUuNTAtcmVhbC91bml4L3VuaXguYwkyMDAyLTAxLTIyIDAzOjU0OjQyLjAwMDAw
MDAwMCArMDUwMAotLS0gdW56aXAtNS41MC91bml4L3VuaXguYwkyMDA2LTAyLTIwIDE0OjQyOjIx
LjYwNzI5NDE3NiArMDUwMAoqKioqKioqKioqKioqKioKKioqIDI5LDM0ICoqKioKLS0tIDI5LDM3
IC0tLS0KICAjZGVmaW5lIFVOWklQX0lOVEVSTkFMCiAgI2luY2x1ZGUgInVuemlwLmgiCiAgCisg
I2luY2x1ZGUgPGljb252Lmg+CisgI2luY2x1ZGUgPGxhbmdpbmZvLmg+CisgCiAgI2lmZGVmIFND
T19YRU5JWAogICMgIGRlZmluZSBTWVNORElSCiAgI2Vsc2UgIC8qIFNDTyBVbml4LCBBSVgsIERO
SVgsIFRJIFN5c1YsIENvaGVyZW50IDQueCwgLi4uICovCioqKioqKioqKioqKioqKgoqKiogMTUy
NCwxNTI2ICoqKioKLS0tIDE1MjcsMTYxNiAtLS0tCiAgICAgIH0KICB9CiAgI2VuZGlmIC8qIFFM
WklQICovCisgCisgCisgdHlwZWRlZiBzdHJ1Y3QgeworICAgICBjaGFyICpsb2NhbF9jaGFyc2V0
OworICAgICBjaGFyICphcmNoaXZlX2NoYXJzZXQ7CisgfSBDSEFSU0VUX01BUDsKKyAKKyAvKiBB
IG1hcHBpbmcgb2YgbG9jYWwgPC0+IGFyY2hpdmUgY2hhcnNldHMgdXNlZCBieSBkZWZhdWx0IHRv
IGNvbnZlcnQgZmlsZW5hbWVzCisgICogb2YgRE9TL1dpbmRvd3MgWmlwIGFyY2hpdmVzLiBDdXJy
ZW50bHkgdmVyeSBiYXNpYy4gKi8KKyBzdGF0aWMgQ0hBUlNFVF9NQVAgZG9zX2NoYXJzZXRfbWFw
W10gPSB7CisgICAgIHsgIkFOU0lfWDMuNC0xOTY4IiwgIkNQODUwIiB9LAorICAgICB7ICJJU08t
ODg1OS0xIiwgIkNQODUwIiB9LAorICAgICB7ICJDUDEyNTIiLCAiQ1A4NTAiIH0sCisgICAgIHsg
IlVURi04IiwgIkNQODY2IiB9LAorICAgICB7ICJLT0k4LVIiLCAiQ1A4NjYiIH0sCisgICAgIHsg
IktPSTgtVSIsICJDUDg2NiIgfSwKKyAgICAgeyAiSVNPLTg4NTktNSIsICJDUDg2NiIgfQorIH07
CisgCisgY2hhciBPRU1fQ1BbTUFYX0NQX05BTUVdID0gIiI7CisgY2hhciBJU09fQ1BbTUFYX0NQ
X05BTUVdID0gIiI7CisgCisgLyogVHJ5IHRvIGd1ZXNzIHRoZSBkZWZhdWx0IHZhbHVlIG9mIE9F
TV9DUCBiYXNlZCBvbiB0aGUgY3VycmVudCBsb2NhbGUuCisgICogSVNPX0NQIGlzIGxlZnQgYWxv
bmUgZm9yIG5vdy4gKi8KKyB2b2lkIGluaXRfY29udmVyc2lvbl9jaGFyc2V0cygpCisgeworICAg
ICBjb25zdCBjaGFyICpsb2NhbF9jaGFyc2V0OworICAgICBpbnQgaTsKKyAKKyAgICAgLyogTWFr
ZSBhIGd1ZXNzIG9ubHkgaWYgT0VNX0NQIG5vdCBhbHJlYWR5IHNldC4gKi8gCisgICAgIGlmKCpP
RU1fQ1AgPT0gJ1wwJykgeworICAgICAJbG9jYWxfY2hhcnNldCA9IG5sX2xhbmdpbmZvKENPREVT
RVQpOworICAgICAJZm9yKGkgPSAwOyBpIDwgc2l6ZW9mKGRvc19jaGFyc2V0X21hcCkvc2l6ZW9m
KENIQVJTRVRfTUFQKTsgaSsrKQorICAgICAJCWlmKCFzdHJjYXNlY21wKGxvY2FsX2NoYXJzZXQs
IGRvc19jaGFyc2V0X21hcFtpXS5sb2NhbF9jaGFyc2V0KSkgeworICAgICAJCQlzdHJuY3B5KE9F
TV9DUCwgZG9zX2NoYXJzZXRfbWFwW2ldLmFyY2hpdmVfY2hhcnNldCwKKyAgICAgCQkJCQlzaXpl
b2YoT0VNX0NQKSk7CisgICAgIAkJCWJyZWFrOworICAgICAJCX0KKyAgICAgfQorIH0KKyAKKyAv
KiBDb252ZXJ0IGEgc3RyaW5nIGZyb20gb25lIGVuY29kaW5nIHRvIHRoZSBjdXJyZW50IGxvY2Fs
ZSB1c2luZyBpY29udigpLgorICAqIEJlIGFzIG5vbi1pbnRydXNpdmUgYXMgcG9zc2libGUuIElm
IGVycm9yIGlzIGVuY291bnRlcmVkIGR1cmluZyBjb3ZlcnRpb24KKyAgKiBqdXN0IGxlYXZlIHRo
ZSBzdHJpbmcgaW50YWN0LiAqLworIHN0YXRpYyB2b2lkIGNoYXJzZXRfdG9faW50ZXJuKGNoYXIg
KnN0cmluZywgY2hhciAqZnJvbV9jaGFyc2V0KQorIHsKKyAgICAgaWNvbnZfdCBjZDsKKyAgICAg
Y2hhciAqcywqZCwgKmJ1ZjsKKyAgICAgc2l6ZV90IHNsZW4sIGRsZW4sIGJ1ZmxlbjsKKyAgICAg
Y29uc3QgY2hhciAqbG9jYWxfY2hhcnNldDsKKyAKKyAgICAgaWYoKmZyb21fY2hhcnNldCA9PSAn
XDAnKQorICAgICAJcmV0dXJuOworIAorICAgICBidWYgPSBOVUxMOworICAgICBsb2NhbF9jaGFy
c2V0ID0gbmxfbGFuZ2luZm8oQ09ERVNFVCk7CisgCisgICAgIGlmKChjZCA9IGljb252X29wZW4o
bG9jYWxfY2hhcnNldCwgZnJvbV9jaGFyc2V0KSkgPT0gKGljb252X3QpLTEpCisgICAgICAgICBy
ZXR1cm47CisgCisgICAgIHNsZW4gPSBzdHJsZW4oc3RyaW5nKTsKKyAgICAgcyA9IHN0cmluZzsK
KyAgICAgZGxlbiA9IGJ1ZmxlbiA9IDIqc2xlbjsKKyAgICAgZCA9IGJ1ZiA9IG1hbGxvYyhidWZs
ZW4gKyAxKTsKKyAgICAgaWYoIWQpCisgICAgIAlnb3RvIGNsZWFudXA7CisgICAgIGJ6ZXJvKGJ1
ZixidWZsZW4pOworICAgICBpZihpY29udihjZCwgJnMsICZzbGVuLCAmZCwgJmRsZW4pID09IChz
aXplX3QpLTEpCisgICAgIAlnb3RvIGNsZWFudXA7CisgICAgIHN0cm5jcHkoc3RyaW5nLCBidWYs
IGJ1Zmxlbik7CisgICAgIAorICAgICBjbGVhbnVwOgorICAgICBmcmVlKGJ1Zik7CisgICAgIGlj
b252X2Nsb3NlKGNkKTsKKyB9CisgCisgLyogQ29udmVydCBhIHN0cmluZyBmcm9tIE9FTV9DUCB0
byB0aGUgY3VycmVudCBsb2NhbGUgY2hhcnNldC4gKi8KKyBpbmxpbmUgdm9pZCBvZW1faW50ZXJu
KGNoYXIgKnN0cmluZykKKyB7CisgICAgIGNoYXJzZXRfdG9faW50ZXJuKHN0cmluZywgT0VNX0NQ
KTsKKyB9CisgCisgLyogQ29udmVydCBhIHN0cmluZyBmcm9tIElTT19DUCB0byB0aGUgY3VycmVu
dCBsb2NhbGUgY2hhcnNldC4gKi8KKyBpbmxpbmUgdm9pZCBpc29faW50ZXJuKGNoYXIgKnN0cmlu
ZykKKyB7CisgICAgIGNoYXJzZXRfdG9faW50ZXJuKHN0cmluZywgSVNPX0NQKTsKKyB9CioqKiB1
bnppcC01LjUwLXJlYWwvdW5peC91bnhjZmcuaAkyMDAxLTA2LTA0IDA1OjI3OjE0LjAwMDAwMDAw
MCArMDYwMAotLS0gdW56aXAtNS41MC91bml4L3VueGNmZy5oCTIwMDYtMDItMjAgMTQ6MTY6Mjcu
MTk0NjAwODI0ICswNTAwCioqKioqKioqKioqKioqKgoqKiogMTIzLDEyNiAqKioqCi0tLSAxMjMs
MTUyIC0tLS0KICAvKiB3aWxkX2RpciwgZGlybmFtZSwgd2lsZG5hbWUsIG1hdGNobmFtZVtdLCBk
aXJuYW1lbGVuLCBoYXZlX2Rpcm5hbWUsICovCiAgLyogICAgYW5kIG5vdGZpcnN0Y2FsbCBhcmUg
dXNlZCBieSBkb193aWxkKCkuICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogIAorIAorICNk
ZWZpbmUgTUFYX0NQX05BTUUgMjUgCisgICAgCisgI2lmZGVmIFNFVExPQ0FMRQorICMgIHVuZGVm
IFNFVExPQ0FMRQorICNlbmRpZgorICNkZWZpbmUgU0VUTE9DQUxFKGNhdGVnb3J5LCBsb2NhbGUp
IHNldGxvY2FsZShjYXRlZ29yeSwgbG9jYWxlKQorICNpbmNsdWRlIDxsb2NhbGUuaD4KKyAgICAK
KyAjaWZkZWYgX0lTT19JTlRFUk4KKyAjICB1bmRlZiBfSVNPX0lOVEVSTgorICNlbmRpZgorICNk
ZWZpbmUgX0lTT19JTlRFUk4oc3RyMSkgaXNvX2ludGVybihzdHIxKQorIAorICNpZmRlZiBfT0VN
X0lOVEVSTgorICMgIHVuZGVmIF9PRU1fSU5URVJOCisgI2VuZGlmCisgI2lmbmRlZiBJWl9PRU0y
SVNPX0FSUkFZCisgIyAgZGVmaW5lIElaX09FTTJJU09fQVJSQVkKKyAjZW5kaWYKKyAjZGVmaW5l
IF9PRU1fSU5URVJOKHN0cjEpIG9lbV9pbnRlcm4oc3RyMSkKKyAKKyB2b2lkIGlzb19pbnRlcm4o
Y2hhciAqKTsKKyB2b2lkIG9lbV9pbnRlcm4oY2hhciAqKTsKKyB2b2lkIGluaXRfY29udmVyc2lv
bl9jaGFyc2V0cyh2b2lkKTsKKyAgICAKICAjZW5kaWYgLyogIV9fdW54Y2ZnX2ggKi8KKioqIHVu
emlwLTUuNTAtcmVhbC91bnppcC5jCTIwMDItMDEtMjggMDA6MjY6MTYuMDAwMDAwMDAwICswNTAw
Ci0tLSB1bnppcC01LjUwL3VuemlwLmMJMjAwNi0wMi0yMCAxNDoxNjoyNy4xOTY2MDA1MjAgKzA1
MDAKKioqKioqKioqKioqKioqCioqKiAzMDQsMzE0ICoqKioKLS0tIDMwNCwzMjQgLS0tLQogICAg
LTIgIGp1c3QgZmlsZW5hbWVzIGJ1dCBhbGxvdyAtaC8tdC8teiAgLWwgIGxvbmcgVW5peCBcImxz
IC1sXCIgZm9ybWF0XG5cCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAtdiAgdmVyYm9zZSwgbXVsdGktcGFnZSBmb3JtYXRcbiI7CiAgCisgI2lmbmRlZiBVTklYCiAg
c3RhdGljIFpDT05TVCBjaGFyIEZhciBaaXBJbmZvVXNhZ2VMaW5lM1tdID0gIm1pc2NlbGxhbmVv
dXMgb3B0aW9uczpcblwKICAgIC1oICBwcmludCBoZWFkZXIgbGluZSAgICAgICAtdCAgcHJpbnQg
dG90YWxzIGZvciBsaXN0ZWQgZmlsZXMgb3IgZm9yIGFsbFxuXAogICAgLXogIHByaW50IHppcGZp
bGUgY29tbWVudCAgJWMtVCVjIHByaW50IGZpbGUgdGltZXMgaW4gc29ydGFibGUgZGVjaW1hbCBm
b3JtYXRcCiAgXG4gJWMtQyVjIGJlIGNhc2UtaW5zZW5zaXRpdmUgICAlc1wKICAgIC14ICBleGNs
dWRlIGZpbGVuYW1lcyB0aGF0IGZvbGxvdyBmcm9tIGxpc3RpbmdcbiI7CisgI2Vsc2UgLyogVU5J
WCAqLworIHN0YXRpYyBaQ09OU1QgY2hhciBGYXIgWmlwSW5mb1VzYWdlTGluZTNbXSA9ICJtaXNj
ZWxsYW5lb3VzIG9wdGlvbnM6XG5cCisgICAtaCAgcHJpbnQgaGVhZGVyIGxpbmUgICAgICAgLXQg
IHByaW50IHRvdGFscyBmb3IgbGlzdGVkIGZpbGVzIG9yIGZvciBhbGxcblwKKyAgIC16ICBwcmlu
dCB6aXBmaWxlIGNvbW1lbnQgICVjLVQlYyBwcmludCBmaWxlIHRpbWVzIGluIHNvcnRhYmxlIGRl
Y2ltYWwgZm9ybWF0XAorIFxuICVjLUMlYyBiZSBjYXNlLWluc2Vuc2l0aXZlICAgJXNcCisgICAt
eCAgZXhjbHVkZSBmaWxlbmFtZXMgdGhhdCBmb2xsb3cgZnJvbSBsaXN0aW5nXG5cCisgICAtTyBD
SEFSU0VUICBzcGVjaWZ5IGEgY2hhcmFjdGVyIGVuY29kaW5nIGZvciBET1MsIFdpbmRvd3MgYW5k
IE9TLzIgYXJjaGl2ZXNcblwKKyAgIC1JIENIQVJTRVQgIHNwZWNpZnkgYSBjaGFyYWN0ZXIgZW5j
b2RpbmcgZm9yIFVOSVggYW5kIG90aGVyIGFyY2hpdmVzXG4iOworICNlbmRpZiAvKiAhVU5JWCAq
LwogICNpZmRlZiBNT1JFCiAgI2lmZGVmIFZNUwogICAgIHN0YXRpYyBaQ09OU1QgY2hhciBGYXIg
WmlwSW5mb1VzYWdlTGluZTRbXSA9CioqKioqKioqKioqKioqKgoqKiogNTg5LDU5NCAqKioqCi0t
LSA1OTksNjA1IC0tLS0KICAjZW5kaWYgLyogP1ZNX0NNUyAqLwogICNlbmRpZiAvKiA/TUFDT1Mg
Ki8KICAKKyAjaWZuZGVmIFVOSVgKICBzdGF0aWMgWkNPTlNUIGNoYXIgRmFyIFVuemlwVXNhZ2VM
aW5lNFtdID0gIlwKICBtb2RpZmllcnM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAtcSAgcXVpZXQgbW9kZSAoLXFxID0+IHF1aWV0ZXIpXG5cCiAgICAtbiAgbmV2ZXIgb3Zlcndy
aXRlIGV4aXN0aW5nIGZpbGVzICAgICAgICAgLWEgIGF1dG8tY29udmVydCBhbnkgdGV4dCBmaWxl
c1xuXAoqKioqKioqKioqKioqKioKKioqIDU5Niw2MDEgKioqKgotLS0gNjA3LDYyMyAtLS0tCiAg
IC1qICBqdW5rIHBhdGhzIChkbyBub3QgbWFrZSBkaXJlY3RvcmllcykgICAtdiAgYmUgdmVyYm9z
ZS9wcmludCB2ZXJzaW9uIGluZm9cblwKICAgJWMtQyVjIG1hdGNoIGZpbGVuYW1lcyBjYXNlLWlu
c2Vuc2l0aXZlbHkgICAgJWMtTCVjIG1ha2UgKHNvbWUpIG5hbWVzIFwKICBsb3dlcmNhc2VcbiAl
LTQycyAlYy1WJWMgcmV0YWluIFZNUyB2ZXJzaW9uIG51bWJlcnNcbiVzIjsKKyAjZWxzZSAvKiBV
TklYICovCisgc3RhdGljIFpDT05TVCBjaGFyIEZhciBVbnppcFVzYWdlTGluZTRbXSA9ICJcCisg
bW9kaWZpZXJzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXEgIHF1aWV0IG1v
ZGUgKC1xcSA9PiBxdWlldGVyKVxuXAorICAgLW4gIG5ldmVyIG92ZXJ3cml0ZSBleGlzdGluZyBm
aWxlcyAgICAgICAgIC1hICBhdXRvLWNvbnZlcnQgYW55IHRleHQgZmlsZXNcblwKKyAgIC1vICBv
dmVyd3JpdGUgZmlsZXMgV0lUSE9VVCBwcm9tcHRpbmcgICAgICAtYWEgdHJlYXQgQUxMIGZpbGVz
IGFzIHRleHRcbiBcCisgIC1qICBqdW5rIHBhdGhzIChkbyBub3QgbWFrZSBkaXJlY3Rvcmllcykg
ICAtdiAgYmUgdmVyYm9zZS9wcmludCB2ZXJzaW9uIGluZm9cblwKKyAgJWMtQyVjIG1hdGNoIGZp
bGVuYW1lcyBjYXNlLWluc2Vuc2l0aXZlbHkgICAgJWMtTCVjIG1ha2UgKHNvbWUpIG5hbWVzIFwK
KyBsb3dlcmNhc2VcbiAlLTQycyAlYy1WJWMgcmV0YWluIFZNUyB2ZXJzaW9uIG51bWJlcnNcbiVz
XG5cCisgICAtTyBDSEFSU0VUICBzcGVjaWZ5IGEgY2hhcmFjdGVyIGVuY29kaW5nIGZvciBET1Ms
IFdpbmRvd3MgYW5kIE9TLzIgYXJjaGl2ZXNcblwKKyAgIC1JIENIQVJTRVQgIHNwZWNpZnkgYSBj
aGFyYWN0ZXIgZW5jb2RpbmcgZm9yIFVOSVggYW5kIG90aGVyIGFyY2hpdmVzXG5cbiI7CisgI2Vu
ZGlmIC8qICFVTklYICovCiAgCiAgc3RhdGljIFpDT05TVCBjaGFyIEZhciBVbnppcFVzYWdlTGlu
ZTVbXSA9ICJcCiAgRXhhbXBsZXMgKHNlZSB1bnppcC50eHQgZm9yIG1vcmUgaW5mbyk6XG5cCioq
KioqKioqKioqKioqKgoqKiogNjU2LDY2MSAqKioqCi0tLSA2NzgsNjg3IC0tLS0KICAKICAgICAg
U0VUTE9DQUxFKExDX0NUWVBFLCIiKTsKICAKKyAjaWZkZWYgVU5JWAorICAgICBpbml0X2NvbnZl
cnNpb25fY2hhcnNldHMoKTsKKyAjZW5kaWYKKyAKICAjaWYgKGRlZmluZWQoX19JQk1DX18pICYm
IGRlZmluZWQoX19ERUJVR19BTExPQ19fKSkKICAgICAgZXh0ZXJuIHZvaWQgRGVidWdNYWxsb2Mo
dm9pZCk7CiAgCioqKioqKioqKioqKioqKgoqKiogMTA3MCwxMDc1ICoqKioKLS0tIDEwOTYsMTEw
NiAtLS0tCiAgICAgIGFyZ2MgPSAqcGFyZ2M7CiAgICAgIGFyZ3YgPSAqcGFyZ3Y7CiAgCisgI2lm
ZGVmIFVOSVgKKyAgICAgZXh0ZXJuIGNoYXIgT0VNX0NQW01BWF9DUF9OQU1FXTsKKyAgICAgZXh0
ZXJuIGNoYXIgSVNPX0NQW01BWF9DUF9OQU1FXTsKKyAjZW5kaWYKKyAgICAgCiAgICAgIHdoaWxl
ICgrK2FyZ3YsICgtLWFyZ2MgPiAwICYmICphcmd2ICE9IE5VTEwgJiYgKiphcmd2ID09ICctJykp
IHsKICAgICAgICAgIHMgPSAqYXJndiArIDE7CiAgICAgICAgICB3aGlsZSAoKGMgPSAqcysrKSAh
PSAwKSB7ICAgIC8qICIhPSAwIjogIHByZXZlbnQgVHVyYm8gQyB3YXJuaW5nICovCioqKioqKioq
KioqKioqKgoqKiogMTIzMywxMjM4ICoqKioKLS0tIDEyNjQsMTI5OCAtLS0tCiAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAjZW5kaWYgIC8qIE1B
Q09TICovCisgI2lmZGVmIFVOSVgKKyAgICAgCQkJY2FzZSAoJ0knKToKKyAgICAgICAgICAgICAg
ICAgICAgIGlmIChuZWdhdGl2ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgIEluZm8oc2xp
ZGUsIDB4NDAxLCAoKGNoYXIgKilzbGlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJl
cnJvcjogIGVuY29kaW5ncyBjYW4ndCBiZSBuZWdhdGVkIikpOworICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybihQS19QQVJBTSk7CisgICAgIAkJCQl9IGVsc2UgeworICAgICAJCQkJCWlm
KCpzKSB7IC8qIEhhbmRsZSB0aGUgLUljaGFyc2V0IGNhc2UgKi8KKyAgICAgCQkJCQkJLyogQXNz
dW1lIHRoYXQgY2hhcnNldHMgY2FuJ3Qgc3RhcnQgd2l0aCBhIGRhc2ggdG8gc3BvdCBhcmd1bWVu
dHMgbWlzdXNlICovCisgICAgIAkJCQkJCWlmKCpzID09ICctJykgeyAKKyAgICAgCSAgICAgICAg
ICAgICAgICAgICAgICAgIEluZm8oc2xpZGUsIDB4NDAxLCAoKGNoYXIgKilzbGlkZSwKKyAgICAg
ICAgIAkJICAgICAgICAgICAgICAgICAgImVycm9yOiAgYSB2YWxpZCBjaGFyYWN0ZXIgZW5jb2Rp
bmcgc2hvdWxkIGZvbGxvdyB0aGUgLUkgYXJndW1lbnQiKSk7CisgICAgIAkgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4oUEtfUEFSQU0pOyAKKyAgICAgCQkJCQkJfQorICAgICAJCQkJCQlz
dHJuY3B5KElTT19DUCwgcywgc2l6ZW9mKElTT19DUCkpOworICAgICAJCQkJCX0gZWxzZSB7IC8q
IC1JIGNoYXJzZXQgKi8KKyAgICAgCQkJCQkJKythcmd2OworICAgICAJCQkJCQlpZighKC0tYXJn
YyA+IDAgJiYgKmFyZ3YgIT0gTlVMTCAmJiAqKmFyZ3YgIT0gJy0nKSkgeworICAgICAJICAgICAg
ICAgICAgICAgICAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLAorICAg
ICAgICAgCQkgICAgICAgICAgICAgICAgICAiZXJyb3I6ICBhIHZhbGlkIGNoYXJhY3RlciBlbmNv
ZGluZyBzaG91bGQgZm9sbG93IHRoZSAtSSBhcmd1bWVudCIpKTsKKyAgICAgCSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybihQS19QQVJBTSk7IAorICAgICAJCQkJCQl9CisgICAgIAkJCQkJ
CXMgPSAqYXJndjsKKyAgICAgCQkJCQkJc3RybmNweShJU09fQ1AsIHMsIHNpemVvZihJU09fQ1Ap
KTsKKyAgICAgCQkJCQl9CisgICAgIAkJCQkJd2hpbGUoKigrK3MpKTsgLyogTm8gcGFyYW1zIHN0
cmFpZ2h0IGFmdGVyIGNoYXJzZXQgbmFtZSAqLworICAgICAJCQkJfQorICAgICAJCQkJYnJlYWs7
CisgI2VuZGlmIC8qID9VTklYICovCiAgICAgICAgICAgICAgICAgIGNhc2UgKCdqJyk6ICAgIC8q
IGp1bmsgcGF0aG5hbWVzL2RpcmVjdG9yeSBzdHJ1Y3R1cmUgKi8KICAgICAgICAgICAgICAgICAg
ICAgIGlmIChuZWdhdGl2ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICB1Ty5qZmxhZyA9IEZB
TFNFLCBuZWdhdGl2ZSA9IDA7CioqKioqKioqKioqKioqKgoqKiogMTI5OSwxMzA0ICoqKioKLS0t
IDEzNTksMTM5MyAtLS0tCiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgICAgICArK3VPLm92ZXJ3cml0ZV9hbGw7CiAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAjaWZkZWYgVU5JWAorICAgICAJCQljYXNlICgnTycpOgorICAgICAgICAgICAgICAg
ICAgICAgaWYgKG5lZ2F0aXZlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgSW5mbyhzbGlk
ZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImVy
cm9yOiAgZW5jb2RpbmdzIGNhbid0IGJlIG5lZ2F0ZWQiKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuKFBLX1BBUkFNKTsKKyAgICAgCQkJCX0gZWxzZSB7CisgICAgIAkJCQkJaWYo
KnMpIHsgLyogSGFuZGxlIHRoZSAtT2NoYXJzZXQgY2FzZSAqLworICAgICAJCQkJCQkvKiBBc3N1
bWUgdGhhdCBjaGFyc2V0cyBjYW4ndCBzdGFydCB3aXRoIGEgZGFzaCB0byBzcG90IGFyZ3VtZW50
cyBtaXN1c2UgKi8KKyAgICAgCQkJCQkJaWYoKnMgPT0gJy0nKSB7IAorICAgICAJICAgICAgICAg
ICAgICAgICAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLAorICAgICAg
ICAgCQkgICAgICAgICAgICAgICAgICAiZXJyb3I6ICBhIHZhbGlkIGNoYXJhY3RlciBlbmNvZGlu
ZyBzaG91bGQgZm9sbG93IHRoZSAtSSBhcmd1bWVudCIpKTsKKyAgICAgCSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybihQS19QQVJBTSk7IAorICAgICAJCQkJCQl9CisgICAgIAkJCQkJCXN0
cm5jcHkoT0VNX0NQLCBzLCBzaXplb2YoT0VNX0NQKSk7CisgICAgIAkJCQkJfSBlbHNlIHsgLyog
LU8gY2hhcnNldCAqLworICAgICAJCQkJCQkrK2FyZ3Y7CisgICAgIAkJCQkJCWlmKCEoLS1hcmdj
ID4gMCAmJiAqYXJndiAhPSBOVUxMICYmICoqYXJndiAhPSAnLScpKSB7CisgICAgIAkgICAgICAg
ICAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFyICopc2xpZGUsCisgICAg
ICAgICAJCSAgICAgICAgICAgICAgICAgICJlcnJvcjogIGEgdmFsaWQgY2hhcmFjdGVyIGVuY29k
aW5nIHNob3VsZCBmb2xsb3cgdGhlIC1PIGFyZ3VtZW50IikpOworICAgICAJICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuKFBLX1BBUkFNKTsgCisgICAgIAkJCQkJCX0KKyAgICAgCQkJCQkJ
cyA9ICphcmd2OworICAgICAJCQkJCQlzdHJuY3B5KE9FTV9DUCwgcywgc2l6ZW9mKE9FTV9DUCkp
OworICAgICAJCQkJCX0KKyAgICAgCQkJCQl3aGlsZSgqKCsrcykpOyAvKiBObyBwYXJhbXMgc3Ry
YWlnaHQgYWZ0ZXIgY2hhcnNldCBuYW1lICovCisgICAgIAkJCQl9CisgICAgIAkJCQlicmVhazsK
KyAjZW5kaWYgLyogP1VOSVggKi8KICAgICAgICAgICAgICAgICAgY2FzZSAoJ3AnKTogICAgLyog
cGlwZXM6ICBleHRyYWN0IHRvIHN0ZG91dCwgbm8gbWVzc2FnZXMgKi8KICAgICAgICAgICAgICAg
ICAgICAgIGlmIChuZWdhdGl2ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHVPLmNmbGFn
ID0gRkFMU0U7CioqKiB1bnppcC01LjUwLXJlYWwvdW56cHJpdi5oCTIwMDItMDItMTcgMjI6MDE6
NDguMDAwMDAwMDAwICswNTAwCi0tLSB1bnppcC01LjUwL3VuenByaXYuaAkyMDA2LTAyLTIwIDE0
OjE2OjI3LjE5ODYwMDIxNiArMDUwMAoqKioqKioqKioqKioqKioKKioqIDExMDMsMTEwOSAqKioq
CiAgIyAgZGVmaW5lIGxhc3RjaGFyKHB0ciwgbGVuKSAocHRyWyhsZW4pLTFdKQogICMgIGRlZmlu
ZSBNQlNDSFIoc3RyLCBjKSBzdHJjaHIoc3RyLCBjKQogICMgIGRlZmluZSBNQlNSQ0hSKHN0ciwg
Yykgc3RycmNocihzdHIsIGMpCiEgIyAgZGVmaW5lIFNFVExPQ0FMRShjYXRlZ29yeSwgbG9jYWxl
KQogICNlbmRpZiAvKiA/X01CQ1MgKi8KICAjZGVmaW5lIElOQ1NUUihwdHIpIFBSRUlOQ1NUUihw
dHIpCiAgCi0tLSAxMTAzLDExMTEgLS0tLQogICMgIGRlZmluZSBsYXN0Y2hhcihwdHIsIGxlbikg
KHB0clsobGVuKS0xXSkKICAjICBkZWZpbmUgTUJTQ0hSKHN0ciwgYykgc3RyY2hyKHN0ciwgYykK
ICAjICBkZWZpbmUgTUJTUkNIUihzdHIsIGMpIHN0cnJjaHIoc3RyLCBjKQohICMgIGlmbmRlZiBT
RVRMT0NBTEUKISAjICAgIGRlZmluZSBTRVRMT0NBTEUoY2F0ZWdvcnksIGxvY2FsZSkKISAjICBl
bmRpZgogICNlbmRpZiAvKiA/X01CQ1MgKi8KICAjZGVmaW5lIElOQ1NUUihwdHIpIFBSRUlOQ1NU
UihwdHIpCiAgCioqKioqKioqKioqKioqKgoqKiogMjQyNCwyNDMwICoqKioKICAgICAgICAgICAh
KCgoaXNsb2NoZHIpIHx8IChpc3V4YXR0KSkgJiYgXAogICAgICAgICAgICAgKChob3N0dmVyKSA9
PSAyNSB8fCAoaG9zdHZlcikgPT0gMjYgfHwgKGhvc3R2ZXIpID09IDQwKSkpIHx8IFwKICAgICAg
ICAgIChob3N0bnVtKSA9PSBGU19IUEZTXyB8fCBcCiEgICAgICAgICAoKGhvc3RudW0pID09IEZT
X05URlNfICYmIChob3N0dmVyKSA9PSA1MCkpIHsgXAogICAgICAgICAgX09FTV9JTlRFUk4oKHN0
cmluZykpOyBcCiAgICAgIH0gZWxzZSB7IFwKICAgICAgICAgIF9JU09fSU5URVJOKChzdHJpbmcp
KTsgXAotLS0gMjQyNiwyNDMyIC0tLS0KICAgICAgICAgICAhKCgoaXNsb2NoZHIpIHx8IChpc3V4
YXR0KSkgJiYgXAogICAgICAgICAgICAgKChob3N0dmVyKSA9PSAyNSB8fCAoaG9zdHZlcikgPT0g
MjYgfHwgKGhvc3R2ZXIpID09IDQwKSkpIHx8IFwKICAgICAgICAgIChob3N0bnVtKSA9PSBGU19I
UEZTXyB8fCBcCiEgICAgICAgICAoKGhvc3RudW0pID09IEZTX05URlNfLyogJiYgKGhvc3R2ZXIp
ID09IDUwKi8pKSB7IFwKICAgICAgICAgIF9PRU1fSU5URVJOKChzdHJpbmcpKTsgXAogICAgICB9
IGVsc2UgeyBcCiAgICAgICAgICBfSVNPX0lOVEVSTigoc3RyaW5nKSk7IFwKKioqIHVuemlwLTUu
NTAtcmVhbC96aXBpbmZvLmMJMjAwMS0xMi0yNiAwMzo1Njo0MC4wMDAwMDAwMDAgKzA1MDAKLS0t
IHVuemlwLTUuNTAvemlwaW5mby5jCTIwMDYtMDItMjAgMTQ6MTY6MjcuMjAwNTk5OTEyICswNTAw
CioqKioqKioqKioqKioqKgoqKiogNDQwLDQ0NSAqKioqCi0tLSA0NDAsNDQ5IC0tLS0KICAgICAg
aW50ICAgIHRmbGFnX3NsbT1UUlVFLCB0ZmxhZ18ydj1GQUxTRTsKICAgICAgaW50ICAgIGV4cGxp
Y2l0X2g9RkFMU0UsIGV4cGxpY2l0X3Q9RkFMU0U7CiAgCisgI2lmZGVmIFVOSVgKKyAgICAgZXh0
ZXJuIGNoYXIgT0VNX0NQW01BWF9DUF9OQU1FXTsKKyAgICAgZXh0ZXJuIGNoYXIgSVNPX0NQW01B
WF9DUF9OQU1FXTsKKyAjZW5kaWYKICAKICAjaWZkZWYgTUFDT1MKICAgICAgdU8ubGZsYWcgPSBM
RkxBRzsgICAgICAgICAvKiByZXNldCBkZWZhdWx0IG9uIGVhY2ggY2FsbCAqLwoqKioqKioqKioq
KioqKioKKioqIDQ4NCw0ODkgKioqKgotLS0gNDg4LDUyMiAtLS0tCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVPLmxmbGFnID0gMDsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICNpZmRlZiBVTklYCisgICAgIAkJCWNhc2UgKCdJJyk6
CisgICAgICAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFyICopc2xpZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZXJyb3I6ICBlbmNvZGluZ3MgY2FuJ3QgYmUgbmVnYXRlZCIpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4oUEtfUEFSQU0pOworICAgICAJCQkJfSBlbHNl
IHsKKyAgICAgCQkJCQlpZigqcykgeyAvKiBIYW5kbGUgdGhlIC1JY2hhcnNldCBjYXNlICovCisg
ICAgIAkJCQkJCS8qIEFzc3VtZSB0aGF0IGNoYXJzZXRzIGNhbid0IHN0YXJ0IHdpdGggYSBkYXNo
IHRvIHNwb3QgYXJndW1lbnRzIG1pc3VzZSAqLworICAgICAJCQkJCQlpZigqcyA9PSAnLScpIHsg
CisgICAgIAkgICAgICAgICAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFy
ICopc2xpZGUsCisgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICJlcnJvcjogIGEgdmFsaWQg
Y2hhcmFjdGVyIGVuY29kaW5nIHNob3VsZCBmb2xsb3cgdGhlIC1JIGFyZ3VtZW50IikpOworICAg
ICAJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuKFBLX1BBUkFNKTsgCisgICAgIAkJCQkJ
CX0KKyAgICAgCQkJCQkJc3RybmNweShJU09fQ1AsIHMsIHNpemVvZihJU09fQ1ApKTsKKyAgICAg
CQkJCQl9IGVsc2UgeyAvKiAtSSBjaGFyc2V0ICovCisgICAgIAkJCQkJCSsrYXJndjsKKyAgICAg
CQkJCQkJaWYoISgtLWFyZ2MgPiAwICYmICphcmd2ICE9IE5VTEwgJiYgKiphcmd2ICE9ICctJykp
IHsKKyAgICAgCSAgICAgICAgICAgICAgICAgICAgICAgIEluZm8oc2xpZGUsIDB4NDAxLCAoKGNo
YXIgKilzbGlkZSwKKyAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgImVycm9yOiAgYSB2YWxp
ZCBjaGFyYWN0ZXIgZW5jb2Rpbmcgc2hvdWxkIGZvbGxvdyB0aGUgLUkgYXJndW1lbnQiKSk7Cisg
ICAgIAkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4oUEtfUEFSQU0pOyAKKyAgICAgCQkJ
CQkJfQorICAgICAJCQkJCQlzID0gKmFyZ3Y7CisgICAgIAkJCQkJCXN0cm5jcHkoSVNPX0NQLCBz
LCBzaXplb2YoSVNPX0NQKSk7CisgICAgIAkJCQkJfQorICAgICAJCQkJCXdoaWxlKCooKytzKSk7
IC8qIE5vIHBhcmFtcyBzdHJhaWdodCBhZnRlciBjaGFyc2V0IG5hbWUgKi8KKyAgICAgCQkJCX0K
KyAgICAgCQkJCWJyZWFrOworICNlbmRpZiAvKiA/VU5JWCAqLwogICAgICAgICAgICAgICAgICBj
YXNlICdsJzogICAgICAvKiBsb25nZXIgZm9ybSBvZiAibHMgLWwiIHR5cGUgbGlzdGluZyAqLwog
ICAgICAgICAgICAgICAgICAgICAgaWYgKG5lZ2F0aXZlKQogICAgICAgICAgICAgICAgICAgICAg
ICAgIHVPLmxmbGFnID0gLTIsIG5lZ2F0aXZlID0gMDsKKioqKioqKioqKioqKioqCioqKiA1MDQs
NTA5ICoqKioKLS0tIDUzNyw1NzEgLS0tLQogICAgICAgICAgICAgICAgICAgICAgICAgIEcuTV9m
bGFnID0gVFJVRTsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICNlbmRpZgorICNpZmRl
ZiBVTklYCisgICAgIAkJCWNhc2UgKCdPJyk6CisgICAgICAgICAgICAgICAgICAgICBpZiAobmVn
YXRpdmUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChj
aGFyICopc2xpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXJyb3I6ICBlbmNvZGlu
Z3MgY2FuJ3QgYmUgbmVnYXRlZCIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4o
UEtfUEFSQU0pOworICAgICAJCQkJfSBlbHNlIHsKKyAgICAgCQkJCQlpZigqcykgeyAvKiBIYW5k
bGUgdGhlIC1PY2hhcnNldCBjYXNlICovCisgICAgIAkJCQkJCS8qIEFzc3VtZSB0aGF0IGNoYXJz
ZXRzIGNhbid0IHN0YXJ0IHdpdGggYSBkYXNoIHRvIHNwb3QgYXJndW1lbnRzIG1pc3VzZSAqLwor
ICAgICAJCQkJCQlpZigqcyA9PSAnLScpIHsgCisgICAgIAkgICAgICAgICAgICAgICAgICAgICAg
ICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFyICopc2xpZGUsCisgICAgICAgICAJCSAgICAgICAg
ICAgICAgICAgICJlcnJvcjogIGEgdmFsaWQgY2hhcmFjdGVyIGVuY29kaW5nIHNob3VsZCBmb2xs
b3cgdGhlIC1JIGFyZ3VtZW50IikpOworICAgICAJICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuKFBLX1BBUkFNKTsgCisgICAgIAkJCQkJCX0KKyAgICAgCQkJCQkJc3RybmNweShPRU1fQ1As
IHMsIHNpemVvZihPRU1fQ1ApKTsKKyAgICAgCQkJCQl9IGVsc2UgeyAvKiAtTyBjaGFyc2V0ICov
CisgICAgIAkJCQkJCSsrYXJndjsKKyAgICAgCQkJCQkJaWYoISgtLWFyZ2MgPiAwICYmICphcmd2
ICE9IE5VTEwgJiYgKiphcmd2ICE9ICctJykpIHsKKyAgICAgCSAgICAgICAgICAgICAgICAgICAg
ICAgIEluZm8oc2xpZGUsIDB4NDAxLCAoKGNoYXIgKilzbGlkZSwKKyAgICAgICAgIAkJICAgICAg
ICAgICAgICAgICAgImVycm9yOiAgYSB2YWxpZCBjaGFyYWN0ZXIgZW5jb2Rpbmcgc2hvdWxkIGZv
bGxvdyB0aGUgLU8gYXJndW1lbnQiKSk7CisgICAgIAkgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4oUEtfUEFSQU0pOyAKKyAgICAgCQkJCQkJfQorICAgICAJCQkJCQlzID0gKmFyZ3Y7Cisg
ICAgIAkJCQkJCXN0cm5jcHkoT0VNX0NQLCBzLCBzaXplb2YoT0VNX0NQKSk7CisgICAgIAkJCQkJ
fQorICAgICAJCQkJCXdoaWxlKCooKytzKSk7IC8qIE5vIHBhcmFtcyBzdHJhaWdodCBhZnRlciBj
aGFyc2V0IG5hbWUgKi8KKyAgICAgCQkJCX0KKyAgICAgCQkJCWJyZWFrOworICNlbmRpZiAvKiA/
VU5JWCAqLwogICAgICAgICAgICAgICAgICBjYXNlICdzJzogICAgICAvKiBkZWZhdWx0OiAgc2hv
cnRlciAibHMgLWwiIHR5cGUgbGlzdGluZyAqLwogICAgICAgICAgICAgICAgICAgICAgaWYgKG5l
Z2F0aXZlKQogICAgICAgICAgICAgICAgICAgICAgICAgIHVPLmxmbGFnID0gLTIsIG5lZ2F0aXZl
ID0gMDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>