From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.text.pandoc/25629 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: BPJ Newsgroups: gmane.text.pandoc Subject: Re: simple dictionary with pandoc Date: Sun, 12 Jul 2020 18:14:05 +0200 Message-ID: References: Reply-To: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="0000000000009bedbb05aa40dd35" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="18570"; mail-complaints-to="usenet@ciao.gmane.io" Cc: tamas.ferenci-nmadKexVIb0HWmgEVkV9KA@public.gmane.org To: pandoc-discuss Original-X-From: pandoc-discuss+bncBCWMVYEK54FRBWPNVT4AKGQEJW4GIXQ-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org Sun Jul 12 18:14:20 2020 Return-path: Envelope-to: gtp-pandoc-discuss@m.gmane-mx.org Original-Received: from mail-lf1-f64.google.com ([209.85.167.64]) by ciao.gmane.io with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1juecO-0004if-CI for gtp-pandoc-discuss@m.gmane-mx.org; Sun, 12 Jul 2020 18:14:20 +0200 Original-Received: by mail-lf1-f64.google.com with SMTP id z12sf11286066lfe.11 for ; Sun, 12 Jul 2020 09:14:20 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1594570459; cv=pass; d=google.com; s=arc-20160816; b=kMiQP9JFINNfukHML9xesR6WJijx+/t3kYgoib9MXDiW7v/52VS9SC872567mlWPjp /X3dibgLRlGkYHtSvfHks5WxcB3M9IHoiZ5DF6Xd80kVIYqzv605UtJxQaX3rK1rB50u 5clgqWgUp2hSw7E0dzpGX6xubYk95cO1sp7Rme3llfW1p7WNJOtzClCpr1qT6RIbQMkF KjJGV8q372rWLMJbfO16vhbwd1pcVepNZhtkAVTTo4jHDQB+2IMkunW0LCE4S2mOfvYK 1KnCMl/DYFHGD2yGtfUGBBmcqjoqf9PFVv83ETKRblVmumI/T/EwEj3Wg2bTgjT6rfTq GG3g== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to:cc:to:subject:message-id :date:from:in-reply-to:references:mime-version:sender:dkim-signature :dkim-signature; bh=PUsBZfKN5srQsiKv3w9202loKqzru9hhSdSHQyVqzGY=; b=gA9tYk1umDh1Ueiripvoo8i3RaUTNRLmAJQjZ1d37e5jld4yFLGM0fsjpHhgo/9rTZ 8urZVH1K5e6MCjeQEEuqyFd535V8QNr+aEun9YjjGbsMBoeY4Zvacr9msGHFquJ/B2QK SrEo+BjpzSpvKINLeXbqut31y+LkJ2XDoiTfRZMj6Xi4CF4mwJO5cK0a1iB48PqMxA2q N87Hy1YHbcS5w4P0XflacF2F4HqA+yCOHi/Uk6PJHj2ko5if+rDjiqD66c7unP2jgv+j n4OIdvbJb7hdbcKkaRw1VwkJBBerdiYbdCwlKVoH2UAehps60sqgjn7K3xwPNcdrCkwo QWqQ== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=VSty59jX; spf=pass (google.com: domain of melroch-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org designates 2a00:1450:4864:20::244 as permitted sender) smtp.mailfrom=melroch-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20161025; h=sender:mime-version:references:in-reply-to:from:date:message-id :subject:to:cc:x-original-sender:x-original-authentication-results :reply-to:precedence:mailing-list:list-id:list-post:list-help :list-archive:list-subscribe:list-unsubscribe; bh=PUsBZfKN5srQsiKv3w9202loKqzru9hhSdSHQyVqzGY=; b=taAqW4nuL2QrszDMxQTX2D1aO9mw049qPjM2mPzFKP1o1pDsE5r95Ha7DiyuEtZO+O mxFhvLsPWPjwGaBDg5H9Ds2N501ZMgVFu+H2I1NZBkg4CXPqeeqIce7cCc89/M3yz2cb iU3aoe5B1OAQZkrZvu1kIQj5rynxpX4acfKKJrC7njgp5/VH0ycAsFwFsNYoGKuwMLw/ EvKudabubn1yqZP3ADaBpL83aEOaRb+c24rvkbQMNpac0P2NG7q95v2K7pc+Pp/zFdsT uH/VkPXvJC77WUUrtpepY55zs/mT/n6JxhE4HB/lGB2IC0t/Oe5jVNtp44s48PyLkxNv U6MQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:x-original-sender:x-original-authentication-results:reply-to :precedence:mailing-list:list-id:list-post:list-help:list-archive :list-subscribe:list-unsubscribe; bh=PUsBZfKN5srQsiKv3w9202loKqzru9hhSdSHQyVqzGY=; b=sA1oX+nUhjNAOY6zXoJbNApTPC9Y+EzU7wUkDsIZPBGYWU4ha11DdTFwPsGV28/myu dOdzdJo/Hq0nulp6uv7timF1EqkXdKyfw57uMy5KzGHe+l90DOkGm339G15Q8BNMHVgI a0WV45+boTDVb5P5+At0MrGCfsHb3+GpxBrVBn3lI5Wo7+PNa/fNt/3kP0DLrUeC13fR mdqdcuniKZXZUAD2IHwLIugkMEmpMgKN6XzzmZaQgiTnHLfNzwYV40scWmDulNXXEcux 6FHjn4tlPHBI85dk7kulN5yo2KAYQmFhyuKhfY6GQgHqoQK8nT46RvSXR2ImhRDxQi+/ i1fA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=sender:x-gm-message-state:mime-version:references:in-reply-to:from :date:message-id:subject:to:cc:x-original-sender :x-original-authentication-results:reply-to:precedence:mailing-list :list-id:x-spam-checked-in-group:list-post:list-help:list-archive :list-subscribe:list-unsubscribe; bh=PUsBZfKN5srQsiKv3w9202loKqzru9hhSdSHQyVqzGY=; b=XCtHjpVrp+2KvcwoQ4OUZlZ5QbPJxwVOSkARjPlq+gzxd4QrOAuwOYHRjOJmp8jaVt NuVGTnj5Vnyu5dBvDX8JRjDxycxKji4XP3TG0Zy6MReETwi+rGVu5jTO6Vb8Wmyh2QxX eXNc/TKn5rdDEjqxiav8T5OY14DxiqNTphn0mBiWSsSyYhh2S0XFx6w/v0VAu8BHhOfG uXBDkmNvklcJryT4Z0H3Tw5JxA5YEYt6S/01l98Iu9qZ/PkxLAKufxi2PMbZ6BImqpk7 G5Co1IGA2vYvpDMp6lPwBoJ/gvd2lt31mTIzSq7W2aDi0he/und+B6ovNXGvZneBsWlp UQVQ== Original-Sender: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org X-Gm-Message-State: AOAM532u2Ua2rYTp/srADEZJ8qHu3JecesSAW65d7yuBm1FcnPavA4Dj rmGTZ00IZh+XsS5IG5LFc+k= X-Google-Smtp-Source: ABdhPJxe9nto1IXCX4xQ4+3DT6fHXthHNV5RDP1rz+bI8+e7GcKt8B6JtnmuqolPYSR7ZS8GDCkvUg== X-Received: by 2002:a19:c194:: with SMTP id r142mr49192325lff.87.1594570459710; Sun, 12 Jul 2020 09:14:19 -0700 (PDT) X-BeenThere: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org Original-Received: by 2002:a2e:9b09:: with SMTP id u9ls2624727lji.3.gmail; Sun, 12 Jul 2020 09:14:16 -0700 (PDT) X-Received: by 2002:a05:651c:3c2:: with SMTP id f2mr47276064ljp.37.1594570456702; Sun, 12 Jul 2020 09:14:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594570456; cv=none; d=google.com; s=arc-20160816; b=t3G80Rz26AIs9y3ty1mMT+HwcFK9aWUo2M4m2AVbwS8YBhEnqKuYKtMDQiMjdvuD/A ZD5sZNYFIVc2ygdOAaDgPz2DJi7MJXPADDKdXD6zCb2RFalbbJXksLfDR4lAaS9bPF/A 3CcMyYNZfgFqWBqY0o+JGCRRN/oWROqpm9PL1wP3G1VPzsYXVmqdtk8IhzHOxvA4v8Yt 55xZw7HoQHDX8sGMI/T01Y+8JsZBkg/3HIDyw9GitP9yTxIGfn91rRJ1T2zM5X6Bbyml wBd6PMNAGgRDdhF3+MkdNwtEoEDoPKWiK+bblhED4THuX78A17g2zcN9XrF8iGCg49oK +fvw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=n74uDfIFpVFv3KCanSaKmD1RHhyi2krftUjZlDpdUDY=; b=V7nw3pTkW0LvcLWEPbD1CIZzEmEptv1cQo+uUuNBUiCRbQD732uGZOByELw8YkHMw0 f4uPHe+JYn0beqNbbmCwEoFnNo/rBdXnfz/BalX4QTYjxSKDTF77cyioIM87lyoS1fSB haWqVa4qzRx0ju/FiPzVbOx8fWIsvxtdWRqviO/Cd+YEpBYMNDHladhk0OxcsYLotpY1 82Bcp7uMKQkhCC7qjhygzVonkqsRHM3G+tru+6s+wGKyvxiLEdEpTa7WaUUSSuMiKjmQ nTP0jE2F3V4zACga6pAZr1F34yK/lGeMbzwxkKn/BzqQaqJAc4vfLgaaQhhxqiKCsAj5 OAWw== ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=VSty59jX; spf=pass (google.com: domain of melroch-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org designates 2a00:1450:4864:20::244 as permitted sender) smtp.mailfrom=melroch-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Original-Received: from mail-lj1-x244.google.com (mail-lj1-x244.google.com. [2a00:1450:4864:20::244]) by gmr-mx.google.com with ESMTPS id q26si636409ljg.1.2020.07.12.09.14.16 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 12 Jul 2020 09:14:16 -0700 (PDT) Received-SPF: pass (google.com: domain of melroch-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org designates 2a00:1450:4864:20::244 as permitted sender) client-ip=2a00:1450:4864:20::244; Original-Received: by mail-lj1-x244.google.com with SMTP id d17so12054627ljl.3 for ; Sun, 12 Jul 2020 09:14:16 -0700 (PDT) X-Received: by 2002:a2e:780e:: with SMTP id t14mr43767555ljc.444.1594570456155; Sun, 12 Jul 2020 09:14:16 -0700 (PDT) In-Reply-To: X-Original-Sender: melroch-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=VSty59jX; spf=pass (google.com: domain of melroch-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org designates 2a00:1450:4864:20::244 as permitted sender) smtp.mailfrom=melroch-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Precedence: list Mailing-list: list pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org; contact pandoc-discuss+owners-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org List-ID: X-Google-Group-Id: 1007024079513 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , Xref: news.gmane.io gmane.text.pandoc:25629 Archived-At: --0000000000009bedbb05aa40dd35 Content-Type: multipart/alternative; boundary="0000000000009bedba05aa40dd33" --0000000000009bedba05aa40dd33 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Tam=C3=A1s, attached is my Perl script for a similar task, adapted to your data sample. It includes automatic sorting of entries with the Sort::ArbBiLex module https://metacpan.org/pod/Sort::ArbBiLex Note that the Hungarian sort order in the script is not complete, because I'm not sure what it should be like, so please complete it before you use the script. The (very simple) format is described both at the link above and more briefly in the script documentation (perl ./build-dictionary.pl --man) The (short) help text is as follows: # build-dictionary.pl The script assumes that there is a YAML file 'dictionary.yaml' in the current directory which contains data in one of the forms described below in the current directory. The data will be sorted according to a customizable sort order defined in the script (see SORTING below!) which must be edited as desired. Then the data is printed to a Pandoc Markdown pipe table in 'dictionary.md', one Hungarian=E2=80=94English word pair per row. Try --man for full documentation! ## LICENSE This software is Copyright (c) 2020 by Benct Philip Jonsson. This is free software, licensed under: The MIT (X11) License < http://www.opensource.org/licenses/mit-license.php> --=20 Better --help|less than helpless Den l=C3=B6r 11 juli 2020 23:41Tam=C3=A1s Ferenci skrev: > Dear All, > > I was thinking of implementing a very-very simple dictionary with pandoc. > The idea is the following: I store the necessary information in a > YAML-file, such as this: > > --- > dictionary: > - hungarian: asztal > english: table > remark: Can be made of wood. > - hungarian: sz=C3=A9k > english: chair > remark: We sit on it. > ... > > Then I use a pandoc conversion with a custom template to produce a > markdown file (arranging them in a table or list), to which I again apply > pandoc to convert to HTML. Both a Hungarian-English and an > English-Hungarian dictionary could be produced; a simple script could > automate this whole process, using the above YAML file as an input and > producing the two HTML files as outputs. > > My first problem is however whether it is possible at all to sort the > entries (alphabetically) with a template? > > If not, are there any good solutions to this problem? Or pandoc is simply > not suited to solve a task like this...? > > Thank you in advance, > Tamas > > -- > You received this message because you are subscribed to the Google Groups > "pandoc-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To view this discussion on the web visit > https://groups.google.com/d/msgid/pandoc-discuss/f8c4c0d5-fb07-4f8a-9c87-= 8bb654cfd525o%40googlegroups.com > > . > --=20 You received this message because you are subscribed to the Google Groups "= pandoc-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an e= mail to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To view this discussion on the web visit https://groups.google.com/d/msgid/= pandoc-discuss/CADAJKhBj-BMcD7S94q1gu3cpxQDv9Dz18cUxrmi0rq2Ft0nQ9A%40mail.g= mail.com. --0000000000009bedba05aa40dd33 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Tam=C3=A1s,

