From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Micha=C3=ABl_Cadilhac?= Subject: Re: org-icalendar: Change dates to today in VEVENT export Date: Wed, 28 Aug 2019 17:54:51 -0500 Message-ID: References: <87d0o37mkh.fsf@nicolasgoaziou.fr> <87pnrx4d77.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000027f3005913549d2" Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:48744) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i36qk-0005WS-Fs for emacs-orgmode@gnu.org; Wed, 28 Aug 2019 18:55:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i36qh-0007Kp-PD for emacs-orgmode@gnu.org; Wed, 28 Aug 2019 18:55:34 -0400 Received: from cadilhac.name ([163.172.56.42]:38302 helo=mattermost.cadilhac.name) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1i36qh-0007JC-D6 for emacs-orgmode@gnu.org; Wed, 28 Aug 2019 18:55:31 -0400 Received: from mail-vs1-f50.google.com (mail-vs1-f50.google.com [209.85.217.50]) by mattermost.cadilhac.name (OpenSMTPD) with ESMTPSA id 07fd28f5 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO) for ; Wed, 28 Aug 2019 22:55:28 +0000 (UTC) Received: by mail-vs1-f50.google.com with SMTP id x20so1093811vsx.13 for ; Wed, 28 Aug 2019 15:55:28 -0700 (PDT) In-Reply-To: <87pnrx4d77.fsf@nicolasgoaziou.fr> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: =?UTF-8?Q?Micha=C3=ABl_Cadilhac?= , emacs-orgmode@gnu.org --000000000000027f3005913549d2 Content-Type: multipart/alternative; boundary="000000000000027f2f05913549d0" --000000000000027f2f05913549d0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hopefully I didn't miss anything=E2=80=94I've been running the patched vers= ion for weeks now, so it should be stable in any case. Patch 0003 above should still be OK. Cheers, M. On Tue, 12 Feb 2019 at 02:34, Nicolas Goaziou wrote: > Hello, > > Micha=C3=ABl Cadilhac writes: > > > Well, certainly. I may not have had the best discipline in writing > > these, so turning them into patches is a bit painful. Let me know if > > I can make things better. (I believe my FSF paperwork is still > > alright, if need be.) > > Thank you! Comments follow. > > > +(defcustom org-icalendar-bump-todos nil > > + "Non-nil means that pending TODO VEVENTs are bumped to today. > > +In addition, if non-nil, the number of late days is indicated in the > summary." > > + :group 'org-export-icalendar > > + :type 'boolean) > > This variable is missing :package-version '(Org . "9.3") and :safe > keywords. This is also true for other defcustom introduced throughout > your patches. > > > +(defun org-icalendar-today-timestamp () > > + "Return a TIMESTAMP object for today, at 00:00." > > + (let ((dt (decode-time))) > > + (list 'timestamp > > + (nconc (list :year-start (nth 5 dt) > > + :year-end (nth 5 dt) > > + :month-start (nth 4 dt) > > + :month-end (nth 4 dt) > > + :day-start (nth 3 dt) > > + :day-end (nth 3 dt)))))) > > This function already exists: `org-timestamp-from-time'. > > > +(defun org-icalendar-days-until-timestamp (timestamp) > > + "Return the number of days until TIMESTAMP. > > + > > +If TIMESTAMP occurs today, return 0. > > +If TIMESTAMP occurs yesterday, return -1." > > + (floor > > + (/ (float-time > > + (time-subtract (org-timestamp--to-internal-time timestamp) > > + (apply 'encode-time > > + (append '(0 0 0) (nthcdr 3 (decode-time)))))= ) > > (time-substract (org-timestamp-to-time timestamp) > (current-time)) > > > + (* 60 60 24)))) > > > > - (concat "DL: " summary) loc desc cat tz class))) > > + (concat "DL: " summary) loc desc cat tz class)) > > + > > Spurious blank line. > > > + ;; Case 2: pending TODO overdue and should bump. > > + ((and org-icalendar-bump-todos > > + (< days-until-deadline 0)) > > + (org-icalendar--vevent > > + entry (org-icalendar-today-timestamp) (concat "DL-" ui= d) > > + (concat "DL (" (number-to-string (- > days-until-deadline)) > > + "x): " summary) > > Nitpick: > > (format "DL (%d)x): %s" (- days-until-deadline) summary > > is more readable. > > > + loc desc cat tz class)) > > + ;; Case 3: in the future and should warn. > > + (t > > + (concat > > + ;; If in the warning zone. > > + (when (<=3D days-until-deadline org-deadline-warning-d= ays) > > + (org-icalendar--vevent > > + entry (org-icalendar-today-timestamp) (concat "DL-" > uid) > > + (concat "DL (in " (number-to-string > days-until-deadline) > > + "d.): " summary) > > See above. > > > + ;; Overdue and should bump. > > + (t > > + (org-icalendar--vevent > > + entry (org-icalendar-today-timestamp) (concat "SC-" ui= d) > > + (concat "S (" (number-to-string (- > days-until-scheduled)) "x): " > > + summary) > > Ditto. > > > Subject: [PATCH 2/6] Include tags in SUMMARY if so desired. > > I'm ignoring this patch since it is superseded by the fifth. Could you > merge them? > > > #+vindex: org-icalendar-categories > > #+vindex: org-icalendar-alarm-time > > +#+vindex: org-icalendar-summary-uses-tags > > For tags on the headline, the iCalendar export back-end makes them > > into iCalendar categories. To tweak the inheritance of tags and TODO > > states, configure the variable ~org-icalendar-categories~. To assign > > clock alarms based on time, configure the ~org-icalendar-alarm-time~ > > -variable. > > +variable. Additionally, the variable > > +~org-icalendar-summary-uses-tags~ can be configured to have tags > > +appear in the title of the event, when SUMMARY is not provided. > > I think this should go near the paragraph about > `org-calendar-include-body'. > > > (defcustom org-icalendar-summary-uses-tags nil > > - "Non-nil means that TITLE+TAGS is used when SUMMARY is not provided. > > -If nil, then TITLE is used alone." > > + "Whether tags should be added to the title to create the summary. > > Nitpick. > > "Non-nil means" > "Whether" because it is more unambiguously informative > > When non-nil, tags are added to ... > > or > > Non-nil means tags are added to ... > > > (let ((tags (apply 'concat > > - (mapcar (lambda (x) (concat ":" x)) > > - (org-export-get-tags entry info nil > t))))) > > + (mapcar > > + (lambda (x) (concat ":" x)) > > + (org-export-get-tags > > + entry info nil > > + (eq org-icalendar-summary-uses-tags > 'all-tags)))))) > > (apply 'concat (lambda ...) ...) =3D> (mapconcat (lambda ...) ...) > > Could you send an updated patch series? > > Thank you again. > > Regards, > > -- > Nicolas Goaziou > --000000000000027f2f05913549d0 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hopefully I didn't miss anything=E2=80=94I've been= running the patched version for weeks now, so it should be stable in any c= ase.=C2=A0 Patch 0003 above should still be OK.

Cheers,<= /div>
M.


<= div dir=3D"ltr" class=3D"gmail_attr">On Tue, 12 Feb 2019 at 02:34, Nicolas = Goaziou <mail@nicolasgoaziou.f= r> wrote:
Hello,

Micha=C3=ABl Cadilhac <michael@cadilhac.name> writes:

> Well, certainly.=C2=A0 I may not have had the best discipline in writi= ng
> these, so turning them into patches is a bit painful.=C2=A0 Let me kno= w if
> I can make things better.=C2=A0 (I believe my FSF paperwork is still > alright, if need be.)

Thank you! Comments follow.

> +(defcustom org-icalendar-bump-todos nil
> +=C2=A0 "Non-nil means that pending TODO VEVENTs are bumped to to= day.
> +In addition, if non-nil, the number of late days is indicated in the = summary."
> +=C2=A0 :group 'org-export-icalendar
> +=C2=A0 :type 'boolean)

This variable is missing :package-version '(Org . "9.3") and = :safe
keywords.=C2=A0 This is also true for other defcustom introduced throughout=
your patches.

> +(defun org-icalendar-today-timestamp ()
> +=C2=A0 "Return a TIMESTAMP object for today, at 00:00."
> +=C2=A0 (let ((dt (decode-time)))
> +=C2=A0 =C2=A0 (list 'timestamp
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0(nconc (list :year-start (nth 5 dt)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= :year-end (nth 5 dt)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= :month-start (nth 4 dt)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= :month-end (nth 4 dt)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= :day-start (nth 3 dt)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= :day-end (nth 3 dt))))))

This function already exists: `org-timestamp-from-time'.

> +(defun org-icalendar-days-until-timestamp (timestamp)
> +=C2=A0 "Return the number of days until TIMESTAMP.
> +
> +If TIMESTAMP occurs today, return 0.
> +If TIMESTAMP occurs yesterday, return -1."
> +=C2=A0 (floor
> +=C2=A0 =C2=A0(/ (float-time
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0(time-subtract (org-timestamp--to-internal= -time timestamp)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= (apply 'encode-time
> +=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 (append '(0 0 0) (nthcdr 3 (decode-time))))))

=C2=A0 =C2=A0 (time-substract (org-timestamp-to-time timestamp)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (curr= ent-time))

> +=C2=A0 =C2=A0 =C2=A0 (* 60 60 24))))
>=C2=A0
> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(concat "= DL: " summary) loc desc cat tz class)))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (concat "= ;DL: " summary) loc desc cat tz class))
> +

Spurious blank line.

> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Case 2: pending T= ODO overdue and should bump.
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ((and org-icalendar-= bump-todos
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= (< days-until-deadline 0))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(org-icalendar= --vevent
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 entry (org-ic= alendar-today-timestamp) (concat "DL-" uid)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (concat "= ;DL (" (number-to-string (- days-until-deadline))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 "x): " summary)

Nitpick:

=C2=A0 (format "DL (%d)x): %s" (- days-until-deadline) summary
is more readable.

> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 loc desc cat = tz class))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Case 3: in the fu= ture and should warn.
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (t
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(concat
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; If in the = warning zone.
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (when (<= =3D days-until-deadline org-deadline-warning-days)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (org-i= calendar--vevent
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= entry (org-icalendar-today-timestamp) (concat "DL-" uid)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= (concat "DL (in " (number-to-string days-until-deadline)
> +=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"d.): " summary)

See above.

> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Overdue and shoul= d bump.
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (t
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(org-icalendar= --vevent
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 entry (org-ic= alendar-today-timestamp) (concat "SC-" uid)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (concat "= ;S (" (number-to-string (- days-until-scheduled)) "x): "
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 summary)

Ditto.

> Subject: [PATCH 2/6] Include tags in SUMMARY if so desired.

I'm ignoring this patch since it is superseded by the fifth.=C2=A0 Coul= d you
merge them?

>=C2=A0 #+vindex: org-icalendar-categories
>=C2=A0 #+vindex: org-icalendar-alarm-time
> +#+vindex: org-icalendar-summary-uses-tags
>=C2=A0 For tags on the headline, the iCalendar export back-end makes th= em
>=C2=A0 into iCalendar categories.=C2=A0 To tweak the inheritance of tag= s and TODO
>=C2=A0 states, configure the variable ~org-icalendar-categories~.=C2=A0= To assign
>=C2=A0 clock alarms based on time, configure the ~org-icalendar-alarm-t= ime~
> -variable.
> +variable.=C2=A0 Additionally, the variable
> +~org-icalendar-summary-uses-tags~ can be configured to have tags
> +appear in the title of the event, when SUMMARY is not provided.

I think this should go near the paragraph about
`org-calendar-include-body'.

>=C2=A0 (defcustom org-icalendar-summary-uses-tags nil
> -=C2=A0 "Non-nil means that TITLE+TAGS is used when SUMMARY is no= t provided.
> -If nil, then TITLE is used alone."
> +=C2=A0 "Whether tags should be added to the title to create the = summary.

Nitpick.

"Non-nil means" > "Whether" because it is more unamb= iguously informative

=C2=A0 When non-nil, tags are added to ...

or

=C2=A0 Non-nil means tags are added to ...

>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (let ((tags (apply 'concat
> -=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(mapcar (lambda (x) (concat ":" x)) > -=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(org-export-get-tag= s entry info nil t)))))
> +=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(mapcar
> +=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 (lambda (x) (concat ":" x))
> +=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 (org-export-get-tags
> +=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=A0entry info nil
> +=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(eq org-icalendar-summary-uses-tags '= ;all-tags))))))

=C2=A0 =C2=A0 (apply 'concat (lambda ...) ...) =3D> (mapconcat (lamb= da ...) ...)

Could you send an updated patch series?

Thank you again.

Regards,

--
Nicolas Goaziou
--000000000000027f2f05913549d0-- --000000000000027f3005913549d2 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Allow-tags-to-be-part-of-the-summary-in-iCal-export.patch" Content-Disposition: attachment; filename="0001-Allow-tags-to-be-part-of-the-summary-in-iCal-export.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jzvusvz90 RnJvbSAyN2M2ZjNmYzJiMjc4YWRlZDgzZDM2NGY4OTI0ZGNmMmQ5NjYwMWM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TWljaGE9QzM9QUJsPTIwQ2FkaWxoYWM/PSA8 bWljaGFlbEBjYWRpbGhhYy5uYW1lPgpEYXRlOiBXZWQsIDE0IEF1ZyAyMDE5IDE5OjU1OjA3IC0w NDAwClN1YmplY3Q6IFtQQVRDSF0gQWxsb3cgdGFncyB0byBiZSBwYXJ0IG9mIHRoZSBzdW1tYXJ5 IGluIGlDYWwgZXhwb3J0CgoqIGxpc3Avb3gtaWNhbGVuZGFyLmVsIChvcmctaWNhbGVuZGFyLXN1 bW1hcnktdXNlcy10YWdzKTogSW50cm9kdWNlCm5ldyB2YXJpYWJsZSB0byBpbmNsdWRlIHRhZ3Mg aW4gc3VtbWFyaWVzLgoob3JnLWljYWxlbmRhci1lbnRyeSk6IEltcGxlbWVudCBpdC4KKiBkb2Mv b3JnLW1hbnVhbC5vcmcgKGlDYWxlbmRhciBFeHBvcnQpOiBEb2N1bWVudApvcmctaWNhbGVuZGFy LXN1bW1hcnktdXNlcy10YWdzLgotLS0KIGRvYy9vcmctbWFudWFsLm9yZyAgIHwgIDQgKysrLQog bGlzcC9veC1pY2FsZW5kYXIuZWwgfCAyNCArKysrKysrKysrKysrKysrKysrKysrKysKIDIgZmls ZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBh L2RvYy9vcmctbWFudWFsLm9yZyBiL2RvYy9vcmctbWFudWFsLm9yZwppbmRleCBjMGE5MWFiM2Uu LjdkOWY5ZGY2MSAxMDA2NDQKLS0tIGEvZG9jL29yZy1tYW51YWwub3JnCisrKyBiL2RvYy9vcmct bWFudWFsLm9yZwpAQCAtMTUyNDgsNyArMTUyNDgsOSBAQCBGb3IgdGFncyBvbiB0aGUgaGVhZGxp bmUsIHRoZSBpQ2FsZW5kYXIgZXhwb3J0IGJhY2stZW5kIG1ha2VzIHRoZW0KIGludG8gaUNhbGVu ZGFyIGNhdGVnb3JpZXMuICBUbyB0d2VhayB0aGUgaW5oZXJpdGFuY2Ugb2YgdGFncyBhbmQgVE9E Twogc3RhdGVzLCBjb25maWd1cmUgdGhlIHZhcmlhYmxlIH5vcmctaWNhbGVuZGFyLWNhdGVnb3Jp ZXN+LiAgVG8gYXNzaWduCiBjbG9jayBhbGFybXMgYmFzZWQgb24gdGltZSwgY29uZmlndXJlIHRo ZSB+b3JnLWljYWxlbmRhci1hbGFybS10aW1lfgotdmFyaWFibGUuCit2YXJpYWJsZS4gIEFkZGl0 aW9uYWxseSwgdGhlIHZhcmlhYmxlCit+b3JnLWljYWxlbmRhci1zdW1tYXJ5LXVzZXMtdGFnc34g Y2FuIGJlIGNvbmZpZ3VyZWQgdG8gaGF2ZSB0YWdzCithcHBlYXIgaW4gdGhlIHRpdGxlIG9mIHRo ZSBldmVudCwgd2hlbiBTVU1NQVJZIGlzIG5vdCBwcm92aWRlZC4KIAogIyt2aW5kZXg6IG9yZy1p Y2FsZW5kYXItc3RvcmUtVUlECiAjK2NpbmRleDogQHNhbXB7SUR9LCBwcm9wZXJ0eQpkaWZmIC0t Z2l0IGEvbGlzcC9veC1pY2FsZW5kYXIuZWwgYi9saXNwL294LWljYWxlbmRhci5lbAppbmRleCA3 NzkwNTFjYjAuLjlmMWMwZDQzZiAxMDA2NDQKLS0tIGEvbGlzcC9veC1pY2FsZW5kYXIuZWwKKysr IGIvbGlzcC9veC1pY2FsZW5kYXIuZWwKQEAgLTExOSw2ICsxMTksMjEgQEAgVGhpcyBpcyBhIGxp c3Qgd2l0aCBwb3NzaWJseSBzZXZlcmFsIHN5bWJvbHMgaW4gaXQuICBWYWxpZCBzeW1ib2xzIGFy ZToKIAkgICAgICAoY29uc3QgOnRhZyAiU0NIRURVTEVEIGluIFRPRE8gZW50cmllcyBiZWNvbWUg c3RhcnQgZGF0ZSIKIAkJICAgICB0b2RvLXN0YXJ0KSkpCiAKKyhkZWZjdXN0b20gb3JnLWljYWxl bmRhci1zdW1tYXJ5LXVzZXMtdGFncyBuaWwKKyAgIldoZXRoZXIgdGFncyBzaG91bGQgYmUgYWRk ZWQgdG8gdGhlIHRpdGxlIHRvIGNyZWF0ZSB0aGUgc3VtbWFyeS4KKworSWYgYSBTVU1NQVJZIGlz IHByb3ZpZGVkIGluIHRoZSBlbnRyeSwgdGhpcyBpcyBpcnJlbGV2YW50LgorSWYgbm9uLW5pbCwg aXQgY2FuIGJlIHNldCB0byBgbG9jYWwtdGFncycgb3IgYGFsbC10YWdzJyBpbmRpY2F0aW5nIHdo aWNoIHRhZ3MKK2FyZSB1c2VkIHRvIG1ha2UgdXAgdGhlIHN1bW1hcnk6IG9ubHkgdGFncyBkZWZp bmVkIGluIHRoZSBjdXJyZW50IGxpbmUgb3IgYWxsCit0YWdzIGluY2x1ZGluZyBpbmhlcml0ZWQg b25lcywgcmVzcGVjdGl2ZWx5LiIKKyAgOmdyb3VwICdvcmctZXhwb3J0LWljYWxlbmRhcgorICA6 dHlwZSAnKGNob2ljZQorCSAgKGNvbnN0IDp0YWcgIlVzZSB0aGUgdGFncyBkZWZpbmVkIGluIGN1 cnJlbnQgbGluZSIgbG9jYWwtdGFncykKKwkgIChjb25zdCA6dGFnICJVc2UgYWxsIHRhZ3MsIGlu Y2x1ZGluZyBpbmhlcml0ZWQgb25lcyIgYWxsLXRhZ3MpCisJICAoY29uc3QgOnRhZyAiRG8gbm90 IHVzZSB0YWdzIGluIHN1bW1hcnkiIG5pbCkpKQorCisKKwogKGRlZmN1c3RvbSBvcmctaWNhbGVu ZGFyLWNhdGVnb3JpZXMgJyhsb2NhbC10YWdzIGNhdGVnb3J5KQogICAiSXRlbXMgdGhhdCBzaG91 bGQgYmUgZW50ZXJlZCBpbnRvIHRoZSBcImNhdGVnb3JpZXNcIiBmaWVsZC4KIApAQCAtNTYyLDYg KzU3NywxNSBAQCBpbmxpbmV0YXNrIHdpdGhpbiB0aGUgc2VjdGlvbi4iCiAJICAgICAodHogKG9y Zy1leHBvcnQtZ2V0LW5vZGUtcHJvcGVydHkKIAkJICA6VElNRVpPTkUgZW50cnkKIAkJICAob3Jn LXByb3BlcnR5LWluaGVyaXQtcCAiVElNRVpPTkUiKSkpKQorCSAod2hlbiAoYW5kIG9yZy1pY2Fs ZW5kYXItc3VtbWFyeS11c2VzLXRhZ3MKKwkJICAgIChub3QgKG9yZy1lbGVtZW50LXByb3BlcnR5 IDpTVU1NQVJZIGVudHJ5KSkpCisJICAgKGxldCAoKHRhZ3MgKG1hcGNvbmNhdAorCQkJKGxhbWJk YSAoeCkgKGNvbmNhdCAiOiIgeCkpCisJCQkob3JnLWV4cG9ydC1nZXQtdGFncworCQkJIGVudHJ5 IGluZm8gbmlsCisJCQkgKGVxIG9yZy1pY2FsZW5kYXItc3VtbWFyeS11c2VzLXRhZ3MgJ2FsbC10 YWdzKSkpKSkKKwkgICAgICh3aGVuIHRhZ3MKKwkgICAgICAgKHNldHEgc3VtbWFyeSAoY29uY2F0 IHN1bW1hcnkgIiAiIHRhZ3MgIjoiKSkpKSkKIAkgKGNvbmNhdAogCSAgOzsgRXZlbnRzOiBEZWxl Z2F0ZSB0byBgb3JnLWljYWxlbmRhci0tdmV2ZW50JyB0byBnZW5lcmF0ZQogCSAgOzsgIlZFVkVO VCIgY29tcG9uZW50IGZyb20gc2NoZWR1bGVkLCBkZWFkbGluZSwgb3IgYW55Ci0tIAoyLjIyLjAK Cg== --000000000000027f3005913549d2 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Allow-bumping-late-tasks-and-warning-deadlines-in-iC.patch" Content-Disposition: attachment; filename="0001-Allow-bumping-late-tasks-and-warning-deadlines-in-iC.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jzvutsi31 RnJvbSA3OGM5Mjk4Mzc1OTQyZDczNTQzYWFhODZiOGYyYWYyOWZmNzZhOWRmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TWljaGE9QzM9QUJsPTIwQ2FkaWxoYWM/PSA8 bWljaGFlbEBjYWRpbGhhYy5uYW1lPgpEYXRlOiBUaHUsIDE1IEF1ZyAyMDE5IDEwOjAxOjQ4IC0w NDAwClN1YmplY3Q6IFtQQVRDSF0gQWxsb3cgYnVtcGluZyBsYXRlIHRhc2tzIGFuZCB3YXJuaW5n IGRlYWRsaW5lcyBpbiBpQ2FsIGV4cG9ydAoKKiBsaXNwL294LWljYWxlbmRhci5lbCAob3JnLWlj YWxlbmRhci1idW1wLXRvZG9zKTogTmV3IHZhcmlhYmxlLgoob3JnLWljYWxlbmRhci13YXJuLWRl YWRsaW5lcyk6IE5ldyB2YXJpYWJsZS4KKG9yZy1pY2FsZW5kYXItdG9kYXktdGltZXN0YW1wKTog TmV3IGZ1bmN0aW9uLgoob3JnLWljYWxlbmRhci1kYXlzLXVudGlsLXRpbWVzdGFtcCk6IE5ldyBm dW5jdGlvbi4KKG9yZy1pY2FsZW5kYXItZW50cnkpOiBJbXBsZW1lbnQgYnVtcGluZyBsYXRlIHRh c2tzIGFuZCB3YXJuaW5nIGRlYWRsaW5lcy4KKiBkb2Mvb3JnLW1hbnVhbC5vcmcgKGlDYWxlbmRh ciBFeHBvcnQpOiBEb2N1bWVudCB0aGlzLgotLS0KIGRvYy9vcmctbWFudWFsLm9yZyAgIHwgIDEy ICsrKysrCiBsaXNwL294LWljYWxlbmRhci5lbCB8IDExNCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDExMyBpbnNlcnRpb25zKCsp LCAxMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvb3JnLW1hbnVhbC5vcmcgYi9kb2Mv b3JnLW1hbnVhbC5vcmcKaW5kZXggYzBhOTFhYjNlLi45ZGM1ODI0N2IgMTAwNjQ0Ci0tLSBhL2Rv Yy9vcmctbWFudWFsLm9yZworKysgYi9kb2Mvb3JnLW1hbnVhbC5vcmcKQEAgLTE1MzI5LDYgKzE1 MzI5LDE4IEBAIGNhcGFiaWxpdGllcyBvZiB0aGUgZGVzdGluYXRpb24gYXBwbGljYXRpb24uICBT b21lIGFyZSBtb3JlIGxlbmllbnQKIHRoYW4gb3RoZXJzLiAgQ29uc3VsdCB0aGUgT3JnIG1vZGUg RkFRIGZvciBhZHZpY2Ugb24gc3BlY2lmaWMKIGFwcGxpY2F0aW9ucy4KIAorIyt2aW5kZXg6IG9y Zy1pY2FsZW5kYXItYnVtcC10b2RvcworIyt2aW5kZXg6IG9yZy1pY2FsZW5kYXItd2Fybi1kZWFk bGluZXMKK0FuIGltcG9ydGFudCBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIE9yZyBBZ2VuZGEgYW5k IHRoZSBleHBvcnRlZAorY2FsZW5kYXIgaXMgdGhhdCBvdmVyZHVlIHRhc2tzIGFuZCBkZWFkbGlu ZSB3YXJuaW5ncyBhcmUgbm90IHRyZWF0ZWQKK2luIGFueSBzcGVjaWFsIHdheSBieSBkZWZhdWx0 LiAgVG8gY2hhbmdlIHRoaXMsIGNvbmZpZ3VyZSB0aGUKK3ZhcmlhYmxlcyB+b3JnLWljYWxlbmRh ci1idW1wLXRvZG9zfiBhbmQKK35vcmctaWNhbGVuZGFyLXdhcm4tZGVhZGxpbmVzfi4gIFNldHRp bmcgdGhlIGZpcnN0IHZhcmlhYmxlIHdpbGwgbW92ZQorb3ZlcmR1ZSBUT0RPcyB0byB0aGUgY3Vy cmVudCBkYXksIHRoZWlyIHRpdGxlcyBiZWluZyBjaGFuZ2VkIHRvCityZWZsZWN0IGhvdyBsYXRl IHRoZSB0YXNrIGlzLiAgU2V0dGluZyB0aGUgc2Vjb25kIHZhcmlhYmxlIGFkZHMgYW4KK2V2ZW50 IG9uIHRoZSBjdXJyZW50IGRheSBpZiBhIGRlYWRsaW5lIGV2ZW50IGlzIGR1ZSBpbiB0aGUgbmV4 dAorfm9yZy1kZWFkbGluZS13YXJuaW5nLWRheXN+IGRheXMuCisKICoqIE90aGVyIEJ1aWx0LWlu IEJhY2stZW5kcwogOlBST1BFUlRJRVM6CiA6REVTQ1JJUFRJT046IEV4cG9ydGluZyB0byBhIG1h biBwYWdlLgpkaWZmIC0tZ2l0IGEvbGlzcC9veC1pY2FsZW5kYXIuZWwgYi9saXNwL294LWljYWxl bmRhci5lbAppbmRleCA3NzkwNTFjYjAuLjNhMjkxZWUyYiAxMDA2NDQKLS0tIGEvbGlzcC9veC1p Y2FsZW5kYXIuZWwKKysrIGIvbGlzcC9veC1pY2FsZW5kYXIuZWwKQEAgLTExOSw2ICsxMTksMjQg QEAgVGhpcyBpcyBhIGxpc3Qgd2l0aCBwb3NzaWJseSBzZXZlcmFsIHN5bWJvbHMgaW4gaXQuICBW YWxpZCBzeW1ib2xzIGFyZToKIAkgICAgICAoY29uc3QgOnRhZyAiU0NIRURVTEVEIGluIFRPRE8g ZW50cmllcyBiZWNvbWUgc3RhcnQgZGF0ZSIKIAkJICAgICB0b2RvLXN0YXJ0KSkpCiAKKyhkZWZj dXN0b20gb3JnLWljYWxlbmRhci1idW1wLXRvZG9zIG5pbAorICAiTm9uLW5pbCBtZWFucyB0aGF0 IHBlbmRpbmcgVE9ETyBWRVZFTlRzIGFyZSBidW1wZWQgdG8gdG9kYXkuCitJbiBhZGRpdGlvbiwg aWYgbm9uLW5pbCwgdGhlIG51bWJlciBvZiBsYXRlIGRheXMgaXMgaW5kaWNhdGVkIGluIHRoZSBz dW1tYXJ5LiIKKyAgOmdyb3VwICdvcmctZXhwb3J0LWljYWxlbmRhcgorICA6dHlwZSAnYm9vbGVh bgorICA6cGFja2FnZS12ZXJzaW9uICcoT3JnIC4gIjkuMyIpCisgIDpzYWZlICMnYm9vbGVhbnAp CisKKyhkZWZjdXN0b20gb3JnLWljYWxlbmRhci13YXJuLWRlYWRsaW5lcyBuaWwKKyAgIk5vbi1u aWwgbWVhbnMgdGhhdCBhIG5ldyBWRVZFTlQgaXMgY3JlYXRlZCB0b2RheSB0byB3YXJuIGZvciBk ZWFkbGluZXMuCitUaGlzIG9ubHkgYXBwbGllcyB0byBUT0RPcyB0aGF0IGFyZSBub3QgZG9uZS4g IFJlbGllcyBvbgorYG9yZy1kZWFkbGluZS13YXJuaW5nLWRheXMnIGZvciB0aGUgbnVtYmVyIG9m IGRheXMgZHVyaW5nIHdoaWNoIHRoZSB3YXJuaW5nCitpcyBjcmVhdGVkLiIKKyAgOmdyb3VwICdv cmctZXhwb3J0LWljYWxlbmRhcgorICA6dHlwZSAnYm9vbGVhbgorICA6cGFja2FnZS12ZXJzaW9u ICcoT3JnIC4gIjkuMyIpCisgIDpzYWZlICMnYm9vbGVhbnApCisKIChkZWZjdXN0b20gb3JnLWlj YWxlbmRhci1jYXRlZ29yaWVzICcobG9jYWwtdGFncyBjYXRlZ29yeSkKICAgIkl0ZW1zIHRoYXQg c2hvdWxkIGJlIGVudGVyZWQgaW50byB0aGUgXCJjYXRlZ29yaWVzXCIgZmllbGQuCiAKQEAgLTQ4 MSw2ICs0OTksMjggQEAgb3Igc3ViamVjdCBmb3IgdGhlIGV2ZW50LiIKIAkgICAgKGNvbmNhdCBm b2xkZWQtbGluZSAiXHJcbiAiIChzdWJzdHJpbmcgbGluZSBjaHVuay1zdGFydCkpKSkpKQogICAg IChvcmctc3BsaXQtc3RyaW5nIHMgIlxuIikgIlxyXG4iKSkpCiAKKyhkZWZ1biBvcmctaWNhbGVu ZGFyLXRvZGF5LXRpbWVzdGFtcCAoKQorICAiUmV0dXJuIGEgVElNRVNUQU1QIG9iamVjdCBmb3Ig dG9kYXksIGF0IDAwOjAwLiIKKyAgKGxldCAoKGR0IChkZWNvZGUtdGltZSkpKQorICAgIChsaXN0 ICd0aW1lc3RhbXAKKwkgIChuY29uYyAobGlzdCA6eWVhci1zdGFydCAobnRoIDUgZHQpCisgICAg ICAgICAgICAgICAgICAgIDp5ZWFyLWVuZCAobnRoIDUgZHQpCisgICAgICAgICAgICAgICAgICAg IDptb250aC1zdGFydCAobnRoIDQgZHQpCisgICAgICAgICAgICAgICAgICAgIDptb250aC1lbmQg KG50aCA0IGR0KQorICAgICAgICAgICAgICAgICAgICA6ZGF5LXN0YXJ0IChudGggMyBkdCkKKyAg ICAgICAgICAgICAgICAgICAgOmRheS1lbmQgKG50aCAzIGR0KSkpKSkpCisKKyhkZWZ1biBvcmct aWNhbGVuZGFyLWRheXMtdW50aWwtdGltZXN0YW1wICh0aW1lc3RhbXApCisgICJSZXR1cm4gdGhl IG51bWJlciBvZiBkYXlzIHVudGlsIFRJTUVTVEFNUC4KKworSWYgVElNRVNUQU1QIG9jY3VycyB0 b2RheSwgcmV0dXJuIDAuCitJZiBUSU1FU1RBTVAgb2NjdXJzIHllc3RlcmRheSwgcmV0dXJuIC0x LiIKKyAgKGZsb29yCisgICAoLyAoZmxvYXQtdGltZQorICAgICAgICh0aW1lLXN1YnRyYWN0IChv cmctdGltZXN0YW1wLXRvLXRpbWUgdGltZXN0YW1wKQorCQkgICAgICAoYXBwbHkgJ2VuY29kZS10 aW1lCisJCQkgICAgIChhcHBlbmQgJygwIDAgMCkgKG50aGNkciAzIChkZWNvZGUtdGltZSkpKSkp KQorICAgICAgKCogNjAgNjAgMjQpKSkpCiAKIAwKIDs7OyBGaWx0ZXJzCkBAIC01NjcsMTkgKzYw Nyw2NyBAQCBpbmxpbmV0YXNrIHdpdGhpbiB0aGUgc2VjdGlvbi4iCiAJICA7OyAiVkVWRU5UIiBj b21wb25lbnQgZnJvbSBzY2hlZHVsZWQsIGRlYWRsaW5lLCBvciBhbnkKIAkgIDs7IHRpbWVzdGFt cCBpbiB0aGUgZW50cnkuCiAJICAobGV0ICgoZGVhZGxpbmUgKG9yZy1lbGVtZW50LXByb3BlcnR5 IDpkZWFkbGluZSBlbnRyeSkpKQotCSAgICAoYW5kIGRlYWRsaW5lCi0JCSAobWVtcSAoaWYgdG9k by10eXBlICdldmVudC1pZi10b2RvICdldmVudC1pZi1ub3QtdG9kbykKLQkJICAgICAgIG9yZy1p Y2FsZW5kYXItdXNlLWRlYWRsaW5lKQotCQkgKG9yZy1pY2FsZW5kYXItLXZldmVudAotCQkgIGVu dHJ5IGRlYWRsaW5lIChjb25jYXQgIkRMLSIgdWlkKQotCQkgIChjb25jYXQgIkRMOiAiIHN1bW1h cnkpIGxvYyBkZXNjIGNhdCB0eiBjbGFzcykpKQotCSAgKGxldCAoKHNjaGVkdWxlZCAob3JnLWVs ZW1lbnQtcHJvcGVydHkgOnNjaGVkdWxlZCBlbnRyeSkpKQotCSAgICAoYW5kIHNjaGVkdWxlZAot CQkgKG1lbXEgKGlmIHRvZG8tdHlwZSAnZXZlbnQtaWYtdG9kbyAnZXZlbnQtaWYtbm90LXRvZG8p Ci0JCSAgICAgICBvcmctaWNhbGVuZGFyLXVzZS1zY2hlZHVsZWQpCi0JCSAob3JnLWljYWxlbmRh ci0tdmV2ZW50Ci0JCSAgZW50cnkgc2NoZWR1bGVkIChjb25jYXQgIlNDLSIgdWlkKQotCQkgIChj b25jYXQgIlM6ICIgc3VtbWFyeSkgbG9jIGRlc2MgY2F0IHR6IGNsYXNzKSkpCisJICAgICh3aGVu IChhbmQgZGVhZGxpbmUKKwkJICAgICAgIChtZW1xIChpZiB0b2RvLXR5cGUgJ2V2ZW50LWlmLXRv ZG8gJ2V2ZW50LWlmLW5vdC10b2RvKQorCQkJICAgICBvcmctaWNhbGVuZGFyLXVzZS1kZWFkbGlu ZSkpCisJICAgICAgKGxldCAoKGRheXMtdW50aWwtZGVhZGxpbmUKKwkJICAgICAob3JnLWljYWxl bmRhci1kYXlzLXVudGlsLXRpbWVzdGFtcCBkZWFkbGluZSkpKQorCQkoY29uZAorCQkgOzsgQ2Fz ZSAxOiBKdXN0IGV4cG9ydCB0aGUgZXZlbnQgaWYuLi4KKwkJICgob3IKKwkJICAgOzsgTm90IGEg cGVuZGluZyBUT0RPLgorCQkgICAobm90IChlcSB0b2RvLXR5cGUgJ3RvZG8pKQorCQkgICA7OyBJ cyBkdWUgdG9kYXkuCisJCSAgICg9IGRheXMtdW50aWwtZGVhZGxpbmUgMCkKKwkJICAgOzsgT3Zl cmR1ZSBidXQgbm8gYnVtcGluZy4KKwkJICAgKGFuZCAobm90IG9yZy1pY2FsZW5kYXItYnVtcC10 b2RvcykKKwkJCSg8IGRheXMtdW50aWwtZGVhZGxpbmUgMCkpCisJCSAgIDs7IEluIHRoZSBmdXR1 cmUgYnV0IG5vIHdhcm5pbmcuCisJCSAgIChhbmQgKG5vdCBvcmctaWNhbGVuZGFyLXdhcm4tZGVh ZGxpbmVzKQorCQkJKD4gZGF5cy11bnRpbC1kZWFkbGluZSAwKSkpCisJCSAgKG9yZy1pY2FsZW5k YXItLXZldmVudAorCQkgICBlbnRyeSBkZWFkbGluZSAoY29uY2F0ICJETC0iIHVpZCkKKwkJICAg KGNvbmNhdCAiREw6ICIgc3VtbWFyeSkgbG9jIGRlc2MgY2F0IHR6IGNsYXNzKSkKKwkJIDs7IENh c2UgMjogcGVuZGluZyBUT0RPIG92ZXJkdWUgYW5kIHNob3VsZCBidW1wLgorCQkgKChhbmQgb3Jn LWljYWxlbmRhci1idW1wLXRvZG9zCisJCSAgICAgICAoPCBkYXlzLXVudGlsLWRlYWRsaW5lIDAp KQorCQkgIChvcmctaWNhbGVuZGFyLS12ZXZlbnQKKwkJICAgZW50cnkgKG9yZy1pY2FsZW5kYXIt dG9kYXktdGltZXN0YW1wKSAoY29uY2F0ICJETC0iIHVpZCkKKwkJICAgKGZvcm1hdCAiREwgKCVk eCk6ICVzIiAoLSBkYXlzLXVudGlsLWRlYWRsaW5lKSBzdW1tYXJ5KQorCQkgICBsb2MgZGVzYyBj YXQgdHogY2xhc3MpKQorCQkgOzsgQ2FzZSAzOiBpbiB0aGUgZnV0dXJlIGFuZCBzaG91bGQgd2Fy bi4KKwkJICh0CisJCSAgKGNvbmNhdAorCQkgICA7OyBJZiBpbiB0aGUgd2FybmluZyB6b25lLgor CQkgICAod2hlbiAoPD0gZGF5cy11bnRpbC1kZWFkbGluZSBvcmctZGVhZGxpbmUtd2FybmluZy1k YXlzKQorCQkgICAgIChvcmctaWNhbGVuZGFyLS12ZXZlbnQKKwkJICAgICAgZW50cnkgKG9yZy1p Y2FsZW5kYXItdG9kYXktdGltZXN0YW1wKQorCQkgICAgICAoZm9ybWF0ICJETC0lcy0lZCIgdWlk IGRheXMtdW50aWwtZGVhZGxpbmUpCisJCSAgICAgIChmb3JtYXQgIkRMIChpbiAlZGQuKTogJXMi IGRheXMtdW50aWwtZGVhZGxpbmUgc3VtbWFyeSkKKwkJICAgICAgbG9jIGRlc2MgY2F0IHR6IGNs YXNzKSkKKwkJICAgKG9yZy1pY2FsZW5kYXItLXZldmVudAorCQkgICAgZW50cnkgZGVhZGxpbmUg KGNvbmNhdCAiREwtIiB1aWQpCisJCSAgICAoY29uY2F0ICJETDogIiBzdW1tYXJ5KSBsb2MgZGVz YyBjYXQgdHogY2xhc3MpKSkpKSkpCisgCSAgKGxldCAoKHNjaGVkdWxlZCAob3JnLWVsZW1lbnQt cHJvcGVydHkgOnNjaGVkdWxlZCBlbnRyeSkpKQorCSAgICAod2hlbiAoYW5kIHNjaGVkdWxlZAor CQkgICAgICAgKG1lbXEgKGlmIHRvZG8tdHlwZSAnZXZlbnQtaWYtdG9kbyAnZXZlbnQtaWYtbm90 LXRvZG8pCisJCQkgICAgIG9yZy1pY2FsZW5kYXItdXNlLXNjaGVkdWxlZCkpCisJICAgICAgKGxl dCAoKGRheXMtdW50aWwtc2NoZWR1bGVkCisJCSAgICAgKG9yZy1pY2FsZW5kYXItZGF5cy11bnRp bC10aW1lc3RhbXAgc2NoZWR1bGVkKSkpCisJCShjb25kCisJCSA7OyBBbHJlYWR5IGRvbmUsIGR1 ZSBpbiB0aGUgZnV0dXJlIG9yIHRvZGF5LCBvciBubyBidW1wcy4KKwkJICgob3IgKG5vdCAoZXEg dG9kby10eXBlICd0b2RvKSkKKwkJICAgICAgKD49IGRheXMtdW50aWwtc2NoZWR1bGVkIDApCisJ CSAgICAgIChub3Qgb3JnLWljYWxlbmRhci1idW1wLXRvZG9zKSkKKwkJICAob3JnLWljYWxlbmRh ci0tdmV2ZW50CisJCSAgIGVudHJ5IHNjaGVkdWxlZCAoY29uY2F0ICJTQy0iIHVpZCkKKwkJICAg KGNvbmNhdCAiUzogIiBzdW1tYXJ5KSBsb2MgZGVzYyBjYXQgdHogY2xhc3MpKQorCQkgOzsgT3Zl cmR1ZSBhbmQgc2hvdWxkIGJ1bXAuCisJCSAodAorCQkgIChvcmctaWNhbGVuZGFyLS12ZXZlbnQK KwkJICAgZW50cnkgKG9yZy1pY2FsZW5kYXItdG9kYXktdGltZXN0YW1wKSAoY29uY2F0ICJTQy0i IHVpZCkKKwkJICAgKGZvcm1hdCAiUyAoJWR4KTogJXMiICgtIGRheXMtdW50aWwtc2NoZWR1bGVk KSBzdW1tYXJ5KQorCQkgICBsb2MgZGVzYyBjYXQgdHogY2xhc3MpKSkpKSkKIAkgIDs7IFdoZW4g Y29sbGVjdGluZyBwbGFpbiB0aW1lc3RhbXBzIGZyb20gYSBoZWFkbGluZSBhbmQgaXRzCiAJICA7 OyB0aXRsZSwgc2tpcCBpbmxpbmV0YXNrcyBzaW5jZSBjb2xsZWN0aW9uIHdpbGwgaGFwcGVuIG9u Y2UKIAkgIDs7IEVOVFJZIGlzIG9uZSBvZiB0aGVtLgotLSAKMi4yMi4wCgo= --000000000000027f3005913549d2--