#!/bin/sh

iterate()
{
	"$@" GX - bin/opera@@{SUFFIX}
	if ! $repackage
	then
		"$@" GX - bin/uninstall-opera@@{SUFFIX}
	fi
	"$@" NF 3dc03fb503feed6c08d800fc5b8decd1 lib/opera@@{SUFFIX}/gstreamer/plugins/libgstoperamatroska.so
	"$@" NF d1c9a5f0044acc45ac7c4739b266529f lib/opera@@{SUFFIX}/gstreamer/plugins/libgstoperavp8.so
	"$@" NF 3a7266602876f70e6916fb0fb00b7dfb lib/opera@@{SUFFIX}/liboperagtk2.so
	"$@" NF 789c1cc5583c04e555c99b888f394a45 lib/opera@@{SUFFIX}/liboperagtk3.so
	"$@" NF 93a097279e28d755d450a814f5aa485d lib/opera@@{SUFFIX}/liboperakde4.so
	"$@" NX d4950c42120742f5c22dfaa0fa198dee lib/opera@@{SUFFIX}/opera@@{SUFFIX}
	"$@" NF 0a8389b127c477aa2c55ee5d234473ca lib/opera@@{SUFFIX}/plugins/README
	"$@" NX 68a3ae019efd516ed92fd1b5e48d4ae2 lib/opera@@{SUFFIX}/pluginwrapper/operapluginwrapper
	"$@" NX a3db7e3a6c3bf54c85f459ac4d38432d lib/opera@@{SUFFIX}/pluginwrapper/operapluginwrapper-native
	"$@" PF 45b63b062396a549264d4774a84d8c58 share/applications/opera@@{SUFFIX}-browser.desktop
	"$@" NF 3214f080875748938ba060314b4f727d share/doc/opera@@{SUFFIX}/LGPL-2
	"$@" NF 6a6a8e020838b23406c81b19c1d46df6 share/doc/opera@@{SUFFIX}/LGPL-3
	"$@" NF c65fcbc55239fd1df14305d61f52b446 share/doc/opera@@{SUFFIX}/LICENSE
	"$@" NF c9996f43d681b457f038bfc8efeef28a share/doc/opera@@{SUFFIX}/README.gstreamer
	"$@" NF de63aa261020ad76060639c389ed5347 share/icons/hicolor/128x128/apps/opera@@{SUFFIX}-browser.png
	"$@" NF 272f6ee8bbad4dc7029d81286ca4763e share/icons/hicolor/128x128/mimetypes/opera@@{SUFFIX}-extension.png
	"$@" NF c55ae8742265ca2b40dac3ed40303a7f share/icons/hicolor/16x16/apps/opera@@{SUFFIX}-browser.png
	"$@" NF 87c5739d23920500c0815c88fcee8fb1 share/icons/hicolor/16x16/mimetypes/opera@@{SUFFIX}-extension.png
	"$@" NF 4d53865bfb951a749fee62a5035128dc share/icons/hicolor/22x22/apps/opera@@{SUFFIX}-browser.png
	"$@" NF b1aadfffe1a2a4cbc0769505f130f462 share/icons/hicolor/22x22/mimetypes/opera@@{SUFFIX}-extension.png
	"$@" NF 77084cec1838decd600f7b92495858b5 share/icons/hicolor/24x24/apps/opera@@{SUFFIX}-browser.png
	"$@" NF 70c1f737385a88bd616654ef23a187cc share/icons/hicolor/24x24/mimetypes/opera@@{SUFFIX}-extension.png
	"$@" NF d8eb8fe06b7ba0c101a0278019deee7b share/icons/hicolor/256x256/apps/opera@@{SUFFIX}-browser.png
	"$@" NF a3a1464a00ff085f94407307a0add221 share/icons/hicolor/32x32/apps/opera@@{SUFFIX}-browser.png
	"$@" NF 852841f582f95cabb04992397fcc97ce share/icons/hicolor/32x32/mimetypes/opera@@{SUFFIX}-extension.png
	"$@" NF 0309b637a3a808f2a127e343166814b5 share/icons/hicolor/48x48/apps/opera@@{SUFFIX}-browser.png
	"$@" NF 6b94ab4c0f32141dc889207cf3454c43 share/icons/hicolor/48x48/mimetypes/opera@@{SUFFIX}-extension.png
	"$@" NF fe9c0b034eb8961565ee0c19efecc2cd share/icons/hicolor/scalable/mimetypes/opera@@{SUFFIX}-extension.svg
	"$@" PF 9e77794dddb3e1a2cd4b48c63fa7145e share/man/man1/opera@@{SUFFIX}.1.gz
	"$@" PF a960b3c9c3fabecd6805a4b954d893e1 share/mime/packages/opera@@{SUFFIX}-extension.xml
	"$@" NF bb6bcd80ee65ca390375a33e9fdb798b share/opera@@{SUFFIX}/defaults/bookmarks.adr
	"$@" NF 8c82c67376cf11535d0be347051e0600 share/opera@@{SUFFIX}/defaults/dictionaries.xml
	"$@" NF be5b3d761bb4aae49722002eb95d0c89 share/opera@@{SUFFIX}/defaults/feedreaders.ini
	"$@" NF cd2c7135a4f91af45892a366bb5274c8 share/opera@@{SUFFIX}/defaults/filehandler.ini
	"$@" NF 47a53d099e890ff3d20fba89291d7edc share/opera@@{SUFFIX}/defaults/handlers-ignore.ini
	"$@" LL ../../doc/opera@@{SUFFIX}/LICENSE share/opera@@{SUFFIX}/defaults/license.txt
	"$@" NF 21f194f4410f210daf02534108e62b04 share/opera@@{SUFFIX}/defaults/mailproviders.xml
	"$@" NF 0cb4ac60c1cf45bd08ec4d5d62da5c02 share/opera@@{SUFFIX}/defaults/plugin-ignore.ini
	"$@" NF 140888cfeb603e37cb6de4845debbf8e share/opera@@{SUFFIX}/defaults/pluginpath.ini
	"$@" NF c923ad621572e7b42769079acf749132 share/opera@@{SUFFIX}/defaults/public_domains.dat
	"$@" NF 75b869ed8af9c551fcb587512cc4d9ec share/opera@@{SUFFIX}/defaults/search.ini
	"$@" NF 6634058c2f4467e55d1f4370bf4bea02 share/opera@@{SUFFIX}/defaults/standard_speeddial.ini
	"$@" NF a0f37c343f2dff930c6bcb5fcc0738e3 share/opera@@{SUFFIX}/defaults/standard_trusted_repositories.ini
	"$@" NF bd9d8babf17fab74b6ac921034e0c9fe share/opera@@{SUFFIX}/defaults/tips_metadata.ini
	"$@" NF 2ebcfaea7b12329317908592c5c372aa share/opera@@{SUFFIX}/defaults/webmailproviders.ini
	"$@" NF 5978ba5d3fa29bb0f5b210cc8aad57e1 share/opera@@{SUFFIX}/defaults/xmlentities.ini
	"$@" NF e3a1ffc014ea695e65823b924d0c459b share/opera@@{SUFFIX}/encoding.bin
	"$@" NF 54f1497ac9cc9ffa04d52213be260559 share/opera@@{SUFFIX}/extra/missingplugin.svg
	"$@" NF 17700f8a405a78dc1afdf69679a3f85b share/opera@@{SUFFIX}/extra/missingpluginhover.svg
	"$@" NF 0547d144b3de633887a8657de0ee1779 share/opera@@{SUFFIX}/extra/svg-mo.dat
	"$@" NF 6ee58550670e206dc93e1b31a7da2c9f share/opera@@{SUFFIX}/extra/svg-mobd.dat
	"$@" NF 0ab7eca84c071dac25dafd3b4569d80f share/opera@@{SUFFIX}/extra/svg-sa.dat
	"$@" NF 23059c42a43dceded9122d8834aa43fe share/opera@@{SUFFIX}/extra/svg-sabd.dat
	"$@" NF f3747a59108df781e04305b1bee29574 share/opera@@{SUFFIX}/extra/svg-se.dat
	"$@" NF bcdb530c010ed72fe6096d46366c57f5 share/opera@@{SUFFIX}/extra/svg-sebd.dat
	"$@" NF 56943cfea537f1cd3fda352f3fb48f3b share/opera@@{SUFFIX}/extra/unix-opengl.blocklist.json
	"$@" NF bbec0e74c125d92c1f182c3e985a4831 share/opera@@{SUFFIX}/files.sig
	"$@" NF 07691ad17c3fd15036b85c5fa416f34d share/opera@@{SUFFIX}/files_old.sig
	"$@" NF 7a2db2de5211ab16a6712e4168d17ec7 share/opera@@{SUFFIX}/html40_entities.dtd
	"$@" NF 605e7197db177408472e89e24503ee99 share/opera@@{SUFFIX}/html5_entity_init.dat
	"$@" NF 63827d48e764482a3dcfd678924f6fce share/opera@@{SUFFIX}/lngcode.txt
	"$@" NF 71f4d0bbab6b410ca638cb4d4f983d66 share/opera@@{SUFFIX}/locale/af/af.lng
	"$@" NF 848a0eb0de1e8e633b3dce959e3a6183 share/opera@@{SUFFIX}/locale/ar/ar.lng
	"$@" NF d11ff21abf8e99dab346b18379861cfc share/opera@@{SUFFIX}/locale/az/az.lng
	"$@" NF a8a3fca018f06ecc9f6ee11600dd2d8c share/opera@@{SUFFIX}/locale/be/be.lng
	"$@" NF 63653908ea880883635828c07d88a0b3 share/opera@@{SUFFIX}/locale/be/bookmarks.adr
	"$@" NF 28d29cbc7131158aa255f5387a5b7355 share/opera@@{SUFFIX}/locale/be/search.ini
	"$@" NF 20fa1eb6b5e88f42ead44c7019f735dc share/opera@@{SUFFIX}/locale/be/standard_speeddial.ini
	"$@" NF 312299c8d5cd232ffa9ad7b32df2f1bd share/opera@@{SUFFIX}/locale/bg/bg.lng
	"$@" NF 13c63b5f59f3e7aa2473d391057ea3d9 share/opera@@{SUFFIX}/locale/bg/bookmarks.adr
	"$@" NF 8f50e5bed48158b4b1ce9a3a5112342a share/opera@@{SUFFIX}/locale/bg/search.ini
	"$@" NF 27489309ca0a0c8316ba564455a1281a share/opera@@{SUFFIX}/locale/bg/standard_speeddial.ini
	"$@" NF 815be8ed0e9485ccd931adf48e25f4d3 share/opera@@{SUFFIX}/locale/bn/bn.lng
	"$@" NF 26bbdb72b403145887bcc3ff90125bf0 share/opera@@{SUFFIX}/locale/cs/bookmarks.adr
	"$@" NF dda16bf639999a493d0d7d9d849ed06a share/opera@@{SUFFIX}/locale/cs/cs.lng
	"$@" NF eba405dfcc1601cbeff472ed27c0dfe7 share/opera@@{SUFFIX}/locale/cs/search.ini
	"$@" NF bca9ddf506f0af7ab5e945a8fc1a0478 share/opera@@{SUFFIX}/locale/cs/standard_speeddial.ini
	"$@" NF 8dad3aaf1bf3759615d67290b720ed14 share/opera@@{SUFFIX}/locale/da/da.lng
	"$@" NF 3ef9a98802c30d6d4f99e04fcb62c018 share/opera@@{SUFFIX}/locale/de/bookmarks.adr
	"$@" NF 6bd24fe0aaad0aa401ffeed3ad51dc74 share/opera@@{SUFFIX}/locale/de/de.lng
	"$@" NF 03ea96d014fbde9aef3d9806b7a6b1f7 share/opera@@{SUFFIX}/locale/de/search.ini
	"$@" NF 71c575c281d7ac669e736a1b4b3430ba share/opera@@{SUFFIX}/locale/de/standard_speeddial.ini
	"$@" NF eb77c31b66ff8f5cf569dadb0478ec09 share/opera@@{SUFFIX}/locale/el/el.lng
	"$@" NF 42b226bab4022a74fdcbbb79f8f8e4a7 share/opera@@{SUFFIX}/locale/en-GB/en-GB.lng
	"$@" NF fed458248e0f858ec342ecbf3bd364d3 share/opera@@{SUFFIX}/locale/en/en.lng
	"$@" NF e6a54608b0e1b5d29c9dec405b629a80 share/opera@@{SUFFIX}/locale/en/en.zip
	"$@" LL ../../../doc/opera@@{SUFFIX}/LICENSE share/opera@@{SUFFIX}/locale/en/license.txt
	"$@" NF cb88c39d76d0ec5cefddcd12dc7b26ef share/opera@@{SUFFIX}/locale/es-ES/bookmarks.adr
	"$@" NF a3c1a8ac757d618924205aee627ca1c4 share/opera@@{SUFFIX}/locale/es-ES/es-ES.lng
	"$@" NF 5db683a461d67044e7d56474950491ab share/opera@@{SUFFIX}/locale/es-ES/search.ini
	"$@" NF 1c991a47c2fb0a7822b454ed318d56f4 share/opera@@{SUFFIX}/locale/es-ES/standard_speeddial.ini
	"$@" NF 17d6ccb1f1ee21d4e976661baa56c284 share/opera@@{SUFFIX}/locale/es-LA/es-LA.lng
	"$@" NF 6f1b0083c29c0ad1a069d8f88531fac5 share/opera@@{SUFFIX}/locale/et/et.lng
	"$@" NF a59df94c5986c40d32b016b2f104e14c share/opera@@{SUFFIX}/locale/fa/fa.lng
	"$@" NF ab717e0fab74b32e7b8a9f68f2f48d6f share/opera@@{SUFFIX}/locale/fi/fi.lng
	"$@" NF 7f364751fbcb78252fcec5b82f765ff9 share/opera@@{SUFFIX}/locale/fr-CA/fr-CA.lng
	"$@" NF 02cf7c8e7e5efc15034d6094a7ac31d9 share/opera@@{SUFFIX}/locale/fr/bookmarks.adr
	"$@" NF 805a1f775a9f5eb922ab674645092b12 share/opera@@{SUFFIX}/locale/fr/fr.lng
	"$@" NF 52d0461eadd5ad222a92be0981e8677e share/opera@@{SUFFIX}/locale/fr/search.ini
	"$@" NF f00308dc1c3420a74091ccfb8706e5c0 share/opera@@{SUFFIX}/locale/fr/standard_speeddial.ini
	"$@" NF 0da68b62df702308674aeb7471352103 share/opera@@{SUFFIX}/locale/fy/fy.lng
	"$@" NF ce8c5ffaadbe7a28950bfa1d2330e3e0 share/opera@@{SUFFIX}/locale/gd/gd.lng
	"$@" NF 951a6675e90ac8c1c3ed2f528e09b7f0 share/opera@@{SUFFIX}/locale/he/he.lng
	"$@" NF 4e36101fc53251201a5ec4ad24e2f1fc share/opera@@{SUFFIX}/locale/hi/hi.lng
	"$@" NF e0dc4c9853d7d96eafff0be4b91589cc share/opera@@{SUFFIX}/locale/hr/hr.lng
	"$@" NF a294d2fbf27fb9bd29b0d7922df71cd3 share/opera@@{SUFFIX}/locale/hu/bookmarks.adr
	"$@" NF 97529ea5893ecfc8fabd15353d26a2f8 share/opera@@{SUFFIX}/locale/hu/hu.lng
	"$@" NF 1bd4c7a20b7459170c399388af0fc095 share/opera@@{SUFFIX}/locale/hu/search.ini
	"$@" NF 5e22c7f6ca5297dd9d870177b1570199 share/opera@@{SUFFIX}/locale/hu/standard_speeddial.ini
	"$@" NF 2c253ac51dc77f3df58ecfb76805405c share/opera@@{SUFFIX}/locale/id/id.lng
	"$@" NF 38c3fdd58653b14260220aa00552f9a3 share/opera@@{SUFFIX}/locale/it/bookmarks.adr
	"$@" NF e499869ada0fb80bbed087eee7d78fb5 share/opera@@{SUFFIX}/locale/it/it.lng
	"$@" NF de1e048d7a668d35db5edbed2c207185 share/opera@@{SUFFIX}/locale/it/search.ini
	"$@" NF 3cdd5f24a5c7266e2de1b2f4a0289b23 share/opera@@{SUFFIX}/locale/it/standard_speeddial.ini
	"$@" NF b57e9fed9a0d9aee55a050a07e99eebf share/opera@@{SUFFIX}/locale/ja/bookmarks.adr
	"$@" NF a72256794b6c9819d36f382745893fac share/opera@@{SUFFIX}/locale/ja/ja.lng
	"$@" NF 8ada682bbd8c56378dbc61cfa9b98d5c share/opera@@{SUFFIX}/locale/ja/search.ini
	"$@" NF 1090fb75990f06e82e7a3899714e56f8 share/opera@@{SUFFIX}/locale/ja/standard_speeddial.ini
	"$@" NF 9b5fdcacf12d4b4a2a55d5264c6c71bb share/opera@@{SUFFIX}/locale/ka/ka.lng
	"$@" NF cd506fbb5be35177e21e7cf5db432cc6 share/opera@@{SUFFIX}/locale/kk/kk.lng
	"$@" NF 0752e3a45ed084bb7f5e6da51977571a share/opera@@{SUFFIX}/locale/ko/ko.lng
	"$@" NF 359df0f1920cdb4be9ee5ccd799b92a0 share/opera@@{SUFFIX}/locale/lt/lt.lng
	"$@" NF b1cbcb0ce6d54cd2d9d65001800f8b70 share/opera@@{SUFFIX}/locale/me/me.lng
	"$@" NF fbe94e6874f9385588e12660f97d0375 share/opera@@{SUFFIX}/locale/mk/mk.lng
	"$@" NF 7b6aff231b265f4a95a2ccb47ee6882e share/opera@@{SUFFIX}/locale/ms/ms.lng
	"$@" NF 4decd9c9ecb1651ce8c8083c3ff1e7d2 share/opera@@{SUFFIX}/locale/nb/bookmarks.adr
	"$@" NF df467a7e32ecbec784dea7a3623a4987 share/opera@@{SUFFIX}/locale/nb/nb.lng
	"$@" NF c7131874a1a7442033bb0791648b5795 share/opera@@{SUFFIX}/locale/nb/search.ini
	"$@" NF ff7c88374d33ca67c38821082e64bcbe share/opera@@{SUFFIX}/locale/nb/standard_speeddial.ini
	"$@" NF a7743c0692b37f522d755f2a3bd52650 share/opera@@{SUFFIX}/locale/nl/nl.lng
	"$@" NF 7655e2d7eacee5addd3d35038ba4e2c1 share/opera@@{SUFFIX}/locale/nn/nn.lng
	"$@" NF d7d9d35f6c3b0cc56eed5059b9b4641b share/opera@@{SUFFIX}/locale/pa/pa.lng
	"$@" NF f2a046e38d5404fefc470a237c5ac279 share/opera@@{SUFFIX}/locale/pl/bookmarks.adr
	"$@" NF 326b6f07783e2085795d490ed80bd69f share/opera@@{SUFFIX}/locale/pl/pl.lng
	"$@" NF ecf3b8cb23c66eca41c459b4ba44243a share/opera@@{SUFFIX}/locale/pl/search.ini
	"$@" NF 74b5a6ecba2418eddfd2e53b4bbde995 share/opera@@{SUFFIX}/locale/pl/standard_speeddial.ini
	"$@" NF c902747fa5946b0b82ee233d7ea438de share/opera@@{SUFFIX}/locale/pt-BR/bookmarks.adr
	"$@" NF ee4f5da42bf7ecaaa69f4d143f6b10ce share/opera@@{SUFFIX}/locale/pt-BR/pt-BR.lng
	"$@" NF dba31b21eaf5eeedd0df319dc27ad620 share/opera@@{SUFFIX}/locale/pt-BR/search.ini
	"$@" NF 46e7d0980c6ba48136e2324f4a9016f1 share/opera@@{SUFFIX}/locale/pt-BR/standard_speeddial.ini
	"$@" NF eb95f043199eb63faf37de28ed64969d share/opera@@{SUFFIX}/locale/pt/pt.lng
	"$@" NF 97eca42dd07776100d82266ac3d62387 share/opera@@{SUFFIX}/locale/ro/bookmarks.adr
	"$@" NF 1942e6005a7aa3bee5cdee6b24f47f19 share/opera@@{SUFFIX}/locale/ro/ro.lng
	"$@" NF 8fbae1741761859112014d366b0fbbc3 share/opera@@{SUFFIX}/locale/ro/search.ini
	"$@" NF b1581b0a01ff4d57156a237c1f023719 share/opera@@{SUFFIX}/locale/ro/standard_speeddial.ini
	"$@" NF 1bbc1636cdade0bd710aa072d1a8e4fe share/opera@@{SUFFIX}/locale/ru/bookmarks.adr
	"$@" NF 89c351460f1462da3784dbc704b6c0d9 share/opera@@{SUFFIX}/locale/ru/ru.lng
	"$@" NF 2761973a0c741703f5bf0262c7d3d139 share/opera@@{SUFFIX}/locale/ru/search.ini
	"$@" NF b9829bbf44178329a1fb9e9f32096f16 share/opera@@{SUFFIX}/locale/ru/standard_speeddial.ini
	"$@" NF 231d5b14243dbe53082cf334d43247f9 share/opera@@{SUFFIX}/locale/sk/bookmarks.adr
	"$@" NF 6b5b46199bd07a2b25d9d97ce80ca0d6 share/opera@@{SUFFIX}/locale/sk/search.ini
	"$@" NF cdcf67603c932963b24800e66b2c9e77 share/opera@@{SUFFIX}/locale/sk/sk.lng
	"$@" NF 23e8307594a8b4ef65e095291b06ccf5 share/opera@@{SUFFIX}/locale/sk/standard_speeddial.ini
	"$@" NF fc29ab7506847d069c7f6a0f97f5f8fd share/opera@@{SUFFIX}/locale/sr/bookmarks.adr
	"$@" NF 5a080eefdc493cc040b7b34477dea045 share/opera@@{SUFFIX}/locale/sr/search.ini
	"$@" NF 04e4f7e7640f22f26ff1553949345d87 share/opera@@{SUFFIX}/locale/sr/sr.lng
	"$@" NF 5339815ce2134793a5c303edb56007c8 share/opera@@{SUFFIX}/locale/sr/standard_speeddial.ini
	"$@" NF 0be27d9746d2922ae0fe68e2661e2e95 share/opera@@{SUFFIX}/locale/sv/sv.lng
	"$@" NF 4c94780db3299aea1ead3079073ceb04 share/opera@@{SUFFIX}/locale/sw/sw.lng
	"$@" NF 0976a6129a2dffbba6184b0f485008b0 share/opera@@{SUFFIX}/locale/ta/ta.lng
	"$@" NF 97dcda692f371994c2cec7bc000ed065 share/opera@@{SUFFIX}/locale/te/te.lng
	"$@" NF 2e76bc3787f342eb6004d771856a6043 share/opera@@{SUFFIX}/locale/th/th.lng
	"$@" NF 72a1dc5c32f3e77f4349c9d3be732bbc share/opera@@{SUFFIX}/locale/tl/tl.lng
	"$@" NF d2a9bc2799197a990bba0c32779216b7 share/opera@@{SUFFIX}/locale/tr/bookmarks.adr
	"$@" NF 0c26c108dbc1354268dde7a249e55d59 share/opera@@{SUFFIX}/locale/tr/search.ini
	"$@" NF adb363c6c73e81e84010f8c517f4bac2 share/opera@@{SUFFIX}/locale/tr/standard_speeddial.ini
	"$@" NF 7df425e1e888cd7d4bed98b196394a0f share/opera@@{SUFFIX}/locale/tr/tr.lng
	"$@" NF 7703fabb62fa896a01be1975b3ddac5d share/opera@@{SUFFIX}/locale/uk/bookmarks.adr
	"$@" NF 99249fd570ea8c02ac2b8ea493e60d20 share/opera@@{SUFFIX}/locale/uk/search.ini
	"$@" NF d1bbc9be75a79080191409c33419dbe5 share/opera@@{SUFFIX}/locale/uk/standard_speeddial.ini
	"$@" NF fe9a754483d7f1254610f81c392610a1 share/opera@@{SUFFIX}/locale/uk/uk.lng
	"$@" NF d0f749093ef4a15f8f51f0a970004f7d share/opera@@{SUFFIX}/locale/ur/ur.lng
	"$@" NF 12597beff4a4455bb26670b1ca12e90e share/opera@@{SUFFIX}/locale/uz/uz.lng
	"$@" NF 7e1290061a7a25248ef2c903645dc722 share/opera@@{SUFFIX}/locale/vi/vi.lng
	"$@" NF 58349d9bc0afb0f58610c806bd446501 share/opera@@{SUFFIX}/locale/zh-cn/bookmarks.adr
	"$@" NF 7c2a4114af511f8f64f3caa4c1e1ef4d share/opera@@{SUFFIX}/locale/zh-cn/search.ini
	"$@" NF d09cc5e0fd301d5553ca7f11f990a8ba share/opera@@{SUFFIX}/locale/zh-cn/standard_speeddial.ini
	"$@" NF 2e56ac7915e8ff890e99e30a941015b1 share/opera@@{SUFFIX}/locale/zh-cn/zh-cn.lng
	"$@" NF 72c7c3e704ab3788a564ad2bbdd68d0d share/opera@@{SUFFIX}/locale/zh-tw/zh-tw.lng
	"$@" NF 9877a5f6b0db2e4df92330fefdfd29c4 share/opera@@{SUFFIX}/locale/zu/zu.lng
	"$@" NF 1c24deadc6027ab1b7a2cecc7b7c00e4 share/opera@@{SUFFIX}/mathml.dtd
	"$@" NF 9c6381c237621248e1c210698fed7ebf share/opera@@{SUFFIX}/package-id.ini
	"$@" NF 4b9efdff0eac7dee1c7250668186d1aa share/opera@@{SUFFIX}/pubsuffix.xml
	"$@" NF 4c4579461e14575f9f1004767ef35454 share/opera@@{SUFFIX}/region/cis/en/bookmarks.adr
	"$@" NF de4f0710a7cb00faa4eb986b377c22a7 share/opera@@{SUFFIX}/region/cis/en/search.ini
	"$@" NF 6dd5fbe2392946f5bd59f72c4c51d18d share/opera@@{SUFFIX}/region/cis/en/standard_speeddial.ini
	"$@" NF 1bbc1636cdade0bd710aa072d1a8e4fe share/opera@@{SUFFIX}/region/cis/ru/bookmarks.adr
	"$@" NF 2761973a0c741703f5bf0262c7d3d139 share/opera@@{SUFFIX}/region/cis/ru/search.ini
	"$@" NF b9829bbf44178329a1fb9e9f32096f16 share/opera@@{SUFFIX}/region/cis/ru/standard_speeddial.ini
	"$@" NF 20a0adeb34cb1a35a976d09b37425ea3 share/opera@@{SUFFIX}/region/cn/browser.js
	"$@" NF 6c76f12f5c2112f508424338525889c3 share/opera@@{SUFFIX}/region/cn/en/bookmarks.adr
	"$@" NF 1c068dea16f390bdb63afe6b80d8f6d6 share/opera@@{SUFFIX}/region/cn/en/search.ini
	"$@" NF 52394efda8425173a039778bf5c186a4 share/opera@@{SUFFIX}/region/cn/en/standard_speeddial.ini
	"$@" NF d44fc31b4c96a97d22624455874764ca share/opera@@{SUFFIX}/region/cn/turbosettings.xml
	"$@" NF 79be6ccd0edb1a3026171d2469bda1ce share/opera@@{SUFFIX}/region/gb/bookmarks.adr
	"$@" NF 03b593fe38c84cfef7c065a857b91dbe share/opera@@{SUFFIX}/region/gb/search.ini
	"$@" NF b61d6c740c752c1251e1962ad3a2514f share/opera@@{SUFFIX}/region/gb/standard_speeddial.ini
	"$@" NF 20a0adeb34cb1a35a976d09b37425ea3 share/opera@@{SUFFIX}/region/hk/browser.js
	"$@" NF 6ea2f98cdeaf54c398dca24aea9df644 share/opera@@{SUFFIX}/region/hk/turbosettings.xml
	"$@" NF 0205ad77436aacedb70344bbb4895743 share/opera@@{SUFFIX}/region/id/bookmarks.adr
	"$@" NF 6fe5f57417492e2cd774b705013b03c7 share/opera@@{SUFFIX}/region/id/search.ini
	"$@" NF fb1677b86ee1f76fda99d96c5fd007ac share/opera@@{SUFFIX}/region/id/standard_speeddial.ini
	"$@" NF b646d40d4f8b66814db5409d92f8913e share/opera@@{SUFFIX}/region/in/bookmarks.adr
	"$@" NF ca20d3cd97540dac008652873222585e share/opera@@{SUFFIX}/region/in/search.ini
	"$@" NF 0ead23a194891407e54b81bf4c4c4aa2 share/opera@@{SUFFIX}/region/in/standard_speeddial.ini
	"$@" NF 1c5d6c8b146083a7fab216fa957100ca share/opera@@{SUFFIX}/region/latin_america/bookmarks.adr
	"$@" NF c63f2ff2634d627f89d8953b707bf850 share/opera@@{SUFFIX}/region/latin_america/search.ini
	"$@" NF 03e4c00a1739286e55a07b4dd3445bbf share/opera@@{SUFFIX}/region/latin_america/standard_speeddial.ini
	"$@" NF 1b558b4fd0f49e9c2cc69b4f73a52d1b share/opera@@{SUFFIX}/region/middle_east/bookmarks.adr
	"$@" NF 023664e53056292d04ba24eb3838e0ed share/opera@@{SUFFIX}/region/middle_east/search.ini
	"$@" NF 55b2a5de840b0b946f5268f8a46958a8 share/opera@@{SUFFIX}/region/middle_east/standard_speeddial.ini
	"$@" NF 43844be22de77483ffb5bcd296dca2b0 share/opera@@{SUFFIX}/region/ng/bookmarks.adr
	"$@" NF 7cdbde2526023d48cd4b590d89ccd61b share/opera@@{SUFFIX}/region/ng/standard_speeddial.ini
	"$@" NF 38ae98d733a9d5ac4e26926bf8b71c60 share/opera@@{SUFFIX}/region/ph/bookmarks.adr
	"$@" NF 45eed9a81f32c23cc605861ec5852542 share/opera@@{SUFFIX}/region/ph/standard_speeddial.ini
	"$@" NF 035b933e85acb20dd2f0202e910c7967 share/opera@@{SUFFIX}/region/pk/bookmarks.adr
	"$@" NF c798e74187d343237d870331032e973b share/opera@@{SUFFIX}/region/pk/standard_speeddial.ini
	"$@" NF 917c9eb214a99fb7a8a84a9055c74b1c share/opera@@{SUFFIX}/region/region.ini
	"$@" NF 20a0adeb34cb1a35a976d09b37425ea3 share/opera@@{SUFFIX}/region/tw/browser.js
	"$@" NF 6ea2f98cdeaf54c398dca24aea9df644 share/opera@@{SUFFIX}/region/tw/turbosettings.xml
	"$@" NF d2d71ff4261009f009354f551c3c8df3 share/opera@@{SUFFIX}/region/ua/ru/bookmarks.adr
	"$@" NF 3958bf1777edc4b00de04e02663c9b36 share/opera@@{SUFFIX}/region/ua/ru/search.ini
	"$@" NF 7b5e8a1a3dd67afc73c260c8d6fcd17c share/opera@@{SUFFIX}/region/ua/ru/standard_speeddial.ini
	"$@" NF 3a14f12366c93b1d1a6290b4de817e29 share/opera@@{SUFFIX}/region/us/bookmarks.adr
	"$@" NF 895b6e1530230843a344535cbb5b504c share/opera@@{SUFFIX}/region/us/search.ini
	"$@" NF 97795e1ef381c73b69c132b38e732fde share/opera@@{SUFFIX}/region/us/standard_speeddial.ini
	"$@" NF 9053a4a59c5cd4faec176f90b9bcb550 share/opera@@{SUFFIX}/region/vn/bookmarks.adr
	"$@" NF 3a4f9948457b292c651fdee119bf2369 share/opera@@{SUFFIX}/region/vn/standard_speeddial.ini
	"$@" NF 84a2ce6fce77aea658ffe977416d8820 share/opera@@{SUFFIX}/skin/standard_skin.zip
	"$@" NF baa84a754c70f4cb03da7213bc6eaf13 share/opera@@{SUFFIX}/skin/unix_skin.zip
	"$@" NF 06820e6bdd581b0a257e5e2648360457 share/opera@@{SUFFIX}/styles/about.css
	"$@" NF 4fb7c857524fd084449266fc70e9288b share/opera@@{SUFFIX}/styles/cache.css
	"$@" NF 51738dfa1066ca0716150a59929fd4ce share/opera@@{SUFFIX}/styles/certinfo.css
	"$@" NF 97c7f3283126641f1475e837ada86ff9 share/opera@@{SUFFIX}/styles/config.css
	"$@" NF 27249ef2c359eb6f207179f0c76214ba share/opera@@{SUFFIX}/styles/contentblock.css
	"$@" NF 2dd0225e4fbd3fe9edaf421044ba8faa share/opera@@{SUFFIX}/styles/cpu.css
	"$@" NF 3ddaf96398ae99245f6b83e6dc676ac6 share/opera@@{SUFFIX}/styles/debug.css
	"$@" NF 056873687942e8aad4f0f297c1d4a57b share/opera@@{SUFFIX}/styles/dir.css
	"$@" NF 79c01252e90d910288692766fdab6432 share/opera@@{SUFFIX}/styles/error.css
	"$@" NF e2fe058194b04269a874420d76ed9261 share/opera@@{SUFFIX}/styles/feed.css
	"$@" NF f509942e9a8d26751512e6aed72bd78b share/opera@@{SUFFIX}/styles/gpu.css
	"$@" NF e9ee42b5c66c0367c1e02a1eeeca0776 share/opera@@{SUFFIX}/styles/history.css
	"$@" NF 12f94765c2868077a49c69c47a546e43 share/opera@@{SUFFIX}/styles/im.css
	"$@" NF df384ae925f810d03d84dadf96b5beb1 share/opera@@{SUFFIX}/styles/image.css
	"$@" NF 73b840d67b16a49008b7ed3d6aec38ab share/opera@@{SUFFIX}/styles/images/Opera_256x256.png
	"$@" NF b769d1013cf6d688b39c36a5e72da222 share/opera@@{SUFFIX}/styles/images/arrow.png
	"$@" NF 35a8968b802c4cd66f70631354cec397 share/opera@@{SUFFIX}/styles/images/bar.png
	"$@" NF 2e242ddd9c9679c584b0fe430b8948cf share/opera@@{SUFFIX}/styles/images/bkgd-rev.png
	"$@" NF b133b79753e118bafa077c594ed22724 share/opera@@{SUFFIX}/styles/images/bkgd.png
	"$@" NF 4289d8db3e0ad4cb825d34c969c142ff share/opera@@{SUFFIX}/styles/images/bullet.png
	"$@" NF cbdbb7032558dae6b04f7691c4b8a41a share/opera@@{SUFFIX}/styles/images/center.png
	"$@" NF 669d3ef423184869eb24b29500330b06 share/opera@@{SUFFIX}/styles/images/container.png
	"$@" NF b423f4149c868ccf56a15abb83228f09 share/opera@@{SUFFIX}/styles/images/customize.gif
	"$@" NF e715da6d7e5314261bdff2942251718a share/opera@@{SUFFIX}/styles/images/darkBox.png
	"$@" NF 0dfc37ae4404b4a6811e4876db6b7df1 share/opera@@{SUFFIX}/styles/images/defaultFavicon.png
	"$@" NF 71bbdb354d7e65183c86aa36a27ddd1d share/opera@@{SUFFIX}/styles/images/error.png
	"$@" NF ac4455a870ed9d5365377c2d9566240c share/opera@@{SUFFIX}/styles/images/file.png
	"$@" NF 86c6ac920bd2fbb7f538ff79d4e34395 share/opera@@{SUFFIX}/styles/images/flag.png
	"$@" NF c6ee6872a8d70dbec976edd11bdaf986 share/opera@@{SUFFIX}/styles/images/folder.png
	"$@" NF 9b0cdaf9d7623041bd00e576cd1733f1 share/opera@@{SUFFIX}/styles/images/hanger.png
	"$@" NF 807f783c2043b0ff19471459cb52ad14 share/opera@@{SUFFIX}/styles/images/opera-icon-red.png
	"$@" NF a2ed905f3862c320bb43e866721729d7 share/opera@@{SUFFIX}/styles/images/opera.png
	"$@" NF dbb6d41150a244186500718eda971047 share/opera@@{SUFFIX}/styles/images/page-bot.png
	"$@" NF d58ef56a726e38bb51da5adf696153fc share/opera@@{SUFFIX}/styles/images/red_center.png
	"$@" NF 3c6c895d2519efa918b4b3f46a897b67 share/opera@@{SUFFIX}/styles/images/red_left.png
	"$@" NF a28ba91c09ea75605d727e9bde7771b1 share/opera@@{SUFFIX}/styles/images/red_right.png
	"$@" NF a0c5f8a66f4e25f5d16ca1696a8f2e03 share/opera@@{SUFFIX}/styles/images/root.png
	"$@" NF 4aecd261352501fa1bad2c5e608df556 share/opera@@{SUFFIX}/styles/images/search.png
	"$@" NF b641cb9df6a4065ec64e6aac43cd5bc8 share/opera@@{SUFFIX}/styles/images/section.png
	"$@" NF 62f6287d95fafa0a8c56287e41760f33 share/opera@@{SUFFIX}/styles/images/smartGroup.png
	"$@" NF 2dab1572b02772c7a4fea3b5d51d1c48 share/opera@@{SUFFIX}/styles/images/tooltiptail.png
	"$@" NF f4dbc8a7b78e98448ad509bedca371c1 share/opera@@{SUFFIX}/styles/images/top.png
	"$@" NF 074b5a2c5386b6f2d12d172aa2f349fa share/opera@@{SUFFIX}/styles/images/warning.png
	"$@" NF abdfd39692029c4dc15cc1225ab370cb share/opera@@{SUFFIX}/styles/info.css
	"$@" NF 7e50dc0a9e8768200ff985d6bfdc82d1 share/opera@@{SUFFIX}/styles/m2_upgrade_1160.mbs
	"$@" NF d3a28fb58cad1e1a0136cc8e4e8e8a19 share/opera@@{SUFFIX}/styles/m2_welcome_message.mbs
	"$@" NF 3d3c384bea83a19f7a2fb4016f176c78 share/opera@@{SUFFIX}/styles/mail.css
	"$@" NF 6e52a17228623ab69e767b8973c73789 share/opera@@{SUFFIX}/styles/mathml.css
	"$@" NF 73ca40c23f00b5b8045c1db8e0d2310f share/opera@@{SUFFIX}/styles/media.css
	"$@" NF e7dd3d81e0088d5fb56df880226cc7e1 share/opera@@{SUFFIX}/styles/message.css
	"$@" NF 1189257aa17297e67357e40c14bcc814 share/opera@@{SUFFIX}/styles/mime.css
	"$@" NF 9ecedfab380a20e0de3c47f62b322b7c share/opera@@{SUFFIX}/styles/opera.css
	"$@" NF d454348a805830bb78124b2f522f69d6 share/opera@@{SUFFIX}/styles/plugins.css
	"$@" NF 71c1d1774ad2319d1684854cdf5f94c2 share/opera@@{SUFFIX}/styles/private.css
	"$@" NF 028e214f2f1147678d50afc03705e7de share/opera@@{SUFFIX}/styles/search.css
	"$@" NF 4a1307a5ef44ce6f2699910d68353aaf share/opera@@{SUFFIX}/styles/unstyledxml.css
	"$@" NF 6a2bd73028a115965e2a8ab449f076b1 share/opera@@{SUFFIX}/styles/user/accessibility.css
	"$@" NF 7101c2b43e206a4fea3ea3b2e9d1ec65 share/opera@@{SUFFIX}/styles/user/altdebugger.css
	"$@" NF a1b473182a7f49252ca4092d4e3771e8 share/opera@@{SUFFIX}/styles/user/classid.css
	"$@" NF 2310bf5751a3d7e559a475146c15e133 share/opera@@{SUFFIX}/styles/user/contrastbw.css
	"$@" NF 49f63ead21d30601ec7d78ee8a979e05 share/opera@@{SUFFIX}/styles/user/contrastwb.css
	"$@" NF 0ddf795df3cd231834e7d3949f79d14b share/opera@@{SUFFIX}/styles/user/disablebreaks.css
	"$@" NF 290e3323bb78b510f46778cffc3e496a share/opera@@{SUFFIX}/styles/user/disablefloats.css
	"$@" NF b1213dc22de822fbbb54de3a77fde99b share/opera@@{SUFFIX}/styles/user/disableforms.css
	"$@" NF 2d4d9ffb55079767b3def4fcec29b011 share/opera@@{SUFFIX}/styles/user/disablepositioning.css
	"$@" NF b9c59fe668608bfc3c63c50f65b8298e share/opera@@{SUFFIX}/styles/user/disabletables.css
	"$@" NF a78c1f82b4028dc6cb954562b5f54833 share/opera@@{SUFFIX}/styles/user/outline.css
	"$@" NF abc6abdf3fb4a7b891e473c35f26d8ad share/opera@@{SUFFIX}/styles/user/structureblock.css
	"$@" NF ab99f3deacaa836a440f47851b2bb5ca share/opera@@{SUFFIX}/styles/user/structureinline.css
	"$@" NF 10a7bccf3d937c7a2b7efd79c3071cdc share/opera@@{SUFFIX}/styles/user/structuretables.css
	"$@" NF 8a0cb82243918b7952f09f29d0d7f104 share/opera@@{SUFFIX}/styles/user/tablelayout.css
	"$@" NF 30987a9dba87e7c4b2a56afabff5b9f5 share/opera@@{SUFFIX}/styles/user/toc.css
	"$@" NF b7a538b2531b94aa2b8c1b6d0676c167 share/opera@@{SUFFIX}/styles/warning.css
	"$@" NF a3a2d380e96de00e59628ca99ebba6d1 share/opera@@{SUFFIX}/styles/webfeeds.html
	"$@" NF 06820e6bdd581b0a257e5e2648360457 share/opera@@{SUFFIX}/styles/webstorage.css
	"$@" NF 71b60351587330f9c6f9121895b34a17 share/opera@@{SUFFIX}/styles/wml.css
	"$@" NF 4594c86735b8b8a4e8b4e8bc7bbf1fea share/opera@@{SUFFIX}/ui/dialog.ini
	"$@" NF a45e8ffa374786e6103e8356a71a5179 share/opera@@{SUFFIX}/ui/dialogs.yml
	"$@" NF e6d9e74c12773dcf0d6a195b6b9e78ac share/opera@@{SUFFIX}/ui/fastforward.ini
	"$@" NF 13b74ea198db9a02966002fa582aa3ea share/opera@@{SUFFIX}/ui/standard_keyboard.ini
	"$@" NF dc871c71e8233582efa29f2434488ecf share/opera@@{SUFFIX}/ui/standard_keyboard_compat.ini
	"$@" NF 01200b122fbfbf827ad51b45d5857393 share/opera@@{SUFFIX}/ui/standard_menu.ini
	"$@" NF bbf3da1a74e1620fe798b58d79e79ebd share/opera@@{SUFFIX}/ui/standard_mouse.ini
	"$@" NF 10acdeb61340e952ff355bc644c8d297 share/opera@@{SUFFIX}/ui/standard_toolbar.ini
	"$@" NF ace96e32dce51188619efa4af8765023 share/opera@@{SUFFIX}/ui/unix_keyboard.ini
	"$@" NF fa3f766bd47f87d1af4a22e6018d1da5 share/opera@@{SUFFIX}/ui/widgets.yml
}