attached is my Perl script for a similar task, adapted to your data samp= le. It includes automatic sorting of entries with the Sort::ArbBiLex module=

https://metacpan.org/pod/Sort::ArbBiLex

Note that the Hungarian so= rt order in the script is not complete, because I'm not sure what it sh= ould be like, so please complete it before you use the script. The (very si= mple) format is described both at the link above and more briefly in the sc= ript documentation (perl ./build-dic= tionary.pl --man)

Th= e (short) help text is as follows:


The s= cript assumes that there is a YAML file
'diction= ary.yaml' in the current directory which contains
data in one of the forms described below in the current
directory.

The dat= a will be sorted according to a customizable sort
or= der defined in the script (see SORTING below!) which must
be edited as desired.

Then the data is printed to a Pandoc Markdown pipe table in
'dictionary.md', one Hungarian=E2=80=94English word pai= r per row.

Try --man for= full documentation!

## = LICENSE

This software is= Copyright (c) 2020=C2=A0 by Benct Philip Jonsson.
<= br>
This is free software, licensed under:
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0The MIT (X11) License
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0<http://www.opensource.org/licenses/mit-license.ph= p>


--
Better --help|less than helpless

Den l=C3=B6r 11 juli 2020 23:41Tam=C3=A1s Ferenci <tamas.ferenci-nmadKexVIb0HWmgEVkV9KA@public.gmane.org> skrev:
Dear All,

