summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndré Fabian Silva Delgado <emulatorman@lavabit.com>2012-07-19 14:26:16 -0300
committerAndré Fabian Silva Delgado <emulatorman@lavabit.com>2012-07-19 14:26:16 -0300
commit152f73fe6e06c0d49505c046786ead7c5afb7cbc (patch)
tree11053f52e5547bcd12862b23915abafa77f00458
parentf424dc07b1a9dd6064f40260255fae7607db3f78 (diff)
parentce32ebcbf7baaf37c3a1843d3a446b92bf98adce (diff)
downloadabslibre-152f73fe6e06c0d49505c046786ead7c5afb7cbc.tar.gz
abslibre-152f73fe6e06c0d49505c046786ead7c5afb7cbc.tar.bz2
abslibre-152f73fe6e06c0d49505c046786ead7c5afb7cbc.zip
Merge branch 'master' of ssh://parabolagnulinux.org:1863/srv/git/abslibre
-rw-r--r--libre/icecat/PKGBUILD4
-rw-r--r--libre/icecat/libre.patch412
-rw-r--r--libre/pacman/0001-Add-conflict-for-replacing-owned-empty-directory.patch152
-rw-r--r--libre/pacman/0002-Check-empty-subdirectory-ownership.patch61
-rw-r--r--libre/pacman/PKGBUILD36
-rw-r--r--libre/pacman/pacman.conf25
-rw-r--r--libre/pacman/pacman.conf.mips64el31
-rw-r--r--libre/pacman/pacman.conf.x86_6427
-rw-r--r--libre/pacman/pacman.install11
-rw-r--r--libre/pacman/rePKGBUILD37
-rw-r--r--libre/parabola-keyring/PKGBUILD10
-rw-r--r--libre/python2-libre/13156-revert-tls-changeset-subinterpreter.patch61
-rw-r--r--libre/python2-libre/PKGBUILD109
-rw-r--r--libre/python2-libre/SRCBUILD36
-rw-r--r--libre/python2-libre/WDAS.patch109
-rw-r--r--libre/python2-libre/doc_license_change.patch44
-rw-r--r--libre/python2-libre/gdbm-magic-values.patch12
-rw-r--r--libre/python2-libre/linux2.patch23
18 files changed, 363 insertions, 837 deletions
diff --git a/libre/icecat/PKGBUILD b/libre/icecat/PKGBUILD
index 9347d3785..88bd70c09 100644
--- a/libre/icecat/PKGBUILD
+++ b/libre/icecat/PKGBUILD
@@ -17,7 +17,7 @@ _pgo=false
_pkgname=icecat
pkgver=13.0.1
-pkgrel=1
+pkgrel=2
if [ -z "$pkgname" ]; then pkgname=$_pkgname; fi
if $_pgo; then
@@ -81,7 +81,7 @@ md5sums=('ba249f3e889089dc64615333dd324791'
'3117865902d1a20ab61d75707be9888e'
'ac29b01c189f20abae2f3eef1618ffc0'
'683c4540ab84c220937feb7d1a1450ee'
- 'bae9a078edc6797f9de9ab68e5f4827e'
+ 'cd52a6e3f138fa92267600cc53ff4247'
'e81ad01dbc16ba28bf92ba4b7c309ca7'
'd93fe402b87cd000a869e1fd6badc6c9'
'268e65c8fcae6152e156c09760a18dfd'
diff --git a/libre/icecat/libre.patch b/libre/icecat/libre.patch
index b7bb7cd50..a4c76b6f5 100644
--- a/libre/icecat/libre.patch
+++ b/libre/icecat/libre.patch
@@ -27,16 +27,18 @@ diff -Naur icecat-13.0.1/browser/app/profile/firefox.js icecat-13.0.1-libre/brow
// This url, if changed, MUST continue to point to an https url. Pulling arbitrary content to inject into
// this page over http opens us up to a man-in-the-middle attack that we'd rather not face. If you are a downstream
-diff -Naur icecat-13.0.1/browser/base/content/abouthome/aboutHome.js icecat-13.0.1-libre/browser/base/content/abouthome/aboutHome.js
+diff -Naur icecat-13.0.1/browser/base/content/aboutHome.js icecat-13.0.1-libre/browser/base/content/abouthome/aboutHome.js
--- icecat-13.0.1/browser/base/content/abouthome/aboutHome.js 2012-07-12 14:27:37.000000000 -0300
+++ icecat-13.0.1-libre/browser/base/content/abouthome/aboutHome.js 2012-07-17 23:19:05.593724417 -0300
-@@ -41,99 +41,348 @@
- // If a definition requires additional params, check that the final search url
- // is handled correctly by the engine.
- const SEARCH_ENGINES = {
+@@ -37,104 +37,6 @@
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+-// If a definition requires additional params, check that the final search url
+-// is handled correctly by the engine.
+-const SEARCH_ENGINES = {
- "Google": {
-+ "Duck Duck Go (Lite)": {
- image: "data:image/png;base64," +
+- image: "data:image/png;base64," +
- "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAcCAYAAADcO8kVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ" +
- "bWFnZVJlYWR5ccllPAAADHdJREFUeNrsWQl0VNUZvve9NzNJJpnsIkuEJMoqAVJAodCKoFUsAUFQ" +
- "qhig0npaRUE8Viv1FFtQWxSwLXVhEawbhOWobOICFCGiEIIQRGIgCSFjMslsb9567+1/Z+7gmIYK" +
@@ -96,159 +98,11 @@ diff -Naur icecat-13.0.1/browser/base/content/abouthome/aboutHome.js icecat-13.0
- "7K/7IvC/CRhZ6Ep6evGGyXJS3kAsp3SGcgLKc7uSktBhrW7ZFq32r/HHCVbb0P9fBSYOTpIoJ5SE" +
- "7GUnpHbrbG8EzsfWfwgwAEfC/ToQIhkhAAAAAElFTkSuQmCC"
- , params: "source=hp&channel=np"
-+ "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" +
-+ "RU5ErkJggg%3D%3D"
- }
-
+- }
+-
-, "Яндекс":
- {
-+ "Seeks Search": {
- image: "data:image/png;base64," +
+- image: "data:image/png;base64," +
- "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAcCAYAAADcO8kVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ" +
- "bWFnZVJlYWR5ccllPAAABWFJREFUeNrsWWtsVEUUnltLH7tbaeuDbfCBojUoBTGmooLE+Igx+gON" +
- "RvEJhEQNUdEYA0Ji4xNf2Bg1iBJJrGBC+CEBNYoxxmh94CMKRE2MitBqoZRi6bbdZT3TfhM/TmZ2" +
@@ -275,199 +129,13 @@ diff -Naur icecat-13.0.1/browser/base/content/abouthome/aboutHome.js icecat-13.0
- "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%3D%3D"
- }
-+
-+ "YaCy": {
-+ }
-+
- };
-
+- }
+-};
+-
// The process of adding a new default snippet involves:
-@@ -143,7 +392,7 @@
+ // * add a new entity to aboutHome.dtd
+ // * add a <span/> for it in aboutHome.xhtml
+@@ -142,7 +44,7 @@
// The <a/> part of the snippet will be linked to the corresponding url.
const DEFAULT_SNIPPETS_URLS = [
"http://www.mozilla.com/firefox/features/?WT.mc_ID=default1"
@@ -479,7 +147,7 @@ diff -Naur icecat-13.0.1/browser/base/content/abouthome/aboutHome.js icecat-13.0
diff -Naur icecat-13.0.1/browser/locales/en-US/chrome/browser-region/region.properties icecat-13.0.1-libre/browser/locales/en-US/chrome/browser-region/region.properties
--- icecat-13.0.1/browser/locales/en-US/chrome/browser-region/region.properties 2012-07-12 14:27:37.000000000 -0300
+++ icecat-13.0.1-libre/browser/locales/en-US/chrome/browser-region/region.properties 2012-07-17 22:01:56.786224684 -0300
-@@ -1,28 +1,24 @@
+@@ -1,28 +1,28 @@
# Default search engine
-browser.search.defaultenginename=Google
+browser.search.defaultenginename=Duck Duck Go (Lite)
@@ -500,8 +168,12 @@ diff -Naur icecat-13.0.1/browser/locales/en-US/chrome/browser-region/region.prop
-browser.contentHandlers.types.1.uri=http://add.my.yahoo.com/rss?url=%s
-browser.contentHandlers.types.2.title=Google
-browser.contentHandlers.types.2.uri=http://fusion.google.com/add?feedurl=%s
-+#browser.contentHandlers.types.0.title=
-+#browser.contentHandlers.types.0.uri=about:blank
++browser.contentHandlers.types.0.title=
++browser.contentHandlers.types.0.uri=about:blank
++browser.contentHandlers.types.1.title=
++browser.contentHandlers.types.1.uri=about:blank
++browser.contentHandlers.types.2.title=
++browser.contentHandlers.types.2.uri=about:blank
# Keyword URL (for location bar searches)
-keyword.URL=http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=
@@ -516,18 +188,20 @@ diff -Naur icecat-13.0.1/browser/locales/en-US/chrome/browser-region/region.prop
# increment this number when anything gets changed in the list below. This will
# cause Firefox to re-read these prefs and inject any new handlers into the
-@@ -30,3 +26,19 @@
+@@ -30,3 +30,21 @@
# means that it's not possible to update the name of existing handler, so
# don't make any spelling errors here.
gecko.handlerService.defaultHandlersVersion=3
+
+# The default set of protocol handlers for webcal:
-+#gecko.handlerService.schemes.webcal.0.name=
-+#gecko.handlerService.schemes.webcal.0.uriTemplate=about:blank
++gecko.handlerService.schemes.webcal.0.name=
++gecko.handlerService.schemes.webcal.0.uriTemplate=about:blank
+
+# The default set of protocol handlers for mailto:
-+#gecko.handlerService.schemes.mailto.0.name=
-+#gecko.handlerService.schemes.mailto.0.uriTemplate=about:blank
++gecko.handlerService.schemes.mailto.0.name=
++gecko.handlerService.schemes.mailto.0.uriTemplate=about:blank
++gecko.handlerService.schemes.mailto.1.name=
++gecko.handlerService.schemes.mailto.1.uriTemplate=about:blank
+
+# The default set of protocol handlers for irc:
+gecko.handlerService.schemes.irc.0.name=Freenode
@@ -560,7 +234,7 @@ diff -Naur icecat-13.0.1/browser/locales/generic/profile/bookmarks.html.in iceca
+ </DL><p>
+ <DT><H3 ID="rdf:#$ZvPhC3">Free Software Foundation</H3>
+ <DL><p>
-+ <DT><A HREF="http://www.fsf.org/" ICON="data:text/html;base64,Cgk8IURPQ1RZUEUgaHRtbD4KCgk8aHRtbCBsYW5nPSJlbiI+CgoJICAgIAogICAgCiAgICAKICAgIAogICAgCgoJICA8aGVhZD4KCSAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4KCgkKCgkgICAgCgkgICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1lZGdlIiAvPgoKCSAgICAKCQk8YmFzZSBocmVmPSJodHRwOi8vd3d3LmZzZi5vcmcvZnJlZS1zb2Z0d2FyZS1mb3VuZGF0aW9uIiAvPjwhLS1baWYgbHQgSUUgN10+PC9iYXNlPjwhW2VuZGlmXS0tPgoJICAgIAoKCSAgICAKCQk8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoOyBpbml0aWFsLXNjYWxlPTAuNjY2NjsgbWF4aW11bS1zY2FsZT0xLjA7IG1pbmltdW0tc2NhbGU9MC42NjY2IiAvPgoJCTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iUGxvbmUgLSBodHRwOi8vcGxvbmUub3JnIiAvPgoJICAgIAoKICAgICAgICAKCgkgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCIgLz4KCSAgICA8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IlBsb25lIC0gaHR0cDovL3Bsb25lLm9yZyIgLz4KCgoJICAgPHRpdGxlPkZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiAmbWRhc2g7IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiAmbWRhc2g7IHdvcmtpbmcgdG9nZXRoZXIgZm9yIGZyZWUgc29mdHdhcmU8L3RpdGxlPgoKCgkgICAgCgkgICAgCgoJICAgIAoJICAgIAo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoucG9ydGxldC1zdGF0aWMtc3VwcG9ydGVyLC5wb3J0bGV0LXN0YXRpYy1hcHBlYWwtcG9ydGxldCB7ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O30KI2ZzZi1zaWRlYmFyIHttYXJnaW4tdG9wOiAxMHB4O30KI2JyZWFkY3J1bWJzLXlvdS1hcmUtaGVyZSB7ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O30KdGFibGUsIHRkLCB0ciwgdGJvZHksIHRoZWFke2JvcmRlcjogMCAhaW1wb3J0YW50O30KPC9zdHlsZT4KCgoJICAgIAoJICAgIAoKCSAgICAKCSAgICAKCgkgICAgPGxpbmsgcmVsPSJjb3B5cmlnaHQiIHRpdGxlPSJDb3B5cmlnaHQgaW5mb3JtYXRpb24iIGhyZWY9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LW5kLzMuMC9yZGYiIC8+CgkgICAgPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxlPSJBdXRob3IgaW5mb3JtYXRpb24iIGhyZWY9Imh0dHA6Ly93d3cuZnNmLm9yZy9hYm91dC9zdGFmZi8iIC8+CgoJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0icHJpbnQiIGhyZWY9Ii8vc3RhdGljLmZzZi5vcmcvbm9zdm4vcGxvbmUzL2Nzcy9wcmludC0yMDExLTEwLTEzLmNzcyIgLz4KCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+IEBpbXBvcnQgdXJsKCcvL3N0YXRpYy5mc2Yub3JnL25vc3ZuL3Bsb25lNC9jc3MvZnNmLTIwMTItMDQtMjMuY3NzJyk7PC9zdHlsZT4KCgoJPGxpbmsgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJGU0YgTmV3cyIgaHJlZj0iLy9zdGF0aWMuZnNmLm9yZy9mc2ZvcmcvcnNzL25ld3MueG1sIiB0eXBlPSJhcHBsaWNhdGlvbi9yc3MreG1sIiAvPgoJPGxpbmsgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJGU0YgRXZlbnRzIiBocmVmPSIvL3N0YXRpYy5mc2Yub3JnL2ZzZm9yZy9yc3MvZXZlbnRzLnhtbCIgdHlwZT0iYXBwbGljYXRpb24vcnNzK3htbCIgLz4KCTxsaW5rIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRlNGIEJsb2dzIiBocmVmPSIvL3N0YXRpYy5mc2Yub3JnL2ZzZm9yZy9yc3MvYmxvZ3MueG1sIiB0eXBlPSJhcHBsaWNhdGlvbi9yc3MreG1sIiAvPgoJPGxpbmsgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJGcmVlIFNvZnR3YXJlIEpvYnMiIGhyZWY9Ii8vc3RhdGljLmZzZi5vcmcvZnNmb3JnL3Jzcy9qb2JzLnhtbCIgdHlwZT0iYXBwbGljYXRpb24vcnNzK3htbCIgLz4KCTxsaW5rIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iR05VIFByb2plY3QgTmV3cyIgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL3Jzcy93aGF0c25ldy5yc3MiIHR5cGU9ImFwcGxpY2F0aW9uL3Jzcyt4bWwiIC8+Cgk8bGluayByZWw9ImFsdGVybmF0ZSIgdGl0bGU9Ik5ldyBGcmVlIFNvZnR3YXJlIiBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvcnNzL3F1YWdnYS5yc3MiIHR5cGU9ImFwcGxpY2F0aW9uL3Jzcyt4bWwiIC8+CgoJPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCIgLz4KCgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgojYnJlYWRjcnVtYnMteW91LWFyZS1oZXJlLAojYnJlYWRjcnVtYnMtaG9tZSwKI2JyZWFkY3J1bWJzLWN1cnJlbnQsCiNicmVhZGNydW1icy0xIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5HTlVyZWxlYXNlc3sKCWJhY2tncm91bmQtY29sb3I6ICNmZmZmZTM7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjMDAwMDAwOwogICAgY29sb3I6IEJsYWNrOwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICB3aWR0aDogMjAwcHg7CiAgICBwYWRkaW5nOiAxMHB4Owp9CgojcG9ydGFsLWxhbmd1YWdlc2VsZWN0b3Ige2Rpc3BsYXk6IGJsb2NrOyBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsgYm90dG9tOiAxcHg7IGxlZnQ6IDFweDt9Cgo8L3N0eWxlPgoJICA8L2hlYWQ+CgoKCTxib2R5IGNsYXNzPSJ0ZW1wbGF0ZS1mcm9udHBhZ2VfdmlldyBwb3J0YWx0eXBlLWRvY3VtZW50IHNlY3Rpb24tZnJlZS1zb2Z0d2FyZS1mb3VuZGF0aW9uIGljb25zLW9uIiBkaXI9Imx0ciI+CgoJPGRpdiBpZD0iY29vbGlvIj4gPCEtLSB3cmFwcGVyIGRpdiAtLT4KCgk8cCBjbGFzcz0ib25seU1vYmlsZSI+PGEgdGFiaW5kZXg9IjEiIGhyZWY9IiNjb250ZW50Ij5Ta2lwIHRvIGNvbnRlbnQ8L2E+LCA8YSB0YWJpbmRleD0iMiIgaHJlZj0iL3NpdGVtYXAjY29udGVudCI+c2l0ZW1hcDwvYT4gb3IgPGEgdGFiaW5kZXg9IjMiIGhyZWY9Ii9zZWFyY2hfZm9ybSNjb250ZW50Ij5za2lwIHRvIHNlYXJjaDwvYT4uPC9wPgoKCTxkaXYgaWQ9ImhkIiBjbGFzcz0iY3VzdG9tLWRvYyB2aXN1YWxOb1ByaW50Ij4KCTxoZWFkZXI+CgkgICAgCgoJPGgxPjxhIGhyZWY9Ii8iPkZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjwvYT48L2gxPgoKCTxkaXYgaWQ9InBvcnRhbC1wZXJzb25hbHRvb2xzLXdyYXBwZXIiPgoKPGRpdiBpZD0iZnNmLWN1c3RvbSI+Cgo8aDUgY2xhc3M9ImhpZGRlblN0cnVjdHVyZSI+UGVyc29uYWwgdG9vbHM8L2g1PgoKPHVsIGlkPSJwb3J0YWwtcGVyc29uYWx0b29scyI+CiAgCgogICAgCiAgICA8bGk+CiAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmZzZi5vcmcvY2FzbG9naW4iIGlkPSJwZXJzb25hbHRvb2xzLWxvZ2luIj5Mb2cgaW48L2E+CiAgPC9saT4KICAgIAogICAgCiAgICA8bGk+CiAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmZzZi5vcmcvaGVscC1tZW51IiBpZD0icGVyc29uYWx0b29scy1sb2dpbi1wcm9ibGVtcyI+SGVscCE8L2E+CiAgPC9saT4KICAgIAogICAgCiAgICA8bGk+CiAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmZzZi5vcmcvYXNzb2NpYXRlL2Fib3V0LXRoZS1tZW1iZXJzLWZvcnVtIiBpZD0icGVyc29uYWx0b29scy1mb3J1bS1wcm9tbyI+TWVtYmVycyBmb3J1bTwvYT4KICA8L2xpPgogICAgCgo8L3VsPgo8L2Rpdj4KPC9kaXY+CgogIDxhIGhyZWY9Imh0dHA6Ly9mc2Yub3JnL2pmYiI+PGltZyBzcmM9Ii8vc3RhdGljLmZzZi5vcmcvbm9zdm4vam9pbi5lbi5wbmciIGFsdD0iSm9pbiBub3ciIHN0eWxlPSJmbG9hdDogcmlnaHQ7IiAvPjwvYT4gCgoJPC9oZWFkZXI+Cgk8L2Rpdj4KCgk8ZGl2IGNsYXNzPSJ5dWktZyBmc2YtbmF2LWZvb3RlciIgaWQ9ImZzZi1uYXYiPgoJPGRpdiBjbGFzcz0ibmF2aSI+CjxkaXY+Cgo8ZGl2IGNsYXNzPSJjdXN0b20tZG9jIj4KCjxuYXY+Cjx1bCBjbGFzcz0ibWFpbi1uYXYgbmF2aWdhdGlvbiI+CjxsaT48YSBocmVmPSIvYWJvdXQvIiB0aXRsZT0iIj5BYm91dDwvYT48L2xpPgo8bGk+PGEgaHJlZj0iL2NhbXBhaWducy8iIHRpdGxlPSIiPkNhbXBhaWduczwvYT48L2xpPgo8bGk+PGEgaHJlZj0iL2Fzc29jaWF0ZS8iIHRpdGxlPSIiPk1lbWJlcnNoaXA8L2E+PC9saT4KPGxpPjxhIGhyZWY9Ii9yZXNvdXJjZXMvIiB0aXRsZT0iIj5SZXNvdXJjZXM8L2E+PC9saT4KPGxpPjxhIGhyZWY9Ii9jb21tdW5pdHkvIiB0aXRsZT0iIj5Db21tdW5pdHk8L2E+PC9saT4KPGxpPjxhIGhyZWY9Ii9kb25hdGUvIiB0aXRsZT0iIj5Eb25hdGU8L2E+PC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly9zaG9wLmZzZi5vcmcvIiB0aXRsZT0iIj5TaG9wPC9hPjwvbGk+CjxsaSBjbGFzcz0ib25seU1vYmlsZSI+PGEgaHJlZj0iL25ld3MvIj5MYXRlc3QgbmV3czwvYT48L2xpPgo8bGkgY2xhc3M9Im9ubHlNb2JpbGUiPjxhIGhyZWY9Ii9ldmVudHMvIj5VcGNvbWluZyBldmVudHM8L2E+PC9saT4KPGxpIGNsYXNzPSJvbmx5TW9iaWxlIj48YSBocmVmPSIvYmxvZ3MiPkxhdGVzdCBibG9nIHBvc3RzPC9hPjwvbGk+CjxsaSBjbGFzcz0ib25seU1vYmlsZSI+PGEgaHJlZj0iL2ZyZWUtc29mdHdhcmUtc3VwcG9ydGVyLyI+RnJlZSBTb2Z0d2FyZSBTdXBwb3J0ZXIsIG91ciBtb250aGx5IGVtYWlsIG5ld3NsZXR0ZXI8L2E+PC9saT4KPC91bD4KCgoKPC9uYXY+Cgo8L2Rpdj48L2Rpdj4KCjwvZGl2PgoJPC9kaXY+Cgo8ZGl2IGNsYXNzPSJ5dWktZyIgc3R5bGU9Im1hcmdpbi10b3A6IDBweDsiPgombmJzcDsKPC9kaXY+CgoJPGRpdiBjbGFzcz0iY3VzdG9tLWRvYyB5dWktdDUiPgoKCSAgIDxkaXYgaWQ9ImJkIj48ZGl2IGlkPSJ5dWktbWFpbiI+CgoKPGRpdiBjbGFzcz0ieXVpLWciPjxkaXYgY2xhc3M9Inl1aS1iIj4KCgoKICAgICAgICA8ZGl2IGlkPSJwb3J0YWwtY29sdW1uLWNvbnRlbnQiIGNsYXNzPSJjZWxsIHdpZHRoLTM6NCBwb3NpdGlvbi0wIj4KCiAgICAgICAgICAgIDxkaXYgaWQ9InZpZXdsZXQtYWJvdmUtY29udGVudCI+PGRpdiBpZD0icG9ydGFsLWJyZWFkY3J1bWJzIj4KCiAgICA8c3BhbiBpZD0iYnJlYWRjcnVtYnMteW91LWFyZS1oZXJlIj5Zb3UKYXJlIGhlcmU6PC9zcGFuPgogICAgPHNwYW4gaWQ9ImJyZWFkY3J1bWJzLWhvbWUiPgogICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuZnNmLm9yZyI+SG9tZTwvYT4KICAgICAgICAKICAgIDwvc3Bhbj4KCjwvZGl2PjwvZGl2PgoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSIiPgoKICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgCgogICAgPGRsIGNsYXNzPSJwb3J0YWxNZXNzYWdlIGluZm8iIGlkPSJrc3NQb3J0YWxNZXNzYWdlIiBzdHlsZT0iZGlzcGxheTpub25lIj4KICAgICAgICA8ZHQ+SW5mbzwvZHQ+CiAgICAgICAgPGRkPjwvZGQ+CiAgICA8L2RsPgoKCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGFydGljbGU+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnRlbnQiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgCgogICAgICAgICAgICA8dGFibGUgd2lkdGg9IjY5OSIgY2xhc3M9InBsYWluIj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjIzMyI+CiAgICAgIDxhIGhyZWY9Ii9uZXdzL2ZzZi1hbm5vdW5jZXMtd2lubmVyLW9mLXJlc3RyaWN0ZWQtYm9vdC13ZWJjb21pYy1jb250ZXN0Ij48aW1nIHNyYz0iLy9zdGF0aWMuZnNmLm9yZy9ub3N2bi9yZXN0cmljdGVkLWJvb3RzLmpwZyIgYWx0PSJSZXN0cmljdGVkIEJvb3RzIC0tIGl0J3MgZm9yIHlvdXIgc2FmZXR5IiB3aWR0aD0iMjMwIiAvPjwvYT4KICAgICAgPHAgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyI+CiAgICAgICAgVGhpcyA8c3BhbiB4bWxuczpkY3Q9Imh0dHA6Ly9wdXJsLm9yZy9kYy90ZXJtcy8iIGhyZWY9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiByZWw9ImRjdDp0eXBlIj53b3JrPC9zcGFuPiBieSA8YSB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiBocmVmPSJodHRwOi8vZXJpa3N0ZWlubWFubi5ubC9zZWN1cmVib290X3dlYmNvbWljLmh0bWwiIHByb3BlcnR5PSJjYzphdHRyaWJ1dGlvbk5hbWUiIHJlbD0iY2M6YXR0cmlidXRpb25VUkwiPkVyaWsgU3RlaW5tYW5uPC9hPiBpcyBsaWNlbnNlZCB1bmRlciBhIDxhIHJlbD0ibGljZW5zZSIgaHJlZj0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvMy4wLyI+Q3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbiAzLjAgVW5wb3J0ZWQgTGljZW5zZTwvYT4uCiAgICAgIDwvcD4KICAgIDwvdGQ+CiAgICA8dGQgd2lkdGg9IjQ2NiI+CiAgICAgPHAgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgcGFkZGluZzoxNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmJjOyBoZWlnaHQ6IDIyNXB4OyBmb250LXNpemU6IDExMCU7Ij4gCiAgICAgICA8c3Ryb25nIHN0eWxlPSJmb250LXNpemU6MTc1JTsiPlN0YW5kIHVwIGZvciB5b3VyIGZyZWVkb20gdG8gaW5zdGFsbCBmcmVlIHNvZnR3YXJlPC9zdHJvbmc+PGJyPjxicj4KICAgICAgIDxhIGhyZWY9Ii9jYW1wYWlnbnMvc2VjdXJlLWJvb3QtdnMtcmVzdHJpY3RlZC1ib290L3N0YXRlbWVudCI+PGltZyBzcmM9Ii8vc3RhdGljLmZzZi5vcmcvbm9zdm4vdWVmaV9sb2dvLnBuZyIgYWx0PSIiIC8+PC9hPjxicj48YnI+CiAgICAgICA8YSBocmVmPSIvY2FtcGFpZ25zL3NlY3VyZS1ib290LXZzLXJlc3RyaWN0ZWQtYm9vdC9zdGF0ZW1lbnQiIHN0eWxlPSJmb250LXNpemU6MTEwJSI+Sm9pbiAzMSw4MDAgcGVvcGxlIGluIG9wcG9zaW5nIE1pY3Jvc29mdCdzIFJlc3RyaWN0ZWQgQm9vdCBieSBzaWduaW5nIHRoaXMgc3RhdGVtZW50PC9hPjxicj4KICAgICA8L3A+CiAgICAgPHA+PGEgaHJlZj0iLy93d3cuZnNmLm9yZy93b3JraW5nLXRvZ2V0aGVyL21vdmluZy8iPjxpbWcgc3JjPSIvL3N0YXRpYy5mc2Yub3JnL25vc3ZuL3dvcmtpbmcvdy9nZXRzdGFydC5wbmciIC8+PC9hPgogICAgICAgIDxhIGhyZWY9Ii8vd3d3LmdudS5vcmcvZGlzdHJvcy9mcmVlLWRpc3Ryb3MuaHRtbCI+PGltZyBzcmM9Ii8vc3RhdGljLmZzZi5vcmcvbm9zdm4vZG93bmxvYWQucG5nIiB3aWR0aD0iMTYwIiAvPjwvYT4KICAgICA8L3A+CiAgICA8L3RkPgogIDwvdHI+CjwvdGFibGU+CgoKICAgICAgICA8aDIgaWQ9ImludHJvLXRleHQiPgogICAgICAgICAgICAKICAgICAgICA8c3BhbiBjbGFzcz0iIiBpZD0icGFyZW50LWZpZWxkbmFtZS1kZXNjcmlwdGlvbiI+CiAgICAgICAgICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiDigJQgd2hhdCB3ZSBkbwogICAgICAgIDwvc3Bhbj4KICAgIAogICAgICAgIDwvaDI+CgogICAgICAgIAoKICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSIiIGlkPSJwYXJlbnQtZmllbGRuYW1lLXRleHQiPgogICAgICAgICAgICA8dWw+DQo8bGk+VGhlIEZTRiBhZHZvY2F0ZXMgZm9yIGZyZWUgc29mdHdhcmUgaWRlYWxzIGFzIG91dGxpbmVkIGluIHRoZSA8YSBocmVmPSIvcGhpbG9zb3BoeS9mcmVlLXN3Lmh0bWwiPkZyZWUgU29mdHdhcmUgRGVmaW5pdGlvbjwvYT4sIHdvcmtzIGZvciBhZG9wdGlvbiBvZiBmcmVlIHNvZnR3YXJlIGFuZCBmcmVlIG1lZGlhIGZvcm1hdHMsIGFuZCBvcmdhbml6ZXMgPGEgaHJlZj0iL2NhbXBhaWducy8iPmFjdGl2aXN0IGNhbXBhaWduczwvYT4gYWdhaW5zdCB0aHJlYXRzIHRvIHVzZXIgZnJlZWRvbSBsaWtlIDxhIGhyZWY9Imh0dHA6Ly93aW5kb3dzN3NpbnMub3JnLyI+V2luZG93cyA3PC9hPiwgQXBwbGUncyA8YSBocmVmPSIvaXBob25lIj5pUGhvbmU8L2E+IGFuZCA8YSBocmVmPSJodHRwOi8vd3d3LmZzZi5vcmcvYmxvZ3Mvcm1zL21hYy1vc3gtbWlzdGFrZXMtYW5kLW1hbGZlYXR1cmVzIj5PUyBYPC9hPiwgPGEgaHJlZj0iaHR0cDovL2RlZmVjdGl2ZWJ5ZGVzaWduLm9yZy8iPkRSTSBvbiBtdXNpYywgZWJvb2tzIGFuZCBtb3ZpZXM8L2E+LCBhbmQgPGEgaHJlZj0iaHR0cDovL2VuZHNvZnRwYXRlbnRzLm9yZy8iPnNvZnR3YXJlIHBhdGVudHM8L2E+LjwvbGk+DQoNCjxsaT5XZSBwcm9tb3RlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9kaXN0cm9zLyI+Y29tcGxldGVseSBmcmVlIHNvZnR3YXJlIGRpc3RyaWJ1dGlvbnMgb2YgR05VL0xpbnV4PC9hPiwgYW5kIGFkdm9jYXRlIHRoYXQgdXNlcnMgb2YgdGhlIEdOVS9MaW51eCBvcGVyYXRpbmcgc3lzdGVtIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9kaXN0cm9zL2ZyZWUtc3lzdGVtLWRpc3RyaWJ1dGlvbi1ndWlkZWxpbmVzLmh0bWwiPnN3aXRjaCB0byBhIGRpc3RyaWJ1dGlvbiB3aGljaCByZXNwZWN0cyB0aGVpciBmcmVlZG9tPC9hPi48L2xpPg0KDQo8bGk+V2UgZHJpdmUgZGV2ZWxvcG1lbnQgb2YgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZyI+R05VIG9wZXJhdGluZyBzeXN0ZW08L2E+IGFuZCA8YSBocmVmPSIvY2FtcGFpZ25zL3ByaW9yaXR5Lmh0bWwiPm1haW50YWluIGEgbGlzdCBvZiBoaWdoLXByaW9yaXR5IGZyZWUgc29mdHdhcmUgcHJvamVjdHM8L2E+IHRvIHByb21vdGUgcmVwbGFjZW1lbnRzIGZvciBjb21tb24gcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zLjwvbGk+DQoNCjxsaT5XZSBidWlsZCBhbmQgdXBkYXRlIDxhIGhyZWY9Ii9yZXNvdXJjZXMvIj5yZXNvdXJjZXMgdXNlZnVsIGZvciB0aGUgZnJlZSBzb2Z0d2FyZSBjb21tdW5pdHk8L2E+IGxpa2UgdGhlIDxhIGhyZWY9Imh0dHA6Ly9kaXJlY3RvcnkuZnNmLm9yZy8iPkZyZWUgU29mdHdhcmUgRGlyZWN0b3J5PC9hPiwgYW5kIHRoZSA8YSBocmVmPSIvam9icyI+ZnJlZSBzb2Z0d2FyZSBqb2JzPC9hPiBib2FyZC4gV2UgYWxzbyBwcm92aWRlIDxhIGhyZWY9Ii9saWNlbnNpbmcvbGljZW5zZXMvIj5saWNlbnNlcyBmb3IgZnJlZSBzb2Z0d2FyZSBkZXZlbG9wZXJzPC9hPiB0byBzaGFyZSB0aGVpciBjb2RlLCBpbmNsdWRpbmcgdGhlIDxhIGhyZWY9Ii9saWNlbnNpbmcvbGljZW5zZXMvZ3BsLmh0bWwiPkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlPC9hPi48L2xpPg0KDQo8L3VsPg0KDQo8cCBjbGFzcz0iYyI+PGEgaHJlZj0iL3dvcmtpbmctdG9nZXRoZXIvIj48aW1nIHNyYz0iL3N0YXRpYy9ub3N2bi93b3JraW5nL3cvZGVzZXJ2ZS5wbmciIGFsdD0iIiAvPjwvYT48L3A+IAogICAgICAgICAgICAKICAgICAgICA8L2Rpdj4KICAgIAogICAgCgoKICA8ZGl2IGlkPSJmc3MiPjxmb3JtIGFjdGlvbj0iaHR0cHM6Ly9jcm0uZnNmLm9yZy9jaXZpY3JtL3Byb2ZpbGUvY3JlYXRlJmFtcDtyZXNldD0xJmFtcDtnaWQ9MzEiIG1ldGhvZD0icG9zdCI+CjxoMz5TaWduIHVwIHRvZGF5IHRvIHJlY2VpdmUgdGhlIG1vbnRobHkgbmV3c2xldHRlciwgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZnNmLm9yZy9mcmVlLXNvZnR3YXJlLXN1cHBvcnRlci8iPkZyZWUgU29mdHdhcmUgU3VwcG9ydGVyPC9hPjwvaDM+Cgo8cD48c21hbGw+RW50ZXIgeW91ciBlbWFpbCBhZGRyZXNzIChpZS4gbWF0dEBleGFtcGxlLmNvbSk8L3NtYWxsPjwvcD4KCjxwPjxpbnB1dCBpZD0iZnJtRW1haWwiIHR5cGU9InRleHQiIG5hbWU9ImVtYWlsLVByaW1hcnkiIHNpemU9IjE4IiBtYXhsZW5ndGg9IjgwIiAvPjwvcD4KPHA+PGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iX3FmX0VkaXRfbmV4dCIgdmFsdWU9IlN1YnNjcmliZSBtZSIgLz48L3A+CjxkaXY+PGlucHV0IG5hbWU9InBvc3RVUkwiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiIgLz4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZ3JvdXBbMjVdIiB2YWx1ZT0iMSIgLz4KPGlucHV0IG5hbWU9ImNhbmNlbFVSTCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iaHR0cHM6Ly9jcm0uZnNmLm9yZy9jaXZpY3JtL3Byb2ZpbGU/cmVzZXQ9MSZhbXA7Z2lkPTMxIiAvPgo8aW5wdXQgbmFtZT0iX3FmX2RlZmF1bHQiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IkVkaXQ6Y2FuY2VsIiAvPgo8L2Rpdj4KPC9mb3JtPjwvZGl2PgoKCjxkaXYgaWQ9InF1b3RlLWJveCI+CiA8YmxvY2txdW90ZT48YSBocmVmPSIvYXBwZWFsLzIwMDkvbWFrby8iPkEgc3Ryb25nIGZyZWUgc29mdHdhcmUgbW92ZW1lbnQgZm9jdXNlZCBvbiB0aGUgcHJpbmNpcGxlZCBpc3N1ZXMgb2Ygc29mdHdhcmUgZnJlZWRvbSAmbWRhc2g7IGFuZCBhIHN0cm9uZyBGU0YgaW4gcGFydGljdWxhciAmbWRhc2g7IHdpbGwgZGV0ZXJtaW5lIHdoYXQgZnJlZWRvbXMgdGhlIG5leHQgZ2VuZXJhdGlvbiBvZiBjb21wdXRlciB1c2VycyBlbmpveS4gQXQgc3Rha2UgaXMgbm8gbGVzcyB0aGFuIHRoZSBuZXh0IGdlbmVyYXRpb24ncyBhdXRvbm9teS48L2E+PC9ibG9ja3F1b3RlPgoKICA8cD4mbWRhc2g7IDxhIGhyZWY9Ii9hcHBlYWwvMjAwOS9tYWtvLyI+QmVuamFtaW4gTWFrbyBIaWxsPC9hPiwgd3JpdGVyLCB0ZWNobm9sb2dpc3QgYW5kIEZTRiBib2FyZCBtZW1iZXI8L3A+CjwvZGl2PgoKICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKCiAgICAgICAgICAgIDxkaXYgaWQ9InZpZXdsZXQtYmVsb3ctY29udGVudCI+CgoKCgoKICAgIAoKPC9kaXY+CiAgICAgICAgPC9kaXY+Cgk8L2Rpdj48L2Rpdj48L2Rpdj4KCgoJIDxkaXYgaWQ9ImZzZi1zaWRlYmFyIiBjbGFzcz0ieXVpLWIgdmlzdWFsTm9QcmludCI+CgkgICAgPGFzaWRlPgoJPGRpdiBpZD0ic2VhcmNoIj4KCgkgICAgICA8Zm9ybSBpZD0ic2lkZXNlYXJjaCIgbmFtZT0ic2VhcmNoZm9ybSIgYWN0aW9uPSJodHRwOi8vd3d3LmZzZi5vcmcvc2VhcmNoIj4KCQkgIDxwPjxpbnB1dCBuYW1lPSJTZWFyY2hhYmxlVGV4dCIgdGFiaW5kZXg9IjEiIHR5cGU9InRleHQiIHNpemU9IjMwIiB0aXRsZT0iU2VhcmNoIFNpdGUiIC8+PC9wPgoJCSAgPHA+PGlucHV0IGNsYXNzPSJzZWFyY2hCdXR0b24iIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlNlYXJjaCIgLz48L3A+CgkgICAgICA8L2Zvcm0+CgoJPC9kaXY+CgoKCQkgICAgICA8ZGl2IGNsYXNzPSJ2aXN1YWxQYWRkaW5nIj4KCQkgICAgICAgIAoJCSAgICAgICAgICAKPGRpdiBpZD0icG9ydGxldHdyYXBwZXItNzA2YzZmNmU2NTJlNzI2OTY3Njg3NDYzNmY2Yzc1NmQ2ZTBhNjM2ZjZlNzQ2NTc4NzQwYTJmNjY3MzY2MGE3Mzc1NzA3MDZmNzI3NDY1NzIiIGNsYXNzPSJwb3J0bGV0V3JhcHBlciBrc3NhdHRyLXBvcnRsZXRoYXNoLTcwNmM2ZjZlNjUyZTcyNjk2NzY4NzQ2MzZmNmM3NTZkNmUwYTYzNmY2ZTc0NjU3ODc0MGEyZjY2NzM2NjBhNzM3NTcwNzA2ZjcyNzQ2NTcyIj48ZGl2IGNsYXNzPSJwb3J0bGV0U3RhdGljVGV4dCBwb3J0bGV0LXN0YXRpYy1zdXBwb3J0ZXIiPjxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPg0KPGg1PlNpZ24gdXA8L2g1Pg0KPGZvcm0gYWN0aW9uPSJodHRwczovL2NybS5mc2Yub3JnL2Npdmljcm0vcHJvZmlsZS9jcmVhdGUmYW1wO3Jlc2V0PTEmYW1wO2dpZD0zMSIgbWV0aG9kPSJwb3N0Ij4NCjxwPlNpZ24gdXAgdG9kYXkgdG8gcmVjZWl2ZSB0aGUgbW9udGhseSBuZXdzbGV0dGVyLCB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5mc2Yub3JnL2ZyZWUtc29mdHdhcmUtc3VwcG9ydGVyLyI+RnJlZSBTb2Z0d2FyZSBTdXBwb3J0ZXI8L2E+PC9wPg0KDQo8cD48c21hbGw+RW50ZXIgeW91ciBlbWFpbCBhZGRyZXNzIChpZS4gbWF0dEBleGFtcGxlLmNvbSk8L3NtYWxsPjwvcD4NCg0KPHA+PGlucHV0IGlkPSJmcm1FbWFpbCIgdHlwZT0idGV4dCIgbmFtZT0iZW1haWwtUHJpbWFyeSIgc2l6ZT0iMTgiIG1heGxlbmd0aD0iODAiIC8+PC9wPg0KPHA+PGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iX3FmX0VkaXRfbmV4dCIgdmFsdWU9IlN1YnNjcmliZSBtZSIgLz48L3A+DQo8ZGl2PjxpbnB1dCBuYW1lPSJwb3N0VVJMIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSIiIC8+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJncm91cFsyNV0iIHZhbHVlPSIxIiAvPg0KPGlucHV0IG5hbWU9ImNhbmNlbFVSTCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iaHR0cHM6Ly9jcm0uZnNmLm9yZy9jaXZpY3JtL3Byb2ZpbGU/cmVzZXQ9MSZhbXA7Z2lkPTMxIiAvPg0KPGlucHV0IG5hbWU9Il9xZl9kZWZhdWx0IiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJFZGl0OmNhbmNlbCIgLz4NCjwvZGl2Pg0KPC9mb3JtPjwvZGl2PjwvZGl2PgoKPC9kaXY+Cgo8ZGl2IGlkPSJwb3J0bGV0d3JhcHBlci03MDZjNmY2ZTY1MmU3MjY5Njc2ODc0NjM2ZjZjNzU2ZDZlMGE2MzZmNmU3NDY1Nzg3NDBhMmY2NjczNjYwYTY2NzM2NjJkNmU2NTc3NzMyZDcyNzM3MyIgY2xhc3M9InBvcnRsZXRXcmFwcGVyIGtzc2F0dHItcG9ydGxldGhhc2gtNzA2YzZmNmU2NTJlNzI2OTY3Njg3NDYzNmY2Yzc1NmQ2ZTBhNjM2ZjZlNzQ2NTc4NzQwYTJmNjY3MzY2MGE2NjczNjYyZDZlNjU3NzczMmQ3MjczNzMiPjxkaXYgY2xhc3M9InBvcnRsZXRTdGF0aWNUZXh0IHBvcnRsZXQtc3RhdGljLWZzZi1uZXdzLXJzcyI+PHAgc3R5bGU9ImZsb2F0OiByaWdodDsiPjxhIGhyZWY9Ii9zdGF0aWMvZnNmb3JnL3Jzcy9uZXdzLnhtbCIgdGl0bGU9IlN1YnNjcmliZSB0byBhbiBSU1MgZmVlZCBvZiBGU0YgbmV3cyI+PGltZyBzcmM9Ii9zdGF0aWMvZnNmb3JnL2Nzcy9pbWcvcnNzLmdpZiIgYWx0PSJSU1MgZmVlZCIgLz48L2E+PC9wPjwvZGl2PgoKPC9kaXY+Cgo8ZGl2IGlkPSJwb3J0bGV0d3JhcHBlci03MDZjNmY2ZTY1MmU3MjY5Njc2ODc0NjM2ZjZjNzU2ZDZlMGE2MzZmNmU3NDY1Nzg3NDBhMmY2NjczNjYwYTZlNjU3NzczIiBjbGFzcz0icG9ydGxldFdyYXBwZXIga3NzYXR0ci1wb3J0bGV0aGFzaC03MDZjNmY2ZTY1MmU3MjY5Njc2ODc0NjM2ZjZjNzU2ZDZlMGE2MzZmNmU3NDY1Nzg3NDBhMmY2NjczNjYwYTZlNjU3NzczIj48ZGwgY2xhc3M9InBvcnRsZXQgcG9ydGxldE5ld3MiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KCiAgICA8ZHQgY2xhc3M9InBvcnRsZXRIZWFkZXIiPgogICAgICAgIDxzcGFuIGNsYXNzPSJwb3J0bGV0VG9wTGVmdCI+PC9zcGFuPgogICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuZnNmLm9yZy9uZXdzIiBjbGFzcz0idGlsZSI+TmV3czwvYT4KICAgICAgICA8c3BhbiBjbGFzcz0icG9ydGxldFRvcFJpZ2h0Ij48L3NwYW4+CiAgICA8L2R0PgoKICAgIAogICAgPGRkIGNsYXNzPSJwb3J0bGV0SXRlbSBvZGQiPgoKICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmZzZi5vcmcvbmV3cy9mc2YtYW5ub3VuY2VzLXdpbm5lci1vZi1yZXN0cmljdGVkLWJvb3Qtd2ViY29taWMtY29udGVzdCIgY2xhc3M9InRpbGUiIHRpdGxlPSJXaXRoIG92ZXIgMzAsMDAwIHNpZ25hdHVyZXMgdG8gb3VyIHN0YXRlbWVudCBhbmQgb3ZlciBhIGRvemVuIGhpZ2gtcXVhbGl0eSBzdWJtaXNzaW9ucyB0byBvdXIgY29udGVzdCwgSSdtIGNvbmZpZGVudCBvdXIgbWVzc2FnZSB0aGF0IFJlc3RyaWN0ZWQgQm9vdCBpcyBhIG1pc3Rha2UgaGFzIHRoZSBhdHRlbnRpb24gb2YgTWljcm9zb2Z0IGFuZCBjb21wdXRlci1tYWtlcnMgYWxpa2UuIE5vdyB3ZSBuZWVkIHRha2UgdGhlIG5leHQgc3RlcCBvZiB0dXJuaW5nIHRoaXMgc3VwcG9ydCBpbnRvIHRhbmdpYmxlIHJlc3VsdHMuIj4KICAgICAgICAgICAgPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iaHR0cDovL3d3dy5mc2Yub3JnL3N0YXRpYy9mc2ZvcmcvY3NzL2ltZy9uZXdzaXRlbV9pY29uLmdpZiIgYWx0PSJOZXdzIEl0ZW0iIC8+CiAgICAgICAgICAgIEZTRiBhbm5vdW5jZXMgd2lubmVyIG9mIFJlc3RyaWN0ZWQgQm9vdCB3ZWJjb21pYyBjb250ZXN0CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwb3J0bGV0SXRlbURldGFpbHMiPkp1bCAwNSwgMjAxMjwvc3Bhbj4KICAgICAgICA8L2E+CiAgICA8L2RkPgogICAgCiAgICAKICAgIDxkZCBjbGFzcz0icG9ydGxldEl0ZW0gZXZlbiI+CgogICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuZnNmLm9yZy9uZXdzL2ZzZi1wdWJsaXNoZXMtd2hpdGVwYXBlci13aXRoLXJlY29tbWVuZGF0aW9ucy1mb3ItZnJlZS1vcGVyYXRpbmctc3lzdGVtLWRpc3RyaWJ1dGlvbnMtY29uc2lkZXJpbmctc2VjdXJlLWJvb3QiIGNsYXNzPSJ0aWxlIiB0aXRsZT0iSW4gdGhlIHBhcGVyLCB0aGUgRlNGIG91dGxpbmVzIHRoZSBkaWZmaWN1bHRpZXMgU2VjdXJlIEJvb3QgcG9zZXMgZm9yIHRoZSBmcmVlIHNvZnR3YXJlIG1vdmVtZW50IGFuZCBmcmVlIHNvZnR3YXJlIGFkb3B0aW9uLCB3YXJucyBhZ2FpbnN0IHRoZSB0aHJlYXQgb2YgUmVzdHJpY3RlZCBCb290LCBhbmQgZ2l2ZXMgcmVjb21tZW5kYXRpb25zIGZvciBob3cgZnJlZSBzb2Z0d2FyZSBkZXZlbG9wZXJzIGFuZCB1c2VycyBjYW4gYmVzdCBhZGRyZXNzIHRoZSBpc3N1ZXMuIj4KICAgICAgICAgICAgPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iaHR0cDovL3d3dy5mc2Yub3JnL3N0YXRpYy9mc2ZvcmcvY3NzL2ltZy9uZXdzaXRlbV9pY29uLmdpZiIgYWx0PSJOZXdzIEl0ZW0iIC8+CiAgICAgICAgICAgIEZTRiBwdWJsaXNoZXMgd2hpdGVwYXBlciB3aXRoIHJlY29tbWVuZGF0aW9ucyBmb3IgZnJlZSBvcGVyYXRpbmcgc3lzdGVtIGRpc3RyaWJ1dGlvbnMgY29uc2lkZXJpbmcgU2VjdXJlIEJvb3QKICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBvcnRsZXRJdGVtRGV0YWlscyI+SnVuIDMwLCAyMDEyPC9zcGFuPgogICAgICAgIDwvYT4KICAgIDwvZGQ+CiAgICAKCiAgICA8ZGQgY2xhc3M9InBvcnRsZXRGb290ZXIiPgogICAgICAgIDxzcGFuIGNsYXNzPSJwb3J0bGV0Qm90dG9tTGVmdCI+PC9zcGFuPgogICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuZnNmLm9yZy9uZXdzIj4KICAgICAgICAgIE1vcmUgbmV3cyZoZWxsaXA7CiAgICAgICAgPC9hPgogICAgICAgIDxzcGFuIGNsYXNzPSJwb3J0bGV0Qm90dG9tUmlnaHQiPjwvc3Bhbj4KICAgIDwvZGQ+CiAgICAKPC9kbD48L2Rpdj4KCjxkaXYgaWQ9InBvcnRsZXR3cmFwcGVyLTcwNmM2ZjZlNjUyZTcyNjk2NzY4NzQ2MzZmNmM3NTZkNmUwYTYzNmY2ZTc0NjU3ODc0MGEyZjY2NzM2NjBhNjY3MzY2MmQ2MjZjNmY2NzczMmQ3MjczNzMiIGNsYXNzPSJwb3J0bGV0V3JhcHBlciBrc3NhdHRyLXBvcnRsZXRoYXNoLTcwNmM2ZjZlNjUyZTcyNjk2NzY4NzQ2MzZmNmM3NTZkNmUwYTYzNmY2ZTc0NjU3ODc0MGEyZjY2NzM2NjBhNjY3MzY2MmQ2MjZjNmY2NzczMmQ3MjczNzMiPjxkaXYgY2xhc3M9InBvcnRsZXRTdGF0aWNUZXh0IHBvcnRsZXQtc3RhdGljLWZzZi1ibG9ncy1yc3MiPjxwIHN0eWxlPSJmbG9hdDogcmlnaHQ7Ij48YSBocmVmPSIvc3RhdGljL2ZzZm9yZy9yc3MvYmxvZ3MueG1sIiB0aXRsZT0iU3Vic2NyaWJlIHRvIGFuIFJTUyBmZWVkIG9mIEZTRiBibG9ncyI+PGltZyBzcmM9Ii9zdGF0aWMvZnNmb3JnL2Nzcy9pbWcvcnNzLmdpZiIgYWx0PSJSU1MgZmVlZCIgLz48L2E+PC9wPjwvZGl2PgoKPC9kaXY+Cgo8ZGl2IGlkPSJwb3J0bGV0d3JhcHBlci03MDZjNmY2ZTY1MmU3MjY5Njc2ODc0NjM2ZjZjNzU2ZDZlMGE2MzZmNmU3NDY1Nzg3NDBhMmY2NjczNjYwYTcyNjU2MzY1NmU3NDJkNjI2YzZmNjc3MyIgY2xhc3M9InBvcnRsZXRXcmFwcGVyIGtzc2F0dHItcG9ydGxldGhhc2gtNzA2YzZmNmU2NTJlNzI2OTY3Njg3NDYzNmY2Yzc1NmQ2ZTBhNjM2ZjZlNzQ2NTc4NzQwYTJmNjY3MzY2MGE3MjY1NjM2NTZlNzQyZDYyNmM2ZjY3NzMiPjxkbCBjbGFzcz0icG9ydGxldCBwb3J0bGV0Q29sbGVjdGlvbiBwb3J0bGV0LWNvbGxlY3Rpb24tcmVjZW50LWJsb2dzIj4KCiAgICA8ZHQgY2xhc3M9InBvcnRsZXRIZWFkZXIiPgogICAgICAgIDxzcGFuIGNsYXNzPSJwb3J0bGV0VG9wTGVmdCI+PC9zcGFuPgogICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuZnNmLm9yZy9ibG9ncy9yZWNlbnQtYmxvZy1wb3N0cyI+CiAgICAgICAgICAgIDxzcGFuPlJlY2VudCBibG9nczwvc3Bhbj4KICAgICAgICA8L2E+CiAgICAgICAgPHNwYW4gY2xhc3M9InBvcnRsZXRUb3BSaWdodCI+PC9zcGFuPgogICAgPC9kdD4KCiAgICAKICAgIDxkZCBjbGFzcz0icG9ydGxldEl0ZW0gb2RkIj4KICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmZzZi5vcmcvYmxvZ3MvY29tbXVuaXR5L2dudS1zcG90bGlnaHQtd2l0aC1rYXJsLWJlcnJ5LWp1bmUtMjAxMiIgY2xhc3M9InRpbGUiIHRpdGxlPSJOZXcgR05VIHJlbGVhc2VzIGFzIG9mIEp1bmUgMjYsIDIwMTIiPgogICAgICAgICAgICA8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSJodHRwOi8vd3d3LmZzZi5vcmcvc3RhdGljL2ZzZm9yZy9jc3MvaW1nL25ld3NpdGVtX2ljb24uZ2lmIiBhbHQ9IkJsb2cgRW50cnkiIC8+CiAgICAgICAgICAgIEdOVSBTcG90bGlnaHQgd2l0aCBLYXJsIEJlcnJ5IChKdW5lIDIwMTIpCiAgICAgICAgICAgIAogICAgICAgIDwvYT4KICAgIDwvZGQ+CiAgICAKICAgIAogICAgPGRkIGNsYXNzPSJwb3J0bGV0SXRlbSBldmVuIj4KICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmZzZi5vcmcvYmxvZ3MvZ251LXByZXNzL2ZzZnMtbmV3LW9wZXJhdGlvbnMtYXNzaXN0YW50IiBjbGFzcz0idGlsZSIgdGl0bGU9IkhlbGxvLCBJJ20gQ2hyaXNzaWUgSGltZXMsIHRoZSBuZXcgb3BlcmF0aW9ucyBhc3Npc3RhbnQsIGFuZCBJJ20gZXhjaXRlZCB0byBvZmZpY2lhbGx5IGJlIHdpdGggdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4gSSBoYW5kbGUgc2FsZXMsIGRvbmF0aW9ucywgYW5kIGdlbmVyYWwgb2ZmaWNlIG9wZXJhdGlvbnMuIj4KICAgICAgICAgICAgPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iaHR0cDovL3d3dy5mc2Yub3JnL3N0YXRpYy9mc2ZvcmcvY3NzL2ltZy9uZXdzaXRlbV9pY29uLmdpZiIgYWx0PSJCbG9nIEVudHJ5IiAvPgogICAgICAgICAgICBGU0YncyBuZXcgb3BlcmF0aW9ucyBhc3Npc3RhbnQKICAgICAgICAgICAgCiAgICAgICAgPC9hPgogICAgPC9kZD4KICAgIAogICAgCiAgICA8ZGQgY2xhc3M9InBvcnRsZXRJdGVtIG9kZCI+CiAgICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5mc2Yub3JnL2Jsb2dzL2NvbW11bml0eS9raWxsLWFjdGEiIGNsYXNzPSJ0aWxlIiB0aXRsZT0iS2lsbCBBQ1RBIG9uY2UgKGFuZCBob3BlZnVsbHkpIGZvciBhbGwhIj4KICAgICAgICAgICAgPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iaHR0cDovL3d3dy5mc2Yub3JnL3N0YXRpYy9mc2ZvcmcvY3NzL2ltZy9uZXdzaXRlbV9pY29uLmdpZiIgYWx0PSJCbG9nIEVudHJ5IiAvPgogICAgICAgICAgICBLaWxsIEFDVEEKICAgICAgICAgICAgCiAgICAgICAgPC9hPgogICAgPC9kZD4KICAgIAogICAgCiAgICA8ZGQgY2xhc3M9InBvcnRsZXRJdGVtIGV2ZW4iPgogICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuZnNmLm9yZy9ibG9ncy9saWNlbnNpbmcvZ251LWdwbHYzLXR1cm5zLTUiIGNsYXNzPSJ0aWxlIiB0aXRsZT0iVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyB0dXJucyBmaXZlOyBFYmVuIE1vZ2xlbiBzdGF0ZXMsICZxdW90O0dQTHYzIGFudGljaXBhdGVkIHRoZSBpc3N1ZXMgb2YgdG9kYXkgYW5kIHdpbGwgaGVscCB1cyBkZWFsIHdpdGggdGhlIGNoYWxsZW5nZXMgb2YgdG9tb3Jyb3cuJnF1b3Q7Ij4KICAgICAgICAgICAgPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iaHR0cDovL3d3dy5mc2Yub3JnL3N0YXRpYy9mc2ZvcmcvY3NzL2ltZy9uZXdzaXRlbV9pY29uLmdpZiIgYWx0PSJCbG9nIEVudHJ5IiAvPgogICAgICAgICAgICBHTlUgR1BMdjMgdHVybnMgNQogICAgICAgICAgICAKICAgICAgICA8L2E+CiAgICA8L2RkPgogICAgCgogICAgPGRkIGNsYXNzPSJwb3J0bGV0Rm9vdGVyIj4KICAgICAgICA8c3BhbiBjbGFzcz0icG9ydGxldEJvdHRvbUxlZnQiPjwvc3Bhbj4KICAgICAgICA8c3Bhbj4KICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmZzZi5vcmcvYmxvZ3MvcmVjZW50LWJsb2ctcG9zdHMiPgogICAgICAgICAgICBNb3JlJmhlbGxpcDsKICAgICAgICA8L2E+CiAgICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJwb3J0bGV0Qm90dG9tUmlnaHQiPjwvc3Bhbj4KICAgIDwvZGQ+Cgo8L2RsPgo8L2Rpdj4KCjxkaXYgaWQ9InBvcnRsZXR3cmFwcGVyLTcwNmM2ZjZlNjUyZTcyNjk2NzY4NzQ2MzZmNmM3NTZkNmUwYTYzNmY2ZTc0NjU3ODc0MGEyZjY2NzM2NjBhNjY3MzY2MmQ2NTc2NjU2ZTc0NzMyZDcyNzM3MyIgY2xhc3M9InBvcnRsZXRXcmFwcGVyIGtzc2F0dHItcG9ydGxldGhhc2gtNzA2YzZmNmU2NTJlNzI2OTY3Njg3NDYzNmY2Yzc1NmQ2ZTBhNjM2ZjZlNzQ2NTc4NzQwYTJmNjY3MzY2MGE2NjczNjYyZDY1NzY2NTZlNzQ3MzJkNzI3MzczIj48ZGl2IGNsYXNzPSJwb3J0bGV0U3RhdGljVGV4dCBwb3J0bGV0LXN0YXRpYy1mc2YtZXZlbnRzLXJzcyI+PHAgc3R5bGU9ImZsb2F0OiByaWdodDsiPjxhIGhyZWY9Ii9zdGF0aWMvZnNmb3JnL3Jzcy9ldmVudHMueG1sIiB0aXRsZT0iU3Vic2NyaWJlIHRvIGFuIFJTUyBmZWVkIG9mIEZTRiBldmVudHMiPjxpbWcgc3JjPSIvc3RhdGljL2ZzZm9yZy9jc3MvaW1nL3Jzcy5naWYiIGFsdD0iUlNTIGZlZWQiIC8+PC9hPjwvcD48L2Rpdj4KCjwvZGl2PgoKPGRpdiBpZD0icG9ydGxldHdyYXBwZXItNzA2YzZmNmU2NTJlNzI2OTY3Njg3NDYzNmY2Yzc1NmQ2ZTBhNjM2ZjZlNzQ2NTc4NzQwYTJmNjY3MzY2MGE2NTc2NjU2ZTc0NzMiIGNsYXNzPSJwb3J0bGV0V3JhcHBlciBrc3NhdHRyLXBvcnRsZXRoYXNoLTcwNmM2ZjZlNjUyZTcyNjk2NzY4NzQ2MzZmNmM3NTZkNmUwYTYzNmY2ZTc0NjU3ODc0MGEyZjY2NzM2NjBhNjU3NjY1NmU3NDczIj4KPGRsIGNsYXNzPSJwb3J0bGV0IHBvcnRsZXRFdmVudHMiPgoKICAgIDxkdCBjbGFzcz0icG9ydGxldEhlYWRlciI+CiAgICAgICAgPHNwYW4gY2xhc3M9InBvcnRsZXRUb3BMZWZ0Ij48L3NwYW4+CiAgICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5mc2Yub3JnL2V2ZW50cyIgY2xhc3M9InRpbGUiPgogICAgICAgICAgICBVcGNvbWluZyBFdmVudHMKICAgICAgICA8L2E+CiAgICAgICAgPHNwYW4gY2xhc3M9InBvcnRsZXRUb3BSaWdodCI+PC9zcGFuPgogICAgPC9kdD4KCiAgICAKICAgIDxkZCBjbGFzcz0icG9ydGxldEl0ZW0gb2RkIj4KICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmZzZi5vcmcvZXZlbnRzLzIwMTIwNzI3LWNhcmFjYXMiIGNsYXNzPSJ0aWxlIiB0aXRsZT0iQ2FyYWNhcywgVmVuZXp1ZWxhIC0gU2FsYSBQbGVuYXJpYSBkZWwgQ2VudHJvIFNpbcOzbiBCb2zDrXZhci4gRWRpZi4gQW5hdWNvIFBhcnF1ZSBDZW50cmFsDQoiPgogICAgICAgICAgICA8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSJodHRwOi8vd3d3LmZzZi5vcmcvc3RhdGljL2ZzZm9yZy9jc3MvaW1nL25ld3NpdGVtX2ljb24uZ2lmIiBhbHQ9IkV2ZW50IiAvPgogICAgICAgICAgICAiRWwgc29mdHdhcmUgbGlicmUgZW4gbGEgw6l0aWNhIHkgZW4gbGEgcHLDoWN0aWNhIgogICAgICAgIDwvYT4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBvcnRsZXRJdGVtRGV0YWlscyI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxzcGFuPkp1bCAyNywgMjAxMiAxMDowMCBBTSAtIDEyOjAwIFBNPC9zcGFuPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8c3Bhbj4gJm1kYXNoOwogICAgICAgICAgICAgICAgICAgIENhcmFjYXMsIFZlbmV6dWVsYQogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L3NwYW4+CiAgICA8L2RkPgogICAgCgogICAgPGRkIGNsYXNzPSJwb3J0bGV0Rm9vdGVyIj4KICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmZzZi5vcmcvZXZlbnRzL2FnZ3JlZ2F0b3IvcHJldmlvdXMiIGNsYXNzPSJ0aWxlIj4KICAgICAgICAgICAgPHNwYW4+CiAgICAgICAgICAgICAgICBQcmV2aW91cyBldmVudHMmaGVsbGlwOwogICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgPC9hPgogICAgPC9kZD4KCiAgICA8ZGQgY2xhc3M9InBvcnRsZXRGb290ZXIiPgogICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuZnNmLm9yZy9ldmVudHMiIGNsYXNzPSJ0aWxlIj4KICAgICAgICAgICAgICAgIFVwY29taW5nIGV2ZW50cyZoZWxsaXA7CiAgICAgICAgPC9hPgogICAgICAgIDxzcGFuIGNsYXNzPSJwb3J0bGV0Qm90dG9tTGVmdCI+PC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJwb3J0bGV0Qm90dG9tUmlnaHQiPjwvc3Bhbj4KICAgIDwvZGQ+CjwvZGw+Cgo8L2Rpdj4KCgoKCgkJICAgICAgICAKCQkgICAgICAgICZuYnNwOwoJCSAgICAgIDwvZGl2PgoJICAgICAgCgoJPC9hc2lkZT4KCTwvZGl2PgoKCgoJPC9kaXY+PC9kaXY+CgoJPGRpdiBjbGFzcz0idmlzdWFsTm9QcmludCIgaWQ9Im1pc3Npb24tc3RhdGVtZW50Ij4KCgkgIDxwIGNsYXNzPSJjIj5UaGUgRlNGIGlzIGEgY2hhcml0eSB3aXRoIGEgd29ybGR3aWRlIG1pc3Npb24gdG8gYWR2YW5jZSBzb2Z0d2FyZSBmcmVlZG9tICZtZGFzaDsgPGEgaHJlZj0iL2Fib3V0Ij5sZWFybiBhYm91dCBvdXIgaGlzdG9yeSBhbmQgd29yay48L2E+PC9wPgoKCTwvZGl2PgoKCTxkaXYgaWQ9ImZ0IiBjbGFzcz0idmlzdWFsTm9QcmludCI+Cgk8Zm9vdGVyPgoJPGRpdiBpZD0iZnQtaW5uZXIiIGNsYXNzPSJjdXN0b20tZG9jIj4KCgk8ZGl2IGlkPSJjb3B5cmlnaHQiPgoJIAoKCSAgPHAgY2xhc3M9ImMiPkNvcHlyaWdodCAmY29weTsgMjAwNC0yMDEyIDxhIGhyZWY9Ii9hYm91dC9jb250YWN0Lmh0bWwiIHRpdGxlPSJGaW5kIG91dCBob3cgdG8gY29udGFjdCB1cyI+RnJlZQoJU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jPC9hPi48L3A+CgoJICA8cD5UaGlzIHdvcmsgaXMgbGljZW5zZWQgdW5kZXIgYSA8YSBocmVmPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1uZC8zLjAvIj5DcmVhdGl2ZQoJICBDb21tb25zIEF0dHJpYnV0aW9uLU5vIERlcml2YXRpdmUgV29ya3MgMy4wIGxpY2Vuc2UgKG9yIGxhdGVyCgkgIHZlcnNpb24pPC9hPiAmbWRhc2g7IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlLWxpc3QuaHRtbCNPcGluaW9uTGljZW5zZXMiPldoeSB0aGlzIGxpY2Vuc2U/PC9hPi48L3A+IAoKCTwvZGl2PgoJPGRpdiBpZD0iZnNmLWxpbmtzLW91dGVyIj4KCTxkaXYgY2xhc3M9Inl1aS1nIHZpc3VhbE5vUHJpbnQgbm9Nb2JpbGUiIGlkPSJmc2YtbGlua3MiPgoJPGRpdj4KICAgIDxuYXY+CiAgICA8ZGl2IGNsYXNzPSJ5dWktZyBmaXJzdCI+CiAgICAgICAgPGRpdiBjbGFzcz0ieXVpLXUgZmlyc3QiIGlkPSJzaXRlbWFwLTEiPgoKICAgICAgICAgIDxwIGNsYXNzPSJuZXRzY2FwZTQiPjxhIGhyZWY9IiNmdCI+U2tpcCBzaXRlbWFwPC9hPiBvciA8YSBocmVmPSIjc2l0ZW1hcC0yIj5za2lwIHRvIGxpY2Vuc2luZyBpdGVtczwvYT48L3A+CgogICAgICA8dWw+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii9hYm91dC8iPkFib3V0PC9hPgoKICAgICAgICA8dWw+CiAgICAgICAgICA8bGk+PGEgaHJlZj0iL2Fib3V0L2xlYWRlcnNoaXAuaHRtbCI+TGVhZGVyc2hpcDwvYT48L2xpPgogICAgICAgICAgPGxpPjxhIGhyZWY9Ii9hYm91dC9zdGFmZiI+U3RhZmY8L2E+PC9saT4KICAgICAgICAgIDxsaT48YSBocmVmPSIvYWJvdXQvY29udGFjdC5odG1sIj5Db250YWN0IFVzPC9hPjwvbGk+CiAgICAgICAgPC91bD48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vbXkuZnNmLm9yZy9kb25hdGUvcHJpdmFjeXBvbGljeS5odG1sIj5Qcml2YWN5IFBvbGljeTwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSIvY2FtcGFpZ25zIj5DYW1wYWlnbnM8L2E+CiAgICAgICAgPHVsPgoKICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3dpbmRvd3M3c2lucy5vcmcvIj5XaW5kb3dzIDcgU2luczwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvIj5HTlUgT3BlcmF0aW5nIFN5c3RlbTwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vZGVmZWN0aXZlYnlkZXNpZ24ub3JnLyI+RGVmZWN0aXZlIGJ5IERlc2lnbjwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vZW5kc29mdHBhdGVudHMub3JnLyI+RW5kIFNvZnR3YXJlIFBhdGVudHM8L2E+PC9saT4KICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3BsYXlvZ2cub3JnLyI+UGxheU9nZyAmbWRhc2g7IGZyZWUgbWVkaWEgZm9ybWF0czwvYT48L2xpPgoKICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2xpYnJlcGxhbmV0Lm9yZy8iPkNvbm5lY3Qgd2l0aCBmcmVlIHNvZnR3YXJlIHVzZXJzPC9hPjwvbGk+CiAgICAgIDwvdWw+PC9saT4KICAgICAgPC91bD4KCiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJ5dWktdSIgaWQ9InNpdGVtYXAtMiI+CgogICAgICAgICAgPHAgY2xhc3M9Im5ldHNjYXBlNCI+PGEgaHJlZj0iI3NpdGVtYXAtMyI+U2tpcCB0byBnZW5lcmFsIGl0ZW1zPC9hPjwvcD4KCiAgICAgICA8dWw+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii9saWNlbnNpbmciPkxpY2Vuc2luZzwvYT4KICAgICAgICA8dWw+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii9saWNlbnNpbmcvZWR1Y2F0aW9uIj5FZHVjYXRpb248L2E+PC9saT4KICAgICAgICA8bGk+PGEgaHJlZj0iL2xpY2Vuc2luZy9saWNlbnNlcyI+TGljZW5zZXM8L2E+CiAgICAgICAgPHVsPgogICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLmh0bWwiPkdOVSBHUEw8L2E+PC9saT4KCiAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLmh0bWwiPkdOVSBBR1BMPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLmh0bWwiPkdOVSBMR1BMPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9mZGwuaHRtbCI+R05VIEZETDwvYT48L2xpPjwvdWw+PC9saT4KICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC1mYXEuaHRtbCI+TGljZW5zaW5nIEZBUTwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSIvbGljZW5zaW5nL2NvbXBsaWFuY2UiPkNvbXBsaWFuY2U8L2E+PC9saT4KICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC1ob3d0by5odG1sIj5Ib3cgdG8gdXNlIEdOVSBsaWNlbnNlcyBmb3IgeW91ciBvd24gc29mdHdhcmU8L2E+PC9saT48L3VsPjwvbGk+CgogICAgICA8L3VsPgoKICAgIAogICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Inl1aS1nIGZpcnN0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJ5dWktdSBmaXJzdCIgaWQ9InNpdGVtYXAtMyI+CgogICAgICAgICAgPHAgY2xhc3M9Im5ldHNjYXBlNCI+PGEgaHJlZj0iI3NpdGVtYXAtNCI+U2tpcCB0byBwaGlsb3NvcGhpY2FsIGl0ZW1zPC9hPjwvcD4KICAgIAogICAgICA8dWw+CgogICAgICA8bGk+PGEgaHJlZj0iL25ld3MvIj5MYXRlc3QgTmV3czwvYT48dWw+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii9ldmVudHMvIj5VcGNvbWluZyBFdmVudHM8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9Ii9ibG9ncy8iPkZTRiBCbG9nczwvYT48L2xpPjwvdWw+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9Ii92b2x1bnRlZXIiPlZvbHVudGVlcmluZyBhbmQgaW50ZXJuc2hpcHM8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9Ii9yZXNvdXJjZXMvaHciPkhhcmR3YXJlIERhdGFiYXNlPC9hPjwvbGk+CiAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vZGlyZWN0b3J5LmZzZi5vcmciPkZyZWUgU29mdHdhcmUgRGlyZWN0b3J5PC9hPjwvbGk+CgogICAgICAgIDxsaT48YSBocmVmPSIvcmVzb3VyY2VzLyI+RnJlZSBTb2Z0d2FyZSBSZXNvdXJjZXM8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9wYXRyb24uZnNmLm9yZyI+UGF0cm9uczwvYT48L2xpPgogICAgICA8bGk+PGEgaHJlZj0iL2Fzc29jaWF0ZS8iPkFzc29jaWF0ZSBNZW1iZXJzPC9hPjwvbGk+CiAgICAgIDxsaT48YSBocmVmPSIvYXNzb2NpYXRlL2FjY291bnQvIj5NeSBBY2NvdW50PC9hPjwvbGk+CiAgICAgIDxsaSBjbGFzcz0ibm9yaWdodCI+PGEgaHJlZj0iL2Fib3V0L2NvbnRhY3QuaHRtbCI+Q29udGFjdCBVczwvYT48L2xpPgogICAgICA8L3VsPgoKICAgICAgCiAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ5dWktdSIgaWQ9InNpdGVtYXAtNCI+CgogICAgICAgICAgPHAgY2xhc3M9Im5ldHNjYXBlNCI+PGEgaHJlZj0iI2Z0Ij5Ta2lwIGxpc3Q8L2E+PC9wPgoKICAgICAgPHVsPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2RvbmF0ZS5mc2Yub3JnIj5Eb25hdGUgdG8gdGhlIEZTRjwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSIvamZiIj5Kb2luIHRoZSBGU0Y8L2E+PC9saT4KCiAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9waGlsb3NvcGh5LyI+UGhpbG9zb3BoeTwvYT48dWw+CiAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9waGlsb3NvcGh5L2ZyZWUtc3cuaHRtbCI+VGhlIEZyZWUgU29mdHdhcmUgRGVmaW5pdGlvbjwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvcGhpbG9zb3BoeS9wcmFnbWF0aWMuaHRtbCI+Q29weWxlZnQ6IFByYWdtYXRpYyBJZGVhbGlzbTwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvcGhpbG9zb3BoeS9mcmVlLWRvYy5odG1sIj5GcmVlIFNvZnR3YXJlIGFuZCBGcmVlIE1hbnVhbHM8L2E+PC9saT4KICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL3BoaWxvc29waHkvc2VsbGluZy5odG1sIj5TZWxsaW5nIEZyZWUgU29mdHdhcmU8L2E+PC9saT4KICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL3BoaWxvc29waHkvZnMtbW90aXZlcy5odG1sIj5Nb3RpdmVzIGZvciBXcml0aW5nIEZyZWUgU29mdHdhcmU8L2E+PC9saT4KCiAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9waGlsb3NvcGh5L3JpZ2h0LXRvLXJlYWQuaHRtbCI+VGhlIFJpZ2h0IFRvIFJlYWQ8L2E+PC9saT4KICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL3BoaWxvc29waHkvb3Blbi1zb3VyY2UtbWlzc2VzLXRoZS1wb2ludC5odG1sIj5XaHkgT3BlbiBTb3VyY2UgTWlzc2VzIHRoZSBQb2ludCBvZiBGcmVlIFNvZnR3YXJlPC9hPjwvbGk+PC91bD48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSIvc2l0ZW1hcCI+Q29tcGxldGUgc2l0ZW1hcDwvYT48L2xpPgogICAgICA8L3VsPgogICAgICAKICAgIDwvZGl2PgogICAgPC9kaXY+CjwvbmF2PgoKPC9kaXY+Cgk8L2Rpdj4KCgk8cCBpZD0iZnNmcyIgY2xhc3M9ImMgdmlzdWFsTm9QcmludCBub01vYmlsZSI+PHNtYWxsPlRoZSBGU0YgYWxzbyBoYXMgc2lzdGVyIG9yZ2FuaXphdGlvbnMgaW4gPGEgaHJlZj0iaHR0cDovL3d3dy5mc2ZmcmFuY2Uub3JnL2luZGV4LmVuLmh0bWwiPkZyYW5jZTwvYT4sIDxhIGhyZWY9Imh0dHA6Ly93d3cuZnNmbGEub3JnLyI+TGF0aW4gQW1lcmljYTwvYT4sIDxhIGhyZWY9Imh0dHA6Ly93d3cuZnNmZXVyb3BlLm9yZyI+RXVyb3BlPC9hPiBhbmQgPGEgaHJlZj0iaHR0cDovL2ZzZi5vcmcuaW4vIj5JbmRpYTwvYT4uPC9zbWFsbD48L3A+CgoJPC9kaXY+CgoJPC9kaXY+CgoKCgoJPC9mb290ZXI+Cgk8L2Rpdj4KCgkgICAgPCEtLQoJPHJkZjpSREYgeG1sbnM9Imh0dHA6Ly93ZWIucmVzb3VyY2Uub3JnL2NjLyIKCQkgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgoJCSB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgoJPFdvcmsgcmRmOmFib3V0PSJodHRwOi8vd3d3LmZzZi5vcmcvIj4KCTxkYzp0aXRsZT5GcmVlIFNvZnR3YXJlIEZvdW5kYXRpb248L2RjOnRpdGxlPgoJPGRjOmRlc2NyaXB0aW9uPlRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEZTRikgaXMgYSBub25wcm9maXQgd2l0aCBhIHdvcmxkd2lkZSBtaXNzaW9uIHRvIHByb21vdGUgY29tcHV0ZXIgdXNlciBmcmVlZG9tIGFuZCB0byBkZWZlbmQgdGhlIHJpZ2h0cyBvZiBhbGwgZnJlZSBzb2Z0d2FyZSB1c2Vycy48L2RjOmRlc2NyaXB0aW9uPgoJPGxpY2Vuc2UgcmRmOnJlc291cmNlPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1uZC8zLjAvdXMvIiAvPgoJPC9Xb3JrPgoJPExpY2Vuc2UgcmRmOmFib3V0PSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1uZC8zLjAvdXMvIj4KCTwvTGljZW5zZT4KCTwvcmRmOlJERj4KCS0tPgoKCTxkaXYgY2xhc3M9ImMgdmlzdWFsTm9QcmludCBub01vYmlsZSIgaWQ9InBvd2VyZWQtYnkiPgoKCTxoNSBjbGFzcz0ibmV0c2NhcGU0Ij5mc2Yub3JnIGlzIHBvd2VyZWQgYnk6PC9oNT4KCgk8dWw+Cgk8bGkgaWQ9InBvd2VyZWQtYnktcGxvbmUiPjxhIGhyZWY9Imh0dHA6Ly9wbG9uZS5vcmciIHRpdGxlPSJQbG9uZSBQb3dlcmVkIj5QbG9uZTwvYT48L2xpPgoJPGxpIGlkPSJwb3dlcmVkLWJ5LXpvcGUiPjxhIGhyZWY9Imh0dHA6Ly96b3BlLm9yZyIgdGl0bGU9IlBvd2VyZWQgYnkgWm9wZSI+Wm9wZTwvYT48L2xpPgoJPGxpIGlkPSJwb3dlcmVkLWJ5LXB5dGhvbiI+PGEgaHJlZj0iaHR0cDovL3B5dGhvbi5vcmciIHRpdGxlPSJQb3dlcmVkIGJ5IFB5dGhvbiI+UHl0aG9uPC9hPjwvbGk+Cgk8bGkgaWQ9InBvd2VyZWQtYnktY2l2aWNybSI+PGEgaHJlZj0iaHR0cDovL2Npdmljcm0ub3JnIiB0aXRsZT0iUG93ZXJlZCBieSBDaXZpQ1JNIj5DaXZpQ1JNPC9hPjwvbGk+Cgk8bGkgaWQ9InBvd2VyZWQtYnktaHRtbDUiPjxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL2h0bWwiPkhUTUw1PC9hPjwvbGk+Cgk8L3VsPgoKCTwvZGl2PgoKICAgICAgICA8cCBjbGFzcz0iYyIgc3R5bGU9Im1hcmdpbi10b3A6IDEycHg7Ij48YSBocmVmPSIvYWJvdXQvZmluYW5jaWFsIj48aW1nIHNyYz0iLy9zdGF0aWMuZnNmLm9yZy9ub3N2bi9wbG9uZTMvY2hhcml0eS80c3Rhcjg4eDMxLmdpZiIgYWx0PSJGb3VyIHN0YXIgY2hhcml0eSIgLz48L2E+PC9wPgoKICAgICAgICA8Zm9ybSBjbGFzcz0iYyIgYWN0aW9uPSIuLyIgbWV0aG9kPSJnZXQiIGlkPSJjaG9vc2UtbGFuZ3VhZ2UiPgo8cD48c2VsZWN0IG5hbWU9InNldF9sYW5ndWFnZSI+CiAgPG9wdGlvbiB2YWx1ZT0iYXIiPkFyYWJpYzwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImJlIj5CZWxhcnVzc2lhbjwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImJnIj5CdWxnYXJpYW48L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJjYSI+Q2F0YWxhbjwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9InpoIj5DaGluZXNlPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0ia3ciPkNvcm5pc2g8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJjcyI+Q3plY2g8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJkYSI+RGFuaXNoPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iZW4iIHNlbGVjdGVkPSJzZWxlY3RlZCI+RW5nbGlzaDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImZyIj5GcmVuY2g8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJkZSI+R2VybWFuPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iZWwiPkdyZWVrPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iaGUiPkhlYnJldzwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImhpIj5IaW5kaTwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9Iml0Ij5JdGFsaWFuPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iamEiPkphcGFuZXNlPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0ia28iPktvcmVhbjwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9Im5vIj5Ob3J3ZWdpYW48L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJwbCI+UG9saXNoPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0icHQiPlBvcnR1Z3Vlc2U8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJwdC1iciI+UG9ydHVndWVzZSAoQnJhemlsKTwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9InJvIj5Sb21hbmlhbjwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9InJ1Ij5SdXNzaWFuPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0ic2siPlNsb3Zhazwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImVzIj5TcGFuaXNoPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0ic3YiPlN3ZWRpc2g8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJ0ciI+VHVya2lzaDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9InVyIj5VcmR1PC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iY3kiPldlbHNoPC9vcHRpb24+Cjwvc2VsZWN0PiAmbmJzcDsgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlNlbGVjdCBsYW5ndWFnZSI+PC9wPgo8cD48c21hbGw+U2VuZCB5b3VyIGZlZWRiYWNrIG9uIG91ciB0cmFuc2xhdGlvbnMgYW5kIG5ldyB0cmFuc2xhdGlvbnMgb2YgcGFnZXMgdG8gPGEgaHJlZj0ibWFpbHRvOmNhbXBhaWduc0Bmc2Yub3JnIj5jYW1wYWlnbnNAZnNmLm9yZzwvYT4uPC9zbWFsbD48L3A+CjwvZm9ybT4KCgk8L2Rpdj4gCgoKCgoKCTwvYm9keT4KCTwvaHRtbD4KCgk%3D">Free Software Foundation</A>
++ <DT><A HREF="http://www.fsf.org/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAAsTAAALEwEAmpwYAAADG0lEQVQoFQEQA+/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQECAAAAAAAAAAAAAAAAAAAA2qOp7tTXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAP///wAAAAAAAOCyt7pUXQcSEgcQDwAAAP///wAAAAAAAAD//x9NSDqNhQEBAQQAAAAAAAAAAAAAAAAQJiQGDQ0aPToZPjoAAQEAAAAAAAAAAAABAQEpZV4AAAAAAAAAAAAA////////////////pSIv05KZ////////////////////////////////AAAAAQAAAP///6krNwAAAAAAAPHc3ggSEQcSEQAAAAAAAAAAABY3NEGelQAAAAAAAAEBAQEAAAD///+YARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGDg1g690CBgYAAAABAQEEAAAAAAAAS7etAAAAAAAAwGVtHklFIlJOAAAAAAAAAAAAAAAA+/X2BwYGAAAAAAAABAAAAAAAAB1IQwAAAAAAAAYNDBAmJB1IQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAgL//v4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAQEB//7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAECAv/+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////////////////cqK3qzM////////////////////////////////8AAAABAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGuLjDf9F8oBAAAAAElFTkSuQmCC">Free Software Foundation</A>
+ <DT><A HREF="http://libreplanet.org/" ICON="data:image/x-icon;base64,AAABAAEAEBAAAAAAAABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAC/v78AAAAAAPLy9ABsbakA/f3+APn5+QC6ur0A6urqAEpLbQACBLQApKW3AAULuQDMzMwAGBiDAL29vQCgocsAgnzJALu82QA+PpsAAQOvAOjo6ADZ2dkAysrKALS0zwD5+foAAgKRAAYGdQD19fUADhOjAAQJyACrnqIAxMTLAOnp7gDm5uYAzczNACgobwDg2dEAQkaeAA0RkAAUFnEA0MvQAIBzgAANDYsAk5OyAOTk5ADy8vYA1dXVAD8/cADGxsYA+fn7AAMHvgBzZnQApqauAAEGuQDExMQAAAGmAAoLmgADCMQAxMTdAAwPlwD+/v4ABg7MAF5ehADg4OAA0dHRAAAAoQAYEXAAwsLCALCxwQBnadkAAQGWAPz8/ACgoLgAbm6RANvb5wDr6+sA0dHSALe3uQADB8AAzc3NAGFhbAABAZcAOTtlALi4xwAAAJoA/Pz9AAQHnwADBJcACQl4AFVa3AChl6EAAgW2ABscdAABAq4A2NjYAAAAmwDAwMoAAQKmAAcMswDR0eQAAQSxANvX2wB4aXcAAQGpAAAAkwDW1tYAAgSpACIZZAAAAaEA+vr8AKuirAACBbcA8vLyALOztgADBZYAAACcAAACpwAEA6QAAQKnAPT09QD///8AvL3UADIpigDw8PAABwWOAK6dogBub4kAiozDANLS0gAFC8gAAgW4AP39/QAAAJ0A0NDQAMHBwQDp6ewACg2RAAIFqAAKCokA+/v7AAkOnwAAAaMA7OzsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeHh4eHh4eHh4eHh4eHh4AXh4eHhlbikzZlooeHh4eAF4eHh4hX1JVFweInh4eHgBeHh4XmlAGXNGSB8VeHh4AXg8LhaGcV9zKg0wQF54eAF4K0NNOGthjXNCUwAMS3gBPC82iW+CCRN2Iz4wTwx4AW0GgCc5OU41VnSKTBoOiwEFTz8hHIF5RANdQVRfNIMBeBUhe0o9jB0Pcjdzc1E8AXgsB3AbUlkQRVtnhHNoeAF4i45wJCAlYjJbdYRfY3gBeDwmEn4XMToKZDd6WDx4AXh4VTsIfwt3FGpsfAR4eAF4eHgEEYhQAodXYDx4eHgBeHh4eHg8GC1HPHh4eHh4AQABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA%3D">LibrePlanet</A>
+ <DT><A HREF="http://www.gnu.org/software/gnuzilla/addons.html" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAGFBMVEVFRUV+fn6mpqa/v7/Ozs7Y2Njg4OD8/Pwuhn+TAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEQAACxEBf2RfkQAAAAd0SU1FB9MBDhQ6Gd8s57cAAAEVSURBVBgZBcGxVtpgGADQL9gHSBzqSognzMixmcWWzB6pmRHhnyvku6/fewMAIPD3TwHmQxHs6vr+A16bphNum/vV0x429201hcPjAGBTDZGnR/Kw1U181+u4HXvOdSxjUcztz8jjg1xGVBG9XPYxt4PviKiaWLg168iXtbrq+mPT1utjNcR1U73deRnL43M2sRgj3+oYs8uL3rLphPd2QWmHbMu/VS/cnk6UdtSW657g9yBlcZ0UAkUWzPvyRaAYmfd+HT4IZtvC59ibEJxXiqJjQpBpNEufBYE0McoOAunGhRMEFIPc7h4goJigQEBxk8u7AgEpL3IEAUZfcgAByGFXQACm5+4MAuB19QMEgI8CAgDgP4rivVgoKP6ZAAAAAElFTkSuQmCC">Free addons</A>
+ <DT><A HREF="http://www.h-node.org/" ICON="data:image/x-icon;base64,AAABAAEAEBAAAAAAAABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAC7zrYAWYhNANjj1QA9fEcAEEwBAHTQkwAeVRkAPXMvALvOtwASVQEAHFcUAH/bpgB60p8AKnQmAGO1fgAjaRwALmA1AA5EAQDM2sgAN3ApAG7EjgC5zbQAVJxrAChwIgC0ya8ALmczAHXJmQBNf0EAgd6oADhwKgC8z7cA7vPtANTg0QANPwAARIhSADtyLQBzzpQAus21AEeKVQDC070AieyzALzPuAB93qEALGYvAO/z7gBEiVAAasWFAFuJTwBKil4AXotSAEuKXgAORQEAD0gBABlDFwBWpmoALGYwAGCNVQAbYBAAHGAQABBOAQCI6rIAjPG3AB1bDgAaXg4A////AGaRWwB/2qYAUYJEAEx+PwAZXAwAm7eUAD51MADN28oAJmwhACRiFAAzeTYAasaFAB9eDwBkt34Aus62AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPT09PT09PT09PT09PT09PT09PT0OIjALPRQmMkI9PT09PT09OkcHNQU+Q0oQPT09PT09PToVGDQtI0ABKz09PT09PT06JRg0Nh1ALxk9PT09PT09OiUYIS4TQC83PT09PT09PTpPSDsGG0BEAz09PT09PT06T0BGMRIsTRY9PT09PT09OgACJx8gQwooPT09PT09PToICAkJCUkkPT09PT09PT05HggETio9PT09PT09PT09Px4IERw9PT09PT09PT09PUUpCDMMPT09PT09PT09PT0NOEEEGj09PT09PT09PT09TBcPSzw9PT09PT09PT09PT09PT09PT09PT09PQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D">h-node</A>
@@ -636,7 +310,7 @@ diff -Naur icecat-13.0.1/mobile/android/app/mobile.js icecat-13.0.1-libre/mobile
diff -Naur icecat-13.0.1/mobile/locales/en-US/chrome/region.properties icecat-13.0.1-libre/mobile/locales/en-US/chrome/region.properties
--- icecat-13.0.1/mobile/locales/en-US/chrome/region.properties 2012-07-12 14:27:37.000000000 -0300
+++ icecat-13.0.1-libre/mobile/locales/en-US/chrome/region.properties 2012-07-17 22:01:03.952816711 -0300
-@@ -1,18 +1,16 @@
+@@ -1,18 +1,18 @@
# Default search engine
-browser.search.defaultenginename=Google
+browser.search.defaultenginename=Duck Duck Go (Lite)
@@ -651,8 +325,10 @@ diff -Naur icecat-13.0.1/mobile/locales/en-US/chrome/region.properties icecat-13
-browser.contentHandlers.types.0.uri=http://add.my.yahoo.com/rss?url=%s
-browser.contentHandlers.types.1.title=Google
-browser.contentHandlers.types.1.uri=http://fusion.google.com/add?feedurl=%s
-+#browser.contentHandlers.types.0.title=
-+#browser.contentHandlers.types.0.uri=about:blank
++browser.contentHandlers.types.0.title=
++browser.contentHandlers.types.0.uri=about:blank
++browser.contentHandlers.types.1.title=
++browser.contentHandlers.types.1.uri=about:blank
# Keyword URL (for location bar searches)
-keyword.URL=http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=
@@ -660,22 +336,24 @@ diff -Naur icecat-13.0.1/mobile/locales/en-US/chrome/region.properties icecat-13
# increment this number when anything gets changed in the list below. This will
# cause Firefox to re-read these prefs and inject any new handlers into the
-@@ -22,11 +20,9 @@
+@@ -22,11 +20,11 @@
gecko.handlerService.defaultHandlersVersion=2
# The default set of protocol handlers for webcal:
-gecko.handlerService.schemes.webcal.0.name=30 Boxes
-gecko.handlerService.schemes.webcal.0.uriTemplate=http://30boxes.com/external/widget?refer=ff&url=%s
-+#gecko.handlerService.schemes.webcal.0.name=
-+#gecko.handlerService.schemes.webcal.0.uriTemplate=about:blank
++gecko.handlerService.schemes.webcal.0.name=
++gecko.handlerService.schemes.webcal.0.uriTemplate=about:blank
# The default set of protocol handlers for mailto:
-gecko.handlerService.schemes.mailto.0.name=Yahoo! Mail
-gecko.handlerService.schemes.mailto.0.uriTemplate=http://compose.mail.yahoo.com/?To=%s
-gecko.handlerService.schemes.mailto.1.name=Gmail
-gecko.handlerService.schemes.mailto.1.uriTemplate=https://mail.google.com/mail/?extsrc=mailto&url=%s
-+#gecko.handlerService.schemes.mailto.0.name=
-+#gecko.handlerService.schemes.mailto.0.uriTemplate=about:blank
++gecko.handlerService.schemes.mailto.0.name=
++gecko.handlerService.schemes.mailto.0.uriTemplate=about:blank
++gecko.handlerService.schemes.mailto.1.name=
++gecko.handlerService.schemes.mailto.1.uriTemplate=about:blank
diff -Naur icecat-13.0.1/mobile/xul/app/mobile.js icecat-13.0.1-libre/mobile/xul/app/mobile.js
--- icecat-13.0.1/mobile/xul/app/mobile.js 2012-07-12 14:27:37.000000000 -0300
+++ icecat-13.0.1-libre/mobile/xul/app/mobile.js 2012-07-17 22:08:34.513828987 -0300
diff --git a/libre/pacman/0001-Add-conflict-for-replacing-owned-empty-directory.patch b/libre/pacman/0001-Add-conflict-for-replacing-owned-empty-directory.patch
new file mode 100644
index 000000000..85622aaac
--- /dev/null
+++ b/libre/pacman/0001-Add-conflict-for-replacing-owned-empty-directory.patch
@@ -0,0 +1,152 @@
+From 717fdb8ee0fd23cf72fc7d2832317f513caefa2c Mon Sep 17 00:00:00 2001
+From: Allan McRae <allan@archlinux.org>
+Date: Sun, 8 Jul 2012 21:36:36 +1000
+Subject: [PATCH 1/4] Add conflict for replacing owned empty directory
+
+When two packages own an empty directory, pacman finds no conflict when
+one of those packages wants to replace the directory with a file or a
+symlink. When it comes to actually extracting the new file/symlink,
+pacman sees the directory is still there (we do not remove empty
+directories if they are owned by a package) and refuses to extract.
+
+Detect this potential conflict early and bail. Note that it is a
+_potential_ conflict and not a guaranteed one as the other package owning
+the directory could be updated or removed first which would remove
+the conflict. However, pacman currently can not sort package installation
+order to ensure this, so this conflict requires manual upgrade ordering.
+
+Signed-off-by: Allan McRae <allan@archlinux.org>
+Signed-off-by: Dan McGee <dan@archlinux.org>
+---
+ lib/libalpm/conflict.c | 32 ++++++++++++++++++++++++++------
+ test/pacman/tests/fileconflict009.py | 20 ++++++++++++++++++++
+ test/pacman/tests/fileconflict010.py | 20 ++++++++++++++++++++
+ 3 files changed, 66 insertions(+), 6 deletions(-)
+ create mode 100644 test/pacman/tests/fileconflict009.py
+ create mode 100644 test/pacman/tests/fileconflict010.py
+
+diff --git a/lib/libalpm/conflict.c b/lib/libalpm/conflict.c
+index 32f6f30..efa1a87 100644
+--- a/lib/libalpm/conflict.c
++++ b/lib/libalpm/conflict.c
+@@ -328,15 +328,35 @@ const alpm_file_t *_alpm_filelist_contains(alpm_filelist_t *filelist,
+ return NULL;
+ }
+
+-static int dir_belongsto_pkg(const char *root, const char *dirpath,
++static int dir_belongsto_pkg(alpm_handle_t *handle, const char *dirpath,
+ alpm_pkg_t *pkg)
+ {
++ alpm_list_t *i;
+ struct stat sbuf;
+ char path[PATH_MAX];
+ char abspath[PATH_MAX];
+- struct dirent *ent = NULL;
+ DIR *dir;
++ struct dirent *ent = NULL;
++ const char *root = handle->root;
++
++ /* TODO: this is an overly strict check but currently pacman will not
++ * overwrite a directory with a file (case 10/11 in add.c). Adjusting that
++ * is not simple as even if the directory is being unowned by a conflicting
++ * package, pacman does not sort this to ensure all required directory
++ * "removals" happen before installation of file/symlink */
++
++ /* check that no other _installed_ package owns the directory */
++ for(i = _alpm_db_get_pkgcache(handle->db_local); i; i = i->next) {
++ if(pkg == i->data) {
++ continue;
++ }
++
++ if(_alpm_filelist_contains(alpm_pkg_get_files(i->data), dirpath)) {
++ return 0;
++ }
++ }
+
++ /* check all files in directory are owned by the package */
+ snprintf(abspath, PATH_MAX, "%s%s", root, dirpath);
+ dir = opendir(abspath);
+ if(dir == NULL) {
+@@ -349,13 +369,13 @@ static int dir_belongsto_pkg(const char *root, const char *dirpath,
+ if(strcmp(name, ".") == 0 || strcmp(name, "..") == 0) {
+ continue;
+ }
+- snprintf(path, PATH_MAX, "%s/%s", dirpath, name);
++ snprintf(path, PATH_MAX, "%s%s", dirpath, name);
+ snprintf(abspath, PATH_MAX, "%s%s", root, path);
+ if(stat(abspath, &sbuf) != 0) {
+ continue;
+ }
+ if(S_ISDIR(sbuf.st_mode)) {
+- if(dir_belongsto_pkg(root, path, pkg)) {
++ if(dir_belongsto_pkg(handle, path, pkg)) {
+ continue;
+ } else {
+ closedir(dir);
+@@ -529,9 +549,9 @@ alpm_list_t *_alpm_db_find_fileconflicts(alpm_handle_t *handle,
+ sprintf(dir, "%s/", filestr);
+ if(_alpm_filelist_contains(alpm_pkg_get_files(dbpkg), dir)) {
+ _alpm_log(handle, ALPM_LOG_DEBUG,
+- "check if all files in %s belongs to %s\n",
++ "check if all files in %s belong to %s\n",
+ dir, dbpkg->name);
+- resolved_conflict = dir_belongsto_pkg(handle->root, filestr, dbpkg);
++ resolved_conflict = dir_belongsto_pkg(handle, dir, dbpkg);
+ }
+ free(dir);
+ }
+diff --git a/test/pacman/tests/fileconflict009.py b/test/pacman/tests/fileconflict009.py
+new file mode 100644
+index 0000000..904af4a
+--- /dev/null
++++ b/test/pacman/tests/fileconflict009.py
+@@ -0,0 +1,20 @@
++self.description = "dir->symlink change during package upgrade (directory conflict)"
++
++lp1 = pmpkg("pkg1")
++lp1.files = ["dir/"]
++self.addpkg2db("local", lp1)
++
++lp2 = pmpkg("pkg2")
++lp2.files = ["dir/"]
++self.addpkg2db("local", lp2)
++
++p = pmpkg("pkg1", "1.0-2")
++p.files = ["dir -> /usr/dir"]
++self.addpkg2db("sync", p)
++
++self.args = "-S pkg1"
++
++self.addrule("PACMAN_RETCODE=1")
++self.addrule("PKG_VERSION=pkg1|1.0-1")
++self.addrule("PKG_VERSION=pkg2|1.0-1")
++self.addrule("DIR_EXIST=dir/")
+diff --git a/test/pacman/tests/fileconflict010.py b/test/pacman/tests/fileconflict010.py
+new file mode 100644
+index 0000000..0a3ce83
+--- /dev/null
++++ b/test/pacman/tests/fileconflict010.py
+@@ -0,0 +1,20 @@
++self.description = "dir->file change during package upgrade (directory conflict)"
++
++lp1 = pmpkg("pkg1")
++lp1.files = ["dir/"]
++self.addpkg2db("local", lp1)
++
++lp2 = pmpkg("pkg2")
++lp2.files = ["dir/"]
++self.addpkg2db("local", lp2)
++
++p = pmpkg("pkg1", "1.0-2")
++p.files = ["dir"]
++self.addpkg2db("sync", p)
++
++self.args = "-S pkg1"
++
++self.addrule("PACMAN_RETCODE=1")
++self.addrule("PKG_VERSION=pkg1|1.0-1")
++self.addrule("PKG_VERSION=pkg2|1.0-1")
++self.addrule("DIR_EXIST=dir/")
+--
+1.7.11.1
+
diff --git a/libre/pacman/0002-Check-empty-subdirectory-ownership.patch b/libre/pacman/0002-Check-empty-subdirectory-ownership.patch
new file mode 100644
index 000000000..6cf496d16
--- /dev/null
+++ b/libre/pacman/0002-Check-empty-subdirectory-ownership.patch
@@ -0,0 +1,61 @@
+From 44e9fdd0e848382337edb97d41e7317638a67bac Mon Sep 17 00:00:00 2001
+From: Allan McRae <allan@archlinux.org>
+Date: Sun, 8 Jul 2012 23:58:37 +1000
+Subject: [PATCH 2/4] Check empty subdirectory ownership
+
+When checking if a package owns a directory, it is important to check
+not only that all the files in the directory are part of the package,
+but also if the directory is part of a package. This catches empty
+subdirectories during conflict checking for directory to file/symlink
+replacements.
+
+Signed-off-by: Allan McRae <allan@archlinux.org>
+Signed-off-by: Dan McGee <dan@archlinux.org>
+---
+ lib/libalpm/conflict.c | 5 +++++
+ test/pacman/tests/fileconflict012.py | 17 +++++++++++++++++
+ 2 files changed, 22 insertions(+)
+ create mode 100644 test/pacman/tests/fileconflict012.py
+
+diff --git a/lib/libalpm/conflict.c b/lib/libalpm/conflict.c
+index efa1a87..d6e5d8c 100644
+--- a/lib/libalpm/conflict.c
++++ b/lib/libalpm/conflict.c
+@@ -339,6 +339,11 @@ static int dir_belongsto_pkg(alpm_handle_t *handle, const char *dirpath,
+ struct dirent *ent = NULL;
+ const char *root = handle->root;
+
++ /* check directory is actually in package - used for subdirectory checks */
++ if(!_alpm_filelist_contains(alpm_pkg_get_files(pkg), dirpath)) {
++ return 0;
++ }
++
+ /* TODO: this is an overly strict check but currently pacman will not
+ * overwrite a directory with a file (case 10/11 in add.c). Adjusting that
+ * is not simple as even if the directory is being unowned by a conflicting
+diff --git a/test/pacman/tests/fileconflict012.py b/test/pacman/tests/fileconflict012.py
+new file mode 100644
+index 0000000..421b739
+--- /dev/null
++++ b/test/pacman/tests/fileconflict012.py
+@@ -0,0 +1,17 @@
++self.description = "dir->file change during package upgrade (filesystem file conflict)"
++
++lp1 = pmpkg("pkg1")
++lp1.files = ["dir/"]
++self.addpkg2db("local", lp1)
++
++self.filesystem = ["dir/file"]
++
++p = pmpkg("pkg1", "1.0-2")
++p.files = ["dir"]
++self.addpkg2db("sync", p)
++
++self.args = "-S pkg1"
++
++self.addrule("PACMAN_RETCODE=1")
++self.addrule("PKG_VERSION=pkg1|1.0-1")
++self.addrule("DIR_EXIST=dir/")
+--
+1.7.11.1
+
diff --git a/libre/pacman/PKGBUILD b/libre/pacman/PKGBUILD
index d8d3a6d26..4f05be586 100644
--- a/libre/pacman/PKGBUILD
+++ b/libre/pacman/PKGBUILD
@@ -4,38 +4,42 @@
# Maintainer: Dave Reisner <dave@archlinux.org>
pkgname=pacman
-pkgver=4.0.2
-pkgrel=1
+pkgver=4.0.3
+pkgrel=3
pkgdesc="A library-based package manager with dependency support"
arch=('i686' 'x86_64' 'mips64el')
url="http://www.archlinux.org/pacman/"
license=('GPL')
groups=('base')
depends=('bash' 'glibc>=2.15' 'libarchive>=3.0.2' 'curl>=7.19.4'
- 'gpgme' 'pacman-mirrorlist')
+ 'gpgme' 'pacman-mirrorlist' 'archlinux-keyring' 'parabola-keyring')
makedepends=('asciidoc')
optdepends=('fakeroot: for makepkg usage as normal user')
backup=(etc/pacman.conf etc/makepkg.conf)
install=pacman.install
options=(!libtool)
source=(ftp://ftp.archlinux.org/other/pacman/$pkgname-$pkgver.tar.gz{,.sig}
+ 0001-Add-conflict-for-replacing-owned-empty-directory.patch
+ 0002-Check-empty-subdirectory-ownership.patch
pacman.conf
pacman.conf.x86_64
pacman.conf.mips64el
makepkg.conf)
-md5sums=('289ba4a19a16393096e065cec1cb9b0a'
- '575140dce3ea597d91b6d081aa3f6a00'
- '858d1ffb284afc6b15f72578ba3cac50'
- '7dade0c0a4d597c480d779afa4f5097c'
- 'd4ca1a1d8e6708c0302a225628a489eb'
+md5sums=('387965c7125e60e5f0b9ff3b427fe0f9'
+ '1a70392526c8768470da678b31905a6e'
+ '1a9b79788640907a2b34e8671cacc94a'
+ 'a9ddd43891bed364e1e97d27b2887bf1'
+ '080d9f76f56e135cc62205874636aa0f'
+ 'ce9943fc8086d491890565e91ea1a0d8'
+ 'eb8dba9bd0b315230fbf0e5dc0a7335b'
'debc512689a1aa8c124fe0ccf27f5758')
-# keep an upgrade path for older installations
-PKGEXT='.pkg.tar.gz'
-
build() {
cd $srcdir/$pkgname-$pkgver
+ patch -p1 -i $srcdir/0001-Add-conflict-for-replacing-owned-empty-directory.patch
+ patch -p1 -i $srcdir/0002-Check-empty-subdirectory-ownership.patch
+
./configure --prefix=/usr --sysconfdir=/etc \
--localstatedir=/var --enable-doc
make
@@ -83,8 +87,10 @@ package() {
-e "s|@CARCHFLAGS[@]|$myflags|g"
# install completion files
- mkdir -p $pkgdir/etc/bash_completion.d/
- install -m644 contrib/bash_completion $pkgdir/etc/bash_completion.d/pacman
- mkdir -p $pkgdir/usr/share/zsh/site-functions/
- install -m644 contrib/zsh_completion $pkgdir/usr/share/zsh/site-functions/_pacman
+ install -Dm644 contrib/bash_completion "$pkgdir/usr/share/bash-completion/completions/pacman"
+ for f in makepkg pacman-key; do
+ ln -s pacman "$pkgdir/usr/share/bash-completion/completions/$f"
+ done
+
+ install -Dm644 contrib/zsh_completion $pkgdir/usr/share/zsh/site-functions/_pacman
}
diff --git a/libre/pacman/pacman.conf b/libre/pacman/pacman.conf
index 92befa5fa..115217b59 100644
--- a/libre/pacman/pacman.conf
+++ b/libre/pacman/pacman.conf
@@ -36,18 +36,13 @@ Architecture = auto
CheckSpace
#VerbosePkgLists
-# PGP signature checking
-# NOTE: None of this will work without running `pacman-key --init` first.
-# The compiled in default is equivalent to the following line. This requires
-# you to locally sign and trust packager keys using `pacman-key` for them to be
-# considered valid.
+# By default, pacman accepts packages signed by keys that its local keyring
+# trusts (see pacman-key and its man page), as well as unsigned packages.
#SigLevel = Optional TrustedOnly
-# If you wish to check signatures but avoid local sign and trust issues, use
-# the following line. This will treat any key imported into pacman's keyring as
-# trusted.
-#SigLevel = Optional TrustAll
-# For now, off by default unless you read the above.
-SigLevel = Never
+
+# NOTE: You must run `pacman-key --init` before first using pacman; the local
+# keyring can then be populated with the keys of all official Arch Linux
+# packagers with `pacman-key --populate archlinux`.
#
# REPOSITORIES
@@ -77,7 +72,7 @@ SigLevel = Never
#Include = /etc/pacman.d/mirrorlist
[libre]
-#SigLevel = PackageRequired
+SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist
#[testing]
@@ -85,11 +80,11 @@ Include = /etc/pacman.d/mirrorlist
#Include = /etc/pacman.d/mirrorlist
[core]
-#SigLevel = PackageRequired
+SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist
[extra]
-#SigLevel = PackageOptional
+SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist
#[community-testing]
@@ -97,7 +92,7 @@ Include = /etc/pacman.d/mirrorlist
#Include = /etc/pacman.d/mirrorlist
[community]
-#SigLevel = PackageOptional
+SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist
# Parabola also supports community projects and personal repositories, to find
diff --git a/libre/pacman/pacman.conf.mips64el b/libre/pacman/pacman.conf.mips64el
index a74f2d3da..f286c3290 100644
--- a/libre/pacman/pacman.conf.mips64el
+++ b/libre/pacman/pacman.conf.mips64el
@@ -16,9 +16,7 @@
#GPGDir = /etc/pacman.d/gnupg/
HoldPkg = pacman glibc
# If upgrades are available for these packages they will be asked for first
-# Don't list pacman here unless you want it broken when there is a
-# libarchive or glibc update.
-#SyncFirst =
+SyncFirst = pacman
#XferCommand = /usr/bin/curl -C - -f %u > %o
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#CleanMethod = KeepInstalled
@@ -35,21 +33,16 @@ Architecture = mips64el
#UseSyslog
#UseDelta
#TotalDownload
-#CheckSpace
+CheckSpace
#VerbosePkgLists
-# PGP signature checking
-# NOTE: None of this will work without running `pacman-key --init` first.
-# The compiled in default is equivalent to the following line. This requires
-# you to locally sign and trust packager keys using `pacman-key` for them to be
-# considered valid.
+# By default, pacman accepts packages signed by keys that its local keyring
+# trusts (see pacman-key and its man page), as well as unsigned packages.
#SigLevel = Optional TrustedOnly
-# If you wish to check signatures but avoid local sign and trust issues, use
-# the following line. This will treat any key imported into pacman's keyring as
-# trusted.
-#SigLevel = Optional TrustAll
-# For now, off by default unless you read the above.
-SigLevel = Never
+
+# NOTE: You must run `pacman-key --init` before first using pacman; the local
+# keyring can then be populated with the keys of all official Arch Linux
+# packagers with `pacman-key --populate archlinux`.
#
# REPOSITORIES
@@ -79,7 +72,7 @@ SigLevel = Never
#Include = /etc/pacman.d/mirrorlist
[libre]
-#SigLevel = PackageRequired
+SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist
#[testing]
@@ -87,11 +80,11 @@ Include = /etc/pacman.d/mirrorlist
#Include = /etc/pacman.d/mirrorlist
[core]
-#SigLevel = PackageRequired
+SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist
[extra]
-#SigLevel = PackageOptional
+SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist
#[community-testing]
@@ -99,7 +92,7 @@ Include = /etc/pacman.d/mirrorlist
#Include = /etc/pacman.d/mirrorlist
[community]
-#SigLevel = PackageOptional
+SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist
# Parabola also supports community projects and personal repositories, to find
diff --git a/libre/pacman/pacman.conf.x86_64 b/libre/pacman/pacman.conf.x86_64
index 0eddc159c..4c67b089f 100644
--- a/libre/pacman/pacman.conf.x86_64
+++ b/libre/pacman/pacman.conf.x86_64
@@ -36,18 +36,13 @@ Architecture = auto
CheckSpace
#VerbosePkgLists
-# PGP signature checking
-# NOTE: None of this will work without running `pacman-key --init` first.
-# The compiled in default is equivalent to the following line. This requires
-# you to locally sign and trust packager keys using `pacman-key` for them to be
-# considered valid.
+# By default, pacman accepts packages signed by keys that its local keyring
+# trusts (see pacman-key and its man page), as well as unsigned packages.
#SigLevel = Optional TrustedOnly
-# If you wish to check signatures but avoid local sign and trust issues, use
-# the following line. This will treat any key imported into pacman's keyring as
-# trusted.
-#SigLevel = Optional TrustAll
-# For now, off by default unless you read the above.
-SigLevel = Never
+
+# NOTE: You must run `pacman-key --init` before first using pacman; the local
+# keyring can then be populated with the keys of all official Arch Linux
+# packagers with `pacman-key --populate archlinux`.
#
# REPOSITORIES
@@ -77,7 +72,7 @@ SigLevel = Never
#Include = /etc/pacman.d/mirrorlist
[libre]
-#SigLevel = PackageRequired
+SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist
#[testing]
@@ -85,11 +80,11 @@ Include = /etc/pacman.d/mirrorlist
#Include = /etc/pacman.d/mirrorlist
[core]
-#SigLevel = PackageRequired
+SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist
[extra]
-#SigLevel = PackageOptional
+SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist
#[community-testing]
@@ -97,7 +92,7 @@ Include = /etc/pacman.d/mirrorlist
#Include = /etc/pacman.d/mirrorlist
[community]
-#SigLevel = PackageOptional
+SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system,
@@ -108,7 +103,7 @@ Include = /etc/pacman.d/mirrorlist
#Include = /etc/pacman.d/mirrorlist
#[multilib]
-#SigLevel = PackageOptional
+#SigLevel = PackageRequired
#Include = /etc/pacman.d/mirrorlist
# Parabola also supports community projects and personal repositories, to find
diff --git a/libre/pacman/pacman.install b/libre/pacman/pacman.install
index 4369edab1..5dc55c0c2 100644
--- a/libre/pacman/pacman.install
+++ b/libre/pacman/pacman.install
@@ -9,7 +9,9 @@ post_upgrade() {
if [ "$(vercmp $2 3.5.0)" -lt 0 ]; then
_warnupgrade
fi
- _check_pubring
+ if [ ! -f "etc/pacman.d/gnupg/pubring.gpg" ] || [ "$(vercmp $2 4.0.3-2)" -lt 0 ]; then
+ _check_pubring
+ fi
}
post_install() {
@@ -17,9 +19,10 @@ post_install() {
}
_check_pubring() {
- if [ ! -f "etc/pacman.d/gnupg/pubring.gpg" ]; then
- echo " >>> Run \`pacman-key --init\` to set up your pacman keyring."
- fi
+ echo " >>> Run \`pacman-key --init; pacman-key --populate archlinux\`"
+ echo " >>> And \`pacman-key --populate parabola\`"
+ echo " >>> to import the data required by pacman for package verification."
+ echo " >>> See: https://www.archlinux.org/news/having-pacman-verify-packages"
}
_warnupgrade() {
diff --git a/libre/pacman/rePKGBUILD b/libre/pacman/rePKGBUILD
new file mode 100644
index 000000000..810eff5b9
--- /dev/null
+++ b/libre/pacman/rePKGBUILD
@@ -0,0 +1,37 @@
+# Maintainer: Nicolas Reynolds <fauno@kiwwwi.com.ar>
+source PKGBUILD
+unset build package md5sums source check
+_repo=core
+source=(PKGBUILD
+ ftp://ftp.archlinux.org/${_repo}/os/${CARCH}/${pkgname%-libre}-$pkgver-$pkgrel-$CARCH$PKGEXT
+ # files for pkg modifications
+ pacman.conf
+ pacman.conf.x86_64
+ )
+options=(!strip)
+
+build() {
+ cd "${srcdir}/"
+ rm -vf .{INSTALL,PKGINFO} ${srcdir}/${pkgname%-libre}-$pkgver-$pkgrel-$CARCH$PKGEXT
+ # put actions for package modifications below this line
+
+}
+
+package() {
+ cp -a ${srcdir}/* ${pkgdir}
+
+ rm ${pkgdir}/{PKGBUILD,pacman.conf{,.x86_64}}
+
+# No need to repackage for mips64el
+ case "$CARCH" in
+ i686)
+ install -m644 $srcdir/pacman.conf $pkgdir/etc/pacman.conf
+ ;;
+ x86_64)
+ install -m644 $srcdir/pacman.conf.x86_64 $pkgdir/etc/pacman.conf
+ ;;
+ esac
+}
+
+
+# vim:set ts=2 sw=2 et:
diff --git a/libre/parabola-keyring/PKGBUILD b/libre/parabola-keyring/PKGBUILD
index 989887ad9..432a5cf75 100644
--- a/libre/parabola-keyring/PKGBUILD
+++ b/libre/parabola-keyring/PKGBUILD
@@ -3,18 +3,18 @@
pkgname=parabola-keyring
pkgver=20120719
-pkgrel=1
+pkgrel=2
pkgdesc='Parabola GNU/Linux-libre PGP keyring'
arch=('any')
url='https://projects.parabolagnulinux.org/hackers.git/'
license=('GPL')
install="${pkgname}.install"
-source=("ftp://ftp.parabolagnulinux.org/other/${pkgname}/${pkgname}-${pkgver}.tar.gz"
- "ftp://ftp.parabolagnulinux.org/other/${pkgname}/${pkgname}-${pkgver}.tar.gz.sig")
-md5sums=('35b53004acde18e02acd29889302d40a'
- '4929c51b019dfba1a85320396631e4c0')
+source=("http://repo.parabolagnulinux.org/other/${pkgname}-${pkgver}.tar.gz"
+ "http://repo.parabolagnulinux.org/other/${pkgname}-${pkgver}.tar.gz.sig")
package() {
cd "${srcdir}/${pkgname}-${pkgver}"
make PREFIX=/usr DESTDIR=${pkgdir} install
}
+md5sums=('de7f518935faea83aaa4d74001be8ecc'
+ '22dd9f76911e4984a6cc625d9d1f9465')
diff --git a/libre/python2-libre/13156-revert-tls-changeset-subinterpreter.patch b/libre/python2-libre/13156-revert-tls-changeset-subinterpreter.patch
deleted file mode 100644
index ed8154df5..000000000
--- a/libre/python2-libre/13156-revert-tls-changeset-subinterpreter.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-
-# HG changeset patch
-# User Charles-François Natali <neologix@free.fr>
-# Date 1318446474 -7200
-# Node ID ee4fe16d9b4822457ad855ea6c44e65030166304
-# Parent f6feed6ec3f9b024cecd0fd587595c403f55624f
-Issue #13156: revert changeset f6feed6ec3f9, which was only relevant for native
-TLS implementations, and fails with the ad-hoc TLS implementation when a thread
-doesn't have an auto thread state (e.g. a thread created outside of Python
-calling into a subinterpreter).
-
-diff --git a/Include/pystate.h b/Include/pystate.h
---- a/Include/pystate.h
-+++ b/Include/pystate.h
-@@ -111,7 +111,6 @@ PyAPI_FUNC(void) PyThreadState_Clear(PyT
- PyAPI_FUNC(void) PyThreadState_Delete(PyThreadState *);
- #ifdef WITH_THREAD
- PyAPI_FUNC(void) PyThreadState_DeleteCurrent(void);
--PyAPI_FUNC(void) _PyGILState_Reinit(void);
- #endif
-
- PyAPI_FUNC(PyThreadState *) PyThreadState_Get(void);
-diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c
---- a/Modules/signalmodule.c
-+++ b/Modules/signalmodule.c
-@@ -976,7 +976,6 @@ void
- PyOS_AfterFork(void)
- {
- #ifdef WITH_THREAD
-- _PyGILState_Reinit();
- PyEval_ReInitThreads();
- main_thread = PyThread_get_thread_ident();
- main_pid = getpid();
-diff --git a/Python/pystate.c b/Python/pystate.c
---- a/Python/pystate.c
-+++ b/Python/pystate.c
-@@ -537,23 +537,6 @@ void
- autoInterpreterState = NULL;
- }
-
--/* Reset the TLS key - called by PyOS_AfterFork.
-- * This should not be necessary, but some - buggy - pthread implementations
-- * don't flush TLS on fork, see issue #10517.
-- */
--void
--_PyGILState_Reinit(void)
--{
-- PyThreadState *tstate = PyGILState_GetThisThreadState();
-- PyThread_delete_key(autoTLSkey);
-- if ((autoTLSkey = PyThread_create_key()) == -1)
-- Py_FatalError("Could not allocate TLS entry");
--
-- /* re-associate the current thread state with the new key */
-- if (PyThread_set_key_value(autoTLSkey, (void *)tstate) < 0)
-- Py_FatalError("Couldn't create autoTLSkey mapping");
--}
--
- /* When a thread state is created for a thread by some mechanism other than
- PyGILState_Ensure, it's important that the GILState machinery knows about
- it so it doesn't try to create another thread state for the thread (this is
-
diff --git a/libre/python2-libre/PKGBUILD b/libre/python2-libre/PKGBUILD
deleted file mode 100644
index e743151b0..000000000
--- a/libre/python2-libre/PKGBUILD
+++ /dev/null
@@ -1,109 +0,0 @@
-# $Id: PKGBUILD 129895 2011-06-29 15:22:59Z stephane $
-# Maintainer: Stéphane Gaudreault <stephane@archlinux.org>
-# Contributer: Allan McRae <allan@archlinux.org>
-# Contributer: Jason Chu <jason@archlinux.org>
-
-_pkgname=python2
-pkgname=python2-libre
-pkgver=2.7.2
-pkgrel=6
-_pybasever=2.7
-pkgdesc="A high-level scripting language"
-arch=('i686' 'x86_64')
-license=('PSF')
-url="http://www.python.org/"
-depends=('bzip2' 'gdbm' 'openssl' 'zlib' 'expat' 'sqlite' 'libffi')
-makedepends=('tk')
-optdepends=('tk: for IDLE')
-conflicts=('python<3')
-options=('!makeflags')
-source=(http://repo.parabolagnulinux.org/other/${pkgname}-${pkgver}-4-any.src.tar.xz
- doc_license_change.patch
- WDAS.patch
- linux2.patch
- gdbm-magic-values.patch
- 13156-revert-tls-changeset-subinterpreter.patch)
-provides=("$_pkgname=$pkgver")
-conflicts=("$_pkgname")
-replaces=("$_pkgname")
-
-build() {
- cd "${srcdir}/Python-${pkgver}"
-
- # Temporary workaround for FS#22322
- # See http://bugs.python.org/issue10835 for upstream report
- sed -i "/progname =/s/python/python${_pybasever}/" Python/pythonrun.c
-
- # Enable built-in SQLite module to load extensions (fix FS#22122)
- sed -i "/SQLITE_OMIT_LOAD_EXTENSION/d" setup.py
-
- # FS#23997
- sed -i -e "s|^#.* /usr/local/bin/python|#!/usr/bin/python2|" Lib/cgi.py
-
- # Make sure sys.platform is set to linux2, even on kernel 3.X
- # cf http://bugs.python.org/issue12326
- patch -Np1 -i ../linux2.patch
-
- # gdbm has new magic that whichdb does not recognize
- # http://bugs.python.org/issue13007
- patch -Np1 -i ../gdbm-magic-values.patch
-
- # http://bugs.python.org/issue13156
- patch -Np1 -i ../13156-revert-tls-changeset-subinterpreter.patch
-
- # Ensure that we are using the system copy of various libraries (expat, zlib and libffi),
- # rather than copies shipped in the tarball
- rm -r Modules/expat
- rm -r Modules/zlib
- rm -r Modules/_ctypes/{darwin,libffi}*
-
- export OPT="${CFLAGS}"
- ./configure --prefix=/usr --enable-shared --with-threads --enable-ipv6 \
- --enable-unicode=ucs4 --with-system-expat --with-system-ffi \
- --with-dbmliborder=gdbm:ndbm
-
- make MACHDEP=linux2
-}
-
-package() {
- cd "${srcdir}/Python-${pkgver}"
- make DESTDIR="${pkgdir}" altinstall maninstall
-
- ln -sf python${_pybasever} "${pkgdir}/usr/bin/python2"
- ln -sf python${_pybasever}-config "${pkgdir}/usr/bin/python2-config"
- ln -sf python${_pybasever}.1 "${pkgdir}/usr/share/man/man1/python2.1"
-
- ln -sf ../../libpython${_pybasever}.so \
- "${pkgdir}/usr/lib/python${_pybasever}/config/libpython${_pybasever}.so"
-
- mv "${pkgdir}/usr/bin/smtpd.py" "${pkgdir}/usr/lib/python${_pybasever}/"
-
- # some useful "stuff"
- install -dm755 "${pkgdir}"/usr/lib/python${_pybasever}/Tools/{i18n,scripts}
- install -m755 Tools/i18n/{msgfmt,pygettext}.py \
- "${pkgdir}/usr/lib/python${_pybasever}/Tools/i18n/"
- install -m755 Tools/scripts/{README,*py} \
- "${pkgdir}/usr/lib/python${_pybasever}/Tools/scripts/"
-
- # fix conflicts with python
- mv "${pkgdir}"/usr/bin/idle{,2}
- mv "${pkgdir}"/usr/bin/pydoc{,2}
- mv "${pkgdir}"/usr/bin/2to3{,-2.7}
-
- # clean up #!s
- find "${pkgdir}/usr/lib/python${_pybasever}/" -name '*.py' | \
- xargs sed -i "s|#[ ]*![ ]*/usr/bin/env python$|#!/usr/bin/env python2|"
-
- # clean-up reference to build directory
- sed -i "s#${srcdir}/Python-${pkgver}:##" \
- "${pkgdir}/usr/lib/python${_pybasever}/config/Makefile"
-
- # license
- install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
-}
-md5sums=('456d053a5d418adc913a4971e95fe918'
- '1e6595f85a1da7f42b69456119924d50'
- '3f8c0e310a0be0bd8b319d6c46bbd427'
- '6099a7c1aed80cf04943ee4affa84b5c'
- '6de394351179c2ada82e95458ceb13e5'
- 'daa5110f092f1406c17de23171529e62')
diff --git a/libre/python2-libre/SRCBUILD b/libre/python2-libre/SRCBUILD
deleted file mode 100644
index f021d6624..000000000
--- a/libre/python2-libre/SRCBUILD
+++ /dev/null
@@ -1,36 +0,0 @@
-# $Id: PKGBUILD 123066 2011-05-07 23:01:49Z stephane $
-# Maintainer: AndyRTR <andyrtr@archlinux.org>
-# Maintainer (Parabola): xihh
-
-pkgname=python2-libre
-pkgver=2.7.2
-pkgrel=4
-pkgdesc="A high-level scripting language"
-arch=('any')
-license=('PSF')
-url="http://www.python.org/"
-source=(http://www.python.org/ftp/python/${pkgver%rc?}/Python-${pkgver}.tar.xz
- doc_license_change.patch
- WDAS.patch)
-md5sums=('75c87a80c6ddb0b785a57ea3583e04fa'
- '1e6595f85a1da7f42b69456119924d50'
- '3f8c0e310a0be0bd8b319d6c46bbd427')
-options=(!strip docs libtool emptydirs !zipman !purge)
-
-build() {
- cd "${srcdir}/Python-${pkgver}"
-
- export PKGEXT=.src.tar.xz
-
- patch -Np1 -i ../WDAS.patch
- patch -Np0 -i ../doc_license_change.patch
-
-}
-
-package() {
- export PKGEXT=.src.tar.xz
- export PKGDEST=${startdir}
-
- mv "${srcdir}/Python-${pkgver}" ${pkgdir}
-
-}
diff --git a/libre/python2-libre/WDAS.patch b/libre/python2-libre/WDAS.patch
deleted file mode 100644
index 86bc75e8c..000000000
--- a/libre/python2-libre/WDAS.patch
+++ /dev/null
@@ -1,109 +0,0 @@
-diff -r ac562d86ab71 Lib/profile.py
---- a/Lib/profile.py Fri Jun 03 17:50:59 2011 -0500
-+++ b/Lib/profile.py Mon Jun 27 00:02:20 2011 -0700
-@@ -2,35 +2,26 @@
- #
- # Class for profiling python code. rev 1.0 6/2/94
- #
-+# Written by James Roskind
- # Based on prior profile module by Sjoerd Mullender...
- # which was hacked somewhat by: Guido van Rossum
-
- """Class for profiling Python code."""
-
--# Copyright 1994, by InfoSeek Corporation, all rights reserved.
--# Written by James Roskind
--#
--# Permission to use, copy, modify, and distribute this Python software
--# and its associated documentation for any purpose (subject to the
--# restriction in the following sentence) without fee is hereby granted,
--# provided that the above copyright notice appears in all copies, and
--# that both that copyright notice and this permission notice appear in
--# supporting documentation, and that the name of InfoSeek not be used in
--# advertising or publicity pertaining to distribution of the software
--# without specific, written prior permission. This permission is
--# explicitly restricted to the copying and modification of the software
--# to remain in Python, compiled Python, or other languages (such as C)
--# wherein the modified or derived code is exclusively imported into a
--# Python module.
--#
--# INFOSEEK CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
--# SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
--# FITNESS. IN NO EVENT SHALL INFOSEEK CORPORATION BE LIABLE FOR ANY
--# SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
--# RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
--# CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
--# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--
-+# Copyright Disney Enterprises, Inc. All Rights Reserved.
-+# Licensed to PSF under a Contributor Agreement
-+#
-+# Licensed under the Apache License, Version 2.0 (the "License");
-+# you may not use this file except in compliance with the License.
-+# You may obtain a copy of the License at
-+#
-+# http://www.apache.org/licenses/LICENSE-2.0
-+#
-+# Unless required by applicable law or agreed to in writing, software
-+# distributed under the License is distributed on an "AS IS" BASIS,
-+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
-+# either express or implied. See the License for the specific language
-+# governing permissions and limitations under the License.
-
-
- import sys
-diff -r ac562d86ab71 Lib/pstats.py
---- a/Lib/pstats.py Fri Jun 03 17:50:59 2011 -0500
-+++ b/Lib/pstats.py Mon Jun 27 00:02:20 2011 -0700
-@@ -2,34 +2,26 @@
-
- # Class for printing reports on profiled python code. rev 1.0 4/1/94
- #
-+# Written by James Roskind
- # Based on prior profile module by Sjoerd Mullender...
- # which was hacked somewhat by: Guido van Rossum
--#
--# see profile.py for more info.
-
--# Copyright 1994, by InfoSeek Corporation, all rights reserved.
--# Written by James Roskind
--#
--# Permission to use, copy, modify, and distribute this Python software
--# and its associated documentation for any purpose (subject to the
--# restriction in the following sentence) without fee is hereby granted,
--# provided that the above copyright notice appears in all copies, and
--# that both that copyright notice and this permission notice appear in
--# supporting documentation, and that the name of InfoSeek not be used in
--# advertising or publicity pertaining to distribution of the software
--# without specific, written prior permission. This permission is
--# explicitly restricted to the copying and modification of the software
--# to remain in Python, compiled Python, or other languages (such as C)
--# wherein the modified or derived code is exclusively imported into a
--# Python module.
--#
--# INFOSEEK CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
--# SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
--# FITNESS. IN NO EVENT SHALL INFOSEEK CORPORATION BE LIABLE FOR ANY
--# SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
--# RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
--# CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
--# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+"""Class for profiling Python code."""
-+
-+# Copyright Disney Enterprises, Inc. All Rights Reserved.
-+# Licensed to PSF under a Contributor Agreement
-+#
-+# Licensed under the Apache License, Version 2.0 (the "License");
-+# you may not use this file except in compliance with the License.
-+# You may obtain a copy of the License at
-+#
-+# http://www.apache.org/licenses/LICENSE-2.0
-+#
-+# Unless required by applicable law or agreed to in writing, software
-+# distributed under the License is distributed on an "AS IS" BASIS,
-+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
-+# either express or implied. See the License for the specific language
-+# governing permissions and limitations under the License.
-
-
- import sys
diff --git a/libre/python2-libre/doc_license_change.patch b/libre/python2-libre/doc_license_change.patch
deleted file mode 100644
index 18f9447d7..000000000
--- a/libre/python2-libre/doc_license_change.patch
+++ /dev/null
@@ -1,44 +0,0 @@
---- Doc/library/profile.rst 2011-06-11 12:46:23.000000000 -0300
-+++ Doc/library/profile.rst.orig 2011-08-12 11:35:25.000000000 -0300
-@@ -12,27 +12,23 @@
-
- .. index:: single: InfoSeek Corporation
-
--Copyright © 1994, by InfoSeek Corporation, all rights reserved.
-+Copyright Disney Enterprises, Inc. All Rights Reserved.
-
- Written by James Roskind. [#]_
-
--Permission to use, copy, modify, and distribute this Python software and its
--associated documentation for any purpose (subject to the restriction in the
--following sentence) without fee is hereby granted, provided that the above
--copyright notice appears in all copies, and that both that copyright notice and
--this permission notice appear in supporting documentation, and that the name of
--InfoSeek not be used in advertising or publicity pertaining to distribution of
--the software without specific, written prior permission. This permission is
--explicitly restricted to the copying and modification of the software to remain
--in Python, compiled Python, or other languages (such as C) wherein the modified
--or derived code is exclusively imported into a Python module.
--
--INFOSEEK CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
--INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT
--SHALL INFOSEEK CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
--DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
--WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
--OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+Licensed to PSF under a Contributor Agreement
-+
-+Licensed under the Apache License, Version 2.0 (the "License");
-+you may not use this file except in compliance with the License.
-+You may obtain a copy of the License at
-+
-+http://www.apache.org/licenses/LICENSE-2.0
-+
-+Unless required by applicable law or agreed to in writing, software
-+distributed under the License is distributed on an "AS IS" BASIS,
-+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
-+either express or implied. See the License for the specific language
-+governing permissions and limitations under the License.
-
- .. _profiler-introduction:
-
diff --git a/libre/python2-libre/gdbm-magic-values.patch b/libre/python2-libre/gdbm-magic-values.patch
deleted file mode 100644
index 471faf2c7..000000000
--- a/libre/python2-libre/gdbm-magic-values.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up Python-2.7.2/Lib/whichdb.py.gdbm-1.9-magic Python-2.7.2/Lib/whichdb.py
---- Python-2.7.2/Lib/whichdb.py.gdbm-1.9-magic 2011-06-11 11:46:26.000000000 -0400
-+++ Python-2.7.2/Lib/whichdb.py 2011-09-30 15:45:21.778872290 -0400
-@@ -91,7 +91,7 @@ def whichdb(filename):
- return ""
-
- # Check for GNU dbm
-- if magic == 0x13579ace:
-+ if magic in (0x13579ace, 0x13579acd, 0x13579acf):
- return "gdbm"
-
- # Check for old Berkeley db hash file format v2
diff --git a/libre/python2-libre/linux2.patch b/libre/python2-libre/linux2.patch
deleted file mode 100644
index 670510fde..000000000
--- a/libre/python2-libre/linux2.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-http://hg.python.org/cpython/rev/c816479f6aaf/
-diff --git a/configure b/configure
---- a/configure
-+++ b/configure
-@@ -2995,6 +2995,7 @@ then
- MACHDEP="$ac_md_system$ac_md_release"
-
- case $MACHDEP in
-+ linux*) MACHDEP="linux2";;
- cygwin*) MACHDEP="cygwin";;
- darwin*) MACHDEP="darwin";;
- atheos*) MACHDEP="atheos";;
-diff --git a/configure.in b/configure.in
---- a/configure.in
-+++ b/configure.in
-@@ -293,6 +293,7 @@ then
- MACHDEP="$ac_md_system$ac_md_release"
-
- case $MACHDEP in
-+ linux*) MACHDEP="linux2";;
- cygwin*) MACHDEP="cygwin";;
- darwin*) MACHDEP="darwin";;
- atheos*) MACHDEP="atheos";;