available()
{
	command -v "$1" >/dev/null 2>&1
}

finalize_desktop()
{
	# Menu entries
	if available update-desktop-database
	then
		update-desktop-database $PREFIX/share/applications
	fi

	# MIME associations
	if available update-mime-database
	then
		mkdir -p $PREFIX/share/mime/packages
		update-mime-database $PREFIX/share/mime
		! rmdir $PREFIX/share/mime/packages >/dev/null 2>&1
	fi

	# Icons
	touch -c $PREFIX/share/icons/hicolor
	if available update-icon-caches
	then
		update-icon-caches -tq $PREFIX/share/icons/hicolor
	elif available gtk-update-icon-cache
	then
		gtk-update-icon-cache -tq $PREFIX/share/icons/hicolor
	fi
}

make_tempdir()
{
	if [ -z "$tempdir" ]
	then
		tempdir=$(mktemp -d -t opera-install.XXXXXXXX)
		if [ $? != 0 ]
		then
			ui_error "Cannot create a temporary directory, please set TMPDIR correctly"
		fi
	fi
}

cleanup()
{
	res=$?
	trap - 0
	if [ $res -gt 0 ] && $need_rollback
	then
		rollback
	fi
	if $need_ui_cleanup
	then
		ui_cleanup
	fi
	if [ -n "$tempdir" ]
	then
		rm -rf $tempdir
	fi
	exit $res
}