=
I was thinking of implementing a very-very simple dictionary wit= h pandoc. The idea is the following: I store the necessary information in a= YAML-file, such as this:

---
dictionary= :
- hungarian: asztal
=C2=A0 english: table
= =C2=A0 remark: Can be made of wood.
- hungarian: sz=C3=A9k
=C2=A0 english: chair
=C2=A0 remark: We sit on it.
<= div>...

Then I use a pandoc conversion with a cust= om template to produce a markdown file (arranging them in a table or list),= to which I again apply pandoc to convert to HTML. Both a Hungarian-English= and an English-Hungarian dictionary could be produced; a simple script cou= ld automate this whole process, using the above YAML file as an input and p= roducing the two HTML files as outputs.

My fir= st problem is however whether it is possible at all to sort the entries (al= phabetically) with a template?

If not, are there a= ny good solutions to this problem? Or pandoc is simply not suited to solve = a task like this...?

Thank you in advance,
Tamas

--
You received this message because you are subscribed to the Google Groups &= quot;pandoc-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an e= mail to pandoc-discuss+unsubscribe-/JYPxA39Uh4Ykp1iOSErHA@public.gmane.org= m.
To view this discussion on the web visit https://groups.google.com/d/msgid/pandoc-discuss/f8c4c0d5-f= b07-4f8a-9c87-8bb654cfd525o%40googlegroups.com.