ui_widget()
{
	local width height
	message=$(
		echo "$2"
		if [ -n "$3" ]
		then
			echo
			cat "$3"
		fi
		if [ -n "$4" ]
		then
			echo
			echo "$4"
		fi
	)
	case $driver in
		dialog|whiptail)
			width=72
			if available fmt
			then
				message=$(echo "$message" | fmt -w $((width - 4)))
				height=$(($(echo "$message" | wc -l) + 6))
				if [ $1 = inputbox ]
				then
					height=$((height + 2))
				fi
			else
				height=20
			fi
			;;
	esac
	need_ui_cleanup=true
	case $driver in
		dialog|whiptail)
			exec 4>&1
			answer=$($driver --title "$windowtitle" --clear --$1 "$message" $height $width 2>&1 1>&4)
			res=$?
			exec 4>&-
			;;
		plain)
			echo
			echo "$message"
			case $1 in
				yesno)
					while true
					do
						read -p 'Please enter Y or N: ' answer
						case "$answer" in
							y*|Y*)
								res=0
								break
								;;
							n*|N*)
								res=1
								break
								;;
						esac
					done
					;;
				inputbox)
					read -p '>' answer
					;;
				msgbox|infobox)
					res=0
					;;
			esac
			;;
	esac
	need_ui_cleanup=false
	return $res
}

ui_info()
{
	ui_widget infobox "$@"
}

ui_message()
{
	ui_widget msgbox "$@"
}

ui_warn()
{
	ui_widget yesno "$1" "$2" 'Continue?' || exit
}

ui_error()
{
	ui_widget msgbox "$1" "$2" 'Installation aborted.'
	exit 1
}

ui_input()
{
	ui_widget inputbox "$1" "$2" ''
}

ui_menu()
{
	local text width height
	case $driver in
		dialog|whiptail)
			width=72
			if available fmt
			then
				height=$(($(echo "$text" | fmt -w $((width - 4)) | wc -l) + $# / 2 + 8))
			else
				height=20
			fi
			;;
	esac
	need_ui_cleanup=true
	case $driver in
		dialog|whiptail)
			text=$1
			shift
			exec 4>&1
			answer=$($driver --menu "$text" $height $width $(($# / 2)) "$@" 2>&1 1>&4) || exit
			res=$?
			exec 4>&-
			;;
		plain)
			echo
			echo "$1"
			shift
			(
				n=1
				while [ -n "$1" ]
				do
					echo "[$n] $2"
					n=$((n + 1))
					shift 2
				done
			)
			while true
			do
				read -p "Your choice: " answer
				if echo "$answer" | grep -q '^[0-9][0-9]*$' && [ $((answer >= 1)) = 1 ] && [ $((answer <= $# / 2)) = 1 ]
				then
					break
				fi
				echo "Please enter an integer between 1 and $(($# / 2))."
			done
			shift $((answer * 2 - 2))
			answer="$1"
			res=0
			;;
	esac
	need_ui_cleanup=false
	return $res
}

ui_progress_begin()
{
	if ! $talk
	then
		return
	fi
	if [ -z "$progress_max" ]
	then
		progress_max=$(iterate echo | wc -l)
	fi
	progress_cur=0
	need_ui_cleanup=true
	case $driver in
		whiptail)
			make_tempdir
			mkfifo $tempdir/gauge
			whiptail --gauge "$1" 0 72 0 <$tempdir/gauge &
			exec 3>$tempdir/gauge
			;;
		*)
			echo
			echo -n "$1"
			;;
	esac
}

ui_progress_advance()
{
	if ! $talk
	then
		return
	fi
	progress_cur=$((progress_cur + 1))
	case $driver in
		whiptail)
			echo $((progress_cur * 100 / progress_max)) >&3
			;;
		*)
			echo -n '.'
			;;
	esac
}

ui_progress_end()
{
	if ! $talk
	then
		return
	fi
	case $driver in
		whiptail)
			exec 3>&-
			rm $tempdir/gauge
			;;
		*)
			echo 'done'
			;;
	esac
	need_ui_cleanup=false
}