--
You received this message because you are subscribed to the Google Groups &= quot;pandoc-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an e= mail to pand= oc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
To view this discussion on the web visit https://groups.= google.com/d/msgid/pandoc-discuss/CADAJKhBj-BMcD7S94q1gu3cpxQDv9Dz18cUxrmi0= rq2Ft0nQ9A%40mail.gmail.com.
--0000000000009bedba05aa40dd33-- --0000000000009bedbb05aa40dd35 Content-Type: text/x-perl; charset="UTF-8"; name="build-dictionary.pl" Content-Disposition: attachment; filename="build-dictionary.pl" Content-Transfer-Encoding: base64 Content-ID: <17343cd886d7936d9351> X-Attachment-Id: 17343cd886d7936d9351 IyEvdXNyL2Jpbi9lbnYgcGVybCAtdwoKIyBTZXQgdXAgUGVybCBpbmZyYXN0cnVjdHVyZQp1c2Ug NS4wMTQ7CnVzZSB1dGY4Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB3YXJuaW5ncyBG QVRBTCA9PiAndXRmOCc7CnVzZSBFbmNvZGUgcXdbZW5jb2RlX3V0ZjhdOwoKbXkgJExpY2Vuc2Ug PSA8PCdfX19fX19fX18nOwojIyBMSUNFTlNFCgpUaGlzIHNvZnR3YXJlIGlzIENvcHlyaWdodCAo YykgMjAyMCAgYnkgQmVuY3QgUGhpbGlwIEpvbnNzb24uCgpUaGlzIGlzIGZyZWUgc29mdHdhcmUs IGxpY2Vuc2VkIHVuZGVyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU aGUgTUlUIChYMTEpIExpY2Vuc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocD4KX19f X19fX19fCgpteSAkRG9jdW1lbnRhdGlvbiA9IGVuY29kZV91dGY4IDw8J19fX19fX19fXycgLiAk TGljZW5zZTsKCiMgYnVpbGQtZGljdGlvbmFyeS5wbAoKVGhlIHNjcmlwdCBhc3N1bWVzIHRoYXQg dGhlcmUgaXMgYSBZQU1MIGZpbGUKJ2RpY3Rpb25hcnkueWFtbCcgaW4gdGhlIGN1cnJlbnQgZGly ZWN0b3J5IHdoaWNoIGNvbnRhaW5zCmRhdGEgaW4gb25lIG9mIHRoZSBmb3JtcyBkZXNjcmliZWQg YmVsb3cgaW4gdGhlIGN1cnJlbnQKZGlyZWN0b3J5LgoKVGhlIGRhdGEgd2lsbCBiZSBzb3J0ZWQg YWNjb3JkaW5nIHRvIGEgY3VzdG9taXphYmxlIHNvcnQKb3JkZXIgZGVmaW5lZCBpbiB0aGUgc2Ny aXB0IChzZWUgU09SVElORyBiZWxvdyEpIHdoaWNoIG11c3QKYmUgZWRpdGVkIGFzIGRlc2lyZWQu CgpUaGVuIHRoZSBkYXRhIGlzIHByaW50ZWQgdG8gYSBQYW5kb2MgTWFya2Rvd24gcGlwZSB0YWJs ZSBpbgonZGljdGlvbmFyeS5tZCcsIG9uZSBIdW5nYXJpYW7igJRFbmdsaXNoIHdvcmQgcGFpciBw ZXIgcm93LgoKIyMgREFUQSBGT1JNQVQKClRoZSBzY3JpcHQgYXNzdW1lcyB0aGF0IGRpY3Rpb25h cnkueWFtbCBlaXRoZXIgaXMgYSBsaXN0IG9mCm1hcHMgbGlrZSB0aGlzCgogICAgLS0tCiAgICAt IGh1bmdhcmlhbjogSFVOR0FSSUFOX1dPUkQKICAgICAgZW5nbGlzaDogICBFTkdMSVNIX1dPUkQK ICAgICAgcmVtYXJrOiAgICBSRU1BUksKICAgIC4uLgogICAgCm9yIGEgbWFwIG9mIGxpc3RzIG9m IG1hcHMgbGlrZSB0aGlzCgogICAgLS0tCiAgICBIVU5HQVJJQU5fV09SRDoKICAgICAgLSBlbmds aXNoOiBFTkdMSVNIX01FQU5JTkdfMQogICAgICAgIHJlbWFyazogIFJFTUFSSwogICAgICAtIGVu Z2xpc2g6IEVOR0xJU0hfTUVBTklOR18yCiAgICAgICAgcmVtYXJrOiAgUkVNQVJLCiAgICBPVEhF Ul9IVU5HQVJJQU5fV09SRDoKICAgICAgZW5nbGlzaDogRU5HTElTSF9XT1JECiAgICAgIHJlbWFy azogIFJFTUFSSwogICAgSFVOR0FSSUFOX1NPUlRfS0VZOgogICAgICAtIGh1bmdhcmlhbjogSFVO R0FSSUFOX1dPUkRfMQogICAgICAgIGVuZ2xpc2g6ICAgRU5HTElTSF9NRUFOSU5HXzEKICAgICAg ICByZW1hcms6ICAgIFJFTUFSSwogICAgLi4uCiAgICAgICAgCihob3dldmVyIGZvciBjb252ZW5p ZW5jZSB2YWx1ZXMgaW4gdGhlIHRvcCBsZXZlbCBtYXAgbWF5IGJlCmEgc2luZ2xlIG1hcCBpbnN0 ZWFkIG9mIGEgbGlzdCBvZiBtYXBzISkKCkFjdHVhbGx5IGFsbCBvZiB0aGUgZmllbGRzIChodW5n YXJpYW4sIGVuZ2xpc2gsIHJlbWFyaykgYXJlCm9wdGlvbmFsOyB0aGV5IHdpbGwgYmUgZmlsbGVk IGluIHdpdGggYW4gZW1wdHkgc3RyaW5nIGlmCm1pc3NpbmchCgojIyBTT1JUSU5HCgpUaGUgc2Ny aXB0IHNvcnRzIGVudHJpZXMgYWNjb3JkaW5nIHRvIGEgY3VzdG9tIHNvcnQgb3JkZXIKZGVmaW5l ZCB3aXRoIHRoZSBTb3J0OjpBcmJCaUxleCBtb2R1bGUuCgo8aHR0cHM6Ly9tZXRhY3Bhbi5vcmcv cG9kL1NvcnQ6OkFyYkJpTGV4PgoKIyMjIElNUE9SVEFOVCBOT1RFCgpMb29rIGF0IHRoZSBgdXNl IFNvcnQ6OkFyYkJpTGV4YCBzdGF0ZW1lbnQgaW4gdGhlIHNjcmlwdCBhbmQKYWRqdXN0IHRoZSBz b3J0IG9yZGVyIGRlY2xhcmF0aW9uIGFzIHlvdSB3YW50IGl0IQoKQnJpZWZseSBwdXQgdGhlIHNv cnQgb3JkZXIgZGVjbGFyYXRpb24gaXMgYSBzdHJpbmcgd2hlcmUKZWFjaCBsaW5lIGlzIGEgImxl dHRlciIgb2YgdGhlIHlvdXIgYWxwaGFiZXQgKGFjdHVhbGx5IGEKImZhbWlseSIgb2YgbGV0dGVy cykgYW5kIGVhY2ggIndvcmQiIGluIGEgbGluZSBpcyBhCiJ2YXJpYW50IiBvZiB0aGF0IGxldHRl ci4gIExldHRlcnMgb24gdGhlIHNhbWUgbGluZSB3aWxsCmZvcm0gb25lIGdyb3VwLCBzb3J0ZWQg YW1vbmcgdGhlbXNlbHZlcyBhY2NvcmRpbmcgdG8gdGhlaXIKb3JkZXIgb24gdGhlIGxpbmUsIGFu ZCBlYWNoIGdyb3VwIGlzIHNvcnRlZCByZWxhdGl2ZSB0byB0aGUKb3RoZXIgZ3JvdXBzIGFjY29y ZGluZyB0byB0aGUgb3JkZXIgb2YgdGhlIGxpbmVzLiBUaGUgcmVzdWx0CmlzIGEgc2luZ2xlIGxp c3QsIG5vdCBhIGxpc3Qgb2YgbGlzdHMhCgpOb3RlIHRoYXQgeW91IG11c3QgZGVmaW5lICphbGwq IGxldHRlcnMgaW4geW91ciBhbHBoYWJldCwKaW5jbHVkaW5nIGxpbmVzIGZvciBwdW5jdHVhdGlv biBjaGFyYWN0ZXJzIGFuZCBkaWdpdHMgaWYgeW91CndhbnQgdG8gc29ydCB0aGVtLiBDaGFyYWN0 ZXJzIGluIHRoZSBkYXRhIHdoaWNoIGFyZSBub3QKaW5jbHVkZWQgaW4gdGhlIHNvcnQgb3JkZXIg ZGVjbGFyYXRpb24gYXJlIGNvbXBsZXRlbHkKaWdub3JlZCEKCkFzIGEgY29udHJpZXZlZCBleGFt cGxlIGFzc3VtZSBhIHNvcnQgb3JkZXIgZGVjbGFyYXRpb24gbGlrZSB0aGlzOgoKICAgIEEgYSDD gSDDoQogICAgQyBjCiAgICBDUyBDcyBjcwogICAgRSBlIMOJIMOpCiAgICBPIG8gw5Mgw7MKICAg IMOWIMO2IMWQIMWRCiAgICBTIHMKICAgIFNaIFN6IHN6IFNTWiBzc3oKICAgIFQgdAogICAgVFkg VHkgdHkgVFRZIHR0eQogICAgVSB1IMOaIMO6CgpIZXJlIHRoZSBsaW5lcyByZXByZXNlbnQgdGhl ICJwcmltYXJ5IiBzb3J0IG9yZGVyIGFuZCB0aGUKbGV0dGVycyBpbiBlYWNoIGxpbmUgcmVwcmVz ZW50IHRoZSAic2Vjb25kYXJ5IiBzb3J0IG9yZGVyLgpMZXR0ZXJzIGluIHRoZSBzYW1lIGxpbmUg d2lsbCBjb3VudCBhcyAidGhlIHNhbWUiIGFuZApsZXR0ZXJzIG9uIGRpZmZlcmVudCBsaW5lcyB3 aWxsIGNvdW50IGFzIGRpZmZlcmVudC4gVGh1cwoic3oiIHJlZ2FyZGxlc3Mgb2YgY2FzZSBzb3J0 cyBhZnRlciAicyIgcmVnYXJkbGVzcyBvZiBjYXNlCmJ1dCBpZiB0d28gb3IgbW9yZSB3b3JkcyBi ZWdpbm5pbmcgaW4gInN6IiBkaWZmZXIgb25seSBpbgpjYXNlICJTWiBTeiBzYyIgd2lsbCBzb3J0 IGFmdGVyIGVhY2ggb3RoZXIgYWNjb3JkaW5nIHRvCmNhc2UuIFNpbmNlIHNob3J0IGFuZCBsb25n IHZvd2VscyBhcmUgb24gdGhlIHNhbWUgbGluZSB0aGV5CmFyZSBzb3J0ZWQgYXMgImlkZW50aWNh bCIgYW5kIHdpbGwgYmUgIm1peGVkIiBidXQgc2luY2UgdGhlCmxvbmcgdm93ZWxzIGNvbWUgYWZ0 ZXIgdGhlIHNob3J0IHZvd2VscyBpZiB0d28gd29yZHMgZGlmZmVyCm9ubHkgaW4gdGhlIGxlbmd0 aCBvZiBhIHZvd2VsIHRoZSB3b3JkIHdpdGggdGhlIHNob3J0IHZvd2VsCndpbGwgY29tZSBiZWZv cmUgdGhlIHdvcmQgd2l0aCB0aGUgbG9uZyB2b3dlbC4gT24gdGhlIG90aGVyCmhhbmQgc2luY2Ug Im8iLWxpa2Ugdm93ZWxzIGFuZCAiw7YiLWxpa2Ugdm93ZWxzIGFyZSBvbgpkaWZmZXJlbnQgbGlu ZXMgdGhleSB3aWxsIG5vdCBiZSAibWl4ZWQiIHdpdGggZWFjaCBvdGhlci4KCk5vdyBzdXBwb3Nl IHRoYXQgd2UgaGF2ZSBhIGxpc3Qgd2l0aCB0aGVzZSAid29yZHMiICh3ZWxsCnNvbWUgb2YgdGhl bSAqYXJlKiB3b3JkcyBidXQgdGhlIHBvaW50IGlzIHRvIHNob3cgaG93IHRoZXkKd2lsbCBiZSBz b3J0ZWQpOgoKICAgIFRZRSBUeXUgw5NTWsOJIMWQU8OJIMOzY3NhIG9zdSBjYSBTemEgc3UgY3Nl IMOzY2UgxZF0ZSDFkXPDqSBjc2EKICAgIMOzY3UgVHllIHN6w6kgw5NDQSB0ecOpIG90eXUgU8Op IMWRc3PDqSBzYSBvdHTDqSBvdGEgb2N1IFTDiSDFkXNzegogICAgVEUgw5NDU0EgU3rDqSB0eWEg xZFzemUgY2Ugb3R5IFR5w6kgdHllIMWRdHkgT1NTw4kgw7Z0eWUgxZFzemEKICAgIMO2dHTDqSBz emUgT1Mgb3NlIG90dHlhIMOTQ1NFIHR1IMWRdHUgxZFzc2EgxZFzc3p1IGN1IMOzdHR5w6kgU1UK ICAgIMWQU1NaQSDFkWNlIFRZw4kgb2NzdSDDtnRlIG9zcyBPU1Ugw7Nzc3rDqSDDs3N6w6kgw7Nj YSDDtnR0ecOpIFRlCiAgICDDk1NTWsOJIMWQU1pBIMOzY3NlIE9DVSBPQ1NVIMWRY3NlIHPDqSDD k0NFIMOWU1NaIMWRdHTDqSDDs3R0w6kKICAgIMOTU1NaRSDFkXR5dSBTdSDDk1NBIG90w6kgb3R5 ZSBTRSBvdHlhCgpTb3J0ZWQgd2l0aCB0aGUgYWJvdmUgcnVkaW1lbnRhcnkgc29ydCBvcmRlciB0 aGV5CndpbGwgY29tZSBpbiB0aGlzIG9yZGVyOgoKICAgIGNhIGNlIGN1IGNzYSBjc2Ugw5NDQSDD s2NhIMOTQ0Ugw7NjZSBPQ1Ugb2N1IMOzY3Ugw5NDU0Egw7Njc2EKICAgIMOTQ1NFIMOzY3NlIE9D U1Ugb2NzdSBPUyDDk1NBIG9zZSBvc3MgT1NTw4kgT1NVIG9zdSDDk1Naw4kKICAgIMOTU1NaRSDD k1NTWsOJIMOzc3rDqSDDs3NzesOpIG90YSBvdMOpIG90dMOpIMOzdHTDqSBvdHR5YSDDs3R0ecOp IG90eQogICAgb3R5YSBvdHllIG90eXUgxZFjZSDFkWNzZSDFkFPDiSDFkXPDqSDFkXNzYSDFkXNz w6kgw5ZTU1ogxZFzc3ogxZBTWkEKICAgIMWQU1NaQSDFkXN6YSDFkXN6ZSDFkXNzenUgw7Z0ZSDF kXRlIMO2dHTDqSDFkXR0w6kgw7Z0dHnDqSDFkXR1IMWRdHkKICAgIMO2dHllIMWRdHl1IHNhIFNF IFPDqSBzw6kgU1UgU3Ugc3UgU3phIFN6w6kgc3plIHN6w6kgVEUgVGUgVMOJCiAgICB0dSB0eWEg VFlFIFRZw4kgVHllIFR5w6kgdHllIHR5w6kgVHl1CgpOb3cgc3VwcG9zZSB0aGF0IHdlIGNoYW5n ZSB0aGUgc29ydCBvcmRlciBzbyB0aGF0IGxvbmcgYW5kCnNob3J0IHZvd2VscyBjb21lIG9uIGRp ZmZlcmVudCBsaW5lczsgdGhlIHJlc3VsdGluZyBzb3J0ZWQKd29yZCBsaXN0IGNoYW5nZXMgc2ln bmlmaWNhbnRseToKCgogICAgY2EgY2UgY3UgY3NhIGNzZSBPQ1Ugb2N1IE9DU1Ugb2NzdSBPUyBv c2Ugb3NzIE9TU8OJIE9TVQogICAgb3N1IG90YSBvdMOpIG90dMOpIG90dHlhIG90eSBvdHlhIG90 eWUgb3R5dSDDk0NBIMOzY2Egw5NDRQogICAgw7NjZSDDs2N1IMOTQ1NBIMOzY3NhIMOTQ1NFIMOz Y3NlIMOTU0Egw5NTU1pFIMOTU1rDiSDDk1NTWsOJIMOzc3rDqQogICAgw7Nzc3rDqSDDs3R0w6kg w7N0dHnDqSDDllNTWiDDtnRlIMO2dHTDqSDDtnR0ecOpIMO2dHllIMWRY2UgxZFjc2UgxZBTw4kK ICAgIMWRc8OpIMWRc3NhIMWRc3PDqSDFkXNzeiDFkFNaQSDFkFNTWkEgxZFzemEgxZFzemUgxZFz c3p1IMWRdGUgxZF0dMOpCiAgICDFkXR1IMWRdHkgxZF0eXUgc2EgU0UgU8OpIHPDqSBTVSBTdSBz dSBTemEgc3plIFN6w6kgc3rDqSBURSBUZQogICAgVMOJIHR1IHR5YSBUWUUgVHllIHR5ZSBUWcOJ IFR5w6kgdHnDqSBUeXUKCiMjIE9VVFBVVAoKVGhlIHNjcmlwdCB3cml0ZXMgYSBmaWxlICdkaWN0 aW9uYXJ5Lm1kJyAod2hpY2ggd2lsbCBiZQpvdmVyd3JpdHRlbiBpZiBpdCBhbHJlYWR5IGV4aXN0 cyEgTWFrZSBzdXJlIHRvIGJhY2sgdXAhKQpUaGlzIGZpbGUgd2lsbCBjb250YWluIGEgUGFuZG9j IE1hcmtkb3duIHBpcGUgdGFibGUgaW4gdGhlCmZvcm0KCiAgICB8IEh1bmdhcmlhbiB8IEVuZ2xp c2ggfCBSZW1hcmsKICAgIHw6LS0tLS18Oi0tLS0tfDotLS0tLS0tLS0tCiAgICB8IFdPUkRfMSB8 IE1FQU5JTkdfMSB8IFJFTUFSS18xCiAgICB8IFdPUkRfMiB8IE1FQU5JTkdfMiB8IFJFTUFSS18y CgpUaGUgTWFya2Rvd24gdGFibGUgaXNuJ3QgZ29pbmcgdG8gYmUgcHJldHR5IGJ1dCBpdCBpcyBn b2luZwp0byB3b3JrIQoKIyMgREVQRU5ERU5DSUVTCgpBdCBsZWFzdCBwZXJsIHZlcnNpb24gNS4x NC4gCgpWZXJzaW9uIDUuMTAuMSBvciBncmVhdGVyIG1heSB3b3JrIGlmIHlvdSBjaGFuZ2UgdGhl CnN0YXRlbWVudCBgdXNlIDUuMDE0O2AgdG8gYHVzZSA1LjAxMDAwMTtgLgoKVGhlIGZvbGxvd2lu ZyBtb2R1bGVzIG11c3QgYmUgaW5zdGFsbGVkIGZyb20gQ1BBTiAoc2VlCjxodHRwczovL3d3dy5j cGFuLm9yZy9tb2R1bGVzL0lOU1RBTEwuaHRtbD4gZm9yIGhvdyEpCgotICAgWUFNTDo6UFAKLSAg IFNvcnQ6OkFyYkJpTGV4Ci0gICBQYXRoOjpUaW55CgpfX19fX19fX18KCgppZiAoIGdyZXAgeyAv Xi0tbWFuJC8gfSBAQVJHViApIHsKICAgIHByaW50KCREb2N1bWVudGF0aW9uKSwgZXhpdDsKfQpl bHNpZiAoIGdyZXAgeyAvXig/Oi1ofC0taGVscCkkLyB9IEBBUkdWICkgewogICAgJERvY3VtZW50 YXRpb24gPX4gc3teXCNcIy4qfXtUcnkgLS1tYW4gZm9yIGZ1bGwgZG9jdW1lbnRhdGlvbiFcblxu JExpY2Vuc2Vcbn1tczsKICAgIHByaW50KCREb2N1bWVudGF0aW9uKSwgZXhpdDsKfQoKIyBUaGUg Zm9sbG93aW5nIG1vZHVsZXMgbXVzdCBiZSBpbnN0YWxsZWQgZnJvbSBDUEFOCiMgU2VlIGh0dHBz Oi8vd3d3LmNwYW4ub3JnL21vZHVsZXMvSU5TVEFMTC5odG1sCgp1c2UgWUFNTDo6UFA7CnVzZSBQ YXRoOjpUaW55IHF3W3BhdGhdOwoKIyBEZWZpbmUgSHVuZ2FyaWFuIHNvcnQgb3JkZXIKIyBTZWUg aHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL1NvcnQ6OkFyYkJpTGV4CiMgT25seSB0aGUgZmlyc3Qg ZmV3IGxldHRlcnMgYW5kIHRoZSBsYXN0IHNob3duLAojIHBsZWFzZSByZXBsYWNlIC4uLiB3aXRo IHRoZSByZXN0IGFzIGFwcHJvcHJpYXRlIQp1c2UgU29ydDo6QXJiQmlMZXggJ2h1bmdhcmlhbl9z b3J0JywgcSgKICBBIGEgw4Egw6EKICBCIGIKICBDIGMgQ1ogQ3ogY3oKICBDUyBDcyBjcwogIC4u LgogIFpTIFpzIHpzIFpaUyB6enMKKTsKCiMgSW5zdGFudGlhdGUgWUFNTCBwYXJzZXIKbXkgJHlw cCA9IFlBTUw6OlBQLT5uZXcoCiAgICBzY2hlbWEgPT4gWydKU09OJ10sCiAgICBib29sZWFuID0+ ICdKU09OOjpQUCcsCik7CgojIFJlYWQgaW4gWUFNTCBkYXRhCm15ICRkYXRhID0gJHlwcC0+bG9h ZF9maWxlKCdkaWN0aW9uYXJ5LnlhbWwnKTsKCiMgRG8gdGhpcyBpZiAkZGF0YSBpcyBhIGxpc3Qg b2YgbWFwcwppZiAoICdBUlJBWScgZXEgcmVmICRkYXRhICkgewogICAgbXkgJWtleWVkX2RhdGE7 CiAgICBmb3IgbXkgJGl0ZW0gKCBAJGRhdGEgKSB7CiAgICAgICAgbXkgJGtleSAgID0gJGl0ZW0t PntodW5nYXJpYW59OwogICAgICAgICMgVGhlIHZhbHVlIGZvciBlYWNoIGtleSBpcyBhIGxpc3Qg b2YgbWFwcwogICAgICAgIG15ICRpdGVtcyA9ICRrZXllZF9kYXRheyRrZXl9IC8vPSBbXTsgIyAv IGZvciBwb29yIGVkaXRvciEKICAgICAgICBwdXNoIEAkaXRlbXMsICRpdGVtOwogICAgfQogICAg JGRhdGEgPSBcJWtleWVkX2RhdGE7ICMgc2ljIQp9CgojIFNvcnQgdGhlIGtleXMgaW4gSHVuZ2Fy aWFuIG9yZGVyCm15IEBrZXlzID0gaHVuZ2FyaWFuX3NvcnQoa2V5cyAlJGRhdGEpOwoKIyBUaGUg cm93cyBvZiB0aGUgTWFya2Rvd24gdGFibGUgYXJlIGNvbGxlY3RlZCBoZXJlCiMgVGhlIHRhYmxl IGlzbid0IGdvaW5nIHRvIGJlIHByZXR0eSBidXQgaXQgaXMgZ29pbmcgdG8gd29yayEKbXkgQHJv d3M7CgpwdXNoIEByb3dzLCAKICAgICMgSGVhZGVycwogICAgInwgSHVuZ2FyaWFuIHwgRW5nbGlz aCB8IFJlbWFya1xuIiwKICAgICMgQ29sdW1uIHNwZWNpZmllcgogICAgInw6LS0tLS18Oi0tLS0t fDotLS0tLS0tLS0tXG4iOwoKZm9yIG15ICRrZXkgKCBAa2V5cyApIHsKICAgIG15ICRpdGVtcyA9 ICRkYXRhLT57JGtleX07CiAgICAjIE1ha2Ugc3VyZSB3ZSBoYXZlIGEgbGlzdCBvZiBtYXBzCiAg ICAjIEhhbmRsZSBudWxsIHZhbHVlCiAgICAkaXRlbXMgLy89IFtdOwogICAgdW5sZXNzICggJ0FS UkFZJyBlcSByZWYgJGl0ZW1zICkgewogICAgICAgICRpdGVtcyA9IFskaXRlbXNdOwogICAgfQog ICAgZm9yIG15ICRpdGVtICggQCRpdGVtcyApIHsKICAgICAgICB1bmxlc3MgKCAnSEFTSCcgZXEg cmVmICRpdGVtICkgewogICAgICAgICAgICBkaWUgIkV4cGVjdGVkIGRpY3Rpb25hcnkueWFtbCB0 byBiZSBsaXN0IG9mIG1hcHMgb3IgbWFwIG9mIChsaXN0cyBvZikgbWFwcyAodHJ5IC0taGVscCki OwogICAgICAgIH0KICAgICAgICAjIEluc2VydCBIdW5nYXJpYW4gd29yZCBpZiB1bmRlZmluZWQK ICAgICAgICAkaXRlbS0+e2h1bmdhcmlhbn0gLy89ICRrZXk7ICMgLyBmb3IgcG9vciBlZGl0b3Ih CiAgICAgICAgbXkoJGh1biwgJGVuZywgJHJlbSkgPSBAeyRpdGVtfXtxdyhodW5nYXJpYW4gZW5n bGlzaCByZW1hcmspfTsKICAgICAgICAjIEZpeCB1cCB2YWx1ZXMgZm9yIHRhYmxlCiAgICAgICAg Zm9yIG15ICR2YWwgKCAkaHVuLCAkZW5nLCAkcmVtICkgewogICAgICAgICAgICAjIEhhbmRsZSB1 bmRlZmluZWQgKG51bGwpIHZhbHVlCiAgICAgICAgICAgICR2YWwgLy89ICIiOwogICAgICAgICAg ICAjIEZpeCB3aGl0ZXNwYWNlIGluIHZhbHVlOgogICAgICAgICAgICAjIHJlcGxhY2UgYWxsIHNl cXVlbmNlcyBvZiB3aGl0ZXNwYWNlIAogICAgICAgICAgICAjIHdpdGggYSBzaW5nbGUgc3BhY2Ug YmVjYXVzZSAKICAgICAgICAgICAgIyBwaXBlIHRhYmxlcyBtdXN0IGJlIG9uZSBsaW5lIHBlciBy b3cKICAgICAgICAgICAgJHZhbCA9fiBzPFxzKz48XHh7MjB9Pmc7CiAgICAgICAgICAgICMgRXNj YXBlIHBpcGVzIGluIHZhbHVlCiAgICAgICAgICAgICR2YWwgPX4gc3tcfH17JiMxMjQ7fWc7CiAg ICAgICAgfQogICAgICAgICMgQWRkIHRhYmxlIHJvdwogICAgICAgIHB1c2ggQHJvd3MsICJ8ICRo dW4gfCAkZW5nIHwgJHJlbVxuIjsKICAgIH0KfQoKIyBEdW1wIHRhYmxlIHJvd3MgdG8gbWFya2Rv d24gZmlsZQpwYXRoKCdkaWN0aW9uYXJ5Lm1kJyktPnNwZXdfdXRmOChcQHJvd3MpOwoKIyBEb25l IQo= --0000000000009bedbb05aa40dd35--