ui_cleanup()
{
	case $driver in
		dialog)
			exec 4>&-
			dialog --clear
			stty sane
			clear
			;;
		whiptail)
			exec 3>&- 4>&-
			stty sane
			clear
			;;
		plain)
			echo
			;;
	esac
}

ui_init()
{
	if [ -z "$TERM" -o "$TERM" = dumb ]
	then
		driver=plain
	elif available whiptail && [ "$(whiptail --version)" != 'whiptail (newt): 0.52.13' ]
	then
		driver=whiptail
	elif available dialog
	then
		driver=dialog
	else
		driver=plain
	fi
	answer=''
	progress_max=''
	windowtitle="$1"
}

common_init()
{
	interactive=true
	talk=true
	force=false
	need_rollback=false
	need_ui_cleanup=false
	repackage=false
	tempdir=''

	trap cleanup 0 INT QUIT TERM
}

common_opt()
{
	case "$1" in
		--text)
			driver=plain
			;;
		--unattended)
			interactive=false
			driver=plain
			;;
		--quiet)
			talk=false
			interactive=false
			driver=plain
			;;
		--force)
			force=true
			;;
		*)
			return 1
	esac
}

# EOF_COMMON

version()
{
	ui_message "Opera - Fast and secure web browser and Internet suite

Opera is a small, fast, customizable, powerful and user-friendly web
browser, as well as an Internet suite, including an email client, an IRC
client, and web developer tools (Opera Dragonfly).

This script installs Opera 12.00 build 1467 for Linux on i386.

Copyright (c) 1995-2012 Opera Software ASA. All rights reserved."
}

usage()
{
	version
	cat <<EOF

Options:

    --text          Select plain-text user interface.

    --unattended    Ask no questions. Implies --text.
                    The --prefix option becomes mandatory.

    --quiet         Ask no questions and don't show progress.
                    Implies --text.

    --prefix /P     Specify installation directory. Opera will be
                    installed into /P/bin, /P/share and /P/lib.

    --user          Install for the current user. Default for non-root.
                    Alias for --prefix $HOME/.local.

    --system        Install for everybody. Default for root.
                    Alias for --prefix /usr/local.

    --name N        Use N for package name. Must either be "opera" or
                    begin with "opera-". Names of installed files and
                    directories will contain this string in place of
                    "opera". This allows to install several
                    versions of Opera side by side. The default is
                    "opera".

    --suffix S      Obsolete. Same as --name opera-S.

    --force         Ignore all kinds of errors and try to continue.

    --repackage R   Special mode for package maintainers. Extract files
                    into the staging directory R as if it were the
                    installation prefix, but prepare them to be
                    installed under the actual prefix. In this mode, no
                    finalizing actions, such as registration of menu
                    entries, are performed. Sanity checks are disabled.
                    Implies --unattended.

    --version       Show Opera version.

    --help          Show this message.
EOF
}

check_os()
{
	local name version arch res msg
	res=false
	name=$(uname -s)
	case "$name" in
		Linux)
			res=true
			;;
		*BSD)
			;;
	esac
	arch=$(uname -m)
	case "$arch" in
		i?86|i86pc)
			arch=i386
			;;
		amd64)
			arch=x86_64
			;;
	esac
	if [ "$arch" != i386 ]
	then
		res=false
	fi
	if ! $res
	then
		msg="You are running $name on $arch, but this package is intended for Linux on i386. If you choose to install it, the product may not work correctly."
		if $interactive
		then
			ui_warn "$msg"
		else
			ui_error "$msg"
		fi
	fi
}

check_package_manager()
{
	if available dpkg
	then
		ui_warn "Your system seems to support Debian-style packages. You might want to download and install a Debian package of Opera instead."
	elif available rpm
	then
		ui_warn "Your system seems to support RPM packages. You might want to download and install an RPM package of Opera instead."
	fi
}

install_file()
{
	local source dest existing tomake
	if [ -f $tempdir/damaged ] && ! $force
	then
		return 1
	fi
	source=$(use_suffix '' "$3")
	dest=$INTO/$(use_suffix "$SUFFIX" "$3")
	existing=$dest
	tomake=''
	while [ -n "$existing" -a ! -e "$existing" ]
	do
		tomake=$existing
		existing=${existing%/*}
	done
	if [ ! -d "$existing" -o "$dest" = "$existing" ]
	then
		if { rm -rf "$existing~" && mv "$existing" "$existing~"; } 2>$tempdir/error || $force
		then
			echo "mv '$existing~' '$existing'" >>$tempdir/rollback
			echo "rm -rf '$existing~'" >>$tempdir/commit
		else
			ui_error "Cannot make a backup copy of $existing -- see detailed error message below." $tempdir/error
			echo "$dest">>$tempdir/damaged
			return 1
		fi
	elif [ -n "$tomake" -a "$tomake" != "$dest" ]
	then
		if mkdir -p "${dest%/*}" 2>$tempdir/error || $force
		then
			echo "rm -rf '$tomake'" >>$tempdir/rollback
		else
			ui_error "Cannot create directory ${dest%/*} -- see detailed error message below." $tempdir/error
			echo "$dest">>$tempdir/damaged
			return 1
		fi
	fi
	case "$1" in
		N?)
			cp "$source" "$dest"
			;;
		L?)
			source=$(use_suffix "$SUFFIX" "$2")
			ln -s "$source" "$dest"
			;;
		P?)
			case "$dest" in
				*.gz)
					gzip -dc "$source" | process >"${dest%.gz}" && gzip -9 "${dest%.gz}"
					;;
				*)
					process <"$source" >"$dest"
					;;
			esac
			;;
		G?)
			generate_file "${source##*/}" | process >"$dest"
			;;
	esac 2>$tempdir/error || $force || {
		ui_error "Cannot install $dest -- see detailed error message below." $tempdir/error
		echo "$dest">>$tempdir/damaged
		return 1
	}
	case "$1" in
		?F)
			chmod 0644 "$dest"
			;;
		?X)
			chmod 0755 "$dest"
			;;
	esac 2>$tempdir/error || $force || {
		ui_error "Cannot install $dest -- see detailed error message below." $tempdir/error
		echo "$dest">>$tempdir/damaged
		return 1
	}
	ui_progress_advance
}

generate_file()
{
	case "$1" in
		opera)
			cat <<'EOF_generate_file'
#!/bin/sh
export OPERA_DIR=${OPERA_DIR:-@@{PREFIX}/share/opera@@{SUFFIX}}
export OPERA_PERSONALDIR=${OPERA_PERSONALDIR:-$HOME/.opera@@{SUFFIX}}
exec @@{PREFIX}/lib/opera@@{SUFFIX}/opera@@{SUFFIX} "$@"
EOF_generate_file
			;;
		uninstall-opera)
			sed -ne '1,/EOF_COMMON/p' "${0##*/}"
			cat <<EOF
PREFIX='$PREFIX'
SUFFIX='$SUFFIX'
EOF
			cat <<'EOF_generate_file'

usage()
{
	version
	cat <<EOF

Options:
    --text          Select plaintext user interface
    --unattended    Ask no questions
    --quiet         Ask no questions and don't show progress (implies --text)
    --force         Ignore all kinds of errors and try to continue
    --help          Show this message
EOF
}

uninstall_file()
{
	if $upgrade_mode
	then
		mv "$PREFIX/$3" "$PREFIX/$3~"
		echo "mv '$PREFIX/$3~' '$PREFIX/$3'" >>$install_tempdir/rollback
		echo "rm -f '$PREFIX/$3~'; rmdir -p '$PREFIX/${3%/*}' 2>/dev/null" >>$install_tempdir/commit
	else
		rm -f "$PREFIX/$3"
		rmdir -p "$PREFIX/${3%/*}" 2>/dev/null
	fi
	ui_progress_advance
}

common_init
ui_init 'Uninstalling Opera'

upgrade_mode=false

while [ -n "$1" ]
do
	common_opt "$1" || case "$1" in
		--upgrade)
			shift
			upgrade_mode=true
			talk=false
			interactive=false
			driver=plain
			force=true
			install_tempdir="$1"
			;;
		*)
			driver=plain
			usage
			exit
			;;
	esac
	shift
done

if $talk
then
	msg="This script uninstalls Opera 12.00 build 1467 for Linux on i386 installed as $PREFIX/bin/opera$SUFFIX."
	if $interactive
	then
		ui_warn "$msg"
	else
		ui_message "$msg"
	fi
fi

if [ ! -w $PREFIX ] && ! $force
then
	ui_error "You do not have write permissions for $PREFIX. Perhaps you should be uninstalling as root?"
fi

ui_progress_begin "Removing files"
iterate uninstall_file
ui_progress_end

if ! $upgrade_mode
then
	if $talk
	then
		ui_info "Finalizing uninstallation..."
	fi
	finalize_desktop
fi

if $talk
then
	ui_message "Opera has been uninstalled successfully. However, users' profile directories, which are by default ~/.opera$SUFFIX, have been left intact. You might want to delete them manually."
fi
EOF_generate_file
			;;
		*)
			return 1
	esac
}

rollback()
{
	ui_progress_begin "Undoing installation"
	iterate rollback_file
	ui_progress_end
	if [ -f $tempdir/rollback ]
	then
		. $tempdir/rollback
	fi
}

rollback_file()
{
	local dest
	dest=$INTO/$(use_suffix "$SUFFIX" "$3")
	rm -f "$dest"
	while [ -n "$dest" ]
	do
		dest=${dest%/*}
		case "$dest" in
			$INTO/*/opera*)
				rmdir "$dest" 2>/dev/null || break
				;;
		esac
	done
	ui_progress_advance
}

verify_file()
{
	local md5 file
	md5="$2"
	file=$(use_suffix '' "$3")
	case "$1" in
		[GL]?)
			ui_progress_advance
			return
			;;
	esac
	if [ ! -f "$file" ]
	then
		make_tempdir
		echo "$file" >>$tempdir/damaged
	elif [ -n "$md5prog" ]
	then
		if [ $(get_md5 "$file") != "$md5" ]
		then
			make_tempdir
			echo "$file" >>$tempdir/damaged
		fi
	fi
	ui_progress_advance
}

get_md5()
{
	if [ "$md5prog" = md5 ]
	then
		md5 -q "$1"
	else
		md5sum "$1" | { read sum file; echo $sum; }
	fi
}

use_suffix()
{
	echo "$2" | sed -e "s:@@{SUFFIX}:$1:g"
}

process()
{
	sed -e "s:@@{PREFIX}:$PREFIX:g;s:@@{SUFFIX}:$SUFFIX:g;s:@@{_SUFFIX}:$_SUFFIX:g;s:@@{USUFFIX}:$USUFFIX:g"
}

PREFIX=''
INTO=''
orig_pwd=$PWD
suffix_set=false

cd "${0%/*}"

common_init
ui_init 'Installing Opera'

if available md5
then
	md5prog=md5
elif available md5sum
then
	md5prog=md5sum
else
	md5prog=''
fi

while [ -n "$1" ]
do
	common_opt "$1" || case "$1" in
		--user)
			PREFIX=$HOME/.local
			;;
		--system)
			PREFIX=/usr/local
			;;
		--prefix)
			shift
			PREFIX="$1"
			;;
		--name)
			shift
			case "$1" in
				opera|opera-*)
					SUFFIX=${1#opera}
					;;
				*)
					ui_error '--name string must either be "opera" or begin with "opera-".'
					;;
			esac
			suffix_set=true
			;;
		--suffix)
			shift
			if [ -n "$1" ]
			then
				SUFFIX="-$1"
			else
				SUFFIX=''
			fi
			suffix_set=true
			;;
		--repackage)
			shift
			INTO="$1"
			repackage=true
			interactive=false
			driver=plain
			case "$INTO" in
				'')
					ui_error "--repackage needs a non-empty argument."
					;;
				/*)
					;;
				*)
					INTO=$orig_pwd/$INTO
					;;
			esac
			;;
		--version)
			driver=plain
			version
			exit
			;;
		*)
			driver=plain
			usage
			exit
			;;
	esac
	shift
done

if $talk
then
	version
fi

if ! $interactive && [ -z "$PREFIX" ]
then
	ui_error "Please specify --prefix, --user or --system for unattended installation."
fi

if ! $force && ! $repackage
then
	check_os
	if $interactive
	then
		check_package_manager
	fi
fi

if [ $(id -u) -eq 0 ]
then
	prefix_who="running as root"
	prefix_for="for all users"
	prefix_default=/usr/local
else
	prefix_who="not running as root"
	prefix_for="just for yourself"
	prefix_default=$HOME/.local
fi

while true
do
	if [ -n "$PREFIX" ]
	then
		answer=$PREFIX
		bad_answer=ui_error
	elif $interactive
	then
		ui_input "Please choose an installation directory. Opera will be installed in bin, share and lib directories under the specified location.

Since you are $prefix_who, you probably want to install Opera $prefix_for. The recommended installation prefix in this case is $prefix_default.

Press Enter to accept the recommended location, or specify a different prefix." || exit
		if [ -z "$answer" ]
		then
			answer=$prefix_default
		fi
		bad_answer=ui_message
	else
		ui_warn "Since you are $prefix_who, assuming you want to install Opera $prefix_for. Using $prefix_default as the installation prefix."
		answer=$prefix_default
		bad_answer=ui_error
	fi
	case "$answer" in
		''|[!/]*)
			$bad_answer "The installation prefix must begin with a slash."
			continue
			;;
		*' '*)
			$bad_answer "The installation prefix is not allowed to contain whitespace."
			continue
			;;
	esac
	while [ $answer != / -a "${answer%/}" != $answer ]
	do
		answer=${answer%/}
	done
	if $repackage
	then
		PREFIX=$answer
		break
	fi
	prefix_parent=$answer
	while [ ! -e "$prefix_parent" ]
	do
		prefix_parent=${prefix_parent%/*}
		if [ -z "$prefix_parent" ]
		then
			prefix_parent=/
		fi
	done
	if [ -w $prefix_parent ]
	then
		PREFIX=$answer
		break
	elif [ -d $prefix_parent ]
	then
		$bad_answer "You do not have write permissions for $prefix_parent. Perhaps you should be installing as root?"
	else
		$bad_answer "$prefix_parent is not a directory."
	fi
done

if [ -z "$INTO" ]
then
	INTO=$PREFIX
fi

while true
do
	if $suffix_set
	then
		answer=opera$SUFFIX
		bad_answer=ui_error
	elif $interactive
	then
		ui_input "You can install Opera with an alternative package name, so that the installation does not conflict with other installations of Opera you might have. For example, if you specify opera-12.00 as the package name, Opera files will be installed under $PREFIX/share/opera-12.00 and $PREFIX/lib/opera-12.00, and you will have to run $PREFIX/bin/opera-12.00 to run it. The default location of your profile directory will then be ~/.opera-12.00. If you want that, please enter the desired package name below. The name must be either \"opera\" or begin with \"opera-\". Only Latin letters, digits, periods and dashes are allowed.

Pressing Enter to accept the default and install as \"opera\" is a safe choice." || exit
		bad_answer=ui_message
	else
		answer=''
	fi
	case "$answer" in
		'')
			SUFFIX=''
			_SUFFIX=''
			USUFFIX=''
			break
			;;
		opera-*[!-.A-Za-z0-9]*)
			$bad_answer "The package name is only allowed to contain Latin letters, digits, periods and dashes."
			;;
		opera-*)
			SUFFIX=${answer#opera}
			_SUFFIX=' '$(echo ${answer#opera-} | cut -c 1 | tr a-z A-Z)${answer#opera-?}
			USUFFIX=-$(echo ${answer#opera-} | tr a-z A-Z)
			break
			;;
		opera)
			SUFFIX=''
			_SUFFIX=''
			USUFFIX=''
			break
			;;
		*)
			$bad_answer "The package name must either be \"opera\" or begin with \"opera-\"."
			;;
	esac
done

if ! $repackage && [ -f "$INTO/share/opera$SUFFIX/package-id.ini" ]
then
	upgrade_product=$(sed -ne '/^Product=\(.*\)$/s//\1/p' "$INTO/share/opera$SUFFIX/package-id.ini")
	upgrade_version=$(sed -ne '/^Version=\(.*\)$/s//\1/p' "$INTO/share/opera$SUFFIX/package-id.ini")
	upgrade_build=$(sed -ne '/^Build=\(.*\)$/s//\1/p' "$INTO/share/opera$SUFFIX/package-id.ini")
	if [ -z "$upgrade_product" ]
	then
		upgrade_product=opera
	fi
	if [ "$upgrade_product" = opera ]
	then
		upgrade_title='Opera'
	else
		upgrade_title='Opera '$(echo ${upgrade_product#opera-} | cut -c 1 | tr a-z A-Z)${answer#?}
	fi
	if [ -n "$upgrade_version" -a -n "$upgrade_build" ]
	then
		if [ "$upgrade_product" = opera -a "$upgrade_version" = 12.00 -a "$upgrade_build" = 1467 ]
		then
			msg="The chosen location already contains an installation of $upgrade_title 12.00 build 1467. The installer will attempt to refresh it."
		elif [ "$upgrade_product" = opera ]
		then
			msg="The chosen location contains an installation of $upgrade_title $upgrade_version build $upgrade_build. The installer will attempt to upgrade it to version 12.00 build 1467."
		else
			msg="The chosen location contains an installation of $upgrade_title $upgrade_version build $upgrade_build. The installer will attempt to replace it with Opera version 12.00 build 1467."
		fi
		if $interactive
		then
			ui_warn "$msg"
		elif $talk
		then
			ui_message "$msg"
		fi
	fi
fi

ui_progress_begin "Verifying package"
iterate verify_file
ui_progress_end

if [ -n "$tempdir" -a -f $tempdir/damaged ] && ! $force
then
	ui_error "The following files are missing or damaged:" $tempdir/damaged
fi

if ! $force && ! $repackage
then
	need_rollback=true
fi

make_tempdir

if ! $repackage && [ -x "$PREFIX/bin/uninstall-opera$SUFFIX" ]
then
	if $talk
	then
		ui_info "Removing old files..."
	fi
	"$PREFIX/bin/uninstall-opera$SUFFIX" --upgrade $tempdir
fi

ui_progress_begin "Installing files"
iterate install_file
ui_progress_end

need_rollback=false

if ! $repackage
then
	if $talk
	then
		ui_info "Finalizing installation..."
	fi
	if [ -f $tempdir/commit ]
	then
		. $tempdir/commit
	fi
	if $talk && [ "$driver" = plain ]
	then
		finalize_desktop
	else
		finalize_desktop >/dev/null 2>&1
	fi
fi

if $talk
then
	if [ -n "$upgrade_version" -a -n "$upgrade_build" ]
	then
		done='upgraded'
	else
		done='installed'
	fi
	if $repackage
	then
		ui_message "Opera has been installed successfully under $INTO as if it were $PREFIX."
	else
		ui_message "Opera has been $done successfully. To start, run $PREFIX/bin/opera$SUFFIX (you might want to add this location to your PATH).

To uninstall Opera, run $PREFIX/bin/uninstall-opera$SUFFIX."
	fi
fi
